From 21e5060b4dfa5b0ac9f5b053412c4a5039b6d046 Mon Sep 17 00:00:00 2001 From: bartus Date: Wed, 3 Mar 2021 21:41:56 +0100 Subject: [PATCH] Remove redundant cache_dirs, fix read only cache_dirs issue Fix #57 --- arch-nspawn.in | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/arch-nspawn.in b/arch-nspawn.in index cde1f60d..e665a59a 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -70,7 +70,7 @@ for host_mirror in "${host_mirrors[@]}"; do if [[ $host_mirror == *file://* ]]; then host_mirror=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') for m in "$host_mirror"/pool/*/; do - in_array "$m" "${cache_dirs[@]}" || cache_dirs+=("$m") + in_array "$m" "${cache_dirs[@]}" || extra_cache_dirs+=("$m") done fi done @@ -81,14 +81,14 @@ while read -r line; do for line in "${lines[@]}"; do if [[ $line = file://* ]]; then line=${line#file://} - in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line") + in_array "$line" "${cache_dirs[@]}" || extra_cache_dirs+=("$line") fi done done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list) mount_args+=("--bind=${cache_dirs[0]//:/\\:}") -for cache_dir in "${cache_dirs[@]:1}"; do +for cache_dir in "${cache_dirs[@]:1}" "${extra_cache_dirs[@]}"; do mount_args+=("--bind-ro=${cache_dir//:/\\:}") done @@ -99,7 +99,12 @@ copy_hostconf () { printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist" - [[ -n $pac_conf ]] && cp "$pac_conf" "$working_dir/etc/pacman.conf" + if [[ -n $pac_conf ]]; then + cp "$pac_conf" "$working_dir/etc/pacman.conf" + if (( ${#extra_cache_dirs[@]} != 0 )); then + sed -r "/^#?\\s*CacheDir.+/a CacheDir = ${extra_cache_dirs[*]}" -i "$working_dir/etc/pacman.conf" + fi + fi [[ -n $makepkg_conf ]] && cp "$makepkg_conf" "$working_dir/etc/makepkg.conf" local file @@ -108,7 +113,6 @@ copy_hostconf () { cp -T "$file" "$working_dir$file" done - sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "$working_dir/etc/pacman.conf" } # }}}