From f78121dd32d14834eaa59c1f5eb610a49154be14 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 25 Dec 2024 11:53:11 +0100 Subject: [PATCH] BUILD: compat: add missing fcntl.h before defining F_SETPIPE_SZ n 1.5-dev8, 13 years ago, support for setting pipe size was added by commit bd9a0a778 ("OPTIM/MINOR: make it possible to change pipe size (tune.pipesize)"). For compatibility purposes, it was defining F_SETPIPE_SZ in compat.h if it was not set. It apparently always had F_SETPIPE_SZ defined before being included. Now in 3.2-dev1, commit fbc534a6f ("REORG: startup: move nofile limit checks in limits.c") reordered a few includes and ended up with mworker-prog.c including compat.h before fcntl.h, causing a redefinition error on certain libcs: CC src/mworker-prog.o In file included from /usr/include/bits/fcntl.h:61:0, from /usr/include/fcntl.h:35, from include/haproxy/limits.h:11, from include/haproxy/mworker.h:18, from src/mworker-prog.c:27: /usr/include/bits/fcntl-linux.h:203:0: warning: "F_SETPIPE_SZ" redefined [enabled by default] In file included from include/haproxy/api-t.h:35:0, from include/haproxy/api.h:33, from src/mworker-prog.c:23: include/haproxy/compat.h:161:0: note: this is the location of the previous definition Let's simply include fcntl.h in compat.h before the macro is redefined. There's normally no need to backport this, though it's harmless to do it if needed. --- include/haproxy/compat.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/haproxy/compat.h b/include/haproxy/compat.h index 93df3d9ff..e4fec3e1b 100644 --- a/include/haproxy/compat.h +++ b/include/haproxy/compat.h @@ -24,6 +24,7 @@ #include #include +#include /* This is needed on Linux for Netfilter includes */ #include #include