X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/common.git/blobdiff_plain/eea5d47d76530c30fb468f14c656c91faa94c49c..HEAD:/invirtificator.sh diff --git a/invirtificator.sh b/invirtificator.sh index 2e30844..7d070dd 100644 --- a/invirtificator.sh +++ b/invirtificator.sh @@ -1,28 +1,18 @@ -# Interface: define variables name, daversionappend, and function +# Interface: define variables name, ivversionappend, and function # hack_package (). -set -e +# Depends: dpkg-awk -: ${DEBATHENA_APT=/mit/debathena/apt} +# Usage: invirtify-$foo {source|binary|upload} -# Process arguments. -dist_arch=$1; shift -a= -if [ "$1" = "-A" ]; then a=-A; shift; fi -chroot=$dist_arch-sbuild +set -e -if [ -z "$dist_arch" -o $# -eq 0 ]; then - echo 'No arguments!' >&2 - exit 2 -fi +dist=hardy +chroot=$dist-amd64-sbuild -dist=$(echo "$dist_arch" | sed 's/^\(.*\)-\([^-]*\)$/\1/') -arch=$(echo "$dist_arch" | sed 's/^\(.*\)-\([^-]*\)$/\2/') -: ${section=debathena-system} -: ${daname=$name} -: ${release=-proposed} -. /mit/debathena/bin/debian-versions.sh -tag=$(gettag $dist) +: ${section=invirt-system} +: ${ivname=$name} +: ${release=unstable} # Create a chroot and define functions for using it. sid=$(schroot -b -c "$chroot") @@ -44,7 +34,7 @@ add_changelog () { if [ -n "$dch_done" ]; then dch "$@" else - echo | dch -v"${daversion}" -D unstable "$@" + echo | dch -v"${ivversion}" -D unstable "$@" dch_done=1 fi } @@ -57,55 +47,57 @@ add_build_depends () { perl -0pe 's/^(Build-Depends:.*(?:\n[ \t].*)*)$/$1, '"$1"'/m or die' -i debian/control } -add_debathena_provides () { - [ "$name" = "$daname" ] - perl -0pe 's/^(Package: (.*)\n(?:(?!Provides:).+\n)*)(?:Provides: (.*)\n((?:.+\n)*))?(?=\n|\z)/$1Provides: $3, debathena-$2\n$4/mg or die; s/^Provides: , /Provides: /mg' -i debian/control - add_changelog "Provide debathena-$name." +add_invirt_provides () { + [ "$name" = "$ivname" ] + perl -0pe 's/^(Package: (.*)\n(?:(?!Provides:).+\n)*)(?:Provides: (.*)\n((?:.+\n)*))?(?=\n|\z)/$1Provides: $3, invirt-$2\n$4/mg or die; s/^Provides: , /Provides: /mg' -i debian/control + add_changelog "Provide invirt-$name." } rename_source () { - perl -pe "s{^Source: $name\$}{Source: $daname}" -i debian/control - add_changelog "Rename package to $daname." - perl -0pe "s/^$name/$daname/" -i debian/changelog + perl -pe "s{^Source: $name\$}{Source: $ivname}" -i debian/control + add_changelog "Rename package to $ivname." + perl -0pe "s/^$name/$ivname/" -i debian/changelog } -cmd_source () { - if [ "$a" != "-A" ]; then - echo "Not building source package for $dist_arch." >&2 - return +find_arch () { + if grep -iq '^Architecture: all' "${ivname}_$ivfilever.dsc"; then + a=-A fi - echo "Building source for $daname-$daversion on $dist_arch" >&2 +} + +cmd_source () { + echo "Building source for $ivname-$ivfilever on ${dist}-amd64" >&2 - if ! [ -e "${name}_$version.dsc" ]; then + if ! [ -e "${name}_$filever.dsc" ]; then sch apt-get -d source "$name" fi - if ! [ -e "${daname}_$daversion.dsc" ]; then + if ! [ -e "${ivname}_$ivfilever.dsc" ]; then ( - tmpdir=$(mktemp -td "debathenify.$$.XXXXXXXXXX") + tmpdir=$(mktemp -td "invirtify.$$.XXXXXXXXXX") trap 'rm -rf "$tmpdir"' EXIT - origversion=$(echo "$version" | sed 's/-[^-]*$//') + origversion=$(echo "$filever" | sed 's/-[^-]*$//') cp -a "${name}_$origversion.orig.tar.gz" "$tmpdir/" dscdir=$(pwd) cd "$tmpdir/" - dpkg-source -x "$dscdir/${name}_$version.dsc" "$tmpdir/$name-$origversion" + dpkg-source -x "$dscdir/${name}_$filever.dsc" "$tmpdir/$name-$origversion" cd "$tmpdir/$name-$origversion" dch_done= hack_package - if [ "$name" != "$daname" ]; then + if [ "$name" != "$ivname" ]; then rename_source - cp -a "$tmpdir/${name}_$origversion.orig.tar.gz" "$tmpdir/${daname}_$origversion.orig.tar.gz" - cp -a "$tmpdir/${daname}_$origversion.orig.tar.gz" "$dscdir" + cp -a "$tmpdir/${name}_$origversion.orig.tar.gz" "$tmpdir/${ivname}_$origversion.orig.tar.gz" + cp -a "$tmpdir/${ivname}_$origversion.orig.tar.gz" "$dscdir" fi [ -n "$dch_done" ] schr apt-get -q -y install devscripts pbuilder schr /usr/lib/pbuilder/pbuilder-satisfydepends - sch debuild -S -sa -us -uc -i -I.svn && cp -a "../${daname}_$daversion"* "$dscdir" + sch debuild -S -sa -us -uc -i -I.svn && cp -a "../${ivname}_$ivfilever"* "$dscdir" ) [ $? -eq 0 ] || exit 1 - if [ -n "$DA_CHECK_DIFFS" ]; then - interdiff -z "${name}_$version.diff.gz" "${daname}_$daversion.diff.gz" | \ + if [ -n "$IV_CHECK_DIFFS" ]; then + interdiff -z "${name}_$filever.diff.gz" "${ivname}_$ivfilever.diff.gz" | \ enscript --color --language=ansi --highlight=diffu --output=- -q | \ less -R echo -n "Press Enter to continue: " >&2 @@ -115,7 +107,14 @@ cmd_source () { } cmd_binary () { - sbuildhack "$dist_arch" $a "${daname}_$daversion.dsc" + find_arch + + if [ "$a" = "-A" ]; then + sbuild -d "$dist" --arch-all "${ivname}_$ivfilever.dsc" + else + sbuild -d "$dist" --arch amd64 --arch-all "${ivname}_$ivfilever.dsc" + sbuild -d "$dist" --arch i386 "${ivname}_$ivfilever.dsc" + fi } v () { @@ -124,13 +123,13 @@ v () { } cmd_upload () { - REPREPRO="v reprepro -Vb $DEBATHENA_APT" - REPREPROI="$REPREPRO --ignore=wrongdistribution --ignore=missingfield" + find_arch - if [ "$a" = "-A" ]; then - $REPREPROI include "${dist}${release}" "${daname}_${daversion}_source.changes" + v reprepro-env include "${release}" "${ivname}_${ivfilever}_source.changes" + v reprepro-env include "${release}" "${ivname}_${ivfilever}_amd64.changes" + if [ -z "$a" ]; then + v reprepro-env include "${release}" "${ivname}_${ivfilever}_i386.changes" fi - $REPREPROI include "${dist}${release}" "${daname}_${daversion}${tag}_${arch}.changes" } version=$( @@ -138,7 +137,7 @@ version=$( sed -n 's/^Version: \(.*\)$/\1/ p' | ( version='~~~' while read -r newversion; do - if [ $(expr "$newversion" : '.*debathena') = 0 ] && \ + if [ $(expr "$newversion" : '.*invirt') = 0 ] && \ dpkg --compare-versions "$newversion" '>' "$version"; then version=$newversion fi @@ -150,21 +149,24 @@ version=$( echo "$version" ) ) -daversion=$version$daversionappend +ivversion=$version$ivversionappend + +filever=$(echo "$version" | perl -pe 's/([^:]*:)?//') +ivfilever=$(echo "$ivversion" | perl -pe 's/([^:]*:)?//') # Look for binary packages built from the named package with the right # version, and exit out if we find one (an architecture-specific one # if we weren't run with the -A flag). We need to look for either a # Source: or a Package: header matching $name since there is no # Source: header for a package whose name matches its source. -pkgfiles="$DEBATHENA_APT/dists/$dist/$section/binary-$arch/Packages.gz $DEBATHENA_APT/dists/${dist}-proposed/$section/binary-$arch/Packages.gz" +pkgfiles="/srv/repository/dists/$release/$section/binary-*/Packages.gz" if { zcat $pkgfiles | \ - dpkg-awk -f - "Package:^$daname\$" "Version:^$(quote "$daversion$tag")\$" -- Architecture; + dpkg-awk -f - "Package:^$ivname\$" "Version:^$(quote "$ivversion")\$" -- Architecture; zcat $pkgfiles | \ - dpkg-awk -f - "Source:^$daname\$" "Version:^$(quote "$daversion$tag")\$" -- Architecture; } \ + dpkg-awk -f - "Source:^$ivname\$" "Version:^$(quote "$ivversion")\$" -- Architecture; } \ | if [ "$a" = "-A" ]; then cat; else fgrep -vx 'Architecture: all'; fi \ | grep -q .; then - echo "$daname $daversion already exists for $dist_arch." >&2 + echo "$ivname $ivversion already exists." >&2 exit 0 fi