id summary reporter owner description type status priority milestone component version resolution keywords cc cpu platform 3042 Patches to make the build reproducible (fileordering, randomness) Bas Couwenberg grass-dev@… "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." defect closed critical 7.0.5 Compiling 7.0.4 fixed Unspecified Linux