Needed to support reproducible builds.

Signed-off-by: Eli Schwartz <eschwa...@archlinux.org>
---
 doc/mkarchroot.1.asciidoc |  3 +++
 mkarchroot.in             | 13 +++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/doc/mkarchroot.1.asciidoc b/doc/mkarchroot.1.asciidoc
index 03d032c..eb0670a 100644
--- a/doc/mkarchroot.1.asciidoc
+++ b/doc/mkarchroot.1.asciidoc
@@ -20,6 +20,9 @@ en_US.UTF-8 and de_DE.UTF-8 locale and a generated machine-id.
 Options
 -------
 
+*-U*::
+       Use 'pacman -U' to install packages.
+
 *-C* <file>::
        Location of a pacman config file.
 
diff --git a/mkarchroot.in b/mkarchroot.in
index 6c42d3b..37f6802 100644
--- a/mkarchroot.in
+++ b/mkarchroot.in
@@ -18,6 +18,7 @@ m4_include(lib/archroot.sh)
 umask 0022
 
 working_dir=''
+umode=''
 
 files=()
 nspawn_args=()
@@ -25,6 +26,7 @@ nspawn_args=()
 usage() {
        echo "Usage: ${0##*/} [options] working-dir package-list..."
        echo ' options:'
+       echo '    -U            Use pacman -U to install packages'
        echo '    -C <file>     Location of a pacman config file'
        echo '    -M <file>     Location of a makepkg config file'
        echo '    -c <dir>      Set pacman cache'
@@ -34,8 +36,9 @@ usage() {
        exit 1
 }
 
-while getopts 'hC:M:c:f:s' arg; do
+while getopts 'hUC:M:c:f:s' arg; do
        case "$arg" in
+               U) umode=U ;;
                C) pac_conf="$OPTARG" ;;
                M) makepkg_conf="$OPTARG" ;;
                c) cache_dirs+=("$OPTARG") ;;
@@ -44,8 +47,10 @@ while getopts 'hC:M:c:f:s' arg; do
                h|?) usage ;;
                *) error "invalid argument '%s'" "$arg"; usage ;;
        esac
-    nspawn_args+=("-$arg")
-    [[ -v OPTARG ]] && nspawn_args+=("$OPTARG")
+       if [[ $arg != U ]]; then
+               nspawn_args+=("-$arg")
+               [[ -v OPTARG ]] && nspawn_args+=("$OPTARG")
+       fi
 done
 shift $((OPTIND - 1))
 
@@ -85,7 +90,7 @@ for file in "${files[@]}"; do
        cp "$file" "$working_dir$file"
 done
 
-pacstrap -Mcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \
+pacstrap -${umode}Mcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \
        "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all 
packages'
 
 printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
-- 
2.24.0

Reply via email to