rpms/par2cmdline/devel par2-tbb-disable-concurrent-support.patch, NONE, 1.1 par2-tbb-fortify-source-fix.patch, NONE, 1.1 par2-tbb-packed.patch, NONE, 1.1 .cvsignore, 1.2, 1.3 par2cmdline.spec, 1.10, 1.11 sources, 1.2, 1.3

epienbro epienbro at fedoraproject.org
Mon Aug 3 16:16:25 UTC 2009


Author: epienbro

Update of /cvs/pkgs/rpms/par2cmdline/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv22854

Modified Files:
	.cvsignore par2cmdline.spec sources 
Added Files:
	par2-tbb-disable-concurrent-support.patch 
	par2-tbb-fortify-source-fix.patch par2-tbb-packed.patch 
Log Message:
* Mon Aug  3 2009 Erik van Pienbroek <epienbro at fedoraproject.org> - 0.4.tbb.20090203-1
- Updated to the par2_tbb fork of par2cmdline (revision 20090203)
  This fork is maintained at http://www.chuchusoft.com/par2_tbb/
- This adds support for PAR2 verifications and repairs using multiple CPU cores
- As Intel Threading Building Blocks (TBB) only works on x86 hardware, fall
  back to the old behaviour on other platforms (like PPC/PPC64)


par2-tbb-disable-concurrent-support.patch:
 par2cmdline.h |    4 ++++
 1 file changed, 4 insertions(+)

--- NEW FILE par2-tbb-disable-concurrent-support.patch ---
--- par2cmdline.h.orig	2009-07-31 18:33:00.825819583 +0200
+++ par2cmdline.h	2009-07-31 18:33:24.414821405 +0200
@@ -428,6 +428,7 @@
 #include <vector>
 #include <map>
 #include <algorithm>
+#include <memory>

 #include <ctype.h>
 #include <iostream>
@@ -449,9 +449,12 @@
 #endif
 #define offsetof(TYPE, MEMBER) ((size_t) ((char*)(&((TYPE *)1)->MEMBER) - (char*)1))
 
+/*
+Intel-tbb isn't operational yet on PPC/PPC64
 #define WANT_CONCURRENT                     1
 #define WANT_CONCURRENT_PAR2_FILE_OPENING   1
 #define WANT_CONCURRENT_SOURCE_VERIFICATION 1
+*/
 
 #if WANT_CONCURRENT
   #include "tbb/task_scheduler_init.h"

par2-tbb-fortify-source-fix.patch:
 diskfile.cpp |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE par2-tbb-fortify-source-fix.patch ---
--- diskfile.cpp.orig	2009-07-31 17:42:14.904127403 +0200
+++ diskfile.cpp	2009-07-31 17:42:23.006819616 +0200
@@ -655,7 +655,7 @@
     return filename;
 
   // Get the current directory
-  char curdir[1000];
+  char curdir[PATH_MAX];
   if (0 == getcwd(curdir, sizeof(curdir)))
   {
     return filename;

par2-tbb-packed.patch:
 letype.h |  101 +--------------------------------------------------------------
 md5.h    |   44 +++++++++------------------
 2 files changed, 19 insertions(+), 126 deletions(-)

--- NEW FILE par2-tbb-packed.patch ---
diff -ur par2cmdline-0.4-orig/letype.h par2cmdline-0.4/letype.h
--- par2cmdline-0.4-orig/letype.h	2003-05-26 20:01:17.000000000 +0200
+++ par2cmdline-0.4/letype.h	2006-05-09 10:47:29.000000000 +0200
@@ -28,44 +28,15 @@
 
 #else
 
-class leu16
+struct leu16
 {
-public:
-  leu16(void);
-
-  leu16(const leu16 &other);
-  leu16& operator=(const leu16 &other);
-
-  leu16(const u16 &other);
   leu16& operator=(const u16 &other);
 
   operator u16(void) const;
 
-protected:
   u16 value;
 };
 
-inline leu16::leu16(void)
-{
-}
-
-inline leu16::leu16(const leu16 &other)
-: value(other.value)
-{
-}
-
-inline leu16& leu16::operator =(const leu16 &other)
-{
-  value = other.value;
-  return *this;
-}
-
-inline leu16::leu16(const u16 &other)
-{
-  ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
-  ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff);
-}
-
 inline leu16& leu16::operator=(const u16 &other)
 {
   ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
@@ -81,46 +52,15 @@
 }
 
 
-class leu32
+struct leu32
 {
-public:
-  leu32(void);
-
-  leu32(const leu32 &other);
-  leu32& operator=(const leu32 &other);
-
-  leu32(const u32 &other);
   leu32& operator=(const u32 &other);
 
   operator u32(void) const;
 
-protected:
   u32 value;
 };
 
