Hi,

I finally looked into the issue with par2cmdline and it seems that
somewhere between OpenBSD 5.5 and 5.6 behaviour changed in gcc and
it surfaced issue with defines in par2cmdline.

Below patch updates par2cmdline to 0.6.14 and includes my patch
which seems to fix the issue for me.

Discussion around this problem started in this thread on ports@

        https://marc.info/?t=143069779000003&r=1&w=2

I've reported this problem to upstream:

        https://github.com/Parchive/par2cmdline/issues/55

and my pull request is at:

        https://github.com/Parchive/par2cmdline/pull/60

I would appreciate if someone look is my change sane. As this is long
overdue update from 0.4 to 0.6 which has also different upstream, I
decided to include whitespace changes in Makefile, as this update is
intrusive.



Index: Makefile
===================================================================
RCS file: /cvs/ports/archivers/par2cmdline/Makefile,v
retrieving revision 1.10
diff -u -p -u -r1.10 Makefile
--- Makefile    19 Apr 2015 17:52:47 -0000      1.10
+++ Makefile    4 Oct 2015 17:42:30 -0000
@@ -1,22 +1,44 @@
 # $OpenBSD: Makefile,v 1.10 2015/04/19 17:52:47 jca Exp $
 
-COMMENT=       command line implementation of the PAR v2.0 specification
-DISTNAME=      par2cmdline-0.4
-REVISION=      2
-CATEGORIES=    archivers
-MASTER_SITES=  ${MASTER_SITE_SOURCEFORGE:=parchive/}
+COMMENT =      command line implementation of the PAR v2.0 specification
 
-HOMEPAGE=      http://parchive.sourceforge.net/\#client_par2cmdline
+V =            0.6.14
+DISTNAME =     par2cmdline-$V
+DISTFILES =    ${DISTNAME}{v$V}.tar.gz
 
-# GPL
-PERMIT_PACKAGE_CDROM=  Yes
+CATEGORIES =   archivers
 
-WANTLIB=               c m stdc++
+HOMEPAGE =     https://github.com/BlackIkeEagle/par2cmdline/
 
-CONFIGURE_STYLE=gnu
+# GPLv2+
+PERMIT_PACKAGE_CDROM = Yes
+
+WANTLIB =      c m stdc++
+
+MASTER_SITES = ${HOMEPAGE}archive/
+
+BUILD_DEPENDS =        ${MODGNU_AUTOCONF_DEPENDS} \
+               ${MODGNU_AUTOMAKE_DEPENDS}
+
+CONFIGURE_STYLE =      gnu
+
+AUTOCONF_VERSION =     2.69
+AUTOMAKE_VERSION =     1.15
+
+MAKE_ENV =             AUTOCONF_VERSION=${AUTOCONF_VERSION} \
+                       AUTOMAKE_VERSION=${AUTOMAKE_VERSION}
+
+post-patch:
+       cd ${WRKSRC}; \
+           export AUTOCONF_VERSION=${AUTOCONF_VERSION}; \
+           export AUTOMAKE_VERSION=${AUTOMAKE_VERSION}; \
+           aclocal; automake --add-missing; autoconf
 
 post-install:
        ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/par2cmdline
        ${INSTALL_DATA} ${WRKSRC}/README ${PREFIX}/share/doc/par2cmdline
+
+pre-test:
+       perl -pi -e 's,^tar -xf,tar -xzf,' ${WRKSRC}/tests/test*
 
 .include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/archivers/par2cmdline/distinfo,v
