From e77242c5393a5004fce42483c66f8256981f6ef5 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 18 Aug 2013 20:40:59 -0400 Subject: 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 Signed-off-by: Pierre Schmitz --- makechrootpkg.in | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'makechrootpkg.in') 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 Bind directory into build chroot as read-write' + echo '-D 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 -- cgit v1.2.3-54-g00ecf