diff options
Diffstat (limited to 'debian/patches/mk-install-symlinks-before-build-step.patch')
-rw-r--r-- | debian/patches/mk-install-symlinks-before-build-step.patch | 48 |
1 files changed, 48 insertions, 0 deletions
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 <luca.boccassi@gmail.com> +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 + |