haproxy: Update HAProxy to v2.1.5
authorChristian Lachner <redacted>
Sun, 31 May 2020 18:32:24 +0000 (20:32 +0200)
committerChristian Lachner <redacted>
Sun, 31 May 2020 18:32:24 +0000 (20:32 +0200)
- Update haproxy download URL and hash
- This version introduces backtrace-support via backtrace(), however, it must be disabled because neither MUSL nor UCLIBC support it (build fails because of missing execinfo.h)
- Our previous UCLIBC patch is now obsolete and has been removed. We now only disable libcrypt support.
- A new patch was backported from the haproxy dev-branch which fixes an IFDEF which should only allow GLIBC to use dladdr1 and make builds fall back to dladdr when using other c-libs. The previous logic was bogus and broke the build on UCLIBC.

Signed-off-by: Christian Lachner <redacted>
net/haproxy/Makefile
net/haproxy/get-latest-patches.sh
net/haproxy/patches/000-BUG-MINOR-protocol_buffer-Wrong-maximum-shifting.patch [deleted file]
net/haproxy/patches/000-OPENWRT-BUILD-make-dladdr1-depend-on-glibc-version-and-not-__USE_GNU.patch [new file with mode: 0644]
net/haproxy/patches/001-OPENWRT-add-uclibc-support.patch [deleted file]

index 9724dfff1cabee73aabae795bd0ad9cecc504843..debf46a72e78ebe917e52f65ebbb22b919f883a7 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=haproxy
-PKG_VERSION:=2.1.4
+PKG_VERSION:=2.1.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://www.haproxy.org/download/2.1/src
-PKG_HASH:=51030ff696d7067162b4d24d354044293aecfbb36d7acc2f840c8d928bfe91cd
+PKG_HASH:=42174ac5836ab243565b888299ec30115c1259e75872696708528260c6700ea1
 
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
                Christian Lachner <gladiac@gmail.com>
@@ -86,14 +86,12 @@ ifeq ($(CONFIG_TARGET_x86),y)
 endif
 
 ifeq ($(CONFIG_USE_UCLIBC),y)
-       LINUX_TARGET:=linux-uclibc
-else
-       LINUX_TARGET:=linux-glibc
+       ADDON+=USE_LIBCRYPT=
 endif
 
 ifeq ($(BUILD_VARIANT),ssl)
        ADDON+=USE_OPENSSL=1
-       ADDON+=ADDLIB="-lcrypto -lm "
+       ADDON+=ADDLIB="-lcrypto -lm"
 endif
 
 ifeq ($(ENABLE_REGPARM),y)
@@ -101,7 +99,7 @@ ifeq ($(ENABLE_REGPARM),y)
 endif
 
 define Build/Compile
-       $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR) \
+       $(MAKE) TARGET=linux-glibc -C $(PKG_BUILD_DIR) \
                DESTDIR="$(PKG_INSTALL_DIR)" \
                CC="$(TARGET_CC)" \
                PCREDIR="$(STAGING_DIR)/usr/" \
@@ -112,7 +110,7 @@ define Build/Compile
                USE_THREAD=1 USE_PTHREAD_PSHARED=1 \
                VERSION="$(PKG_VERSION)" SUBVERS="-$(PKG_RELEASE)" \
                VERDATE="$(shell date -d @$(SOURCE_DATE_EPOCH) '+%Y/%m/%d')" IGNOREGIT=1 \
-               $(ADDON) \
+               $(ADDON) USE_BACKTRACE= \
                CFLAGS="$(TARGET_CFLAGS) -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-format-truncation -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-old-style-declaration -Wno-ignored-qualifiers -Wno-clobbered -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-stringop-overflow -Wno-cast-function-type -Wtype-limits -Wshift-negative-value -Wshift-overflow=2 -Wduplicated-cond -Wnull-dereference" \
                LD="$(TARGET_CC)" \
                LDFLAGS="$(TARGET_LDFLAGS) -latomic" \
index 2edb44e3ba7b492f671bf04d88d943b4f51d5e02..d78edf9c77ef989fdfa0d8542c5441b70e6a9f36 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 CLONEURL=https://git.haproxy.org/git/haproxy-2.1.git
-BASE_TAG=v2.1.4
+BASE_TAG=v2.1.5
 TMP_REPODIR=tmprepo
 PATCHESDIR=patches
 
