From f54a888a1facfd8f086d6414260be5f1b991a66b Mon Sep 17 00:00:00 2001 From: Judd Vinet Date: Tue, 25 Nov 2003 02:02:36 +0000 Subject: Imported from pacman-2.7.tar.gz --- scripts/gensync | 43 ++++++++++++-- scripts/makepkg | 174 ++++++++++++++++++++++++++++++++++-------------------- scripts/makeworld | 12 +++- 3 files changed, 156 insertions(+), 73 deletions(-) (limited to 'scripts') diff --git a/scripts/gensync b/scripts/gensync index 045c4f38..5a0b7eda 100755 --- a/scripts/gensync +++ b/scripts/gensync @@ -20,7 +20,7 @@ # USA. # -myver='2.6.4' +myver='2.7' usage() { echo "gensync $myver" @@ -42,6 +42,22 @@ usage() { exit 0 } +get_md5checksum() +{ + source $1 || return 1 + if [ "$pkgdir" != "" ]; then + pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz" + else + pkgfile="$destdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz" + fi + if [ -f $pkgfile ]; then + md5line=`md5sum $pkgfile` + [ ! -z "$md5line" ] && pkgmd5sum=${md5line% *} + echo $pkgmd5sum + fi + return 0 +} + db_write_entry() { unset pkgname pkgver pkgrel pkgdesc @@ -61,6 +77,11 @@ db_write_entry() echo "%DESC%" >>desc echo "$pkgdesc" >>desc echo "" >>desc + if [ ! -z $pkgmd5sum ]; then + echo "%MD5SUM%" >>desc + echo "$pkgmd5sum" >>desc + echo "" >>desc + fi if [ ${#groups[*]} -gt 0 ]; then echo "%GROUPS%" >>desc for it in "${groups[@]}"; do @@ -111,11 +132,14 @@ if [ "$1" = "-h" -o "$1" = "--help" ]; then fi d=`dirname $1` -rootdir=`cd $d && pwd` -rootdir="$rootdir/`basename $1`" +rootdir=`cd $d && pwd`/`basename $1` d=`dirname $2` -destfile=`cd $d && pwd` -destfile="$destfile/`basename $2`" +destdir=`cd $d && pwd` +destfile="$destdir/`basename $2`" +pkgdir= +if [ "$3" != "" ]; then + pkgdir=$3 +fi rm -rf /tmp/.gensync || exit 1 mkdir -p /tmp/.gensync || exit 1 @@ -126,9 +150,16 @@ if [ ! -d $rootdir ]; then exit 1 fi -echo "gensync: building database entries..." >&2 +echo "gensync: building database entries, generating md5sums..." >&2 +cd `dirname $2` #for category in `find $rootdir/* -type d -maxdepth 0`; do for file in `find $rootdir/* -name PKGBUILD`; do + pkgmd5sum=`get_md5checksum $file $pkgdir` + if [ -z $pkgmd5sum ]; then + echo "gensync: error generating checksum for $file" >&2 + rm -rf /tmp/.gensync + exit 1 + fi db_write_entry $file if [ $? -gt 0 ]; then echo "gensync: error writing entry for $file" >&2 diff --git a/scripts/makepkg b/scripts/makepkg index 7cc8b992..10c1c2a0 100755 --- a/scripts/makepkg +++ b/scripts/makepkg @@ -20,7 +20,7 @@ # USA. # -myver='2.6.4' +myver='2.7' startdir=`pwd` # source Arch's abs.conf if it's present @@ -46,7 +46,7 @@ strip_url() { } checkdeps() { - local missdep=`pacman -T $*` + local missdep="" local deplist="" missdep=`pacman -T $*` @@ -77,6 +77,72 @@ checkdeps() { echo $deplist } +handledeps() { + local missingdeps=0 + local deplist="$*" + local haveperm=0 + if [ "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then + haveperm=1 + fi + + if [ "$deplist" != "" -a $haveperm -eq 1 ]; 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 + if [ "$RMDEPS" = "1" ]; then + makepkg -i -c -b -r -w $PKGDEST + else + makepkg -i -c -b -w $PKGDEST + fi + 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 + missingdeps=1 + fi + elif [ "$deplist" != "" -a $haveperm -eq 0 ]; then + if [ "$DEP_SRC" = "1" -o "$DEP_BIN" = "1" ]; then + msg "==> WARNING: Cannot auto-install missing dependencies as a normal user!" + msg "==> Run makepkg as root to resolve dependencies automatically." + fi + missingdeps=1 + fi + return $missingdeps +} usage() { echo "makepkg version $myver" @@ -92,6 +158,7 @@ usage() { echo " -i, --install Install package after successful build" echo " -n, --nostrip Do not strip binaries/libraries" echo " -p Use an alternate build script (instead of PKGBUILD)" + echo " -r, --rmdeps Remove installed dependencies after a successful build" echo " -s, --syncdeps Install missing dependencies with pacman" echo " -w Write package to instead of the working dir" echo @@ -100,6 +167,7 @@ usage() { echo } + # Options CLEANUP=0 CLEANCACHE=0 @@ -110,6 +178,7 @@ DEP_SRC=0 NODEPS=0 FORCE=0 NOSTRIP=0 +RMDEPS=0 PKGDEST=$startdir BUILDSCRIPT="./PKGBUILD" @@ -117,15 +186,16 @@ ARGLIST=$@ while [ "$#" -ne "0" ]; do case $1 in - --clean) CLEANUP=1 ;; + --clean) CLEANUP=1 ;; --cleancache) CLEANCACHE=1 ;; - --syncdeps) DEP_BIN=1 ;; - --builddeps) DEP_SRC=1 ;; - --nodeps) NODEPS=1 ;; - --install) INSTALL=1 ;; - --force) FORCE=1 ;; - --nostrip) NOSTRIP=1 ;; - --genmd5) GENMD5=1 ;; + --syncdeps) DEP_BIN=1 ;; + --builddeps) DEP_SRC=1 ;; + --nodeps) NODEPS=1 ;; + --install) INSTALL=1 ;; + --force) FORCE=1 ;; + --nostrip) NOSTRIP=1 ;; + --genmd5) GENMD5=1 ;; + --rmdeps) RMDEPS=1 ;; --help) usage exit 0 @@ -135,7 +205,7 @@ while [ "$#" -ne "0" ]; do exit 1 ;; -*) - while getopts "cCsbdhifgnp:w:-" opt; do + while getopts "cCsbdhifgnrp:w:-" opt; do case $opt in c) CLEANUP=1 ;; C) CLEANCACHE=1 ;; @@ -148,6 +218,7 @@ while [ "$#" -ne "0" ]; do n) NOSTRIP=1 ;; w) PKGDEST=$OPTARG ;; p) BUILDSCRIPT=$OPTARG ;; + r) RMDEPS=1 ;; h) usage exit 0 @@ -170,6 +241,11 @@ while [ "$#" -ne "0" ]; do shift done +# convert a (possibly) relative path to absolute +cd $PKGDEST +PKGDEST=`pwd` +cd - + if [ "$CLEANCACHE" = "1" ]; then if [ "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then msg "==> Cleaning up source files from the cache." @@ -182,7 +258,7 @@ if [ "$CLEANCACHE" = "1" ]; then fi unset pkgname pkgver pkgrel pkgdesc url groups provides md5sums -unset replaces depends conflicts backup source install build +unset replaces depends conflicts backup source install build makedepends umask 0022 if [ ! -f $BUILDSCRIPT ]; then @@ -240,56 +316,19 @@ fi msg "==> Making package: $pkgname (`date`)" -unset deplist +unset deplist makedeplist if [ `type -p pacman` -a "$NODEPS" = "0" ]; then - msg "==> Checking Dependencies..." + msg "==> Checking Runtime 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 + handledeps $deplist + if [ $? -gt 0 ]; then + exit 1 + fi + msg "==> Checking Buildtime Dependencies..." + makedeplist=`checkdeps ${makedepends[@]}` + handledeps $makedeplist + if [ $? -gt 0 ]; then + exit 1 fi elif [ "$NODEPS" = "1" ]; then msg "==> WARNING: skipping dependency checks." @@ -387,7 +426,7 @@ if [ "$GENMD5" = "0" ]; then *.tar) cmd="tar -xf $file" ;; *.zip) - cmd="unzip -qq $file" ;; + cmd="unzip -qqo $file" ;; *.gz) cmd="gunzip $file" ;; *.bz2) @@ -502,7 +541,7 @@ if [ "$NOSTRIP" = "0" ]; then fi # get some package meta info -builddate=`LC_ALL= ; date -u "+%a %b %e %k:%M:%S %Y"` +builddate=`LC_ALL= ; LANG= ; date -u "+%a %b %e %H:%M:%S %Y"` if [ "$PACKAGER" != "" ]; then packager="$PACKAGER" else @@ -566,14 +605,19 @@ $cmd | sort >../filelist cd $startdir if [ "$CLEANUP" = "1" ]; then - msg "==> Cleaning up" + msg "==> Cleaning up..." rm -rf src pkg filelist fi +if [ "$RMDEPS" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then + msg "==> Removing installed dependencies..." + pacman -R $makedeplist $deplist +fi + msg "==> Finished making: $pkgname (`date`)" -if [ "$INSTALL" = "1" ]; then - msg "==> Running pacman --upgrade" +if [ "$INSTALL" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then + msg "==> Running pacman --upgrade..." pacman --upgrade $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz exit $? fi diff --git a/scripts/makeworld b/scripts/makeworld index 4ce1a772..a5d4c6e8 100755 --- a/scripts/makeworld +++ b/scripts/makeworld @@ -21,7 +21,7 @@ # toplevel=`pwd` -version="2.6.4" +version="2.7" usage() { echo "makeworld version $version" @@ -33,6 +33,7 @@ usage() { echo " -f, --force Overwrite existing packages" echo " -i, --install Install package after successful build" echo " -h, --help This help" + echo " -r, --rmdeps Remove installed dependencies after a successful build" echo " -s, --syncdeps Install missing dependencies with pacman" echo echo " where is one or more directory names under the ABS root" @@ -55,6 +56,7 @@ for arg in $*; do --builddeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;; --nodeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;; --force) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;; + --rmdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -r" ;; --help) usage exit 0 @@ -64,7 +66,7 @@ for arg in $*; do exit 1 ;; -*) - while getopts "chisbdf-" opt; do + while getopts "chisbdfr-" opt; do case $opt in c) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;; i) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;; @@ -72,6 +74,7 @@ for arg in $*; do 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 @@ -100,6 +103,11 @@ if [ "$dest" = "" ]; then exit 1 fi +# convert a (possibly) relative path to absolute +cd $dest +dest=`pwd` +cd - + sd=`date +"[%b %d %H:%M]"` for category in $*; do -- cgit v1.2.3-24-g4f1b