From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by dpdk.org (Postfix) with ESMTP id 475A81B32F for ; Thu, 12 Oct 2017 15:16:15 +0200 (CEST) Received: by mail-wm0-f47.google.com with SMTP id q124so13135329wmb.0 for ; Thu, 12 Oct 2017 06:16:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CME176dcPTEGvXWdYc1jzfAVCfSlGAJ3FW+/391Q+qI=; b=fUAXNWK2fRgC1h7YiRgds+MdDgkCo+Aez911DmyHgHVFsjwY7qTM+PEtsuLnOr9bt9 4GYQ0Ipp0h3xXHO3zEG+pJ4MHF/ERNXXxQEUCqCxt6gtt1l0pJiS3yK2myMA3RE43LLD FzYU+IRm5PZeDuFd2d5mYyPeUF4XNjD7c9GwkBHyqY/+GX7UiwthTROzZesNBbFqfQ1z VjX2NWIBZfMhhU7ENuvlBo76r3gFz26i0ZtxLc+SlcFLiVu8LfLVowj9F7sW4lblxZSS FKlUK1+/lz86jkLvqLrYexaFCcxuwg4yjl/w6cueimfnpVpUcwOKNLVqxElPeWAqpGpj 5VDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=CME176dcPTEGvXWdYc1jzfAVCfSlGAJ3FW+/391Q+qI=; b=kpZIdwbqzwX6H2gdLR0y0S+AAji+9PNNva3Qx5O0SOEyLnz3IjMjyOAhElxWU2qzVV TBjCnIxG49A1jecJscU6Lnjlx8lwvQx7rAymXcuBHZTVKj9nec4vpm27Rb448yxYsg6l dzkmxBwFx1H3pc02npudu1Ag1QbZyW/fkr6wnonZWdcOgJ5EAM0cwfwcxJtaDtnmxKot PSlRlYYVWS+TLwPPitQ4bnumGS5OUVe8DbDUFLxlj5O+ph1VAfWLVMsuZipeudfBOh9O Qewu7AzJ2mwaDeFb14RTzz+Fgp/Qf+t+mAXdncFvG4r2TuuERQz/fmCi0r5yS9qm9JdO Tm2w== X-Gm-Message-State: AMCzsaUztYjoEUnga1hUUACpsuLrPqrZV1T5Oiw28SbRf92PMzp7Qesw kIwqsr19IBF48CJ6tOpClTAGikAO X-Google-Smtp-Source: AOwi7QAXKcZhDz+HfivW8mX/PrPdFtsEK/0bvHx39mg1A39+Wzc0Zxlx7IvIsI0Aj69X+IOF/XxDPQ== X-Received: by 10.80.179.120 with SMTP id r53mr2966247edd.174.1507814174440; Thu, 12 Oct 2017 06:16:14 -0700 (PDT) Received: from localhost ([213.251.34.151]) by smtp.gmail.com with ESMTPSA id s26sm10413980eds.68.2017.10.12.06.16.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 12 Oct 2017 06:16:13 -0700 (PDT) From: luca.boccassi@gmail.com To: dev@dpdk.org Cc: ferruh.yigit@intel.com, thomas@monjalon.net Date: Thu, 12 Oct 2017 14:15:48 +0100 Message-Id: <20171012131554.1533-1-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170905205159.8606-1-luca.boccassi@gmail.com> References: <20170905205159.8606-1-luca.boccassi@gmail.com> Subject: [dpdk-dev] [PATCH v8 0/6] Reproducible build X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Oct 2017 13:16:15 -0000 From: Luca Boccassi 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. v8 fixes a missing dependency problem in rte.lib.mk from the build target to the _preinstall target, which could have caused race conditions in parallel builds. Spotted by Thomas. Thanks! 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 | 8 +++++++- mk/rte.sdkdoc.mk | 2 +- mk/rte.shared.mk | 4 ++-- 18 files changed, 27 insertions(+), 21 deletions(-) -- 2.11.0