All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v5 00/19] Reproducible builds
Date: Sat, 18 Mar 2017 17:33:58 +0100	[thread overview]
Message-ID: <f9e5897e-0548-2229-4171-4653012c2afb@mind.be> (raw)
In-Reply-To: <12851589.XERjbWNCZC@sagittae>



On 21-02-17 09:17, J?r?me Pouiller wrote:
> Hello, 
> 
> On Tuesday 20 December 2016 14:46:17 CET J?r?me Pouiller wrote:
> [...]
>> Patches 11 to 19 are nearly a series in the series. Until now, most of binaries
>> installed by libtool was configured with RPATH pointingto their build
>> directory. Indeed, libtool add this path during compilation in order to be able
>> to execute them directly from build directory. This path should normally
>> removed during install, but Buildroot disable this behavior (patch 15). Simply
>> re-enabling this behavior does not work. Indeed, during relink, libtool try to
>> use .la that are not yet patched and fail to find libraries. On another side,
>> libtool support usage of a sysroot since v1.5. To enable this support, we have
>> to keep original values from .la file (patch 12 and 13) and inform libtool we
>> are using a sysroot (patch 11).
>>
>> Patch 14 fix a small incompatibility with unsafe path detection.
>>
>> Since libtool is now correctly used, it is not more necessary to disable
>> install directory sanity check (patch 17).
>>
>> From libtool point of view, sysroot is not reachable from $(TARGET_DIR). So,
>> during installation to $(TARGET_DIR), it add an entry in RPATH that point to
>> $(STAGING_DIR). To fix this problem, we just have to inform libtool that
>> $(STAGING_DIR) is reachable (patch 16).
>>
>> Finally, I also clean up libtool infra from modification that seems useless now
>> (patches 18 and 19).
>>
>> I tested this series using internal toolchain and Linaro toolchain with these
>> packages:
>>
>>     BR2_INIT_SYSTEMD=y       (install public libraries in /usr/lib/systemd)
>>     BR2_PACKAGE_LIBCDAUDIO=y (libtool 1.5)
>>     BR2_PACKAGE_LIBLO=y      (libtool 2.2)
>>     BR2_PACKAGE_MADPLAY=y    (unpatched libtool)
>>     BR2_PACKAGE_ALSA_LIB=y   (optional dependency to Madplay)
>>     BR2_PACKAGE_PYTHON=y
>>     BR2_PACKAGE_PYTHON_PY_PYC=y
>>     BR2_PACKAGE_GNUPG2=y
>>
>> Except patches 12 and 13, I think whole series is bisectable.
> [...]
> 
> As I said above, patches 11 to 19 of this series do a strong clean up
> of libtool infrastructure. I think these patches are important for two
> reasons:
> 
>    1. It is the best way to support reproducible build from different
>       build paths
>    2. Currently BR usage of libtool is not standard. These patches use
>       libtool in the right way. It drop unnecessary RPATH from binaries.
>       It drop most of patches applied to libtool.
> 
> However, this series do very intrusive changes and it is difficult to
> review. Consequently, I think it is necessary to apply them very early
> in a development cycle. So, I suggest to apply them to 'next' now.

 Yes, it's time to apply the libtool patches. I have a few spelling corrections
for the commit messages lined up but nothing more, and I'm waiting for a test
build to finish to give my Ack.

 However, I wonder, wouldn't it be a good idea to change our approach? Instead
of patching the ltmain files, why don't we just overwrite them with our own
host-libtool?

 Hm, host-libtool depends on host-m4, so that adds (on my machine) 50 seconds to
the build whenever an autotools package is included... Possibly not acceptable.
We could still take that approach for the case when AUTORECONF=YES, however. But
then again, that would break the symmetry we have now...

 Regards,
 Arnout

