|
Line 0
Link Here
|
|
|
1 |
From 1ca15159d6a7d4b202de17a94abf52c6c1d5988a Mon Sep 17 00:00:00 2001 |
| 2 |
From: Bernard Spil <Sp1l@users.noreply.github.com> |
| 3 |
Date: Wed, 29 Nov 2017 22:38:16 +0100 |
| 4 |
Subject: [PATCH 1/4] Fix missing symbols errors in libbrotlienc and dec (#623) |
| 5 |
|
| 6 |
When using autotools to build the binary and libraries, the resulting libraries don't link `brotlicommon` or `m`. |
| 7 |
This was detected when building cURL 7.57.0 which has now has brotli support. During configure it was failing |
| 8 |
``` |
| 9 |
checking run-time libs availability... failed |
| 10 |
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 |
| 11 |
``` |
| 12 |
inspection of config.log showed missing symbols from libbrotlicommon as the cause. |
| 13 |
|
| 14 |
This patch results in the encryption and decryption libs to be properly linked against libbrotlicommon and libm. |
| 15 |
See also https://bugs.freebsd.org/223966 |
| 16 |
--- |
| 17 |
Makefile.am | 2 ++ |
| 18 |
1 file changed, 2 insertions(+) |
| 19 |
|
| 20 |
diff --git a/Makefile.am b/Makefile.am |
| 21 |
index c4ced6da..ace7a850 100644 |
| 22 |
--- Makefile.am.orig |
| 23 |
+++ Makefile.am |
| 24 |
@@ -23,8 +23,10 @@ libbrotlicommon_la_SOURCES = $(BROTLI_COMMON_C) $(BROTLI_COMMON_H) |
| 25 |
libbrotlicommon_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) |
| 26 |
libbrotlidec_la_SOURCES = $(BROTLI_DEC_C) $(BROTLI_DEC_H) |
| 27 |
libbrotlidec_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) |
| 28 |
+libbrotlidec_la_LIBADD = libbrotlicommon.la -lm |
| 29 |
libbrotlienc_la_SOURCES = $(BROTLI_ENC_C) $(BROTLI_ENC_H) |
| 30 |
libbrotlienc_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) |
| 31 |
+libbrotlienc_la_LIBADD = libbrotlicommon.la -lm |
| 32 |
|
| 33 |
pkgconfigdir = $(libdir)/pkgconfig |
| 34 |
pkgconfig_DATA = \ |
| 35 |
|
| 36 |
From c8c8389ed3101279b79d93210b33f63dca8af74c Mon Sep 17 00:00:00 2001 |
| 37 |
From: Eugene Kliuchnikov <eustas@google.com> |
| 38 |
Date: Thu, 30 Nov 2017 11:02:54 +0100 |
| 39 |
Subject: [PATCH 2/4] Do not rely on bash arithmetic in `bootstrap` (#625) |
| 40 |
|
| 41 |
--- |
| 42 |
bootstrap | 21 +++++++++++++-------- |
| 43 |
1 file changed, 13 insertions(+), 8 deletions(-) |
| 44 |
|
| 45 |
diff --git a/bootstrap b/bootstrap |
| 46 |
index 2f43f50e..7c7020d3 100755 |
| 47 |
--- bootstrap.orig |
| 48 |
+++ bootstrap |
| 49 |
@@ -1,19 +1,24 @@ |
| 50 |
# !/bin/sh -e |
| 51 |
|
| 52 |
+REQUIRED='is required, but not installed.' |
| 53 |
+bc -v >/dev/null 2>&1 || { echo >&2 "'bc' $REQUIRED"; exit 1; } |
| 54 |
+sed --version >/dev/null 2>&1 || { echo >&2 "'sed' $REQUIRED"; exit 1; } |
| 55 |
+autoreconf --version >/dev/null 2>&1 || { echo >&2 "'autoconf' $REQUIRED"; exit 1; } |
| 56 |
+ |
| 57 |
mkdir m4 2>/dev/null |
| 58 |
|
| 59 |
BROTLI_ABI_HEX=`sed -n 's/#define BROTLI_ABI_VERSION 0x//p' c/common/version.h` |
| 60 |
-BROTLI_ABI_INT=`echo $((16#$BROTLI_ABI_HEX))` |
| 61 |
-BROTLI_ABI_CURRENT=$(($BROTLI_ABI_INT >> 24)) |
| 62 |
-BROTLI_ABI_REVISION=$((($BROTLI_ABI_INT >> 12) & 4095)) |
| 63 |
-BROTLI_ABI_AGE=$(($BROTLI_ABI_INT & 4095)) |
| 64 |
+BROTLI_ABI_INT=`echo "ibase=16;$BROTLI_ABI_HEX" | bc` |
| 65 |
+BROTLI_ABI_CURRENT=`expr $BROTLI_ABI_INT / 16777216` |
| 66 |
+BROTLI_ABI_REVISION=`expr $BROTLI_ABI_INT / 4096 % 4096` |
| 67 |
+BROTLI_ABI_AGE=`expr $BROTLI_ABI_INT % 4096` |
| 68 |
BROTLI_ABI_INFO="$BROTLI_ABI_CURRENT:$BROTLI_ABI_REVISION:$BROTLI_ABI_AGE" |
| 69 |
|
| 70 |
BROTLI_VERSION_HEX=`sed -n 's/#define BROTLI_VERSION 0x//p' c/common/version.h` |
| 71 |
-BROTLI_VERSION_INT=`echo $((16#$BROTLI_VERSION_HEX))` |
| 72 |
-BROTLI_VERSION_MAJOR=$(($BROTLI_VERSION_INT >> 24)) |
| 73 |
-BROTLI_VERSION_MINOR=$((($BROTLI_VERSION_INT >> 12) & 4095)) |
| 74 |
-BROTLI_VERSION_PATCH=$(($BROTLI_VERSION_INT & 4095)) |
| 75 |
+BROTLI_VERSION_INT=`echo "ibase=16;$BROTLI_VERSION_HEX" | bc` |
| 76 |
+BROTLI_VERSION_MAJOR=`expr $BROTLI_VERSION_INT / 16777216` |
| 77 |
+BROTLI_VERSION_MINOR=`expr $BROTLI_VERSION_INT / 4096 % 4096` |
| 78 |
+BROTLI_VERSION_PATCH=`expr $BROTLI_VERSION_INT % 4096` |
| 79 |
BROTLI_VERSION="$BROTLI_VERSION_MAJOR.$BROTLI_VERSION_MINOR.$BROTLI_VERSION_PATCH" |
| 80 |
|
| 81 |
sed -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am -i |
| 82 |
|
| 83 |
From 62194f204d90a5a95310a6949f00a0c6c5ca07bd Mon Sep 17 00:00:00 2001 |
| 84 |
From: Bernard Spil <Sp1l@users.noreply.github.com> |
| 85 |
Date: Mon, 4 Dec 2017 15:17:49 +0100 |
| 86 |
Subject: [PATCH 4/4] Work around Linuxisms (#627) |
| 87 |
|
| 88 |
Missed this in my previous tests. Sorry for that. |
| 89 |
|
| 90 |
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. |
| 91 |
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. |
| 92 |
|
| 93 |
(thank you for picking up the nginx module too!) |
| 94 |
--- |
| 95 |
bootstrap | 6 ++++-- |
| 96 |
1 file changed, 4 insertions(+), 2 deletions(-) |
| 97 |
|
| 98 |
diff --git a/bootstrap b/bootstrap |
| 99 |
index 7c7020d3..dbaea15d 100755 |
| 100 |
--- bootstrap.orig |
| 101 |
+++ bootstrap |
| 102 |
@@ -2,7 +2,9 @@ |
| 103 |
|
| 104 |
REQUIRED='is required, but not installed.' |
| 105 |
bc -v >/dev/null 2>&1 || { echo >&2 "'bc' $REQUIRED"; exit 1; } |
| 106 |
+if [ `uname -s` != "FreeBSD" ]; then |
| 107 |
sed --version >/dev/null 2>&1 || { echo >&2 "'sed' $REQUIRED"; exit 1; } |
| 108 |
+fi |
| 109 |
autoreconf --version >/dev/null 2>&1 || { echo >&2 "'autoconf' $REQUIRED"; exit 1; } |
| 110 |
|
| 111 |
mkdir m4 2>/dev/null |
| 112 |
@@ -21,7 +23,7 @@ BROTLI_VERSION_MINOR=`expr $BROTLI_VERSION_INT / 4096 % 4096` |
| 113 |
BROTLI_VERSION_PATCH=`expr $BROTLI_VERSION_INT % 4096` |
| 114 |
BROTLI_VERSION="$BROTLI_VERSION_MAJOR.$BROTLI_VERSION_MINOR.$BROTLI_VERSION_PATCH" |
| 115 |
|
| 116 |
-sed -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am -i |
| 117 |
-sed -r "s/\[[0-9]+\.[0-9]+\.[0-9]+\]/[$BROTLI_VERSION]/" configure.ac -i |
| 118 |
+sed -i.bak -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am |
| 119 |
+sed -i.bak -r "s/\[[0-9]+\.[0-9]+\.[0-9]+\]/[$BROTLI_VERSION]/" configure.ac |
| 120 |
|
| 121 |
autoreconf --install --force --symlink || exit $ |