[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