diff options
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | arch-nspawn.in | 26 | ||||
-rw-r--r-- | archbuild.in | 6 | ||||
-rw-r--r-- | pacman-staging-i686.conf | 99 |
4 files changed, 127 insertions, 5 deletions
@@ -25,6 +25,7 @@ CONFIGFILES = \ pacman-extra.conf \ pacman-testing.conf \ pacman-staging.conf \ + pacman-staging-i686.conf \ pacman-multilib.conf \ pacman-multilib-testing.conf \ pacman-multilib-staging.conf \ diff --git a/arch-nspawn.in b/arch-nspawn.in index 8b3d84e..656bc3c 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -58,7 +58,26 @@ else cache_dirs=("$cache_dir") fi -host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#;s#(.*/)[^/]+/extra/[^/]+#\1$arch/$repo#') +if [[ -n $makepkg_conf ]]; then + eval $(grep '^CARCH=' "$makepkg_conf") +else + eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf") +fi + +if [[ "$CARCH" = 'i'*'86' ]]; then + host_mirror="$( + sed -n ' + /^\s*Server\s*=/{ + s/^.*=\s*// + s/\s*\(#.*\)\?$// + p + q + }' \ + '/etc/pacman.d/mirrorlist32' + )" +else + host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#;s#(.*/)[^/]+/extra/[^/]+#\1$arch/$repo#') +fi [[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') # {{{ functions @@ -78,7 +97,9 @@ build_mount_args() { copy_hostconf () { cp -a /etc/pacman.d/gnupg "$working_dir/etc/pacman.d" - echo "Server = $host_mirror" >"$working_dir/etc/pacman.d/mirrorlist" + echo "Server = $host_mirror" | \ + tee "$working_dir/etc/pacman.d/mirrorlist" > \ + "$working_dir/etc/pacman.d/mirrorlist32" [[ -n $pac_conf ]] && cp $pac_conf "$working_dir/etc/pacman.conf" [[ -n $makepkg_conf ]] && cp $makepkg_conf "$working_dir/etc/makepkg.conf" @@ -90,7 +111,6 @@ copy_hostconf () { done sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${cache_dirs[@]})|g" -i "$working_dir/etc/pacman.conf" - eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf") sed -i '/^Architecture = /s| auto$| '"$CARCH|" "$working_dir/etc/pacman.conf" } # }}} diff --git a/archbuild.in b/archbuild.in index 0ed88e6..e593156 100644 --- a/archbuild.in +++ b/archbuild.in @@ -11,11 +11,13 @@ 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##*-} + arch_ext="-${arch}" fi chroots='/var/lib/archbuild' clean_first=false @@ -69,7 +71,7 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then 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" \ @@ -77,7 +79,7 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then 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" \ diff --git a/pacman-staging-i686.conf b/pacman-staging-i686.conf new file mode 100644 index 0000000..540c5f7 --- /dev/null +++ b/pacman-staging-i686.conf @@ -0,0 +1,99 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#HookDir = /etc/pacman.d/hooks/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +# We cannot check disk space from within a chroot environment +#CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +[staging] +Include = /etc/pacman.d/mirrorlist32 + +[testing] +Include = /etc/pacman.d/mirrorlist32 + +[core] +Include = /etc/pacman.d/mirrorlist32 + +[extra] +Include = /etc/pacman.d/mirrorlist32 + +[community-staging] +Include = /etc/pacman.d/mirrorlist32 + +[community-testing] +Include = /etc/pacman.d/mirrorlist32 + +[community] +Include = /etc/pacman.d/mirrorlist32 + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs + |