diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/abs | 13 | ||||
-rwxr-xr-x | scripts/gensync | 104 | ||||
-rwxr-xr-x | scripts/makepkg | 130 | ||||
-rwxr-xr-x | scripts/makeworld | 57 | ||||
-rwxr-xr-x | scripts/pacsync | 2 |
5 files changed, 212 insertions, 94 deletions
diff --git a/scripts/abs b/scripts/abs index a21bcb68..10e9b9c4 100755 --- a/scripts/abs +++ b/scripts/abs @@ -1,6 +1,6 @@ #!/bin/bash -myver='2.0' +myver='2.1' ABS_ROOT=/usr/abs usage() { @@ -9,7 +9,7 @@ usage() { echo echo "abs will synchronize PKGBUILD scripts from the CVS repository" echo "into /usr/abs. You can follow different package trees by editing" - echo "/etc/abs/supfile" + echo "/etc/abs/supfile.arch" echo exit 0 } @@ -25,17 +25,14 @@ update() { exit 1 fi - if [ ! -r /etc/abs/supfile ]; then - echo "abs: missing config file /etc/abs/supfile" - exit 1 - fi - if [ "`id -u`" != "0" ]; then echo "abs: you must be root to update your ABS tree" exit 1 fi - cd $ABS_ROOT && cvsup -L 1 -r 0 -g -c .sup /etc/abs/supfile + for sup in `find /etc/abs -name "supfile.*"`; do + cd $ABS_ROOT && cvsup -L 1 -r 0 -g -c .sup $sup + done } for opt in "$@"; do diff --git a/scripts/gensync b/scripts/gensync new file mode 100755 index 00000000..4b0f882d --- /dev/null +++ b/scripts/gensync @@ -0,0 +1,104 @@ +#!/bin/bash + +myver='2.1' + +usage() { + echo "gensync $myver" + echo "usage: $0 <root> <destfile>" + echo + echo "gensync will generate a sync database by reading all PKGBUILD files" + echo "from <root>. gensync builds the database in /tmp/.gensync and then" + echo "compresses it to <destfile>." + echo + echo "note: The <destfile> name is important. It must be of the form" + echo " {treename}.db.tar.gz where {treename} is the name of the custom" + echo " package repository you configured in /etc/pacman.conf. The" + echo " generated database must reside in the same directory as your" + echo " custom packages (also configured in /etc/pacman.conf)" + echo + echo "example: gensync /usr/abs/local /home/mypkgs/custom.db.tar.gz" + echo + echo + exit 0 +} + +db_write_entry() +{ + unset pkgname pkgver pkgrel + unset depends conflicts + source $1 || return 1 + cd /tmp/.gensync + mkdir $pkgname-$pkgver-$pkgrel + cd $pkgname-$pkgver-$pkgrel + # desc + echo "%NAME%" >desc + echo "$pkgname" >>desc + echo "" >>desc + echo "%VERSION%" >>desc + echo "$pkgver-$pkgrel" >>desc + echo "" >>desc + echo "%DESC%" >>desc + echo "$pkgdesc" >>desc + echo "" >>desc + # depends + echo "%DEPENDS%" >depends + for depend in "${depends[@]}"; do + echo "$depend" >>depends + done + echo "" >>depends + echo "%CONFLICTS%" >>depends + for conflict in "${conflicts[@]}"; do + echo "$conflict" >>depends + done + echo "" >>depends +} + +if [ $# -lt 2 ]; then + usage + exit 0 +fi + +if [ "$1" = "-h" -o "$1" = "--help" ]; then + usage + exit 0 +fi + +d=`dirname $1` +rootdir=`cd $d && pwd` +rootdir="$rootdir/`basename $1`" +d=`dirname $2` +destfile=`cd $d && pwd` +destfile="$destfile/`basename $2`" + +rm -rf /tmp/.gensync || exit 1 +mkdir -p /tmp/.gensync || exit 1 + +if [ ! -d $rootdir ]; then + echo "gensync: invalid root dir: $rootdir" >&2 + rm -rf /tmp/.gensync + exit 1 +fi + +echo "gensync: building database entries..." >&2 +#for category in `find $rootdir/* -type d -maxdepth 0`; do +for file in `find $rootdir/* -name PKGBUILD`; do + db_write_entry $file + if [ $? -gt 0 ]; then + echo "gensync: error writing entry for $file" >&2 + rm -rf /tmp/.gensync + exit 1 + fi +done + +echo "gensync: compressing to $destfile..." >&2 +cd /tmp/.gensync +tar c * | gzip -9 >$destfile +if [ $? -gt 0 ]; then + echo "gensync: error writing to $destfile" >&2 + rm -rf /tmp/.gensync + exit 1 +fi + +rm -rf /tmp/.gensync + +exit 0 diff --git a/scripts/makepkg b/scripts/makepkg index 2774084f..35e7dac9 100755 --- a/scripts/makepkg +++ b/scripts/makepkg @@ -1,6 +1,6 @@ #!/bin/bash -myver='2.0' +myver='2.1' startdir=`pwd` [ -f /etc/makepkg.conf ] && source /etc/makepkg.conf @@ -30,21 +30,26 @@ fi CLEANUP=0 INSTALL=0 +BUILDSCRIPT="./PKGBUILD" -if [ "$1" = "-c" -o "$1" = "--clean" ]; then - shift - CLEANUP=1 -fi -if [ "$1" = "-i" -o "$1" = "--install" ]; then - shift - INSTALL=1 -fi +for arg in $*; do + case $arg in + -c|--clean) + CLEANUP=1 + ;; + -i|--install) + INSTALL=1 + ;; + *) + BUILDSCRIPT=$arg + ;; + esac +done unset pkgname pkgver pkgrel pkgdesc unset depends conflicts backup source install build umask 0022 - # check for a download utility if [ -x /usr/bin/wget ]; then ftpagent="/usr/bin/wget --passive-ftp --tries=3 --waitretry=3" @@ -57,11 +62,6 @@ else exit 1 fi -BUILDSCRIPT="./PKGBUILD" -if [ "$1" != "" ]; then - BUILDSCRIPT=$1 -fi - if [ ! -f $BUILDSCRIPT ]; then msg "==> ERROR: $BUILDSCRIPT does not exist." exit 1 @@ -71,40 +71,40 @@ source $BUILDSCRIPT # check for no-no's if [ `echo $pkgver | grep '-'` ]; then - msg "==> ERROR: pkgver is not allowed to contain hyphens." - exit 1 + msg "==> ERROR: pkgver is not allowed to contain hyphens." + exit 1 fi if [ `echo $pkgrel | grep '-'` ]; then - msg "==> ERROR: pkgrel is not allowed to contain hyphens." - exit 1 + msg "==> ERROR: pkgrel is not allowed to contain hyphens." + exit 1 fi if [ `type -p pacman` ]; then - msg "==> Checking Dependencies..." - missdep=`pacman -T ${depends[@]}` - ret=$? - if [ "$ret" != "0" ]; then - if [ "$ret" = "127" ]; then - msg "==> ERROR: Dependency Check Failed:" - msg "" - nl=0 - for dep in $missdep; do - echo -ne "$dep " >&2 - if [ "$nl" = "1" ]; then - nl=0 - echo -ne "\n" >&2 - continue - fi - nl=1 - done - msg "" - else - msg "==> ERROR: pacman returned a fatal error." - fi - exit 1 - fi + msg "==> Checking Dependencies..." + missdep=`pacman -T ${depends[@]}` + ret=$? + if [ "$ret" != "0" ]; then + if [ "$ret" = "127" ]; then + msg "==> ERROR: Dependency Check Failed:" + msg "" + nl=0 + for dep in $missdep; do + echo -ne "$dep " >&2 + if [ "$nl" = "1" ]; then + nl=0 + echo -ne "\n" >&2 + continue + fi + nl=1 + done + msg "" + else + msg "==> ERROR: pacman returned a fatal error." + fi + exit 1 + fi else - msg "==> WARNING: pacman was not found in PATH. skipping dependency checks." + msg "==> WARNING: pacman was not found in PATH. skipping dependency checks." fi d=`date` @@ -143,21 +143,21 @@ for netfile in ${source[@]}; do cmd="tar --use-compress-program=gzip -xf $file" ;; *.tar.bz2) cmd="tar --use-compress-program=bzip2 -xf $file" ;; - *.tar) - cmd="tar -xf $file" ;; + *.tar) + cmd="tar -xf $file" ;; *.zip) cmd="unzip -qq $file" ;; - *) - cmd="cp ../$file ." ;; - esac - msg "==> $cmd" - $cmd + *.gz) + cmd="gunzip $file" ;; + esac + msg "==> $cmd" + $cmd done # check for existing pkg directory if [ -d $startdir/pkg ]; then - msg "==> Removing existing pkg directory..." - rm -rf $startdir/pkg + msg "==> Removing existing pkg directory..." + rm -rf $startdir/pkg fi mkdir -p $startdir/pkg @@ -172,9 +172,9 @@ fi # get some package meta info builddate=`date -u "+%a %b %d %k:%M:%S %Y"` if [ "$PACKAGER" != "" ]; then - packager="$PACKAGER" + packager="$PACKAGER" else - packager="Arch Linux (http://www.archlinux.org)" + packager="Arch Linux (http://www.archlinux.org)" fi size=`du -cb $startdir/pkg | tail -1 | awk '{print $1}'` @@ -203,8 +203,8 @@ done # check for an install script if [ "$install" != "" ]; then - msg "==> Copying install script..." - cp $startdir/$install $startdir/pkg/._install + msg "==> Copying install script..." + cp $startdir/$install $startdir/pkg/._install fi # remove info/doc files @@ -214,9 +214,9 @@ rm -rf pkg/usr/doc pkg/usr/share/doc # move /usr/share/man files to /usr/man if [ -d pkg/usr/share/man ]; then - mkdir -p pkg/usr/man - cp -a pkg/usr/share/man/* pkg/usr/man/ - rm -rf pkg/usr/share/man + mkdir -p pkg/usr/man + cp -a pkg/usr/share/man/* pkg/usr/man/ + rm -rf pkg/usr/share/man fi # strip binaries @@ -230,23 +230,23 @@ find pkg/{,usr,usr/local}/{bin,sbin} -type f -exec /usr/bin/strip '{}' ';' 2>&1 msg "==> Compressing package..." cd $startdir/pkg if [ -f $startdir/pkg/._install ]; then - tar czvf $startdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO ._install * >../filelist + tar czvf $startdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO ._install * >../filelist else - tar czvf $startdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO * >../filelist + tar czvf $startdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO * >../filelist fi cd $startdir if [ "$CLEANUP" = "1" ]; then - msg "==> Cleaning up" - rm -rf src pkg + msg "==> Cleaning up" + rm -rf src pkg fi d=`date` msg "==> Finished making $pkgname ($d)" if [ "$INSTALL" = "1" ]; then - msg "==> Running pacman --upgrade" - pacman --upgrade $pkgname-$pkgver-$pkgrel.pkg.tar.gz + msg "==> Running pacman --upgrade" + pacman --upgrade $pkgname-$pkgver-$pkgrel.pkg.tar.gz fi exit 0 diff --git a/scripts/makeworld b/scripts/makeworld index 8b3ec177..448dbc49 100755 --- a/scripts/makeworld +++ b/scripts/makeworld @@ -1,35 +1,52 @@ #!/bin/bash toplevel=`pwd` -version="2.0" +version="2.1" -if [ $# -lt 2 -o "$1" = "--help" -o "$1" = "-h" ]; then - echo "makeworld version $version" +usage() { + echo "makeworld version $version" echo "usage: $0 [options] <destdir> <category> [category] ..." - echo "options:" - echo " -c, --clean Clean up work files after build" - echo " -i, --install Install package after successful build" - echo " -h, --help This help" - echo - echo " where <category> is one or more of base, opt, contrib" - echo " eg: makeworld /packages base opt" + echo "options:" + echo " -c, --clean Clean up work files after build" + echo " -i, --install Install package after successful build" + echo " -h, --help This help" + echo + echo " where <category> is one or more directory names under the ABS root" + echo " eg: makeworld -c /packages base lib editors" echo echo " this should be run from the toplevel directory of ABS (usually /usr/abs)" +} + +if [ $# -lt 2 -o "$1" = "--help" -o "$1" = "-h" ]; then + usage exit 1 fi MAKEPKG_OPTS= -if [ "$1" = "-c" -o "$1" = "--clean" ]; then - shift - MAKEPKG_OPTS="$MAKEPKG_OPTS -c" -fi -if [ "$1" = "-i" -o "$1" = "--install" ]; then - shift - MAKEPKG_OPTS="$MAKEPKG_OPTS -i" -fi +for arg in $*; do + case $arg in + -c|--clean) + MAKEPKG_OPTS="$MAKEPKG_OPTS -c" + ;; + -i|--install) + MAKEPKG_OPTS="$MAKEPKG_OPTS -i" + ;; + *) + dest=$arg + shift + break + ;; + esac + shift + if [ "$dest" != "" ]; then + break; + fi +done -dest=$1 -shift +if [ "$dest" = "" ]; then + usage + exit 1 +fi sd=`date +"[%b %d %H:%M]"` diff --git a/scripts/pacsync b/scripts/pacsync index 7537f284..dd9a9ef9 100755 --- a/scripts/pacsync +++ b/scripts/pacsync @@ -1,6 +1,6 @@ #!/bin/sh echo -echo "Pacman 2.0 no longer comes with pacsync. Use 'pacman -S' instead." +echo "Pacman 2.0+ no longer comes with pacsync. Use 'pacman -S' instead." echo " (see 'pacman -S --help' or the manpage for syntax)" echo |