From 79d6657d1a0aeef4716a44cf85b9656e62669e8b Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Tue, 5 Sep 2017 21:59:15 +0100 Subject: Use simpler patch for reproducible builds Change-Id: Iced5ea9dd62a0378afd2e8645264678795df442b Signed-off-by: Luca Boccassi --- .../mk-install-symlinks-before-build-step.patch | 48 ++ ...LAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch | 533 --------------------- debian/patches/series | 2 +- 3 files changed, 49 insertions(+), 534 deletions(-) create mode 100644 debian/patches/mk-install-symlinks-before-build-step.patch delete mode 100644 debian/patches/mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch (limited to 'debian/patches') diff --git a/debian/patches/mk-install-symlinks-before-build-step.patch b/debian/patches/mk-install-symlinks-before-build-step.patch new file mode 100644 index 00000000..42569269 --- /dev/null +++ b/debian/patches/mk-install-symlinks-before-build-step.patch @@ -0,0 +1,48 @@ +Description: mk: install symlinks before build step + +A race condition can happen during parallel builds, where a header +might be installed in RTE_OUT/include before CFLAGS is recursively +expanded. This causes GCC to sometimes pick the header path as +SRCDIR/... and sometimes as RTE_OUT/include/... making the build +unreproducible, as the full path is used for the expansion of +__FILE__ and in the DWARF directory listing. + +Installing all symlinks before all builds solves the problem. It is +still suboptimal, as the (fixed) path recorded in the DWARF dir +listing will include the user-configurable build output directory, +and thus will result in a different binary between different users +despite all other conditions being equal, but it is a simpler +approach that will anyway be obsolete once the build system is +switched to Meson. + +Origin: http://dpdk.org/dev/patchwork/patch/28391/ +Forwarded: yes +Author: Luca Boccassi +Last-Update: 2017-09-05 +--- + mk/rte.lib.mk | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/mk/rte.lib.mk ++++ b/mk/rte.lib.mk +@@ -59,14 +59,19 @@ endif + + + _BUILD = $(LIB) +-_INSTALL = $(INSTALL-FILES-y) $(SYMLINK-FILES-y) $(RTE_OUTPUT)/lib/$(LIB) ++PREINSTALL = $(SYMLINK-FILES-y) ++_INSTALL = $(INSTALL-FILES-y) $(RTE_OUTPUT)/lib/$(LIB) + _CLEAN = doclean + + .PHONY: all + all: install + + .PHONY: install ++ifeq ($(SYMLINK-FILES-y),) + install: build _postinstall ++else ++install: _preinstall build _postinstall ++endif + + _postinstall: build + diff --git a/debian/patches/mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch b/debian/patches/mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch deleted file mode 100644 index 914c7847..00000000 --- a/debian/patches/mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch +++ /dev/null @@ -1,533 +0,0 @@ -Description: mk: set -ISCDIR before -IRTE_OUT/include in CFLAGS - -A race condition can happen during parallel builds, where a header -might be installed in RTE_OUT/include before CFLAGS is recursively -expanded. This causes GCC to sometimes pick the header path as -SRCDIR/... and sometimes as RTE_OUT/include/... making the build -unreproducible, as the full path is used for the expansion of -__FILE__ and in the DWARF directory listing. -Always pass -ISRCDIR first to CFLAGS so that it's deterministic. - -Origin: http://dpdk.org/dev/patchwork/patch/27639/ -Forwarded: yes -Author: Luca Boccassi -Last-Update: 2017-08-18 ---- - lib/librte_acl/Makefile | 10 ++++++++-- - lib/librte_bitratestats/Makefile | 9 ++++++++- - lib/librte_cmdline/Makefile | 9 ++++++++- - lib/librte_distributor/Makefile | 10 ++++++++-- - lib/librte_eal/linuxapp/eal/Makefile | 8 +++++++- - lib/librte_efd/Makefile | 10 ++++++++-- - lib/librte_gro/Makefile | 9 ++++++++- - lib/librte_hash/Makefile | 10 ++++++++-- - lib/librte_ip_frag/Makefile | 10 ++++++++-- - lib/librte_jobstats/Makefile | 10 ++++++++-- - lib/librte_kni/Makefile | 9 ++++++++- - lib/librte_kvargs/Makefile | 9 ++++++++- - lib/librte_latencystats/Makefile | 9 ++++++++- - lib/librte_lpm/Makefile | 10 ++++++++-- - lib/librte_mbuf/Makefile | 9 ++++++++- - lib/librte_mempool/Makefile | 9 ++++++++- - lib/librte_metrics/Makefile | 9 ++++++++- - lib/librte_net/Makefile | 9 ++++++++- - lib/librte_pdump/Makefile | 10 ++++++++-- - lib/librte_power/Makefile | 9 ++++++++- - lib/librte_reorder/Makefile | 10 ++++++++-- - lib/librte_ring/Makefile | 9 ++++++++- - lib/librte_timer/Makefile | 9 ++++++++- - lib/librte_vhost/Makefile | 9 ++++++++- - 24 files changed, 191 insertions(+), 33 deletions(-) - -diff --git a/lib/librte_acl/Makefile b/lib/librte_acl/Makefile -index 59767920a..bce78813b 100644 ---- a/lib/librte_acl/Makefile -+++ b/lib/librte_acl/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_acl.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_acl_version.map - -diff --git a/lib/librte_bitratestats/Makefile b/lib/librte_bitratestats/Makefile -index 58a20ea09..26a3f4908 100644 ---- a/lib/librte_bitratestats/Makefile -+++ b/lib/librte_bitratestats/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_bitratestats.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_bitratestats_version.map - -diff --git a/lib/librte_cmdline/Makefile b/lib/librte_cmdline/Makefile -index 644f68e47..9dd75f2d2 100644 ---- a/lib/librte_cmdline/Makefile -+++ b/lib/librte_cmdline/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_cmdline.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_cmdline_version.map - -diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile -index b417ee7be..a51d7c8b2 100644 ---- a/lib/librte_distributor/Makefile -+++ b/lib/librte_distributor/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_distributor.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_distributor_version.map - -diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile -index 90bca4d68..f5eee1c6a 100644 ---- a/lib/librte_eal/linuxapp/eal/Makefile -+++ b/lib/librte_eal/linuxapp/eal/Makefile -@@ -41,7 +41,13 @@ LIBABIVER := 5 - - VPATH += $(RTE_SDK)/lib/librte_eal/common - --CFLAGS += -I$(SRCDIR)/include -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR)/include $(CFLAGS) - CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common - CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include - CFLAGS += $(WERROR_FLAGS) -O3 -diff --git a/lib/librte_efd/Makefile b/lib/librte_efd/Makefile -index b9277bc5d..b169e3240 100644 ---- a/lib/librte_efd/Makefile -+++ b/lib/librte_efd/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_efd.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_efd_version.map - -diff --git a/lib/librte_gro/Makefile b/lib/librte_gro/Makefile -index 747eeec9e..4a9f12d85 100644 ---- a/lib/librte_gro/Makefile -+++ b/lib/librte_gro/Makefile -@@ -34,8 +34,15 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_gro.a - -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) - CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+CFLAGS += $(WERROR_FLAGS) - - EXPORT_MAP := rte_gro_version.map - -diff --git a/lib/librte_hash/Makefile b/lib/librte_hash/Makefile -index 9cf13a045..677d494e7 100644 ---- a/lib/librte_hash/Makefile -+++ b/lib/librte_hash/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_hash.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_hash_version.map - -diff --git a/lib/librte_ip_frag/Makefile b/lib/librte_ip_frag/Makefile -index 4e693bf8f..de45ec2d3 100644 ---- a/lib/librte_ip_frag/Makefile -+++ b/lib/librte_ip_frag/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_ip_frag.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_ipfrag_version.map - -diff --git a/lib/librte_jobstats/Makefile b/lib/librte_jobstats/Makefile -index 561a0678c..57329b18e 100644 ---- a/lib/librte_jobstats/Makefile -+++ b/lib/librte_jobstats/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_jobstats.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_jobstats_version.map - -diff --git a/lib/librte_kni/Makefile b/lib/librte_kni/Makefile -index 70f1ca8f6..130d6fd74 100644 ---- a/lib/librte_kni/Makefile -+++ b/lib/librte_kni/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_kni.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 -fno-strict-aliasing - - EXPORT_MAP := rte_kni_version.map - -diff --git a/lib/librte_kvargs/Makefile b/lib/librte_kvargs/Makefile -index 564dd3102..7c332c110 100644 ---- a/lib/librte_kvargs/Makefile -+++ b/lib/librte_kvargs/Makefile -@@ -36,7 +36,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_kvargs.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_kvargs_version.map - -diff --git a/lib/librte_latencystats/Makefile b/lib/librte_latencystats/Makefile -index eaacbb731..46a8ecd34 100644 ---- a/lib/librte_latencystats/Makefile -+++ b/lib/librte_latencystats/Makefile -@@ -33,7 +33,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_latencystats.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - LDLIBS += -lm - LDLIBS += -lpthread - -diff --git a/lib/librte_lpm/Makefile b/lib/librte_lpm/Makefile -index 32be46b3b..6a97fdc97 100644 ---- a/lib/librte_lpm/Makefile -+++ b/lib/librte_lpm/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_lpm.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_lpm_version.map - -diff --git a/lib/librte_mbuf/Makefile b/lib/librte_mbuf/Makefile -index 548273054..4d51191ee 100644 ---- a/lib/librte_mbuf/Makefile -+++ b/lib/librte_mbuf/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_mbuf.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_mbuf_version.map - -diff --git a/lib/librte_mempool/Makefile b/lib/librte_mempool/Makefile -index 7b5bdfee7..33678192f 100644 ---- a/lib/librte_mempool/Makefile -+++ b/lib/librte_mempool/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_mempool.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_mempool_version.map - -diff --git a/lib/librte_metrics/Makefile b/lib/librte_metrics/Makefile -index d4990e839..195bd4d56 100644 ---- a/lib/librte_metrics/Makefile -+++ b/lib/librte_metrics/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_metrics.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_metrics_version.map - -diff --git a/lib/librte_net/Makefile b/lib/librte_net/Makefile -index 56727c4df..a08a7dd8b 100644 ---- a/lib/librte_net/Makefile -+++ b/lib/librte_net/Makefile -@@ -33,7 +33,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - - LIB = librte_net.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_net_version.map - LIBABIVER := 1 -diff --git a/lib/librte_pdump/Makefile b/lib/librte_pdump/Makefile -index 1c03bcbb7..8923d7499 100644 ---- a/lib/librte_pdump/Makefile -+++ b/lib/librte_pdump/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_pdump.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 --CFLAGS += -D_GNU_SOURCE -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 -D_GNU_SOURCE - LDLIBS += -lpthread - - EXPORT_MAP := rte_pdump_version.map -diff --git a/lib/librte_power/Makefile b/lib/librte_power/Makefile -index 06cd10e86..b76ad689e 100644 ---- a/lib/librte_power/Makefile -+++ b/lib/librte_power/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_power.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -fno-strict-aliasing -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 -fno-strict-aliasing - - EXPORT_MAP := rte_power_version.map - -diff --git a/lib/librte_reorder/Makefile b/lib/librte_reorder/Makefile -index 4e44e72f0..51b5d490d 100644 ---- a/lib/librte_reorder/Makefile -+++ b/lib/librte_reorder/Makefile -@@ -34,8 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_reorder.a - --CFLAGS += -O3 --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_reorder_version.map - -diff --git a/lib/librte_ring/Makefile b/lib/librte_ring/Makefile -index 3e2f4b873..e5248a2c1 100644 ---- a/lib/librte_ring/Makefile -+++ b/lib/librte_ring/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_ring.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during paralle -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_ring_version.map - -diff --git a/lib/librte_timer/Makefile b/lib/librte_timer/Makefile -index 03a15390e..0c57cc6d3 100644 ---- a/lib/librte_timer/Makefile -+++ b/lib/librte_timer/Makefile -@@ -34,7 +34,14 @@ include $(RTE_SDK)/mk/rte.vars.mk - # library name - LIB = librte_timer.a - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during parallel -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 - - EXPORT_MAP := rte_timer_version.map - -diff --git a/lib/librte_vhost/Makefile b/lib/librte_vhost/Makefile -index 4a116fe31..ef0d86990 100644 ---- a/lib/librte_vhost/Makefile -+++ b/lib/librte_vhost/Makefile -@@ -38,7 +38,14 @@ EXPORT_MAP := rte_vhost_version.map - - LIBABIVER := 4 - --CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 -D_FILE_OFFSET_BITS=64 -+# Include the source dir first, so that headers paths are always picked -+# from there. By including it last race conditions might happen during parallel -+# builds, and headers might be already installed in RTE_OUT/include when the -+# variable is recursively expanded, thus causing GCC to sometimes use the -+# SRCDIR path and sometimes the RTE_OUT/include, making the builds not -+# reproducible. -+CFLAGS := -I$(SRCDIR) $(CFLAGS) -+CFLAGS += $(WERROR_FLAGS) -O3 -D_FILE_OFFSET_BITS=64 - CFLAGS += -I vhost_user - LDLIBS += -lpthread - --- -2.11.0 - diff --git a/debian/patches/series b/debian/patches/series index 39bccbff..8426e7dd 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,4 +4,4 @@ mk-sort-list-of-files-in-examples.dox.patch mk-sort-headers-before-wildcard-inclusion.patch mk-sort-source-files-before-passing-them-to-the-comp.patch mk-sort-object-files-when-building-deps-lists.patch -mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch +mk-install-symlinks-before-build-step.patch -- cgit 1.2.3-korg