aboutsummaryrefslogtreecommitdiff
path: root/utils/br-reproduce-build
Commit message (Collapse)AuthorAgeFilesLines
* utils/br-reproduce-build: handle reproducibility failuresGravatar Atharva Lele2019-12-261-4/+24
| | | | | | | | | | | | | | | | | | Add a condition to check if the config has BR2_REPRODUCIBLE enabled and if it does, run the build in two output directories - output-1, output-2 - and then run diffoscope on the generated images. NOTE: You should have diffoscope installed in order to test reproducibility failures. Signed-off-by: Atharva Lele <itsatharva@gmail.com> [Thomas: - Do an olddefconfig on each configuration, like is done in the non-reproducible case - Store the logs into separate log files - Exit if the build has failed instead of continuing with the call to diffoscope] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* br-reproduce-build: do olddefconfig before starting the buildGravatar Thomas Petazzoni2016-12-271-0/+1
| | | | | | | | | | | | | | | | | | | | | Since the host configuration can be different between the autobuilder slave and the machine where we try to reproduce the build failure, the set of available options might be different. Due to this, a .config that is "valid" for a given machin may have missing options for another machine. A good example is the BR2_GOOGLE_BREAKPAD_ENABLE option. Since it depends on BR2_HOST_GCC_AT_LEAST_4_8, this option will *not* be present in a .config file generated on a machine that has a host gcc older than 4.8. However, when running br-reproduce-build on a machine with a gcc newer than 4.8, the option is available, but has no value defined in the .config. To cope with this, we simply run an "olddefconfig". This means we aren't rebuilding *exactly* the same configuration, but it's the best approximation we can do. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* br-reproduce-build: fix URL of gitidGravatar Yann E. MORIN2015-04-121-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The canonical URL to the results on the autobuilder server wants the sha1 to be prefixed with the first three letters of the sha1, like so: b52/b52c54eafc2ea8814bb49850823e55d8e034d33d Currently, this is done by a redirect on the server, but it is broken, so that requests that do not conform to that scheme return empty results. See for example the difference between those two calls: wget -O OK 'http://autobuild.buildroot.org/results/b2c/b2cefd7d362c12ed99b708d11b988704778d450c/defconfig' wget -O KO 'http://autobuild.buildroot.org/results/b2cefd7d362c12ed99b708d11b988704778d450c/defconfig' So, currently, passing only the sah1 on the command line of br-reproduce would not work, because the sha1 is used as-is to construct the URL. To make it work, a user had to pass the sha1 prefixed with the first three chars. However, this is not very convenient. Fix that: - internally reconstruct the canonical URL; - still accept a prefix-sha1 on the command line (for users that got used to that behaviour). Reported-by: Fabio Porcedda <fabio.porcedda@gmail.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* br-reproduce-build: quote variablesGravatar Yann E. MORIN2015-04-121-12/+12
| | | | | | | | | Even though we do not really support building in a path that contains spaces (or other weird characters), it's still better to quote variables. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* br-reproduce-build: do a fetch instead of a pullGravatar Fabio Porcedda2015-02-221-2/+2
| | | | | | | | | The pull is not needed so use a cheaper fetch, also it will work even if the existing repository doesn't point to branches of the official repository. Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* br-reproduce-build: support repository with non standard nameGravatar Fabio Porcedda2015-02-221-1/+1
| | | | | | | | Use "buildroot" as the name of the cloned repositoy so even if the existing repository name isn't "buildroot" the script will works fine. Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* br-reproduce-build: use current directory as the default for outputsGravatar Yann E. MORIN2015-02-141-1/+1
| | | | | | | | | | | | This allows the user running something like: cd /somewhere /path/to/br-reproduce-build ID Or even have br-reproduce-build in his PATH. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* br-reproduce-build: accept BASE_GIT and OUTPUT_DIR from the envGravatar Yann E. MORIN2015-02-141-2/+2
| | | | | | | | | | Currently, when we want to set those variables, one has to edit the script, so would get a conflict on the next git-pull. Instead, allow the user to specify those variables in the environment. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Add script to help reproducing buildsGravatar Thomas Petazzoni2012-11-031-0/+66
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>