#!/bin/bash
# Copyright 2015 Holger Levsen
# released under the GPLv=2
DEBUG=false
. /srv/jenkins/bin/common-functions.sh
common_init "$@"
# common code defining db access
. /srv/jenkins/bin/reproducible_common.sh
SUITE="unstable" # for links in page
ARCH="amd64" # same
VIEW=repositories
PAGE=index_${VIEW}.html
TMPFILE=$(mktemp)
TMP2FILE=$(mktemp)
MODIFIED_IN_SID=0
echo "$(date) - starting to write $PAGE page."
write_page_header $VIEW "Comparison between the reproducible builds apt repository and regular Debian suites"
write_page "These source packages are different from unstable in our apt repository on alioth. They are available for testing using these sources.lists entries:
"
write_page "deb http://reproducible.alioth.debian.org/debian/ ./"
write_page "deb-src http://reproducible.alioth.debian.org/debian/ ./"
write_page "
"
write_page "package | git repo | PTS link | usertagged bug | old versions in our repo (needed for reproducing old builds) | version in our repo | version in 'testing' | version in 'unstable' | version in 'experimental' |
"
curl http://reproducible.alioth.debian.org/debian/Sources > $TMPFILE
SOURCES=$(grep-dctrl -n -s Package -r -FPackage . $TMPFILE | sort -u)
for PKG in $SOURCES ; do
echo "Processing $PKG..."
if [ "${PKG:0:3}" = "lib" ] ; then
PREFIX=${PKG:0:4}
else
PREFIX=${PKG:0:1}
fi
VERSIONS=$(grep-dctrl -n -s version -S $PKG $TMPFILE|sort -u)
CRUFT=""
BET=""
OBSOLETE_IN_SID=false
OBSOLETE_IN_TESTING=false
#
# gather versions of a package
#
for VERSION in ${VERSIONS} ; do
if [ "$BET" = "" ] ; then
BET=${VERSION}
continue
elif dpkg --compare-versions "$BET" lt "${VERSION}" ; then
BET=${VERSION}
fi
done
SID=$(rmadison -s unstable $PKG | cut -d "|" -f2|xargs echo)
for VERSION in ${VERSIONS} ; do
if [ "${VERSION}" != "$BET" ] ; then
CRUFT="$CRUFT ${VERSION}"
fi
done
TESTING=$(rmadison -s testing $PKG | cut -d "|" -f2|xargs echo)
EXPERIMENTAL=$(rmadison -s experimental $PKG | cut -d "|" -f2|xargs echo)
#
# format output
#
CSID=""
CTEST=""
CEXP=""
if [ ! -z "$TESTING" ] ; then
for i in $TESTING ; do
if dpkg --compare-versions "$i" gt "$BET" ; then
CTEST="$CTEST$i
"
OBSOLETE_IN_TESTING=true
else
CTEST="$CTEST$i
"
fi
done
fi
if [ ! -z "$EXPERIMENTAL" ] ; then
for i in $EXPERIMENTAL ; do
if dpkg --compare-versions "$i" gt "$BET" ; then
CEXP="$CEXP$i
"
else
CEXP="$CEXP$i
"
fi
done
fi
for i in $SID ; do
if dpkg --compare-versions "$i" gt "$BET" ; then
CSID="$CSID$i
"
if [ ! -z "$BET" ] ; then
CRUFT="$BET $CRUFT"
BET=""
OBSOLETE_IN_SID=true
fi
else
CSID="$CSID$i
"
fi
done
if [ ! -z "$BET" ] ; then
BET="$BET"
else
BET=" "
fi
if [ ! -z "$CRUFT" ] ; then
CRUFT="$(echo $CRUFT|sed 's# #
#g')"
fi
#
# write output
#
write_page "src:$PKG | "
write_page " "
case $PKG in
strip-nondeterminism)
URL="http://anonscm.debian.org/cgit/reproducible/$PKG.git" ;;
*)
URL="http://anonscm.debian.org/cgit/reproducible/$PKG.git/?h=pu/reproducible_builds" ;;
esac
curl $URL > $TMP2FILE
if [ "$(grep "'error'>No repositories found" $TMP2FILE 2>/dev/null)" ] ; then
write_page "$URL (no git repository found)"
elif [ "$(grep "'error'>Invalid branch" $TMP2FILE 2>/dev/null)" ] ; then
URL="http://anonscm.debian.org/cgit/reproducible/$PKG.git/?h=merged/reproducible_builds"
curl $URL > $TMP2FILE
if [ "$(grep "'error'>Invalid branch" $TMP2FILE 2>/dev/null)" ] ; then
write_page "$PKG.git non-standard branch"
if $OBSOLETE_IN_SID ; then
write_page " (probably ok)"
fi
else
write_page "$PKG.git"
write_page " (merged"
if $OBSOLETE_IN_TESTING ; then
write_page "and available in testing and unstable)"
else
write_page "and available in unstable)"
fi
fi
else
write_page "$PKG.git"
if $OBSOLETE_IN_SID ; then
write_page " (unused?)"
else
let "MODIFIED_IN_SID+=1"
fi
fi
write_page " | "
write_page " PTS | "
URL="https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=$PKG&users=reproducible-builds@lists.alioth.debian.org&archive=both"
for TAG in $USERTAGS ; do
URL="$URL&tag=$TAG"
done
write_page " bugs | "
write_page " $CRUFT | "
write_page " $BET | "
write_page " $CTEST | "
write_page " $CSID | "
write_page " $CEXP | "
write_page "
"
done
write_page "
"
rm $TMPFILE $TMP2FILE
write_page_footer
publish_page
echo "$MODIFIED_IN_SID" > /srv/reproducible-results/modified_in_sid.txt