diff options
author | Holger Levsen <holger@layer-acht.org> | 2015-03-16 12:46:15 +0100 |
---|---|---|
committer | Holger Levsen <holger@layer-acht.org> | 2015-03-16 12:46:15 +0100 |
commit | 7f3eac6977760f4bc121b23ead578eca5be265fe (patch) | |
tree | f9e38ada37b0eb3ebdf8cd937983a91a5d14cf3b /bin/reproducible_html_repository_comparison.sh | |
parent | b67d1e38736bb5b097e4fe9cbac2c0e6df6e93f9 (diff) | |
download | jenkins.debian.net-7f3eac6977760f4bc121b23ead578eca5be265fe.tar.xz |
reproducible: rename repo_stats to repository_comparison
Diffstat (limited to 'bin/reproducible_html_repository_comparison.sh')
-rwxr-xr-x | bin/reproducible_html_repository_comparison.sh | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/bin/reproducible_html_repository_comparison.sh b/bin/reproducible_html_repository_comparison.sh new file mode 100755 index 00000000..0312079c --- /dev/null +++ b/bin/reproducible_html_repository_comparison.sh @@ -0,0 +1,143 @@ +#!/bin/bash + +# Copyright 2015 Holger Levsen <holger@layer-acht.org> +# 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=repo_stats +PAGE=index_${VIEW}.html +TMPFILE=$(mktemp) +TMP2FILE=$(mktemp) + +echo "$(date) - starting to write $PAGE page." +write_page_header $VIEW "Comparison between the reproducible builds apt repository and regular Debian suites" +write_page "<p>These source packages are different from unstable in our apt repository on alioth. They are available for <a href=\"https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain#Usage_example\">testing using these sources.lists</a> entries:<pre>" +write_page "deb http://reproducible.alioth.debian.org/debian/ ./" +write_page "deb-src http://reproducible.alioth.debian.org/debian/ ./" +write_page "</pre></p>" +write_page "<p><table><tr><th>source package</th><th>old versions in our repo<br />(needed for reproducing old builds)</th><th>version in our repo</th><th>version in 'testing'</th><th>version in 'unstable'</th><th>version in 'experimental'</th></tr>" + +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=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="" + for i in $SID ; do + if dpkg --compare-versions "$i" gt "$BET" ; then + CSID="$CSID<a href=\"https://tracker.debian.org/media/packages/$PREFIX/$PKG/changelog-$i\">$i</a><br />" + if [ ! -z "$BET" ] ; then + CRUFT="$BET $CRUFT" + BET="" + OBSOLETE=true + fi + else + CSID="$CSID$i<br />" + fi + done + if [ ! -z "$TESTING" ] ; then + for i in $TESTING ; do + if dpkg --compare-versions "$i" gt "$BET" ; then + CTEST="$CTEST<span class=\"green\">$i</span><br />" + else + CTEST="$CTEST$i<br />" + fi + done + fi + if [ ! -z "$EXPERIMENTAL" ] ; then + for i in $EXPERIMENTAL ; do + if dpkg --compare-versions "$i" gt "$BET" ; then + CEXP="$CEXP<a href=\"https://tracker.debian.org/media/packages/$PREFIX/$PKG/changelog-$i\">$i</a><br />" + else + CEXP="$CEXP$i<br />" + fi + done + fi + if [ ! -z "$BET" ] ; then + BET="<span class=\"green\">$BET</span>" + else + BET=" " + fi + if [ ! -z "$CRUFT" ] ; then + CRUFT="$(echo $CRUFT|sed 's# #<br />#g')" + fi + # + # write output + # + write_page "<tr><td>" + URL="http://anonscm.debian.org/cgit/reproducible/$PKG.git/?h=pu/reproducible_builds" + curl $URL > $TMP2FILE + if [ "$(grep "'error'>No repositories found" $TMP2FILE 2>/dev/null)" ] ; then + write_page "$PKG<br /><span class=\"red\">(no git repository)</span>" + 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 "<a href=\"$URL\" target=\"_blank\">$PKG</a><br /><span class=\"purple\">non-standard branch</span>" + if $OBSOLETE ; then + write_page " (probably ok)" + fi + else + write_page "<a href=\"$URL\" target=\"_blank\">$PKG</a>" + write_page "<br />(<span class=\"green\">merged</span> and at least available in unstable)" + fi + else + write_page "<a href=\"$URL\" target=\"_blank\">$PKG</a>" + if $OBSOLETE ; then + write_page "<br />(unused?)" + fi + fi + write_page " </td>" + write_page " <td>$CRUFT</td>" + write_page " <td>$BET</td>" + write_page " <td>$CTEST</td>" + write_page " <td>$CSID</td>" + write_page " <td>$CEXP</td>" + write_page "</tr>" +done +write_page "</table></p>" +rm $TMPFILE $TMP2FILE +write_page_footer +publish_page + |