aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/mk-install-symlinks-before-build-step.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/mk-install-symlinks-before-build-step.patch')
-rw-r--r--debian/patches/mk-install-symlinks-before-build-step.patch48
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
+