From 05c81038e5d01962221e5fe2901813dbfba0f864 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Sun, 9 Sep 2018 21:02:43 +0200 Subject: doc: Add lddd man page --- .gitignore | 1 + Makefile | 22 ++++++++++++++++++++-- doc/asciidoc.conf | 37 +++++++++++++++++++++++++++++++++++++ doc/footer.asciidoc | 28 ++++++++++++++++++++++++++++ doc/lddd.1.asciidoc | 25 +++++++++++++++++++++++++ 5 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 doc/asciidoc.conf create mode 100644 doc/footer.asciidoc create mode 100644 doc/lddd.1.asciidoc diff --git a/.gitignore b/.gitignore index 1e92b82..04eefe5 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ zsh_completion find-libdeps crossrepomove arch-nspawn +doc/*.1 diff --git a/Makefile b/Makefile index 2d29c83..80fe1d7 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ V=20180531 PREFIX = /usr/local +MANDIR = $(PREFIX)/share/man BINPROGS = \ checkpkg \ @@ -60,7 +61,13 @@ BASHCOMPLETION_LINKS = \ archco \ communityco -all: $(BINPROGS) bash_completion zsh_completion + +MANS = \ + doc/lddd.1 + + +all: $(BINPROGS) bash_completion zsh_completion man +man: $(MANS) edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" @@ -72,8 +79,13 @@ edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" @chmod +x "$@" @bash -O extglob -n "$@" +$(MANS): doc/asciidoc.conf doc/footer.asciidoc + +doc/%: doc/%.asciidoc + a2x --no-xmllint --asciidoc-opts="-f doc/asciidoc.conf" -d manpage -f manpage -D doc $< + clean: - rm -f $(BINPROGS) bash_completion zsh_completion + rm -f $(BINPROGS) bash_completion zsh_completion $(MANS) install: install -dm0755 $(DESTDIR)$(PREFIX)/bin @@ -88,6 +100,9 @@ install: for l in ${BASHCOMPLETION_LINKS}; do ln -sf devtools $(DESTDIR)/usr/share/bash-completion/completions/$$l; done install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools ln -sf archco $(DESTDIR)$(PREFIX)/bin/communityco + for manfile in $(MANS); do \ + install -Dm644 $$manfile -t $(DESTDIR)$(MANDIR)/man$${manfile##*.}; \ + done; uninstall: for f in ${BINPROGS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done @@ -99,6 +114,9 @@ uninstall: rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools rm -f $(DESTDIR)$(PREFIX)/bin/communityco rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides + for manfile in $(MANS); do \ + rm -f $(DESTDIR)$(MANDIR)/man$${manfile##*.}/$${manfile#doc/}; \ + done; dist: git archive --format=tar --prefix=devtools-$(V)/ $(V) | gzip -9 > devtools-$(V).tar.gz diff --git a/doc/asciidoc.conf b/doc/asciidoc.conf new file mode 100644 index 0000000..c675a20 --- /dev/null +++ b/doc/asciidoc.conf @@ -0,0 +1,37 @@ +## linkman: macro +# Inspired by/borrowed from the GIT source tree at Documentation/asciidoc.conf +# +# Usage: linkman:command[manpage-section] +# +# Note, {0} is the manpage section, while {target} is the command. +# +# Show man link as: (
); if section is defined, else just show +# the command. + +[macros] +(?su)[\\]?(?Plinkman):(?P\S*?)\[(?P.*?)\]= + +[attributes] +asterisk=* +plus=+ +caret=^ +startsb=[ +endsb=] +backslash=\ +tilde=~ +apostrophe=' +backtick=` +litdd=-- + +ifdef::backend-docbook[] +[linkman-inlinemacro] +{0%{target}} +{0#} +{0#{target}{0}} +{0#} +endif::backend-docbook[] + +ifdef::backend-xhtml11[] +[linkman-inlinemacro] +{target}{0?({0})} +endif::backend-xhtml11[] diff --git a/doc/footer.asciidoc b/doc/footer.asciidoc new file mode 100644 index 0000000..a092447 --- /dev/null +++ b/doc/footer.asciidoc @@ -0,0 +1,28 @@ + +Bugs +---- +Bugs can be reported on the bug tracker 'https://bugs.archlinux.org' in the Arch +Linux category and title prefixed with [devtools] or via +mailto:arch-projects@archlinux.org[]. + + +Authors +------- + +Maintainers: + +* Aaron Griffin +* Allan McRae +* Bartłomiej Piotrowski +* Dan McGee +* Dave Reisner +* Evangelos Foutras +* Jan Alexander Steffens (heftig) +* Levente Polyak +* Pierre Schmitz +* Sébastien Luttringer +* Sven-Hendrik Haase +* Thomas Bächler + +For additional contributors, use `git shortlog -s` on the devtools.git +repository. diff --git a/doc/lddd.1.asciidoc b/doc/lddd.1.asciidoc new file mode 100644 index 0000000..3a015d2 --- /dev/null +++ b/doc/lddd.1.asciidoc @@ -0,0 +1,25 @@ +lddd(1) +======= + +Name +---- +lddd - Find broken library links on your system + +Synopsis +-------- +lddd + +Description +----------- + +Scans '$PATH', '/lib', '/usr/lib', '/usr/local/lib' and +'/etc/ld.so.conf.d/*.conf' directories for ELF files with references to missing +shared libraries, and suggests which packages might need to be rebuilt. The +collected data is written to a temporary directory created by mktemp. + +See Also +-------- + +linkman:ldd[1] + +include::footer.asciidoc[] -- cgit v1.2.3 From 99969c67a9ef5ff0a49de5f4fa7a358d35518b1c Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Sun, 9 Sep 2018 21:02:44 +0200 Subject: doc: Add checkpkg man page --- Makefile | 3 ++- doc/checkpkg.1.asciidoc | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 doc/checkpkg.1.asciidoc diff --git a/Makefile b/Makefile index 80fe1d7..e812936 100644 --- a/Makefile +++ b/Makefile @@ -63,7 +63,8 @@ BASHCOMPLETION_LINKS = \ MANS = \ - doc/lddd.1 + doc/lddd.1 \ + doc/checkpkg.1 all: $(BINPROGS) bash_completion zsh_completion man diff --git a/doc/checkpkg.1.asciidoc b/doc/checkpkg.1.asciidoc new file mode 100644 index 0000000..96ec645 --- /dev/null +++ b/doc/checkpkg.1.asciidoc @@ -0,0 +1,27 @@ +checkpkg(1) +=========== + +Name +---- +checkpkg - Compare the current build package with the repository version + +Synopsis +-------- +checkpkg + +Description +----------- + +Searches for a locally built package corresponding to the PKGBUILD, and +downloads the last version of that package from the Pacman repositories. It +then compares the list of .so files provided by each version of the package and +outputs if there are soname differences for the new package. A directory is +also created using mktemp with files containing a file list for both packages +and a library list for both packages. + +See Also +-------- + +linkman:find-libprovides[1] + +include::footer.asciidoc[] -- cgit v1.2.3 From e9102b2ad84964cd826a63e0de605828e0528261 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Sun, 9 Sep 2018 21:02:45 +0200 Subject: doc: add find-libprovides man page --- doc/find-libprovides.1.asciidoc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 doc/find-libprovides.1.asciidoc diff --git a/doc/find-libprovides.1.asciidoc b/doc/find-libprovides.1.asciidoc new file mode 100644 index 0000000..c6d527d --- /dev/null +++ b/doc/find-libprovides.1.asciidoc @@ -0,0 +1,24 @@ +find-libdeps(1) +=============== + +Name +---- +find-libdeps - Find soname dependencies for a package + +Synopsis +-------- +find-libdeps [options] [package] + +Description +----------- + +Finds soname dependencies of a package and prints out a list in the following +format '=-'. + +Options +------- + +*--ignore-internal*:: + Ignore internal libraries + +include::footer.asciidoc[] -- cgit v1.2.3 From 7b095250030dd85684226a6191d739d2f04424a3 Mon Sep 17 00:00:00 2001 From: Morten Linderud Date: Fri, 21 Dec 2018 23:06:18 +0100 Subject: Expand check_root keepenv variables Les us source makepkg.conf settings from the environemnt. This also includes `GNUPGHOME` which is present in `makechrootpkg`, but not included in archbuild. Signed-off-by: Morten Linderud --- archbuild.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archbuild.in b/archbuild.in index 1e5b582..bd5706d 100644 --- a/archbuild.in +++ b/archbuild.in @@ -39,7 +39,7 @@ while getopts 'hcr:' arg; do esac done -check_root SOURCE_DATE_EPOCH +check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME # Pass all arguments after -- right to makepkg makechrootpkg_args+=("${@:$OPTIND}") -- cgit v1.2.3 From 8310abb3485bdf63fc3557e3020a43f9f9e03927 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 27 Jun 2018 09:05:43 +0200 Subject: remove empty tree if "--verifysource" failed makechrootpkg's download_sources() leaves a stray directory if "makepkg --verifysource" failed. We use "setup_workdir" instead of "mktemp -d", because this ensures the correct garbage collection. Signed-off-by: Erich Eckner --- makechrootpkg.in | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/makechrootpkg.in b/makechrootpkg.in index d81be84..4b72a36 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -250,18 +250,14 @@ download_sources() { local copydir=$1 local makepkg_user=$2 - local builddir - builddir="$(mktemp -d)" - chown "$makepkg_user:" "$builddir" + setup_workdir + chown "$makepkg_user:" "$WORKDIR" # Ensure sources are downloaded sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \ - env SRCDEST="$SRCDEST" BUILDDIR="$builddir" \ + env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \ makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o || die "Could not download sources." - - # Clean up garbage from verifysource - rm -rf "$builddir" } # Usage: move_products $copydir $owner -- cgit v1.2.3 From 799376904de77c2fb862fc559c60489b37e72232 Mon Sep 17 00:00:00 2001 From: Levente Polyak Date: Tue, 22 Jan 2019 03:10:08 +0100 Subject: find-libdeps: in functions use return instead of continue to abort Even if continue would work, it does exactly the same as a return in the way this function is being used. --- find-libdeps.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/find-libdeps.in b/find-libdeps.in index 1fb1fdf..ce92a4e 100644 --- a/find-libdeps.in +++ b/find-libdeps.in @@ -46,7 +46,7 @@ process_sofile() { # extract the major version: 1 soversion="${sofile##*\.so\.}" if [[ "$soversion" = "$sofile" ]] && ((IGNORE_INTERNAL)); then - continue + return fi if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then # libfoo.so=1-64 -- cgit v1.2.3 From 65b50dac40fff6032e8e6a28a2b7bf0a6482bf2e Mon Sep 17 00:00:00 2001 From: Levente Polyak Date: Tue, 22 Jan 2019 02:17:56 +0100 Subject: ci: adding travis support for basic check --- .travis.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8fced6c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,28 @@ +language: shell +sudo: required + +services: +- docker + +arch: + packages: + - openssh + - subversion + - rsync + - arch-install-scripts + - git + - bzr + - mercurial + - diffutils + - asciidoc + - shellcheck + script: + - sudo pacman -Syu --noconfirm --needed "${CONFIG_PACKAGES[@]}" + - make PREFIX=/usr + - make PREFIX=/usr DESTDIR="$(mktemp -d)" install + - make check || true + - SHELLCHECK_OPTS="-S error" make check + +script: 'curl -s https://raw.githubusercontent.com/mikkeloscar/arch-travis/master/arch-travis.sh | bash' + +# vim: ft=yaml ts=2 sw=2 et: -- cgit v1.2.3 From 49d346cde73cc69ab751c919b26ec20e552ef425 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 8 Jan 2018 13:33:14 +0100 Subject: mkarchroot.in: copy host's /etc/hosts into the chroot --- mkarchroot.in | 1 + 1 file changed, 1 insertion(+) diff --git a/mkarchroot.in b/mkarchroot.in index 52e363f..5983abc 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -87,6 +87,7 @@ pacstrap -GMcd ${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" +cat '/etc/hosts' > "$working_dir/etc/hosts" echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf" echo "$CHROOT_VERSION" > "$working_dir/.arch-chroot" -- cgit v1.2.3 From b855f188d07765aa16fa4e1872bf408269c0d205 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 27 Jun 2018 10:44:15 +0200 Subject: fix whitespace errors --- archbuild.in | 2 +- find-libdeps.in | 2 +- mkarchroot.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/archbuild.in b/archbuild.in index bd5706d..163a108 100644 --- a/archbuild.in +++ b/archbuild.in @@ -71,7 +71,7 @@ else -C "@pkgdatadir@/pacman-${repo}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ "${chroots}/${repo}-${arch}/root" \ - pacman -Syu --noconfirm || abort + pacman -Syu --noconfirm || abort fi # Always build official packages reproducibly diff --git a/find-libdeps.in b/find-libdeps.in index ce92a4e..7a3e6f5 100644 --- a/find-libdeps.in +++ b/find-libdeps.in @@ -57,7 +57,7 @@ process_sofile() { case $script_mode in deps) find_args=(-perm -u+x);; - provides) find_args=(-name '*.so*');; + provides) find_args=(-name '*.so*');; esac find . -type f "${find_args[@]}" | while read -r filename; do diff --git a/mkarchroot.in b/mkarchroot.in index 5983abc..a916f2a 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -84,7 +84,7 @@ while read -r varname; do done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$') env -i "${_env[@]}" \ pacstrap -GMcd ${pac_conf:+-C "$pac_conf"} "$working_dir" \ - "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages' + "${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" cat '/etc/hosts' > "$working_dir/etc/hosts" -- cgit v1.2.3 From 4b8cf1e2411b828249c32e9f9643e027e0bfca44 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 22 Jun 2017 10:55:51 +0200 Subject: separate mirrorlist for i686 and x86_64 --- Makefile | 5 +++ arch-nspawn.in | 29 +++++++++--- archbuild.in | 10 ++++- pacman-extra-32.conf | 93 ++++++++++++++++++++++++++++++++++++++ pacman-gnome-unstable-32.conf | 102 ++++++++++++++++++++++++++++++++++++++++++ pacman-kde-unstable-32.conf | 96 +++++++++++++++++++++++++++++++++++++++ pacman-staging-32.conf | 99 ++++++++++++++++++++++++++++++++++++++++ pacman-testing-32.conf | 93 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 520 insertions(+), 7 deletions(-) create mode 100644 pacman-extra-32.conf create mode 100644 pacman-gnome-unstable-32.conf create mode 100644 pacman-kde-unstable-32.conf create mode 100644 pacman-staging-32.conf create mode 100644 pacman-testing-32.conf diff --git a/Makefile b/Makefile index e812936..4bb8d9c 100644 --- a/Makefile +++ b/Makefile @@ -21,13 +21,18 @@ BINPROGS = \ CONFIGFILES = \ makepkg-x86_64.conf \ + pacman-extra-32.conf \ pacman-extra.conf \ + pacman-testing-32.conf \ pacman-testing.conf \ + pacman-staging-32.conf \ pacman-staging.conf \ pacman-multilib.conf \ pacman-multilib-testing.conf \ pacman-multilib-staging.conf \ + pacman-kde-unstable-32.conf \ pacman-kde-unstable.conf \ + pacman-gnome-unstable-32.conf \ pacman-gnome-unstable.conf COMMITPKG_LINKS = \ diff --git a/arch-nspawn.in b/arch-nspawn.in index b9c846e..a5e1957 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -58,9 +58,28 @@ else cache_dirs=("$cache_dir") fi +if [[ -n $makepkg_conf ]]; then + eval "$(grep -a '^CARCH=' "$makepkg_conf")" +else + eval "$(grep -a '^CARCH=' "$working_dir/etc/makepkg.conf")" +fi + pacconf_cmd=$(command -v pacman-conf || command -v pacconf) -# shellcheck disable=2016 -host_mirror=$($pacconf_cmd --repo extra Server 2> /dev/null | head -1 | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +if [[ ! "$CARCH" = 'x86_64' ]]; then + host_mirror="$( + sed -n ' + /^\s*Server\s*=/{ + s/^.*=\s*// + s/\s*\(#.*\)\?$// + p + q + }' \ + '/etc/pacman.d/mirrorlist32' + )" +else + # shellcheck disable=2016 + host_mirror=$($pacconf_cmd --repo extra Server 2> /dev/null | head -1 | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') +fi # shellcheck disable=2016 [[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') @@ -81,7 +100,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" @@ -108,8 +129,6 @@ fi build_mount_args copy_hostconf -eval "$(grep -a '^CARCH=' "$working_dir/etc/makepkg.conf")" - [[ -z $nosetarch ]] || unset CARCH exec ${CARCH:+setarch "$CARCH"} systemd-nspawn -q \ diff --git a/archbuild.in b/archbuild.in index 163a108..645fb9c 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="-32" + fi fi chroots='/var/lib/archbuild' clean_first=false @@ -61,14 +67,14 @@ 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" \ "${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" \ "${chroots}/${repo}-${arch}/root" \ pacman -Syu --noconfirm || abort diff --git a/pacman-extra-32.conf b/pacman-extra-32.conf new file mode 100644 index 0000000..bf9ac67 --- /dev/null +++ b/pacman-extra-32.conf @@ -0,0 +1,93 @@ +# +# /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. + +#[testing] +#Include = /etc/pacman.d/mirrorlist + +[core] +Include = /etc/pacman.d/mirrorlist32 + +[extra] +Include = /etc/pacman.d/mirrorlist32 + +#[community-testing] +#Include = /etc/pacman.d/mirrorlist + +[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 + diff --git a/pacman-gnome-unstable-32.conf b/pacman-gnome-unstable-32.conf new file mode 100644 index 0000000..e558e22 --- /dev/null +++ b/pacman-gnome-unstable-32.conf @@ -0,0 +1,102 @@ +# +# /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. + +[gnome-unstable] +Include = /etc/pacman.d/mirrorlist32 + +[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 + diff --git a/pacman-kde-unstable-32.conf b/pacman-kde-unstable-32.conf new file mode 100644 index 0000000..4f82881 --- /dev/null +++ b/pacman-kde-unstable-32.conf @@ -0,0 +1,96 @@ +# +# /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. + +[kde-unstable] +Include = /etc/pacman.d/mirrorlist32 + +[testing] +Include = /etc/pacman.d/mirrorlist32 + +[core] +Include = /etc/pacman.d/mirrorlist32 + +[extra] +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 + diff --git a/pacman-staging-32.conf b/pacman-staging-32.conf new file mode 100644 index 0000000..540c5f7 --- /dev/null +++ b/pacman-staging-32.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 + diff --git a/pacman-testing-32.conf b/pacman-testing-32.conf new file mode 100644 index 0000000..5775f94 --- /dev/null +++ b/pacman-testing-32.conf @@ -0,0 +1,93 @@ +# +# /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. + +[testing] +Include = /etc/pacman.d/mirrorlist32 + +[core] +Include = /etc/pacman.d/mirrorlist32 + +[extra] +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 + -- cgit v1.2.3 From 8e7703a541636eaadd98b04fa4fab00ebce71de1 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 2 Jan 2018 23:38:04 -0500 Subject: Revert "Remove i686 support" This reverts commit 7259e7def07a5f6ee04a34db61a87361ad0b5ac7, except for commitpkg.in --- Makefile | 6 +++ lib/valid-tags.sh | 19 +++---- makepkg-i686.conf | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ zsh_completion.in | 2 +- 4 files changed, 167 insertions(+), 10 deletions(-) create mode 100644 makepkg-i686.conf diff --git a/Makefile b/Makefile index 4bb8d9c..bd1f671 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ BINPROGS = \ makechrootpkg CONFIGFILES = \ + makepkg-i686.conf \ makepkg-x86_64.conf \ pacman-extra-32.conf \ pacman-extra.conf \ @@ -49,13 +50,18 @@ COMMITPKG_LINKS = \ gnome-unstablepkg ARCHBUILD_LINKS = \ + extra-i686-build \ extra-x86_64-build \ + testing-i686-build \ testing-x86_64-build \ + staging-i686-build \ staging-x86_64-build \ multilib-build \ multilib-testing-build \ multilib-staging-build \ + kde-unstable-i686-build \ kde-unstable-x86_64-build \ + gnome-unstable-i686-build \ gnome-unstable-x86_64-build CROSSREPOMOVE_LINKS = \ diff --git a/lib/valid-tags.sh b/lib/valid-tags.sh index 3cfe046..2916dc7 100644 --- a/lib/valid-tags.sh +++ b/lib/valid-tags.sh @@ -4,22 +4,23 @@ # shellcheck disable=2034 _arch=( + i686 x86_64 any ) # shellcheck disable=2034 _tags=( - core-x86_64 core-any - extra-x86_64 extra-any + core-i686 core-x86_64 core-any + extra-i686 extra-x86_64 extra-any multilib-x86_64 - staging-x86_64 staging-any - testing-x86_64 testing-any + staging-i686 staging-x86_64 staging-any + testing-i686 testing-x86_64 testing-any multilib-testing-x86_64 multilib-staging-x86_64 - community-x86_64 community-any - community-staging-x86_64 community-staging-any - community-testing-x86_64 community-testing-any - kde-unstable-x86_64 kde-unstable-any - gnome-unstable-x86_64 gnome-unstable-any + community-i686 community-x86_64 community-any + community-staging-i686 community-staging-x86_64 community-staging-any + community-testing-i686 community-testing-x86_64 community-testing-any + kde-unstable-i686 kde-unstable-x86_64 kde-unstable-any + gnome-unstable-i686 gnome-unstable-x86_64 gnome-unstable-any ) diff --git a/makepkg-i686.conf b/makepkg-i686.conf new file mode 100644 index 0000000..f7ea2c2 --- /dev/null +++ b/makepkg-i686.conf @@ -0,0 +1,150 @@ +#!/hint/bash +# shellcheck disable=2034 + +# +# /etc/makepkg.conf +# + +######################################################################### +# SOURCE ACQUISITION +######################################################################### +# +#-- The download utilities that makepkg should use to acquire sources +# Format: 'protocol::agent' +DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' + 'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' + 'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' + 'rsync::/usr/bin/rsync --no-motd -z %u %o' + 'scp::/usr/bin/scp -C %u %o') + +# Other common tools: +# /usr/bin/snarf +# /usr/bin/lftpget -c +# /usr/bin/wget + +#-- The package required by makepkg to download VCS sources +# Format: 'protocol::package' +VCSCLIENTS=('bzr::bzr' + 'git::git' + 'hg::mercurial' + 'svn::subversion') + +######################################################################### +# ARCHITECTURE, COMPILE FLAGS +######################################################################### +# +CARCH="i686" +CHOST="i686-pc-linux-gnu" + +#-- Compiler and Linker Flags +# -march (or -mcpu) builds exclusively for an architecture +# -mtune optimizes for an architecture, but builds for whole processor family +CPPFLAGS="-D_FORTIFY_SOURCE=2" +CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" +CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" +LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" +#-- Make Flags: change this for DistCC/SMP systems +#MAKEFLAGS="-j2" +#-- Debugging flags +DEBUG_CFLAGS="-g -fvar-tracking-assignments" +DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" + +######################################################################### +# BUILD ENVIRONMENT +######################################################################### +# +# Defaults: BUILDENV=(!distcc color !ccache check !sign) +# A negated environment option will do the opposite of the comments below. +# +#-- distcc: Use the Distributed C/C++/ObjC compiler +#-- color: Colorize output messages +#-- ccache: Use ccache to cache compilation +#-- check: Run the check() function if present in the PKGBUILD +#-- sign: Generate PGP signature file +# +BUILDENV=(!distcc color !ccache check !sign) +# +#-- If using DistCC, your MAKEFLAGS will also need modification. In addition, +#-- specify a space-delimited list of hosts running in the DistCC cluster. +#DISTCC_HOSTS="" +# +#-- Specify a directory for package building. +#BUILDDIR=/tmp/makepkg + +######################################################################### +# GLOBAL PACKAGE OPTIONS +# These are default values for the options=() settings +######################################################################### +# +# Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) +# A negated option will do the opposite of the comments below. +# +#-- strip: Strip symbols from binaries/libraries +#-- docs: Save doc directories specified by DOC_DIRS +#-- libtool: Leave libtool (.la) files in packages +#-- staticlibs: Leave static library (.a) files in packages +#-- emptydirs: Leave empty directories in packages +#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip +#-- purge: Remove files specified by PURGE_TARGETS +#-- upx: Compress binary executable files using UPX +#-- optipng: Optimize PNG images with optipng +#-- debug: Add debugging flags as specified in DEBUG_* variables +# +OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) + +#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 +INTEGRITY_CHECK=(md5) +#-- Options to be used when stripping binaries. See `man strip' for details. +STRIP_BINARIES="--strip-all" +#-- Options to be used when stripping shared libraries. See `man strip' for details. +STRIP_SHARED="--strip-unneeded" +#-- Options to be used when stripping static libraries. See `man strip' for details. +STRIP_STATIC="--strip-debug" +#-- Manual (man and info) directories to compress (if zipman is specified) +MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info}) +#-- Doc directories to remove (if !docs is specified) +DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) +#-- Files to be removed from all packages (if purge is specified) +PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) + +######################################################################### +# PACKAGE OUTPUT +######################################################################### +# +# Default: put built package and cached source in build directory +# +#-- Destination: specify a fixed directory where all packages will be placed +#PKGDEST=/home/packages +#-- Source cache: specify a fixed directory where source files will be cached +#SRCDEST=/home/sources +#-- Source packages: specify a fixed directory where all src packages will be placed +#SRCPKGDEST=/home/srcpackages +#-- Log files: specify a fixed directory where all log files will be placed +#LOGDEST=/home/makepkglogs +#-- Packager: name/email of the person or organization building packages +#PACKAGER="John Doe " +#-- Specify a key to use for package signing +#GPGKEY="" + +######################################################################### +# COMPRESSION DEFAULTS +######################################################################### +# +COMPRESSGZ=(gzip -c -f -n) +COMPRESSBZ2=(bzip2 -c -f) +COMPRESSXZ=(xz -c -z -) +COMPRESSLRZ=(lrzip -q) +COMPRESSLZO=(lzop -q) +COMPRESSZ=(compress -c -f) + +######################################################################### +# EXTENSION DEFAULTS +######################################################################### +# +# WARNING: Do NOT modify these variables unless you know what you are +# doing. +# +PKGEXT='.pkg.tar.xz' +SRCEXT='.src.tar.gz' + +# vim: set ft=sh ts=2 sw=2 et: diff --git a/zsh_completion.in b/zsh_completion.in index 3bd4c4d..0f95a4c 100644 --- a/zsh_completion.in +++ b/zsh_completion.in @@ -1,4 +1,4 @@ -#compdef archbuild archco arch-nspawn archrelease archrm commitpkg finddeps makechrootpkg mkarchroot rebuildpkgs extrapkg=commitpkg corepkg=commitpkg testingpkg=commitpkg stagingpkg=commitpkg communitypkg=commitpkg community-testingpkg=commitpkg community-stagingpkg=commitpkg multilibpkg=commitpkg multilib-testingpkg=commitpkg extra-x86_64-build=archbuild testing-x86_64-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild multilib-staging-build=archbuild kde-unstable-x86_64-build=archbuild gnome-unstable-x86_64-build=archbuild communityco=archco +#compdef archbuild archco arch-nspawn archrelease archrm commitpkg finddeps makechrootpkg mkarchroot rebuildpkgs extrapkg=commitpkg corepkg=commitpkg testingpkg=commitpkg stagingpkg=commitpkg communitypkg=commitpkg community-testingpkg=commitpkg community-stagingpkg=commitpkg multilibpkg=commitpkg multilib-testingpkg=commitpkg extra-i686-build=archbuild extra-x86_64-build=archbuild testing-i686-build=archbuild testing-x86_64-build=archbuild staging-i686-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild multilib-staging-build=archbuild kde-unstable-i686-build=archbuild kde-unstable-x86_64-build=archbuild gnome-unstable-i686-build=archbuild gnome-unstable-x86_64-build=archbuild communityco=archco # License: Unspecified m4_include(lib/valid-tags.sh) -- cgit v1.2.3 From 0c49d5f18a4591dd0c7cf3fbc4169c07eaeb7cf9 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 6 Jun 2018 13:29:37 +0200 Subject: Makefile: devtools -> devtools32 in dist and upload targets --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index bd1f671..f64582f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -V=20180531 +V=$(shell git describe --exact-match) PREFIX = /usr/local MANDIR = $(PREFIX)/share/man @@ -131,11 +131,11 @@ uninstall: done; dist: - git archive --format=tar --prefix=devtools-$(V)/ $(V) | gzip -9 > devtools-$(V).tar.gz - gpg --detach-sign --use-agent devtools-$(V).tar.gz + git archive --format=tar --prefix=devtools32-$(V)/ $(V) | gzip -9 > devtools32-$(V).tar.gz + gpg --detach-sign --use-agent devtools32-$(V).tar.gz upload: - scp devtools-$(V).tar.gz devtools-$(V).tar.gz.sig repos.archlinux.org:/srv/ftp/other/devtools/ + scp devtools32-$(V).tar.gz devtools32-$(V).tar.gz.sig sources.archlinux32.org:sources/ check: $(BINPROGS) bash_completion makepkg-x86_64.conf PKGBUILD.proto shellcheck $^ -- cgit v1.2.3 From 73735e906a560cd9b8c684fbc741a072188bb8f3 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 6 Jun 2018 13:30:04 +0200 Subject: .gitignore: devtools -> devtools32 --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 04eefe5..c3f3408 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ *~ -devtools-*.tar.gz* +devtools32-*.tar.gz* archbuild archco archrelease -- cgit v1.2.3 From 0ad66ba86bdd98eb0eb17270ca17afffb5f9832d Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 18 Dec 2017 09:33:29 +0100 Subject: pacman-staging-i686.conf, pacman-testing-i686.conf, pacman-staging-with-build-support-i686.conf: reorder repositories and add repo build-support for i686 --- Makefile | 2 + pacman-gnome-unstable-32.conf | 10 +-- pacman-kde-unstable-32.conf | 6 +- pacman-staging-32.conf | 10 +-- pacman-staging-with-build-support-32.conf | 102 ++++++++++++++++++++++++++++++ pacman-testing-32.conf | 6 +- 6 files changed, 120 insertions(+), 16 deletions(-) create mode 100644 pacman-staging-with-build-support-32.conf diff --git a/Makefile b/Makefile index f64582f..d546b01 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ CONFIGFILES = \ pacman-testing.conf \ pacman-staging-32.conf \ pacman-staging.conf \ + pacman-staging-with-build-support-32.conf \ pacman-multilib.conf \ pacman-multilib-testing.conf \ pacman-multilib-staging.conf \ @@ -56,6 +57,7 @@ ARCHBUILD_LINKS = \ testing-x86_64-build \ staging-i686-build \ staging-x86_64-build \ + staging-with-build-support-i686-build \ multilib-build \ multilib-testing-build \ multilib-staging-build \ diff --git a/pacman-gnome-unstable-32.conf b/pacman-gnome-unstable-32.conf index e558e22..53f76d9 100644 --- a/pacman-gnome-unstable-32.conf +++ b/pacman-gnome-unstable-32.conf @@ -76,19 +76,19 @@ Include = /etc/pacman.d/mirrorlist32 [staging] Include = /etc/pacman.d/mirrorlist32 -[testing] +[community-staging] Include = /etc/pacman.d/mirrorlist32 -[core] +[testing] Include = /etc/pacman.d/mirrorlist32 -[extra] +[community-testing] Include = /etc/pacman.d/mirrorlist32 -[community-staging] +[core] Include = /etc/pacman.d/mirrorlist32 -[community-testing] +[extra] Include = /etc/pacman.d/mirrorlist32 [community] diff --git a/pacman-kde-unstable-32.conf b/pacman-kde-unstable-32.conf index 4f82881..77e97d9 100644 --- a/pacman-kde-unstable-32.conf +++ b/pacman-kde-unstable-32.conf @@ -76,13 +76,13 @@ Include = /etc/pacman.d/mirrorlist32 [testing] Include = /etc/pacman.d/mirrorlist32 -[core] +[community-testing] Include = /etc/pacman.d/mirrorlist32 -[extra] +[core] Include = /etc/pacman.d/mirrorlist32 -[community-testing] +[extra] Include = /etc/pacman.d/mirrorlist32 [community] diff --git a/pacman-staging-32.conf b/pacman-staging-32.conf index 540c5f7..77c318f 100644 --- a/pacman-staging-32.conf +++ b/pacman-staging-32.conf @@ -73,19 +73,19 @@ LocalFileSigLevel = Optional [staging] Include = /etc/pacman.d/mirrorlist32 -[testing] +[community-staging] Include = /etc/pacman.d/mirrorlist32 -[core] +[testing] Include = /etc/pacman.d/mirrorlist32 -[extra] +[community-testing] Include = /etc/pacman.d/mirrorlist32 -[community-staging] +[core] Include = /etc/pacman.d/mirrorlist32 -[community-testing] +[extra] Include = /etc/pacman.d/mirrorlist32 [community] diff --git a/pacman-staging-with-build-support-32.conf b/pacman-staging-with-build-support-32.conf new file mode 100644 index 0000000..98ded66 --- /dev/null +++ b/pacman-staging-with-build-support-32.conf @@ -0,0 +1,102 @@ +# +# /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. + +[build-support] +Include = /etc/pacman.d/mirrorlist32 + +[staging] +Include = /etc/pacman.d/mirrorlist32 + +[community-staging] +Include = /etc/pacman.d/mirrorlist32 + +[testing] +Include = /etc/pacman.d/mirrorlist32 + +[community-testing] +Include = /etc/pacman.d/mirrorlist32 + +[core] +Include = /etc/pacman.d/mirrorlist32 + +[extra] +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 + diff --git a/pacman-testing-32.conf b/pacman-testing-32.conf index 5775f94..f9941d1 100644 --- a/pacman-testing-32.conf +++ b/pacman-testing-32.conf @@ -73,13 +73,13 @@ LocalFileSigLevel = Optional [testing] Include = /etc/pacman.d/mirrorlist32 -[core] +[community-testing] Include = /etc/pacman.d/mirrorlist32 -[extra] +[core] Include = /etc/pacman.d/mirrorlist32 -[community-testing] +[extra] Include = /etc/pacman.d/mirrorlist32 [community] -- cgit v1.2.3 From 0b416e77f24dff58aca2b5bd625697493008e036 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 16 Jun 2017 17:17:19 +0200 Subject: archbuild.in: set pacman cache dir to /var/cache/archbuild32 in case of non-x86_64-build, so we do not use any-packages from x86_64 mirrors, and cross-mount inside to /var/cache/pacman/pkg --- archbuild.in | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/archbuild.in b/archbuild.in index 645fb9c..2c5aca5 100644 --- a/archbuild.in +++ b/archbuild.in @@ -47,6 +47,14 @@ done check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME +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}") @@ -69,6 +77,7 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then setarch "${arch}" mkarchroot \ -C "@pkgdatadir@/pacman-${repo}${arch_ext}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ + ${cache_dir} \ "${chroots}/${repo}-${arch}/root" \ "${base_packages[@]}" || abort else @@ -76,6 +85,7 @@ else arch-nspawn \ -C "@pkgdatadir@/pacman-${repo}${arch_ext}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \ + ${cache_dir} \ "${chroots}/${repo}-${arch}/root" \ pacman -Syu --noconfirm || abort fi -- cgit v1.2.3 From b6bbb4fb186bde7b33e8141831643bddd0fb38a3 Mon Sep 17 00:00:00 2001 From: Brian Bidulock Date: Sat, 18 Nov 2017 22:53:37 -0700 Subject: arch-nspawn should not take pacman cache from host Previously, arch-nspawn was using the hosts' pacman cache in the chroot even when the chroot was set up with a different cache by mkarchroot, unless specified with the -c flag. Problem is that makechrootpkg passes no -C, -M nor -c flags to arch-nspawn, so all values must be obtained from the working directory. This change take the cache directories from the pacman.conf specified with the -C option unless the -c option was given (as is the case when the chroot is set up with mkarchroot), and, when neither -C nor -c is given (as is the case when invoked by makechrootpkg), the cache directory is taken from the pacman.conf in the working directory. This wasn't such an issue when i686 was mainline, however, which building packages in a chroot against archlinux32 on an x86_64 platform, the cache of the host should _never_ be used. --- arch-nspawn.in | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch-nspawn.in b/arch-nspawn.in index a5e1957..79cff1a 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -53,7 +53,11 @@ shift 1 [[ -z $working_dir ]] && die 'Please specify a working directory.' if [[ -z $cache_dir ]]; then - cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')) + if [[ -z $pac_conf ]]; then + cache_dirs=($(pacman --config "$working_dir/etc/pacman.conf" -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')) + else + cache_dirs=($(pacman --config "$pac_conf" -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')) + fi else cache_dirs=("$cache_dir") fi -- cgit v1.2.3 From 9e14ed5b1b1347938f1a5f642308b4f72c445c15 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 19 Oct 2017 11:19:03 +0200 Subject: makechrootpkg: bend to allow running solely namcap via "*-build -- -- --verifysource" --- makechrootpkg.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/makechrootpkg.in b/makechrootpkg.in index 4b72a36..f606df0 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -237,7 +237,10 @@ _chrootbuild() { _chrootnamcap() { pacman -S --needed --noconfirm namcap - for pkgfile in /startdir/PKGBUILD /pkgdest/*; do + for pkgfile in /startdir/PKGBUILD /startdir/*.pkg.tar.xz /pkgdest/*; do + if [ ! -f "${pkgfile}" ]; then + continue + fi echo "Checking ${pkgfile##*/}" sudo -u builduser namcap "$pkgfile" 2>&1 | tee "/logdest/${pkgfile##*/}-namcap.log" done -- cgit v1.2.3 From 7ff93a04d69a1bb2ea418d1e8bfe978c52faadf2 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 22 Jun 2017 11:00:15 +0200 Subject: introduce i486 as well --- Makefile | 7 +++ makepkg-i486.conf | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 makepkg-i486.conf diff --git a/Makefile b/Makefile index d546b01..babdbf1 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ BINPROGS = \ makechrootpkg CONFIGFILES = \ + makepkg-i486.conf \ makepkg-i686.conf \ makepkg-x86_64.conf \ pacman-extra-32.conf \ @@ -51,18 +52,24 @@ COMMITPKG_LINKS = \ gnome-unstablepkg ARCHBUILD_LINKS = \ + extra-i486-build \ extra-i686-build \ extra-x86_64-build \ + testing-i486-build \ testing-i686-build \ testing-x86_64-build \ + staging-i486-build \ staging-i686-build \ staging-x86_64-build \ + staging-with-build-support-i486-build \ staging-with-build-support-i686-build \ multilib-build \ multilib-testing-build \ multilib-staging-build \ + kde-unstable-i486-build \ kde-unstable-i686-build \ kde-unstable-x86_64-build \ + gnome-unstable-i486-build \ gnome-unstable-i686-build \ gnome-unstable-x86_64-build diff --git a/makepkg-i486.conf b/makepkg-i486.conf new file mode 100644 index 0000000..acc8683 --- /dev/null +++ b/makepkg-i486.conf @@ -0,0 +1,150 @@ +#!/hint/bash +# shellcheck disable=2034 + +# +# /etc/makepkg.conf +# + +######################################################################### +# SOURCE ACQUISITION +######################################################################### +# +#-- The download utilities that makepkg should use to acquire sources +# Format: 'protocol::agent' +DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' + 'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' + 'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' + 'rsync::/usr/bin/rsync --no-motd -z %u %o' + 'scp::/usr/bin/scp -C %u %o') + +# Other common tools: +# /usr/bin/snarf +# /usr/bin/lftpget -c +# /usr/bin/wget + +#-- The package required by makepkg to download VCS sources +# Format: 'protocol::package' +VCSCLIENTS=('bzr::bzr' + 'git::git' + 'hg::mercurial' + 'svn::subversion') + +######################################################################### +# ARCHITECTURE, COMPILE FLAGS +######################################################################### +# +CARCH="i486" +CHOST="i486-pc-linux-gnu" + +#-- Compiler and Linker Flags +# -march (or -mcpu) builds exclusively for an architecture +# -mtune optimizes for an architecture, but builds for whole processor family +CPPFLAGS="-D_FORTIFY_SOURCE=2" +CFLAGS="-march=i486 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" +CXXFLAGS="-march=i486 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" +LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" +#-- Make Flags: change this for DistCC/SMP systems +#MAKEFLAGS="-j2" +#-- Debugging flags +DEBUG_CFLAGS="-g -fvar-tracking-assignments" +DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" + +######################################################################### +# BUILD ENVIRONMENT +######################################################################### +# +# Defaults: BUILDENV=(!distcc color !ccache check !sign) +# A negated environment option will do the opposite of the comments below. +# +#-- distcc: Use the Distributed C/C++/ObjC compiler +#-- color: Colorize output messages +#-- ccache: Use ccache to cache compilation +#-- check: Run the check() function if present in the PKGBUILD +#-- sign: Generate PGP signature file +# +BUILDENV=(!distcc color !ccache check !sign) +# +#-- If using DistCC, your MAKEFLAGS will also need modification. In addition, +#-- specify a space-delimited list of hosts running in the DistCC cluster. +#DISTCC_HOSTS="" +# +#-- Specify a directory for package building. +#BUILDDIR=/tmp/makepkg + +######################################################################### +# GLOBAL PACKAGE OPTIONS +# These are default values for the options=() settings +######################################################################### +# +# Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) +# A negated option will do the opposite of the comments below. +# +#-- strip: Strip symbols from binaries/libraries +#-- docs: Save doc directories specified by DOC_DIRS +#-- libtool: Leave libtool (.la) files in packages +#-- staticlibs: Leave static library (.a) files in packages +#-- emptydirs: Leave empty directories in packages +#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip +#-- purge: Remove files specified by PURGE_TARGETS +#-- upx: Compress binary executable files using UPX +#-- optipng: Optimize PNG images with optipng +#-- debug: Add debugging flags as specified in DEBUG_* variables +# +OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) + +#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 +INTEGRITY_CHECK=(md5) +#-- Options to be used when stripping binaries. See `man strip' for details. +STRIP_BINARIES="--strip-all" +#-- Options to be used when stripping shared libraries. See `man strip' for details. +STRIP_SHARED="--strip-unneeded" +#-- Options to be used when stripping static libraries. See `man strip' for details. +STRIP_STATIC="--strip-debug" +#-- Manual (man and info) directories to compress (if zipman is specified) +MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info}) +#-- Doc directories to remove (if !docs is specified) +DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) +#-- Files to be removed from all packages (if purge is specified) +PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) + +######################################################################### +# PACKAGE OUTPUT +######################################################################### +# +# Default: put built package and cached source in build directory +# +#-- Destination: specify a fixed directory where all packages will be placed +#PKGDEST=/home/packages +#-- Source cache: specify a fixed directory where source files will be cached +#SRCDEST=/home/sources +#-- Source packages: specify a fixed directory where all src packages will be placed +#SRCPKGDEST=/home/srcpackages +#-- Log files: specify a fixed directory where all log files will be placed +#LOGDEST=/home/makepkglogs +#-- Packager: name/email of the person or organization building packages +#PACKAGER="John Doe " +#-- Specify a key to use for package signing +#GPGKEY="" + +######################################################################### +# COMPRESSION DEFAULTS +######################################################################### +# +COMPRESSGZ=(gzip -c -f -n) +COMPRESSBZ2=(bzip2 -c -f) +COMPRESSXZ=(xz -c -z -) +COMPRESSLRZ=(lrzip -q) +COMPRESSLZO=(lzop -q) +COMPRESSZ=(compress -c -f) + +######################################################################### +# EXTENSION DEFAULTS +######################################################################### +# +# WARNING: Do NOT modify these variables unless you know what you are +# doing. +# +PKGEXT='.pkg.tar.xz' +SRCEXT='.src.tar.gz' + +# vim: set ft=sh ts=2 sw=2 et: -- cgit v1.2.3 From a800df3fbc55204f66f54248aaf87ba797307f96 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Sat, 1 Dec 2018 19:36:23 -0500 Subject: arch-nspawn: don't delete the guest gpg configuration It's important to ensure the guest has up to date data because updating a chroot after quite some time can potentially rely on updated archlinux-keyring, something which the host machine either kept up to date on or manually fixed, but it kills automation to mess around with chroot configs like that. Alternatively, signed packages added with -I need to work, and we assume the host is configured to accept these. That is *not* a good reason to completely nuke whatever is in the guest, though. A guest might have been manually configured to accept keys which aren't accepted by the host; one example of this happening in practice, is archlinux32 when building 32-bit packages from an archlinux host. A simple solution is to use pacman-key's native facility to dump the known keys and trust status from one gpg configuration, and import it into another. Use this to append to, rather than overwrite, the chrooted guest's pacman keyring. While we are at it, fix a bug where we didn't respect the host's pacman.conf settings for the GpgDir. While it isn't wildly likely a user will choose to customize this, it is a valid and supported use case and we must think about this ourselves. --- arch-nspawn.in | 3 ++- makechrootpkg.in | 3 +++ mkarchroot.in | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/arch-nspawn.in b/arch-nspawn.in index 79cff1a..7132885 100644 --- a/arch-nspawn.in +++ b/arch-nspawn.in @@ -103,7 +103,8 @@ build_mount_args() { } copy_hostconf () { - cp -a /etc/pacman.d/gnupg "$working_dir/etc/pacman.d" + gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1 + pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg/ --import-trustdb "$(pacman-conf GpgDir)" >/dev/null 2>&1 echo "Server = $host_mirror" | \ tee "$working_dir/etc/pacman.d/mirrorlist" > \ "$working_dir/etc/pacman.d/mirrorlist32" diff --git a/makechrootpkg.in b/makechrootpkg.in index f606df0..adaa758 100644 --- a/makechrootpkg.in +++ b/makechrootpkg.in @@ -221,6 +221,9 @@ _chrootbuild() { # shellcheck source=/dev/null . /etc/profile + # otherwise we might have missing keys + pacman-key --populate + # Beware, there are some stupid arbitrary rules on how you can # use "$" in arguments to commands with "sudo -i". ${foo} or # ${1} is OK, but $foo or $1 isn't. diff --git a/mkarchroot.in b/mkarchroot.in index a916f2a..df995a8 100644 --- a/mkarchroot.in +++ b/mkarchroot.in @@ -93,6 +93,8 @@ echo "$CHROOT_VERSION" > "$working_dir/.arch-chroot" systemd-machine-id-setup --root="$working_dir" +pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg --init + exec arch-nspawn \ ${nosetarch:+-s} \ ${pac_conf:+-C "$pac_conf"} \ -- cgit v1.2.3