summaryrefslogtreecommitdiffstats
path: root/makechrootpkg.in
diff options
context:
space:
mode:
authorSébastien Luttringer <seblu@seblu.net>2013-03-02 05:21:08 +0100
committerPierre Schmitz <pierre@archlinux.de>2013-03-10 10:33:58 +0100
commit280d5501b00945fdf4e8de13724ec22b87a41576 (patch)
tree77bec2545b698eb1b4f07a769f6b531a72fc9f8c /makechrootpkg.in
parentdee4d05b1ea4533979933d32953ffa4481c6c66e (diff)
downloaddevtools-280d5501b00945fdf4e8de13724ec22b87a41576.tar.gz
devtools-280d5501b00945fdf4e8de13724ec22b87a41576.tar.xz
makechrootpkg: -I to handle multiple packages
Since commit cb3a6ce, running makechroot 2 times to insert a package in a build directory require to find a directory without PKGBUILD cd /var/empty makechrootpkg -cu -I virtualbox-host-dkms-*-i686.pkg.tar.xz -r <dir> makechrootpkg -I virtualbox-host-dkms-*-i686.pkg.tar.xz -r <dir> cd - makechrootpkg -n -r <dir> This patch allow makechrootpkg to handle more than one package to be installed before the build is run and simplify the previous case in makechrootpkg -ncu -I virtualbox-host-dkms-*-i686.pkg.tar.xz -I virtualbox-guest-dkms-*-i686.pkg.tar.xz -r <dir> Signed-off-by: Sébastien Luttringer <seblu@seblu.net> Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Diffstat (limited to 'makechrootpkg.in')
-rw-r--r--makechrootpkg.in20
1 files changed, 12 insertions, 8 deletions
diff --git a/makechrootpkg.in b/makechrootpkg.in
index fb91100..9021b3e 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -21,6 +21,7 @@ add_to_db=false
run_namcap=false
chrootdir=
passeddir=
+declare -a install_pkgs
default_copy=$USER
[[ -n $SUDO_USER ]] && default_copy=$SUDO_USER
@@ -66,7 +67,7 @@ while getopts 'hcudr:I:l:n' arg; do
u) update_first=true ;;
d) add_to_db=true ;;
r) passeddir="$OPTARG" ;;
- I) install_pkg="$OPTARG" ;;
+ I) install_pkgs+=("$OPTARG") ;;
l) copy="$OPTARG" ;;
n) run_namcap=true; makepkg_args="$makepkg_args -i" ;;
*) makepkg_args="$makepkg_args -$arg $OPTARG" ;;
@@ -98,7 +99,7 @@ if (( EUID )); then
die 'This script must be run as root.'
fi
-if [[ ! -f PKGBUILD && -z $install_pkg ]]; then
+if [[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]]; then
die 'This must be run in a directory containing a PKGBUILD.'
fi
@@ -152,14 +153,17 @@ if [[ ! -d $copydir ]] || $clean_first; then
exec 8>&-
fi
-if [[ -n $install_pkg ]]; then
- pkgname="${install_pkg##*/}"
- cp "$install_pkg" "$copydir/$pkgname"
+if [[ -n "${install_pkgs[*]}" ]]; then
+ declare -i ret=0
+ for install_pkg in "${install_pkgs[@]}"; do
+ pkgname="${install_pkg##*/}"
+ cp "$install_pkg" "$copydir/$pkgname"
- mkarchroot -r "pacman -U /$pkgname --noconfirm" "$copydir"
- ret=$?
+ mkarchroot -r "pacman -U /$pkgname --noconfirm" "$copydir"
+ (( ret += !! $? ))
- rm "$copydir/$pkgname"
+ rm "$copydir/$pkgname"
+ done
# If there is no PKGBUILD we have done
[[ -f PKGBUILD ]] || exit $ret