diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/gensync | 2 | ||||
-rwxr-xr-x | scripts/makepkg | 500 | ||||
-rwxr-xr-x | scripts/makeworld | 8 |
3 files changed, 259 insertions, 251 deletions
diff --git a/scripts/gensync b/scripts/gensync index 8a87d8f1..769972a6 100755 --- a/scripts/gensync +++ b/scripts/gensync @@ -1,6 +1,6 @@ #!/bin/bash -myver='2.4.1' +myver='2.5' usage() { echo "gensync $myver" diff --git a/scripts/makepkg b/scripts/makepkg index b55ef576..08cddb38 100755 --- a/scripts/makepkg +++ b/scripts/makepkg @@ -1,12 +1,12 @@ #!/bin/bash -myver='2.4.1' +myver='2.5' startdir=`pwd` [ -f /etc/makepkg.conf ] && source /etc/makepkg.conf strip_url() { - echo $1 | sed 's|^.*://.*/||g' + echo $1 | sed 's|^.*://.*/||g' } msg() { @@ -14,57 +14,57 @@ msg() { } checkdeps() { - local missdep=`pacman -T $*` + local missdep=`pacman -T $*` local deplist="" missdep=`pacman -T $*` - ret=$? - if [ "$ret" != "0" ]; then - if [ "$ret" = "127" ]; then - msg "==> Missing Dependencies:" - msg "" - nl=0 - for dep in $missdep; do - echo -ne "$dep " >&2 - if [ "$nl" = "1" ]; then - nl=0 - echo -ne "\n" >&2 - # add this dep to the list - depname=`echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||'` - deplist="$deplist $depname" - continue - fi - nl=1 - done - msg "" - else - msg "==> ERROR: pacman returned a fatal error." - exit 1 - fi - fi + ret=$? + if [ "$ret" != "0" ]; then + if [ "$ret" = "127" ]; then + msg "==> Missing Dependencies:" + msg "" + nl=0 + for dep in $missdep; do + echo -ne "$dep " >&2 + if [ "$nl" = "1" ]; then + nl=0 + echo -ne "\n" >&2 + # add this dep to the list + depname=`echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||'` + deplist="$deplist $depname" + continue + fi + nl=1 + done + msg "" + else + msg "==> ERROR: pacman returned a fatal error." + exit 1 + fi + fi echo $deplist } usage() { - echo "makepkg version $myver" - echo "usage: $0 [options]" - echo "options:" - echo " -c, --clean Clean up work files after build" - echo " -C, --cleancache Clean up source files from the cache" - echo " -s, --syncdeps Install missing dependencies with pacman" - echo " -b, --builddeps Build missing dependencies from source" - echo " -d, --nodeps Skip all dependency checks" - echo " -i, --install Install package after successful build" - echo " -f, --force Overwrite existing package" - echo " -w <destdir> Write package to <destdir> instead of the working dir" - echo " -p <buildscript> Use an alternate build script (instead of PKGBUILD)" - echo " -h, --help This help" - echo - echo " if build_script is not specified, makepkg will look for a PKGBUILD" - echo " file in the current directory." - echo - exit 0 + echo "makepkg version $myver" + echo "usage: $0 [options]" + echo "options:" + echo " -c, --clean Clean up work files after build" + echo " -C, --cleancache Clean up source files from the cache" + echo " -s, --syncdeps Install missing dependencies with pacman" + echo " -b, --builddeps Build missing dependencies from source" + echo " -d, --nodeps Skip all dependency checks" + echo " -i, --install Install package after successful build" + echo " -f, --force Overwrite existing package" + echo " -w <destdir> Write package to <destdir> instead of the working dir" + echo " -p <buildscript> Use an alternate build script (instead of PKGBUILD)" + echo " -h, --help This help" + echo + echo " if -p is not specified, makepkg will look for a PKGBUILD" + echo " file in the current directory." + echo + exit 0 } # Options @@ -79,139 +79,135 @@ PKGDEST=$startdir BUILDSCRIPT="./PKGBUILD" while [ "$#" -ne "0" ]; do - case $1 in - --clean) CLEANUP=1 ;; - --cleancache) CLEANCACHE=1 ;; - --syncdeps) DEP_BIN=1 ;; - --builddeps) DEP_SRC=1 ;; - --nodeps) NODEPS=1 ;; - --install) INSTALL=1 ;; - --force) FORCE=1 ;; - --*) - usage - exit 1 - ;; - -*) - while getopts "cCsbdifp:w:-" opt; do - case $opt in - c) CLEANUP=1 ;; - C) CLEANCACHE=1 ;; - s) DEP_BIN=1 ;; - b) DEP_SRC=1 ;; - d) NODEPS=1 ;; - i) INSTALL=1 ;; - f) FORCE=1 ;; - w) - PKGDEST=$OPTARG - ;; - p) - BUILDSCRIPT=$OPTARG - ;; - -) - OPTIND=0 - break - ;; - *) - usage - exit 1 - ;; - esac - done - ;; - *) - true - ;; - esac - shift + case $1 in + --clean) CLEANUP=1 ;; + --cleancache) CLEANCACHE=1 ;; + --syncdeps) DEP_BIN=1 ;; + --builddeps) DEP_SRC=1 ;; + --nodeps) NODEPS=1 ;; + --install) INSTALL=1 ;; + --force) FORCE=1 ;; + --*) + usage + exit 1 + ;; + -*) + while getopts "cCsbdifp:w:-" opt; do + case $opt in + c) CLEANUP=1 ;; + C) CLEANCACHE=1 ;; + s) DEP_BIN=1 ;; + b) DEP_SRC=1 ;; + d) NODEPS=1 ;; + i) INSTALL=1 ;; + f) FORCE=1 ;; + w) PKGDEST=$OPTARG ;; + p) BUILDSCRIPT=$OPTARG ;; + -) + OPTIND=0 + break + ;; + *) + usage + exit 1 + ;; + esac + done + ;; + *) + true + ;; + esac + shift done if [ "$CLEANCACHE" = "1" ]; then - msg "==> Cleaning up source files from the cache" - rm -rf /var/cache/pacman/src/* - exit 0 + msg "==> Cleaning up source files from the cache" + rm -rf /var/cache/pacman/src/* + exit 0 fi -unset pkgname pkgver pkgrel pkgdesc +unset pkgname pkgver pkgrel pkgdesc url unset depends conflicts backup source install build umask 0022 if [ ! -f $BUILDSCRIPT ]; then - msg "==> ERROR: $BUILDSCRIPT does not exist." - exit 1 + msg "==> ERROR: $BUILDSCRIPT does not exist." + exit 1 fi 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 [ -f $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz -a "$FORCE" = "0" ]; then - msg "==> ERROR: a package has already been built. (use -f to overwrite)" - exit 1 + msg "==> ERROR: a package has already been built. (use -f to overwrite)" + exit 1 fi unset deplist if [ `type -p pacman` -a "$NODEPS" = "0" ]; then - msg "==> Checking Dependencies..." + msg "==> Checking Dependencies..." deplist=`checkdeps ${depends[@]}` - if [ "$deplist" != "" ]; then - if [ "$DEP_BIN" = "1" ]; then - # install missing deps from binary packages (using pacman -S) - msg "==> Installing missing dependencies..." - pacman -D $deplist - if [ "$?" = "127" ]; then - msg "==> ERROR: Failed to install missing dependencies." - exit 1 - fi - # TODO: check deps again to make sure they were resolved - elif [ "$DEP_SRC" = "1" ]; then - # install missing deps by building them from source. - # we look for each package name in $ABSROOT and build it. - if [ "$ABSROOT" = "" ]; then - msg "==> ERROR: The ABSROOT environment variable is not defined." - exit 1 - fi - # TODO: handle version comparators (eg, glibc>=2.2.5) - msg "==> Building missing dependencies..." - for dep in $deplist; do - candidates=`find $ABSROOT -type d -name "$dep"` - if [ "$candidates" = "" ]; then - msg "==> ERROR: Could not find \"$dep\" under $ABSROOT" - exit 1 - fi - success=0 - for pkgdir in $candidates; do - if [ -f $pkgdir/PKGBUILD ]; then - cd $pkgdir - echo makepkg -i -c -b -w $PKGDEST - makepkg -i -c -b -w $PKGDEST - if [ $? -eq 0 ]; then - success=1 - break - fi - fi - done - if [ "$success" = "0" ]; then - msg "==> ERROR: Failed to build \"$dep\"" - exit 1 - fi - done - # TODO: check deps again to make sure they were resolved - else - exit 1 - fi - fi + if [ "$deplist" != "" ]; then + if [ "$DEP_BIN" = "1" ]; then + # install missing deps from binary packages (using pacman -S) + msg "==> Installing missing dependencies..." + pacman -D $deplist + if [ "$?" = "127" ]; then + msg "==> ERROR: Failed to install missing dependencies." + exit 1 + fi + # TODO: check deps again to make sure they were resolved + elif [ "$DEP_SRC" = "1" ]; then + # install missing deps by building them from source. + # we look for each package name in $ABSROOT and build it. + if [ "$ABSROOT" = "" ]; then + msg "==> ERROR: The ABSROOT environment variable is not defined." + exit 1 + fi + # TODO: handle version comparators (eg, glibc>=2.2.5) + msg "==> Building missing dependencies..." + for dep in $deplist; do + candidates=`find $ABSROOT -type d -name "$dep"` + if [ "$candidates" = "" ]; then + msg "==> ERROR: Could not find \"$dep\" under $ABSROOT" + exit 1 + fi + success=0 + for pkgdir in $candidates; do + if [ -f $pkgdir/PKGBUILD ]; then + cd $pkgdir + echo makepkg -i -c -b -w $PKGDEST + makepkg -i -c -b -w $PKGDEST + if [ $? -eq 0 ]; then + success=1 + break + fi + fi + done + if [ "$success" = "0" ]; then + msg "==> ERROR: Failed to build \"$dep\"" + exit 1 + fi + done + # TODO: check deps again to make sure they were resolved + else + exit 1 + fi + fi elif [ "$NODEPS" = "1" ]; then - msg "==> WARNING: skipping dependency checks." + msg "==> WARNING: skipping dependency checks." 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` @@ -223,69 +219,69 @@ msg "==> Acquiring/Extracting Sources..." mkdir -p src cd $startdir/src for netfile in ${source[@]}; do - file=`strip_url $netfile` - if [ -f ../$file ]; then - msg "==> Found $file in build dir" - cp ../$file . - elif [ -f /var/cache/pacman/src/$file ]; then - msg "==> Using local copy of $file" - cp /var/cache/pacman/src/$file . - else - # check for a download utility - if [ -z "$FTPAGENT" ]; then - msg "==> ERROR: FTPAGENT is not configured. Check the /etc/makepkg.conf file." - msg "==> Aborting..." - exit 1 - fi - ftpclient=`echo $FTPAGENT | awk {'print $1'}` - if [ ! -x $ftpclient ]; then - msg "==> ERROR: ftpclient `basename $ftpclient` is not installed." - msg "==> Aborting..." - exit 1 - fi - proto=`echo $netfile | sed 's|://.*||'` - if [ "$proto" != "ftp" -a "$proto" != "http" ]; then - msg "==> ERROR: $netfile was not found in the build directory and is not a proper URL." - msg "==> Aborting..." - exit 1 - fi - msg "==> Downloading $file" - $FTPAGENT $netfile 2>&1 - if [ ! -f $file ]; then - msg "==> ERROR: Failed to download $file" - msg "==> Aborting..." - exit 1 - fi - mkdir -p /var/cache/pacman/src && cp $file /var/cache/pacman/src - fi - unset cmd - case $file in - *.tar.gz|*.tar.Z|*.tgz) - cmd="tar --use-compress-program=gzip -xf $file" ;; - *.tar.bz2) - cmd="tar --use-compress-program=bzip2 -xf $file" ;; - *.tar) - cmd="tar -xf $file" ;; - *.zip) - cmd="unzip -qq $file" ;; - *.gz) - cmd="gunzip $file" ;; - esac - if [ "$cmd" != "" ]; then - msg "==> $cmd" - $cmd - if [ $? -ne 0 ]; then - msg "==> ERROR: Failed to extract $file" - msg "==> Aborting..." - exit 1 - fi - fi + file=`strip_url $netfile` + if [ -f ../$file ]; then + msg "==> Found $file in build dir" + cp ../$file . + elif [ -f /var/cache/pacman/src/$file ]; then + msg "==> Using local copy of $file" + cp /var/cache/pacman/src/$file . + else + # check for a download utility + if [ -z "$FTPAGENT" ]; then + msg "==> ERROR: FTPAGENT is not configured. Check the /etc/makepkg.conf file." + msg "==> Aborting..." + exit 1 + fi + ftpclient=`echo $FTPAGENT | awk {'print $1'}` + if [ ! -x $ftpclient ]; then + msg "==> ERROR: ftpclient `basename $ftpclient` is not installed." + msg "==> Aborting..." + exit 1 + fi + proto=`echo $netfile | sed 's|://.*||'` + if [ "$proto" != "ftp" -a "$proto" != "http" ]; then + msg "==> ERROR: $netfile was not found in the build directory and is not a proper URL." + msg "==> Aborting..." + exit 1 + fi + msg "==> Downloading $file" + $FTPAGENT $netfile 2>&1 + if [ ! -f $file ]; then + msg "==> ERROR: Failed to download $file" + msg "==> Aborting..." + exit 1 + fi + mkdir -p /var/cache/pacman/src && cp $file /var/cache/pacman/src + fi + unset cmd + case $file in + *.tar.gz|*.tar.Z|*.tgz) + cmd="tar --use-compress-program=gzip -xf $file" ;; + *.tar.bz2) + cmd="tar --use-compress-program=bzip2 -xf $file" ;; + *.tar) + cmd="tar -xf $file" ;; + *.zip) + cmd="unzip -qq $file" ;; + *.gz) + cmd="gunzip $file" ;; + esac + if [ "$cmd" != "" ]; then + msg "==> $cmd" + $cmd + if [ $? -ne 0 ]; then + msg "==> ERROR: Failed to extract $file" + msg "==> Aborting..." + exit 1 + fi + fi 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 @@ -293,8 +289,8 @@ mkdir -p $startdir/pkg msg "==> Building Package..." build 2>&1 if [ $? -gt 0 ]; then - msg "==> Build Failed. Aborting..." - exit 2 + msg "==> Build Failed. Aborting..." + exit 2 fi # remove info/doc files @@ -304,30 +300,36 @@ 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 + +# remove /usr/share directory if empty +if [ -d pkg/usr/share ]; then + if [ -z "`ls -1 pkg/usr/share`" ]; then + rm -r pkg/usr/share + fi fi # compress man pages if [ -d pkg/usr/man ]; then - msg "==> Compressing man pages..." - for i in `find pkg/usr/man -type f`; do - ext=`echo $i | sed 's|.*\.||g'` - fn=`echo $i | sed 's|.*/||g'` - if [ "$ext" != "gz" ]; then - # update symlinks to this manpage - for ln in `find pkg/usr/man -lname "$fn"`; do - rm -f $ln - ln -sf ${fn}.gz ${ln}.gz - done - # compress the original - gzip -9 $i - fi - done + msg "==> Compressing man pages..." + for i in `find pkg/usr/man -type f`; do + ext=`echo $i | sed 's|.*\.||g'` + fn=`echo $i | sed 's|.*/||g'` + if [ "$ext" != "gz" ]; then + # update symlinks to this manpage + for ln in `find pkg/usr/man -lname "$fn"`; do + rm -f $ln + ln -sf ${fn}.gz ${ln}.gz + done + # compress the original + gzip -9 $i + fi + done fi - # strip binaries cd $startdir msg "==> Stripping debugging symbols from libraries..." @@ -338,9 +340,9 @@ find pkg/{,usr,usr/local,opt/*}/{bin,sbin} -type f -exec /usr/bin/strip '{}' ';' # 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}'` @@ -353,47 +355,53 @@ date >>.PKGINFO echo "pkgname = $pkgname" >>.PKGINFO echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO echo "pkgdesc = $pkgdesc" >>.PKGINFO +echo "url = $url" >>.PKGINFO echo "builddate = $builddate" >>.PKGINFO echo "packager = $packager" >>.PKGINFO echo "size = $size" >>.PKGINFO for depend in "${depends[@]}"; do - echo "depend = $depend" >>.PKGINFO + echo "depend = $depend" >>.PKGINFO done for conflict in "${conflicts[@]}"; do - echo "conflict = $conflict" >>.PKGINFO + echo "conflict = $conflict" >>.PKGINFO done for bakfile in "${backup[@]}"; do - echo "backup = $bakfile" >>.PKGINFO + echo "backup = $bakfile" >>.PKGINFO 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 +# build a filelist +msg "==> Building filelist..." +cd $startdir/pkg +tar cv * >/dev/null 2>.FILELIST + # tar it up msg "==> Compressing package..." cd $startdir/pkg -if [ -f $startdir/pkg/._install ]; then - tar czvf $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO ._install * >../filelist +if [ -f $startdir/pkg/.INSTALL ]; then + cmd="tar czvf $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO .FILELIST .INSTALL *" else - tar czvf $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO * >../filelist + cmd="tar czvf $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO .FILELIST *" fi +$cmd >../filelist cd $startdir if [ "$CLEANUP" = "1" ]; then - msg "==> Cleaning up" - rm -rf src pkg filelist + msg "==> Cleaning up" + rm -rf src pkg filelist fi -d=`date` -msg "==> Finished making $pkgname ($d)" +msg "==> Finished making $pkgname (`date`)" if [ "$INSTALL" = "1" ]; then - msg "==> Running pacman --upgrade" - pacman --upgrade $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz + msg "==> Running pacman --upgrade" + pacman --upgrade $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz fi exit 0 diff --git a/scripts/makeworld b/scripts/makeworld index 85051bda..fdeb23a3 100755 --- a/scripts/makeworld +++ b/scripts/makeworld @@ -1,19 +1,19 @@ #!/bin/bash toplevel=`pwd` -version="2.4.1" +version="2.5" usage() { echo "makeworld version $version" echo "usage: $0 [options] <destdir> <category> [category] ..." echo "options:" - echo " -c, --clean Clean up work files after build" - echo " -s, --syncdeps Install missing dependencies with pacman" echo " -b, --builddeps Build missing dependencies from source" + echo " -c, --clean Clean up work files after build" echo " -d, --nodeps Skip all dependency checks" - echo " -i, --install Install package after successful build" echo " -f, --force Overwrite existing packages" + echo " -i, --install Install package after successful build" echo " -h, --help This help" + echo " -s, --syncdeps Install missing dependencies with pacman" echo echo " where <category> is one or more directory names under the ABS root" echo " eg: makeworld -c /packages base lib editors" |