#!/bin/bash if [ -z "$1" ]; then cat << EOT Script to re-build entire archive from one release for another. Often usecase -- rebuilding for a new Ubuntu brew every 6 months. Synopsis -------- nd_rebuildarchive old_release new_release e.g. nd_rebuildarchive natty oneiric EOT exit 1 fi set -eu old_dist=$1 dist=$2 # some NeuroDebian variables hardcoded in for now repo_server=neuro.debian.net repo_user=neurodebian repo_toppath=www repo_urlpath=debian repo_distspath=$repo_toppath/$repo_urlpath/dists family=nd+ubuntu list_file="$old_dist-$dist.list" summary_file="$old_dist-$dist.summary" [ -e "$list_file" ] || \ ssh -l $repo_user $repo_server cat $repo_distspath/$old_dist/*/source/Sources.gz \ | zgrep -e '^\(Package:\|Directory:\| [a-z0-9]\{32\} [0-9]* \S*.dsc$\)' \ | sed -e 's,.* \([^ ][^ ]*\)$,\1,g' | tr '\n' ' '| sed -e 's,\.dsc,.dsc\n,g' \ > "$list_file" CMD= #echo dist_id=$(nd_querycfg "release backport ids" "$dist") cat $list_file \ | while read name topdir dscfile; do echo "I: Forwardporting for $dist_id $dscfile" [ -e $dscfile ] \ || dget -d http://$repo_server/$repo_urlpath/$topdir/$dscfile || { echo -e "E: $dscfile\t\tFAILED to fetch" >> $summary_file continue } bpdscfile=$(/home/neurodebian/neurodebian/tools/backport-dsc \ --target-distribution "$dist" \ --no-maintainer-update \ --version-prefix "+" \ --version-suffix "$dist_id" \ "$dscfile" | tail -n1 | sed -e 's/^.* //g') echo " I: Building backported dscfile: $bpdscfile" $CMD sudo nd_build $family $dist $bpdscfile && { echo -e "I: $bpdscfile\t\tOk" >> $summary_file } || { echo -e "E: $bpdscfile\t\tFAILED to build" >> $summary_file } done exit 0 # Then following steps were done manually ATM and here kept as notes # but version checking should altogether go into nd_backportdsc I guess # or at least in the logic above # upload all not yet uploaded for f in *~nd*.changes; do uf=${f//.changes/.neurodn.upload}; [ -e $uf ] && continue; debsign $f; dput neurodn $f; done # on the neuro.debian.net side # filtered out incoming from pkgs with versions in official distribution for c in *changes; do pkg_ver=`grep '\.deb$' $c | head -1 | sed -e 's,.* \([^_]*\)_\(.*\)_.*,\1 \2,g'`; echo $pkg_ver; done | uniq | while read p v; do uver=$(whohas -D Ubuntu --strict $p | grep "/$dist/" | awk '{print $3;}'); dpkg --compare-versions $v lt "$uver" && echo $c $p $v $uver; done 2>&1 | tee up-to-date-list.txt # and moved corresponding changelogs away mv `awk '{print $1,$2;}' up-to-date-list.txt | while read p v; do grep -l "${p}_${v}" *changes; done | sort | uniq` NOT_UPLOADED/ # processed the incoming /home/neurodebian/reprepro/nd_processincoming.sh # locally now updated the cows sudo nd_updatedist nd+ubuntu $dist # And build which previously failed, most probably due to unsatisfied dependencies # and possibly failure with outdated versions of 3rd party modules #grep -v OLD summary.build | grep FAILED | sed -e 's,_\(i386\|amd64\).build.*,,g' | sort | uniq | while read p; do sudo nd_build nd+ubuntu precise $p.dsc; done grep -v -e OLD -e networkx summary.build | grep FAILED | sed -e 's,_\(i386\|amd64\).build.*,,g' | sort | uniq | while read p; do sudo nd_build nd+ubuntu $dist $p.dsc; done