-inline leu32::leu32(void)
-{
-}
-
-inline leu32::leu32(const leu32 &other)
-: value(other.value)
-{
-}
-
-inline leu32& leu32::operator =(const leu32 &other)
-{
-  value = other.value;
-  return *this;
-}
-
-inline leu32::leu32(const u32 &other)
-{
-  ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
-  ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff);
-  ((unsigned char*)&value)[2] = (unsigned char)((other >> 16) & 0xff);
-  ((unsigned char*)&value)[3] = (unsigned char)((other >> 24) & 0xff);
-}
-
 inline leu32& leu32::operator=(const u32 &other)
 {
   ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
@@ -140,50 +80,15 @@
 }
 
 
-class leu64
+struct leu64
 {
-public:
-  leu64(void);
-
-  leu64(const leu64 &other);
-  leu64& operator=(const leu64 &other);
-
-  leu64(const u64 &other);
   leu64& operator=(const u64 &other);
 
   operator u64(void) const;
 
-protected:
   u64 value;
 };
 
-inline leu64::leu64(void)
-{
-}
-
-inline leu64::leu64(const leu64 &other)
-: value(other.value)
-{
-}
-
-inline leu64& leu64::operator =(const leu64 &other)
-{
-  value = other.value;
-  return *this;
-}
-
-inline leu64::leu64(const u64 &other)
-{
-  ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
-  ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff);
-  ((unsigned char*)&value)[2] = (unsigned char)((other >> 16) & 0xff);
-  ((unsigned char*)&value)[3] = (unsigned char)((other >> 24) & 0xff);
-  ((unsigned char*)&value)[4] = (unsigned char)((other >> 32) & 0xff);
-  ((unsigned char*)&value)[5] = (unsigned char)((other >> 40) & 0xff);
-  ((unsigned char*)&value)[6] = (unsigned char)((other >> 48) & 0xff);
-  ((unsigned char*)&value)[7] = (unsigned char)((other >> 56) & 0xff);
-}
-
 inline leu64& leu64::operator=(const u64 &other)
 {
   ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff);
diff -ur par2cmdline-0.4-orig/md5.h par2cmdline-0.4/md5.h
--- par2cmdline-0.4-orig/md5.h	2003-08-02 01:41:04.000000000 +0200
+++ par2cmdline-0.4/md5.h	2006-05-09 10:47:29.000000000 +0200
@@ -20,6 +20,13 @@
 #ifndef __MD5_H__
 #define __MD5_H__
 
+#ifdef WIN32
+#pragma pack(push, 1)
+#define PACKED
+#else
+#define PACKED __attribute__ ((packed))
+#endif
+
 // This file defines the MD5Hash and MD5Context objects which are used
 // to compute and manipulate the MD5 Hash values for a block of data.
 
@@ -35,15 +42,11 @@
 
 // MD5 Hash value
 
-class MD5Hash
+struct MD5Hash;
+ostream& operator<<(ostream &s, const MD5Hash &hash);
+ 
+struct MD5Hash
 {
-public:
-  // removed this to stop GCC warnings about using the 'pack' attribute on
-  // non-POD members in classes such as PACKET_HEADER:
-
-  // Constructor does not initialise the value
-  //MD5Hash(void) {};
-
   // Comparison operators
   bool operator==(const MD5Hash &other) const;
   bool operator!=(const MD5Hash &other) const;
@@ -57,16 +60,8 @@
   friend ostream& operator<<(ostream &s, const MD5Hash &hash);
   string print(void) const;
 
-  // removed these to stop GCC warnings about using the 'pack' attribute on
-  // non-POD members in classes such as PACKET_HEADER:
-
-  // Copy and assignment
-  //MD5Hash(const MD5Hash &other);
-  //MD5Hash& operator=(const MD5Hash &other);
-
-public:
   u8 hash[16]; // 16 byte MD5 Hash value
-};
+} PACKED;
 
 // Intermediate computation state
 
@@ -150,16 +145,9 @@
   return !other.operator<(*this);
 }
 
-/*inline MD5Hash::MD5Hash(const MD5Hash &other)
-{
-  memcpy(&hash, &other.hash, sizeof(hash));
-}
-
-inline MD5Hash& MD5Hash::operator=(const MD5Hash &other)
-{
-  memcpy(&hash, &other.hash, sizeof(hash));
-
-  return *this;
-}*/
+#ifdef WIN32
+#pragma pack(pop)
+#endif
+#undef PACKED
 
 #endif // __MD5_H__


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/par2cmdline/devel/.cvsignore,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- .cvsignore	9 May 2006 06:59:19 -0000	1.2
+++ .cvsignore	3 Aug 2009 16:16:24 -0000	1.3
@@ -1 +1 @@
-par2cmdline-0.4.tar.gz
+par2cmdline-0.4-tbb-20090203.tar.gz


