Rebuild script¶
Synopsis¶
# ./rebuild pandoc Reading package lists... Done Building dependency tree Reading state information... Done E: Build-Depends dependency for pandoc cannot be satisfied because candidate version of package libghc-aeson-dev can't satisfy version requirements # ./rebuild libghc-aeson-dev
Purpose¶
Non-interactively update a package from Debian source repository.
Setup¶
APT repositories¶
# cat /etc/apt/sources.list deb http://apt.osdyson.ru unstable main deb-src http://http.debian.net/debian sid main
Signing result¶
Add your GPG key to GPG agent to bypass passphrase
Dput¶
/etc/dput.cf
:
[dyson] login= pashev fqdn= apt.osdyson.org method= scp incoming= /srv/apt/incoming allow_dcut= 1 post_upload_command = ssh apt.osdyson.ru /srv/apt/script/import-new-packages.sh && sudo apt-get update
Source code¶
#!/bin/sh set -u set -e set -x pkg="$1" vertries=7 sudo apt-get -y build-dep "$pkg" curver=`(apt-cache show $pkg || echo 'Version: 0~0') | awk '/Version:/ {print $2}'` tmpdir=`mktemp -d "/var/tmp/pkg-${pkg}-XXXXXXX"` cd "$tmpdir" apt-get source "$pkg" pkgdir=`find * -maxdepth 0 -type d | head -n 1` echo "*** building in $pkgdir ***" cd "$pkgdir" dch --l '+dyson' 'Package for Dyson' bump=0 while true; do newver=`dpkg-parsechangelog | awk '/Version:/ {print $2}'` if dpkg --compare-versions "$newver" gt "$curver"; then break else if [ $bump = 0 ]; then echo "There is already package version $newver in Dyson. Bump version? [y/N]" read bump fi case $bump in y|Y|yes|Yes) dch -i '' vertries=`expr $vertries - 1 || true` if [ $vertries = 0 ]; then echo "Version bump failed!" exit 1 fi ;; *) echo "Aborted" >&2 exit 1 ;; esac fi done dch -r '' dpkg-buildpackage -sa dput dyson `realpath ../*.changes` cd rm -fr -- "$tmpdir" exit 0