-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

      reply	other threads:[~2017-03-18 16:33 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-20 13:46 [Buildroot] [PATCH v5 00/19] Reproducible builds Jérôme Pouiller
2016-12-20 13:46 ` [Buildroot] [PATCH v5 01/19] reproducible: fix DATE/TIME macros in toolchain-wrapper Jérôme Pouiller
2017-02-07 14:32   ` Samuel Martin
2017-02-07 20:41   ` Peter Korsgaard
2017-02-08 10:07     ` Jérôme Pouiller
2017-02-08 12:18       ` Peter Korsgaard
2017-02-08 12:20       ` Thomas Petazzoni
2017-02-08 13:46         ` Peter Korsgaard
2017-02-08 14:11           ` Jérôme Pouiller
2017-02-08 14:29             ` Peter Korsgaard
2017-02-08 14:31               ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 02/19] fakedate: new package Jérôme Pouiller
2017-02-07 14:32   ` Samuel Martin
2017-02-07 20:49   ` Peter Korsgaard
2017-02-08 14:10     ` Jérôme Pouiller
2017-02-07 21:31   ` Peter Korsgaard
2016-12-20 13:46 ` [Buildroot] [PATCH v5 03/19] core: do not reset DEPENDENCIES_HOST_PREREQ in dependencies.mk Jérôme Pouiller
2017-01-28  7:35   ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 04/19] reproducible: enable fakedate Jérôme Pouiller
2017-02-07 14:32   ` Samuel Martin
2017-02-07 22:01   ` Peter Korsgaard
2016-12-20 13:46 ` [Buildroot] [PATCH v5 05/19] pycompile: allow to force compilation Jérôme Pouiller
2017-02-07 14:51   ` Samuel Martin
2017-03-20 22:29   ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 06/19] python2: generate reproducible .pyc Jérôme Pouiller
2017-02-07 14:51   ` Samuel Martin
2017-03-20 22:30   ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 07/19] python3: " Jérôme Pouiller
2017-02-07 14:51   ` Samuel Martin
2017-03-20 22:31   ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 08/19] reproducible: try to detect most common errors Jérôme Pouiller
2017-02-07 14:52   ` Samuel Martin
2017-04-01 14:50   ` Thomas Petazzoni
2017-04-01 21:13     ` Yann E. MORIN
2017-04-01 21:48       ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 09/19] python2: remove full path from .pyc Jérôme Pouiller
2017-02-07 14:52   ` Samuel Martin
2017-04-01 16:37   ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 10/19] python3: " Jérôme Pouiller
2017-02-07 14:52   ` Samuel Martin
2017-04-01 16:37   ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 11/19] infra-libtool: pass sysroot information to libtool Jérôme Pouiller
2017-03-18 17:21   ` Arnout Vandecappelle
2017-03-20 21:52   ` Thomas Petazzoni
2017-03-21 23:57     ` Arnout Vandecappelle
2017-03-22  8:14       ` Thomas Petazzoni
2017-03-22  9:07         ` Arnout Vandecappelle
2017-03-22  9:20         ` Jérôme Pouiller
2017-03-22 10:05           ` Arnout Vandecappelle
2017-03-22 21:28             ` Arnout Vandecappelle
2017-03-22 21:40               ` Thomas Petazzoni
2017-04-01 16:39     ` Thomas Petazzoni
2016-12-20 13:46 ` [Buildroot] [PATCH v5 12/19] infra-libtool: no longer prepend STAGING_DIR to libdir Jérôme Pouiller
2017-03-18 15:37   ` Arnout Vandecappelle
2017-03-22 10:21     ` Jérôme Pouiller
2017-03-22 11:19       ` Arnout Vandecappelle
2017-03-18 17:22   ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 13/19] infra-libtool: correctly prefix $libdir with $STAGING_DIR Jérôme Pouiller
2017-03-18 17:24   ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 14/19] infra-libtool: drop original $libdir (i.e. /usr/lib) from library paths Jérôme Pouiller
2017-03-18 17:31   ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 15/19] infra-libtool: relink binaries on install Jérôme Pouiller
2017-03-18 17:36   ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 16/19] infra-libtool: inform libtool that STAGING_DIR is reachable at runtime Jérôme Pouiller
2017-02-07 15:26   ` Samuel Martin
2017-03-18 17:39   ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 17/19] infra-libtool: no longer disable install directory sanity check Jérôme Pouiller
2017-03-18 17:41   ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 18/19] infra-libtool: remove workaround for calls without `--tag' Jérôme Pouiller
2017-03-18 17:45   ` Arnout Vandecappelle
2016-12-20 13:46 ` [Buildroot] [PATCH v5 19/19] infra-libtool: no longer force sys_lib_search_path Jérôme Pouiller
2017-03-18 17:47   ` Arnout Vandecappelle
2017-02-21  8:17 ` [Buildroot] [PATCH v5 00/19] Reproducible builds Jérôme Pouiller
2017-03-18 16:33   ` Arnout Vandecappelle [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f9e5897e-0548-2229-4171-4653012c2afb@mind.be \
    --to=arnout@mind.be \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.