summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorJudd Vinet <judd@archlinux.org>2003-11-25 03:02:36 +0100
committerJudd Vinet <judd@archlinux.org>2003-11-25 03:02:36 +0100
commitf54a888a1facfd8f086d6414260be5f1b991a66b (patch)
treec18ecbc42067712300175c0d0ef635dc4ec0da1e /scripts
parent5aa3a24b17c5b1d2b43274e530259dab7711b9b0 (diff)
downloadpacman-f54a888a1facfd8f086d6414260be5f1b991a66b.tar.gz
pacman-f54a888a1facfd8f086d6414260be5f1b991a66b.tar.xz
Imported from pacman-2.7.tar.gz
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/gensync43
-rwxr-xr-xscripts/makepkg174
-rwxr-xr-xscripts/makeworld12
3 files changed, 156 insertions, 73 deletions
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 <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 " -w <destdir> Write package to <destdir> 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 <category> 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