From e6b0953e154825222cad276cca2b5f6c59e42d56 Mon Sep 17 00:00:00 2001 From: Bernard Spil Date: Tue, 12 Dec 2017 08:11:25 +0000 Subject: [PATCH] archivers/brotli: Update to 1.0.2 PR: 223966 Approved by: osa (maintainer) --- archivers/brotli/Makefile | 15 +-- archivers/brotli/distinfo | 6 +- archivers/brotli/files/patch-freebsd-upstream | 121 ++++++++++++++++++ archivers/brotli/pkg-plist | 18 ++- 4 files changed, 142 insertions(+), 18 deletions(-) create mode 100644 archivers/brotli/files/patch-freebsd-upstream diff --git a/archivers/brotli/Makefile b/archivers/brotli/Makefile index 99f6bd5b674b..f770ffb243ee 100644 --- a/archivers/brotli/Makefile +++ b/archivers/brotli/Makefile @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= brotli -PORTVERSION= 0.6.0 -PORTREVISION= 1 +PORTVERSION= 1.0.2 DISTVERSIONPREFIX= v PORTEPOCH= 1 CATEGORIES= archivers devel @@ -17,14 +16,14 @@ LICENSE_FILE= ${WRKSRC}/LICENSE USE_GITHUB= yes GH_ACCOUNT= google -USES= cmake compiler:c++0x pkgconfig +USES= autoreconf:build compiler:c++0x gmake libtool pkgconfig USE_LDCONFIG= yes +GNU_CONFIGURE= yes -CMAKE_ARGS= -DBUILD_TESTING:BOOL=OFF +INSTALL_TARGET= install-strip +PLIST_SUB= SHLIBVER=${PORTVERSION} -post-install: - ${LN} -s libbrotlicommon.so.${PORTVERSION} ${STAGEDIR}${PREFIX}/lib/libbrotlicommon.so.0 - ${LN} -s libbrotlidec.so.${PORTVERSION} ${STAGEDIR}${PREFIX}/lib/libbrotlidec.so.0 - ${LN} -s libbrotlienc.so.${PORTVERSION} ${STAGEDIR}${PREFIX}/lib/libbrotlienc.so.0 +pre-configure: + (cd ${WRKSRC} && ./bootstrap) .include diff --git a/archivers/brotli/distinfo b/archivers/brotli/distinfo index 00fc327fa797..307190e48eb1 100644 --- a/archivers/brotli/distinfo +++ b/archivers/brotli/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1498054439 -SHA256 (google-brotli-v0.6.0_GH0.tar.gz) = 69cdbdf5709051dd086a2f020f5abf9e32519eafe0ad6be820c667c3a9c9ee0f -SIZE (google-brotli-v0.6.0_GH0.tar.gz) = 19838761 +TIMESTAMP = 1511961437 +SHA256 (google-brotli-v1.0.2_GH0.tar.gz) = c2cf2a16646b44771a4109bb21218c8e2d952babb827796eb8a800c1f94b7422 +SIZE (google-brotli-v1.0.2_GH0.tar.gz) = 23736359 diff --git a/archivers/brotli/files/patch-freebsd-upstream b/archivers/brotli/files/patch-freebsd-upstream new file mode 100644 index 000000000000..54bfb94cc20a --- /dev/null +++ b/archivers/brotli/files/patch-freebsd-upstream @@ -0,0 +1,121 @@ +From 1ca15159d6a7d4b202de17a94abf52c6c1d5988a Mon Sep 17 00:00:00 2001 +From: Bernard Spil +Date: Wed, 29 Nov 2017 22:38:16 +0100 +Subject: [PATCH 1/4] Fix missing symbols errors in libbrotlienc and dec (#623) + +When using autotools to build the binary and libraries, the resulting libraries don't link `brotlicommon` or `m`. +This was detected when building cURL 7.57.0 which has now has brotli support. During configure it was failing +``` +checking run-time libs availability... failed +configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lbrotlidec -lz -L/usr/local/lib +``` +inspection of config.log showed missing symbols from libbrotlicommon as the cause. + +This patch results in the encryption and decryption libs to be properly linked against libbrotlicommon and libm. +See also https://bugs.freebsd.org/223966 +--- + Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index c4ced6da..ace7a850 100644 +--- Makefile.am.orig ++++ Makefile.am +@@ -23,8 +23,10 @@ libbrotlicommon_la_SOURCES = $(BROTLI_COMMON_C) $(BROTLI_COMMON_H) + libbrotlicommon_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) + libbrotlidec_la_SOURCES = $(BROTLI_DEC_C) $(BROTLI_DEC_H) + libbrotlidec_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) ++libbrotlidec_la_LIBADD = libbrotlicommon.la -lm + libbrotlienc_la_SOURCES = $(BROTLI_ENC_C) $(BROTLI_ENC_H) + libbrotlienc_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) ++libbrotlienc_la_LIBADD = libbrotlicommon.la -lm + + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = \ + +From c8c8389ed3101279b79d93210b33f63dca8af74c Mon Sep 17 00:00:00 2001 +From: Eugene Kliuchnikov +Date: Thu, 30 Nov 2017 11:02:54 +0100 +Subject: [PATCH 2/4] Do not rely on bash arithmetic in `bootstrap` (#625) + +--- + bootstrap | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +diff --git a/bootstrap b/bootstrap +index 2f43f50e..7c7020d3 100755 +--- bootstrap.orig ++++ bootstrap +@@ -1,19 +1,24 @@ + # !/bin/sh -e + ++REQUIRED='is required, but not installed.' ++bc -v >/dev/null 2>&1 || { echo >&2 "'bc' $REQUIRED"; exit 1; } ++sed --version >/dev/null 2>&1 || { echo >&2 "'sed' $REQUIRED"; exit 1; } ++autoreconf --version >/dev/null 2>&1 || { echo >&2 "'autoconf' $REQUIRED"; exit 1; } ++ + mkdir m4 2>/dev/null + + BROTLI_ABI_HEX=`sed -n 's/#define BROTLI_ABI_VERSION 0x//p' c/common/version.h` +-BROTLI_ABI_INT=`echo $((16#$BROTLI_ABI_HEX))` +-BROTLI_ABI_CURRENT=$(($BROTLI_ABI_INT >> 24)) +-BROTLI_ABI_REVISION=$((($BROTLI_ABI_INT >> 12) & 4095)) +-BROTLI_ABI_AGE=$(($BROTLI_ABI_INT & 4095)) ++BROTLI_ABI_INT=`echo "ibase=16;$BROTLI_ABI_HEX" | bc` ++BROTLI_ABI_CURRENT=`expr $BROTLI_ABI_INT / 16777216` ++BROTLI_ABI_REVISION=`expr $BROTLI_ABI_INT / 4096 % 4096` ++BROTLI_ABI_AGE=`expr $BROTLI_ABI_INT % 4096` + BROTLI_ABI_INFO="$BROTLI_ABI_CURRENT:$BROTLI_ABI_REVISION:$BROTLI_ABI_AGE" + + BROTLI_VERSION_HEX=`sed -n 's/#define BROTLI_VERSION 0x//p' c/common/version.h` +-BROTLI_VERSION_INT=`echo $((16#$BROTLI_VERSION_HEX))` +-BROTLI_VERSION_MAJOR=$(($BROTLI_VERSION_INT >> 24)) +-BROTLI_VERSION_MINOR=$((($BROTLI_VERSION_INT >> 12) & 4095)) +-BROTLI_VERSION_PATCH=$(($BROTLI_VERSION_INT & 4095)) ++BROTLI_VERSION_INT=`echo "ibase=16;$BROTLI_VERSION_HEX" | bc` ++BROTLI_VERSION_MAJOR=`expr $BROTLI_VERSION_INT / 16777216` ++BROTLI_VERSION_MINOR=`expr $BROTLI_VERSION_INT / 4096 % 4096` ++BROTLI_VERSION_PATCH=`expr $BROTLI_VERSION_INT % 4096` + BROTLI_VERSION="$BROTLI_VERSION_MAJOR.$BROTLI_VERSION_MINOR.$BROTLI_VERSION_PATCH" + + sed -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am -i + +From 62194f204d90a5a95310a6949f00a0c6c5ca07bd Mon Sep 17 00:00:00 2001 +From: Bernard Spil +Date: Mon, 4 Dec 2017 15:17:49 +0100 +Subject: [PATCH 4/4] Work around Linuxisms (#627) + +Missed this in my previous tests. Sorry for that. + +On BSDs, both bc and sed are part of the base operating system. For sed this results in an error as the check construct (--version) is a GNU-ism and only works for GNU sed, not for bsd sed. +Similarly, BSD sed does not take parameters after the filename(s) operated on. Moving `-i` to the front fixes that. `-r` is provided for GNU compat in BSD sed as an alias of `-E`. The `-i` option in BSD sed requires an extension to work in-place. + +(thank you for picking up the nginx module too!) +--- + bootstrap | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/bootstrap b/bootstrap +index 7c7020d3..dbaea15d 100755 +--- bootstrap.orig ++++ bootstrap +@@ -2,7 +2,9 @@ + + REQUIRED='is required, but not installed.' + bc -v >/dev/null 2>&1 || { echo >&2 "'bc' $REQUIRED"; exit 1; } ++if [ `uname -s` != "FreeBSD" ]; then + sed --version >/dev/null 2>&1 || { echo >&2 "'sed' $REQUIRED"; exit 1; } ++fi + autoreconf --version >/dev/null 2>&1 || { echo >&2 "'autoconf' $REQUIRED"; exit 1; } + + mkdir m4 2>/dev/null +@@ -21,7 +23,7 @@ BROTLI_VERSION_MINOR=`expr $BROTLI_VERSION_INT / 4096 % 4096` + BROTLI_VERSION_PATCH=`expr $BROTLI_VERSION_INT % 4096` + BROTLI_VERSION="$BROTLI_VERSION_MAJOR.$BROTLI_VERSION_MINOR.$BROTLI_VERSION_PATCH" + +-sed -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am -i +-sed -r "s/\[[0-9]+\.[0-9]+\.[0-9]+\]/[$BROTLI_VERSION]/" configure.ac -i ++sed -i.bak -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am ++sed -i.bak -r "s/\[[0-9]+\.[0-9]+\.[0-9]+\]/[$BROTLI_VERSION]/" configure.ac + + autoreconf --install --force --symlink || exit $ diff --git a/archivers/brotli/pkg-plist b/archivers/brotli/pkg-plist index 383f6df505b2..e68bff66af13 100644 --- a/archivers/brotli/pkg-plist +++ b/archivers/brotli/pkg-plist @@ -1,17 +1,21 @@ -bin/bro +bin/brotli include/brotli/decode.h include/brotli/encode.h include/brotli/port.h include/brotli/types.h +lib/libbrotlicommon.a lib/libbrotlicommon.so -lib/libbrotlicommon.so.0 -lib/libbrotlicommon.so.0.6.0 +lib/libbrotlicommon.so.1 +lib/libbrotlicommon.so.%%SHLIBVER%% +lib/libbrotlidec.a lib/libbrotlidec.so -lib/libbrotlidec.so.0 -lib/libbrotlidec.so.0.6.0 +lib/libbrotlidec.so.1 +lib/libbrotlidec.so.%%SHLIBVER%% +lib/libbrotlienc.a lib/libbrotlienc.so -lib/libbrotlienc.so.0 -lib/libbrotlienc.so.0.6.0 +lib/libbrotlienc.so.1 +lib/libbrotlienc.so.%%SHLIBVER%% libdata/pkgconfig/libbrotlicommon.pc libdata/pkgconfig/libbrotlidec.pc libdata/pkgconfig/libbrotlienc.pc +%%PORTDOCS%%%%PORTDOCS%%%%DOCSDIR%%/README