summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/abs13
-rwxr-xr-xscripts/gensync104
-rwxr-xr-xscripts/makepkg130
-rwxr-xr-xscripts/makeworld57
-rwxr-xr-xscripts/pacsync2
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