summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--makechrootpkg.in18
1 files changed, 15 insertions, 3 deletions
diff --git a/makechrootpkg.in b/makechrootpkg.in
index ce99d95..cbff882 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -25,6 +25,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
@@ -49,6 +52,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'
@@ -62,10 +67,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") ;;
@@ -173,7 +180,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"
@@ -337,7 +346,9 @@ load_vars "$USER_HOME/.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
@@ -348,6 +359,7 @@ download_sources
if arch-nspawn "$copydir" \
--bind-ro="$PWD:/startdir_host" \
--bind-ro="$SRCDEST:/srcdest_host" \
+ "${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \
/chrootbuild "${makepkg_args[@]}"
then
move_products