The zip format supports bzip2 as compression algorithm in addition to
deflate and store. This patch adds support for bzip2 to zip and unzip.

You can test the bzip2 compression with:
$ zip -Zb -9 -r test.zip mydirectory
$ unzip test.zip

OK?


diff -r 688ecbc90e36 unzip/Makefile
--- unzip/Makefile      Wed Jul 25 10:03:17 2018 +0000
+++ unzip/Makefile      Wed Jul 25 19:18:52 2018 +0200
@@ -7,7 +7,7 @@
 VERSION =      6.0
 DISTNAME =     unzip${VERSION:S/.//}
 PKGNAME =      unzip-${VERSION}
-REVISION =     11
+REVISION =     12
 CATEGORIES =   archivers
 MASTER_SITES = ${MASTER_SITE_SOURCEFORGE:=infozip/} \
                ftp://ftp.info-zip.org/pub/infozip/src/
@@ -21,9 +21,11 @@
 PERMIT_PACKAGE_CDROM = Yes
 
 # uses pledge()
-WANTLIB =              c
+WANTLIB =      bz2 c
 
-MAKE_FLAGS =   CC="${CC}" LD="${CC}" CF="${CFLAGS}" LOC="${LOC}"
+LIB_DEPENDS =  archivers/bzip2
+
+MAKE_FLAGS =   CC="${CC}" LD="${CC}" CF="${CFLAGS}" LOC="${LOC}" LF2="${LF2}"
 FAKE_FLAGS =   prefix="${WRKINST}${PREFIX}"
 
 MAKE_FILE =    unix/Makefile
@@ -32,19 +34,19 @@
 
 DOCS = COPYING.OLD LICENSE README WHERE
 
-LOC =          -DLARGE_FILE_SUPPORT -DNO_LCHMOD -DUSE_UNSHRINK
+LOC =          -DLARGE_FILE_SUPPORT -DNO_LCHMOD -DUSE_UNSHRINK -DUSE_BZIP2
 
 .if ${FLAVOR:L:Miconv}
 LIB_DEPENDS += converters/libiconv
 WANTLIB +=     iconv
-CFLAGS +=      -I${LOCALBASE}/include
 LOC +=         -DUNICODE_SUPPORT -DUNICODE_WCHAR -DUTF8_MAYBE_NATIVE \
                -DNO_WORKING_ISPRINT
-MAKE_FLAGS +=  LF2="-L${LOCALBASE}/lib -liconv"
+LF2 +=         -liconv
 PATCH_LIST =   patch-* iconv-*
 .endif
 
-CFLAGS +=      -I. ${LOC}
+CFLAGS +=      -I. -I${LOCALBASE}/include ${LOC}
+LF2 +=         -L${LOCALBASE}/lib -lbz2
 
 post-install:
        ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/unzip
diff -r 688ecbc90e36 zip/Makefile
--- zip/Makefile        Wed Jul 25 10:03:17 2018 +0000
+++ zip/Makefile        Wed Jul 25 19:18:52 2018 +0200
@@ -3,7 +3,7 @@
 COMMENT=       create/update ZIP files compatible with PKZip(tm)
 
 VERSION=       3.0
-REVISION=      0
+REVISION=      1
 DISTNAME=      zip${VERSION:S/.//}
 PKGNAME=       zip-${VERSION}
 
@@ -14,11 +14,14 @@
 # Conditional
 PERMIT_PACKAGE_CDROM=  Yes
 
-WANTLIB += c
+WANTLIB += bz2 c
 
 MASTER_SITES=  ${MASTER_SITE_SOURCEFORGE:=infozip/}
 
-MAKE_FLAGS=    CC="${CC}" CFLAGS_NOOPT="${CFLAGS} -I. -DUNIX"
+LIB_DEPENDS=   archivers/bzip2
+
+MAKE_FLAGS=    CC="${CC}" CFLAGS_NOOPT="${CFLAGS} -I. -DUNIX" \
+               IZ_BZIP2="${LOCALBASE}"
 
 MAKE_FILE=     unix/Makefile
 ALL_TARGET=    generic
diff -r 688ecbc90e36 zip/patches/patch-unix_configure
--- zip/patches/patch-unix_configure    Wed Jul 25 10:03:17 2018 +0000
+++ zip/patches/patch-unix_configure    Wed Jul 25 19:18:52 2018 +0200
@@ -1,28 +1,65 @@
 $OpenBSD: patch-unix_configure,v 1.2 2009/01/14 16:59:51 sturm Exp $
---- unix/configure.orig        Fri Dec 12 22:58:30 2008
-+++ unix/configure     Fri Dec 12 22:59:38 2008
-@@ -98,7 +98,6 @@ int main()
+Index: unix/configure
+--- unix/configure.orig
++++ unix/configure
+@@ -98,7 +98,7 @@ int main()
  _EOF_
        $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null
        if test $? -eq 0; then
 -        CFLAGS_OPT='-O3'
++        CFLAGS_OPT=''
          echo "  GNU C ($CFLAGS_OPT)"
          # Special Mac OS X shared library "ld" option?
          if test ` uname -s 2> /dev/null ` = 'Darwin'; then
-@@ -110,7 +109,6 @@ _EOF_
-           rm -f conftest
-         fi
-       else
--        CFLAGS_OPT='-O'
-         echo "  Other-unknown C ($CFLAGS_OPT)"
-       fi
+@@ -131,40 +131,40 @@ CC_BZ="${CC}"
+ LIB_BZ=''
+ if test -n "${IZ_BZIP2}"; then
+   echo "  Check for bzip2 compiled library in IZ_BZIP2 (${IZ_BZIP2})"
+-  if test -f "${IZ_BZIP2}/libbz2.a"; then
++  if test -f "${IZ_BZIP2}/lib/libbz2.a"; then
+ #
+ #   A bzip2 library built with BZ_NO_STDIO should have an
+ #   unresolved external, "bz_internal_error".  The default,
+ #   full-function library will not mention it.
+ #
+-    nm ${IZ_BZIP2}/libbz2.a | grep bz_internal_error > /dev/null
++    nm ${IZ_BZIP2}/lib/libbz2.a | grep bz_internal_error > /dev/null
+     if test $? -eq 0; then
+-      echo "    Found bzip2 BZ_NO_STDIO library, ${IZ_BZIP2}/libbz2.a"
++      echo "    Found bzip2 BZ_NO_STDIO library, ${IZ_BZIP2}/lib/libbz2.a"
+     else
+-      echo "    Found bzip2 library, ${IZ_BZIP2}/libbz2.a,"
++      echo "    Found bzip2 library, ${IZ_BZIP2}/lib/libbz2.a,"
+       echo "      but library not compiled with BZ_NO_STDIO"
+       echo "    WARNING:  We recommend using a bzip2 library compiled"
+       echo "      with BZ_NO_STDIO defined for proper error handling"
+       echo "    Please see the Zip installation instructions in 
bzip2/install.txt"
+       echo "    Continuing anyway with standard bzip2 library..."
      fi
-@@ -244,7 +242,7 @@ if eval "$CPP match.S > _match.s 2>/dev/null"; then
-     echo "int foo() { return 0;}" > conftest.c
-     $CC -c conftest.c >/dev/null 2>/dev/null
-     echo Check if compiler generates underlines
--    nm conftest.o | grep "(^|[^_])foo" >/dev/null 2>/dev/null
-+    nm conftest.o | egrep "(^|[^_])foo" >/dev/null 2>/dev/null
-     [ $? -eq 0 ] && CPP="${CPP} -DNO_UNDERLINE"
-     if eval "$CPP crc_i386.S > _crc_i386.s 2>/dev/null"; then
-       if eval "$CC -c _crc_i386.s >/dev/null 2>/dev/null" && [ -f _crc_i386.o 
]
+-    if test -f "${IZ_BZIP2}/bzlib.h"; then
+-      CFLAGS="${CFLAGS} -I${IZ_BZIP2} -DBZIP2_SUPPORT"
+-      LFLAGS2="${LFLAGS2} -L${IZ_BZIP2} -lbz2"
++    if test -f "${IZ_BZIP2}/include/bzlib.h"; then
++      CFLAGS="${CFLAGS} -I${IZ_BZIP2}/include -DBZIP2_SUPPORT"
++      LFLAGS2="${LFLAGS2} -L${IZ_BZIP2}/lib -lbz2"
+       echo "-- Found bzip2 library - linking in bzip2"
+     else
+-      echo "    ${IZ_BZIP2}/bzlib.h not found"
++      echo "    ${IZ_BZIP2}/include/bzlib.h not found"
+       echo "-- Since IZ_BZIP2 defined, skipping OS and bzip2 dir checks - no 
bzip2"
+     fi
+   else
+-    echo "    ${IZ_BZIP2}/libbz2.a not found"
++    echo "    ${IZ_BZIP2}/lib/libbz2.a not found"
+     echo "-- Since IZ_BZIP2 defined, skipping OS and bzip2 checks - no bzip2"
+   fi
+ else
+   echo "  Check for bzip2 in bzip2 directory"
+   IZ_BZIP2=bzip2
+-  if test -f "${IZ_BZIP2}/libbz2.a"; then
+-    nm ${IZ_BZIP2}/libbz2.a | grep bz_internal_error > /dev/null
++  if test -f "${IZ_BZIP2}/lib/libbz2.a"; then
++    nm ${IZ_BZIP2}/lib/libbz2.a | grep bz_internal_error > /dev/null
+     if test $? -eq 0; then
+       echo "    Found bzip2 BZ_NO_STDIO library in bzip2 directory"
+     else

Reply via email to