diff options
Diffstat (limited to 'archbuild.in')
-rw-r--r-- | archbuild.in | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/archbuild.in b/archbuild.in index 1e5b582..73ae65d 100644 --- a/archbuild.in +++ b/archbuild.in @@ -11,11 +11,17 @@ cmd="${0##*/}" if [[ "${cmd%%-*}" == 'multilib' ]]; then repo="${cmd%-build}" arch='x86_64' + arch_ext='' base_packages+=(multilib-devel) else tag="${cmd%-build}" repo=${tag%-*} arch=${tag##*-} + if [ "${arch}" = 'x86_64' ]; then + arch_ext='' + else + arch_ext="-${arch}" + fi fi chroots='/var/lib/archbuild' clean_first=false @@ -41,6 +47,14 @@ done check_root SOURCE_DATE_EPOCH +if [ "${arch}" = "x86_64" ]; then + cache_dir='' +else + mkdir -p '/var/cache/archbuild32' + cache_dir='-c/var/cache/archbuild32' + makechrootpkg_args+=('-d/var/cache/archbuild32:/var/cache/pacman/pkg') +fi + # Pass all arguments after -- right to makepkg makechrootpkg_args+=("${@:$OPTIND}") @@ -55,23 +69,35 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then subvolume_delete_recursive "${copy}" rm -rf --one-file-system "${copy}" + if [ -d "${copy}" ]; then + find "${copy}" \ + -xdev -mindepth 1 -type d \ + -exec 'mountpoint' '-q' '{}' ';' \ + -exec 'umount' '-l' '{}' ';' + rm -rf --one-file-system "${copy}" + mountpoint -q "${copy}" && \ + umount -l "${copy}" && \ + rmdir "${copy}" + fi done lock_close 9 rm -rf --one-file-system "${chroots}/${repo}-${arch}" mkdir -p "${chroots}/${repo}-${arch}" setarch "${arch}" mkarchroot \ - -C "@pkgdatadir@/pacman-${repo}.conf" \ + -C "@pkgdatadir@/pacman-${repo}${arch_ext}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ + ${cache_dir} \ "${chroots}/${repo}-${arch}/root" \ "${base_packages[@]}" || abort else lock 9 "${chroots}/${repo}-${arch}/root.lock" "Locking clean chroot" arch-nspawn \ - -C "@pkgdatadir@/pacman-${repo}.conf" \ + -C "@pkgdatadir@/pacman-${repo}${arch_ext}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ + ${cache_dir} \ "${chroots}/${repo}-${arch}/root" \ - pacman -Syu --noconfirm || abort + pacman --arch ${arch} -Syu --noconfirm || abort fi # Always build official packages reproducibly |