Index: par2cmdline.spec
===================================================================
RCS file: /cvs/pkgs/rpms/par2cmdline/devel/par2cmdline.spec,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -p -r1.10 -r1.11
--- par2cmdline.spec	25 Jul 2009 23:14:44 -0000	1.10
+++ par2cmdline.spec	3 Aug 2009 16:16:24 -0000	1.11
@@ -1,17 +1,24 @@
-Summary:    PAR 2.0 compatible file verification and repair tool
-Name:       par2cmdline
-Version:    0.4
-Release:    16%{?dist}
-License:    GPLv2+
-Group:      Applications/Archiving
-Source:     http://dl.sourceforge.net/parchive/%{name}-%{version}.tar.gz
-Patch0:     par2cmdline-reedsolomon.cpp.patch
-Patch1:     par2cmdline-packed.patch
-Patch2:     par2cmdline-Makefile.am.patch
-URL:        http://parchive.sourceforge.net/
-BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-Obsoletes:  parchive <= 1.1.4
-Provides:   parchive = 1.1.4.0.par2.%{version}
+%global revision 20090203
+
+Summary:        PAR 2.0 compatible file verification and repair tool
+Name:           par2cmdline
+Version:        0.4.tbb.%{revision}
+Release:        1%{?dist}
+License:        GPLv2+
+Group:          Applications/Archiving
+Source:         http://www.chuchusoft.com/par2_tbb/par2cmdline-0.4-tbb-%{revision}.tar.gz
+Patch1:         par2-tbb-packed.patch
+Patch3:         par2-tbb-fortify-source-fix.patch
+Patch4:         par2-tbb-disable-concurrent-support.patch
+URL:            http://parchive.sourceforge.net/
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Obsoletes:      parchive <= 1.1.4
+Provides:       parchive = 1.1.4.0.par2.%{version}
+
+%ifarch %{ix86} x86_64
+BuildRequires:  tbb-devel
+%endif
+
 
 %description
 par2cmdline is a program for creating and using PAR2 files to detect damage
@@ -20,38 +27,65 @@ published in binary newsgroups on Usenet
 capability concepts of RAID-like systems to the posting and recovery of
 multi-part archives.
 
+
 %prep
-%setup -q
-%patch0 -p1
+%setup -q -n par2cmdline-0.4-tbb-%{revision}
 %patch1 -p1
-%patch2 -p1
+%patch3 -p0
+
+# Intel threading blocks is only available on x86 hardware
+%ifnarch %{ix86} x86_64
+    # This patch strips out the TBB-specific code
+    %patch4 -p0
+    
+    # Don't link against TBB, but against the rt library (for aio_read/aio_write)
+    sed -i s/-ltbb/-lrt/ Makefile.in
+%endif
 
 # fix end-of-lines of several files
 sed -i 's/\r//' AUTHORS PORTING README ROADMAP
 
+
 %build
 %configure
 make %{_smp_mflags}
 chmod 644 ChangeLog galois.h par1repairer.cpp par2repairer.cpp par2repairersourcefile.cpp par2repairersourcefile.h
 
+
 %install
 rm -rf $RPM_BUILD_ROOT
 
 %makeinstall
 ln -sf par2 $RPM_BUILD_ROOT/%{_bindir}/par
 
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+
 %check
+chmod +x test[1-6] pretest posttest
 make check-TESTS
 
+
 %files
 %defattr(-,root,root,-)
 %doc AUTHORS COPYING ChangeLog README 
-%{_bindir}/*
+%{_bindir}/par	
+%{_bindir}/par2	
+%{_bindir}/par2create	
+%{_bindir}/par2repair	
+%{_bindir}/par2verify
+
 
 %changelog
+* Mon Aug  3 2009 Erik van Pienbroek <epienbro at fedoraproject.org> - 0.4.tbb.20090203-1
+- Updated to the par2_tbb fork of par2cmdline (revision 20090203)
+  This fork is maintained at http://www.chuchusoft.com/par2_tbb/
+- This adds support for PAR2 verifications and repairs using multiple CPU cores
+- As Intel Threading Building Blocks (TBB) only works on x86 hardware, fall
+  back to the old behaviour on other platforms (like PPC/PPC64)
+
 * Sat Jul 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.4-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
 


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/par2cmdline/devel/sources,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- sources	9 May 2006 06:59:19 -0000	1.2
+++ sources	3 Aug 2009 16:16:24 -0000	1.3
@@ -1 +1 @@
-1551b63e57e3c232254dc62073b723a9  par2cmdline-0.4.tar.gz
+f32c83c524f55171e8d639d6bfe9a7d8  par2cmdline-0.4-tbb-20090203.tar.gz




More information about the fedora-extras-commits mailing list