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

Dave Reisner d at falconindy.com
Sun Aug 18 14:15:47 EDT 2013


OK... But otherwise does it do what you want?
On Aug 18, 2013 2:08 PM, "Dominik Heidler" <dheidler at gmail.com> wrote:

> 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
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.archlinux.org/pipermail/arch-projects/attachments/20130818/c3ca9deb/attachment-0001.html>


More information about the arch-projects mailing list