diff options
Diffstat (limited to 'scripts/makepkg')
-rwxr-xr-x | scripts/makepkg | 85 |
1 files changed, 68 insertions, 17 deletions
diff --git a/scripts/makepkg b/scripts/makepkg index 19d4e6b2..6b578524 100755 --- a/scripts/makepkg +++ b/scripts/makepkg @@ -2,7 +2,7 @@ # # makepkg # -# Copyright (c) 2002-2004 by Judd Vinet <jvinet@zeroflux.org> +# Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,7 +20,7 @@ # USA. # -myver='2.9.2' +myver='2.9.7' startdir=`pwd` PKGDEST=$startdir USE_COLOR="n" @@ -108,7 +108,7 @@ handledeps() { local missingdeps=0 local deplist="$*" local haveperm=0 - if [ "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then + if [ \( "`id -u`" = "0" -a "$INFAKEROOT" != "1" \) -o "$DEP_SUDO" = 1 ]; then haveperm=1 fi @@ -122,6 +122,25 @@ handledeps() { exit 1 fi # TODO: check deps again to make sure they were resolved + elif [ "$DEP_SUDO" = "1" ]; then + # install missing deps from binary packages (using pacman -S and sudo) + msg "Installing missing dependencies..." + if [ "$INFAKEROOT" = "1" ]; then + # kinda hacky, but we need to make pacman think that we're NOT + # in fakeroot so it will go ahead and install the dependencies. + FAKEROOTKEY2=$FAKEROOTKEY + unset FAKEROOTKEY + fi + sudo pacman -D $deplist + if [ "$INFAKEROOT" = "1" ]; then + FAKEROOTKEY=$FAKEROOTKEY2 + unset FAKEROOTKEY2 + fi + if [ "$?" = "127" ]; then + 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. @@ -163,8 +182,8 @@ handledeps() { fi elif [ "$deplist" != "" -a $haveperm -eq 0 ]; then if [ "$DEP_SRC" = "1" -o "$DEP_BIN" = "1" ]; then - warning "Cannot auto-install missing dependencies as a normal user!" - plain "Run makepkg as root to resolve dependencies automatically." + warning "Cannot auto-install missing dependencies as a normal user without sudo!" + plain "Run makepkg as root or with -S to resolve dependencies automatically." fi missingdeps=1 fi @@ -176,6 +195,7 @@ usage() { echo "usage: $0 [options]" echo "options:" echo " -b, --builddeps Build missing dependencies from source" + echo " -B, --noccache Do not use ccache during build" echo " -c, --clean Clean up work files after build" echo " -C, --cleancache Clean up source files from the cache" echo " -d, --nodeps Skip all dependency checks" @@ -191,6 +211,7 @@ usage() { echo " -p <buildscript> 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 " -S, --sudosync Install missing dependencies with pacman and sudo" echo " -w <destdir> Write package to <destdir> instead of the working dir" echo echo " if -p is not specified, makepkg will look for a PKGBUILD" @@ -200,19 +221,21 @@ usage() { # Options +BUILDSCRIPT="./PKGBUILD" CLEANUP=0 CLEANCACHE=0 -INSTALL=0 -GENMD5=0 DEP_BIN=0 DEP_SRC=0 -NODEPS=0 +DEP_SUDO=0 FORCE=0 +GENMD5=0 +INSTALL=0 +NOBUILD=0 +NOCCACHE=0 +NODEPS=0 NOEXTRACT=0 NOSTRIP=0 -NOBUILD=0 RMDEPS=0 -BUILDSCRIPT="./PKGBUILD" ARGLIST=$@ @@ -221,7 +244,9 @@ while [ "$#" -ne "0" ]; do --clean) CLEANUP=1 ;; --cleancache) CLEANCACHE=1 ;; --syncdeps) DEP_BIN=1 ;; + --sudosync) DEP_SUDO=1 ;; --builddeps) DEP_SRC=1 ;; + --noccache) NOCCACHE=1 ;; --nodeps) NODEPS=1 ;; --noextract) NOEXTRACT=1 ;; --install) INSTALL=1 ;; @@ -240,11 +265,12 @@ while [ "$#" -ne "0" ]; do exit 1 ;; -*) - while getopts "cCsbdehifgj:mnorp:w:-" opt; do + while getopts "bBcCdefghij:mnop:rsSw:-" opt; do case $opt in + b) DEP_SRC=1 ;; + B) NOCCACHE=1 ;; c) CLEANUP=1 ;; C) CLEANCACHE=1 ;; - b) DEP_SRC=1 ;; d) NODEPS=1 ;; e) NOEXTRACT=1 ;; f) FORCE=1 ;; @@ -261,6 +287,7 @@ while [ "$#" -ne "0" ]; do p) BUILDSCRIPT=$OPTARG ;; r) RMDEPS=1 ;; s) DEP_BIN=1 ;; + S) DEP_SUDO=1 ;; w) PKGDEST=$OPTARG ;; -) OPTIND=0 @@ -280,6 +307,12 @@ while [ "$#" -ne "0" ]; do shift done +# check for sudo +if [ "$DEP_SUDO" = "1" -a ! "`type -p sudo`" ]; then + error "Cannot find the sudo binary! Is sudo installed?" + exit 1 +fi + # convert a (possibly) relative path to absolute cd $PKGDEST 2>/dev/null if [ $? -ne 0 ]; then @@ -320,6 +353,10 @@ if [ `echo $pkgrel | grep '-'` ]; then error "pkgrel is not allowed to contain hyphens." exit 1 fi +if [ "$install" -a ! -f "$install" ]; then + error "install scriptlet ($install) does not exist." + exit 1 +fi if [ -f $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz -a "$FORCE" = "0" -a "$GENMD5" = "0" ]; then if [ "$INSTALL" = "1" ]; then @@ -553,7 +590,9 @@ if [ "$NOBUILD" = "1" ]; then fi # use ccache if it's available -[ -d /usr/lib/ccache/bin ] && export PATH=/usr/lib/ccache/bin:$PATH +if [ "$NOCCACHE" = "0" ]; then + [ -d /usr/lib/ccache/bin ] && export PATH=/usr/lib/ccache/bin:$PATH +fi # build msg "Starting build()..." @@ -567,6 +606,7 @@ fi cd $startdir rm -rf pkg/usr/info pkg/usr/share/info rm -rf pkg/usr/doc pkg/usr/share/doc +rm -rf pkg/{usr,opt/gnome}/share/gtk-doc # move /usr/share/man files to /usr/man if [ -d pkg/usr/share/man ]; then @@ -631,9 +671,6 @@ echo "pkgname = $pkgname" >>.PKGINFO echo "pkgver = $pkgver-$pkgrel" >>.PKGINFO echo "pkgdesc = $pkgdesc" >>.PKGINFO echo "url = $url" >>.PKGINFO -for it in "${license[@]}"; do - echo "license = $it" >>.PKGINFO -done echo "builddate = $builddate" >>.PKGINFO echo "packager = $packager" >>.PKGINFO echo "size = $size" >>.PKGINFO @@ -641,6 +678,9 @@ if [ "$CARCH" != "" ]; then echo "arch = $CARCH" >>.PKGINFO fi +for it in "${license[@]}"; do + echo "license = $it" >>.PKGINFO +done for it in "${replaces[@]}"; do echo "replaces = $it" >>.PKGINFO done @@ -687,9 +727,20 @@ if [ "$CLEANUP" = "1" ]; then rm -rf src pkg filelist fi -if [ "$RMDEPS" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" ]; then +if [ "$RMDEPS" = "1" -a "`id -u`" = "0" -a "$INFAKEROOT" != "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then msg "Removing installed dependencies..." pacman -R $makedeplist $deplist +elif [ "$RMDEPS" = "1" -a "$DEP_SUDO" = "1" ]; then + msg "Removing installed dependencies..." + if [ "$INFAKEROOT" = "1" ]; then + FAKEROOTKEY2=$FAKEROOTKEY + unset FAKEROOTKEY + fi + sudo pacman -R $makedeplist $deplist + if [ "$INFAKEROOT" = "1" ]; then + FAKEROOTKEY=$FAKEROOTKEY2 + unset FAKEROOTKEY2 + fi fi msg "Finished making: $pkgname (`date`)" |