diff options
Diffstat (limited to 'debian/patches/mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch')
-rw-r--r-- | debian/patches/mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch | 388 |
1 files changed, 388 insertions, 0 deletions
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 new file mode 100644 index 00000000..4312f384 --- /dev/null +++ b/debian/patches/mk-order-CFLAGS-so-that-ISCDIR-comes-before-IRTE_OUT.patch @@ -0,0 +1,388 @@ +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/27512/ +Forwarded: yes +Author: Luca Boccassi <luca.boccassi@gmail.com> +Last-Update: 2017-08-10 +--- + 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_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 ++++++++- + 22 files changed, 173 insertions(+), 32 deletions(-) + +--- 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 + +--- 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 + +--- 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 + +--- a/lib/librte_eal/linuxapp/eal/Makefile ++++ b/lib/librte_eal/linuxapp/eal/Makefile +@@ -41,7 +41,13 @@ LIBABIVER := 3 + + 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 +--- 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 + +--- 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 + +--- 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 + +--- 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 + +--- 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 + +--- 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 + +--- 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 + +--- 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 + +--- 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 +--- 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 +--- 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 + +--- 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 + +--- 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 + +--- 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 + +--- a/lib/librte_vhost/Makefile ++++ b/lib/librte_vhost/Makefile +@@ -38,7 +38,14 @@ EXPORT_MAP := rte_vhost_version.map + + LIBABIVER := 3 + +-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 + |