Thread (23 messages) flat view 23 messages, 4 authors, 2017-10-12

Re: [PATCH v7 0/6] Reproducible build

From: Luca Boccassi <hidden>
Date: 2017-09-05 21:15:31

On Tue, 2017-09-05 at 14:00 -0700, Stephen Hemminger wrote:
On Tue,  5 Sep 2017 21:51:53 +0100
luca.boccassi@gmail.com wrote:
quoted
From: Luca Boccassi <redacted>

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.

v7 dropped the big patch to change the CFLAGS in all libraries
Makefiles
and instead uses a much simpler approach suggested by Ferruh
(thanks!),
which consists in installing the library public headers symlinks
before
building. Although the drawback is that the DWARF directory listing
will always include the user configured build output directory, it
is
a much smaller patch that will be rendered obsolete by the move to
Meson
anyway.

[1] https://reproducible-builds.org/
[2] https://reproducible-builds.org/tools/
[3] https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchai
n#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: install symlinks before build step

 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_eal/common/Makefile                             | 2 +-
 mk/rte.app.mk                                              | 4 ++-
-
 mk/rte.combinedlib.mk                                      | 2 +-
 mk/rte.hostapp.mk                                          | 4 ++-
-
 mk/rte.lib.mk                                              | 7
++++++-
 mk/rte.sdkdoc.mk                                           | 2 +-
 mk/rte.shared.mk                                           | 4 ++-
-
 18 files changed, 26 insertions(+), 21 deletions(-)
How does this interact with propose new build process.
Hate to have do everything twice.
Most of these patches, mainly for the custom bits that discover the
source/headers files on the system (all the wildcards, etc) will not be
necessary any longer.

The documentation build is not there yet in the patchset, so I'll check
once that's available.

But I'm still testing the Meson patches, I had issues integrating it in
the package builds as Meson support is still quite new in debhelper, I
hope to finish that up next week and give feedback to Bruce.

The reproducible build testing infra I've got is picky and eats only
deb packages so until I get that up and running I cannot test the
reproducibility using Meson unfortunately.

-- 
Kind regards,
Luca Boccassi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help