diff options
author | Dave Reisner <dreisner@archlinux.org> | 2013-08-18 20:40:59 -0400 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2013-08-19 22:11:27 +0200 |
commit | e77242c5393a5004fce42483c66f8256981f6ef5 (patch) | |
tree | eb0ba1332b457fb85e1ee50ea54e32a837c6bf65 | |
parent | 9c85d116f0425817b4a631e7a693dc5c948e2470 (diff) |
makechrootpkg: add generic support for additional bind mounts
Piggyback on systemd-nspawn's --bind and --bind-ro flags to allow
arbitrary mount points to be added to the build container.
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
-rw-r--r-- | makechrootpkg.in | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/makechrootpkg.in b/makechrootpkg.in index 1cd08fb..8c64ae1 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -24,6 +24,9 @@ passeddir= declare -a install_pkgs declare -i ret=0 +bindmounts_ro=() +bindmounts_rw=() + copy=$USER [[ -n $SUDO_USER ]] && copy=$SUDO_USER [[ -z "$copy" || $copy = root ]] && copy=copy @@ -48,6 +51,8 @@ usage() { echo 'Flags:' echo '-h This help' echo '-c Clean the chroot before building' + echo '-d <dir> Bind directory into build chroot as read-write' + echo '-D <dir> Bind directory into build chroot as read-only' echo '-u Update the working copy of the chroot before building' echo ' This is useful for rebuilds without dirtying the pristine' echo ' chroot' @@ -61,10 +66,12 @@ usage() { exit 1 } -while getopts 'hcur:I:l:nT' arg; do +while getopts 'hcur:I:l:nTD:d:' arg; do case "$arg" in h) usage ;; c) clean_first=true ;; + D) bindmounts_ro+=(--bind-ro="$OPTARG") ;; + d) bindmounts_rw+=(--bind="$OPTARG") ;; u) update_first=true ;; r) passeddir="$OPTARG" ;; I) install_pkgs+=("$OPTARG") ;; @@ -174,7 +181,9 @@ install_packages() { pkgname="${install_pkg##*/}" cp "$install_pkg" "$copydir/$pkgname" - arch-nspawn "$copydir" pacman -U /$pkgname --noconfirm + arch-nspawn "$copydir" \ + "${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \ + pacman -U /$pkgname --noconfirm (( ret += !! $? )) rm "$copydir/$pkgname" @@ -338,7 +347,9 @@ load_vars /etc/makepkg.conf create_chroot -$update_first && arch-nspawn "$copydir" pacman -Syu --noconfirm +$update_first && arch-nspawn "$copydir" \ + "${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \ + pacman -Syu --noconfirm [[ -n ${install_pkgs[*]} ]] && install_packages @@ -349,6 +360,7 @@ download_sources if arch-nspawn "$copydir" \ --bind-ro="$PWD:/startdir_host" \ --bind-ro="$SRCDEST:/srcdest_host" \ + "${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \ /chrootbuild then move_products |