Date: Friday, May 20, 2016 @ 00:54:29 Author: demize Revision: 175741
upgpkg: haproxy 1.6.5-3 Build with patch to fix build under gcc6 Added: haproxy/trunk/gcc6-fix.patch Modified: haproxy/trunk/PKGBUILD ----------------+ PKGBUILD | 10 +++-- gcc6-fix.patch | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 4 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-05-19 22:26:22 UTC (rev 175740) +++ PKGBUILD 2016-05-19 22:54:29 UTC (rev 175741) @@ -4,7 +4,7 @@ pkgname=haproxy pkgver=1.6.5 -pkgrel=2 +pkgrel=3 pkgdesc='Reliable, high performance TCP/HTTP load balancer' url='http://haproxy.org/' @@ -18,14 +18,17 @@ install=haproxy.install source=(http://haproxy.org/download/${pkgver%.*}/src/haproxy-$pkgver.tar.gz - haproxy.cfg) + haproxy.cfg + gcc6-fix.patch) md5sums=('5290f278c04e682e42ab71fed26fc082' - '02241a8ca257d12f7eb131e2d7da3f3b') + '02241a8ca257d12f7eb131e2d7da3f3b' + 'c4b4fba82b6f33270ed57514ed3f53e8') prepare() { cd haproxy-$pkgver sed -i 's:/usr/sbin/haproxy:/usr/bin/haproxy:' src/haproxy-systemd-wrapper.c + patch -p1 -i "$srcdir"/gcc6-fix.patch } build() { @@ -32,7 +35,6 @@ cd haproxy-$pkgver make CPU=generic TARGET=linux2628 \ - SPEC_CFLAGS="-fno-strict-aliasing -Wdeclaration-after-statement -fno-tree-sra" \ USE_GETADDRINFO=1 \ USE_OPENSSL=1 \ USE_PCRE=1 USE_PCRE_JIT=1 \ Added: gcc6-fix.patch =================================================================== --- gcc6-fix.patch (rev 0) +++ gcc6-fix.patch 2016-05-19 22:54:29 UTC (rev 175741) @@ -0,0 +1,107 @@ +diff --git a/include/proto/proto_http.h b/include/proto/proto_http.h +index 4d8f5365b625..0aa6643b98da 100644 +--- a/include/proto/proto_http.h ++++ b/include/proto/proto_http.h +@@ -110,7 +110,7 @@ void http_set_status(unsigned int status, struct stream *s); + int http_transform_header_str(struct stream* s, struct http_msg *msg, const char* name, + unsigned int name_len, const char *str, struct my_regex *re, + int action); +-void inet_set_tos(int fd, struct sockaddr_storage from, int tos); ++void inet_set_tos(int fd, const struct sockaddr_storage *from, int tos); + void http_perform_server_redirect(struct stream *s, struct stream_interface *si); + void http_return_srv_error(struct stream *s, struct stream_interface *si); + void http_capture_bad_message(struct error_snapshot *es, struct stream *s, +diff --git a/src/cfgparse.c b/src/cfgparse.c +index 3fee54e0db1d..48e584cf73e7 100644 +--- a/src/cfgparse.c ++++ b/src/cfgparse.c +@@ -287,7 +287,7 @@ int str2listener(char *str, struct proxy *curproxy, struct bind_conf *bind_conf, + } + + /* OK the address looks correct */ +- ss = *ss2; ++ memcpy(&ss, ss2, sizeof(ss)); + + for (; port <= end; port++) { + l = calloc(1, sizeof(*l)); +diff --git a/src/connection.c b/src/connection.c +index 330f3efbc995..5515188c6b10 100644 +--- a/src/connection.c ++++ b/src/connection.c +@@ -744,7 +744,7 @@ int make_proxy_line_v2(char *buf, int buf_len, struct server *srv, struct connec + const char pp2_signature[] = PP2_SIGNATURE; + int ret = 0; + struct proxy_hdr_v2 *hdr = (struct proxy_hdr_v2 *)buf; +- struct sockaddr_storage null_addr = {0}; ++ struct sockaddr_storage null_addr = { .ss_family = 0 }; + struct sockaddr_storage *src = &null_addr; + struct sockaddr_storage *dst = &null_addr; + +diff --git a/src/hlua.c b/src/hlua.c +index f6eb8aa80ee0..94f97429c895 100644 +--- a/src/hlua.c ++++ b/src/hlua.c +@@ -4781,7 +4781,7 @@ __LJMP static int hlua_txn_set_tos(lua_State *L) + tos = MAY_LJMP(luaL_checkinteger(L, 2)); + + if ((cli_conn = objt_conn(htxn->s->sess->origin)) && conn_ctrl_ready(cli_conn)) +- inet_set_tos(cli_conn->t.sock.fd, cli_conn->addr.from, tos); ++ inet_set_tos(cli_conn->t.sock.fd, &cli_conn->addr.from, tos); + + return 0; + } +diff --git a/src/proto_http.c b/src/proto_http.c +index 21ad131c9f43..416504247a8d 100644 +--- a/src/proto_http.c ++++ b/src/proto_http.c +@@ -3189,15 +3189,15 @@ int http_handle_stats(struct stream *s, struct channel *req) + /* Sets the TOS header in IPv4 and the traffic class header in IPv6 packets + * (as per RFC3260 #4 and BCP37 #4.2 and #5.2). + */ +-void inet_set_tos(int fd, struct sockaddr_storage from, int tos) ++void inet_set_tos(int fd, const struct sockaddr_storage *from, int tos) + { + #ifdef IP_TOS +- if (from.ss_family == AF_INET) ++ if (from->ss_family == AF_INET) + setsockopt(fd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)); + #endif + #ifdef IPV6_TCLASS +- if (from.ss_family == AF_INET6) { +- if (IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&from)->sin6_addr)) ++ if (from->ss_family == AF_INET6) { ++ if (IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)from)->sin6_addr)) + /* v4-mapped addresses need IP_TOS */ + setsockopt(fd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)); + else +@@ -3363,7 +3363,7 @@ resume_execution: + + case ACT_HTTP_SET_TOS: + if ((cli_conn = objt_conn(sess->origin)) && conn_ctrl_ready(cli_conn)) +- inet_set_tos(cli_conn->t.sock.fd, cli_conn->addr.from, rule->arg.tos); ++ inet_set_tos(cli_conn->t.sock.fd, &cli_conn->addr.from, rule->arg.tos); + break; + + case ACT_HTTP_SET_MARK: +@@ -3646,7 +3646,7 @@ resume_execution: + + case ACT_HTTP_SET_TOS: + if ((cli_conn = objt_conn(sess->origin)) && conn_ctrl_ready(cli_conn)) +- inet_set_tos(cli_conn->t.sock.fd, cli_conn->addr.from, rule->arg.tos); ++ inet_set_tos(cli_conn->t.sock.fd, &cli_conn->addr.from, rule->arg.tos); + break; + + case ACT_HTTP_SET_MARK: +diff --git a/src/proto_tcp.c b/src/proto_tcp.c +index a44912af4654..bbe12e2d4c0d 100644 +--- a/src/proto_tcp.c ++++ b/src/proto_tcp.c +@@ -435,7 +435,7 @@ int tcp_connect_server(struct connection *conn, int data, int delack) + struct sockaddr_storage sa; + + ret = 1; +- sa = src->source_addr; ++ memcpy(&sa, &src->source_addr, sizeof(sa)); + + do { + /* note: in case of retry, we may have to release a previously