From 74e347f09bd62872de84b431dcf029090931d199 Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Thu, 21 Dec 2006 01:53:40 +0000 Subject: * modeline fixes / reformatting * formatting / indentation fixes * makepkg: Dan McGee - integrity check fix Jürgen Hötzel - EUID usage and "x$foo" check revamp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/abs | 33 ++- scripts/aurbuild | 1 + scripts/gensync | 9 +- scripts/makepkg | 618 ++++++++++++++++++++++++------------------------ scripts/makeworld | 68 +++--- scripts/pacman-optimize | 1 + scripts/rankmirrors | 142 +++++------ scripts/re-pacman | 50 ++-- scripts/repo-add | 380 ++++++++++++++--------------- scripts/updatesync | 7 +- 10 files changed, 659 insertions(+), 650 deletions(-) (limited to 'scripts') diff --git a/scripts/abs b/scripts/abs index 36fe4c04..3d8dd728 100644 --- a/scripts/abs +++ b/scripts/abs @@ -1,5 +1,4 @@ #!/bin/bash -# vim: set ft=sh ts=2 sw=2 [ -f /etc/abs/abs.conf ] && source /etc/abs/abs.conf @@ -15,21 +14,21 @@ usage() { } update() { - cd $ABSROOT - for sup in "${SUPFILES[@]}"; do - if [ "$sup" != "testing" ]; then - if [ "$sup" = "${sup#!}" ]; then - cvsup -L 1 -r 0 -g -b $ABSROOT -c .sup /etc/abs/supfile.$sup - fi - elif [ "$sup" = "testing" ]; then - if [ ! -d /var/abs/testing ]; then - mkdir /var/abs/testing; - fi - cd $ABSROOT/testing - cvsup -L 1 -r 0 -g -b $ABSROOT/testing -c .sup /etc/abs/supfile.testing - cd $ABSROOT - fi - done + cd $ABSROOT + for sup in "${SUPFILES[@]}"; do + if [ "$sup" != "testing" ]; then + if [ "$sup" = "${sup#!}" ]; then + cvsup -L 1 -r 0 -g -b $ABSROOT -c .sup /etc/abs/supfile.$sup + fi + elif [ "$sup" = "testing" ]; then + if [ ! -d /var/abs/testing ]; then + mkdir /var/abs/testing; + fi + cd $ABSROOT/testing + cvsup -L 1 -r 0 -g -b $ABSROOT/testing -c .sup /etc/abs/supfile.testing + cd $ABSROOT + fi + done } @@ -93,4 +92,4 @@ fi update exit 0 -# vim: set ts=2 noet: +# vim: set ts=2 sw=2 noet: diff --git a/scripts/aurbuild b/scripts/aurbuild index 02346d8d..cc91efc5 100755 --- a/scripts/aurbuild +++ b/scripts/aurbuild @@ -22,3 +22,4 @@ rm -f $pkgname.tar.gz cd $pkgname || die "Failed to cwd" makepkg +# vim: set ts=2 sw=2 noet: diff --git a/scripts/gensync b/scripts/gensync index 8ddee82a..daac7e84 100755 --- a/scripts/gensync +++ b/scripts/gensync @@ -210,10 +210,10 @@ echo "gensync: building database entries, generating md5sums..." >&2 cd `dirname $2` for file in `find $rootdir/* -name PKGBUILD`; do source $file || die "errors parsing $file" - db_write_entry $file || die "error writing entry for $file" - else - echo "gensync: missing package: $pkgfile" >&2 - fi + db_write_entry $file || die "error writing entry for $file" +else + echo "gensync: missing package: $pkgfile" >&2 +fi done echo "gensync: compressing to $destfile..." >&2 @@ -223,4 +223,5 @@ tar c * | gzip -9 >$destfile rm -rf $gstmpdir exit 0 + # vim: set ts=2 sw=2 noet: diff --git a/scripts/makepkg b/scripts/makepkg index cec871e7..0eb627e3 100755 --- a/scripts/makepkg +++ b/scripts/makepkg @@ -26,7 +26,7 @@ # myver='3.0.0' -startdir=`pwd` +startdir=$(pwd) PKGDEST=$startdir BUILDSCRIPT="PKGBUILD" @@ -77,11 +77,11 @@ msg() { } msg2() { - if [ "$USE_COLOR" = "Y" -o "$USE_COLOR" = "y" ]; then - echo -e " \033[1;34m->\033[1;0m \033[1;1m$1\033[1;0m" >&2 - else - echo " -> $1" >&2 - fi + if [ "$USE_COLOR" = "Y" -o "$USE_COLOR" = "y" ]; then + echo -e " \033[1;34m->\033[1;0m \033[1;1m$1\033[1;0m" >&2 + else + echo " -> $1" >&2 + fi } warning() { @@ -106,8 +106,8 @@ strip_url() { check_option() { local i for i in ${options[@]}; do - local uc=`echo $i | tr [:lower:] [:upper:]` - local lc=`echo $i | tr [:upper:] [:lower:]` + local uc=$(echo $i | tr [:lower:] [:upper:]) + local lc=$(echo $i | tr [:upper:] [:lower:]) if [ "$uc" = "$1" -o "$lc" = "$1" ]; then echo $1 return @@ -116,13 +116,13 @@ check_option() { } in_array() { - needle=$1 - shift 1 - [ -z "$1" ] && return 1 - for i in $*; do - [ "$i" == "$needle" ] && return 0 - done - return 1 + needle=$1 + shift 1 + [ -z "$1" ] && return 1 + for i in $*; do + [ "$i" == "$needle" ] && return 0 + done + return 1 } checkdeps() { @@ -131,7 +131,7 @@ checkdeps() { [ $# -gt 0 ] || return - missdep=`pacman $PACMAN_OPTS -T $*` + missdep=$(pacman $PACMAN_OPTS -T $*) ret=$? if [ "$ret" != "0" ]; then if [ "$ret" = "127" ]; then @@ -144,7 +144,7 @@ checkdeps() { nl=0 echo -ne "\n" >&2 # add this dep to the list - depname=`echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||'` + depname=$(echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||') deplist="$deplist $depname" continue fi @@ -163,7 +163,7 @@ handledeps() { local missingdeps=0 local deplist="$*" local haveperm=0 - if [ \( "`id -u`" = "0" -a "$INFAKEROOT" != "1" \) -o "$DEP_SUDO" = 1 ]; then + if [ \( "$EUID" = "0" -a "$INFAKEROOT" != "1" \) -o "$DEP_SUDO" = 1 ]; then haveperm=1 fi @@ -171,7 +171,7 @@ handledeps() { if [ "$DEP_BIN" = "1" ]; then # install missing deps from binary packages (using pacman -S) msg "Installing missing dependencies..." - pacman $PACMAN_OPTS -D $deplist + pacman $PACMAN_OPTS -D $deplist if [ "$?" = "127" ]; then error "Failed to install missing dependencies." exit 1 @@ -184,8 +184,8 @@ handledeps() { # in fakeroot so it will go ahead and install the dependencies. FAKEROOTKEY2=$FAKEROOTKEY unset FAKEROOTKEY - fi - sudo pacman $PACMAN_OPTS -D $deplist + fi + sudo pacman $PACMAN_OPTS -D $deplist if [ "$?" = "127" ]; then error "Failed to install missing dependencies." exit 1 @@ -193,12 +193,12 @@ handledeps() { if [ "$INFAKEROOT" = "1" ]; then export FAKEROOTKEY=$FAKEROOTKEY2 unset FAKEROOTKEY2 - fi + fi elif [ "$DEP_SRC" = "1" ]; then # install missing deps by building them from source. # we look for each package name in $SRCROOT and build it. if [ "$SRCROOT" = "" ]; then - error "Source root cannot be found - please make sure it is specified in /etc/makepkg.conf" + error "Source root cannot be found - please make sure it is specified in /etc/makepkg.conf" exit 1 fi # TODO: handle version comparators (eg, glibc>=2.2.5) @@ -269,7 +269,7 @@ usage() { echo " -h, --help This help" echo " -i, --install Install package after successful build" echo " -j Set MAKEFLAGS to \"-j\" before building" - echo " -k, --keepdocs Keep doc and info directories" + echo " -k, --keepdocs Keep doc and info directories" echo " -L, --log Log package build process" echo " -m, --nocolor Disable colorized output messages" echo " -n, --nostrip Do not strip symbols from binaries/libraries" @@ -278,8 +278,8 @@ usage() { echo " -r, --rmdeps Remove installed dependencies after a successful build" echo " -s, --syncdeps Install missing dependencies with pacman" echo " -S, --sudosync Install missing dependencies with pacman and sudo" - # fix flyspray feature request #5223 - Dan McGee - echo " -t Cache source files in " + # fix flyspray feature request #5223 - Dan McGee + echo " -t Cache source files in " echo " -w Write package to instead of the working dir" echo echo "These options can be passed to pacman:" @@ -294,10 +294,10 @@ usage() { ARGLIST=$@ if [ -f /etc/makepkg.conf ]; then - source /etc/makepkg.conf + source /etc/makepkg.conf else - error "/etc/makepkg.conf not found. cannot continue" - exit 1 + error "/etc/makepkg.conf not found. cannot continue" + exit 1 fi #Let's be courteous and support frugalware's extensions @@ -305,10 +305,10 @@ fi while [ "$#" -ne "0" ]; do case $1 in -# pacman + # pacman --noconfirm) PACMAN_OPTS="$PACMAN_OPTS --noconfirm" ;; --noprogressbar) PACMAN_OPTS="$PACMAN_OPTS --noprogressbar" ;; -# makepkg + # makepkg --clean) CLEANUP=1 ;; --cleancache) CLEANCACHE=1 ;; --syncdeps) DEP_BIN=1 ;; @@ -319,69 +319,69 @@ while [ "$#" -ne "0" ]; do --noextract) NOEXTRACT=1 ;; --install) INSTALL=1 ;; --force) FORCE=1 ;; - --keepdocs) KEEPDOCS=1 ;; + --keepdocs) KEEPDOCS=1 ;; --nostrip) NOSTRIP=1 ;; --nobuild) NOBUILD=1 ;; --nocolor) USE_COLOR="n" ;; --geninteg) GENINTEG=1 ;; --rmdeps) RMDEPS=1 ;; - --log) LOGGING=1 ;; + --log) LOGGING=1 ;; --help) - usage - exit 0 - ;; + usage + exit 0 + ;; --*) - usage - exit 1 - ;; + usage + exit 1 + ;; -*) - while getopts "bBcCdefghij:kLmnop:rsSt:w:-" opt; do - case $opt in - b) DEP_SRC=1 ;; - B) USE_CCACHE=0 ;; - c) CLEANUP=1 ;; - C) CLEANCACHE=1 ;; - d) NODEPS=1 ;; - e) NOEXTRACT=1 ;; - f) FORCE=1 ;; - g) GENINTEG=1 ;; - h) - usage - exit 0 - ;; - i) INSTALL=1 ;; - j) export MAKEFLAGS="-j$OPTARG" ;; - k) KEEPDOCS=1 ;; - L) LOGGING=1 ;; - m) USE_COLOR="n" ;; - n) NOSTRIP=1 ;; - o) NOBUILD=1 ;; - p) BUILDSCRIPT=$OPTARG ;; - r) RMDEPS=1 ;; - s) DEP_BIN=1 ;; - S) DEP_SUDO=1 ;; - t) SRCDEST=$OPTARG ;; - w) PKGDEST=$OPTARG ;; - -) - OPTIND=0 - break - ;; - *) - usage - exit 1 - ;; - esac - done - ;; + while getopts "bBcCdefghij:kLmnop:rsSt:w:-" opt; do + case $opt in + b) DEP_SRC=1 ;; + B) USE_CCACHE=0 ;; + c) CLEANUP=1 ;; + C) CLEANCACHE=1 ;; + d) NODEPS=1 ;; + e) NOEXTRACT=1 ;; + f) FORCE=1 ;; + g) GENINTEG=1 ;; + h) + usage + exit 0 + ;; + i) INSTALL=1 ;; + j) export MAKEFLAGS="-j$OPTARG" ;; + k) KEEPDOCS=1 ;; + L) LOGGING=1 ;; + m) USE_COLOR="n" ;; + n) NOSTRIP=1 ;; + o) NOBUILD=1 ;; + p) BUILDSCRIPT=$OPTARG ;; + r) RMDEPS=1 ;; + s) DEP_BIN=1 ;; + S) DEP_SUDO=1 ;; + t) SRCDEST=$OPTARG ;; + w) PKGDEST=$OPTARG ;; + -) + OPTIND=0 + break + ;; + *) + usage + exit 1 + ;; + esac + done + ;; *) - true - ;; + true + ;; esac shift done # check for sudo -if [ "$DEP_SUDO" = "1" -a ! "`type -p sudo`" ]; then +if [ "$DEP_SUDO" = "1" -a ! "$(type -p sudo)" ]; then error "Cannot find the sudo binary! Is sudo installed?" exit 1 fi @@ -392,25 +392,25 @@ if [ $? -ne 0 ]; then error "Package destination directory does not exist or permission denied." exit 1 fi -PKGDEST=`pwd` +PKGDEST=$(pwd) cd $OLDPWD if [ "$CLEANCACHE" = "1" ]; then - if [ -n "$SRCDEST" ]; then - msg "Cleaning up source files from the cache." - rm -rf /var/cache/pacman/src/* - rm -rf "${SRCDEST}"/* - exit 0 - else - if [ "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then - msg "Cleaning up source files from the cache." - rm -rf /var/cache/pacman/src/* - exit 0 - else - error "You must be root to clean the cache." - exit 1 - fi - fi + if [ -n "$SRCDEST" ]; then + msg "Cleaning up source files from the cache." + rm -rf /var/cache/pacman/src/* + rm -rf "${SRCDEST}"/* + exit 0 + else + if [ "$EUID" = "0" -a "$INFAKEROOT" != "1" ]; then + msg "Cleaning up source files from the cache." + rm -rf /var/cache/pacman/src/* + exit 0 + else + error "You must be root to clean the cache." + exit 1 + fi + fi fi unset pkgname pkgver pkgrel pkgdesc url license groups provides md5sums force @@ -424,13 +424,13 @@ umask 0022 if [ ! -f $BUILDSCRIPT ]; then error "$BUILDSCRIPT does not exist." exit 1 -#TODO this is an attempt at a generic way to unset all package specific -#variables in a PKGBUILD -#else -# #this is fun.... we'll unset -# for var in $(grep "=" $BUILDSCRIPT | sed "s|.*\(\<.*\>\)=.*|\1|g"); do -# unset $var -# done + #TODO this is an attempt at a generic way to unset all package specific + #variables in a PKGBUILD + #else + # #this is fun.... we'll unset + # for var in $(grep "=" $BUILDSCRIPT | sed "s|.*\(\<.*\>\)=.*|\1|g"); do + # unset $var + # done fi source $BUILDSCRIPT @@ -454,8 +454,8 @@ if [ $(echo $pkgrel | grep '-') ]; then fi if ! in_array $CARCH ${arch[@]}; then error "$pkgname is not available for the '$CARCH' architecture." - plain "Note that many packages may need a line added to their $BUILDSCRIPT" - plain "such as arch=('$CARCH')." + plain "Note that many packages may need a line added to their $BUILDSCRIPT" + plain "such as arch=('$CARCH')." exit 1 fi @@ -478,9 +478,9 @@ fi # Enter the fakeroot environment if necessary. This will call the makepkg script again # as the fake root user. We detect this by passing a sentinel option (-F) to makepkg -if [ "`id -u`" != "0" ]; then +if [ "$EUID" != "0" ]; then if [ "$USE_FAKEROOT" = "y" -o "$USE_FAKEROOT" = "Y" ]; then - if [ `type -p fakeroot` ]; then + if [ $(type -p fakeroot) ]; then msg "Entering fakeroot environment" fakeroot -- $0 -F $ARGLIST exit $? @@ -501,25 +501,25 @@ if [ "`id -u`" != "0" ]; then fi fi -msg "Making package: $pkgname $pkgver-$pkgrel (`date`)" +msg "Making package: $pkgname $pkgver-$pkgrel ($(date))" unset deplist makedeplist # fix flyspray bug #5973 - Dan McGee -if [ `type -p pacman` -a "$NODEPS" = "0" -a "$GENINTEG" = "0" -a "$NOBUILD" = "0" ]; then +if [ $(type -p pacman) -a "$NODEPS" = "0" -a "$GENINTEG" = "0" -a "$NOBUILD" = "0" ]; then msg "Checking Runtime Dependencies..." - deplist=`checkdeps ${depends[@]}` + deplist=$(checkdeps ${depends[@]}) handledeps $deplist if [ $? -gt 0 ]; then exit 1 fi # check deps again to make sure they were resolved - deplist=`checkdeps ${depends[@]}` + deplist=$(checkdeps ${depends[@]}) if [ ! -z "$deplist" ]; then error "Failed to install missing dependencies." exit 1 fi msg "Checking Buildtime Dependencies..." - makedeplist=`checkdeps ${makedepends[@]}` + makedeplist=$(checkdeps ${makedepends[@]}) handledeps $makedeplist if [ $? -gt 0 ]; then exit 1 @@ -554,9 +554,9 @@ for netfile in ${source[@]}; do msg "Aborting..." exit 1 fi - ftpclient=`echo $FTPAGENT | awk {'print $1'}` + ftpclient=$(echo $FTPAGENT | awk {'print $1'}) if [ ! -x "$ftpclient" ]; then - error "ftpclient `basename $ftpclient` is not installed." + error "ftpclient $(basename $ftpclient) is not installed." msg "Aborting..." exit 1 fi @@ -568,145 +568,152 @@ for netfile in ${source[@]}; do fi msg " Downloading $file" $FTPAGENT "$netfile" 2>&1 - # fix flyspray bug #3289 - ftpret=$? - if [ $ftpret -gt 0 ]; then - error "Failure while downloading $file" - msg "Aborting..." - rm "$file" - exit 1 + # fix flyspray bug #3289 + ftpret=$? + if [ $ftpret -gt 0 ]; then + error "Failure while downloading $file" + msg "Aborting..." + rm "$file" + exit 1 exit 1 fi - if [ "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then + if [ "$EUID" = "0" -a "$INFAKEROOT" != "1" ]; then mkdir -p /var/cache/pacman/src && cp $file /var/cache/pacman/src - if [ -n "$SRCDEST" ]; then - mkdir -p $SRCDEST && cp "$file" $SRCDEST - elif [ "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then - mkdir -p /var/cache/pacman/src && cp "$file" /var/cache/pacman/src - else - cp "$file" .. - fi + if [ -n "$SRCDEST" ]; then + mkdir -p $SRCDEST && cp "$file" $SRCDEST + elif [ "$EUID" = "0" -a "$INFAKEROOT" != "1" ]; then + mkdir -p /var/cache/pacman/src && cp "$file" /var/cache/pacman/src + else + cp "$file" .. + fi fi fi done +if [ "$NOEXTRACT" = "1" ]; then + warning "Skipping source integrity checks -- using existing src/ tree" +else + for integ in ${INTEGRITY_CHECK[@]}; do + integ="$(echo $integ | tr A-Z a-z)" + case "$integ" in + md5) integrity_name="md5sum" ;; + sha1) integrity_name="sha1sum" ;; + sha256) integrity_name="sha256sum" ;; + sha384) integrity_name="sha384sum" ;; + sha512) integrity_name="sha512sum" ;; + *) error "Invalid integrity algorithm '$integ' specified"; exit 1;; + esac + if [ ! $(type -p $integrity_name) ]; then + error "Cannot find the $integrity_name program." + exit 1 + fi + + #Generate integrity checks + if [ "$GENINTEG" = "1" ]; then + msg "Generating ${integrity_name}s for source files" + plain "" + ct=0 + newline=0 + numsrc=${#source[@]} + for netfile in "${source[@]}"; do + file=$(strip_url "$netfile") + sum=$(eval "$integrity_name '$file' | cut -d' ' -f 1") + if [ $ct -eq 0 ]; then + echo -n "${integrity_name}s=(" + else + echo -ne "\t " + fi + echo -n "'$sum'" + ct=$(($ct+1)) + if [ $ct -eq $numsrc ]; then + echo ')' + else + echo ' \' + newline=0 + fi + done + plain "" + #Validate integrity checks + else + integrity_sums=($(eval echo \${${integrity_name}s[@]})) + + if [ ${#integrity_sums[@]} -eq ${#source[@]} ]; then + msg "Validating source files with ${integrity_name}s" + errors=0 + idx=0 + for netfile in "${source[@]}"; do + file=$(strip_url "$netfile") + echo -n " $file ... " >&2 + echo "${integrity_sums[$idx]} $file" | $integrity_name -c - >/dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "FAILED" >&2 + errors=1 + else + echo "Passed" >&2 + fi + idx=$(($idx+1)) + done + if [ $errors -gt 0 ]; then + error "One or more files did not pass the validity check!" + exit 1 + fi + else + warning "Integrity checks ($integ) are missing or incomplete." + fi + fi + done + + if [ "$GENINTEG" = "1" ]; then + exit 0 + fi +fi + +#Extract sources if [ "$NOEXTRACT" = "1" ]; then warning "Skipping source extraction -- using existing src/ tree" - warning "Skipping source integrity checks -- using existing src/ tree" else - for integ in ${INTEGRITY_CHECK[@]}; do - integ="$(echo $integ | tr A-Z a-z)" - case "$integ" in - md5) integrity_name="md5sum" ;; - sha1) integrity_name="sha1sum" ;; - sha256) integrity_name="sha256sum" ;; - sha384) integrity_name="sha384sum" ;; - sha512) integrity_name="sha512sum" ;; - *) error "Invalid integrity algorithm '$integ' specified"; exit 1;; - esac - if [ ! $(type -p $integrity_name) ]; then - error "Cannot find the $integrity_name program." - exit 1 - fi - - #Generate integrity checks - if [ "$GENINTEG" = "1" ]; then - msg "Generating ${integrity_name}s for source files" - plain "" - ct=0 - newline=0 - numsrc=${#source[@]} - for netfile in "${source[@]}"; do - file=`strip_url "$netfile"` - sum=$(eval "$integrity_name '$file' | cut -d' ' -f 1") - if [ $ct -eq 0 ]; then - echo -n "${integrity_name}s=(" - else - echo -ne "\t " - fi - echo -n "'$sum'" - ct=$(($ct+1)) - if [ $ct -eq $numsrc ]; then - echo ')' - else - echo ' \' - newline=0 - fi - done - plain "" - exit 0 - #Validate integrity checks - else - integrity_sums=($(eval echo \${${integrity_name}s[@]})) - - if [ ${#integrity_sums[@]} -eq ${#source[@]} ]; then - msg "Validating source files with ${integrity_name}s" - errors=0 - idx=0 - for netfile in "${source[@]}"; do - file=$(strip_url "$netfile") - echo -n " $file ... " >&2 - echo "${integrity_sums[$idx]} $file" | $integrity_name -c - >/dev/null 2>&1 - if [ $? -ne 0 ]; then - echo "FAILED" >&2 - errors=1 - else - echo "Passed" >&2 - fi - idx=$(($idx+1)) - done - if [ $errors -gt 0 ]; then - error "One or more files did not pass the validity check!" - exit 1 - fi - else - warning "Integrity checks ($INTEGRITY_CHECK) are missing or incomplete." - fi - fi - done - - msg "Extracting Sources..." - for netfile in "${source[@]}"; do - unziphack=0 - file=`strip_url "$netfile"` - unset cmd - case "`echo $file |tr "A-Z" "a-z"`" in - *.tar.gz|*.tar.z|*.tgz) - cmd="tar --use-compress-program=gzip -xf $file" ;; - *.tar.bz2|*.tbz2) - cmd="tar --use-compress-program=bzip2 -xf $file" ;; - *.tar) - cmd="tar -xf $file" ;; - *.zip) - unziphack=1 - cmd="unzip -qqo $file" ;; - *.cpio.gz) - cmd="bsdtar -x -f $file" ;; - *.cpio.bz2) - cmd="bsdtar -x -f $file" ;; - *.gz) - cmd="gunzip -f $file" ;; - *.bz2) - cmd="bunzip2 -f $file" ;; - esac - if [ "$cmd" != "" ]; then - msg " $cmd" - $cmd - if [ $? -ne 0 ]; then - # unzip will return a 1 as a warning, it is not an error - if [ "$unziphack" != "1" -o $? -ne 1 ]; then - error "Failed to extract $file" - msg "Aborting..." - exit 1 - fi - fi - fi - done -fi - -if [ "`id -u`" = "0" ]; then + msg "Extracting Sources..." + for netfile in "${source[@]}"; do + unziphack=0 + file=$(strip_url "$netfile") + unset cmd + case "$(echo $file |tr "A-Z" "a-z")" in + *.tar.gz|*.tar.z|*.tgz) + cmd="tar --use-compress-program=gzip -xf $file" ;; + *.tar.bz2|*.tbz2) + cmd="tar --use-compress-program=bzip2 -xf $file" ;; + *.tar) + cmd="tar -xf $file" ;; + *.zip) + unziphack=1 + cmd="unzip -qqo $file" ;; + *.cpio.gz) + cmd="bsdtar -x -f $file" ;; + *.cpio.bz2) + cmd="bsdtar -x -f $file" ;; + *.gz) + cmd="gunzip -f $file" ;; + *.bz2) + cmd="bunzip2 -f $file" ;; + esac + if [ "$cmd" != "" ]; then + msg " $cmd" + $cmd + if [ $? -ne 0 ]; then + # unzip will return a 1 as a warning, it is not an error + if [ "$unziphack" != "1" -o $? -ne 1 ]; then + error "Failed to extract $file" + msg "Aborting..." + exit 1 + fi + fi + fi + done +fi + +if [ "$EUID" = "0" ]; then # chown all source files to root.root chown -R root.root $startdir/src fi @@ -718,18 +725,18 @@ if [ -d $startdir/pkg ]; then fi mkdir -p $startdir/pkg -if [ "x$NOBUILD" = "1" ]; then +if [ "$NOBUILD" = "1" ]; then msg "Sources are ready." exit 0 fi # use distcc if requested -if [ "x$USE_DISTCC" = "y" ]; then +if [ "$USE_DISTCC" = "y" ]; then [ -d /usr/lib/distcc/bin ] && export PATH=/usr/lib/distcc/bin:$PATH fi # use ccache if it's available -if [ "x$USE_CCACHE" = "1" ]; then +if [ "$USE_CCACHE" = "1" ]; then [ -d /usr/lib/ccache/bin ] && export PATH=/usr/lib/ccache/bin:$PATH fi @@ -740,41 +747,41 @@ msg "Starting build()..." echo $SHELLOPTS | grep errexit 2>&1 >/dev/null set_e=$? -if [ "x$LOGGING" = "1" ]; then - BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log" - if [ -f "$BUILDLOG" ]; then - i=1 - while true; do - if [ -f "$BUILDLOG.$i" ]; then - i=$(($i +1)) - else - break - fi - done - mv "$BUILDLOG" "$BUILDLOG.$i" - fi - - #use 'errexit' to bail on syntax error - [ $set_e -eq 1 ] && set -e - build 2>&1 | tee "$BUILDLOG" - [ $set_e -eq 1 ] && set +e - - if [ ${PIPESTATUS[0]} -gt 0 ]; then - error "Build Failed. Aborting..." - exit 2 - fi +if [ "$LOGGING" = "1" ]; then + BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log" + if [ -f "$BUILDLOG" ]; then + i=1 + while true; do + if [ -f "$BUILDLOG.$i" ]; then + i=$(($i +1)) + else + break + fi + done + mv "$BUILDLOG" "$BUILDLOG.$i" + fi + + #use 'errexit' to bail on syntax error + [ $set_e -eq 1 ] && set -e + build 2>&1 | tee "$BUILDLOG" + [ $set_e -eq 1 ] && set +e + + if [ ${PIPESTATUS[0]} -gt 0 ]; then + error "Build Failed. Aborting..." + exit 2 + fi else - #use 'errexit' to bail on syntax error - [ $set_e -eq 1 ] && set -e - build 2>&1 - [ $set_e -eq 1 ] && set +e - if [ $? -gt 0 ]; then - error "Build Failed. Aborting..." - exit 2 - fi + #use 'errexit' to bail on syntax error + [ $set_e -eq 1 ] && set -e + build 2>&1 + [ $set_e -eq 1 ] && set +e + if [ $? -gt 0 ]; then + error "Build Failed. Aborting..." + exit 2 + fi fi -if [ ! "`check_option KEEPDOCS`" -a "$KEEPDOCS" = "0" ]; then +if [ ! "$(check_option KEEPDOCS)" -a "$KEEPDOCS" = "0" ]; then # remove info/doc files msg "Removing info/doc files..." cd $startdir @@ -790,63 +797,56 @@ if [ -d pkg/usr/share/man ]; then 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 msg "Compressing man pages..." find $startdir/pkg/{usr{,/local},opt/*}/man -type f 2>/dev/null | while read i ; do - ext="${i##*.}" - fn="${i##*/}" - if [ "$ext" != "gz" -a "$ext" != "bz2" ]; then - # update symlinks to this manpage - find $startdir/pkg/{usr{,/local},opt/*}/man -lname "$fn" 2> /dev/null | while read ln ; do - rm -f "$ln" - ln -sf "${fn}.gz" "${ln}.gz" - done - # compress the original - gzip -9 "$i" +ext="${i##*.}" +fn="${i##*/}" +if [ "$ext" != "gz" -a "$ext" != "bz2" ]; then + # update symlinks to this manpage + find $startdir/pkg/{usr{,/local},opt/*}/man -lname "$fn" 2> /dev/null | while read ln ; do + rm -f "$ln" + ln -sf "${fn}.gz" "${ln}.gz" +done +# compress the original +gzip -9 "$i" fi done cd $startdir # strip binaries -if [ ! "`check_option NOSTRIP`" -a "$NOSTRIP" = "0" ]; then +if [ ! "$(check_option NOSTRIP)" -a "$NOSTRIP" = "0" ]; then msg "Stripping debugging symbols from libraries..." find pkg/{,usr,usr/local,opt/*}/lib -type f -not -name "*.dll" -not -name "*.exe" \ - -exec /usr/bin/strip --strip-debug '{}' \; 2>&1 \ - | grep -v "No such file" | grep -v "format not recognized" + -exec /usr/bin/strip --strip-debug '{}' \; 2>&1 \ + | grep -v "No such file" | grep -v "format not recognized" msg "Stripping symbols from binaries..." find pkg/{,usr,usr/local,opt/*}/{bin,sbin} -type f -not -name "*.dll" -not -name "*.exe" \ - -exec /usr/bin/strip '{}' \; 2>&1 \ - | grep -v "No such file" | grep -v "format not recognized" + -exec /usr/bin/strip '{}' \; 2>&1 \ + | grep -v "No such file" | grep -v "format not recognized" fi # remove libtool (.la) files -if [ "`check_option NOLIBTOOL`" -a "x$NOLIBTOOL" = "1" ]; then +if [ "$(check_option NOLIBTOOL)" -a "$NOLIBTOOL" = "1" ]; then msg "Removing libtool .la files..." find pkg -type f -name "*.la" -exec rm -f -- '{}' \; fi # remove empty directories -if [ "`check_option NOEMPTYDIRS`" -a "x$NOEMPTYDIRS" = 1 ]; then +if [ "$(check_option NOEMPTYDIRS)" -a "$NOEMPTYDIRS" = 1 ]; then msg "Removing empty directories..." find pkg -depth -type d -empty -delete; fi # get some package meta info -builddate=`LC_ALL= ; LANG= ; date -u "+%a %b %e %H:%M:%S %Y"` +builddate=$(LC_ALL= ; LANG= ; date -u "+%a %b %e %H:%M:%S %Y") if [ "$PACKAGER" != "" ]; then packager="$PACKAGER" else packager="Arch Linux (http://www.archlinux.org)" fi -size=`du -cb $startdir/pkg | tail -n 1 | awk '{print $1}'` +size=$(du -cb $startdir/pkg | tail -n 1 | awk '{print $1}') # write the .PKGINFO file msg "Generating .PKGINFO file..." @@ -909,18 +909,18 @@ fi $cmd | sort >../filelist if [ ${PIPESTATUS[0]} -gt 0 ]; then - error "Failed to create package file." - exit ${PIPESTATUS[0]} + error "Failed to create package file." + exit ${PIPESTATUS[0]} fi cd $startdir if [ "$CLEANUP" = "1" ]; then msg "Cleaning up..." rm -rf src pkg filelist - rm -rf ${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log* + rm -rf ${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log* fi -if [ "$RMDEPS" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then +if [ "$RMDEPS" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then msg "Removing installed dependencies..." pacman $PACMAN_OPTS -R $makedeplist $deplist elif [ "$RMDEPS" = "1" -a "$DEP_SUDO" = "1" ]; then @@ -936,9 +936,9 @@ elif [ "$RMDEPS" = "1" -a "$DEP_SUDO" = "1" ]; then fi fi -msg "Finished making: $pkgname (`date`)" +msg "Finished making: $pkgname ($(date))" -if [ "$INSTALL" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then +if [ "$INSTALL" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" ]; then msg "Installing package with pacman -U..." pacman $PACMAN_OPTS -U $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT} exit $? @@ -956,3 +956,5 @@ elif [ "$INSTALL" = "1" -a "$DEP_SUDO" = "1" ]; then fi exit 0 +# vim: set ts=2 sw=2 noet: + diff --git a/scripts/makeworld b/scripts/makeworld index f9a58f25..9182680a 100755 --- a/scripts/makeworld +++ b/scripts/makeworld @@ -58,10 +58,10 @@ fi MAKEPKG_OPTS= for arg in $*; do case $arg in -# pacman + # pacman --noconfirm) MAKEPKG_OPTS="$MAKEPKG_OPTS --noconfirm" ;; --noprogressbar) MAKEPKG_OPTS="$MAKEPKG_OPTS --noprogressbar" ;; -# makepkg + # makepkg --clean) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;; --install) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;; --syncdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;; @@ -71,40 +71,40 @@ for arg in $*; do --force) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;; --rmdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;; --help) - usage - exit 0 - ;; + usage + exit 0 + ;; --*) - usage - exit 1 - ;; + usage + exit 1 + ;; -*) - while getopts "chisSbdfr-" opt; do - case $opt in - c) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;; - i) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;; - s) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;; - S) MAKEPKG_OPTS="$MAKEPKG_OPTS -S" ;; - b) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;; - d) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;; - f) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;; - r) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;; - h) - usage - exit 0 - ;; - -) - OPTIND=0 - break - ;; - esac - done - ;; + while getopts "chisSbdfr-" opt; do + case $opt in + c) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;; + i) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;; + s) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;; + S) MAKEPKG_OPTS="$MAKEPKG_OPTS -S" ;; + b) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;; + d) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;; + f) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;; + r) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;; + h) + usage + exit 0 + ;; + -) + OPTIND=0 + break + ;; + esac + done + ;; *) - dest=$arg - shift - break - ;; + dest=$arg + shift + break + ;; esac shift if [ "$dest" != "" ]; then @@ -155,3 +155,5 @@ echo " started: $sd" >>$toplevel/build.log echo " finished: $ed" >>$toplevel/build.log exit 0 + +# vim: set ts=2 sw=2 noet: diff --git a/scripts/pacman-optimize b/scripts/pacman-optimize index 74f3e64b..4cf1819a 100755 --- a/scripts/pacman-optimize +++ b/scripts/pacman-optimize @@ -112,3 +112,4 @@ echo exit 0 +# vim: set ts=2 sw=2 noet: diff --git a/scripts/rankmirrors b/scripts/rankmirrors index 2a8f8827..41db9a62 100644 --- a/scripts/rankmirrors +++ b/scripts/rankmirrors @@ -24,90 +24,90 @@ import sys, datetime, time, socket, urllib2 from optparse import OptionParser def createOptParser(): - usage = "usage: %prog [options] MIRRORFILE" - description = "Ranks pacman mirrors by their connection and opening speed. Pacman mirror files are located in /etc/pacman.d/." - parser = OptionParser(usage=usage,description=description) - parser.add_option("-f", "--formatted", action="store_true", - dest = "formatted", default=False, help="output in mirror file format") - parser.add_option("-n", dest="num", default=0, - help="number of servers to output, 0 for all") - parser.add_option("-v", "--verbose", action="store_true", dest="verbose", - default=False, help="be verbose in output") - return parser + usage = "usage: %prog [options] MIRRORFILE" + description = "Ranks pacman mirrors by their connection and opening speed. Pacman mirror files are located in /etc/pacman.d/." + parser = OptionParser(usage=usage,description=description) + parser.add_option("-f", "--formatted", action="store_true", + dest = "formatted", default=False, help="output in mirror file format") + parser.add_option("-n", dest="num", default=0, + help="number of servers to output, 0 for all") + parser.add_option("-v", "--verbose", action="store_true", dest="verbose", + default=False, help="be verbose in output") + return parser def timeCmd(cmd): - before = time.time(); - try: - cmd(); - except KeyboardInterrupt, ki: - raise ki - except socket.timeout, ioe: - return 'timeout' - except Exception, e: - return 'unreachable' - return time.time() - before; + before = time.time(); + try: + cmd(); + except KeyboardInterrupt, ki: + raise ki + except socket.timeout, ioe: + return 'timeout' + except Exception, e: + return 'unreachable' + return time.time() - before; def talkToServer(serverUrl): - opener = urllib2.build_opener() - tmp = opener.open(serverUrl).read() + opener = urllib2.build_opener() + tmp = opener.open(serverUrl).read() def getFuncToTime(serverUrl): - return lambda : talkToServer(serverUrl) + return lambda : talkToServer(serverUrl) def cmpPairBySecond(p1, p2): - if p1[1] == p2[1]: return 0 - if p1[1] < p2[1]: return -1 - return 1 + if p1[1] == p2[1]: return 0 + if p1[1] < p2[1]: return -1 + return 1 if __name__ == "__main__": - parser = createOptParser() - (options, args) = parser.parse_args() + parser = createOptParser() + (options, args) = parser.parse_args() - if len(args) != 1: - parser.print_help(sys.stderr) - sys.exit(0) + if len(args) != 1: + parser.print_help(sys.stderr) + sys.exit(0) - # allows connections to time out if they take too long - socket.setdefaulttimeout(10) + # allows connections to time out if they take too long + socket.setdefaulttimeout(10) - fl = open(args[0], 'r') - serverToTime = {} - if options.formatted: - print "# Server list generated by rankmirrors on", datetime.date.today() - else: - print 'Querying servers, this may take some time...' - for ln in fl.readlines(): - splitted = ln.split('=') - if splitted[0].strip() != 'Server': - if options.formatted: - print ln, - continue + fl = open(args[0], 'r') + serverToTime = {} + if options.formatted: + print "# Server list generated by rankmirrors on", datetime.date.today() + else: + print 'Querying servers, this may take some time...' + for ln in fl.readlines(): + splitted = ln.split('=') + if splitted[0].strip() != 'Server': + if options.formatted: + print ln, + continue - serverUrl = splitted[1].strip() - if serverUrl[-1] == '\n': serverUrl = serverUrl[0:-1] - if options.verbose and options.formatted: - print '#',serverUrl,'...', - elif options.verbose: - print serverUrl,'...', - elif not options.formatted: - print ' * ', - sys.stdout.flush() - serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl)) - if options.verbose: - print serverToTime[serverUrl] + serverUrl = splitted[1].strip() + if serverUrl[-1] == '\n': serverUrl = serverUrl[0:-1] + if options.verbose and options.formatted: + print '#',serverUrl,'...', + elif options.verbose: + print serverUrl,'...', + elif not options.formatted: + print ' * ', + sys.stdout.flush() + serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl)) + if options.verbose: + print serverToTime[serverUrl] - items = serverToTime.items() - items.sort(cmpPairBySecond) - numToShow = int(options.num) - if numToShow == 0: numToShow = len(items) - if len(items) > 0: - if options.formatted: - for i in items[0:numToShow]: - print 'Server =', i[0] - else: - print - print ' Servers sorted by time:' - for i in items[0:numToShow]: - print i[1], ':', i[0] + items = serverToTime.items() + items.sort(cmpPairBySecond) + numToShow = int(options.num) + if numToShow == 0: numToShow = len(items) + if len(items) > 0: + if options.formatted: + for i in items[0:numToShow]: + print 'Server =', i[0] + else: + print + print ' Servers sorted by time:' + for i in items[0:numToShow]: + print i[1], ':', i[0] -# vim: set ts=4 sw=4 sta et sts ai: +# vim: set ts=4 sw=4 et: diff --git a/scripts/re-pacman b/scripts/re-pacman index 74c77ac2..350fe865 100644 --- a/scripts/re-pacman +++ b/scripts/re-pacman @@ -25,40 +25,38 @@ #TODO # * Check for md5 changes in backup lines and change pkgrel -pacinfo () -{ - [ $# -ne 2 ] && return 1 - #use echo to strip spaces - echo $(pacman -Qi ${1} | grep "${2}" | cut -d: -f2-) +pacinfo () { + [ $# -ne 2 ] && return 1 + #use echo to strip spaces + echo $(pacman -Qi ${1} | grep "${2}" | cut -d: -f2-) } -make_pkginfo () -{ - echo "# Generated by re-pacman 1.0.0" - echo "# On $(date)" - echo "pkgname =$(pacinfo ${1} Name)" - echo "pkgver =$(pacinfo ${1} Version)" - echo "pkgdesc =$(pacinfo ${1} Description)" - echo "url =$(pacinfo ${1} URL)" - echo "builddate =$(pacinfo ${1} 'Build Date')" - echo "packager =$(pacinfo ${1} Packager)" - echo "size =$(pacinfo ${1} Size)" - echo "arch =$(pacinfo ${1} Architecture)" - deps=$(pacinfo ${1} 'Depends On') - for d in ${deps}; do - echo "depend = ${d}" - done +make_pkginfo () { + echo "# Generated by re-pacman 1.0.0" + echo "# On $(date)" + echo "pkgname =$(pacinfo ${1} Name)" + echo "pkgver =$(pacinfo ${1} Version)" + echo "pkgdesc =$(pacinfo ${1} Description)" + echo "url =$(pacinfo ${1} URL)" + echo "builddate =$(pacinfo ${1} 'Build Date')" + echo "packager =$(pacinfo ${1} Packager)" + echo "size =$(pacinfo ${1} Size)" + echo "arch =$(pacinfo ${1} Architecture)" + deps=$(pacinfo ${1} 'Depends On') + for d in ${deps}; do + echo "depend = ${d}" + done } if [ $# -ne 1 ]; then - echo "usage: re-pacman " - exit 1 + echo "usage: re-pacman " + exit 1 fi ver=$(pacinfo ${1} Version) if [ "x${ver}" = "x" ]; then - echo "Package '${1}' not found, aborting." - exit 1 + echo "Package '${1}' not found, aborting." + exit 1 fi echo ":: Cleaning up old files" @@ -77,3 +75,5 @@ echo ${flist} | tr ' ' '\n' | tar czf "${1}-${ver}.pkg.tar.gz" -T - 2>/dev/null rm -f .PKGINFO .FILELIST echo ":: Package '${1}-${ver}.pkg.tar.gz' is now ready for installation" + +# vim: set ts=2 sw=2 noet: diff --git a/scripts/repo-add b/scripts/repo-add index a4c37a40..63dc3058 100755 --- a/scripts/repo-add +++ b/scripts/repo-add @@ -26,211 +26,213 @@ DB_CHECKSUMS=(md5) TMP_DIR="" if [ $# -lt 2 ]; then - echo "repo-add /path/to/repo.db.tar.gz [--force] [packages-to-add]" - exit 1 + echo "repo-add /path/to/repo.db.tar.gz [--force] [packages-to-add]" + exit 1 fi get_checksum () { - case "$(echo "$1" | tr A-Z a-z)" in - md5) sum=$(md5sum $2); echo ${sum% *} ;; - sha1) sum=$(sha1sum $2); echo ${sum% *} ;; - sha256) sum=$(sha256sum $2); echo ${sum% *} ;; - sha384) sum=$(sha256sum $2); echo ${sum% *} ;; - sha512) sum=$(sha256sum $2); echo ${sum% *} ;; - esac + case "$(echo "$1" | tr A-Z a-z)" in + md5) sum=$(md5sum $2); echo ${sum% *} ;; + sha1) sum=$(sha1sum $2); echo ${sum% *} ;; + sha256) sum=$(sha256sum $2); echo ${sum% *} ;; + sha384) sum=$(sha256sum $2); echo ${sum% *} ;; + sha512) sum=$(sha256sum $2); echo ${sum% *} ;; + esac } checksum_name () { - case "$(echo "$1" | tr A-Z a-z)" in - md5) echo "MD5SUM" ;; - sha1) echo "SHA1SUM" ;; - sha256) echo "SHA256SUM" ;; - sha384) echo "SHA384SUM" ;; - sha512) echo "SHA512SUM" ;; - esac + case "$(echo "$1" | tr A-Z a-z)" in + md5) echo "MD5SUM" ;; + sha1) echo "SHA1SUM" ;; + sha256) echo "SHA256SUM" ;; + sha384) echo "SHA384SUM" ;; + sha512) echo "SHA512SUM" ;; + esac } test_repo_db_file () { - if [ -f "$REPO_DB_FILE" ]; then - [ "$(tar tf "$REPO_DB_FILE" | grep -c "/desc")" -gt 0 ] || return 1 - else - true - fi + if [ -f "$REPO_DB_FILE" ]; then + [ "$(tar tf "$REPO_DB_FILE" | grep -c "/desc")" -gt 0 ] || return 1 + else + true + fi } db_write_entry() { - pkgfile=$(readlink -f $1) - export pkgname="" - pkgver="" - pkgdesc="" - url="" - builddate="" - packager="" - csize="" - size="" - groups="" - depends="" - backups="" - licenses="" - _replaces="" - _provides="" - _conflicts="" - - OLDIFS="$IFS" - #gross... IFS == new line - IFS=' -' - for i in $(tar xOf "$pkgfile" .PKGINFO | grep -v "^#" |sed 's|\(\w*\)\s*=\s*\(.*\)|\1="\2"|'); do - eval "${i}" - case "$i" in - group=*) groups="$groups $group" ;; - depend=*) depends="$depends $depend" ;; - backup=*) backups="$backups $backup" ;; - license=*) licenses="$licenses $license" ;; - replaces=*) _replaces="$_replaces $replaces" ;; - provides=*) _provides="$_provides $provides" ;; - conflicts=*) _conflicts="$_conflicts $conflicts" ;; - esac - done - IFS=$OLDIFS - - csize="$(du -b $pkgfile | cut -f1)" - - cd $gstmpdir - - if [ -z "$pkgname" -o -z "$pkgver" ]; then - echo " error: invalid package file" - return 1 - fi - - if [ ! -d "$pkgname-$pkgver" ]; then - [ -e "$pkgname-$pkgver" ] && rm -rf "$pkgname-$pkgver" - mkdir "$pkgname-$pkgver" - cd "$pkgname-$pkgver" - else - cd "$pkgname-$pkgver" - [ -e desc ] && rm desc - [ -e depends ] && rm depends - fi - - # desc - echo ":: creating 'desc' db entry" - echo -e "%FILENAME%\n$1\n" >> desc - echo -e "%NAME%\n$pkgname\n" >>desc - echo -e "%VERSION%\n$pkgver\n" >>desc - if [ -n "$pkgdesc" ]; then - echo -e "%DESC%\n$pkgdesc\n" >>desc - fi - if [ -n "$groups" ]; then - echo "%GROUPS%" >>desc - echo $groups | tr -s ' ' '\n' >>desc - echo "" >desc - fi - [ -n $csize ] && echo -e "%CSIZE%\n$csize\n" >>desc - [ -n $size ] && echo -e "%ISIZE%\n$size\n" >>desc - - for chk in ${DB_CHECKSUMS[@]}; do - name="$(checksum_name $chk)" - echo ":: computing $name checksums" - if [ -n "$name" ]; then - echo -e "%$name%\n$(get_checksum $chk $pkgfile)\n" >>desc - fi - done - - [ -n "$url" ] && echo -e "%URL%\n$url\n" >>desc - if [ -n "$licenses" ]; then - echo "%LICENSE%" >>desc - echo $licenses | tr -s ' ' '\n' >>desc - echo "" >>desc - fi - [ -n "$arch" ] && echo -e "%ARCH%\n$arch\n" >>desc - [ -n "$builddate" ] && echo -e "%BUILDDATE%\n$builddate\n" >>desc - [ -n "$packager" ] && echo -e "%PACKAGER%\n$packager\n" >>desc - - if [ -n "$_replaces" ]; then - echo "%REPLACES%" >>desc - echo $_replaces | tr -s ' ' '\n' >>desc - echo "" >>desc - fi - [ "$FORCE" = "1" ] && echo -e "%FORCE%\n" >>desc - - # depends - echo ":: creating 'depends' db entry" - if [ -n "$depends" ]; then - echo "%DEPENDS%" >>depends - echo $depends | tr -s ' ' '\n' >>depends - echo "" >>depends - fi - if [ -n "$_conflicts" ]; then - echo "%CONFLICTS%" >>depends - echo $_conflicts | tr -s ' ' '\n' >>depends - echo "" >>depends - fi - if [ -n "$_provides" ]; then - echo "%PROVIDES%" >>depends - echo $_provides | tr -s ' ' '\n' >>depends - echo "" >>depends - fi - - # preserve the modification time - touch -r "$pkgfile" desc depends + pkgfile=$(readlink -f $1) + export pkgname="" + pkgver="" + pkgdesc="" + url="" + builddate="" + packager="" + csize="" + size="" + groups="" + depends="" + backups="" + licenses="" + _replaces="" + _provides="" + _conflicts="" + + OLDIFS="$IFS" + #gross... IFS == new line + IFS=' + ' + for i in $(tar xOf "$pkgfile" .PKGINFO | grep -v "^#" |sed 's|\(\w*\)\s*=\s*\(.*\)|\1="\2"|'); do + eval "${i}" + case "$i" in + group=*) groups="$groups $group" ;; + depend=*) depends="$depends $depend" ;; + backup=*) backups="$backups $backup" ;; + license=*) licenses="$licenses $license" ;; + replaces=*) _replaces="$_replaces $replaces" ;; + provides=*) _provides="$_provides $provides" ;; + conflicts=*) _conflicts="$_conflicts $conflicts" ;; + esac + done + IFS=$OLDIFS + + csize="$(du -b $pkgfile | cut -f1)" + + cd $gstmpdir + + if [ -z "$pkgname" -o -z "$pkgver" ]; then + echo " error: invalid package file" + return 1 + fi + + if [ ! -d "$pkgname-$pkgver" ]; then + [ -e "$pkgname-$pkgver" ] && rm -rf "$pkgname-$pkgver" + mkdir "$pkgname-$pkgver" + cd "$pkgname-$pkgver" + else + cd "$pkgname-$pkgver" + [ -e desc ] && rm desc + [ -e depends ] && rm depends + fi + + # desc + echo ":: creating 'desc' db entry" + echo -e "%FILENAME%\n$1\n" >> desc + echo -e "%NAME%\n$pkgname\n" >>desc + echo -e "%VERSION%\n$pkgver\n" >>desc + if [ -n "$pkgdesc" ]; then + echo -e "%DESC%\n$pkgdesc\n" >>desc + fi + if [ -n "$groups" ]; then + echo "%GROUPS%" >>desc + echo $groups | tr -s ' ' '\n' >>desc + echo "" >desc + fi + [ -n $csize ] && echo -e "%CSIZE%\n$csize\n" >>desc + [ -n $size ] && echo -e "%ISIZE%\n$size\n" >>desc + + for chk in ${DB_CHECKSUMS[@]}; do + name="$(checksum_name $chk)" + echo ":: computing $name checksums" + if [ -n "$name" ]; then + echo -e "%$name%\n$(get_checksum $chk $pkgfile)\n" >>desc + fi + done + + [ -n "$url" ] && echo -e "%URL%\n$url\n" >>desc + if [ -n "$licenses" ]; then + echo "%LICENSE%" >>desc + echo $licenses | tr -s ' ' '\n' >>desc + echo "" >>desc + fi + [ -n "$arch" ] && echo -e "%ARCH%\n$arch\n" >>desc + [ -n "$builddate" ] && echo -e "%BUILDDATE%\n$builddate\n" >>desc + [ -n "$packager" ] && echo -e "%PACKAGER%\n$packager\n" >>desc + + if [ -n "$_replaces" ]; then + echo "%REPLACES%" >>desc + echo $_replaces | tr -s ' ' '\n' >>desc + echo "" >>desc + fi + [ "$FORCE" = "1" ] && echo -e "%FORCE%\n" >>desc + + # depends + echo ":: creating 'depends' db entry" + if [ -n "$depends" ]; then + echo "%DEPENDS%" >>depends + echo $depends | tr -s ' ' '\n' >>depends + echo "" >>depends + fi + if [ -n "$_conflicts" ]; then + echo "%CONFLICTS%" >>depends + echo $_conflicts | tr -s ' ' '\n' >>depends + echo "" >>depends + fi + if [ -n "$_provides" ]; then + echo "%PROVIDES%" >>depends + echo $_provides | tr -s ' ' '\n' >>depends + echo "" >>depends + fi + + # preserve the modification time + touch -r "$pkgfile" desc depends } - + if [ $# -gt 1 ]; then - gstmpdir=$(mktemp -d /tmp/gensync.XXXXXXXXXX) || (\ - echo "cannot create temp directory for database building"; \ - exit 1) - - success=0 - for arg in $@; do - if [ "$arg" == "--force" -o "$arg" == "-f" ]; then - FORCE=1 - elif [ "x$REPO_DB_FILE" == "x" ]; then - REPO_DB_FILE="$(readlink -f $arg)" - if ! test_repo_db_file; then - echo " repository db file '$REPO_DB_FILE' is not a proper pacman db" - exit 1 - elif [ -f "$REPO_DB_FILE" ]; then - echo ":: extracting database to a temporary location" - tar xf "$REPO_DB_FILE" -C "$gstmpdir" - fi - else - if [ -f "$arg" ]; then - if ! tar xf "$arg" .PKGINFO 2>&1 >/dev/null; then - echo "error: '$arg' is not a package file, skipping" - else - echo ":: adding package '$arg'" - - this_dir="$(pwd)" - if db_write_entry "$arg"; then - success=1 - fi - cd $this_dir - fi - else - echo "error: package '$arg' not found" - fi - fi - done - - if [ "$success" = "1" ]; then - echo ":: creating updated database file ${REPO_DB_FILE}" - cd $gstmpdir - if [ -n "$(ls)" ]; then - [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old" - [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old" - case "$DB_COMPRESSION" in - gz) tar c * | gzip -9 >$REPO_DB_FILE ;; - bz2) tar c * | bzip2 -9 >$REPO_DB_FILE ;; - *) echo "warning: no compression set" - tar c * >$REPO_DB_FILE;; - esac - fi - else - echo ":: no packages modified, nothing to do" - fi + gstmpdir=$(mktemp -d /tmp/gensync.XXXXXXXXXX) || (\ + echo "cannot create temp directory for database building"; \ + exit 1) + + success=0 + for arg in $@; do + if [ "$arg" == "--force" -o "$arg" == "-f" ]; then + FORCE=1 + elif [ "x$REPO_DB_FILE" == "x" ]; then + REPO_DB_FILE="$(readlink -f $arg)" + if ! test_repo_db_file; then + echo " repository db file '$REPO_DB_FILE' is not a proper pacman db" + exit 1 + elif [ -f "$REPO_DB_FILE" ]; then + echo ":: extracting database to a temporary location" + tar xf "$REPO_DB_FILE" -C "$gstmpdir" + fi + else + if [ -f "$arg" ]; then + if ! tar xf "$arg" .PKGINFO 2>&1 >/dev/null; then + echo "error: '$arg' is not a package file, skipping" + else + echo ":: adding package '$arg'" + + this_dir="$(pwd)" + if db_write_entry "$arg"; then + success=1 + fi + cd $this_dir + fi + else + echo "error: package '$arg' not found" + fi + fi + done + + if [ "$success" = "1" ]; then + echo ":: creating updated database file ${REPO_DB_FILE}" + cd $gstmpdir + if [ -n "$(ls)" ]; then + [ -f "${REPO_DB_FILE}.old" ] && rm "${REPO_DB_FILE}.old" + [ -f "$REPO_DB_FILE" ] && mv "$REPO_DB_FILE" "${REPO_DB_FILE}.old" + case "$DB_COMPRESSION" in + gz) tar c * | gzip -9 >$REPO_DB_FILE ;; + bz2) tar c * | bzip2 -9 >$REPO_DB_FILE ;; + *) echo "warning: no compression set" + tar c * >$REPO_DB_FILE;; + esac + fi + else + echo ":: no packages modified, nothing to do" + fi fi [ -d "$gstmpdir" ] && rm -rf $gstmpdir + +# vim: set ts=2 sw=2 noet: diff --git a/scripts/updatesync b/scripts/updatesync index fa5e860c..17722fa3 100755 --- a/scripts/updatesync +++ b/scripts/updatesync @@ -135,21 +135,21 @@ db_write_entry() if [ ${#depends[*]} -gt 0 ]; then echo "%DEPENDS%" >>depends for it in "${depends[@]}"; do - echo "$it" >>depends + echo "$it" >>depends done echo "" >>depends fi if [ ${#conflicts[*]} -gt 0 ]; then echo "%CONFLICTS%" >>depends for it in "${conflicts[@]}"; do - echo "$it" >>depends + echo "$it" >>depends done echo "" >>depends fi if [ ${#provides[*]} -gt 0 ]; then echo "%PROVIDES%" >>depends for it in "${provides[@]}"; do - echo "$it" >>depends + echo "$it" >>depends done echo "" >>depends fi @@ -248,3 +248,4 @@ cd $curdir rm -rf $ustmpdir exit 0 +# vim: set ts=2 sw=2 noet: -- cgit v1.2.3-24-g4f1b