diff --git a/net/haproxy/patches/000-BUG-MINOR-protocol_buffer-Wrong-maximum-shifting.patch b/net/haproxy/patches/000-BUG-MINOR-protocol_buffer-Wrong-maximum-shifting.patch
deleted file mode 100644 (file)
index 71b6277..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-commit c7a203a6c75e4efff5f3d5d675d925f11b47dba1
-Author: Frédéric Lécaille <flecaille@haproxy.com>
-Date:   Thu Apr 2 14:24:31 2020 +0200
-
-    BUG/MINOR: protocol_buffer: Wrong maximum shifting.
-    
-    This patch fixes a bad stop condition when decoding a protocol buffer variable integer
-    whose maximum lenghts are 10, shifting a uint64_t value by more than 63.
-    
-    Thank you to Ilya for having reported this issue.
-    
-    Must be backported to 2.1 and 2.0.
-    
-    (cherry picked from commit 876ed55d9b8d0c298b6cac1003ec365a19bf7aad)
-    Signed-off-by: Willy Tarreau <w@1wt.eu>
-
-diff --git a/include/proto/protocol_buffers.h b/include/proto/protocol_buffers.h
-index 69f0bdf81..0426d83d2 100644
---- a/include/proto/protocol_buffers.h
-+++ b/include/proto/protocol_buffers.h
-@@ -158,7 +158,7 @@ protobuf_varint(uint64_t *val, unsigned char *pos, size_t len)
-               shift += 7;
-               /* The maximum length in bytes of a 64-bit encoded value is 10. */
--              if (shift > 70)
-+              if (shift > 63)
-                       return 0;
-       }
-@@ -194,7 +194,7 @@ protobuf_decode_varint(uint64_t *val, unsigned char **pos, size_t *len)
-               shift += 7;
-               /* The maximum length in bytes of a 64-bit encoded value is 10. */
--              if (shift > 70)
-+              if (shift > 63)
-                       return 0;
-       }
-@@ -227,7 +227,7 @@ protobuf_skip_varint(unsigned char **pos, size_t *len, size_t vlen)
-               shift += 7;
-               /* The maximum length in bytes of a 64-bit encoded value is 10. */
--              if (shift > 70)
-+              if (shift > 63)
-                       return 0;
-       }
-@@ -263,7 +263,7 @@ protobuf_varint_getlen(unsigned char *pos, size_t len)
-               shift += 7;
-               /* The maximum length in bytes of a 64-bit encoded value is 10. */
--              if (shift > 70)
-+              if (shift > 63)
-                       return -1;
-       }
diff --git a/net/haproxy/patches/000-OPENWRT-BUILD-make-dladdr1-depend-on-glibc-version-and-not-__USE_GNU.patch b/net/haproxy/patches/000-OPENWRT-BUILD-make-dladdr1-depend-on-glibc-version-and-not-__USE_GNU.patch
new file mode 100644 (file)
index 0000000..00caee0
--- /dev/null
@@ -0,0 +1,23 @@
+commit 62af9c83f9ed2b25e0061798e29e3cccfce5fbdc
+Author: Willy Tarreau <w@1wt.eu>
+Date:   Tue Mar 10 07:51:48 2020 +0100
+
+    BUILD: make dladdr1 depend on glibc version and not __USE_GNU
+    
+    Technically speaking the call was implemented in glibc 2.3 so we must
+    rely on this and not on __USE_GNU which is an internal define of glibc
+    to track use of GNU_SOURCE.
+
+diff --git a/src/standard.c b/src/standard.c
+index e0ea8328e..d16eebfea 100644
+--- a/src/standard.c
++++ b/src/standard.c
+@@ -4350,7 +4350,7 @@ void debug_hexdump(FILE *out, const char *pfx, const char *buf,
+ static int dladdr_and_size(const void *addr, Dl_info *dli, size_t *size)
+ {
+       int ret;
+-#ifdef __USE_GNU // most detailed one
++#if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) // most detailed one
+       const ElfW(Sym) *sym;
+       ret = dladdr1(addr, dli, (void **)&sym, RTLD_DL_SYMENT);
diff --git a/net/haproxy/patches/001-OPENWRT-add-uclibc-support.patch b/net/haproxy/patches/001-OPENWRT-add-uclibc-support.patch
deleted file mode 100644 (file)
index ddec134..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -342,6 +342,15 @@ ifeq ($(TARGET),linux-glibc)
-     USE_ACCEPT4 USE_LINUX_SPLICE USE_PRCTL USE_THREAD_DUMP USE_GETADDRINFO)
- endif
-+# For linux >= 2.6.28 and uclibc
-+ifeq ($(TARGET),linux-uclibc)
-+  set_target_defaults = $(call default_opts, \
-+    USE_POLL USE_TPROXY USE_DL USE_RT USE_NETFILTER                           \
-+    USE_CPU_AFFINITY USE_THREAD USE_EPOLL USE_FUTEX USE_LINUX_TPROXY          \
-+    USE_ACCEPT4 USE_LINUX_SPLICE USE_PRCTL USE_THREAD_DUMP USE_NS USE_TFO     \
-+    USE_GETADDRINFO)
-+endif
-+
- # Solaris 8 and above
- ifeq ($(TARGET),solaris)
-   # We also enable getaddrinfo() which works since solaris 8.
git clone https://git.99rst.org/PROJECT