From: Luca Boccassi <luca.bocca...@gmail.com> In the past couple of years a concerted effort among almost all Linux distros has been striving toward achieving reproducible builds. [1] This involves changes to the toolchain, new tools and CI systems. [2]
v1 fixed the documentation, examples and linker script generation. v2 fixes all problems, which were caused by unstable order of headers inclusion, source files listing and object file listing when passing them to the compiler. DPDK's build, at least with the default configuration, is fully reproducible with this patch series as tested by the Reproducible Builds developers experimental toolchain. [3] v3 restores the first patch, which was eaten by git send-email. v4 drops the patch that reorders rebuilds, and adds a patch to make the inclusion of headers deterministic with regards to GCC embedding the full file path when expading __FILE__ and when writing the directory listing in the DWARF objects. It also drops the first 2 patches which have already been merged. v5 adds the -I$(SRCDIR) workaround to librte_eal linuxapp's and librte_gro's Makefiles. v6 fixes copypasta added in v5 - librte-gro's Makefile should have used $(SRCDIR) rather than $(SRCDIR)/include. [1] https://reproducible-builds.org/ [2] https://reproducible-builds.org/tools/ [3] https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain#Us Luca Boccassi (6): mk: sort list of shared objects in linker script mk: sort list of files in examples.dox mk: sort headers before wildcard inclusion mk: sort source files before passing them to the compiler mk: sort object files when building deps lists mk: set -ISCDIR before -IRTE_OUT/include in CFLAGS drivers/net/cxgbe/Makefile | 2 +- drivers/net/e1000/Makefile | 2 +- drivers/net/fm10k/Makefile | 2 +- drivers/net/i40e/Makefile | 2 +- drivers/net/ixgbe/Makefile | 2 +- drivers/net/qede/Makefile | 2 +- drivers/net/sfc/Makefile | 2 +- drivers/net/thunderx/Makefile | 2 +- examples/ip_pipeline/Makefile | 2 +- examples/multi_process/client_server_mp/mp_server/Makefile | 2 +- examples/server_node_efd/server/Makefile | 2 +- lib/librte_acl/Makefile | 10 ++++++++-- lib/librte_bitratestats/Makefile | 9 ++++++++- lib/librte_cmdline/Makefile | 9 ++++++++- lib/librte_distributor/Makefile | 10 ++++++++-- lib/librte_eal/common/Makefile | 2 +- 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 ++++++++- mk/rte.app.mk | 4 ++-- mk/rte.combinedlib.mk | 2 +- mk/rte.hostapp.mk | 4 ++-- mk/rte.sdkdoc.mk | 2 +- mk/rte.shared.mk | 4 ++-- 41 files changed, 211 insertions(+), 53 deletions(-) -- 2.11.0