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 $ |