[OpenWrt-Devel] Progress on Reproducible Builds

bnewbold at robocracy.org bnewbold at robocracy.org
Thu Oct 22 18:44:59 EDT 2015


Hello!

I have been making some progress towards reproducible (aka, deterministic) 
builds of OpenWRT packages and "images" (target artifacts). Some emails 
from earlier this year on the topic were:

   https://lists.openwrt.org/pipermail/openwrt-devel/2015-June/033667.html
   https://www.mail-archive.com/openwrt-devel@lists.openwrt.org/msg32534.html

I have some patches to the OpenWRT build system and a small number of core 
packages (host and target), and am writing now to ask how best to start 
submitting them. I could:

1. Submit all patches now as-is (following OpenWRT conventions)
2. Wait until the work reaches a milestone (eg, most image artifacts are
    reproducible) and submit then
3. Upstream patches to other projects first (busybox and squashfs-tools)
4. Or something else

The patches can be browsed online here:

   https://github.com/bnewbold/openwrt-repro/compare/master...repro

There are some changes to OpenWRT's build makefiles and scripts; patches 
to host tools; and patches to core target packages.

Current progress can be checked between build results from these patches:

   http://repro.bnewbold.the-nsa.org/openwrt-results/

vs. those generated by the debian reproducible builds project directly 
from openwrt.git:

   https://reproducible.debian.net/openwrt/openwrt.html

The oprofile and gdb packages don't reproduce due to simple __DATE__ 
timestamps; I assume these don't get built in to most release images so I 
haven't prioritized them. There are still issues with squashfs generation 
and I haven't touched ext4 filesystem generation yet. Also, I assume more 
issues will crop up if changes to building username/uid, hostname, and 
(UTC) date are incorporated into the build process.

I think a valuable milestone will be the ability for independent parties 
to reproduce all the .ipkg, kernel, rootfs, and image files for a given 
architecture, given the release tag (for the openwrt repo and any package 
feeds) and the "config.diff" file included in releases on 
http://downloads.openwrt.org/. It would be helpful if exact source 
checksums (eg, git commits if git was used) and perhaps basic build system 
metadata (eg, build system architecture, host GCC version numbers) were 
somehow included in a metadata file in the release directories. I'm unsure 
how helpful or important it would be to have the SDK or Image Builders 
either be reproducible themselves or to generate reproducible artifacts.

--bryan
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list