Include bpo package lists
authorChristoph Berg <myon@debian.org>
Wed, 20 Jan 2016 13:43:07 +0000 (14:43 +0100)
committerChristoph Berg <myon@debian.org>
Wed, 20 Jan 2016 13:46:24 +0000 (14:46 +0100)
jenkins/builddebcheck-pgapt
jenkins/debcheck-pgapt
jenkins/pgapt-jobs.yaml
jenkins/sbuild-update.sh

index 5e4563b35c96e67064eb38fb46f3fcec0170c1c4..605d980cc49ac8f150fe5242d1e66fdb0e85565b 100755 (executable)
@@ -3,26 +3,48 @@
 set -eu
 
 LISTSDIR="/home/chroot/$distribution-$architecture/var/lib/apt/lists"
+BPODIR="/home/chroot/$distribution-$architecture/var/lib/apt/backports"
 DISTSDIR="/home/jenkins/dists"
 
 # main package list
 PKG="$LISTSDIR/*_dists_${distribution}_main_binary-${architecture}_Packages"
 
+trap 'rm -f ${TMPPKG:-} ${MAINSRC:-} ${BPOSRC:-}' 0 2 3 15
+
 # include universe on ubuntu
 for FILE in $LISTSDIR/*_dists_${distribution}_universe_binary-${architecture}_Packages ; do
        [ -f "$FILE" ] || continue
        # work around dose-debcheck dying on a Python_ field
        TMPPKG=$(mktemp ${distribution}_universe_binary-${architecture}_Packages.XXXXXX)
-       trap "rm -f $TMPPKG" 0 2 3 15
        sed -e 's/^Python_/Python-/' $FILE > $TMPPKG
        PKG="$PKG $TMPPKG"
 done
 
-# include backports on debian
-for FILE in $LISTSDIR/*_dists_${distribution}-backports_main_binary-${architecture}_Packages ; do
-       [ -f "$FILE" ] || continue
-       PKG="$PKG $FILE"
-done
+# packages not depending on backports
+MAINSRC=$(mktemp main_source_Sources.XXXXXX)
+zcat $DISTSDIR/$distribution-pgdg-testing/main/source/Sources.gz > $MAINSRC
+
+case $distribution in
+  squeeze|wheezy|jessie)
+    for pkg in $(cat packages.backports); do
+      grep-dctrl --not -S $pkg $MAINSRC > $MAINSRC.tmp
+      mv $MAINSRC.tmp $MAINSRC
+    done
+
+    # packages depending on backports
+    BPOSRC=$(mktemp bpo_source_Sources.XXXXXX)
+    for pkg in $(cat packages.backports); do
+      zcat $DISTSDIR/$distribution-pgdg-testing/main/source/Sources.gz | \
+        grep-dctrl -S $pkg >> $BPOSRC || :
+    done
+
+    # include backports on debian
+    for FILE in $BPODIR/*_dists_${distribution}-backports_main_binary-${architecture}_Packages ; do
+      [ -f "$FILE" ] || continue
+      BPO="$FILE"
+    done
+    ;;
+esac
 
 # include pgdg dists
 case $stage in
@@ -42,4 +64,9 @@ set -x
 
 # run builddebcheck
 dose-builddebcheck -v -f -e --deb-native-arch=$architecture \
-       $PKG $DISTSDIR/$DIST/main/source/Sources.gz
+       $PKG $MAINSRC || EXIT=1
+test -s "${BPO:-}" && \
+dose-builddebcheck -v -f -e --deb-native-arch=$architecture \
+       $PKG $BPO $BPOSRC || EXIT=1
+
+exit ${EXIT:-0}
index 4387f097b3dc96a5e97e4c9d99248c4a4f9dda55..836faeefecb597c9b24addaa6f3f5a6d052b1be0 100755 (executable)
@@ -7,6 +7,8 @@ HOMEDIR="/home/jenkins"
 DISTSDIR="$HOMEDIR/dists"
 PGAPTDIR="$HOMEDIR/apt.postgresql.org/jenkins"
 
+test -d $PGAPTDIR && cd $PGAPTDIR
+
 case $stage in
        production) DIST="$distribution-pgdg" ;;
        testing)    DIST="$distribution-pgdg-testing" ;;
@@ -38,10 +40,6 @@ DEBCHECK="dose-debcheck -v -f -e ${EXTRABG:-} --bg $LISTSDIR/*_dists_${distribut
 # packages not depending on backports
 MAINPKG=$(mktemp main_binary-${architecture}_Packages.XXXXXX)
 cat $DISTSDIR/$DIST/main/binary-${architecture}/Packages > $MAINPKG
-for pkg in $(cat $PGAPTDIR/packages.backports); do
-  grep-dctrl --not -S $pkg $MAINPKG > $MAINPKG.tmp
-  mv $MAINPKG.tmp $MAINPKG
-done
 
 # packages not tested in production
 if [ "$stage" = "production" ]; then
@@ -51,18 +49,29 @@ if [ "$stage" = "production" ]; then
   done
 fi
 
-# packages depending on backports
-BPOPKG=$(mktemp bpo_binary-${architecture}_Packages.XXXXXX)
-for pkg in $(cat $PGAPTDIR/packages.backports); do
-  grep-dctrl -S $pkg $DISTSDIR/$DIST/main/binary-${architecture}/Packages >> $BPOPKG
-done
+case $distribution in
+  squeeze|wheezy|jessie)
+    for pkg in $(cat packages.backports); do
+      grep-dctrl --not -S $pkg $MAINPKG > $MAINPKG.tmp
+      mv $MAINPKG.tmp $MAINPKG
+    done
+
+    # packages depending on backports
+    BPOPKG=$(mktemp bpo_binary-${architecture}_Packages.XXXXXX)
+    for pkg in $(cat packages.backports); do
+      grep-dctrl -S $pkg $DISTSDIR/$DIST/main/binary-${architecture}/Packages >> $BPOPKG || :
+    done
+    ;;
+esac
 
 set -x
 
 # run debcheck on main
 $DEBCHECK ${EXTRAFG:-} --fg $MAINPKG || EXIT=$?
-test -s $BPOPKG && \
-$DEBCHECK ${EXTRAFG:-} --bg $DISTSDIR/$DIST/main/binary-${architecture}/Packages --fg $BPOPKG || : # we need to pull the bpo packages file from somewhere ... || EXIT=$?
+test -s "${BPOPKG:-}" && { \
+$DEBCHECK ${EXTRAFG:-} --bg $DISTSDIR/$DIST/main/binary-${architecture}/Packages \
+  --bg $LISTSDIR/../backports/*_dists_${distribution}-backports_main_binary-${architecture}_Packages \
+  --fg $BPOPKG || EXIT=$? ; }
 
 # run debcheck on N.N components
 for P in $DISTSDIR/$DIST/?.?/binary-${architecture}/Packages; do
index cb30a48aee7041fb2ca1c6960249ff7b6390e042..88ab0faae2b0c959cc24588725ca0f6ac4074cb9 100644 (file)
 - project:
         name: pgbackman
         git-url: https://github.com/rafaelma/pgbackman.git
+        # needs python-psycopg2 (>= 2.4.0) on squeeze
+        backports: 'BACKPORTS=yes '
         jobs:
                 - git-packages
 
 - project:
         name: pgdg-buildenv
         git-url: git://git.postgresql.org/git/pgapt.git
+        # needs dh 9 on squeeze
+        backports: 'BACKPORTS=yes '
         jobs:
                 - git-packages
 
         git-url: bzr::lp:~stub/ubuntu/trusty/python-azure/trunk
         # needs dh-python
         dist-filter: '(distribution!="squeeze") && (distribution!="precise")'
+        backports: 'BACKPORTS=yes '
         jobs:
                 - git-packages
 
index 735acddd5f64f2cd7e0455fd1bd6f05f48782350..258eb5a2d5c3a74af4b4458de51ba9b7516cb8bb 100755 (executable)
@@ -25,6 +25,17 @@ case $(hostname) in
     ;;
 esac
 
+# enable backports
+deb="http://deb/debian"
+case $(hostname) in
+  pgdg*) # use local cache on build host
+    deb="http://debian-approx:9999/debian" ;;
+esac
+case $distribution in
+  squeeze) BACKPORTS="deb $deb-backports/ $distribution-backports main" ;;
+  wheezy|jessie) BACKPORTS="deb $deb $distribution-backports main" ;;
+esac
+
 PGDG_SH=$(mktemp /var/tmp/pgdg.XXXXXX.sh)
 trap "rm -f $PGDG_SH" 0 2 3 15
 cat < /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh > $PGDG_SH
@@ -54,18 +65,35 @@ umask 002
                chmod +x $PGDG_SH
                echo yes | $PGDG_SH
        fi
+
+       test -e /etc/dpkg/dpkg.cfg.d/01unsafeio || echo force-unsafe-io | tee /etc/dpkg/dpkg.cfg.d/01unsafeio
+       test -e /etc/apt/apt.conf.d/20norecommends || echo 'APT::Install-Recommends "false";' | tee /etc/apt/apt.conf.d/20norecommends
+       test -e /etc/apt/apt.conf.d/50i18n || echo 'Acquire::Languages { none; };' | tee /etc/apt/apt.conf.d/50i18n
+       rm -f /var/lib/apt/lists/*_Translation-*
+
+       # write sources lists
        echo "deb $apt1 $distribution-pgdg main" > /etc/apt/sources.list.d/pgdg.list
        echo "deb $apt2 $distribution-pgdg-testing main" >> /etc/apt/sources.list.d/pgdg.list
-       rm -f /etc/apt/sources.list.d/backports.list
        case $distribution in
          precise|trusty|wily) # libossp-uuid is in universe on vivid+
            echo "deb $ubuntu $distribution universe" > /etc/apt/sources.list.d/universe.list ;;
        esac
-       test -e /etc/dpkg/dpkg.cfg.d/01unsafeio || echo force-unsafe-io | tee /etc/dpkg/dpkg.cfg.d/01unsafeio
-       test -e /etc/apt/apt.conf.d/20norecommends || echo 'APT::Install-Recommends "false";' | tee /etc/apt/apt.conf.d/20norecommends
-       test -e /etc/apt/apt.conf.d/50i18n || echo 'Acquire::Languages { none; };' | tee /etc/apt/apt.conf.d/50i18n
-       rm -f /var/lib/apt/lists/*_Translation-*
+       if [ "$BACKPORTS" ]; then
+         echo "$BACKPORTS" > /etc/apt/sources.list.d/backports.list
+         if [ -d /var/lib/apt/backports ]; then
+           cp -al /var/lib/apt/backports/* /var/lib/apt/lists
+         fi
+       fi
+
        apt-get update
+
+       # save backports lists
+       rm -rf /var/lib/apt/backports /etc/apt/sources.list.d/backports.list.disabled
+       if [ "$BACKPORTS" ]; then
+         mv /etc/apt/sources.list.d/backports.list /etc/apt/sources.list.d/backports.list.disabled
+         mkdir -p /var/lib/apt/backports
+         mv /var/lib/apt/lists/*backports* /var/lib/apt/backports
+       fi
        
        [ -x /usr/bin/eatmydata ] && eatmydata="eatmydata"
        #case $distribution in