summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2019-12-08 14:58:42 -0500
committerLevente Polyak <anthraxx@archlinux.org>2020-02-27 14:49:48 +0100
commit53fe5c67a121a993666dfbef98eaba1c27a882c8 (patch)
tree0374d292e23945d8ee3748e4cf0cdafd37a5c5c3
parent21d9984acc29c14eaa8cad3a611c9271d60af39c (diff)
downloaddevtools32-53fe5c67a121a993666dfbef98eaba1c27a882c8.tar.xz
makerepropkg: add support to check unreproducible packages using diffoscope
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
-rw-r--r--doc/makerepropkg.1.asciidoc3
-rwxr-xr-xmakerepropkg.in14
2 files changed, 14 insertions, 3 deletions
diff --git a/doc/makerepropkg.1.asciidoc b/doc/makerepropkg.1.asciidoc
index 7d68e5e..301b73e 100644
--- a/doc/makerepropkg.1.asciidoc
+++ b/doc/makerepropkg.1.asciidoc
@@ -26,6 +26,9 @@ link:https://reproducible-builds.org/[Reproducible Builds] project.
Options
-------
+*-d*::
+ If packages are not reproducible, compare them using diffoscope.
+
*-c*::
Set the pacman cache directory.
diff --git a/makerepropkg.in b/makerepropkg.in
index 6b2e3eb..674f624 100755
--- a/makerepropkg.in
+++ b/makerepropkg.in
@@ -29,6 +29,7 @@ declare -a buildenv buildopts installed installpkgs
archiveurl='https://archive.archlinux.org/packages'
buildroot=/var/lib/archbuild/reproducible
chroot=testenv
+diffoscope=0
parse_buildinfo() {
local line var val
@@ -94,14 +95,16 @@ package, including the .PKGINFO as well as the buildinfo.
For more details see https://reproducible-builds.org/
OPTIONS
+ -d Run diffoscope if the package is unreproducible
-c <dir> Set pacman cache
-M <file> Location of a makepkg config file
-h Show this usage message
__EOF__
}
-while getopts 'M:c:h' arg; do
+while getopts 'dM:c:h' arg; do
case "$arg" in
+ d) diffoscope=1 ;;
M) archroot_args+=(-M "$OPTARG") ;;
c) cache_dirs+=("$OPTARG") ;;
h) usage; exit 0 ;;
@@ -177,12 +180,17 @@ arch-nspawn "${buildroot}/${chroot}" \
if (( $? == 0 )); then
msg2 "built succeeded! built packages can be found in ${buildroot}/${chroot}/pkgdest"
msg "comparing artifacts..."
- if cmp -s "${pkgfile}" "${buildroot}/${chroot}/pkgdest/${pkgfile##*/}"; then
+
+ comparefiles=("${pkgfile}" "${buildroot}/${chroot}/pkgdest/${pkgfile##*/}")
+ if cmp -s "${comparefiles[@]}"; then
msg2 "Package successfully reproduced!"
exit 0
else
warning "Package is not reproducible. :("
- sha256sum "${pkgfile}" "${buildroot}/${chroot}/pkgdest/${pkgfile##*/}"
+ sha256sum "${comparefiles[@]}"
+ if (( diffoscope )); then
+ diffoscope "${comparefiles[@]}"
+ fi
fi
fi