[GRASS-dev] [GRASS GIS] #3042: Patches to make the build reproducible (fileordering, randomness)
GRASS GIS
trac at osgeo.org
Mon May 23 15:02:38 PDT 2016
#3042: Patches to make the build reproducible (fileordering, randomness)
----------------------+-------------------------
Reporter: sebastic | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.0.5
Component: Default | Version: 7.0.4
Keywords: | CPU: Unspecified
Platform: Linux |
----------------------+-------------------------
As reported by Alexis Bienvenüe in [https://bugs.debian.org/825092 Debian
Bug #825092]:
> While working on the “[https://wiki.debian.org/ReproducibleBuilds
reproducible builds]” effort, we have noticed that 'grass' could not be
built reproducibly.
>
> There are several reproducibility issues:
>
> 1) File ordering issues - the build result depends on the order of the
files listed with `readdir` or equivalent.
>
> * in `tools/build_modules_xml.py` - see patch `01-sort-build-modules-
list.patch`
>
> * in `lib/db/dbmi_base/dbmscap.c` (this affects options order in the
`html/db.*.html` files) - see patch `02-sort-dbmscap.patch` that builds an
ordered list.
>
> * in `include/Make/Vars.make` (this affects the order in which object
files are merged) - see patch `03-sort-obj-files.patch`
>
> 2) Randomness issue: html/colortables/random.png is built using a
pseudo-random generator seeded with build-time value. See patch `04
-srand48_auto-from-SOURCE_DATE_EPOCH.patch` that uses the [https
://reproducible-builds.org/specs/source-date-epoch/ SOURCE_DATE_EPOCH]
environment variable (when set) to set a seed from last `debian/changelog`
entry date.
>
> 3) Makefile mistake: from
https://buildd.debian.org/status/fetch.php?pkg=grass&arch=i386&ver=7.0.4-1&stamp=1462121195,
it seems to me that the binary NAD files are not installed properly:
> {{{
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/prvi
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/hawaii
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/alaska
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stgeorge
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/FL
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/WO
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/TN
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stlrnc
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/stpaul
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/conus
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/MD
> /usr/bin/install -c -m 644 OBJ.i686-pc-linux-gnu/prvi
> /«PKGBUILDDIR»/dist.i686-pc-linux-gnu/etc/proj/nad/WI
> }}}
> The single `OBJ.i686-pc-linux-gnu/prvi` file is here installed to *all*
`/etc/proj/nad` files.
> See the patch `05-binary-nad-install.patch` for a fix.
>
> 4) nad2bin issue: nad2bin has unreproducible output (see Debian Bug
#825088)
>
> Once these proposed patches are applied (and Debian Bug #825088 fixed),
grass can be built reproducibly in our current experimental framework.
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3042>
GRASS GIS <https://grass.osgeo.org>
More information about the grass-dev
mailing list