From 0a1d33da0b68b237e55ec0216133f0951aa16d91 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Thu, 22 Jun 2017 15:40:17 +0100 Subject: [PATCH] Backport patches to fix reproducibility issues These patches make the documentation and linker script generation fully reproducible. Change-Id: Iec5a3578d54f810edd0a0bf1551cacf394e4af32 Signed-off-by: Luca Boccassi --- ...-excluding-.doctrees-when-installing-docs.patch | 30 ++++++++++++++++++ .../mk-sort-list-of-files-in-examples.dox.patch | 31 +++++++++++++++++++ ...t-list-of-shared-objects-in-linker-script.patch | 32 +++++++++++++++++++ ...ake-silent-flag-to-print-HTML-doc-version.patch | 36 ++++++++++++++++++++++ debian/patches/series | 4 +++ 5 files changed, 133 insertions(+) create mode 100644 debian/patches/mk-fix-excluding-.doctrees-when-installing-docs.patch create mode 100644 debian/patches/mk-sort-list-of-files-in-examples.dox.patch create mode 100644 debian/patches/mk-sort-list-of-shared-objects-in-linker-script.patch create mode 100644 debian/patches/mk-use-make-silent-flag-to-print-HTML-doc-version.patch diff --git a/debian/patches/mk-fix-excluding-.doctrees-when-installing-docs.patch b/debian/patches/mk-fix-excluding-.doctrees-when-installing-docs.patch new file mode 100644 index 00000000..b658d263 --- /dev/null +++ b/debian/patches/mk-fix-excluding-.doctrees-when-installing-docs.patch @@ -0,0 +1,30 @@ +Description: mk: fix excluding .doctrees when installing docs + +The --exclude parameter must be passed before the input directory to +tar, otherwise it's silently ignored and the .doctrees directory is +installed by make install-doc. + +Origin: http://dpdk.org/dev/patchwork/patch/25632/ +Forwarded: yes +Author: Luca Boccassi +Last-Update: 2017-06-22 +--- + mk/rte.sdkinstall.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk +index dbac2a277..4e97feff9 100644 +--- a/mk/rte.sdkinstall.mk ++++ b/mk/rte.sdkinstall.mk +@@ -162,7 +162,7 @@ install-sdk: + install-doc: + ifneq ($(wildcard $O/doc/html),) + $(Q)$(call rte_mkdir, $(DESTDIR)$(docdir)) +- $(Q)tar -cf - -C $O/doc html --exclude 'html/guides/.*' | \ ++ $(Q)tar -cf - -C $O/doc --exclude 'html/guides/.*' html | \ + tar -xf - -C $(DESTDIR)$(docdir) --strip-components=1 \ + --keep-newer-files + endif +-- +2.11.0 + diff --git a/debian/patches/mk-sort-list-of-files-in-examples.dox.patch b/debian/patches/mk-sort-list-of-files-in-examples.dox.patch new file mode 100644 index 00000000..afe1b199 --- /dev/null +++ b/debian/patches/mk-sort-list-of-files-in-examples.dox.patch @@ -0,0 +1,31 @@ +Description: mk: sort list of files in examples.dox + +The result of find might not be stable depending on external +conditions. +Pipe it through LC_ALL=C sort to ensure reproducible results when +generating examples.dox. + +Origin: http://dpdk.org/dev/patchwork/patch/25634/ +Forwarded: yes +Author: Luca Boccassi +Last-Update: 2017-06-22 +--- + mk/rte.sdkdoc.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk +index c0eaa3502..de31b78cf 100644 +--- a/mk/rte.sdkdoc.mk ++++ b/mk/rte.sdkdoc.mk +@@ -93,7 +93,7 @@ $(API_EXAMPLES): api-html-clean + $(Q)mkdir -p $(@D) + @printf '/**\n' > $(API_EXAMPLES) + @printf '@page examples DPDK Example Programs\n\n' >> $(API_EXAMPLES) +- @find examples -type f -name '*.c' -printf '@example %p\n' >> $(API_EXAMPLES) ++ @find examples -type f -name '*.c' -printf '@example %p\n' | LC_ALL=C sort >> $(API_EXAMPLES) + @printf '*/\n' >> $(API_EXAMPLES) + + guides-pdf-clean: guides-pdf-img-clean +-- +2.11.0 + diff --git a/debian/patches/mk-sort-list-of-shared-objects-in-linker-script.patch b/debian/patches/mk-sort-list-of-shared-objects-in-linker-script.patch new file mode 100644 index 00000000..52e6b5a5 --- /dev/null +++ b/debian/patches/mk-sort-list-of-shared-objects-in-linker-script.patch @@ -0,0 +1,32 @@ +Description: mk: sort list of shared objects in linker script + +The output of wildcard might not be stable and depend on the +filesystem and other factors. +This means the content libdpdk.so linker script might change between +builds from the same sources. +Run the list through sort to ensure reproducibility. + +Origin: http://dpdk.org/dev/patchwork/patch/25633/ +Forwarded: yes +Author: Luca Boccassi +Last-Update: 2017-06-22 +--- + mk/rte.combinedlib.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mk/rte.combinedlib.mk b/mk/rte.combinedlib.mk +index 449358b33..2ab7ee8a1 100644 +--- a/mk/rte.combinedlib.mk ++++ b/mk/rte.combinedlib.mk +@@ -42,7 +42,7 @@ endif + RTE_LIBNAME := dpdk + COMBINEDLIB := lib$(RTE_LIBNAME)$(EXT) + +-LIBS := $(filter-out $(COMBINEDLIB), $(notdir $(wildcard $(RTE_OUTPUT)/lib/*$(EXT)))) ++LIBS := $(filter-out $(COMBINEDLIB), $(sort $(notdir $(wildcard $(RTE_OUTPUT)/lib/*$(EXT))))) + + all: FORCE + $(Q)echo "GROUP ( $(LIBS) )" > $(RTE_OUTPUT)/lib/$(COMBINEDLIB) +-- +2.11.0 + diff --git a/debian/patches/mk-use-make-silent-flag-to-print-HTML-doc-version.patch b/debian/patches/mk-use-make-silent-flag-to-print-HTML-doc-version.patch new file mode 100644 index 00000000..14a86886 --- /dev/null +++ b/debian/patches/mk-use-make-silent-flag-to-print-HTML-doc-version.patch @@ -0,0 +1,36 @@ +Description: mk: use make silent flag to print HTML doc version + +Depending on the environment, make might echo the command being ran. +In mk/rte.sdkdoc.mk make is used to print the DPDK version to be +piped to doxygen. This causes the following to be written: + +
DPDK + /usr/bin/make-f/build/dpdk-jYjqnr/dpdk-16.11.2/mk/rte.sdkconfig.mkshowversion +
+ +Use -s (--silent) to prevent echoing. + +Origin: http://dpdk.org/dev/patchwork/patch/25631/ +Forwarded: yes +Author: Luca Boccassi +Last-Update: 2017-06-22 +--- + mk/rte.sdkdoc.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mk/rte.sdkdoc.mk b/mk/rte.sdkdoc.mk +index fb8f91555..c0eaa3502 100644 +--- a/mk/rte.sdkdoc.mk ++++ b/mk/rte.sdkdoc.mk +@@ -73,7 +73,7 @@ api-html: $(API_EXAMPLES) + $(Q)mkdir -p $(RTE_OUTPUT)/doc/html + $(Q)(cat $(RTE_SDK)/doc/api/doxy-api.conf && \ + printf 'PROJECT_NUMBER = ' && \ +- $(MAKE) -rR showversion && \ ++ $(MAKE) -rRs showversion && \ + echo INPUT += $(API_EXAMPLES) && \ + echo OUTPUT_DIRECTORY = $(RTE_OUTPUT)/doc && \ + echo HTML_OUTPUT = html/api && \ +-- +2.11.0 + diff --git a/debian/patches/series b/debian/patches/series index ed0b6e94..78e2ae16 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,6 @@ fix-vhost-user-socket-permission.patch fix-power-default-config.patch +mk-use-make-silent-flag-to-print-HTML-doc-version.patch +mk-fix-excluding-.doctrees-when-installing-docs.patch +mk-sort-list-of-shared-objects-in-linker-script.patch +mk-sort-list-of-files-in-examples.dox.patch -- 2.16.6