[Buildroot] [PATCH] support/download: make the svn backend more reproducible

Peter Korsgaard peter at korsgaard.com
Fri Mar 19 21:00:47 UTC 2021


>>>>> "Yann" == Yann E MORIN <yann.morin.1998 at free.fr> writes:

 > Since c043ecb20ce6 (support/download: change format of archives
 > generated from svn), the svn backend uses the generic helper to
 > create reproducible archives.

 > That helper really does its job as expected, but he svn backend
 > is flawed in two ways:

 >   - the first, most obvious breakage happens with versions older
 >     than 1.9, as they do not support the '--show-item' option
 >     for the 'info' action;

 >   - the second is more involved, in that svn will by default
 >     expand the old, legacy, deprecated, cumbersome CVS-stylw
 >     keywords, in the form of revision marks like '$Date$' in a
 >     C-style comment in a source file. These replacements are
 >     done on checkout as well as on export, and they use local
 >     settings, like the local locale and timezone.

 >     This means that two people with different settings, will get
 >     different sources when the svn-checkout or svn-export the same
 >     revision from the same tree...

 >     Needless to say that this is not very reproducible...

 > While the first is easily solved, the second is more involved.

 > We need to ensure that what source is used initially to compute
 > the hash, will also be the source that are used to check the hash.

 > There are basically two solutions:

 >  1. we ensure the same environment, by forcing the timezone and
 >     the locale to arbitrary values

 >  2. we disable keyword expansion

 > For the first solution, this still leaves the possibility that we
 > miss some environment settings that have an impact on the keyword
 > expansion. It would mean that Yann's settings be used, as he did
 > introduce the hash for the only svn-downloaded package we have,
 > avrdude, settings which are:
 >     TZ=Europe/Paris
 >     LC_TIME="en_US.UTF-8"
 >     LC_COLLATE="en_GB.UTF-8"
 >     LC_MONETARY="fr_FR.utf8"
 >     LC_NUMERIC="fr_FR.utf8"

 > The second option means that the generated archives change. That
 > means we'd have to bump the archive version for svn downloads, and
 > that we update the hashes for all the svn-downloaded packages.

 > We chose to go with the second option, because this is what reallt
 > makes more sense, rather than hard-coding arbitrary values in the
 > environment. And we also have only one svn-downloaded package,
 > avrdude.

 > And thus, we're reaching the trigger for this change: avrdude is
 > impacted by the CVS-keyword expansion issue:

 >     https://svn.savannah.gnu.org/viewvc/avrdude/trunk/avrdude/atmel-docs/EDBG/common/jquery/layout/jquery.layout.js?revision=1396&view=markup

 > which would give two different files when checked out on different
 > machines:

 >     diff -durN foo/avrdude-r1450/avrdude/atmel-docs/EDBG/common/jquery/layout/jquery.layout.js bar/avrdude-r1450/avrdude/atmel-docs/EDBG/common/jquery/layout/jquery.layout.js
 >     --- foo/avrdude-r1450/avrdude/atmel-docs/EDBG/common/jquery/layout/jquery.layout.js 2020-09-22 09:36:45.000000000 +0200
 >     +++ bar/avrdude-r1450/avrdude/atmel-docs/EDBG/common/jquery/layout/jquery.layout.js 2020-09-22 09:36:45.000000000 +0200
 >     @@ -1,6 +1,6 @@
 >      /**
 >       * @preserve jquery.layout 1.3.0 - Release Candidate 30.51
 >     - * $Date: 2015-11-02 22:13:28 +0100 (Mon, 02 Nov 2015) $
 >     + * $Date: 2015-11-02 21:13:28 +0000 (Mon, 02 Nov 2015) $
 >       * $Rev: 303005 $
 >       *
 >       * Copyright (c) 2012
 >     @@ -4718,7 +4718,7 @@

 >      /**
 >       * jquery.layout.state 1.0
 >     - * $Date: 2015-11-02 22:13:28 +0100 (Mon, 02 Nov 2015) $
 >     + * $Date: 2015-11-02 21:13:28 +0000 (Mon, 02 Nov 2015) $
 >       *
 >       * Copyright (c) 2010
 >       *   Kevin Dalman (http://allpro.net)
 >     @@ -5074,7 +5074,7 @@

 >      /**
 >       * jquery.layout.buttons 1.0
 >     - * $Date: 2015-11-02 22:13:28 +0100 (Mon, 02 Nov 2015) $
 >     + * $Date: 2015-11-02 21:13:28 +0000 (Mon, 02 Nov 2015) $
 >       *
 >       * Copyright (c) 2010
 >       *   Kevin Dalman (http://allpro.net)
 >     @@ -5356,7 +5356,7 @@

 >      /**
 >       * jquery.layout.browserZoom 1.0
 >     - * $Date: 2015-11-02 22:13:28 +0100 (Mon, 02 Nov 2015) $
 >     + * $Date: 2015-11-02 21:13:28 +0000 (Mon, 02 Nov 2015) $
 >       *
 >       * Copyright (c) 2012
 >       *   Kevin Dalman (http://allpro.net)

 > So we also update the hash for avrdude.

 > Fixes:
 >     http://autobuild.buildroot.org/results/e3b/e3b0508047f32008ebfa83c5255ec5994b6af120/ (time issue)
 >     http://autobuild.buildroot.org/results/48e/48e78e84b425e79cdb98c16ab40247a0fa7e9676/ (keyword expansion issue)

 > Reported-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
 > Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
 > Cc: Vincent Fazio <vfazio at xes-inc.com>
 > Cc: Alexander Sverdlin <alexander.sverdlin at gmail.com>

Committed to 2021.02.x, thanks.

-- 
Bye, Peter Korsgaard


More information about the buildroot mailing list