retrieving revision 1.5
diff -u -p -u -r1.5 distinfo
--- distinfo    4 Apr 2013 16:03:56 -0000       1.5
+++ distinfo    4 Oct 2015 17:42:30 -0000
@@ -1,2 +1,2 @@
-SHA256 (par2cmdline-0.4.tar.gz) = njK32897yoJJ+YgkdX1IaHFBVv4idlFlBM0m9zbp9nc=
-SIZE (par2cmdline-0.4.tar.gz) = 239312
+SHA256 (par2cmdline-0.6.14.tar.gz) = 
L9gxupJNnw7NkkLKRVUbaZXt4e0oGveaow50kNVZbno=
+SIZE (par2cmdline-0.6.14.tar.gz) = 3539262
Index: patches/patch-Makefile_in
===================================================================
RCS file: patches/patch-Makefile_in
diff -N patches/patch-Makefile_in
--- patches/patch-Makefile_in   27 Jun 2004 23:06:47 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-$OpenBSD: patch-Makefile_in,v 1.2 2004/06/27 23:06:47 jolan Exp $
---- Makefile.in.orig   Mon Apr 12 11:44:18 2004
-+++ Makefile.in        Sun Jun 27 17:56:29 2004
-@@ -669,7 +669,6 @@ install-data-am:
- 
- install-exec-am: install-binPROGRAMS
-       @$(NORMAL_INSTALL)
--      $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
- 
- install-info: install-info-am
- 
Index: patches/patch-README
===================================================================
RCS file: patches/patch-README
diff -N patches/patch-README
--- patches/patch-README        9 May 2010 15:30:53 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-$OpenBSD: patch-README,v 1.2 2010/05/09 15:30:53 robert Exp $
---- README.orig        Thu Apr 22 16:46:05 2004
-+++ README     Sun May  9 17:23:38 2010
-@@ -81,12 +81,6 @@ The command line parameters for par2cmdline are as fol
-     par2 v(erify) [options] <par2 file> [files]
-     par2 r(epair) [options] <par2 file> [files]
- 
--  Also:
--
--    par2create [options] <par2 file> [files]
--    par2verify [options] <par2 file> [files]
--    par2repair [options] <par2 file> [files]
--    
-   Options:
- 
-     -b<n>  : Set the Block-Count
Index: patches/patch-diskfile_cpp
===================================================================
RCS file: patches/patch-diskfile_cpp
diff -N patches/patch-diskfile_cpp
--- patches/patch-diskfile_cpp  9 May 2010 15:30:53 -0000       1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-$OpenBSD: patch-diskfile_cpp,v 1.3 2010/05/09 15:30:53 robert Exp $
---- diskfile.cpp.orig  Mon Apr 12 13:25:37 2004
-+++ diskfile.cpp       Sun May  9 17:23:38 2010
-@@ -17,6 +17,8 @@
- //  along with this program; if not, write to the Free Software
- //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- 
-+#include <sys/param.h>
-+
- #include "par2cmdline.h"
- 
- #ifdef _MSC_VER
-@@ -562,7 +564,7 @@ string DiskFile::GetCanonicalPathname(string filename)
-     return filename;
- 
-   // Get the current directory
--  char curdir[1000];
-+  char curdir[MAXPATHLEN];
-   if (0 == getcwd(curdir, sizeof(curdir)))
-   {
-     return filename;
Index: patches/patch-par2cmdline_h
===================================================================
RCS file: patches/patch-par2cmdline_h
diff -N patches/patch-par2cmdline_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-par2cmdline_h 4 Oct 2015 17:42:30 -0000
@@ -0,0 +1,14 @@
+$OpenBSD$
+--- par2cmdline.h.orig Sun Aug  2 17:09:46 2015
++++ par2cmdline.h      Sun Oct  4 18:32:15 2015
+@@ -156,9 +156,9 @@ typedef unsigned long long u64;
+ #  ifndef __LITTLE_ENDIAN
+ #    ifdef _LITTLE_ENDIAN
+ #      define __LITTLE_ENDIAN _LITTLE_ENDIAN
+-#      define __LITTLE_ENDIAN _LITTLE_ENDIAN
+ #      define __BIG_ENDIAN _BIG_ENDIAN
+ #      define __PDP_ENDIAN _PDP_ENDIAN
++#      define __BYTE_ORDER _BYTE_ORDER
+ #    else
+ #      error <endian.h> does not define __LITTLE_ENDIAN etc.
+ #    endif
Index: patches/patch-par2creatorsourcefile_cpp
===================================================================
RCS file: patches/patch-par2creatorsourcefile_cpp
diff -N patches/patch-par2creatorsourcefile_cpp
--- patches/patch-par2creatorsourcefile_cpp     19 Apr 2015 17:53:59 -0000      
1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-$OpenBSD: patch-par2creatorsourcefile_cpp,v 1.2 2015/04/19 17:53:59 jca Exp $
-
-- par2 crash with -q or -qq: https://bugs.debian.org/299658 and
-  http://sf.net/p/parchive/bugs/37/
-
---- par2creatorsourcefile.cpp.orig     Thu Apr 15 14:45:23 2004
-+++ par2creatorsourcefile.cpp  Sun Apr 19 10:57:32 2015
-@@ -213,11 +213,12 @@ bool Par2CreatorSourceFile::Open(CommandLine::NoiseLev
-         }
-       }
- 
-+      offset += want;
-+
-       if (noiselevel > CommandLine::nlQuiet)
-       {
-         // Display progress
-         u32 oldfraction = (u32)(1000 * offset / filesize);
--        offset += want;
-         u32 newfraction = (u32)(1000 * offset / filesize);
-         if (oldfraction != newfraction)
-         {
Index: patches/patch-reedsolomon_cpp
===================================================================
RCS file: /cvs/ports/archivers/par2cmdline/patches/patch-reedsolomon_cpp,v
retrieving revision 1.1
diff -u -p -u -r1.1 patch-reedsolomon_cpp
--- patches/patch-reedsolomon_cpp       9 May 2010 15:30:53 -0000       1.1
+++ patches/patch-reedsolomon_cpp       4 Oct 2015 17:42:30 -0000
@@ -1,57 +1,24 @@
-$OpenBSD: patch-reedsolomon_cpp,v 1.1 2010/05/09 15:30:53 robert Exp $
---- reedsolomon.cpp.orig       Sun May  9 17:26:56 2010
-+++ reedsolomon.cpp    Sun May  9 17:28:12 2010
-@@ -51,7 +51,7 @@ u32 gcd(u32 a, u32 b)
-   }
- }
- 
--bool ReedSolomon<Galois8>::SetInput(const vector<bool> &present)
-+template<> bool ReedSolomon<Galois8>::SetInput(const vector<bool> &present)
- {
-   inputcount = (u32)present.size();
- 
-@@ -80,7 +80,7 @@ bool ReedSolomon<Galois8>::SetInput(const vector<bool>
-   return true;
- }
- 
--bool ReedSolomon<Galois8>::SetInput(u32 count)
-+template<> bool ReedSolomon<Galois8>::SetInput(u32 count)
- {
-   inputcount = count;
- 
-@@ -101,7 +101,7 @@ bool ReedSolomon<Galois8>::SetInput(u32 count)
-   return true;
- }
- 
--bool ReedSolomon<Galois8>::Process(size_t size, u32 inputindex, const void 
*inputbuffer, u32 outputindex, void *outputbuffer)
-+template<> bool ReedSolomon<Galois8>::Process(size_t size, u32 inputindex, 
const void *inputbuffer, u32 outputindex, void *outputbuffer)
- {
-   // Look up the appropriate element in the RS matrix
-   Galois8 factor = leftmatrix[outputindex * (datapresent + datamissing) + 
inputindex];
-@@ -189,7 +189,7 @@ bool ReedSolomon<Galois8>::Process(size_t size, u32 in
- 
- // Set which of the source files are present and which are missing
- // and compute the base values to use for the vandermonde matrix.
--bool ReedSolomon<Galois16>::SetInput(const vector<bool> &present)
-+template<> bool ReedSolomon<Galois16>::SetInput(const vector<bool> &present)
- {
-   inputcount = (u32)present.size();
- 
-@@ -233,7 +233,7 @@ bool ReedSolomon<Galois16>::SetInput(const vector<bool
- 
- // Record that the specified number of source files are all present
- // and compute the base values to use for the vandermonde matrix.
--bool ReedSolomon<Galois16>::SetInput(u32 count)
-+template<> bool ReedSolomon<Galois16>::SetInput(u32 count)
- {
-   inputcount = count;
- 
-@@ -267,7 +267,7 @@ bool ReedSolomon<Galois16>::SetInput(u32 count)
-   return true;
- }
- 
--bool ReedSolomon<Galois16>::Process(size_t size, u32 inputindex, const void 
*inputbuffer, u32 outputindex, void *outputbuffer)
-+template<> bool ReedSolomon<Galois16>::Process(size_t size, u32 inputindex, 
const void *inputbuffer, u32 outputindex, void *outputbuffer)
- {
-   // Look up the appropriate element in the RS matrix
+$OpenBSD$
+
+c++: warning: suggest parentheses around arithmetic in operand of '|' 
[-Wparentheses]
+
+--- reedsolomon.cpp.orig       Sun Aug  2 17:09:46 2015
++++ reedsolomon.cpp    Sun Oct  4 18:31:57 2015
+@@ -294,7 +294,7 @@ template<> bool ReedSolomon<Galois16>::InternalProcess
+     *pL = *LL + *HL;
+ #else
+     unsigned int temp = *LL + *HL;
+-    *pL = (temp >> 8) & 0xff | (temp << 8) & 0xff00;
++    *pL = ((temp >> 8) & 0xff) | ((temp << 8) & 0xff00);
+ #endif
+ 
+     pL++;
+@@ -305,7 +305,7 @@ template<> bool ReedSolomon<Galois16>::InternalProcess
+     *pH = *LH + *HH;
+ #else
+     temp = *LH + *HH;
+-    *pH = (temp >> 8) & 0xff | (temp << 8) & 0xff00;
++    *pH = ((temp >> 8) & 0xff) | ((temp << 8) & 0xff00);
+ #endif
  
+     pH++;
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/archivers/par2cmdline/pkg/PLIST,v
retrieving revision 1.2
diff -u -p -u -r1.2 PLIST
--- pkg/PLIST   24 Jul 2004 14:20:49 -0000      1.2
+++ pkg/PLIST   4 Oct 2015 17:42:30 -0000
@@ -1,4 +1,8 @@
 @comment $OpenBSD: PLIST,v 1.2 2004/07/24 14:20:49 espie Exp $
-bin/par2
+@bin bin/par2
+bin/par2create
+bin/par2repair
+bin/par2verify
+@man man/man1/par2.1
 share/doc/par2cmdline/
 share/doc/par2cmdline/README


-- 
best regards
q#

Reply via email to