[arch-projects] [devtools] [RFC] makechrootpkg: add generic support for additional bind mounts

Dominik Heidler dheidler at gmail.com
Sun Aug 18 14:08:22 EDT 2013


You forgot the getopts entry:

--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -66,7 +66,7 @@ usage() {
        exit 1
 }

-while getopts 'hcur:I:l:nT' arg; do
+while getopts 'hcd:D:ur:I:l:nT' arg; do
        case "$arg" in
                h) usage ;;
                c) clean_first=true ;;

On 8/10/13, Dave Reisner <dreisner at archlinux.org> wrote:
> 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 at archlinux.org>
> ---
> This is untested, but is the result of a brief exchange I had with Pierre
> on IRC. It was suggested that we provide generic support for adding bind
> mounts rather than explicitly adding support for ccache (since all it
> really requires is the extra bind mount).
>
>  makechrootpkg.in | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/makechrootpkg.in b/makechrootpkg.in
> index 1cd08fb..04ed04b 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'
> @@ -65,6 +70,8 @@ while getopts 'hcur:I:l:nT' 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
> --
> 1.8.3.4
>
>


More information about the arch-projects mailing list