From 9600c80e4da648de2bb3b4c78bcab061dc1be46e Mon Sep 17 00:00:00 2001
From: Kevin F <https://github.com/KF-Art>
Date: Tue, 12 Apr 2022 14:56:19 -0400
Subject: [PATCH] Upload fork

---
 .gitattributes                                |    4 +
 .github/issue_template.md                     |   14 +
 .github/pull_request_template.md              |   23 +
 .github/workflows/build.yaml                  |   99 +
 .github/workflows/cycles.yml                  |   40 +
 .github/workflows/stale.yml                   |   21 +
 .gitignore                                    |   14 +
 .mailmap                                      |   59 +
 =2022.07.03                                   |    0
 CONTRIBUTING.md                               |  131 +
 COPYING                                       |   23 +
 Manual.md                                     | 2164 +++++++++
 README.md                                     |  507 ++
 common/build-helper/cmake-wxWidgets-gtk3.sh   |    5 +
 common/build-helper/gir.sh                    |   42 +
 common/build-helper/numpy.sh                  |   37 +
 common/build-helper/qemu.sh                   |   14 +
 common/build-helper/qmake.sh                  |   95 +
 common/build-helper/rust.sh                   |   53 +
 common/build-profiles/README                  |   17 +
 common/build-profiles/aarch64-musl.sh         |    7 +
 common/build-profiles/aarch64.sh              |    7 +
 common/build-profiles/armv6l-musl.sh          |    7 +
 common/build-profiles/armv6l.sh               |    7 +
 common/build-profiles/armv7l-musl.sh          |    7 +
 common/build-profiles/armv7l.sh               |    7 +
 common/build-profiles/bootstrap.sh            |    3 +
 common/build-profiles/i686-musl.sh            |    7 +
 common/build-profiles/i686.sh                 |    7 +
 common/build-profiles/ppc-musl.sh             |    7 +
 common/build-profiles/ppc.sh                  |    7 +
 common/build-profiles/ppc64-musl.sh           |    7 +
 common/build-profiles/ppc64.sh                |    7 +
 common/build-profiles/ppc64le-musl.sh         |    7 +
 common/build-profiles/ppc64le.sh              |    7 +
 common/build-profiles/ppcle-musl.sh           |    7 +
 common/build-profiles/ppcle.sh                |    7 +
 common/build-profiles/x86_64-musl.sh          |    7 +
 common/build-profiles/x86_64.sh               |    7 +
 common/build-style/R-cran.sh                  |    7 +
 common/build-style/README                     |   12 +
 common/build-style/cargo.sh                   |   27 +
 common/build-style/cmake.sh                   |  128 +
 common/build-style/configure.sh               |   40 +
 common/build-style/fetch.sh                   |   12 +
 common/build-style/gem.sh                     |   68 +
 common/build-style/gemspec.sh                 |  190 +
 common/build-style/gnu-configure.sh           |   41 +
 common/build-style/gnu-makefile.sh            |   41 +
 common/build-style/go.sh                      |   49 +
 common/build-style/haskell-stack.sh           |   37 +
 common/build-style/meson.sh                   |  150 +
 common/build-style/meta.sh                    |    9 +
 common/build-style/perl-ModuleBuild.sh        |   52 +
 common/build-style/perl-module.sh             |   90 +
 common/build-style/python-module.sh           |   96 +
 common/build-style/python2-module.sh          |   34 +
 common/build-style/python3-module.sh          |   64 +
 common/build-style/python3-pep517.sh          |   33 +
 common/build-style/qmake.sh                   |  148 +
 common/build-style/raku-dist.sh               |   16 +
 common/build-style/ruby-module.sh             |   13 +
 common/build-style/scons.sh                   |   26 +
 common/build-style/sip-build.sh               |  147 +
 common/build-style/slashpackage.sh            |   35 +
 common/build-style/texmf.sh                   |   70 +
 common/build-style/void-cross.sh              |  640 +++
 common/build-style/waf.sh                     |   21 +
 common/build-style/waf3.sh                    |   29 +
 common/build-style/zig-build.sh               |   41 +
 common/chroot-style/README                    |   13 +
 common/chroot-style/bwrap.sh                  |   23 +
 common/chroot-style/ethereal.sh               |  135 +
 common/chroot-style/uchroot.sh                |   21 +
 common/chroot-style/uunshare.sh               |   21 +
 common/cross-profiles/README                  |   19 +
 common/cross-profiles/aarch64-musl.sh         |   12 +
 common/cross-profiles/aarch64.sh              |   12 +
 common/cross-profiles/armv5te-musl.sh         |    1 +
 common/cross-profiles/armv5te.sh              |    1 +
 common/cross-profiles/armv5tel-musl.sh        |   12 +
 common/cross-profiles/armv5tel.sh             |   12 +
 common/cross-profiles/armv6hf-musl.sh         |    1 +
 common/cross-profiles/armv6hf.sh              |    1 +
 common/cross-profiles/armv6l-musl.sh          |   12 +
 common/cross-profiles/armv6l.sh               |   12 +
 common/cross-profiles/armv7hf-musl.sh         |    1 +
 common/cross-profiles/armv7hf.sh              |    1 +
 common/cross-profiles/armv7l-musl.sh          |   12 +
 common/cross-profiles/armv7l.sh               |   12 +
 common/cross-profiles/i686-musl.sh            |   12 +
 common/cross-profiles/i686.sh                 |   12 +
 common/cross-profiles/mips-musl.sh            |   12 +
 common/cross-profiles/mipsel-musl.sh          |   12 +
 common/cross-profiles/mipselhf-musl.sh        |   12 +
 common/cross-profiles/mipshf-musl.sh          |   12 +
 common/cross-profiles/ppc-musl.sh             |   12 +
 common/cross-profiles/ppc.sh                  |   12 +
 common/cross-profiles/ppc64-musl.sh           |   12 +
 common/cross-profiles/ppc64.sh                |   12 +
 common/cross-profiles/ppc64le-musl.sh         |   12 +
 common/cross-profiles/ppc64le.sh              |   12 +
 common/cross-profiles/ppcle-musl.sh           |   12 +
 common/cross-profiles/ppcle.sh                |   12 +
 common/cross-profiles/x86_64-musl.sh          |   12 +
 common/cross-profiles/x86_64.sh               |   12 +
 common/environment/README                     |   28 +
 common/environment/build-style/.empty         |    0
 common/environment/build-style/R-cran.sh      |    8 +
 common/environment/build-style/cargo.sh       |    7 +
 common/environment/build-style/cmake.sh       |   10 +
 common/environment/build-style/gem.sh         |    8 +
 common/environment/build-style/gemspec.sh     |    3 +
 common/environment/build-style/go.sh          |   45 +
 .../environment/build-style/haskell-stack.sh  |    1 +
 common/environment/build-style/meson.sh       |    1 +
 .../build-style/perl-ModuleBuild.sh           |    3 +
 common/environment/build-style/perl-module.sh |    4 +
 .../environment/build-style/python-module.sh  |    2 +
 .../environment/build-style/python2-module.sh |    2 +
 .../environment/build-style/python3-module.sh |    2 +
 .../environment/build-style/python3-pep517.sh |    2 +
 common/environment/build-style/raku-dist.sh   |    3 +
 common/environment/build-style/ruby-module.sh |    1 +
 common/environment/build-style/scons.sh       |    1 +
 common/environment/build-style/texmf.sh       |    5 +
 .../build-style/texmf/ownership.txt           |  215 +
 common/environment/build-style/void-cross.sh  |    6 +
 common/environment/build-style/waf.sh         |    1 +
 common/environment/build-style/waf3.sh        |    1 +
 common/environment/build-style/zig-build.sh   |    1 +
 common/environment/build/.empty               |    0
 common/environment/build/bootstrap.sh         |    1 +
 common/environment/build/ccache.sh            |    1 +
 common/environment/build/cross.sh             |    1 +
 .../build/debug-debug-prefix-map.sh           |    1 +
 common/environment/build/hardening.sh         |    1 +
 common/environment/build/pkg-config.sh        |    1 +
 common/environment/check/bootstrap.sh         |    1 +
 common/environment/check/ccache.sh            |    1 +
 common/environment/check/cross.sh             |    1 +
 .../check/debug-debug-prefix-map.sh           |    1 +
 common/environment/check/hardening.sh         |    1 +
 common/environment/check/no_display.sh        |    1 +
 common/environment/check/pkg-config.sh        |    1 +
 common/environment/configure/.empty           |    0
 .../configure/autoconf_cache/aarch64-linux    |  147 +
 .../configure/autoconf_cache/arm-common       |  232 +
 .../configure/autoconf_cache/arm-linux        |  157 +
 .../configure/autoconf_cache/common-glibc     |   71 +
 .../configure/autoconf_cache/common-linux     |  172 +
 .../configure/autoconf_cache/endian-big       |    8 +
 .../configure/autoconf_cache/endian-little    |    8 +
 .../configure/autoconf_cache/ix86-common      |  268 ++
 .../configure/autoconf_cache/mips-common      |   93 +
 .../configure/autoconf_cache/mips-linux       |   78 +
 .../configure/autoconf_cache/mipsel-linux     |   78 +
 .../configure/autoconf_cache/musl-linux       |  183 +
 .../configure/autoconf_cache/powerpc-common   |   14 +
 .../configure/autoconf_cache/powerpc-linux    |   16 +
 .../configure/autoconf_cache/powerpc32-linux  |  272 ++
 .../configure/autoconf_cache/powerpc64-linux  |   46 +
 .../configure/autoconf_cache/x86_64-linux     |  170 +
 .../configure/automake/config.guess           | 1685 +++++++
 .../environment/configure/automake/config.sub | 1845 ++++++++
 common/environment/configure/bootstrap.sh     |    4 +
 common/environment/configure/ccache.sh        |    1 +
 common/environment/configure/cross.sh         |    5 +
 .../configure/debug-debug-prefix-map.sh       |    2 +
 .../configure/gccspecs/hardened-cc1           |    5 +
 .../configure/gccspecs/hardened-ld            |    5 +
 .../configure/gccspecs/hardened-mips-cc1      |    8 +
 .../configure/gnu-configure-args.sh           |  132 +
 common/environment/configure/hardening.sh     |   30 +
 common/environment/configure/pkg-config.sh    |    5 +
 common/environment/extract/.empty             |    0
 common/environment/fetch/.empty               |    0
 common/environment/fetch/fetch_cmd.sh         |    4 +
 common/environment/fetch/misc.sh              |    1 +
 common/environment/install/.empty             |    0
 common/environment/install/ccache.sh          |    1 +
 common/environment/install/cross.sh           |    1 +
 .../install/debug-debug-prefix-map.sh         |    1 +
 common/environment/install/extglob.sh         |   18 +
 common/environment/install/hardening.sh       |    1 +
 common/environment/install/pkg-config.sh      |    1 +
 common/environment/patch/bootstrap.sh         |    1 +
 common/environment/patch/ccache.sh            |    1 +
 common/environment/patch/cross.sh             |    1 +
 .../patch/debug-debug-prefix-map.sh           |    1 +
 .../environment/patch/gnu-configure-args.sh   |    1 +
 common/environment/patch/hardening.sh         |    1 +
 common/environment/patch/pkg-config.sh        |    1 +
 common/environment/pkg/extglob.sh             |    1 +
 common/environment/setup-subpkg/.empty        |    0
 common/environment/setup-subpkg/subpkg.sh     |   48 +
 common/environment/setup/.empty               |    0
 common/environment/setup/git.sh               |   35 +
 common/environment/setup/install.sh           |  267 ++
 common/environment/setup/misc.sh              |   22 +
 common/environment/setup/options.sh           |   38 +
 common/environment/setup/python.sh            |   14 +
 .../environment/setup/replace-interpreter.sh  |   41 +
 common/environment/setup/sourcepkg.sh         |   39 +
 common/environment/setup/vsed.sh              |   66 +
 common/hooks/README                           |   52 +
 common/hooks/do-build/.empty                  |    0
 common/hooks/do-check/.empty                  |    0
 common/hooks/do-configure/.empty              |    0
 common/hooks/do-extract/.empty                |    0
 common/hooks/do-extract/00-distfiles.sh       |  172 +
 common/hooks/do-fetch/.empty                  |    0
 common/hooks/do-fetch/00-distfiles.sh         |  298 ++
 common/hooks/do-install/.empty                |    0
 common/hooks/do-patch/.empty                  |    0
 common/hooks/do-patch/00-patches.sh           |   54 +
 common/hooks/do-pkg/.empty                    |    0
 common/hooks/do-pkg/00-gen-pkg.sh             |  166 +
 common/hooks/post-build/.empty                |    0
 common/hooks/post-check/.empty                |    0
 common/hooks/post-configure/.empty            |    0
 common/hooks/post-extract/.empty              |    0
 common/hooks/post-fetch/.empty                |    0
 common/hooks/post-install/.empty              |    0
 .../post-install/00-compress-info-files.sh    |   43 +
 .../hooks/post-install/00-fixup-gir-path.sh   |   11 +
 common/hooks/post-install/00-libdir.sh        |    7 +
 .../post-install/00-uncompress-manpages.sh    |   21 +
 common/hooks/post-install/01-remove-misc.sh   |   11 +
 .../02-remove-libtool-archives.sh             |    7 +
 .../post-install/02-remove-perl-files.sh      |    8 +
 .../02-remove-python-bytecode-files.sh        |    7 +
 .../post-install/03-remove-empty-dirs.sh      |   10 +
 .../04-create-xbps-metadata-scripts.sh        |  406 ++
 .../hooks/post-install/05-generate-gitrevs.sh |   23 +
 .../post-install/06-strip-and-debug-pkgs.sh   |  148 +
 .../post-install/10-pkglint-devel-paths.sh    |   84 +
 .../11-pkglint-elf-in-usrshare.sh             |   52 +
 .../12-rename-python3-c-bindings.sh           |   16 +
 ...13-pkg-config-clean-xbps-cross-base-ref.sh |   22 +
 .../hooks/post-install/14-fix-permissions.sh  |   36 +
 .../99-pkglint-warn-cross-cruft.sh            |   21 +
 common/hooks/post-patch/.empty                |    0
 common/hooks/post-pkg/.empty                  |    0
 common/hooks/post-pkg/00-register-pkg.sh      |   51 +
 common/hooks/pre-build/.empty                 |    0
 common/hooks/pre-build/02-script-wrapper.sh   |    1 +
 common/hooks/pre-check/.empty                 |    0
 common/hooks/pre-configure/.empty             |    0
 .../00-gnu-configure-asneeded.sh              |   13 +
 .../hooks/pre-configure/01-override-config.sh |   14 +
 .../hooks/pre-configure/02-script-wrapper.sh  |  242 +
 common/hooks/pre-extract/.empty               |    0
 common/hooks/pre-fetch/.empty                 |    0
 common/hooks/pre-install/.empty               |    0
 common/hooks/pre-install/00-libdir.sh         |   10 +
 common/hooks/pre-install/02-script-wrapper.sh |    1 +
 common/hooks/pre-install/98-fixup-gir-path.sh |   10 +
 common/hooks/pre-patch/.empty                 |    0
 common/hooks/pre-pkg/.empty                   |    0
 .../pre-pkg/03-rewrite-python-shebang.sh      |   40 +
 .../hooks/pre-pkg/04-generate-runtime-deps.sh |  171 +
 common/hooks/pre-pkg/05-prepare-32bit.sh      |  168 +
 common/hooks/pre-pkg/06-shlib-provides.sh     |   56 +
 common/hooks/pre-pkg/90-set-timestamps.sh     |   10 +
 common/hooks/pre-pkg/99-pkglint-subpkgs.sh    |   54 +
 common/hooks/pre-pkg/99-pkglint.sh            |  189 +
 common/hooks/pre-pkg/999-collected-rdeps.sh   |    7 +
 common/options.description                    |  108 +
 ...:12:be:9b:dc:4c:c5:b8:af:cf:a7:a9:bb.plist |   12 +
 ...:41:a7:68:4c:2e:2c:a9:a2:5a:04:b7:3f.plist |   12 +
 ...:f0:95:17:80:bc:93:46:7a:89:af:a3:2d.plist |   12 +
 common/scripts/README.xbps-cycles.md          |   22 +
 common/scripts/lint-commits                   |   52 +
 common/scripts/lint-version-change            |   90 +
 common/scripts/xbps-cycles.py                 |  120 +
 common/shlibs                                 | 4148 +++++++++++++++++
 common/travis/build.sh                        |   20 +
 common/travis/changed_templates.sh            |   31 +
 common/travis/check-install.sh                |   28 +
 common/travis/fetch-xbps.sh                   |   22 +
 common/travis/fetch-xtools.sh                 |   19 +
 common/travis/fetch_upstream.sh               |   12 +
 common/travis/license.lst                     |  525 +++
 common/travis/prepare.sh                      |   16 +
 common/travis/set_mirror.sh                   |   15 +
 common/travis/show_files.sh                   |   15 +
 common/travis/xlint.sh                        |   17 +
 common/wrappers/cross-cc                      |   40 +
 common/wrappers/date.sh                       |    6 +
 common/wrappers/install.sh                    |   44 +
 common/wrappers/ldconfig.sh                   |    8 +
 common/wrappers/strip.sh                      |    4 +
 common/wrappers/uname.sh                      |   13 +
 common/xbps-src/libexec/build.sh              |  140 +
 common/xbps-src/libexec/xbps-src-dobuild.sh   |   38 +
 common/xbps-src/libexec/xbps-src-docheck.sh   |   60 +
 .../xbps-src/libexec/xbps-src-doconfigure.sh  |   38 +
 common/xbps-src/libexec/xbps-src-doextract.sh |   75 +
 common/xbps-src/libexec/xbps-src-dofetch.sh   |   62 +
 common/xbps-src/libexec/xbps-src-doinstall.sh |   70 +
 common/xbps-src/libexec/xbps-src-dopatch.sh   |   37 +
 common/xbps-src/libexec/xbps-src-dopkg.sh     |   49 +
 common/xbps-src/libexec/xbps-src-prepkg.sh    |   51 +
 common/xbps-src/shutils/build_dependencies.sh |  428 ++
 common/xbps-src/shutils/bulk.sh               |  120 +
 common/xbps-src/shutils/chroot.sh             |  326 ++
 common/xbps-src/shutils/common.sh             |  669 +++
 common/xbps-src/shutils/consistency_check.sh  |   81 +
 common/xbps-src/shutils/cross.sh              |  136 +
 common/xbps-src/shutils/pkgtarget.sh          |  138 +
 common/xbps-src/shutils/purge_distfiles.sh    |   85 +
 common/xbps-src/shutils/show.sh               |  159 +
 common/xbps-src/shutils/update_check.sh       |  210 +
 common/xbps-src/shutils/update_hash_cache.sh  |   12 +
 etc/defaults.conf                             |  160 +
 etc/defaults.virtual                          |   38 +
 etc/xbps.d/repos-local-x86_64-multilib.conf   |    4 +
 etc/xbps.d/repos-local.conf                   |    5 +
 etc/xbps.d/repos-remote-aarch64-musl.conf     |    4 +
 etc/xbps.d/repos-remote-aarch64.conf          |    4 +
 etc/xbps.d/repos-remote-musl.conf             |    8 +
 etc/xbps.d/repos-remote-x86_64-multilib.conf  |    3 +
 etc/xbps.d/repos-remote.conf                  |   13 +
 pkglist                                       |   83 +
 srcpkgs/Graphite-color-schemes-black          |    1 +
 srcpkgs/Graphite-color-schemes-dark           |    1 +
 srcpkgs/Graphite-color-schemes-light          |    1 +
 srcpkgs/Graphite-color-schemes-nord-dark      |    1 +
 srcpkgs/Graphite-color-schemes-nord-light     |    1 +
 .../Graphite-color-schemes                    |    1 +
 srcpkgs/Graphite-color-schemes/template       |    0
 srcpkgs/Graphite-gtk-theme-black              |    1 +
 srcpkgs/Graphite-gtk-theme-black-compact      |    1 +
 srcpkgs/Graphite-gtk-theme-compact            |    1 +
 srcpkgs/Graphite-gtk-theme-dark               |    1 +
 srcpkgs/Graphite-gtk-theme-dark-compact       |    1 +
 srcpkgs/Graphite-gtk-theme-light              |    1 +
 srcpkgs/Graphite-gtk-theme-light-compact      |    1 +
 srcpkgs/Graphite-gtk-theme-nord-dark          |    1 +
 srcpkgs/Graphite-gtk-theme-nord-dark-compact  |    1 +
 srcpkgs/Graphite-gtk-theme-nord-light         |    1 +
 srcpkgs/Graphite-gtk-theme-nord-light-compact |    1 +
 .../graphite-gtk-theme/template               |    0
 srcpkgs/Graphite-gtk-theme/template           |    0
 srcpkgs/Graphite-kvantum-theme-Nord-dark      |    1 +
 srcpkgs/Graphite-kvantum-theme-Nord-light     |    1 +
 srcpkgs/Graphite-kvantum-theme-black          |    1 +
 srcpkgs/Graphite-kvantum-theme-dark           |    1 +
 srcpkgs/Graphite-kvantum-theme-light          |    1 +
 srcpkgs/Graphite-kvantum-theme/files/LICENSE  |    0
 srcpkgs/Graphite-kvantum-theme/template       |    0
 srcpkgs/Mint-Ice-Y-Dark/template              |    0
 srcpkgs/Sierra-Dark-Fluxbox/template          |    0
 srcpkgs/base-cereus/template                  |    0
 srcpkgs/base-chroot-cereus/template           |    0
 srcpkgs/base-files-cereus/INSTALL             |    0
 srcpkgs/base-files-cereus/files/66-kvm.rules  |    0
 srcpkgs/base-files-cereus/files/DIR_COLORS    |    0
 .../files/DIR_COLORS.256color                 |    0
 .../base-files-cereus/files/DIR_COLORS.xterm  |    0
 .../base-files-cereus/files/blacklist.conf    |    0
 srcpkgs/base-files-cereus/files/bpf.conf      |    0
 srcpkgs/base-files-cereus/files/colorls.sh    |    0
 srcpkgs/base-files-cereus/files/crypttab      |    0
 .../base-files-cereus/files/dot_bash_logout   |    0
 .../base-files-cereus/files/dot_bash_profile  |    0
 srcpkgs/base-files-cereus/files/dot_bashrc    |    0
 srcpkgs/base-files-cereus/files/dot_inputrc   |    0
 .../files/dracut.conf.d.voidlinux.conf        |    0
 srcpkgs/base-files-cereus/files/fstab         |    0
 srcpkgs/base-files-cereus/files/group         |    0
 srcpkgs/base-files-cereus/files/host.conf     |    0
 srcpkgs/base-files-cereus/files/hosts         |    0
 srcpkgs/base-files-cereus/files/inputrc       |    0
 srcpkgs/base-files-cereus/files/issue         |    0
 .../base-files-cereus/files/ld.so.lib32.conf  |    0
 .../files/licenses/Apache-2.0                 |    0
 .../base-files-cereus/files/licenses/Artistic |    0
 srcpkgs/base-files-cereus/files/licenses/BSD  |    0
 .../base-files-cereus/files/licenses/GFDL-1.2 |    0
 .../base-files-cereus/files/licenses/GFDL-1.3 |    0
 .../base-files-cereus/files/licenses/GPL-1    |    0
 .../base-files-cereus/files/licenses/GPL-2    |    0
 .../base-files-cereus/files/licenses/GPL-3    |    0
 .../base-files-cereus/files/licenses/LGPL-2   |    0
 .../base-files-cereus/files/licenses/LGPL-2.1 |    0
 .../base-files-cereus/files/licenses/LGPL-3   |    0
 .../base-files-cereus/files/licenses/MPL-1.1  |    0
 .../base-files-cereus/files/licenses/OFL-1.1  |    0
 srcpkgs/base-files-cereus/files/locale.sh     |    0
 srcpkgs/base-files-cereus/files/lsb_release   |    0
 srcpkgs/base-files-cereus/files/mozplugin.sh  |    0
 srcpkgs/base-files-cereus/files/nsswitch.conf |    0
 srcpkgs/base-files-cereus/files/passwd        |    0
 srcpkgs/base-files-cereus/files/profile       |    0
 srcpkgs/base-files-cereus/files/securetty     |    0
 srcpkgs/base-files-cereus/files/subgid        |    0
 srcpkgs/base-files-cereus/files/subuid        |    0
 .../base-files-cereus/files/sysctl-user.conf  |    0
 srcpkgs/base-files-cereus/files/sysctl.conf   |    0
 .../files/usb-load-ehci-first                 |    0
 srcpkgs/base-files-cereus/files/vkpurge       |    0
 srcpkgs/base-files-cereus/files/vkpurge.8     |    0
 srcpkgs/base-files-cereus/template            |    0
 srcpkgs/blesh-git/INSTALL.msg                 |    0
 srcpkgs/blesh-git/REMOVE.msg                  |    0
 srcpkgs/blesh-git/files/LICENSE.md            |    0
 srcpkgs/blesh-git/template                    |    0
 srcpkgs/blesh/INSTALL.msg                     |    0
 srcpkgs/blesh/REMOVE.msg                      |    0
 srcpkgs/blesh/files/LICENSE.md                |    0
 srcpkgs/blesh/template                        |    0
 srcpkgs/brave-bin/template                    |    0
 srcpkgs/budgie-extras/template                |    0
 srcpkgs/calamares-cereus/template             |    0
 .../calamares-modules-cereus/files/LICENSE    |    0
 .../files/modules/postcfg/main.py             |    0
 .../files/modules/postcfg/module.desc         |    0
 srcpkgs/calamares-modules-cereus/template     |    0
 .../files/49-nopasswd-calamares.rules         |    0
 srcpkgs/calamares/patches/localecfg.patch     |    0
 .../calamares/patches/services-runit.patch    |    0
 srcpkgs/calamares/template                    |    0
 srcpkgs/calmsky-icon-theme/template           |    0
 srcpkgs/cereus-neofetch/files/neofetch        |    0
 srcpkgs/cereus-neofetch/template              |    0
 srcpkgs/cereus-repo-core/template             |    0
 srcpkgs/cereus-repo-extra/template            |    0
 srcpkgs/cereus-wallpapers/template            |    0
 srcpkgs/cereus-welcome/template               |    0
 srcpkgs/flat-remix-icewm-theme/files/LICENSE  |    0
 srcpkgs/flat-remix-icewm-theme/template       |    0
 srcpkgs/flat-remix-icon-theme-black           |    1 +
 srcpkgs/flat-remix-icon-theme-blue            |    1 +
 srcpkgs/flat-remix-icon-theme-brown           |    1 +
 srcpkgs/flat-remix-icon-theme-cyan            |    1 +
 srcpkgs/flat-remix-icon-theme-green           |    1 +
 srcpkgs/flat-remix-icon-theme-grey            |    1 +
 srcpkgs/flat-remix-icon-theme-magenta         |    1 +
 srcpkgs/flat-remix-icon-theme-orange          |    1 +
 srcpkgs/flat-remix-icon-theme-red             |    1 +
 srcpkgs/flat-remix-icon-theme-teal            |    1 +
 srcpkgs/flat-remix-icon-theme-violet          |    1 +
 srcpkgs/flat-remix-icon-theme-yellow          |    1 +
 .../.goutputstream-GG2CI1                     |    0
 srcpkgs/flat-remix-icon-theme/template        |    0
 srcpkgs/graphite-kvantum-theme/template       |    0
 srcpkgs/jetbrains-mono-font/template          |    0
 srcpkgs/librewolf-bin/files/librewolf.desktop |    0
 srcpkgs/librewolf-bin/files/librewolf.svg     |    0
 srcpkgs/librewolf-bin/template                |    0
 srcpkgs/musl-locales/files/musl-locales       |    0
 srcpkgs/musl-locales/template                 |    0
 srcpkgs/nerd-fonts-symbols/template           |    0
 srcpkgs/octoxbps-git/template                 |    0
 srcpkgs/picom-ibhagwan/template               |    0
 srcpkgs/picom-jonaburg/template               |    0
 srcpkgs/pixelitos-icon-theme/files/LICENSE    |    0
 srcpkgs/pixelitos-icon-theme/template         |    0
 .../files/plasma-fluxbox.desktop              |    0
 srcpkgs/plasma-fluxbox/template               |    0
 srcpkgs/plasma-i3/files/plasma-i3.desktop     |    0
 srcpkgs/plasma-i3/template                    |    0
 srcpkgs/runit-cereus-apparmor                 |    1 +
 srcpkgs/runit-cereus/INSTALL                  |    0
 srcpkgs/runit-cereus/files/09-apparmor.sh     |    0
 srcpkgs/runit-cereus/files/apparmor           |    0
 srcpkgs/runit-cereus/files/hostname           |    0
 srcpkgs/runit-cereus/files/locale.conf        |    0
 srcpkgs/runit-cereus/files/os-release         |    0
 .../runit-cereus/runit-void-apparmor.INSTALL  |    0
 srcpkgs/runit-cereus/template                 |    0
 srcpkgs/urxvt-tabbedex/template               |    0
 srcpkgs/vibrancy-icon-theme-colors            |    1 +
 srcpkgs/vibrancy-icon-theme-dark              |    1 +
 srcpkgs/vibrancy-icon-theme-full-dark         |    1 +
 srcpkgs/vibrancy-icon-theme-light             |    1 +
 srcpkgs/vibrancy-icon-theme-nonmono-dark      |    1 +
 srcpkgs/vibrancy-icon-theme-nonmono-light     |    1 +
 .../files/LICENSE-CC-BY-SA-3.0                |    0
 .../vibrancy-icon-theme/files/LICENSE-GPL-2.0 |    0
 srcpkgs/vibrancy-icon-theme/template          |    0
 srcpkgs/whatsdesk-bin-i686/template           |    0
 srcpkgs/whatsdesk-bin/template                |    0
 srcpkgs/whatsdesk-git/files/whatsdesk.desktop |    0
 srcpkgs/whatsdesk-git/template                |    0
 srcpkgs/xed-xapps-devel                       |    1 +
 srcpkgs/xed-xapps/template                    |    0
 srcpkgs/xidlehook/template                    |    0
 xbps-src                                      |  982 ++++
 491 files changed, 25555 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 .github/issue_template.md
 create mode 100644 .github/pull_request_template.md
 create mode 100644 .github/workflows/build.yaml
 create mode 100644 .github/workflows/cycles.yml
 create mode 100644 .github/workflows/stale.yml
 create mode 100644 .gitignore
 create mode 100644 .mailmap
 create mode 100644 =2022.07.03
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING
 create mode 100644 Manual.md
 create mode 100644 README.md
 create mode 100644 common/build-helper/cmake-wxWidgets-gtk3.sh
 create mode 100644 common/build-helper/gir.sh
 create mode 100644 common/build-helper/numpy.sh
 create mode 100644 common/build-helper/qemu.sh
 create mode 100644 common/build-helper/qmake.sh
 create mode 100644 common/build-helper/rust.sh
 create mode 100644 common/build-profiles/README
 create mode 100644 common/build-profiles/aarch64-musl.sh
 create mode 100644 common/build-profiles/aarch64.sh
 create mode 100644 common/build-profiles/armv6l-musl.sh
 create mode 100644 common/build-profiles/armv6l.sh
 create mode 100644 common/build-profiles/armv7l-musl.sh
 create mode 100644 common/build-profiles/armv7l.sh
 create mode 100644 common/build-profiles/bootstrap.sh
 create mode 100644 common/build-profiles/i686-musl.sh
 create mode 100644 common/build-profiles/i686.sh
 create mode 100644 common/build-profiles/ppc-musl.sh
 create mode 100644 common/build-profiles/ppc.sh
 create mode 100644 common/build-profiles/ppc64-musl.sh
 create mode 100644 common/build-profiles/ppc64.sh
 create mode 100644 common/build-profiles/ppc64le-musl.sh
 create mode 100644 common/build-profiles/ppc64le.sh
 create mode 100644 common/build-profiles/ppcle-musl.sh
 create mode 100644 common/build-profiles/ppcle.sh
 create mode 100644 common/build-profiles/x86_64-musl.sh
 create mode 100644 common/build-profiles/x86_64.sh
 create mode 100644 common/build-style/R-cran.sh
 create mode 100644 common/build-style/README
 create mode 100644 common/build-style/cargo.sh
 create mode 100644 common/build-style/cmake.sh
 create mode 100644 common/build-style/configure.sh
 create mode 100644 common/build-style/fetch.sh
 create mode 100644 common/build-style/gem.sh
 create mode 100644 common/build-style/gemspec.sh
 create mode 100644 common/build-style/gnu-configure.sh
 create mode 100644 common/build-style/gnu-makefile.sh
 create mode 100644 common/build-style/go.sh
 create mode 100644 common/build-style/haskell-stack.sh
 create mode 100644 common/build-style/meson.sh
 create mode 100644 common/build-style/meta.sh
 create mode 100644 common/build-style/perl-ModuleBuild.sh
 create mode 100644 common/build-style/perl-module.sh
 create mode 100644 common/build-style/python-module.sh
 create mode 100644 common/build-style/python2-module.sh
 create mode 100644 common/build-style/python3-module.sh
 create mode 100644 common/build-style/python3-pep517.sh
 create mode 100644 common/build-style/qmake.sh
 create mode 100644 common/build-style/raku-dist.sh
 create mode 100644 common/build-style/ruby-module.sh
 create mode 100644 common/build-style/scons.sh
 create mode 100644 common/build-style/sip-build.sh
 create mode 100644 common/build-style/slashpackage.sh
 create mode 100644 common/build-style/texmf.sh
 create mode 100644 common/build-style/void-cross.sh
 create mode 100644 common/build-style/waf.sh
 create mode 100644 common/build-style/waf3.sh
 create mode 100644 common/build-style/zig-build.sh
 create mode 100644 common/chroot-style/README
 create mode 100755 common/chroot-style/bwrap.sh
 create mode 100755 common/chroot-style/ethereal.sh
 create mode 100755 common/chroot-style/uchroot.sh
 create mode 100755 common/chroot-style/uunshare.sh
 create mode 100644 common/cross-profiles/README
 create mode 100644 common/cross-profiles/aarch64-musl.sh
 create mode 100644 common/cross-profiles/aarch64.sh
 create mode 120000 common/cross-profiles/armv5te-musl.sh
 create mode 120000 common/cross-profiles/armv5te.sh
 create mode 100644 common/cross-profiles/armv5tel-musl.sh
 create mode 100644 common/cross-profiles/armv5tel.sh
 create mode 120000 common/cross-profiles/armv6hf-musl.sh
 create mode 120000 common/cross-profiles/armv6hf.sh
 create mode 100644 common/cross-profiles/armv6l-musl.sh
 create mode 100644 common/cross-profiles/armv6l.sh
 create mode 120000 common/cross-profiles/armv7hf-musl.sh
 create mode 120000 common/cross-profiles/armv7hf.sh
 create mode 100644 common/cross-profiles/armv7l-musl.sh
 create mode 100644 common/cross-profiles/armv7l.sh
 create mode 100644 common/cross-profiles/i686-musl.sh
 create mode 100644 common/cross-profiles/i686.sh
 create mode 100644 common/cross-profiles/mips-musl.sh
 create mode 100644 common/cross-profiles/mipsel-musl.sh
 create mode 100644 common/cross-profiles/mipselhf-musl.sh
 create mode 100644 common/cross-profiles/mipshf-musl.sh
 create mode 100644 common/cross-profiles/ppc-musl.sh
 create mode 100644 common/cross-profiles/ppc.sh
 create mode 100644 common/cross-profiles/ppc64-musl.sh
 create mode 100644 common/cross-profiles/ppc64.sh
 create mode 100644 common/cross-profiles/ppc64le-musl.sh
 create mode 100644 common/cross-profiles/ppc64le.sh
 create mode 100644 common/cross-profiles/ppcle-musl.sh
 create mode 100644 common/cross-profiles/ppcle.sh
 create mode 100644 common/cross-profiles/x86_64-musl.sh
 create mode 100644 common/cross-profiles/x86_64.sh
 create mode 100644 common/environment/README
 create mode 100644 common/environment/build-style/.empty
 create mode 100644 common/environment/build-style/R-cran.sh
 create mode 100644 common/environment/build-style/cargo.sh
 create mode 100644 common/environment/build-style/cmake.sh
 create mode 100644 common/environment/build-style/gem.sh
 create mode 100644 common/environment/build-style/gemspec.sh
 create mode 100644 common/environment/build-style/go.sh
 create mode 100644 common/environment/build-style/haskell-stack.sh
 create mode 100644 common/environment/build-style/meson.sh
 create mode 100644 common/environment/build-style/perl-ModuleBuild.sh
 create mode 100644 common/environment/build-style/perl-module.sh
 create mode 100644 common/environment/build-style/python-module.sh
 create mode 100644 common/environment/build-style/python2-module.sh
 create mode 100644 common/environment/build-style/python3-module.sh
 create mode 100644 common/environment/build-style/python3-pep517.sh
 create mode 100644 common/environment/build-style/raku-dist.sh
 create mode 100644 common/environment/build-style/ruby-module.sh
 create mode 100644 common/environment/build-style/scons.sh
 create mode 100644 common/environment/build-style/texmf.sh
 create mode 100644 common/environment/build-style/texmf/ownership.txt
 create mode 100644 common/environment/build-style/void-cross.sh
 create mode 100644 common/environment/build-style/waf.sh
 create mode 100644 common/environment/build-style/waf3.sh
 create mode 100644 common/environment/build-style/zig-build.sh
 create mode 100644 common/environment/build/.empty
 create mode 120000 common/environment/build/bootstrap.sh
 create mode 120000 common/environment/build/ccache.sh
 create mode 120000 common/environment/build/cross.sh
 create mode 120000 common/environment/build/debug-debug-prefix-map.sh
 create mode 120000 common/environment/build/hardening.sh
 create mode 120000 common/environment/build/pkg-config.sh
 create mode 120000 common/environment/check/bootstrap.sh
 create mode 120000 common/environment/check/ccache.sh
 create mode 120000 common/environment/check/cross.sh
 create mode 120000 common/environment/check/debug-debug-prefix-map.sh
 create mode 120000 common/environment/check/hardening.sh
 create mode 100644 common/environment/check/no_display.sh
 create mode 120000 common/environment/check/pkg-config.sh
 create mode 100644 common/environment/configure/.empty
 create mode 100644 common/environment/configure/autoconf_cache/aarch64-linux
 create mode 100644 common/environment/configure/autoconf_cache/arm-common
 create mode 100644 common/environment/configure/autoconf_cache/arm-linux
 create mode 100644 common/environment/configure/autoconf_cache/common-glibc
 create mode 100644 common/environment/configure/autoconf_cache/common-linux
 create mode 100644 common/environment/configure/autoconf_cache/endian-big
 create mode 100644 common/environment/configure/autoconf_cache/endian-little
 create mode 100644 common/environment/configure/autoconf_cache/ix86-common
 create mode 100644 common/environment/configure/autoconf_cache/mips-common
 create mode 100644 common/environment/configure/autoconf_cache/mips-linux
 create mode 100644 common/environment/configure/autoconf_cache/mipsel-linux
 create mode 100644 common/environment/configure/autoconf_cache/musl-linux
 create mode 100644 common/environment/configure/autoconf_cache/powerpc-common
 create mode 100644 common/environment/configure/autoconf_cache/powerpc-linux
 create mode 100644 common/environment/configure/autoconf_cache/powerpc32-linux
 create mode 100644 common/environment/configure/autoconf_cache/powerpc64-linux
 create mode 100644 common/environment/configure/autoconf_cache/x86_64-linux
 create mode 100755 common/environment/configure/automake/config.guess
 create mode 100755 common/environment/configure/automake/config.sub
 create mode 100644 common/environment/configure/bootstrap.sh
 create mode 100644 common/environment/configure/ccache.sh
 create mode 100644 common/environment/configure/cross.sh
 create mode 100644 common/environment/configure/debug-debug-prefix-map.sh
 create mode 100644 common/environment/configure/gccspecs/hardened-cc1
 create mode 100644 common/environment/configure/gccspecs/hardened-ld
 create mode 100644 common/environment/configure/gccspecs/hardened-mips-cc1
 create mode 100644 common/environment/configure/gnu-configure-args.sh
 create mode 100644 common/environment/configure/hardening.sh
 create mode 100644 common/environment/configure/pkg-config.sh
 create mode 100644 common/environment/extract/.empty
 create mode 100644 common/environment/fetch/.empty
 create mode 100644 common/environment/fetch/fetch_cmd.sh
 create mode 120000 common/environment/fetch/misc.sh
 create mode 100644 common/environment/install/.empty
 create mode 120000 common/environment/install/ccache.sh
 create mode 120000 common/environment/install/cross.sh
 create mode 120000 common/environment/install/debug-debug-prefix-map.sh
 create mode 100644 common/environment/install/extglob.sh
 create mode 120000 common/environment/install/hardening.sh
 create mode 120000 common/environment/install/pkg-config.sh
 create mode 120000 common/environment/patch/bootstrap.sh
 create mode 120000 common/environment/patch/ccache.sh
 create mode 120000 common/environment/patch/cross.sh
 create mode 120000 common/environment/patch/debug-debug-prefix-map.sh
 create mode 120000 common/environment/patch/gnu-configure-args.sh
 create mode 120000 common/environment/patch/hardening.sh
 create mode 120000 common/environment/patch/pkg-config.sh
 create mode 120000 common/environment/pkg/extglob.sh
 create mode 100644 common/environment/setup-subpkg/.empty
 create mode 100644 common/environment/setup-subpkg/subpkg.sh
 create mode 100644 common/environment/setup/.empty
 create mode 100644 common/environment/setup/git.sh
 create mode 100644 common/environment/setup/install.sh
 create mode 100644 common/environment/setup/misc.sh
 create mode 100644 common/environment/setup/options.sh
 create mode 100644 common/environment/setup/python.sh
 create mode 100644 common/environment/setup/replace-interpreter.sh
 create mode 100644 common/environment/setup/sourcepkg.sh
 create mode 100644 common/environment/setup/vsed.sh
 create mode 100644 common/hooks/README
 create mode 100644 common/hooks/do-build/.empty
 create mode 100644 common/hooks/do-check/.empty
 create mode 100644 common/hooks/do-configure/.empty
 create mode 100644 common/hooks/do-extract/.empty
 create mode 100644 common/hooks/do-extract/00-distfiles.sh
 create mode 100644 common/hooks/do-fetch/.empty
 create mode 100644 common/hooks/do-fetch/00-distfiles.sh
 create mode 100644 common/hooks/do-install/.empty
 create mode 100644 common/hooks/do-patch/.empty
 create mode 100644 common/hooks/do-patch/00-patches.sh
 create mode 100644 common/hooks/do-pkg/.empty
 create mode 100644 common/hooks/do-pkg/00-gen-pkg.sh
 create mode 100644 common/hooks/post-build/.empty
 create mode 100644 common/hooks/post-check/.empty
 create mode 100644 common/hooks/post-configure/.empty
 create mode 100644 common/hooks/post-extract/.empty
 create mode 100644 common/hooks/post-fetch/.empty
 create mode 100644 common/hooks/post-install/.empty
 create mode 100644 common/hooks/post-install/00-compress-info-files.sh
 create mode 100644 common/hooks/post-install/00-fixup-gir-path.sh
 create mode 100644 common/hooks/post-install/00-libdir.sh
 create mode 100644 common/hooks/post-install/00-uncompress-manpages.sh
 create mode 100644 common/hooks/post-install/01-remove-misc.sh
 create mode 100644 common/hooks/post-install/02-remove-libtool-archives.sh
 create mode 100644 common/hooks/post-install/02-remove-perl-files.sh
 create mode 100644 common/hooks/post-install/02-remove-python-bytecode-files.sh
 create mode 100644 common/hooks/post-install/03-remove-empty-dirs.sh
 create mode 100644 common/hooks/post-install/04-create-xbps-metadata-scripts.sh
 create mode 100644 common/hooks/post-install/05-generate-gitrevs.sh
 create mode 100644 common/hooks/post-install/06-strip-and-debug-pkgs.sh
 create mode 100644 common/hooks/post-install/10-pkglint-devel-paths.sh
 create mode 100644 common/hooks/post-install/11-pkglint-elf-in-usrshare.sh
 create mode 100644 common/hooks/post-install/12-rename-python3-c-bindings.sh
 create mode 100644 common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh
 create mode 100644 common/hooks/post-install/14-fix-permissions.sh
 create mode 100644 common/hooks/post-install/99-pkglint-warn-cross-cruft.sh
 create mode 100644 common/hooks/post-patch/.empty
 create mode 100644 common/hooks/post-pkg/.empty
 create mode 100644 common/hooks/post-pkg/00-register-pkg.sh
 create mode 100644 common/hooks/pre-build/.empty
 create mode 120000 common/hooks/pre-build/02-script-wrapper.sh
 create mode 100644 common/hooks/pre-check/.empty
 create mode 100644 common/hooks/pre-configure/.empty
 create mode 100644 common/hooks/pre-configure/00-gnu-configure-asneeded.sh
 create mode 100644 common/hooks/pre-configure/01-override-config.sh
 create mode 100644 common/hooks/pre-configure/02-script-wrapper.sh
 create mode 100644 common/hooks/pre-extract/.empty
 create mode 100644 common/hooks/pre-fetch/.empty
 create mode 100644 common/hooks/pre-install/.empty
 create mode 100644 common/hooks/pre-install/00-libdir.sh
 create mode 120000 common/hooks/pre-install/02-script-wrapper.sh
 create mode 100644 common/hooks/pre-install/98-fixup-gir-path.sh
 create mode 100644 common/hooks/pre-patch/.empty
 create mode 100644 common/hooks/pre-pkg/.empty
 create mode 100644 common/hooks/pre-pkg/03-rewrite-python-shebang.sh
 create mode 100644 common/hooks/pre-pkg/04-generate-runtime-deps.sh
 create mode 100644 common/hooks/pre-pkg/05-prepare-32bit.sh
 create mode 100644 common/hooks/pre-pkg/06-shlib-provides.sh
 create mode 100644 common/hooks/pre-pkg/90-set-timestamps.sh
 create mode 100644 common/hooks/pre-pkg/99-pkglint-subpkgs.sh
 create mode 100644 common/hooks/pre-pkg/99-pkglint.sh
 create mode 100644 common/hooks/pre-pkg/999-collected-rdeps.sh
 create mode 100644 common/options.description
 create mode 100644 common/repo-keys/1e:23:91:e5:12:be:9b:dc:4c:c5:b8:af:cf:a7:a9:bb.plist
 create mode 100644 common/repo-keys/3d:b9:c0:50:41:a7:68:4c:2e:2c:a9:a2:5a:04:b7:3f.plist
 create mode 100644 common/repo-keys/60:ae:0c:d6:f0:95:17:80:bc:93:46:7a:89:af:a3:2d.plist
 create mode 100644 common/scripts/README.xbps-cycles.md
 create mode 100755 common/scripts/lint-commits
 create mode 100755 common/scripts/lint-version-change
 create mode 100755 common/scripts/xbps-cycles.py
 create mode 100644 common/shlibs
 create mode 100755 common/travis/build.sh
 create mode 100755 common/travis/changed_templates.sh
 create mode 100755 common/travis/check-install.sh
 create mode 100755 common/travis/fetch-xbps.sh
 create mode 100755 common/travis/fetch-xtools.sh
 create mode 100755 common/travis/fetch_upstream.sh
 create mode 100644 common/travis/license.lst
 create mode 100755 common/travis/prepare.sh
 create mode 100755 common/travis/set_mirror.sh
 create mode 100755 common/travis/show_files.sh
 create mode 100755 common/travis/xlint.sh
 create mode 100644 common/wrappers/cross-cc
 create mode 100644 common/wrappers/date.sh
 create mode 100644 common/wrappers/install.sh
 create mode 100644 common/wrappers/ldconfig.sh
 create mode 100644 common/wrappers/strip.sh
 create mode 100644 common/wrappers/uname.sh
 create mode 100755 common/xbps-src/libexec/build.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-dobuild.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-docheck.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-doconfigure.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-doextract.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-dofetch.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-doinstall.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-dopatch.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-dopkg.sh
 create mode 100755 common/xbps-src/libexec/xbps-src-prepkg.sh
 create mode 100644 common/xbps-src/shutils/build_dependencies.sh
 create mode 100644 common/xbps-src/shutils/bulk.sh
 create mode 100644 common/xbps-src/shutils/chroot.sh
 create mode 100644 common/xbps-src/shutils/common.sh
 create mode 100644 common/xbps-src/shutils/consistency_check.sh
 create mode 100644 common/xbps-src/shutils/cross.sh
 create mode 100644 common/xbps-src/shutils/pkgtarget.sh
 create mode 100644 common/xbps-src/shutils/purge_distfiles.sh
 create mode 100644 common/xbps-src/shutils/show.sh
 create mode 100644 common/xbps-src/shutils/update_check.sh
 create mode 100644 common/xbps-src/shutils/update_hash_cache.sh
 create mode 100644 etc/defaults.conf
 create mode 100644 etc/defaults.virtual
 create mode 100644 etc/xbps.d/repos-local-x86_64-multilib.conf
 create mode 100644 etc/xbps.d/repos-local.conf
 create mode 100644 etc/xbps.d/repos-remote-aarch64-musl.conf
 create mode 100644 etc/xbps.d/repos-remote-aarch64.conf
 create mode 100644 etc/xbps.d/repos-remote-musl.conf
 create mode 100644 etc/xbps.d/repos-remote-x86_64-multilib.conf
 create mode 100644 etc/xbps.d/repos-remote.conf
 create mode 100644 pkglist
 create mode 120000 srcpkgs/Graphite-color-schemes-black
 create mode 120000 srcpkgs/Graphite-color-schemes-dark
 create mode 120000 srcpkgs/Graphite-color-schemes-light
 create mode 120000 srcpkgs/Graphite-color-schemes-nord-dark
 create mode 120000 srcpkgs/Graphite-color-schemes-nord-light
 create mode 120000 srcpkgs/Graphite-color-schemes/Graphite-color-schemes
 create mode 100644 srcpkgs/Graphite-color-schemes/template
 create mode 120000 srcpkgs/Graphite-gtk-theme-black
 create mode 120000 srcpkgs/Graphite-gtk-theme-black-compact
 create mode 120000 srcpkgs/Graphite-gtk-theme-compact
 create mode 120000 srcpkgs/Graphite-gtk-theme-dark
 create mode 120000 srcpkgs/Graphite-gtk-theme-dark-compact
 create mode 120000 srcpkgs/Graphite-gtk-theme-light
 create mode 120000 srcpkgs/Graphite-gtk-theme-light-compact
 create mode 120000 srcpkgs/Graphite-gtk-theme-nord-dark
 create mode 120000 srcpkgs/Graphite-gtk-theme-nord-dark-compact
 create mode 120000 srcpkgs/Graphite-gtk-theme-nord-light
 create mode 120000 srcpkgs/Graphite-gtk-theme-nord-light-compact
 create mode 100644 srcpkgs/Graphite-gtk-theme/graphite-gtk-theme/template
 create mode 100644 srcpkgs/Graphite-gtk-theme/template
 create mode 120000 srcpkgs/Graphite-kvantum-theme-Nord-dark
 create mode 120000 srcpkgs/Graphite-kvantum-theme-Nord-light
 create mode 120000 srcpkgs/Graphite-kvantum-theme-black
 create mode 120000 srcpkgs/Graphite-kvantum-theme-dark
 create mode 120000 srcpkgs/Graphite-kvantum-theme-light
 create mode 100644 srcpkgs/Graphite-kvantum-theme/files/LICENSE
 create mode 100644 srcpkgs/Graphite-kvantum-theme/template
 create mode 100644 srcpkgs/Mint-Ice-Y-Dark/template
 create mode 100644 srcpkgs/Sierra-Dark-Fluxbox/template
 create mode 100644 srcpkgs/base-cereus/template
 create mode 100644 srcpkgs/base-chroot-cereus/template
 create mode 100644 srcpkgs/base-files-cereus/INSTALL
 create mode 100644 srcpkgs/base-files-cereus/files/66-kvm.rules
 create mode 100644 srcpkgs/base-files-cereus/files/DIR_COLORS
 create mode 100644 srcpkgs/base-files-cereus/files/DIR_COLORS.256color
 create mode 100644 srcpkgs/base-files-cereus/files/DIR_COLORS.xterm
 create mode 100644 srcpkgs/base-files-cereus/files/blacklist.conf
 create mode 100644 srcpkgs/base-files-cereus/files/bpf.conf
 create mode 100644 srcpkgs/base-files-cereus/files/colorls.sh
 create mode 100644 srcpkgs/base-files-cereus/files/crypttab
 create mode 100644 srcpkgs/base-files-cereus/files/dot_bash_logout
 create mode 100644 srcpkgs/base-files-cereus/files/dot_bash_profile
 create mode 100644 srcpkgs/base-files-cereus/files/dot_bashrc
 create mode 100644 srcpkgs/base-files-cereus/files/dot_inputrc
 create mode 100644 srcpkgs/base-files-cereus/files/dracut.conf.d.voidlinux.conf
 create mode 100644 srcpkgs/base-files-cereus/files/fstab
 create mode 100644 srcpkgs/base-files-cereus/files/group
 create mode 100644 srcpkgs/base-files-cereus/files/host.conf
 create mode 100644 srcpkgs/base-files-cereus/files/hosts
 create mode 100644 srcpkgs/base-files-cereus/files/inputrc
 create mode 100644 srcpkgs/base-files-cereus/files/issue
 create mode 100644 srcpkgs/base-files-cereus/files/ld.so.lib32.conf
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/Apache-2.0
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/Artistic
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/BSD
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/GFDL-1.2
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/GFDL-1.3
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/GPL-1
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/GPL-2
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/GPL-3
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/LGPL-2
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/LGPL-2.1
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/LGPL-3
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/MPL-1.1
 create mode 100644 srcpkgs/base-files-cereus/files/licenses/OFL-1.1
 create mode 100644 srcpkgs/base-files-cereus/files/locale.sh
 create mode 100644 srcpkgs/base-files-cereus/files/lsb_release
 create mode 100644 srcpkgs/base-files-cereus/files/mozplugin.sh
 create mode 100644 srcpkgs/base-files-cereus/files/nsswitch.conf
 create mode 100644 srcpkgs/base-files-cereus/files/passwd
 create mode 100644 srcpkgs/base-files-cereus/files/profile
 create mode 100644 srcpkgs/base-files-cereus/files/securetty
 create mode 100644 srcpkgs/base-files-cereus/files/subgid
 create mode 100644 srcpkgs/base-files-cereus/files/subuid
 create mode 100644 srcpkgs/base-files-cereus/files/sysctl-user.conf
 create mode 100644 srcpkgs/base-files-cereus/files/sysctl.conf
 create mode 100644 srcpkgs/base-files-cereus/files/usb-load-ehci-first
 create mode 100644 srcpkgs/base-files-cereus/files/vkpurge
 create mode 100644 srcpkgs/base-files-cereus/files/vkpurge.8
 create mode 100644 srcpkgs/base-files-cereus/template
 create mode 100644 srcpkgs/blesh-git/INSTALL.msg
 create mode 100644 srcpkgs/blesh-git/REMOVE.msg
 create mode 100644 srcpkgs/blesh-git/files/LICENSE.md
 create mode 100644 srcpkgs/blesh-git/template
 create mode 100644 srcpkgs/blesh/INSTALL.msg
 create mode 100644 srcpkgs/blesh/REMOVE.msg
 create mode 100644 srcpkgs/blesh/files/LICENSE.md
 create mode 100644 srcpkgs/blesh/template
 create mode 100644 srcpkgs/brave-bin/template
 create mode 100644 srcpkgs/budgie-extras/template
 create mode 100644 srcpkgs/calamares-cereus/template
 create mode 100644 srcpkgs/calamares-modules-cereus/files/LICENSE
 create mode 100644 srcpkgs/calamares-modules-cereus/files/modules/postcfg/main.py
 create mode 100644 srcpkgs/calamares-modules-cereus/files/modules/postcfg/module.desc
 create mode 100644 srcpkgs/calamares-modules-cereus/template
 create mode 100755 srcpkgs/calamares/files/49-nopasswd-calamares.rules
 create mode 100644 srcpkgs/calamares/patches/localecfg.patch
 create mode 100644 srcpkgs/calamares/patches/services-runit.patch
 create mode 100644 srcpkgs/calamares/template
 create mode 100644 srcpkgs/calmsky-icon-theme/template
 create mode 100755 srcpkgs/cereus-neofetch/files/neofetch
 create mode 100644 srcpkgs/cereus-neofetch/template
 create mode 100644 srcpkgs/cereus-repo-core/template
 create mode 100644 srcpkgs/cereus-repo-extra/template
 create mode 100644 srcpkgs/cereus-wallpapers/template
 create mode 100644 srcpkgs/cereus-welcome/template
 create mode 100644 srcpkgs/flat-remix-icewm-theme/files/LICENSE
 create mode 100644 srcpkgs/flat-remix-icewm-theme/template
 create mode 120000 srcpkgs/flat-remix-icon-theme-black
 create mode 120000 srcpkgs/flat-remix-icon-theme-blue
 create mode 120000 srcpkgs/flat-remix-icon-theme-brown
 create mode 120000 srcpkgs/flat-remix-icon-theme-cyan
 create mode 120000 srcpkgs/flat-remix-icon-theme-green
 create mode 120000 srcpkgs/flat-remix-icon-theme-grey
 create mode 120000 srcpkgs/flat-remix-icon-theme-magenta
 create mode 120000 srcpkgs/flat-remix-icon-theme-orange
 create mode 120000 srcpkgs/flat-remix-icon-theme-red
 create mode 120000 srcpkgs/flat-remix-icon-theme-teal
 create mode 120000 srcpkgs/flat-remix-icon-theme-violet
 create mode 120000 srcpkgs/flat-remix-icon-theme-yellow
 create mode 100644 srcpkgs/flat-remix-icon-theme/.goutputstream-GG2CI1
 create mode 100644 srcpkgs/flat-remix-icon-theme/template
 create mode 100644 srcpkgs/graphite-kvantum-theme/template
 create mode 100644 srcpkgs/jetbrains-mono-font/template
 create mode 100644 srcpkgs/librewolf-bin/files/librewolf.desktop
 create mode 100644 srcpkgs/librewolf-bin/files/librewolf.svg
 create mode 100644 srcpkgs/librewolf-bin/template
 create mode 100644 srcpkgs/musl-locales/files/musl-locales
 create mode 100644 srcpkgs/musl-locales/template
 create mode 100644 srcpkgs/nerd-fonts-symbols/template
 create mode 100644 srcpkgs/octoxbps-git/template
 create mode 100644 srcpkgs/picom-ibhagwan/template
 create mode 100644 srcpkgs/picom-jonaburg/template
 create mode 100644 srcpkgs/pixelitos-icon-theme/files/LICENSE
 create mode 100644 srcpkgs/pixelitos-icon-theme/template
 create mode 100644 srcpkgs/plasma-fluxbox/files/plasma-fluxbox.desktop
 create mode 100644 srcpkgs/plasma-fluxbox/template
 create mode 100644 srcpkgs/plasma-i3/files/plasma-i3.desktop
 create mode 100644 srcpkgs/plasma-i3/template
 create mode 120000 srcpkgs/runit-cereus-apparmor
 create mode 100644 srcpkgs/runit-cereus/INSTALL
 create mode 100644 srcpkgs/runit-cereus/files/09-apparmor.sh
 create mode 100644 srcpkgs/runit-cereus/files/apparmor
 create mode 100644 srcpkgs/runit-cereus/files/hostname
 create mode 100644 srcpkgs/runit-cereus/files/locale.conf
 create mode 100644 srcpkgs/runit-cereus/files/os-release
 create mode 100644 srcpkgs/runit-cereus/runit-void-apparmor.INSTALL
 create mode 100644 srcpkgs/runit-cereus/template
 create mode 100644 srcpkgs/urxvt-tabbedex/template
 create mode 120000 srcpkgs/vibrancy-icon-theme-colors
 create mode 120000 srcpkgs/vibrancy-icon-theme-dark
 create mode 120000 srcpkgs/vibrancy-icon-theme-full-dark
 create mode 120000 srcpkgs/vibrancy-icon-theme-light
 create mode 120000 srcpkgs/vibrancy-icon-theme-nonmono-dark
 create mode 120000 srcpkgs/vibrancy-icon-theme-nonmono-light
 create mode 100644 srcpkgs/vibrancy-icon-theme/files/LICENSE-CC-BY-SA-3.0
 create mode 100644 srcpkgs/vibrancy-icon-theme/files/LICENSE-GPL-2.0
 create mode 100644 srcpkgs/vibrancy-icon-theme/template
 create mode 100644 srcpkgs/whatsdesk-bin-i686/template
 create mode 100644 srcpkgs/whatsdesk-bin/template
 create mode 100644 srcpkgs/whatsdesk-git/files/whatsdesk.desktop
 create mode 100644 srcpkgs/whatsdesk-git/template
 create mode 120000 srcpkgs/xed-xapps-devel
 create mode 100644 srcpkgs/xed-xapps/template
 create mode 100644 srcpkgs/xidlehook/template
 create mode 100755 xbps-src

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..8ddae6f
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,4 @@
+template linguist-language=bash
+common/shlibs merge=union
+*.patch whitespace=-space-before-tab,-trailing-space
+*.diff whitespace=-space-before-tab,-trailing-space
diff --git a/.github/issue_template.md b/.github/issue_template.md
new file mode 100644
index 0000000..25a0538
--- /dev/null
+++ b/.github/issue_template.md
@@ -0,0 +1,14 @@
+<!-- Don't request update of package. We have a script for that. https://alpha.de.repo.voidlinux.org/void-updates/void-updates.txt . However, a quality pull request may help. -->
+### System
+
+* xuname:  
+  *output of ``xuname`` (part of xtools)*
+* package:  
+  *affected package(s) including the version*: ``xbps-query -p pkgver <pkgname>``
+
+### Expected behavior
+
+### Actual behavior
+
+### Steps to reproduce the behavior
+
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..ef2a5d7
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,23 @@
+<!-- Uncomment relevant sections and delete options which are not applicable -->
+
+#### Testing the changes
+- I tested the changes in this PR: **YES**|**briefly**|**NO**
+
+<!--
+#### New package
+- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
+-->
+
+<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
+https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
+and test at least one native build and, if supported, at least one cross build.
+Ignore this section if this PR is not skipping CI.
+-->
+<!-- 
+#### Local build testing
+- I built this PR locally for my native architecture, (ARCH-LIBC)
+- I built this PR locally for these architectures (if supported. mark crossbuilds):
+  - aarch64-musl
+  - armv7l
+  - armv6l-musl
+-->
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
new file mode 100644
index 0000000..503f1e1
--- /dev/null
+++ b/.github/workflows/build.yaml
@@ -0,0 +1,99 @@
+name: Check build
+
+on:
+  pull_request:
+  push:
+    branches:
+      - 'ci-**'
+
+jobs:
+  # Lint changed templates.
+  xlint:
+    name: Lint templates
+    runs-on: ubuntu-18.04
+
+    env:
+      PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
+      XLINT: '1'
+      LICENSE_LIST: common/travis/license.lst
+
+    steps:
+      - uses: actions/checkout@v1
+        with:
+          fetch-depth: 200
+      - run: common/travis/fetch_upstream.sh
+      - run: common/travis/changed_templates.sh
+      - run: common/travis/fetch-xbps.sh
+      - run: common/travis/fetch-xtools.sh
+      - run: common/travis/xlint.sh
+
+  # Build changed packages.
+  build:
+    name: Build packages
+    runs-on: ubuntu-18.04
+    if: "!contains(github.event.pull_request.title, '[ci skip]') && !contains(github.event.pull_request.body, '[ci skip]')"
+
+    container:
+      image: 'ghcr.io/void-linux/xbps-src-masterdir:20210313rc01-${{ matrix.config.bootstrap }}'
+      env:
+        PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
+        ARCH: '${{ matrix.config.arch }}'
+        BOOTSTRAP: '${{ matrix.config.bootstrap }}'
+        TEST: '${{ matrix.config.test }}'
+        HOSTREPO: /hostrepo
+
+    strategy:
+      fail-fast: false
+      matrix:
+        config:
+          - { arch: x86_64, bootstrap: x86_64, test: 1 }
+          - { arch: i686, bootstrap: i686, test: 1 }
+          - { arch: aarch64, bootstrap: x86_64, test: 0 }
+          - { arch: armv7l, bootstrap: x86_64, test: 0 }
+          - { arch: x86_64-musl, bootstrap: x86_64-musl, test: 1 }
+          - { arch: armv6l-musl, bootstrap: x86_64-musl, test: 0 }
+          - { arch: aarch64-musl, bootstrap: x86_64-musl, test: 0 }
+
+    steps:
+      - name: Prepare container
+        run: |
+          # Sync and upgrade once, assume error comes from xbps update
+          xbps-install -Syu || xbps-install -yu xbps
+          # Upgrade again (in case there was a xbps update)
+          xbps-install -yu
+
+      - uses: actions/checkout@v1
+        with:
+          fetch-depth: 200
+      - name: Create hostrepo and prepare masterdir
+        run: |
+         ln -s "$(pwd)" /hostrepo &&
+         common/travis/set_mirror.sh &&
+         common/travis/prepare.sh &&
+         common/travis/fetch_upstream.sh &&
+         common/travis/fetch-xtools.sh
+      - run: common/travis/changed_templates.sh
+
+      - name: Build and check packages
+        run: |
+          (
+          here="$(pwd)"
+          cd /
+          "$here/common/travis/build.sh" "$BOOTSTRAP" "$ARCH" "$TEST"
+          )
+
+      - name: Show files
+        run: |
+          (
+          here="$(pwd)"
+          cd /
+          "$here/common/travis/show_files.sh" "$BOOTSTRAP" "$ARCH"
+          )
+
+      - name: Verify repository state
+        run: |
+          (
+          here="$(pwd)"
+          cd /
+          "$here/common/travis/check-install.sh" "$BOOTSTRAP" "$ARCH"
+          )
diff --git a/.github/workflows/cycles.yml b/.github/workflows/cycles.yml
new file mode 100644
index 0000000..e75297a
--- /dev/null
+++ b/.github/workflows/cycles.yml
@@ -0,0 +1,40 @@
+name: 'Cycle Check'
+
+on:
+  schedule:
+    - cron: '0 18 * * *'
+
+jobs:
+  cycles:
+    runs-on: ubuntu-latest
+    container:
+        image: 'ghcr.io/void-linux/xbps-src-masterdir:20210313rc01-x86_64-musl'
+    steps:
+      - name: Prepare container
+        run: |
+          # Sync and upgrade once, assume error comes from xbps update
+          xbps-install -Syu || xbps-install -yu xbps
+          # Upgrade again (in case there was a xbps update)
+          xbps-install -yu
+          # Install script dependencies
+          xbps-install -y python3-networkx github-cli
+      - uses: actions/checkout@v1
+        with:
+          fetch-depth: 1
+      - name: Create hostrepo and prepare masterdir
+        run: |
+         ln -s "$(pwd)" /hostrepo &&
+         common/travis/set_mirror.sh &&
+         common/travis/prepare.sh
+      - name: Find cycles and open issues
+        run: |
+         common/scripts/xbps-cycles.py | tee cycles
+         grep 'Cycle:' cycles | while read -r line; do
+             if gh issue list -R "$GITHUB_REPOSITORY" -S "$line" | grep .; then
+                 printf "Issue on '%s' already exists.\n" "$line"
+             else
+                 gh issue create -R "$GITHUB_REPOSITORY" -b '' -t "$line"
+             fi
+         done
+        env:
+            GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 0000000..abdc83c
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,21 @@
+---
+name: Stale Cleanup
+
+on:
+  workflow_dispatch:
+  schedule:
+    - cron: '30 1 * * *'
+
+jobs:
+  stale:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/stale@v4
+        with:
+          stale-issue-message: 'Issues become stale 90 days after last activity and are closed 7 days after that.  If this issue is still relevant bump it or assign it.'
+          stale-pr-message: 'Pull Requests become stale 90 days after last activity and are closed 7 days after that.  If this pull request is still relevant bump it or assign it.'
+          days-before-stale: 90
+          days-before-close: 7
+          debug-only: true
+          exempt-all-assignees: true
+          operations-per-run: 1000
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..958f644
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*.swo
+*.swp
+*~
+\#*#
+*.o
+masterdir*
+hostdir*
+masterdir*/
+hostdir*/
+etc/conf
+etc/conf.*
+etc/virtual
+etc/xbps.d/custom
+.xbps-checkvers*.plist
diff --git a/.mailmap b/.mailmap
new file mode 100644
index 0000000..0692788
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,59 @@
+# git mailmap (see git-shortlog(1))
+# format: New Name <new@address> Old Name <old@address>
+
+Andrea Brancaleoni <abc@pompel.me> Andrea Brancaleoni <andrea.brancaleoni@cleafy.com>
+Andrea Brancaleoni <abc@pompel.me> Andrea Brancaleoni <miwaxe@gmail.com>
+Andrea Brancaleoni <abc@pompel.me> Andrea Brancaleoni <virus@gmx.us>
+Andrew Benson <abenson+void@gmail.com> Andrew Benson <abenson@gmail.com>
+Andrew Benson <abenson+void@gmail.com> Andrewb Benson <abenson+void@gmail.com>
+Dominik Honnef <dominik@honnef.co> Dominik Honnef <dominikh@fork-bomb.org>
+Duncaen <duncaen@voidlinux.org> Duncaen <mail@duncano.de>
+Duncaen <duncaen@voidlinux.org> Duncan Overbruck <administrator@duncano.de>
+Duncaen <duncaen@voidlinux.org> Duncan Overbruck <mail@duncano.de>
+Enno Boland <gottox@voidlinux.org> Enno Boland <eb@s01.de>
+Enno Boland <gottox@voidlinux.org> Enno Boland <g@s01.de>
+Enno Boland <gottox@voidlinux.org> Gottox <g@s01.de>
+Jan S <jan.schreib@gmail.com> jan-schreib <jan.schreib@gmail.com>
+John Regan <john@jrjrtech.com> John Regan <jregan@mesonet.org>
+Jürgen Buchmüller <pullmoll@t-online.de> Juergen Buchmueller <pullmoll@t-online.de>
+Leah Neukirchen <leah@vuxu.org> Christian Neukirchen <chneukirchen@gmail.com>
+Logen Kain <logen@sudotask.com> Logen Kain <walach.of.harkon@gmail.com>
+Michael Aldridge <maldridge@VoidLinux.eu> Michael Aldridge <aldridge.mac@gmail.com>
+Philipp Hirsch <itself@hanspolo.net> hanspolo <ph.hanspolo@googlemail.com>
+Piraty <piraty1@inbox.ru> Piraty <piraty@users.noreply.github.com>
+Stefan Mühlinghaus <jazzman@alphabreed.com> Stefan Mühlinghaus <muehlinghaus@mmh.ag>
+bougyman <bougyman@voidlinux.eu> bougyman <bougyman@rubyists.com>
+bougyman <bougyman@voidlinux.eu> bougyman <bougyman@users.noreply.github.com>
+bougyman <bougyman@voidlinux.eu> bougyman <tj@rubyists.com>
+chrome-pepper-bot <eb@s01.de> Enno Boland (bot) <g@s01.de>
+onekk <carlo.dormeletti@email.it> onekk <carlo.dormeletti@alice.it>
+pancake <pancake@nopcode.org> pancake <pancake@flubox.(none)>
+pancake <pancake@nopcode.org> radare <pancake@nopcode.org>
+xdave <davehome@redthumb.info.tm> davehome <davehome@redthumb.info.tm>
+yopito <pierre.bourgin@free.fr> yopito <yopito@users.noreply.github.com>
+
+Duncaen <duncaen@voidlinux.org> Duncaen <duncaen@voidlinux.eu>
+Enno Boland <gottox@voidlinux.org> Enno Boland <gottox@voidlinux.eu>
+Juan RP <xtraeme@voidlinux.org> Juan RP <xtraeme@voidlinux.eu>
+Toyam Cox <Vaelatern@voidlinux.org> Toyam Cox <Vaelatern@voidlinux.eu>
+ananteris <ananteris@voidlinux.org> ananteris <ananteris@voidlinux.eu>
+bougyman <bougyman@voidlinux.org> bougyman <bougyman@voidlinux.eu>
+
+Rasmus Thomsen <oss@cogitri.dev> Rasmus Thomsen <rasmus.thomsen@protonmail.com>
+Rasmus Thomsen <oss@cogitri.dev> Rasmus Thomsen <cogitri@exherbo.org>
+
+Renato Aguiar <renato@renatoaguiar.net> Renato Aguiar <renato@renag.me>
+Renato Aguiar <renato@renatoaguiar.net> Renato Aguiar <contact@renatoaguiar.org>
+Renato Aguiar <renato@renatoaguiar.net> Renato Aguiar <renato@aguiar.info>
+Đoàn Trần Công Danh <congdanhqx@gmail.com> <congdanhqx+sgn@gmail.com>
+Đoàn Trần Công Danh <congdanhqx@gmail.com> Doan Tran Cong Danh <congdanhqx@gmail.com>
+John <me@johnnynator.dev> John <johnz@posteo.net>
+John <me@johnnynator.dev> John Zimmermann <johnz@posteo.net>
+Daniel Kolesa <daniel@octaforge.org> q66 <daniel@octaforge.org>
+teldra <teldra@rotce.de> Teldra <teldra@rotce.de>
+teldra <teldra@rotce.de> xor <aur@rotce.de>
+Andrew J. Hesford <ajh@sideband.org> Andrew J. Hesford <ahesford@gleason.com>
+
+howtologinquickwiththirtyninecharacters <howtologinquickwiththirtyninecharacters@users.noreply.github.com> It looks like the profile name is limited to 256 characters, just like most error messages here it says 255 characters but we know better, do we? As usual, let's try to fill it with meaningless words about nothing at all. Maybe I can reach its limit. End <61999526+howtologinquickwiththirtyninecharacters@users.noreply.github.com>
+
+Érico Nogueira <erico.erc@gmail.com> Érico Rolim <erico.erc@gmail.com>
diff --git a/=2022.07.03 b/=2022.07.03
new file mode 100644
index 0000000..e69de29
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..da3bef2
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,131 @@
+# Contributing to void-packages
+
+void-packages is the backbone of the Void Linux distribution. It contains all the definitions to build packages from source.
+
+This document describes how you, as a contributor, can help with adding packages, correcting bugs and adding features to void-packages.
+
+## Getting your packages into Void by yourself
+
+If you really want to get a package into Void Linux, we recommend you package it yourself.
+
+We provide a [comprehensive Manual](./Manual.md) on how to create new packages.
+There's also a [manual for xbps-src](./README.md), which is used
+to build package files from templates.
+
+For this guide, we assume you have basic knowledge about [git](http://git-scm.org), as well as a [GitHub Account](http://github.com).
+
+To get started, [fork](https://help.github.com/articles/fork-a-repo) the void-linux `void-packages` git repository on GitHub and clone it:
+
+    $ git clone git@github.com:<user>/void-packages.git
+
+To keep your forked repository up to date, setup the `upstream` remote to pull in new changes:
+
+    $ git remote add upstream https://github.com/void-linux/void-packages.git
+    $ git pull --rebase upstream master
+
+### Creating a new template
+
+You can use the helper tool `xnew`, from the [xtools](https://github.com/chneukirchen/xtools) package, to create new templates:
+
+    $ xnew pkgname subpkg1 subpkg2 ...
+
+Templates must have the name `void-packages/srcpkgs/<pkgname>/template`, where `pkgname` is the same as the `pkgname` variable in the template.
+
+For deeper insights on the contents of template files, please read the [manual](./Manual.md), and be sure to browse the existing template files in the `srcpkgs` directory of this repository for concrete examples.
+
+When you've finished working on the template file, please check it with `xlint` helper from the [xtools](https://github.com/chneukirchen/xtools) package:
+
+    $ xlint template
+
+If `xlint` reports any issues, resolve them before committing.
+
+### Committing your changes
+
+Once you have made and verified your changes to the package template and/or other files, make one commit per package (including all changes to its sub-packages). Each commit message should have one of the following formats:
+
+* for new packages, use ```New package: <pkgname>-<version>``` ([example](https://github.com/void-linux/void-packages/commit/176d9655429188aac10cd229827f99b72982ab10)).
+
+* for package updates, use ```<pkgname>: update to <version>.``` ([example](https://github.com/void-linux/void-packages/commit/b6b82dcbd4aeea5fc37a32e4b6a8dd8bd980d5a3)).
+
+* for template modifications without a version change, use ```<pkgname>: <reason>``` ([example](https://github.com/void-linux/void-packages/commit/8b68d6bf1eb997cd5e7c095acd040e2c5379c91d)).
+
+* for package removals, use ```<pkgname>: remove package``` ([example](https://github.com/void-linux/void-packages/commit/83784632d94deee5d038c8e1c4c1dffa922fca21)).
+
+* for `common/shlibs` modifications, use `common/shlibs: <pkgname>` ([example](https://github.com/void-linux/void-packages/commit/613651c91811cb4fd2e1a6be701c87072d759a9f)).
+
+If you want to describe your changes in more detail, add an empty line followed by those details ([example](https://github.com/void-linux/void-packages/commit/f1c45a502086ba1952f23ace9084a870ce437bc6)).
+
+`xbump`, available in the [xtools](https://github.com/chneukirchen/xtools) package, can be used to commit a new or updated package:
+
+    $ xbump <pkgname> <git commit options>
+
+`xbump` will use `git commit` to commit the changes with the appropriate commit message. For more fine-grained control over the commit, specific options can be passed to `git commit` by adding them after the package name.
+
+After committing your changes, please check that the package builds successfully. From the top level directory of your local copy of the `void-packages` repository, run:
+
+    $ ./xbps-src pkg <pkgname>
+
+Your package must build successfully for at least x86, but we recommend trying to build for armv* as well, e.g.:
+
+    $ ./xbps-src -a armv7l pkg <pkgname>
+
+Runtime testing of packages and building with the `-Q` flag or with `XBPS_CHECK_PKGS=yes` set in the environment or `etc/conf` are strongly encouraged.
+New packages will not be accepted unless they have been runtime tested.
+
+### Starting a pull request
+
+Once you have successfully built the package, you can [create a pull request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request). Pull requests are also known as PRs.
+
+Most pull requests should only contain a single package and dependencies which are not part of void-packages yet.
+
+If you make updates to packages containing a soname bump, you also need to update `common/shlibs` and revbump all packages that are dependant.
+There should be a commit for each package revbump, and those commits should be part of the same pull request.
+
+When you make changes to your pull request, please *do not close and reopen your pull request*. Instead, just [forcibly git push](#review), overwriting any old commits. Closing and opening your pull requests repeatedly spams the Void maintainers.
+
+#### Continuous Integration
+
+Pull requests are automatically submitted for Continuous Integration (CI) testing to ensure packages build and pass their tests (on native builds) on various combinations of C library and architecture.
+Packages that take longer than 120 minutes or need more than 14G of storage to complete their build (for example, Firefox or the Linux kernel) will fail CI and should include `[ci skip]` in the PR title or body (the comment field when the PR is being opened) to avoid wasting CI builder time.
+Use your best judgment on build times based on your local building experience. If you skip CI when submitting a PR, please build and cross-build for a variety of architectures locally, with both glibc and musl, and note your local results in PR comments.
+Make sure to cover 64-bit and 32-bit architectures.
+
+If you notice a failure in CI that didn't happen locally, that is likely because you didn't run tests locally.
+Use `./xbps-src -Q pkg <package>` to do so.
+Some tests won't work in the CI environment or at all, and their templates should encode this information using the `make_check` variable.
+
+Continuous Integration will also check if the templates you have changed
+comply with the our guidelines. At the moment not all packages comply with the rules, so if you update a package, it may report errors about places you haven't touched. Please feel free to fix those errors too.
+
+#### Review
+
+It's possible (and common) that a pull request will contain mistakes or reviewers will ask for additional tweaks.
+Reviewers will comment on your pull request and point out which changes are needed before the pull request can be merged.
+
+Most PRs will have a single commit, as seen [above](#committing-your-changes), so if you need to make changes to the commit and already have a pull request open, you can use the following commands:
+
+    $ git add <file>
+    $ git commit --amend
+    $ git push -f
+
+A more powerful way of modifying commits than using `git commit --amend` is with [git-rebase](https://git-scm.com/docs/git-rebase#_interactive_mode), which allows you to join, reorder, change description of past commits and more.
+
+Alternatively, if there are issues with your git history, you can make another branch and push it to the existing PR:
+
+    $ git checkout master -b <attempt2>
+    $ # do changes anew
+    $ git push -f <fork> <attempt2>:<branch-of-pr>
+
+#### Closing the pull request
+
+Once you have applied all requested changes, the reviewers will merge your request.
+
+If the pull request becomes inactive for some days, the reviewers may or may not warn you when they are about to close it.
+If it stays inactive further, it will be closed.
+
+Please abstain from temporarily closing a pull request while revising the templates. Instead, leave a comment on the PR describing what still needs work, or add "[WIP]" to the PR title. Only close your pull request if you're sure you don't want your changes to be included.
+
+#### Publishing the package
+
+Once the reviewers have merged the pull request, our [build server](http://build.voidlinux.org) is automatically triggered and builds
+all packages in the pull request for all supported platforms. Upon completion, the packages are available to all Void Linux users.
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..71ad401
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,23 @@
+ Copyright (c) 2008-2020 Juan Romero Pardines and contributors
+ Copyright (c) 2017-2022 The Void Linux team and contributors
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Manual.md b/Manual.md
new file mode 100644
index 0000000..8ec7554
--- /dev/null
+++ b/Manual.md
@@ -0,0 +1,2164 @@
+# The XBPS source packages manual
+
+This article contains an exhaustive manual of how to create new source
+packages for XBPS, the `Void Linux` native packaging system.
+
+*Table of Contents*
+
+* [Introduction](#Introduction)
+	* [Quality Requirements](#quality_requirements)
+	* [Package build phases](#buildphase)
+	* [Package naming conventions](#namingconventions)
+		* [Libraries](#libs)
+		* [Language Modules](#language_modules)
+		* [Language Bindings](#language_bindings)
+		* [Programs](#programs)
+	* [Global functions](#global_funcs)
+	* [Global variables](#global_vars)
+	* [Available variables](#available_vars)
+		* [Mandatory variables](#mandatory_vars)
+		* [Optional variables](#optional_vars)
+		* [About the depends variables](#explain_depends)
+	* [Repositories](#repositories)
+		* [Repositories defined by Branch](#repo_by_branch)
+		* [Package defined repositories](#pkg_defined_repo)
+	* [Checking for new upstream releases](#updates)
+	* [Handling patches](#patches)
+	* [Build style scripts](#build_scripts)
+	* [Build helper scripts](#build_helper)
+	* [Functions](#functions)
+	* [Build options](#build_options)
+		* [Runtime dependencies](#deps_runtime)
+	* [INSTALL and REMOVE files](#install_remove_files)
+	* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
+	* [Creating system accounts/groups at runtime](#runtime_account_creation)
+	* [Writing runit services](#writing_runit_services)
+	* [32bit packages](#32bit_pkgs)
+	* [Subpackages](#pkgs_sub)
+	* [Development packages](#pkgs_development)
+	* [Data packages](#pkgs_data)
+	* [Documentation packages](#pkgs_documentation)
+	* [Python packages](#pkgs_python)
+	* [Go packages](#pkgs_go)
+	* [Haskell packages](#pkgs_haskell)
+	* [Font packages](#pkgs_font)
+	* [Renaming a package](#pkg_rename)
+	* [Removing a package](#pkg_remove)
+	* [XBPS Triggers](#xbps_triggers)
+		* [appstream-cache](#triggers_appstream_cache)
+		* [binfmts](#triggers_binfmts)
+		* [dkms](#triggers_dkms)
+		* [gconf-schemas](#triggers_gconf_schemas)
+		* [gdk-pixbuf-loaders](#triggers_gdk_pixbuf_loaders)
+		* [gio-modules](#triggers_gio_modules)
+		* [gettings-schemas](#triggers_gsettings_schemas)
+		* [gtk-icon-cache](#triggers_gtk_icon_cache)
+		* [gtk-immodules](#triggers_gtk_immodules)
+		* [gtk-pixbuf-loaders](#triggers_gtk_pixbuf_loaders)
+		* [gtk3-immodules](#triggers_gtk3_immodules)
+		* [hwdb.d-dir](#triggers_hwdb.d_dir)
+		* [info-files](#triggers_info_files)
+		* [initramfs-regenerate](#triggers_initramfs_regenerate)
+		* [kernel-hooks](#triggers_kernel_hooks)
+		* [mimedb](#triggers_mimedb)
+		* [mkdirs](#triggers_mkdirs)
+		* [pango-modules](#triggers_pango_module)
+		* [pycompile](#triggers_pycompile)
+		* [register-shell](#triggers_register_shell)
+		* [system-accounts](#triggers_system_accounts)
+		* [texmf-dist](#triggers_texmf_dist)
+		* [update-desktopdb](#triggers_update_desktopdb)
+		* [x11-fonts](#triggers_x11_fonts)
+		* [xml-catalog](#triggers_xml_catalog)
+	* [Void specific documentation](#documentation)
+	* [Notes](#notes)
+	* [Contributing via git](#contributing)
+* [Help](#help)
+
+<a id="Introduction"></a>
+## Introduction
+
+The `void-packages` repository contains all the
+recipes to download, compile and build binary packages for Void Linux.
+These `source` package files are called `templates`.
+
+The `template` files are shell scripts that define `variables` and `functions`
+to be processed by `xbps-src`, the package builder, to generate binary packages.
+The shell used by `xbps-src` is GNU bash; `xbps-src` doesn't aim to be
+compatible with POSIX `sh`.
+
+By convention, all templates start with a comment saying that it is a
+`template file` for a certain package. Most of the lines should be kept under 80
+columns; variables that list many values can be split into new lines, with the
+continuation in the next line indented by one space.
+
+A simple `template` example is as follows:
+
+```
+# Template file for 'foo'
+pkgname=foo
+version=1.0
+revision=1
+build_style=gnu-configure
+short_desc="A short description max 72 chars"
+maintainer="name <email>"
+license="GPL-3.0-or-later"
+homepage="http://www.foo.org"
+distfiles="http://www.foo.org/foo-${version}.tar.gz"
+checksum="fea0a94d4b605894f3e2d5572e3f96e4413bcad3a085aae7367c2cf07908b2ff"
+```
+
+The template file contains definitions to download, build and install the
+package files to a `fake destdir`, and after this a binary package can be
+generated with the definitions specified on it.
+
+Don't worry if anything is not clear as it should be. The reserved `variables`
+and `functions` will be explained later. This `template` file should be created
+in a directory matching `$pkgname`, Example: `void-packages/srcpkgs/foo/template`.
+
+If everything went fine after running
+
+    $ ./xbps-src pkg <pkgname>
+
+a binary package named `foo-1.0_1.<arch>.xbps` will be generated in the local repository
+`hostdir/binpkgs`.
+
+<a id="quality_requirements"></a>
+### Quality Requirements
+
+To be included in the Void repository, software must meet at least one
+of the following requirements. Exceptions to the list are possible,
+and might be accepted, but are extremely unlikely. If you believe you have an
+exception, start a PR and make an argument for why that particular piece of
+software, while not meeting any of the following requirements, is a good candidate for
+the Void packages system.
+
+1. System: The software should be installed system-wide, not per-user.
+
+1. Compiled: The software needs to be compiled before being used, even if it is
+   software that is not needed by the whole system.
+
+1. Required: Another package either within the repository or pending inclusion
+   requires the package.
+
+In particular, new themes are highly unlikely to be accepted. Simple shell
+scripts are unlikely to be accepted unless they provide considerable value to a
+broad user base. New fonts may be accepted if they provide value beyond
+aesthetics (e.g. they contain glyphs for a script missing in already packaged
+fonts).
+
+Browser forks, including those based on Chromium and Firefox, are generally not
+accepted. Such forks require heavy patching, maintenance and hours of build time.
+
+Software need to be used in version announced by authors as ready to use by
+the general public - usually called releases. Betas, arbitrary VCS revisions,
+templates using tip of development branch taken at build time and releases
+created by the package maintainer won't be accepted.
+
+<a id="buildphase"></a>
+### Package build phases
+
+Building a package consist of the following phases:
+
+- `setup` This phase prepares the environment for building a package.
+
+- `fetch` This phase downloads required sources for a `source package`, as defined by
+the `distfiles` variable or `do_fetch()` function.
+
+- `extract` This phase extracts the `distfiles` files into `$wrksrc` or executes the `do_extract()`
+function, which is the directory to be used to compile the `source package`.
+
+- `patch` This phase applies all patches in the patches directory of the package and
+can be used to perform other operations before configuring the package.
+
+- `configure` This phase executes the `configuration` of a `source package`, i.e `GNU configure scripts`.
+
+- `build` This phase compiles/prepares the `source files` via `make` or any other compatible method.
+
+- `check` This optional phase checks the result of the `build` phase by running the testsuite provided by the package.
+If the default `do_check` function provided by the build style doesn't do anything, the template should set
+`make_check_target` and/or `make_check_args` appropriately or define its own `do_check` function. If tests take too long
+or can't run in all environments, `make_check` should be set to fitting value or
+`do_check` should be customized to limit testsuite unless `XBPS_CHECK_PKGS` is `full`.
+
+- `install` This phase installs the `package files` into the package destdir `<masterdir>/destdir/<pkgname>-<version>`,
+via `make install` or any other compatible method.
+
+- `pkg` This phase builds the `binary packages` with files stored in the
+`package destdir` and registers them into the local repository.
+
+- `clean` This phase cleans up the package (if defined).
+
+`xbps-src` supports running just the specified phase, and if it ran
+successfully, the phase will be skipped later (unless its work directory
+`${wrksrc}` is removed with `xbps-src clean`).
+
+<a id="namingconventions"></a>
+### Package naming conventions
+
+<a id="libs"></a>
+#### Libraries
+
+Libraries are packages which provide shared objects (\*.so) in /usr/lib.
+They should be named like their upstream package name with the following
+exceptions:
+
+- The package is a subpackage of a front end application and provides
+shared objects used by the base package and other third party libraries. In that
+case it should be prefixed with 'lib'. An exception from that rule is: If an
+executable is only used for building that package, it moves to the -devel
+package.
+
+Example: wireshark -> subpkg libwireshark
+
+Libraries have to be split into two sub packages: `<name>` and `<name>-devel`.
+
+- `<name>` should only contain those parts of a package which are needed to run
+a linked program.
+
+- `<name>-devel` should contain all files which are needed to compile a package
+against this package. If the library is a sub package, its corresponding
+development package should be named `lib<name>-devel`
+
+<a id="language_modules"></a>
+#### Language Modules
+
+Language modules are extensions to script or compiled languages. Those packages
+do not provide any executables themselves, but can be used by other packages
+written in the same language.
+
+The naming convention to those packages is:
+
+```
+<language>-<name>
+```
+
+If a package provides both, a module and a executable, it should be split into
+a package providing the executable named `<name>` and the module named
+`<language>-<name>`. If a package starts with the languages name itself, the
+language prefix can be dropped. Short names for languages are no valid substitute
+for the language prefix.
+
+Example: python-pam, perl-URI, python3-pyside2
+
+<a id="language_bindings"></a>
+#### Language Bindings
+
+Language Bindings are packages which allow programs or libraries to have
+extensions or plugins written in a certain language.
+
+The naming convention to those packages is:
+```
+<name>-<language>
+```
+
+Example: gimp-python, irssi-perl
+
+<a id="programs"></a>
+#### Programs
+
+Programs put executables under /usr/bin (or in very special cases in other
+.../bin directories)
+
+For those packages the upstream packages name should be used. Remember that
+in contrast to many other distributions, void doesn't lowercase package names.
+As a rule of thumb, if the tar.gz of a package contains uppercase letter, then
+the package name should contain them too; if it doesn't, the package name
+is lowercase.
+
+Programs can be split into program packages and library packages. The program
+package should be named as described above. The library package should be
+prefixed with "lib" (see section `Libraries`)
+
+<a id="global_funcs"></a>
+### Global functions
+
+The following functions are defined by `xbps-src` and can be used on any template:
+
+- *vinstall()* `vinstall <file> <mode> <targetdir> [<name>]`
+
+	Installs `file` with the specified `mode` into `targetdir` in the pkg `$DESTDIR`.
+	The optional 4th argument can be used to change the `file name`.
+
+- *vcopy()* `vcopy <pattern> <targetdir>`
+
+	Copies recursively all files in `pattern` to `targetdir` in the pkg `$DESTDIR`.
+
+- *vmove()* `vmove <pattern>`
+
+	Moves `pattern` to the specified directory in the pkg `$DESTDIR`.
+
+- *vmkdir()* `vmkdir <directory> [<mode>]`
+
+	Creates a directory in the pkg `$DESTDIR`. The 2nd optional argument sets the mode of the directory.
+
+- *vbin()* `vbin <file> [<name>]`
+
+	Installs `file` into `usr/bin` in the pkg `$DESTDIR` with the
+	permissions 0755. The optional 2nd argument can be used to change
+	the `file name`.
+
+- *vman()* `vman <file> [<name>]`
+
+	Installs `file` as a man page. `vman()` parses the name and
+	determines the section as well as localization. Also transparently
+	converts gzipped (.gz) and bzipped (.bz2) manpages into plaintext.
+	Example mappings:
+
+	- `foo.1` -> `${DESTDIR}/usr/share/man/man1/foo.1`
+	- `foo.fr.1` -> `${DESTDIR}/usr/share/man/fr/man1/foo.1`
+	- `foo.1p` -> `${DESTDIR}/usr/share/man/man1/foo.1p`
+	- `foo.1.gz` -> `${DESTDIR}/usr/share/man/man1/foo.1`
+	- `foo.1.bz2` -> `${DESTDIR}/usr/share/man/man1/foo.1`
+
+- *vdoc()* `vdoc <file> [<name>]`
+
+	Installs `file` into `usr/share/doc/<pkgname>` in the pkg
+	`$DESTDIR`. The optional 2nd argument can be used to change the
+	`file name`.
+
+- *vconf()* `vconf <file> [<name>]`
+
+	Installs `file` into `etc` in the pkg
+	`$DESTDIR`. The optional 2nd argument can be used to change the
+	`file name`.
+
+- *vsconf()* `vsconf <file> [<name>]`
+
+	Installs `file` into `usr/share/examples/<pkgname>` in the pkg
+	`$DESTDIR`. The optional 2nd argument can be used to change the
+	`file name`.
+
+- <a id="vlicense"></a>
+ *vlicense()* `vlicense <file> [<name>]`
+
+	Installs `file` into `usr/share/licenses/<pkgname>` in the pkg
+	`$DESTDIR`. The optional 2nd argument can be used to change the
+	`file name`. See [license](#var_license) for when to use it.
+
+- *vsv()* `vsv <service>`
+
+	Installs `service` from `${FILESDIR}` to /etc/sv. The service must
+	be a directory containing at least a run script. Note the `supervise`
+	symlink will be created automatically by `vsv` and that the run script
+	is automatically made executable by this function.
+	For further information on how to create a new service directory see
+	[The corresponding section the FAQ](http://smarden.org/runit/faq.html#create).
+
+- *vsed()* `vsed -i <file> -e <regex>`
+
+	Wrapper around sed that checks sha256sum of a file before and after running
+	the sed command to detect cases in which the sed call didn't change anything.
+	Takes any arbitrary amount of files and regexes by calling `-i file` and
+	`-e regex` repeatedly, at least one file and one regex must be specified.
+
+	Note that vsed will call the sed command for every regex specified against
+	every file specified, in the order that they are given.
+
+- *vcompletion()* `<file> <shell> [<command>]`
+
+	Installs shell completion from `file` for `command`, in the correct location
+	and with the appropriate filename for `shell`. If `command` isn't specified,
+	it will default to `pkgname`. The `shell` argument can be one of `bash`,
+	`fish` or `zsh`.
+
+> Shell wildcards must be properly quoted, Example: `vmove "usr/lib/*.a"`.
+
+<a id="global_vars"></a>
+### Global variables
+
+The following variables are defined by `xbps-src` and can be used on any template:
+
+- `makejobs` Set to `-jX` if `XBPS_MAKEJOBS` is defined, to allow parallel jobs with `GNU make`.
+
+- `sourcepkg`  Set to the to main package name, can be used to match the main package
+rather than additional binary package names.
+
+- `CHROOT_READY`  Set if the target chroot (masterdir) is ready for chroot builds.
+
+- `CROSS_BUILD` Set if `xbps-src` is cross compiling a package.
+
+- `XBPS_CHECK_PKGS` Set if `xbps-src` is going to run tests for a package.
+Longer testsuites should only be run in `do_check()` if it is set to `full`.
+
+- `DESTDIR` Full path to the fake destdir used by the source pkg, set to
+`<masterdir>/destdir/${sourcepkg}-${version}`.
+
+- `FILESDIR` Full path to the `files` package directory, i.e `srcpkgs/foo/files`.
+The `files` directory can be used to store additional files to be installed
+as part of the source package.
+
+- `PKGDESTDIR` Full path to the fake destdir used by the `pkg_install()` function in
+`subpackages`, set to `<masterdir>/destdir/${pkgname}-${version}`.
+
+- `XBPS_BUILDDIR` Directory to store the `source code` of the source package being processed,
+set to `<masterdir>/builddir`. The package `wrksrc` is always stored
+in this directory such as `${XBPS_BUILDDIR}/${wrksrc}`.
+
+- `XBPS_MACHINE` The machine architecture as returned by `xbps-uhelper arch`.
+
+- `XBPS_ENDIAN` The machine's endianness ("le" or "be").
+
+- `XBPS_LIBC` The machine's C library ("glibc" or "musl").
+
+- `XBPS_WORDSIZE` The machine's word size in bits (32 or 64).
+
+- `XBPS_NO_ATOMIC8` The machine lacks native 64-bit atomics (needs libatomic emulation).
+
+- `XBPS_SRCDISTDIR` Full path to where the `source distfiles` are stored, i.e `$XBPS_HOSTDIR/sources`.
+
+- `XBPS_SRCPKGDIR` Full path to the `srcpkgs` directory.
+
+- `XBPS_TARGET_MACHINE` The target machine architecture when cross compiling a package.
+
+- `XBPS_TARGET_ENDIAN` The target machine's endianness ("le" or "be").
+
+- `XBPS_TARGET_LIBC` The target machine's C library ("glibc" or "musl").
+
+- `XBPS_TARGET_WORDSIZE` The target machine's word size in bits (32 or 64).
+
+- `XBPS_TARGET_NO_ATOMIC8` The target machine lacks native 64-bit atomics (needs libatomic emulation).
+
+- `XBPS_FETCH_CMD` The utility to fetch files from `ftp`, `http` of `https` servers.
+
+- `XBPS_WRAPPERDIR` Full path to where xbps-src's wrappers for utilities are stored.
+
+- `XBPS_CROSS_BASE` Full path to where cross-compile dependencies are installed, varies according to the target architecture triplet. i.e `aarch64` -> `/usr/aarch64-linux-gnu`.
+
+- `XBPS_RUST_TARGET` The target architecture triplet used by `rustc` and `cargo`.
+
+<a id="available_vars"></a>
+### Available variables
+
+<a id="mandatory_vars"></a>
+#### Mandatory variables
+
+The list of mandatory variables for a template:
+
+- `homepage` An URL pointing to the upstream homepage.
+
+
+- <a id="var_license"></a>
+`license` A string matching the license's [SPDX Short identifier](https://spdx.org/licenses),
+`Public Domain`, or string prefixed with `custom:` for other licenses.
+Multiple licenses should be separated by commas, Example: `GPL-3.0-or-later, custom:Hugware`.
+
+  Empty meta-packages that don't include any files
+  and thus have and require no license should use
+  `Public Domain`.
+
+  Note: `MIT`, `BSD`, `ISC` and custom licenses
+  require the license file to be supplied with the binary package.
+
+- `maintainer` A string in the form of `name <user@domain>`.  The email for this field
+must be a valid email that you can be reached at. Packages using
+`users.noreply.github.com` emails will not be accepted.
+
+- `pkgname` A string with the package name, matching `srcpkgs/<pkgname>`.
+
+- `revision` A number that must be set to 1 when the `source package` is created, or
+updated to a new `upstream version`. This should only be increased when
+the generated `binary packages` have been modified.
+
+- `short_desc` A string with a brief description for this package. Max 72 chars.
+
+- `version` A string with the package version. Must not contain dashes or underscore
+and at least one digit is required. Shell's variable substition usage is not allowed.
+
+Neither `pkgname` or `version` should contain special characters which make it
+necessary to quote them, so they shouldn't be quoted in the template.
+
+<a id="optional_vars"></a>
+#### Optional variables
+
+- `hostmakedepends` The list of `host` dependencies required to build the package, and
+that will be installed to the master directory. There is no need to specify a version
+because the current version in srcpkgs will always be required.
+Example: `hostmakedepends="foo blah"`.
+
+- `makedepends` The list of `target` dependencies required to build the package, and that
+will be installed to the master directory. There is no need to specify a version
+because the current version in srcpkgs will always be required.
+Example: `makedepends="foo blah"`.
+
+- `checkdepends` The list of dependencies required to run the package checks, i.e.
+the script or make rule specified in the template's `do_check()` function.
+Example: `checkdepends="gtest"`.
+
+- `depends` The list of dependencies required to run the package. These dependencies
+are not installed to the master directory, rather are only checked if a binary package
+in the local repository exists to satisfy the required version. Dependencies
+can be specified with the following version comparators: `<`, `>`, `<=`, `>=`
+or `foo-1.0_1` to match an exact version. If version comparator is not
+defined (just a package name), the version comparator is automatically set to `>=0`.
+Example: `depends="foo blah>=1.0"`. See the [Runtime dependencies](#deps_runtime) section
+for more information.
+
+- `bootstrap` If enabled the source package is considered to be part of the `bootstrap`
+process and required to be able to build packages in the chroot. Only a
+small number of packages must set this property.
+
+- `conflicts` An optional list of packages conflicting with this package.
+Conflicts can be specified with the following version comparators: `<`, `>`, `<=`, `>=`
+or `foo-1.0_1` to match an exact version. If version comparator is not
+defined (just a package name), the version comparator is automatically set to `>=0`.
+Example: `conflicts="foo blah>=0.42.3"`.
+
+- `distfiles` The full URL to the `upstream` source distribution files. Multiple files
+can be separated by whitespaces. The files must end in `.tar.lzma`, `.tar.xz`,
+`.txz`, `.tar.bz2`, `.tbz`, `.tar.gz`, `.tgz`, `.gz`, `.bz2`, `.tar` or
+`.zip`. To define a target filename, append `>filename` to the URL.
+Example:
+	distfiles="http://foo.org/foo-1.0.tar.gz http://foo.org/bar-1.0.tar.gz>bar.tar.gz"
+
+  To avoid repetition, several variables for common hosting sites
+  exist:
+
+  | Variable         | Value                                           |
+  |------------------|-------------------------------------------------|
+  | CPAN_SITE        | https://cpan.perl.org/modules/by-module          |
+  | DEBIAN_SITE      | http://ftp.debian.org/debian/pool               |
+  | FREEDESKTOP_SITE | https://freedesktop.org/software                 |
+  | GNOME_SITE       | https://ftp.gnome.org/pub/GNOME/sources          |
+  | GNU_SITE         | https://ftp.gnu.org/gnu                          |
+  | KERNEL_SITE      | https://www.kernel.org/pub/linux                 |
+  | MOZILLA_SITE     | https://ftp.mozilla.org/pub                      |
+  | NONGNU_SITE      | https://download.savannah.nongnu.org/releases    |
+  | PYPI_SITE        | https://files.pythonhosted.org/packages/source  |
+  | SOURCEFORGE_SITE | https://downloads.sourceforge.net/sourceforge    |
+  | UBUNTU_SITE      | http://archive.ubuntu.com/ubuntu/pool           |
+  | XORG_SITE        | https://www.x.org/releases/individual            |
+  | KDE_SITE         | https://download.kde.org/stable                 |
+  | VIDEOLAN_SITE    | https://download.videolan.org/pub/videolan      |
+
+- `checksum` The `sha256` digests matching `${distfiles}`. Multiple files can be
+separated by blanks. Please note that the order must be the same than
+was used in `${distfiles}`. Example: `checksum="kkas00xjkjas"`
+
+If a distfile changes its checksum for every download because it is packaged
+on the fly on the server, like e.g. snapshot tarballs from any of the
+`https://*.googlesource.com/` sites, the checksum of the `archive contents`
+can be specified by prepending a commercial at (@).
+For tarballs you can find the contents checksum by using the command
+`tar xf <tarball.ext> --to-stdout | sha256sum`.
+
+- `wrksrc` The directory name where the package sources are extracted, by default
+set to `${pkgname}-${version}`. If the top level directory of a package's `distfile` is different from the default, `wrksrc` must be set to the top level directory name inside the archive.
+
+- `build_wrksrc` A directory relative to `${wrksrc}` that will be used when building the package.
+
+- `create_wrksrc` Enable it to create the `${wrksrc}` directory. Required if a package
+contains multiple `distfiles`.
+
+- `build_style` This specifies the `build method` for a package. Read below to know more
+about the available package `build methods` or effect of leaving this not set.
+
+- `build_helper` Whitespace-separated list of files in `common/build-helper` to be
+sourced and its variables be made available on the template. i.e. `build_helper="rust"`.
+
+- `configure_script` The name of the `configure` script to execute at the `configure` phase if
+`${build_style}` is set to `configure` or `gnu-configure` build methods.
+By default set to `./configure`.
+
+- `configure_args` The arguments to be passed in to the `configure` script if `${build_style}`
+is set to `configure` or `gnu-configure` build methods. By default, prefix
+must be set to `/usr`. In `gnu-configure` packages, some options are already
+set by default: `--prefix=/usr --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man --localstatedir=/var`.
+
+- `make_cmd` The executable to run at the `build` phase if `${build_style}` is set to
+`configure`, `gnu-configure` or `gnu-makefile` build methods.
+By default set to `make`.
+
+- `make_build_args` The arguments to be passed in to `${make_cmd}` at the build phase if
+`${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile`
+build methods. Unset by default.
+
+- `make_check_args` The arguments to be passed in to `${make_cmd}` at the check phase if
+`${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile`
+build methods. Unset by default.
+
+- `make_install_args` The arguments to be passed in to `${make_cmd}` at the `install-destdir`
+phase if `${build_style}` is set to `configure`, `gnu-configure` or
+`gnu-makefile` build methods. By default set to
+`PREFIX=/usr DESTDIR=${DESTDIR}`.
+
+- `make_build_target` The build target. If `${build_style}` is set to `configure`, `gnu-configure`
+or `gnu-makefile`, this is the target passed to `${make_cmd}` in the build phase;
+when unset the default target is used.
+If `${build_style}` is `python3-pep517`, this is the path of the package
+directory that should be built as a Python wheel; when unset, defaults to `.` (the current
+directory with respect to the build).
+
+- `make_check_target` The target to be passed in to `${make_cmd}` at the check phase if
+`${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile`
+build methods. By default set to `check`.
+
+- `make_install_target` The installation target. When `${build_style}` is set to `configure`,
+`gnu-configure` or `gnu-makefile`, this is the target passed to `${make_command}` in the install
+phase; when unset, it defaults to `install`. If `${build_style}` is `python-pep517`, this is the
+path of the Python wheel produced by the build phase that will be installed; when unset, the
+`python-pep517` build style will look for a wheel matching the package name and version in the
+current directory with respect to the install.
+
+- `patch_args` The arguments to be passed in to the `patch(1)` command when applying
+patches to the package sources during `do_patch()`. Patches are stored in
+`srcpkgs/<pkgname>/patches` and must be in `-p1` format. By default set to `-Np1`.
+
+- `disable_parallel_build` If set the package won't be built in parallel
+and `XBPS_MAKEJOBS` will be set to 1. If a package does not work well with `XBPS_MAKEJOBS`
+but still has a mechanism to build in parallel, set `disable_parallel_build` and
+use `XBPS_ORIG_MAKEJOBS` (which holds the original value of `XBPS_MAKEJOBS`) in the template.
+
+- `make_check` Sets the cases in which the `check` phase is run.
+This option has to be accompanied by a comment explaining why the tests fail.
+Allowed values:
+  - `yes` (the default) to run if `XBPS_CHECK_PKGS` is set.
+  - `extended` to run if `XBPS_CHECK_PKGS` is `full`.
+  - `ci-skip` to run locally if `XBPS_CHECK_PKGS` is set, but not as part of pull request checks.
+  - `no` to never run.
+
+
+- `keep_libtool_archives` If enabled the `GNU Libtool` archives won't be removed. By default those
+files are always removed automatically.
+
+- `skip_extraction` A list of filenames that should not be extracted in the `extract` phase.
+This must match the basename of any url defined in `${distfiles}`.
+Example: `skip_extraction="foo-${version}.tar.gz"`.
+
+- `nodebug` If enabled -dbg packages won't be generated even if `XBPS_DEBUG_PKGS` is set.
+
+- `conf_files` A list of configuration files the binary package owns; this expects full
+paths, wildcards will be extended, and multiple entries can be separated by blanks.
+Example: `conf_files="/etc/foo.conf /etc/foo2.conf /etc/foo/*.conf"`.
+
+- `mutable_files` A list of files the binary package owns, with the expectation
+  that those files will be changed. These act a lot like `conf_files` but
+  without the assumption that a human will edit them.
+
+- `make_dirs` A list of entries defining directories and permissions to be
+  created at install time. Each entry should be space separated, and will
+  itself contain spaces. `make_dirs="/dir 0750 user group"`. User and group and
+  mode are required on every line, even if they are `755 root root`. By
+  convention, there is only one entry of `dir perms user group` per line.
+
+- `repository` Defines the repository in which the package will be placed. See
+  *Repositories* for a list of valid repositories.
+
+- `nostrip` If set, the ELF binaries with debugging symbols won't be stripped. By
+default all binaries are stripped.
+
+- `nostrip_files` White-space separated list of ELF binaries that won't be stripped of
+debugging symbols. Files can be given by full path or by filename.
+
+- `noshlibprovides` If set, the ELF binaries won't be inspected to collect the provided
+sonames in shared libraries.
+
+- `noverifyrdeps` If set, the ELF binaries and shared libaries won't be inspected to collect
+their reverse dependencies. You need to specify all dependencies in the `depends` when you
+need to set this.
+
+- `skiprdeps` White space separated list of filenames specified by their absolute path in
+the `$DESTDIR` which will not be scanned for runtime dependencies. This may be useful to
+skip files which are not meant to be run or loaded on the host but are to be sent to some
+target device or emulation.
+
+- `ignore_elf_files` White space separated list of machine code files
+in /usr/share directory specified by absolute path, which are expected and allowed.
+
+- `ignore_elf_dirs` White space separated list of directories in /usr/share directory
+specified by absolute path, which are expected and allowed to contain machine code files.
+
+- `nocross` If set, cross compilation won't be allowed and will exit immediately.
+This should be set to a string describing why it fails, or a link to a buildlog (from the official builders, CI buildlogs can vanish) demonstrating the failure.
+
+- `restricted` If set, xbps-src will refuse to build the package unless
+`etc/conf` has `XBPS_ALLOW_RESTRICTED=yes`. The primary builders for Void
+Linux do not have this setting, so the primary repositories will not have any
+restricted package. This is useful for packages where the license forbids
+redistribution.
+
+- `subpackages` A white space separated list of subpackages (matching `foo_package()`)
+to override the guessed list. Only use this if a specific order of subpackages is required,
+otherwise the default would work in most cases.
+
+- `broken` If set, building the package won't be allowed because its state is currently broken.
+This should be set to a string describing why it is broken, or a link to a buildlog demonstrating the failure.
+
+- `shlib_provides` A white space separated list of additional sonames the package provides on.
+This appends to the generated file rather than replacing it.
+
+- `shlib_requires` A white space separated list of additional sonames the package requires.
+This appends to the generated file rather than replacing it.
+
+- `nopie` Only needs to be set to something to make active, disables building the package with hardening
+  features (PIE, relro, etc). Not necessary for most packages.
+
+- `nopie_files` White-space seperated list of ELF binaries that won't be checked
+for PIE. Files must be given by full path.
+
+- `reverts` xbps supports a unique feature which allows to downgrade from broken
+packages automatically. In the `reverts` field one can define a list of broken
+pkgver the resulting package should revert. This field *must* be defined before
+`version` and `revision` fields in order to work as expected. The versions
+defined in `reverts` must be bigger than the one defined in `version`.
+Example:
+
+    ```
+    reverts="2.0_1 2.0_2"
+    version=1.9
+    revision=2
+    ```
+
+- `alternatives` A white space separated list of supported alternatives the package provides.
+A list is composed of three components separated by a colon: group, symlink and target.
+Example: `alternatives="vi:/usr/bin/vi:/usr/bin/nvi ex:/usr/bin/ex:/usr/bin/nvi-ex"`.
+
+- `font_dirs` A white space separated list of directories specified by an absolute path where a
+font package installs its fonts.
+It is used in the `x11-fonts` xbps-trigger to rebuild the font cache during install/removal
+of the package.
+Example: `font_dirs="/usr/share/fonts/TTF /usr/share/fonts/X11/misc"`
+
+- `dkms_modules` A white space separated list of Dynamic Kernel Module Support (dkms) modules
+that will be installed and removed by the `dkms` xbps-trigger with the install/removal of the
+package.
+The format is a white space separated pair of strings that represent the name of the module,
+most of the time `pkgname`, and the version of the module, most of the time `version`.
+Example: `dkms_modules="$pkgname $version zfs 4.14"`
+
+- `register_shell` A white space separated list of shells defined by absolute path to be
+registered into the system shells database. It is used by the `register-shell` trigger.
+Example: `register_shell="/bin/tcsh /bin/csh"`
+
+- `tags` A white space separated list of tags (categories) that are registered into the
+package metadata and can be queried with `xbps-query` by users.
+Example for qutebrowser: `tags="browser chromium-based qt5 python3"`
+
+- `perl_configure_dirs` A white space separate list of directories relative to `wrksrc`
+that contain Makefile.PL files that need to be processes for the package to work. It is
+used in the perl-module build_style and has no use outside of it.
+Example: `perl_configure_dirs="blob/bob foo/blah"`
+
+- `preserve` If set, files owned by the package in the system are not removed when
+the package is updated, reinstalled or removed. This is mostly useful for kernel packages
+that shouldn't remove the kernel files when they are removed in case it might break the
+user's booting and module loading. Otherwise in the majority of cases it should not be
+used.
+
+- `fetch_cmd` Executable to be used to fetch URLs in `distfiles` during the `do_fetch` phase.
+
+- `changelog` An URL pointing to the upstream changelog. Raw text files are preferred.
+
+- `archs` Whitespace separated list of architectures that a package can be
+built for, available architectures can be found under `common/cross-profiles`.
+In general, `archs` should only be set if the upstream software explicitly targets
+certain architectures or there is a compelling reason why the software should not be
+available on some supported architectures.
+Prepending pattern with tilde means disallowing build on indicated archs.
+First matching pattern is taken to allow/deny build. When no pattern matches,
+package is build if last pattern includes tilde.
+Examples:
+
+	```
+	# Build package only for musl architectures
+	archs="*-musl"
+	# Build package for x86_64-musl and any non-musl architecture
+	archs="x86_64-musl ~*-musl"
+	# Default value (all arches)
+	archs="*"
+	```
+A special value `noarch` used to be available, but has since been removed.
+
+- `nocheckperms` If set, xbps-src will not fail on common permission errors (world writable files, etc.)
+
+- `nofixperms` If set, xbps-src will not fix common permission errors (executable manpages, etc.)
+
+<a id="explain_depends"></a>
+#### About the many types of `depends` variables
+
+So far, we have listed four types of `depends` variables: `hostmakedepends`,
+`makedepends`, `checkdepends` and `depends`. These different kinds of variables
+are necessary because `xbps-src` supports cross compilation and to avoid
+installing unecessary packages in the build environment.
+
+During a build process, there are programs that must be _run_ on the host, such
+as `yacc` or the C compiler. The packages that contain these programs should be
+listed in `hostmakedepends`, and will be installed on the host when building the
+target package. Some of these packages are dependencies of the `base-chroot`
+package and don't need to be listed. It is possible that some of the programs
+necessary to build a project are located in `-devel` packages.
+
+The target package can also depend on other packages for libraries to link
+against or header files. These packages should be listed in `makedepends` and
+will match the target architecture, regardless of the architecture of the build
+machine. Typically, `makedepends` will contain mainly `-devel` packages.
+
+Furthermore, if `XBPS_CHECK_PKGS` is set or the `-Q` option is passed to
+`xbps-src`, the target package might require specific dependencies or libraries
+that are linked into its test binaries to run its test suite. These dependencies
+should be listed in `checkdepends` and will be installed as if they were part of
+`hostmakedepends`. Some dependencies that can be included in `checkdepends` are:
+
+- `dejagnu`: used for some GNU projects
+- `cmocka-devel`: linked into test binaries
+- `dbus`: makes it possible to run `dbus-run-session <test-command>` to provide
+  a D-Bus session for applications that need it
+- `git`: some test suites run the `git` command
+
+Lastly, a package may require certain dependencies at runtime, without which it
+is unusable. These dependencies, when they aren't detected automatically by
+XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
+modules and other programs that use `dlopen(3)` instead of dynamically linking.
+
+Finally, as a general rule, if a package is built the exact same way whether or
+not a particular package is present in `makedepends` or `hostmakedepends`, that
+package shouldn't be added as a build time dependency.
+
+<a id="repositories"></a>
+#### Repositories
+
+<a id="repo_by_branch"></a>
+##### Repositories defined by Branch
+
+The global repository takes the name of
+the current branch, except if the name of the branch is master. Then the resulting
+repository will be at the global scope. The usage scenario is that the user can
+update multiple packages in a second branch without polluting his local repository.
+
+<a id="pkg_defined_repo"></a>
+##### Package defined Repositories
+
+The second way to define a repository is by setting the `repository` variable in
+a template. This way the maintainer can define repositories for a specific
+package or a group of packages. This is currently used to distinguish between
+closed source packages, which are put in the `nonfree` repository and other
+packages which are at the root-repository.
+
+The following repository names are valid:
+
+* `nonfree`: Repository for closed source packages.
+
+<a id="updates"></a>
+### Checking for new upstream releases
+
+New upstream versions can be automatically checked using
+`./xbps-src update-check <pkgname>`. In some cases you need to override
+the sensible defaults by assigning the following variables in a `update`
+file in the same directory as the relevant `template` file:
+
+- `site` contains the URL where the version number is
+  mentioned.  If unset, defaults to `homepage` and the directories where
+`distfiles` reside.
+
+- `pkgname` is the package name the default pattern checks for.
+If unset, defaults to `pkgname` from the template.
+
+- `pattern` is a perl-compatible regular expression
+matching the version number.  Anchor the version number using `\K`
+and `(?=...)`.  Example: `pattern='<b>\K[\d.]+(?=</b>)'`, this
+matches a version number enclosed in `<b>...</b>` tags.
+
+- `ignore` is a space-separated list of shell globs that match
+version numbers which are not taken into account for checking newer
+versions.  Example: `ignore="*b*"`
+
+- `version` is the version number used to compare against
+upstream versions. Example: `version=${version//./_}`
+
+- `single_directory` can be set to disable
+detecting directory containing one version of sources in url,
+then searching new version in adjacent directories.
+
+- `vdprefix` is a perl-compatible regular expression matching
+part that precedes numeric part of version directory
+in url. Defaults to `(|v|$pkgname)[-_.]*`.
+
+- `vdsuffix` is a perl-compatible regular expression matching
+part that follows numeric part of version directory
+in url. Defaults to `(|\.x)`.
+
+<a id="patches"></a>
+### Handling patches
+
+Sometimes software needs to be patched, most commonly to fix bugs that have
+been found or to fix compilation with new software.
+
+To handle this, xbps-src has patching functionality. It will look for all files
+that match the glob `srcpkgs/$pkgname/patches/*.{diff,patch}` and will
+automatically apply all files it finds using `patch(1)` with `-Np1`. This happens
+during the `do_patch()` phase. The variable `PATCHESDIR` is
+available in the template, pointing to the `patches` directory.
+
+The patching behaviour can be changed in the following ways:
+
+- A file called `series` can be created in the `patches` directory with a newline
+separated list of patches to be applied in the order presented. When present
+xbps-src will only apply patches named in the `series` file.
+
+- A file with the same name as one of the patches but with `.args` as extension can
+be used to set the args passed to `patch(1)`. As an example, if `foo.patch` requires
+special arguments to be passed to `patch(1)` that can't be used when applying other
+patches, `foo.patch.args` can be created containing those args.
+
+<a id="build_scripts"></a>
+### build style scripts
+
+The `build_style` variable specifies the build method to build and install a
+package. It expects the name of any available script in the
+`void-packages/common/build-style` directory. Please note that required packages
+to execute a `build_style` script must be defined via `$hostmakedepends`.
+
+The current list of available `build_style` scripts is the following:
+
+- If `build_style` is not set, the template must (at least) define
+`do_install()` function and optionally more build phases such as
+`do_configure()`, `do_build()`, etc., and may overwrite default `do_fetch()` and
+`do_extract()` that fetch and extract files defined in `distfiles` variable.
+
+- `cargo` For packages written in rust that use Cargo for building.
+Configuration arguments (such as `--features`) can be defined in the variable
+`configure_args` and are passed to cargo during `do_build`.
+
+- `cmake` For packages that use the CMake build system, configuration arguments
+can be passed in via `configure_args`. The `cmake_builddir` variable may be
+defined to specify the directory for building under `build_wrksrc` instead of
+the default `build`.
+
+- `configure` For packages that use non-GNU configure scripts, at least `--prefix=/usr`
+should be passed in via `configure_args`.
+
+- `fetch` For packages that only fetch files and are installed as is via `do_install()`.
+
+- `gnu-configure` For packages that use GNU configure scripts, additional configuration
+arguments can be passed in via `configure_args`.
+
+- `gnu-makefile` For packages that use GNU make, build arguments can be passed in via
+`make_build_args` and install arguments via `make_install_args`. The build
+target can be overridden via `make_build_target` and the install target
+via `make_install_target`. This build style tries to compensate for makefiles
+that do not respect environment variables, so well written makefiles, those
+that do such things as append (`+=`) to variables, should have `make_use_env`
+set in the body of the template.
+
+- `go` For programs written in Go that follow the standard package
+structure. The variable `go_import_path` must be set to the package's
+import path, e.g. `github.com/github/hub` for the `hub` program. This
+information can be found in the `go.mod` file for modern Go projects.
+It's expected that the distfile contains the package, but dependencies
+will be downloaded with `go get`.
+
+- `meta` For `meta-packages`, i.e packages that only install local files or simply
+depend on additional packages. This build style does not install
+dependencies to the root directory, and only checks if a binary package is
+available in repositories.
+
+- `R-cran` For packages that are available on The Comprehensive R Archive
+Network (CRAN). The build style requires the `pkgname` to start with
+`R-cran-` and any dashes (`-`) in the CRAN-given version to be replaced
+with the character `r` in the `version` variable. The `distfiles`
+location will automatically be set as well as the package made to depend
+on `R`.
+
+- `gemspec` For packages that use
+[gemspec](https://guides.rubygems.org/specification-reference/) files for building a ruby
+gem and then installing it. The gem command can be overridden by `gem_cmd`. `configure_args`
+can be used to pass arguments during compilation. If your package does not make use of compiled
+extensions consider using the `gem` build style instead.
+
+- `gem` For packages that are installed using gems from [RubyGems](https://rubygems.org/).
+The gem command can be overridden by `gem_cmd`.
+`distfiles` is set by the build style if the template does not do so. If your gem
+provides extensions which must be compiled consider using the `gemspec` build style instead.
+
+- `ruby-module` For packages that are ruby modules and are installable via `ruby install.rb`.
+Additional install arguments can be specified via `make_install_args`.
+
+- `perl-ModuleBuild` For packages that use the Perl
+[Module::Build](https://metacpan.org/pod/Module::Build) method.
+
+- `perl-module` For packages that use the Perl
+[ExtUtils::MakeMaker](http://perldoc.perl.org/ExtUtils/MakeMaker.html) build method.
+
+- `raku-dist` For packages that use the Raku `raku-install-dist` build method with rakudo.
+
+- `waf3` For packages that use the Python3 `waf` build method with python3.
+
+- `waf` For packages that use the Python `waf` method with python2.
+
+- `slashpackage` For packages that use the /package hierarchy and package/compile to build,
+such as `daemontools` or any `djb` software.
+
+- `qmake` For packages that use Qt4/Qt5 qmake profiles (`*.pro`), qmake arguments
+for the configure phase can be passed in via `configure_args`, make build arguments can
+be passed in via `make_build_args` and install arguments via `make_install_args`. The build
+target can be overridden via `make_build_target` and the install target
+via `make_install_target`.
+
+- `meson` For packages that use the Meson Build system, configuration options can be passed
+via `configure_args`, the meson command can be overridden by `meson_cmd` and the location of
+the out of source build by `meson_builddir`
+
+- `void-cross` For cross-toolchain packages used to build Void systems. There are no
+mandatory variables (target triplet is inferred), but you can specify some optional
+ones - `cross_gcc_skip_go` can be specified to skip `gccgo`, individual subproject
+configure arguments can be specified via `cross_*_configure_args` where `*` is `binutils`,
+`gcc_bootstrap` (early gcc), `gcc` (final gcc), `glibc` (or `musl`), `configure_args` is
+additionally passed to both early and final `gcc`. You can also specify custom `CFLAGS`
+and `LDFLAGS` for the libc as `cross_(glibc|musl)_(cflags|ldflags)`.
+
+- `zig-build` For packages using [Zig](https://ziglang.org)'s build
+system. Additional arguments may be passed to the `zig build` invocation using
+`configure_args`.
+
+For packages that use the Python module build method (`setup.py` or
+[PEP 517](https://www.python.org/dev/peps/pep-0517/)), you can choose one of the following:
+
+- `python-module` to build *both* Python 2.x and 3.x modules
+
+- `python2-module` to build Python 2.x only modules
+
+- `python3-module` to build Python 3.x only modules
+
+- `python3-pep517` to build Python 3.x only modules that provide a PEP 517 build description without
+a `setup.py` script
+
+Environment variables for a specific `build_style` can be declared in a filename
+matching the `build_style` name, Example:
+
+    `common/environment/build-style/gnu-configure.sh`
+
+- `texmf` For texmf zip/tarballs that need to go into /usr/share/texmf-dist. Includes
+duplicates handling.
+
+<a id="build_helper"></a>
+### build helper scripts
+
+The `build_helper` variable specifies shell snippets to be sourced that will create a
+suitable environment for working with certain sets of packages.
+
+The current list of available `build_helper` scripts is the following:
+
+- `rust` specifies environment variables required for cross-compiling crates via cargo and
+for compiling cargo -sys crates.
+
+- `gir` specifies dependencies for native and cross builds to deal with
+GObject Introspection. The following variables may be set in the template to handle
+cross builds which require additional hinting or exhibit problems. `GIR_EXTRA_LIBS_PATH` defines
+additional paths to be searched when linking target binaries to be introspected.
+`GIR_EXTRA_OPTIONS` defines additional options for the `g-ir-scanner-qemuwrapper` calling
+`qemu-<target_arch>-static` when running the target binary. You can for example specify
+`GIR_EXTRA_OPTIONS="-strace"` to see a trace of what happens when running that binary.
+
+- `qemu` sets additional variables for the `cmake` and `meson` build styles to allow
+executing cross-compiled binaries inside qemu.
+It sets `CMAKE_CROSSCOMPILING_EMULATOR` for cmake and `exe_wrapper` for meson
+to `qemu-<target_arch>-static` and `QEMU_LD_PREFIX` to `XBPS_CROSS_BASE`.
+It also creates the `vtargetrun` function to wrap commands in a call to
+`qemu-<target_arch>-static` for the target architecture.
+
+- `qmake` creates the `qt.conf` configuration file (cf. `qmake` `build_style`)
+needed for cross builds and a qmake-wrapper to make `qmake` use this configuration.
+This aims to fix cross-builds for when the build-style is mixed: e.g. when in a
+`gnu-configure` style the configure script calls `qmake` or a `Makefile` in
+`gnu-makefile` style, respectively.
+
+- `cmake-wxWidgets-gtk3` sets the `WX_CONFIG` variable which is used by FindwxWidgets.cmake
+
+<a id="functions"></a>
+### Functions
+
+The following functions can be defined to change the behavior of how the
+package is downloaded, compiled and installed.
+
+- `pre_fetch()` Actions to execute before `do_fetch()`.
+
+- `do_fetch()` if defined and `distfiles` is not set, use it to fetch the required sources.
+
+- `post_fetch()` Actions to execute after `do_fetch()`.
+
+- `pre_extract()` Actions to execute after `post_fetch()`.
+
+- `do_extract()` if defined and `distfiles` is not set, use it to extract the required sources.
+
+- `post_extract()` Actions to execute after `do_extract()`.
+
+- `pre_patch()` Actions to execute after `post_extract()`.
+
+- `do_patch()` if defined use it to prepare the build environment and run hooks to apply patches.
+
+- `post_patch()` Actions to execute after `do_patch()`.
+
+- `pre_configure()` Actions to execute after `post_patch()`.
+
+- `do_configure()` Actions to execute to configure the package; `${configure_args}` should
+still be passed in if it's a GNU configure script.
+
+- `post_configure()` Actions to execute after `do_configure()`.
+
+- `pre_build()` Actions to execute after `post_configure()`.
+
+- `do_build()` Actions to execute to build the package.
+
+- `post_build()` Actions to execute after `do_build()`.
+
+- `pre_check()` Actions to execute after `post_build()`.
+
+- `do_check()` Actions to execute to run checks for the package.
+
+- `post_check()` Actions to execute after `do_check()`.
+
+- `pre_install()` Actions to execute after `post_check()`.
+
+- `do_install()` Actions to execute to install the package files into the `fake destdir`.
+
+- `post_install()` Actions to execute after `do_install()`.
+
+- `do_clean()` Actions to execute to clean up after a successful package phase.
+
+> A function defined in a template has preference over the same function
+defined by a `build_style` script.
+
+Current working directory for functions is set as follows:
+
+- For pre_fetch, pre_extract, do_clean: `<masterdir>`.
+
+- For do_fetch, post_fetch: `XBPS_BUILDDIR`.
+
+- For do_extract, post_extract: `wrksrc`.
+
+- For pre_patch through post_install: `build_wrksrc`
+if it is defined, otherwise `wrksrc`.
+
+<a id="build_options"></a>
+### Build options
+
+Some packages might be built with different build options to enable/disable
+additional features; The XBPS source packages collection allows you to do this with some simple tweaks
+to the `template` file.
+
+The following variables may be set to allow package build options:
+
+- `build_options` Sets the build options supported by the source package.
+
+- `build_options_default` Sets the default build options to be used by the source package.
+
+- `desc_option_<option>` Sets the description for the build option `option`. This must match the
+keyword set in *build_options*. Note that if the build option is generic enough, its description
+should be added to `common/options.description` instead.
+
+After defining those required variables, you can check for the
+`build_option_<option>` variable to know if it has been set and adapt the source
+package accordingly. Additionally, the following functions are available:
+
+- *vopt_if()* `vopt_if <option> <if_true> [<if_false>]`
+
+  Outputs `if_true` if `option` is set, or `if_false` if it isn't set.
+
+- *vopt_with()* `vopt_with <option> [<flag>]`
+
+  Outputs `--with-<flag>` if the option is set, or `--without-<flag>`
+  otherwise. If `flag` isn't set, it defaults to `option`.
+
+  Examples:
+
+  - `vopt_with dbus`
+  - `vopt_with xml xml2`
+
+- *vopt_enable()* `vopt_enable <option> [<flag>]`
+
+  Same as `vopt_with`, but uses `--enable-<flag>` and
+  `--disable-<flag>` respectively.
+
+- *vopt_conflict()* `vopt_conflict <option 1> <option 2>`
+
+  Emits an error and exits if both options are set at the same time.
+
+- *vopt_bool()* `vopt_bool <option> <property>`
+
+  Outputs `-D<property>=true` if the option is set, or
+  `-D<property>=false` otherwise.
+
+The following example shows how to change a source package that uses GNU
+configure to enable a new build option to support PNG images:
+
+```
+# Template file for 'foo'
+pkgname=foo
+version=1.0
+revision=1
+build_style=gnu-configure
+configure_args="... $(vopt_with png)"
+makedepends="... $(vopt_if png libpng-devel)"
+...
+
+# Package build options
+build_options="png"
+desc_option_png="Enable support for PNG images"
+
+# To build the package by default with the `png` option:
+#
+# build_options_default="png"
+
+...
+
+```
+
+The supported build options for a source package can be shown with `xbps-src`:
+
+    $ ./xbps-src show-options foo
+
+Build options can be enabled with the `-o` flag of `xbps-src`:
+
+    $ ./xbps-src -o option,option1 <cmd> foo
+
+Build options can be disabled by prefixing them with `~`:
+
+    $ ./xbps-src -o ~option,~option1 <cmd> foo
+
+Both ways can be used together to enable and/or disable multiple options
+at the same time with `xbps-src`:
+
+    $ ./xbps-src -o option,~option1,~option2 <cmd> foo
+
+The build options can also be shown for binary packages via `xbps-query(8)`:
+
+    $ xbps-query -R --property=build-options foo
+
+Permanent global package build options can be set via `XBPS_PKG_OPTIONS` variable in the
+`etc/conf` configuration file. Per package build options can be set via
+`XBPS_PKG_OPTIONS_<pkgname>`.
+
+> NOTE: if `pkgname` contains `dashes`, those should be replaced by `underscores`
+Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
+
+The list of supported package build options and its description is defined in the
+`common/options.description` file.
+
+<a id="deps_runtime"></a>
+#### Runtime dependencies
+
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-packages/common` directory
+sets up the `<SONAME> <pkgname>>=<version>` mappings.
+
+For example the `foo-1.0_1` package provides the `libfoo.so.1` SONAME and
+software requiring this library will link to `libfoo`; the resulting binary
+package will have a run-time dependency to `foo>=1.0_1` package as specified in
+`common/shlibs`:
+
+```
+# common/shlibs
+...
+libfoo.so.1 foo-1.0_1
+...
+```
+
+- The first field specifies the SONAME.
+- The second field specified the package name and minimal version required.
+- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/default.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/default.virtual` provide more
+information on this map.
+
+<a id="install_remove_files"></a>
+### INSTALL and REMOVE files
+
+The INSTALL and REMOVE shell snippets can be used to execute certain actions at a specified
+stage when a binary package is installed, updated or removed. There are some variables
+that are always set by `xbps` when the scripts are executed:
+
+- `$ACTION`: to conditionalize its actions: `pre` or `post`.
+- `$PKGNAME`: the package name.
+- `$VERSION`: the package version.
+- `$UPDATE`: set to `yes` if package is being upgraded, `no` if package is being `installed` or `removed`.
+- `$CONF_FILE`: full path to `xbps.conf`.
+- `$ARCH`: the target architecture it is running on.
+
+An example of how an `INSTALL` or `REMOVE` script shall be created is shown below:
+
+```
+# INSTALL
+case "$ACTION" in
+pre)
+	# Actions to execute before the package files are unpacked.
+	...
+	;;
+post)
+	if [ "$UPDATE" = "yes" ]; then
+		# actions to execute if package is being updated.
+		...
+	else
+		# actions to execute if package is being installed.
+		...
+	fi
+	;;
+esac
+```
+
+subpackages can also have their own `INSTALL` and `REMOVE` files, simply create them
+as `srcpkgs/<pkgname>/<subpkg>.INSTALL` or `srcpkgs/<pkgname>/<subpkg>.REMOVE` respectively.
+
+> NOTE: always use paths relative to the current working directory, otherwise if the scripts cannot
+be executed via `chroot(2)` won't work correctly.
+
+> NOTE: do not use INSTALL/REMOVE scripts to print messages, see the next section for
+more information.
+
+<a id="install_remove_files_msg"></a>
+### INSTALL.msg and REMOVE.msg files
+
+The `INSTALL.msg` and `REMOVE.msg` files can be used to print a message at post-install
+or pre-remove time, respectively.
+
+Ideally those files should not exceed 80 chars per line.
+
+subpackages can also have their own `INSTALL.msg` and `REMOVE.msg` files, simply create them
+as `srcpkgs/<pkgname>/<subpkg>.INSTALL.msg` or `srcpkgs/<pkgname>/<subpkg>.REMOVE.msg` respectively.
+
+<a id="runtime_account_creation"></a>
+### Creating system accounts/groups at runtime
+
+There's a trigger along with some variables that are specifically to create
+**system users and groups** when the binary package is being configured.
+The following variables can be used for this purpose:
+
+- `system_groups` This specifies the names of the new *system groups* to be created, separated
+by blanks. Optionally the **gid** can be specified by delimiting it with a
+colon, i.e `system_groups="_mygroup:78"` or `system_groups="_foo _blah:8000"`.
+
+- `system_accounts` This specifies the names of the new **system users/groups** to be created,
+separated by blanks, i.e `system_accounts="_foo _blah:22"`. Optionally the **uid** and **gid**
+can be specified by delimiting it with a colon, i.e `system_accounts="_foo:48"`.
+Additional variables for the **system accounts** can be specified to change its behavior:
+
+	- `<account>_homedir` the home directory for the user. If unset defaults to `/var/empty`.
+	- `<account>_shell` the shell for the new user. If unset defaults to `/sbin/nologin`.
+	- `<account>_descr` the description for the new user. If unset defaults to `<account> unprivileged user`.
+	- `<account>_groups` additional groups to be added to for the new user.
+	- `<account>_pgroup` to set the primary group, by default primary group is set to `<account>`.
+
+The **system user** is created by using a dynamically allocated **uid/gid** in your system
+and it's created as a `system account`, unless the **uid** is set. A new group will be created for the
+specified `system account` and used exclusively for this purpose.
+
+System accounts and groups must be prefixed with an underscore to prevent clashing with names of user
+accounts.
+
+> NOTE: The underscore policy does not apply to old packages, due to the inevitable breakage of
+> changing the username only new packages should follow it.
+
+<a id="writing_runit_services"></a>
+### Writing runit services
+
+Void Linux uses [runit](http://smarden.org/runit/) for booting and supervision of services.
+
+Most information about how to write them can be found in their
+[FAQ](http://smarden.org/runit/faq.html#create). The following are guidelines specific to
+Void Linux on how to write services.
+
+If the service daemon supports CLI flags, consider adding support for changing it via the
+`OPTS` variable by reading a file called `conf` in the same directory as the daemon.
+
+```sh
+#!/bin/sh
+[ -r conf ] && . ./conf
+exec daemon ${OPTS:- --flag-enabled-by-default}
+```
+
+If the service requires the creation of a directory under `/run` or its link `/var/run`
+for storing runtime information (like Pidfiles) write it into the service file. It
+is advised to use `install` if you need to create it with specific permissions instead
+of `mkdir -p`.
+
+```sh
+#!/bin/sh
+install -d -m0700 /run/foo
+exec foo
+```
+
+```sh
+#!/bin/sh
+install -d -m0700 -o bar -g bar /run/bar
+exec bar
+```
+
+If the service requires directories in parts of the system that are not generally in
+temporary filesystems. Then use the `make_dirs` variable in the template to create
+those directories when the package is installed.
+
+<a id="32bit_pkgs"></a>
+### 32bit packages
+
+32bit packages are built automatically when the builder is x86 (32bit), but
+there are some variables that can change the behavior:
+
+- `lib32depends` If this variable is set, dependencies listed here will be used rather than
+those detected automatically by `xbps-src` and **depends**. Please note that
+dependencies must be specified with version comparators, Example:
+`lib32depends="foo>=0 blah<2.0"`.
+
+- `lib32disabled` If this variable is set, no 32bit package will be built.
+
+- `lib32files` Additional files to be added to the **32bit** package. This expect absolute
+paths separated by blanks, Example: `lib32files="/usr/bin/blah /usr/include/blah."`.
+
+- `lib32symlinks` Makes a symlink of the target filename stored in the `lib32` directory.
+This expects the basename of the target file, Example: `lib32symlinks="foo"`.
+
+- `lib32mode` If unset, only shared/static libraries and pkg-config files will be copied to the
+**32bit** package. If set to `full` all files will be copied to the 32bit package, unmodified.
+
+<a id="pkgs_sub"></a>
+### Subpackages
+
+In the example shown above just a binary package is generated, but with some
+simple tweaks multiple binary packages can be generated from a single
+template/build, this is called `subpackages`.
+
+To create additional `subpackages` the `template` must define a new function
+with this naming: `<subpkgname>_package()`, Example:
+
+```
+# Template file for 'foo'
+pkgname=foo
+version=1.0
+revision=1
+build_style=gnu-configure
+short_desc="A short description max 72 chars"
+maintainer="name <email>"
+license="GPL-3.0-or-later"
+homepage="http://www.foo.org"
+distfiles="http://www.foo.org/foo-${version}.tar.gz"
+checksum="fea0a94d4b605894f3e2d5572e3f96e4413bcad3a085aae7367c2cf07908b2ff"
+
+# foo-devel is a subpkg
+foo-devel_package() {
+	short_desc+=" - development files"
+	depends="${sourcepkg}>=${version}_${revision}"
+	pkg_install() {
+		vmove usr/include
+		vmove "usr/lib/*.a"
+		vmove "usr/lib/*.so"
+		vmove usr/lib/pkgconfig
+	}
+}
+```
+
+All subpackages need an additional symlink to the `main` pkg, otherwise dependencies
+requiring those packages won't find its `template` Example:
+
+```
+ /srcpkgs
+  |- foo <- directory (main pkg)
+  |  |- template
+  |- foo-devel <- symlink to `foo`
+```
+
+The main package should specify all required `build dependencies` to be able to build
+all subpackages defined in the template.
+
+An important point of `subpackages` is that they are processed after the main
+package has run its `install` phase. The `pkg_install()` function specified on them
+commonly is used to move files from the `main` package destdir to the `subpackage` destdir.
+
+The helper functions `vinstall`, `vmkdir`, `vcopy` and `vmove` are just wrappers that simplify
+the process of creating, copying and moving files/directories between the `main` package
+destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
+
+Subpackages are processed always in alphabetical order; To force a custom order,
+the `subpackages` variable can be declared with the wanted order.
+
+<a id="pkgs_development"></a>
+### Development packages
+
+A development package, commonly generated as a subpackage, shall only contain
+files required for development, that is, headers, static libraries, shared
+library symlinks, pkg-config files, API documentation or any other script
+that is only useful when developing for the target software.
+
+A development package should depend on packages that are required to link
+against the provided shared libraries, i.e if `libfoo` provides the
+`libfoo.so.2` shared library and the linking needs `-lbar`, the package
+providing the `libbar` shared library should be added as a dependency;
+and most likely it shall depend on its development package.
+
+If a development package provides a `pkg-config` file, you should verify
+what dependencies the package needs for dynamic or static linking, and add
+the appropriate `development` packages as dependencies.
+
+Development packages for the C and C++ languages usually `vmove` the
+following subset of files from the main package:
+
+* Header files `usr/include`
+* Static libraries `usr/lib/*.a`
+* Shared library symbolic links `usr/lib/*.so`
+* Cmake rules `usr/lib/cmake` `usr/share/cmake`
+* Package config files `usr/lib/pkgconfig` `usr/share/pkgconfig`
+* Autoconf macros `usr/share/aclocal`
+* Gobject introspection XML files `usr/share/gir-1.0`
+* Vala bindings `usr/share/vala`
+
+<a id="pkgs_data"></a>
+### Data packages
+
+Another common subpackage type is the `-data` subpackage. This subpackage
+type used to split architecture independent, big(ger) or huge amounts
+of data from a package's main and architecture dependent part. It is up
+to you to decide, if a `-data` subpackage makes sense for your package.
+This type is common for games (graphics, sound and music), part libraries (CAD)
+or card material (maps).
+The main package must then have `depends="${pkgname}-data-${version}_${revision}"`,
+possibly in addition to other, non-automatic depends.
+
+<a id="pkgs_documentation"></a>
+### Documentation packages
+
+Packages intended for user interaction do not always unconditionally require
+their documentation part. A user who does not want to e.g. develop
+with Qt5 will not need to install the (huge) qt5-doc package.
+An expert may not need it or opt to use an online version.
+
+In general a `-doc` package is useful, if the main package can be used both with
+or without documentation and the size of the documentation isn't really small.
+The base package and the `-devel` subpackage should be kept small so that when
+building packages depending on a specific package there is no need to install large
+amounts of documentation for no reason. Thus the size of the documentation part should
+be your guidance to decide whether or not to split off a `-doc` subpackage.
+
+<a id="pkgs_python"></a>
+### Python packages
+
+Python packages should be built with the `python{,2,3}-module` build style, if possible.
+This sets some environment variables required to allow cross compilation. Support to allow
+building a python module for multiple versions from a single template is also possible.
+The `python3-pep517` build style provides means to build python packages that provide a build-system
+definition compliant with [PEP 517](https://www.python.org/dev/peps/pep-0517/) without a traditional
+`setup.py` script. The `python3-pep517` build style does not provide a specific build backend, so
+packages will need to add an appropriate backend provider to `hostmakedepends`.
+
+Python packages that rely on `python3-setuptools` should generally map `setup_requires`
+dependencies in `setup.py` to `hostmakedepends` in the template and `install_requires`
+dependencies to `depends` in the template; include `python3` in `depends` if there are no other
+python dependencies. If the package includes a compiled extension, the `python3-devel` packages
+should be added to `makedepends`, as should any python packages that also provide native libraries
+against which the extension will be linked (even if that package is also included in
+`hostmakedepends` to satisfy `setuptools`).
+
+**NB**: Python `setuptools` will attempt to use `pip` or `EasyInstall` to fetch any missing
+dependencies at build time. If you notice warnings about `EasyInstall` deprecation or python eggs
+present in `${wrksrc}/.eggs` after building the package, then those packages should be added to
+`hostmakedepends`.
+
+The following variables may influence how the python packages are built and configured
+at post-install time:
+
+- `pycompile_module`: By default, files and directories installed into
+`usr/lib/pythonX.X/site-packages`, excluding `*-info` and `*.so`, are byte-compiled
+at install time as python modules.  This variable expects subset of them that
+should be byte-compiled, if default is wrong.  Multiple python modules may be specified separated
+by blanks, Example: `pycompile_module="foo blah"`. If a python module installs a file into
+`site-packages` rather than a directory, use the name of the file, Example:
+`pycompile_module="fnord.py"`.
+
+- `pycompile_dirs`: this variable expects the python directories that should be `byte-compiled`
+recursively by the target python version. This differs from `pycompile_module` in that any
+path may be specified, Example: `pycompile_dirs="usr/share/foo"`.
+
+- `python_version`: this variable expects the supported Python major version.
+By default it's set to `2`. This variable is needed for multi-language
+applications (e.g., the application is written in C while the command is
+written in Python) or just single Python file ones that live in `/usr/bin`.
+
+> NOTE: you need to define it *only* for non-Python modules.
+
+Also, a set of useful variables are defined to use in the templates:
+
+| Variable    | Value                            |
+|-------------|----------------------------------|
+| py2_ver     | 2.X                              |
+| py2_lib     | usr/lib/python2.X                |
+| py2_sitelib | usr/lib/python2.X/site-packages  |
+| py2_inc     | usr/include/python2.X            |
+| py3_ver     | 3.X                              |
+| py3_lib     | usr/lib/python3.X                |
+| py3_sitelib | usr/lib/python3.X/site-packages  |
+| py3_inc     | usr/include/python3.Xm           |
+
+> NOTE: it's expected that additional subpkgs must be generated to allow packaging for multiple
+python versions.
+
+<a id="pkgs_go"></a>
+### Go packages
+
+Go packages should be built with the `go` build style, if possible.
+The `go` build style takes care of downloading Go dependencies and
+setting up cross compilation.
+
+The following template variables influence how Go packages are built:
+
+- `go_import_path`: The import path of the package included in the
+  distfile, as it would be used with `go get`. For example, GitHub's
+  `hub` program has the import path `github.com/github/hub`. This
+  variable is required.
+- `go_package`: A space-separated list of import paths of the packages
+  that should be built. Defaults to `go_import_path`.
+- `go_build_tags`: An optional, space-separated list of build tags to
+  pass to Go.
+- `go_mod_mode`: The module download mode to use. May be `off` to ignore
+  any go.mod files, `default` to use Go's default behavior, or anything
+  accepted by `go build -mod MODE`.  Defaults to `vendor` if there's
+  a vendor directory, otherwise `default`.
+
+The following environment variables influence how Go packages are built:
+
+- `XBPS_MAKEJOBS`: Value passed to the `-p` flag of `go install`, to
+  control the parallelism of the Go compiler.
+
+Occasionally it is necessary to perform operations from within the Go
+source tree.  This is usually needed by programs using go-bindata or
+otherwise preping some assets.  If possible do this in pre_build().
+The path to the package's source inside `$GOPATH` is available as
+`$GOSRCPATH`.
+
+<a id="pkgs_haskell"></a>
+### Haskell packages
+
+We build Haskell package using `stack` from
+[Stackage](http://www.stackage.org/), generally the LTS versions.
+Haskell templates need to have host dependencies on `ghc` and `stack`,
+and set build style to `haskell-stack`.
+
+The following variables influence how Haskell packages are built:
+
+- `stackage`: The Stackage version used to build the package, e.g.
+  `lts-3.5`. Alternatively:
+  - You can prepare a `stack.yaml` configuration for the project and put it
+    into `files/stack.yaml`.
+  - If a `stack.yaml` file is present in the source files, it will be used
+- `make_build_args`: This is passed as-is to `stack build ...`, so
+  you can add your `--flag ...` parameters there.
+
+<a id="pkgs_font"></a>
+### Font packages
+
+Font packages are very straightforward to write, they are always set with the
+following variables:
+
+- `depends="font-util"`: because they are required for regenerating the font
+cache during the install/removal of the package
+- `font_dirs`: which should be set to the directory where the package
+installs its fonts
+
+<a id="pkg_rename"></a>
+### Renaming a package
+
+- Create empty package of old name, depending on new package. This is
+necessary to provide updates to systems where old package is already
+installed. This should be a subpackage of new one, except when version
+number of new package decreased: then create a separate template using
+old version and increased revision.
+- Edit references to package in other templates and common/shlibs.
+- Don't set `replaces=`, it can result in removing both packages from
+systems by xbps.
+
+<a id="pkg_remove"></a>
+### Removing a package
+
+Follows a list of things that should be done to help guarantee that a
+package template removal and by extension its binary packages from
+Void Linux's repositories goes smoothly.
+
+Before removing a package template:
+
+- Guarantee that no package depends on it or any of its subpackages.
+For that you can search the templates for references to the package
+with `grep -r '\bpkg\b' srcpkgs/`.
+- Guarantee that no package depends on shlibs provided by it.
+
+When removing the package template:
+
+- Remove all symlinks that point to the package.
+`find srcpkgs/ -lname <pkg>` should be enough.
+- If the package provides shlibs make sure to remove them from
+common/shlibs.
+- Some packages use patches and files from other packages using symlinks,
+generally those packages are the same but have been split as to avoid
+cyclic dependencies. Make sure that the package you're removing is not
+the source of those patches/files.
+- Remove package template.
+- Add `pkgname<=version_revision` to `replaces` variable of `removed-packages`
+template.  All removed subpkgs should be added too.
+This will uninstall package from systems where it is installed.
+- Remove the package from the repository index
+or contact a team member that can do so.
+
+<a id="xbps_triggers"></a>
+### XBPS Triggers
+
+XBPS triggers are a collection of snippets of code, provided by the `xbps-triggers`
+package, that are added to the INSTALL/REMOVE scripts of packages either manually
+by setting the `triggers` variable in the template, or automatically, when specific
+conditions are met.
+
+The following is a list of all available triggers, their current status, what each
+of them does and what conditions need to be for it to be included automatically on a
+package.
+
+This is not a complete overview of the package. It is recommended to read the variables
+referenced and the triggers themselves.
+
+<a id="triggers_appstream_cache"></a>
+#### appstream-cache
+
+The appstream-cache trigger is responsible for rebuilding the appstream metadata cache.
+
+During installation it executes `appstreamcli refresh-cache --verbose --force --datapath
+$APPSTREAM_PATHS --cachepath var/cache/app-info/gv`. By default APPSTREAM_PATHS are all the
+paths that appstreamcli will look into for metadata files.
+
+The directories searched by appstreamcli are:
+
+- `usr/share/appdata`
+- `usr/share/app-info`
+- `var/lib/app-info`
+- `var/cache/app-info`
+
+During removal of the `AppStream` package it will remove the `var/cache/app-info/gv`
+directory.
+
+It is automatically added to packages that have XML files under one of the directories
+searched by appstreamcli.
+
+<a id="triggers_binfmts"></a>
+#### binfmts
+
+The binfmts trigger is responsible for registration and removal of arbitrary
+executable binary formats, know as binfmts.
+
+During installation/removal it uses `update-binfmts` from the `binfmt-support` package
+to register/remove entries from the arbitrary executable binary formats database.
+
+To include the trigger use the `binfmts` variable, as the trigger won't do anything unless
+it is defined.
+
+<a id="triggers_dkms"></a>
+#### dkms
+
+The dkms trigger is responsible for compiling and removing dynamic kernel modules of a
+package.
+
+During installation the trigger compiles and installs the dynamic module for all `linux`
+packages that have their corresponding linux-headers package installed. During removal
+the corresponding module will be removed
+
+To include the trigger use the `dkms_modules` variable, as the trigger won't do anything
+unless it is defined.
+
+<a id="triggers_gconf_schemas"></a>
+#### gconf-schemas
+
+The gconf-schemas trigger is responsible for registering and removing .schemas and
+.entries files into the schemas database directory
+
+During installation it uses `gconftool-2` to install .schemas and .entries files into
+`usr/share/gconf/schemas`. During removal it uses `gconftool-2` to remove the entries
+and schemas belonging to the package that is being removed from the database.
+
+To include it add `gconf-schemas` to `triggers` and add the appropriate .schemas in
+the `gconf_schemas` variable and .entries in `gconf_entries`.
+
+It is automatically added to packages that have `/usr/share/gconf/schemas` present
+as a directory. All files with the schemas file extension under that directory
+are passed to the trigger.
+
+<a id="triggers_gdk_pixbuf_loaders"></a>
+#### gdk-pixbuf-loaders
+
+The gdk-pixbuf-loaders trigger is responsible for maintaining the GDK Pixbuf loaders cache.
+
+During installation it runs `gdk-pixbuf-query-loaders --update-cache` and also deletes
+the obsolete `etc/gtk-2.0/gdk-pixbuf.loaders` file if present. During removal of the
+gdk-pixbuf package it removes the cache file if present. Normally at
+`usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache`.
+
+It can be added by defining `gdk-pixbuf-loaders` in the `triggers` variable. It is also
+added automatically to any package that has the path `usr/lib/gdk-pixbuf-2.0/2.10.0/loaders`
+available as a directory.
+
+<a id="triggers_gio_modules"></a>
+#### gio-modules
+
+The gio-modules trigger is responsible for updating the Glib GIO module cache with
+`gio-querymodules` from the `glib` package
+
+During install and removal it just runs `gio-querymodules` to update the cache file
+present under `usr/lib/gio/modules`.
+
+It is automatically added to packages that have `/usr/lib/gio/modules` present
+as a directory.
+
+<a id="triggers_gsettings_schemas"></a>
+#### gsettings-schemas
+
+The gsettings-schemas trigger is responsible for compiling Glib's GSettings XML
+schema files during installation and removing the compiled files during removal.
+
+During installation it uses `glib-compile-schemas` from `glib` to compile the
+schemas into files with the suffix .compiled into `/usr/share/glib-2.0/schemas`.
+
+During removal of the glib package it deletes all files inside
+`/usr/share/glib-2.0/schemas` that end with .compiled.
+
+It is automatically added to packages that have `/usr/share/glib-2.0/schemas` present
+as a directory.
+
+<a id="triggers_gtk_icon_cache"></a>
+#### gtk-icon-cache
+
+The gtk-icon-cache trigger is responsible for updating the gtk+ icon cache.
+
+During installation it uses `gtk-update-icon-cache` to update the icon cache.
+
+During removal of the gtk+ package it deletes the `icon-theme.cache` file
+in the directories defined by the variable `gtk_iconcache_dirs`.
+
+It is automatically added on packages that have `/usr/share/icons` available
+as a directory, all directories under that directory have their absolute path
+passed to the trigger.
+
+<a id="triggers_gtk_immodules"></a>
+#### gtk-immodules
+
+The gtk-immodules trigger is responsible for updating the IM (Input Method) modules
+file for gtk+.
+
+During installation it uses `gtk-query-immodules-2.0 --update-cache` to update the
+cache file. It also removes the obsolete configuration file  `etc/gtk-2.0/gtk.immodules`
+if present.
+
+During removal of the `gtk+` package it removes the cache file which is located at
+`usr/lib/gtk-2.0/2.10.0/immodules.cache`.
+
+It is automatically added to packages that have `/usr/lib/gtk-2.0/2.10.0/immodules`
+present as a directory.
+
+<a id="triggers_gtk_pixbuf_loaders"></a>
+#### gtk-pixbuf-loaders
+
+gtk-pixbuf-loaders is the old name for the current `gdk-pixbuf-loaders` trigger and is
+in the process of being removed. It currently re-execs into `gdk-pixbuf-loaders` as a
+compatibility measure.
+
+For information about how it works refer to [gdk-pixbuf-loaders](#triggers_gdk_pixbuf_loaders).
+
+<a id="triggers_gtk3_immodules"></a>
+#### gtk3-immodules
+
+The gtk3-immodules trigger is responsible for updating the IM (Input Method) modules
+file for gtk+3.
+
+During installation it executes `gtk-query-immodules-3.0 --update-cache` to update the
+cache file. It also removes the obsolete configuration file  `etc/gtk-3.0/gtk.immodules`
+if present.
+
+During removal of the `gtk+3` package it removes the cache file which is located at
+`usr/lib/gtk-3.0/3.0.0/immodules.cache`.
+
+It is automatically added to packages that have `/usr/lib/gtk-3.0/3.0.0/immodules`
+present as a directory.
+
+<a id="triggers_hwdb.d_dir"></a>
+#### hwdb.d-dir
+
+The hwdb.d-dir trigger is responsible for updating the hardware database.
+
+During installation and removal it runs `usr/bin/udevadm hwdb --root=. --update`.
+
+It is automatically added to packages that have `/usr/lib/udev/hwdb.d` present
+as a directory.
+
+<a id="triggers_info_files"></a>
+#### info-files
+
+The info-files trigger is responsible for registering and unregistering the GNU info
+files of a package.
+
+It checks the existence of the info files presented to it and if it is running under
+another architecture.
+
+During installation it uses `install-info` to register info files into
+`usr/share/info`.
+
+During removal it uses `install-info --delete` to remove the info files from the
+registry located at `usr/share/info`.
+
+If it is running under another architecture it tries to use the host's `install-info`
+utility.
+
+<a id="triggers_initramfs_regenerate"></a>
+### initramfs-regenerate
+
+The initramfs-regenerate trigger will trigger the regeneration of all kernel
+initramfs images after package installation or removal. The trigger must be
+manually requested.
+
+This hook is probably most useful for DKMS packages because it will provide a
+means to include newly compiled kernel modules in initramfs images for all
+currently available kernels. When used in a DKMS package, it is recommended to
+manually include the `dkms` trigger *before* the `initramfs-regenerate` trigger
+using, for example,
+
+    ```
+    triggers="dkms initramfs-regenerate"
+    ```
+
+Although `xbps-src` will automatically include the `dkms` trigger whenever
+`dkms_modules` is installed, the automatic addition will come *after*
+`initramfs-regenerate`, which will cause initramfs images to be recreated
+before the modules are compiled.
+
+By default, the trigger uses `dracut --regenerate-all` to recreate initramfs
+images. If `/etc/default/initramfs-regenerate` exists and defines
+`INITRAMFS_GENERATOR=mkinitcpio`, the trigger will instead use `mkinitcpio` and
+loop over all kernel versions for which modules appear to be installed.
+Alternatively, setting `INITRAMFS_GENERATOR=none` will disable image
+regeneration entirely.
+
+<a id="triggers_kernel_hooks"></a>
+#### kernel-hooks
+
+The kernel-hooks trigger is responsible for running scripts during installation/removal
+of kernel packages.
+
+The available targets are pre-install, pre-remove, post-install and post-remove.
+
+When run it will try to run all executables found under `etc/kernel.d/$TARGET`. The
+`TARGET` variable is one of the 4 targets available for the trigger. It will also
+create the directory if it isn't present.
+
+During updates it won't try to run any executables when running with the pre-remove
+target.
+
+It is automatically added if the helper variable `kernel_hooks_version` is defined.
+However it is not obligatory to have it defined.
+
+<a id="triggers_mimedb"></a>
+#### mimedb
+
+The mimedb trigger is responsible for updating the shared-mime-info database.
+
+In all runs it will just execute `update-mime-database -n usr/share/mime`.
+
+It is automatically added to packages that have `/usr/share/mime` available as
+a directory.
+
+<a id="triggers_mkdirs"></a>
+#### mkdirs
+
+The mkdirs trigger is responsible for creating and removing directories dictated
+by the `make_dirs` variable.
+
+During installation it takes the `make_dirs` variable and splits it into groups of
+4 variables.
+
+- dir = full path to the directory
+- mode = Unix permissions for the directory
+- uid = name of the owning user
+- gid = name of the owning group
+
+It will continue to split the values of `make_dirs` into groups of 4 until the values
+end.
+
+During installation it will create a directory with `dir` then set mode with `mode`
+and permission with `uid:gid`.
+
+During removal it will delete the directory using `rmdir`.
+
+To include this trigger use the `make_dirs` variable, as the trigger won't do anything
+unless it is defined.
+
+<a id="triggers_pango_module"></a>
+#### pango-modules
+
+The pango-modules trigger is currently being removed since upstream has removed the
+code responsible for it.
+
+It used to update the pango modules file with `pango-modulesquery` during installation
+of any package.
+
+Currently it removes `etc/pango/pango.modules` file during removal of the pango package.
+
+It can be added by defining `pango-modules` in the `triggers` variable and has no way to get
+added automatically to a package.
+
+<a id="triggers_pycompile"></a>
+#### pycompile
+
+The pycompile trigger is responsible for compiling python code into native
+bytecode and removing generated bytecode.
+
+During installation it will compile all python code under the paths it is given by
+`pycompile_dirs` and all modules described in `pycompile_module` into native bytecode and
+update the ldconfig(8) cache.
+
+During removal it will remove all the native bytecode and update the ldconfig(8) cache.
+
+To include this trigger use the variables `pycompile_dirs` and `pycompile_module`. The
+trigger won't do anything unless at least one of those variables is defined.
+
+A `python_version` variable can be set to direct behaviour of the trigger.
+
+<a id="triggers_register_shell"></a>
+#### register-shell
+
+The register-shell trigger is responsible for registering and removing shell entries
+into `etc/shells`.
+
+During installation it will append the `etc/shells` file with the new shell and also
+change the permissions to `644` on the file.
+
+During removal it will use `sed` to delete the shell from the file.
+
+To include this trigger use the `register_shell` variable, as the trigger won't do
+anything unless it is defined.
+
+<a id="triggers_system_accounts"></a>
+#### system-accounts
+
+The system-accounts trigger is responsible for creating and disabling system accounts
+and groups.
+
+During removal it will disable the account by setting the Shell to /bin/false,
+Home to /var/empty, and appending ' - for uninstalled package $pkgname' to the
+Description.
+Example: `transmission unprivileged user - for uninstalled package transmission`
+
+This trigger can only be used by using the `system_accounts` variable.
+
+<a id="triggers_texmf_dist"></a>
+#### texmf-dist
+
+The texmf-dist trigger is responsible for regenerating TeXLive's texmf databases.
+
+During both installation and removal, it regenerates both the texhash and format
+databases using `texhash` and `fmtutil-sys`, to add or remove any new hashes or
+formats.
+
+It runs on every package that changes /usr/share/texmf-dist. This is likely overkill,
+but it is much cleaner rather than checking each format directory and each directory
+that is hashed. In addition, it is very likely any package touching /usr/share/texmf-dist
+requires one of these triggers anyway.
+
+<a id="triggers_update_desktopdb"></a>
+#### update-desktopdb
+
+The update-desktopdb trigger is responsible for updating the system's MIME database.
+
+During installation it will execute `update-desktop-database usr/share/applications`
+which will result in a cache file being created at `usr/share/applications/mimeinfo.cache`.
+
+During removal of the `desktop-file-utils` package it will remove the cache file that
+was created during installation.
+
+It is automatically added to packages that have `/usr/share/applications` available as
+a directory.
+
+<a id="triggers_x11_fonts"></a>
+#### x11-fonts
+
+The x11-fonts trigger is responsible for rebuilding the fonts.dir and fonts.scale files
+for packages that install X11 fonts, and update fontconfig's cache for these fonts.
+
+During installation and removal it executes `mkfontdir`, `mkfontscale` and `fc-cache` for
+all font directories it was given via the `font_dirs` variable.
+
+To include this trigger use the `font_dirs` variable, as the trigger won't do anything
+unless it is defined.
+
+<a id="triggers_xml_catalog"></a>
+#### xml-catalog
+
+The xml-catalog trigger is responsible for registering and removing SGML/XML catalog entries.
+
+During installation it uses `xmlcatmgr` to register all catalogs, passed to it by the
+`sgml_entries` and `xml_entries` variables, in `usr/share/sgml/catalog` and
+`usr/share/xml/catalog` respectively.
+
+During removal it uses `xmlcatmgr` to remove all catalogs passed to it by the
+`sgml_entries` and `xml_entries` variables, in `usr/share/sgml/catalog` and
+`usr/share/xml/catalog` respectively.
+
+To include this trigger use the `sgml_entries` variable or/and the `xml_entries` variable,
+as the trigger won't do anything unless either of them are defined.
+
+<a id="documentation"></a>
+### Void specific documentation
+
+When you want document details of package's configuration and usage specific to Void Linux,
+not covered by upstream documentation, put notes into
+`srcpkgs/<pkgname>/files/README.voidlinux` and install with
+`vdoc "${FILESDIR}/README.voidlinux"`.
+
+<a id="notes"></a>
+### Notes
+
+- Make sure that all software is configured to use the `/usr` prefix.
+
+- Binaries should always be installed at `/usr/bin`.
+
+- Manual pages should always be installed at `/usr/share/man`.
+
+- If a software provides **shared libraries** and headers, probably you should
+create a `development package` that contains `headers`, `static libraries`
+and other files required for development (not required at runtime).
+
+- If you are updating a package please be careful with SONAME bumps, check
+the installed files (`./xbps-src show-files pkg`) before pushing new updates.
+
+- Make sure that binaries are not stripped by the software, let xbps-src do this;
+otherwise the `debug` packages won't have debugging symbols.
+
+<a id="contributing"></a>
+### Contributing via git
+
+To get started, [fork](https://help.github.com/articles/fork-a-repo) the void-linux `void-packages` git repository on GitHub and clone it:
+
+    $ git clone git@github.com:<user>/void-packages.git
+
+See [CONTRIBUTING.md](./CONTRIBUTING.md) for information on how to format your
+commits and other tips for contributing.
+
+Once you've made changes to your `forked` repository, submit
+a github pull request.
+
+To keep your forked repository always up to date, setup the `upstream` remote
+to pull in new changes:
+
+    $ git remote add upstream https://github.com/void-linux/void-packages.git
+    $ git pull --rebase upstream master
+
+<a id="help"></a>
+## Help
+
+If after reading this `manual` you still need some kind of help, please join
+us at `#xbps` via IRC at `irc.libera.chat`.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7047a95
--- /dev/null
+++ b/README.md
@@ -0,0 +1,507 @@
+## The XBPS source packages collection
+
+This repository contains the XBPS source packages collection to build binary packages
+for the Void Linux distribution.
+
+The included `xbps-src` script will fetch and compile the sources, and install its
+files into a `fake destdir` to generate XBPS binary packages that can be installed
+or queried through the `xbps-install(1)` and `xbps-query(1)` utilities, respectively.
+
+See [Contributing](./CONTRIBUTING.md) for a general overview of how to contribute and the
+[Manual](./Manual.md) for details of how to create source packages.
+
+### Table of Contents
+
+- [Requirements](#requirements)
+- [Quick start](#quick-start)
+- [chroot methods](#chroot-methods)
+- [Install the bootstrap packages](#install-bootstrap)
+- [Configuration](#configuration)
+- [Directory hierarchy](#directory-hierarchy)
+- [Building packages](#building-packages)
+- [Package build options](#build-options)
+- [Sharing and signing your local repositories](#sharing-and-signing)
+- [Rebuilding and overwriting existing local packages](#rebuilding)
+- [Enabling distcc for distributed compilation](#distcc)
+- [Distfiles mirrors](#distfiles-mirrors)
+- [Cross compiling packages for a target architecture](#cross-compiling)
+- [Using xbps-src in a foreign Linux distribution](#foreign)
+- [Remaking the masterdir](#remaking-masterdir)
+- [Keeping your masterdir uptodate](#updating-masterdir)
+- [Building 32bit packages on x86_64](#building-32bit)
+- [Building packages natively for the musl C library](#building-for-musl)
+- [Building void base-system from scratch](#building-base-system)
+
+### Requirements
+
+- GNU bash
+- xbps >= 0.56
+- git(1) - unless configured to not, see etc/defaults.conf
+- common POSIX utilities included by default in almost all UNIX systems
+- curl(1) - required by `xbps-src update-check`
+
+For bootstrapping additionally:
+- flock(1) - util-linux
+- bsdtar or GNU tar (in that order of preference)
+- install(1) - GNU coreutils
+- objcopy(1), objdump(1), strip(1): binutils
+
+`xbps-src` requires [a utility to chroot](#chroot-methods) and bind mount existing directories
+into a `masterdir` that is used as its main `chroot` directory. `xbps-src` supports
+multiple utilities to accomplish this task.
+
+> NOTE: `xbps-src` does not allow building as root anymore. Use one of the chroot
+methods.
+
+<a name="quick-start"></a>
+### Quick start
+
+Clone the `void-packages` git repository and install the bootstrap packages:
+
+```
+$ git clone https://github.com/void-linux/void-packages.git
+$ cd void-packages
+$ ./xbps-src binary-bootstrap
+```
+
+Build a package by specifying the `pkg` target and the package name:
+
+```
+$ ./xbps-src pkg <package_name>
+```
+
+Use `./xbps-src -h` to list all available targets and options.
+
+To build packages marked as 'restricted', modify `etc/conf`:
+
+```
+$ echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf
+```
+
+Once built, the package will be available in `hostdir/binpkgs` or an appropriate subdirectory (e.g. `hostdir/binpkgs/nonfree`). To install the package:
+
+```
+# xbps-install --repository hostdir/binpkgs <package_name>
+```
+
+Alternatively, packages can be installed with the `xi` utility, from the `xtools` package. `xi` takes the repository of the current working directory into account.
+
+```
+# xi <package_name>
+```
+
+<a name="chroot-methods"></a>
+### chroot methods
+
+#### xbps-uunshare(1) (default)
+
+XBPS utility that uses `user_namespaces(7)` (part of xbps, default without `-t` flag).
+
+This utility requires these Linux kernel options:
+
+- CONFIG\_NAMESPACES
+- CONFIG\_IPC\_NS
+- CONFIG\_UTS\_NS
+- CONFIG\_USER\_NS
+
+This is the default method, and if your system does not support any of the required kernel
+options it will fail with `EINVAL (Invalid argument)`.
+
+#### xbps-uchroot(1)
+
+XBPS utility that uses `namespaces` and must be `setgid` (part of xbps).
+
+> NOTE: This is the only method that implements functionality of `xbps-src -t`, therefore the
+flag ignores the choice made in configuration files and enables `xbps-uchroot`.
+
+This utility requires these Linux kernel options:
+
+- CONFIG\_NAMESPACES
+- CONFIG\_IPC\_NS
+- CONFIG\_PID\_NS
+- CONFIG\_UTS\_NS
+
+Your user must be added to a special group to be able to use `xbps-uchroot(1)` and the
+executable must be `setgid`:
+
+    # chown root:<group> xbps-uchroot
+    # chmod 4750 xbps-uchroot
+    # usermod -a -G <group> <user>
+
+> NOTE: by default in void you shouldn't do this manually, your user must be a member of
+the `xbuilder` group.
+
+To enable it:
+
+    $ cd void-packages
+    $ echo XBPS_CHROOT_CMD=uchroot >> etc/conf
+
+If for some reason it's erroring out as `ERROR clone (Operation not permitted)`, check that
+your user is a member of the required `group` and that `xbps-uchroot(1)` utility has the
+proper permissions and owner/group as explained above.
+
+#### bwrap(1)
+
+bubblewrap, sandboxing tool for unprivileged users that uses
+user namespaces or setuid.
+See <https://github.com/containers/bubblewrap>.
+
+#### ethereal
+
+Destroys host system it runs on. Only useful for one-shot containers, i.e docker (used with CI).
+
+<a name="install-bootstrap"></a>
+### Install the bootstrap packages
+
+There is a set of packages that makes up the initial build container, called the `bootstrap`.
+These packages are installed into the `masterdir` in order to create the container.
+
+The primary and recommended way to set up this container is using the `binary-bootstrap`
+command. This will use pre-existing binary packages, either from remote `xbps` repositories
+or from your local repository.
+
+There is also the `bootstrap` command, which will build all necessary `bootstrap` packages from
+scratch. This is usually not recommended, since those packages are built using your host system's
+toolchain and are neither fully featured nor reproducible (your host system may influence the
+build) and thus should only be used as a stage 0 for bootstrapping new Void systems.
+
+If you still choose to use `bootstrap`, use the resulting stage 0 container to rebuild all
+`bootstrap` packages again, then use `binary-bootstrap` (stage 1) and rebuild the `bootstrap`
+packages once more (to gain stage 2, and then use `binary-bootstrap` again). Once you've done
+that, you will have a `bootstrap` set equivalent to using `binary-bootstrap` in the first place.
+
+Also keep in mind that a full source `bootstrap` is time consuming and will require having an
+assortment of utilities installed in your host system, such as `binutils`, `gcc`, `perl`,
+`texinfo` and others.
+
+### Configuration
+
+The `etc/defaults.conf` file contains the possible settings that can be overridden
+through the `etc/conf` configuration file for the `xbps-src` utility; if that file
+does not exist, will try to read configuration settings from `$XDG_CONFIG_HOME/xbps-src.conf`, `~/.config/xbps-src.conf`, `~/.xbps-src.conf`.
+
+If you want to customize default `CFLAGS`, `CXXFLAGS` and `LDFLAGS`, don't override
+those defined in `etc/defaults.conf`, set them on `etc/conf` instead i.e:
+
+    $ echo 'XBPS_CFLAGS="your flags here"' >> etc/conf
+    $ echo 'XBPS_LDFLAGS="your flags here"' >> etc/conf
+
+Native and cross compiler/linker flags are set per architecture in `common/build-profiles`
+and `common/cross-profiles` respectively. Ideally those settings are good enough by default,
+and there's no need to set your own unless you know what you are doing.
+
+#### Virtual packages
+
+The `etc/defaults.virtual` file contains the default replacements for virtual packages,
+used as dependencies in the source packages tree.
+
+If you want to customize those replacements, copy `etc/defaults.virtual` to `etc/virtual`
+and edit it accordingly to your needs.
+
+<a name="directory-hierarchy"></a>
+### Directory hierarchy
+
+The following directory hierarchy is used with a default configuration file:
+
+         /void-packages
+            |- common
+            |- etc
+            |- srcpkgs
+            |  |- xbps
+            |     |- template
+            |
+            |- hostdir
+            |  |- binpkgs ...
+            |  |- ccache ...
+            |  |- distcc-<arch> ...
+            |  |- repocache ...
+            |  |- sources ...
+            |
+            |- masterdir
+            |  |- builddir -> ...
+            |  |- destdir -> ...
+            |  |- host -> bind mounted from <hostdir>
+            |  |- void-packages -> bind mounted from <void-packages>
+
+
+The description of these directories is as follows:
+
+ - `masterdir`: master directory to be used as rootfs to build/install packages.
+ - `builddir`: to unpack package source tarballs and where packages are built.
+ - `destdir`: to install packages, aka **fake destdir**.
+ - `hostdir/ccache`: to store ccache data if the `XBPS_CCACHE` option is enabled.
+ - `hostdir/distcc-<arch>`: to store distcc data if the `XBPS_DISTCC` option is enabled.
+ - `hostdir/repocache`: to store binary packages from remote repositories.
+ - `hostdir/sources`: to store package sources.
+ - `hostdir/binpkgs`: local repository to store generated binary packages.
+
+<a name="building-packages"></a>
+### Building packages
+
+The simplest form of building package is accomplished by running the `pkg` target in `xbps-src`:
+
+```
+$ cd void-packages
+$ ./xbps-src pkg <pkgname>
+```
+
+When the package and its required dependencies are built, the binary packages will be created
+and registered in the default local repository at `hostdir/binpkgs`; the path to this local repository can be added to
+any xbps configuration file (see xbps.d(5)) or by explicitly appending them via cmdline, i.e:
+
+    $ xbps-install --repository=hostdir/binpkgs ...
+    $ xbps-query --repository=hostdir/binpkgs ...
+
+By default **xbps-src** will try to resolve package dependencies in this order:
+
+ - If a dependency exists in the local repository, use it (`hostdir/binpkgs`).
+ - If a dependency exists in a remote repository, use it.
+ - If a dependency exists in a source package, use it.
+
+It is possible to avoid using remote repositories completely by using the `-N` flag.
+
+> The default local repository may contain multiple *sub-repositories*: `debug`, `multilib`, etc.
+
+<a name="build-options"></a>
+### Package build options
+
+The supported build options for a source package can be shown with `xbps-src show-options`:
+
+    $ ./xbps-src show-options foo
+
+Build options can be enabled with the `-o` flag of `xbps-src`:
+
+    $ ./xbps-src -o option,option1 pkg foo
+
+Build options can be disabled by prefixing them with `~`:
+
+    $ ./xbps-src -o ~option,~option1 pkg foo
+
+Both ways can be used together to enable and/or disable multiple options
+at the same time with `xbps-src`:
+
+    $ ./xbps-src -o option,~option1,~option2 pkg foo
+
+The build options can also be shown for binary packages via `xbps-query(1)`:
+
+    $ xbps-query -R --property=build-options foo
+
+> NOTE: if you build a package with a custom option, and that package is available
+in an official void repository, an update will ignore those options. Put that package
+on `hold` mode via `xbps-pkgdb(1)`, i.e `xbps-pkgdb -m hold foo` to ignore updates
+with `xbps-install -u`. Once the package is on `hold`, the only way to update it
+is by declaring it explicitly: `xbps-install -u foo`.
+
+Permanent global package build options can be set via `XBPS_PKG_OPTIONS` variable in the
+`etc/conf` configuration file. Per package build options can be set via
+`XBPS_PKG_OPTIONS_<pkgname>`.
+
+> NOTE: if `pkgname` contains `dashes`, those should be replaced by `underscores`
+i.e `XBPS_PKG_OPTIONS_xorg_server=opt`.
+
+The list of supported package build options and its description is defined in the
+`common/options.description` file or in the `template` file.
+
+<a name="sharing-and-signing"></a>
+### Sharing and signing your local repositories
+
+To share a local repository remotely it's mandatory to sign it and the binary packages
+stored on it. This is accomplished with the `xbps-rindex(1)` utility.
+
+First a RSA key must be created with `openssl(1)` or `ssh-keygen(1)`:
+
+	$ openssl genrsa -des3 -out privkey.pem 4096
+
+or
+
+	$ ssh-keygen -t rsa -b 4096 -m PEM -f privkey.pem
+
+> Only RSA keys in PEM format are currently accepted by xbps.
+
+Once the RSA private key is ready you can use it to initialize the repository metadata:
+
+	$ xbps-rindex --sign --signedby "I'm Groot" --privkey privkey.pem $PWD/hostdir/binpkgs
+
+And then make a signature per package:
+
+	$ xbps-rindex --sign-pkg --privkey privkey.pem $PWD/hostdir/binpkgs/*.xbps
+
+> If --privkey is unset, it defaults to `~/.ssh/id_rsa`.
+
+If the RSA key was protected with a passphrase you'll have to type it, or alternatively set
+it via the `XBPS_PASSPHRASE` environment variable.
+
+Once the binary packages have been signed, check the repository contains the appropriate `hex fingerprint`:
+
+	$ xbps-query --repository=hostdir/binpkgs -vL
+	...
+
+Each time a binary package is created, a package signature must be created with `--sign-pkg`.
+
+> It is not possible to sign a repository with multiple RSA keys.
+
+<a name="rebuilding"></a>
+### Rebuilding and overwriting existing local packages
+
+Packages are overwritten on every build to make getting package with changed build options easy.
+To make xbps-src skip build and preserve first package build with with given version and revision,
+same as in official void repository, set `XBPS_PRESERVE_PKGS=yes` in `etc/conf` file.
+
+Reinstalling a package in your target `rootdir` can be easily done too:
+
+    $ xbps-install --repository=/path/to/local/repo -yf xbps-0.25_1
+
+Using `-f` flag twice will overwrite configuration files.
+
+> Please note that the `package expression` must be properly defined to explicitly pick up
+the package from the desired repository.
+
+<a name="distcc"></a>
+### Enabling distcc for distributed compilation
+
+Setup the slaves (machines that will compile the code):
+
+    # xbps-install -Sy distcc
+
+Modify the configuration to allow your local network machines to use distcc (e.g. `192.168.2.0/24`):
+
+    # echo "192.168.2.0/24" >> /etc/distcc/clients.allow
+
+Enable and start the `distccd` service:
+
+    # ln -s /etc/sv/distccd /var/service
+
+Install distcc on the host (machine that executes xbps-src) as well.
+Unless you want to use the host as slave from other machines, there is no need
+to modify the configuration.
+
+On the host you can now enable distcc in the `void-packages/etc/conf` file:
+
+    XBPS_DISTCC=yes
+    XBPS_DISTCC_HOSTS="localhost/2 --localslots_cpp=24 192.168.2.101/9 192.168.2.102/2"
+    XBPS_MAKEJOBS=16
+
+The example values assume a localhost CPU with 4 cores of which at most 2 are used for compiler jobs.
+The number of slots for preprocessor jobs is set to 24 in order to have enough preprocessed data for other CPUs to compile.
+The slave 192.168.2.101 has a CPU with 8 cores and the /9 for the number of jobs is a saturating choice.
+The slave 192.168.2.102 is set to run at most 2 compile jobs to keep its load low, even if its CPU has 4 cores.
+The XBPS_MAKEJOBS setting is increased to 16 to account for the possible parallelism (2 + 9 + 2 + some slack).
+
+<a name="distfiles-mirrors"></a>
+### Distfiles mirror(s)
+
+In etc/conf you may optionally define a mirror or a list of mirrors to search for distfiles.
+
+    $ echo 'XBPS_DISTFILES_MIRROR="ftp://192.168.100.5/gentoo/distfiles"' >> etc/conf
+
+If more than one mirror is to be searched, you can either specify multiple URLs separated
+with blanks, or add to the variable like this
+
+    $ echo 'XBPS_DISTFILES_MIRROR+=" https://sources.voidlinux.org/"' >> etc/conf
+
+Make sure to put the blank after the first double quote in this case.
+
+The mirrors are searched in order for the distfiles to build a package until the
+checksum of the downloaded file matches the one specified in the template.
+
+Ultimately, if no mirror carries the distfile, or in case all downloads failed the
+checksum verification, the original download location is used.
+
+If you use `uchroot` for your XBPS_CHROOT_CMD, you may also specify a local path
+using the `file://` prefix or simply an absolute path on your build host (e.g. /mnt/distfiles).
+Mirror locations specified this way are bind mounted inside the chroot environment
+under $XBPS_MASTERDIR and searched for distfiles just the same as remote locations.
+
+<a name="cross-compiling"></a>
+### Cross compiling packages for a target architecture
+
+Currently `xbps-src` can cross build packages for some target architectures with a cross compiler.
+The supported target is shown with `./xbps-src -h`.
+
+If a source package has been adapted to be **cross buildable** `xbps-src` will automatically build the binary package(s) with a simple command:
+
+    $ ./xbps-src -a <target> pkg <pkgname>
+
+If the build for whatever reason fails, might be a new build issue or simply because it hasn't been adapted to be **cross compiled**.
+
+<a name="foreign"></a>
+### Using xbps-src in a foreign Linux distribution
+
+xbps-src can be used in any recent Linux distribution matching the CPU architecture.
+
+To use xbps-src in your Linux distribution use the following instructions. Let's start downloading the xbps static binaries:
+
+    $ wget http://alpha.de.repo.voidlinux.org/static/xbps-static-latest.<arch>-musl.tar.xz
+    $ mkdir ~/XBPS
+    $ tar xvf xbps-static-latest.<arch>-musl.tar.xz -C ~/XBPS
+    $ export PATH=~/XBPS/usr/bin:$PATH
+
+If `xbps-uunshare` does not work because of lack of `user_namespaces(7)` support,
+try other [chroot methods](#chroot-methods).
+
+Clone the `void-packages` git repository:
+
+    $ git clone https://github.com/void-linux/void-packages.git
+
+and `xbps-src` should be fully functional; just start the `bootstrap` process, i.e:
+
+    $ ./xbps-src binary-bootstrap
+
+The default masterdir is created in the current working directory, i.e `void-packages/masterdir`.
+
+<a name="remaking-masterdir"></a>
+### Remaking the masterdir
+
+If for some reason you must update xbps-src and the `bootstrap-update` target is not enough, it's possible to recreate a masterdir with two simple commands (please note that `zap` keeps your `ccache/distcc/host` directories intact):
+
+    $ ./xbps-src zap
+    $ ./xbps-src binary-bootstrap
+
+<a name="updating-masterdir"></a>
+### Keeping your masterdir uptodate
+
+Sometimes the bootstrap packages must be updated to the latest available version in repositories, this is accomplished with the `bootstrap-update` target:
+
+    $ ./xbps-src bootstrap-update
+
+<a name="building-32bit"></a>
+### Building 32bit packages on x86_64
+
+Two ways are available to build 32bit packages on x86\_64:
+
+ - native mode with a 32bit masterdir (recommended, used in official repository)
+ - cross compilation mode to i686 [target](#cross-compiling)
+
+The canonical mode (native) needs a new x86 `masterdir`:
+
+    $ ./xbps-src -m masterdir-x86 binary-bootstrap i686
+    $ ./xbps-src -m masterdir-x86 ...
+
+<a name="building-for-musl"></a>
+### Building packages natively for the musl C library
+
+Canonical way of building packages for same architecture but different C library is through dedicated masterdir.
+To build for x86_64-musl on glibc x86_64 system, prepare a new masterdir with the musl packages:
+
+    $ ./xbps-src -m masterdir-x86_64-musl binary-bootstrap x86_64-musl
+
+Your new masterdir is now ready to build packages natively for the musl C library:
+
+    $ ./xbps-src -m masterdir-x86_64-musl pkg ...
+
+<a name="building-base-system"></a>
+### Building void base-system from scratch
+
+To rebuild all packages in `base-system` for your native architecture:
+
+    $ ./xbps-src -N pkg base-system
+
+It's also possible to cross compile everything from scratch:
+
+    $ ./xbps-src -a <target> -N pkg base-system
+
+Once the build has finished, you can specify the path to the local repository to `void-mklive`, i.e:
+
+    # cd void-mklive
+    # make
+    # ./mklive.sh ... -r /path/to/hostdir/binpkgs
diff --git a/common/build-helper/cmake-wxWidgets-gtk3.sh b/common/build-helper/cmake-wxWidgets-gtk3.sh
new file mode 100644
index 0000000..68bc53d
--- /dev/null
+++ b/common/build-helper/cmake-wxWidgets-gtk3.sh
@@ -0,0 +1,5 @@
+if [ "$CROSS_BUILD" ]; then
+	export WX_CONFIG=${XBPS_WRAPPERDIR}/wx-config-gtk3
+else
+	export WX_CONFIG=/usr/bin/wx-config-gtk3
+fi
diff --git a/common/build-helper/gir.sh b/common/build-helper/gir.sh
new file mode 100644
index 0000000..0091fb3
--- /dev/null
+++ b/common/build-helper/gir.sh
@@ -0,0 +1,42 @@
+#
+# gir - build-helper for gobject-introspection
+#
+# This build-helper is used for packages that make use of
+# the GObject introspection middleware layer.
+# 
+
+# Check if the 'gir' build_option is set or if there is no
+# 'gir' build_option.
+if [ "$build_option_gir" ] || [[ $build_options != *"gir"* ]]; then
+	if [[ $hostmakedepends != *"gobject-introspection"* ]]; then
+		# Provide the host tooling, g-ir-scanner, g-ir-compiler
+		# and its wrappers.
+		hostmakedepends+=" gobject-introspection"
+	fi
+	
+	if [ "$CROSS_BUILD" ]; then
+		# Required for running binaries produced from g-ir-compiler
+		# via g-ir-scanner-qemuwrapper
+		hostmakedepends+=" qemu-user-static"
+	
+		# Required for running the g-ir-scanner-lddwrapper
+		hostmakedepends+=" prelink-cross"
+
+		if [[ $makedepends != *"gobject-introspection"* ]]; then
+			# Provide basic .gir types like GLib, GObject, DBus, Gio, cairo
+			# and tooling like g-ir-compiler
+			makedepends+=" gobject-introspection"
+		fi
+
+		export VAPIGEN_VAPIDIRS=${XBPS_CROSS_BASE}/usr/share/vala/vapi
+		export VAPIGEN_GIRDIRS=${XBPS_CROSS_BASE}/usr/share/gir-1.0
+
+		# Provide some packages in hostmakedepends if they are in makedepends
+		for f in gtk+3-devel python3-gobject-devel; do
+			if [[ $makedepends == *"${f}"* ]]; then
+				hostmakedepends+=" ${f}"
+			fi
+		done
+		unset f
+	fi
+fi
diff --git a/common/build-helper/numpy.sh b/common/build-helper/numpy.sh
new file mode 100644
index 0000000..74c6421
--- /dev/null
+++ b/common/build-helper/numpy.sh
@@ -0,0 +1,37 @@
+#
+# numpy - build-helper for packages that compile against python3-numpy
+#
+# This build-helper makes sure packages can find python3-numpy libraries and
+# headers on the target architecture rather than the host, as well as making
+# sure the gfortran cross compiler is properly identified.
+
+# Even for cross compilation, numpy should be available on the host to ensure
+# that the host interpreter doesn't complain about missing deps
+if [[ $hostmakedepends != *"python3-numpy"* ]]; then
+	hostmakedepends+=" python3-numpy"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	if [[ $makedepends != *"python3-numpy"* ]]; then
+		makedepends+=" python3-numpy"
+	fi
+
+	# python3-setuptools finds numpy libs and headers on the host first;
+	# adding search paths up front allows the target to take priority
+	CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/core/include"
+	LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/core/lib"
+	LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_sitelib}/numpy/random/lib"
+
+	# distutils from python3-numpy looks to environment variables F77 and
+	# F90 rather than the XBPS-set FC
+	export F77="${FC}"
+	export F90="${FC}"
+
+	# When compiling and linking FORTRAN, distutils from python3-numpy
+	# refuses respect any linker name except "gfortran"; symlink to the
+	# cross-compiler to that the right linker and compiler will be used
+	if _gfortran=$(command -v "${FC}"); then
+		ln -sf "${_gfortran}" "${XBPS_WRAPPERDIR}/gfortran"
+	fi
+	unset _gfortran
+fi
diff --git a/common/build-helper/qemu.sh b/common/build-helper/qemu.sh
new file mode 100644
index 0000000..d6a4342
--- /dev/null
+++ b/common/build-helper/qemu.sh
@@ -0,0 +1,14 @@
+if [ "$CROSS_BUILD" ]; then
+	export QEMU_LD_PREFIX=${XBPS_CROSS_BASE}
+	if [[ $hostmakedepends != *"qemu-user-static"* ]]; then
+		hostmakedepends+=" qemu-user-static"
+	fi
+fi
+
+vtargetrun() {
+	if [ "$CROSS_BUILD" ]; then
+		"/usr/bin/qemu-${XBPS_TARGET_QEMU_MACHINE}-static" "$@"
+	else
+		"$@"
+	fi
+}
diff --git a/common/build-helper/qmake.sh b/common/build-helper/qmake.sh
new file mode 100644
index 0000000..bdda2de
--- /dev/null
+++ b/common/build-helper/qmake.sh
@@ -0,0 +1,95 @@
+# This build-helper sets up qmake’s cross environment
+# in cases the build-style is mixed,
+# e.g. when in a gnu-configure style the configure
+# script calls qmake or a makefile in a gnu-makefile style,
+# respectively.
+
+if [ "$CROSS_BUILD" ]; then
+	mkdir -p "${XBPS_WRAPPERDIR}/target-spec/linux-g++"
+	cat > "${XBPS_WRAPPERDIR}/target-spec/linux-g++/qmake.conf" <<_EOF
+MAKEFILE_GENERATOR      = UNIX
+CONFIG                 += incremental no_qt_rpath
+QMAKE_INCREMENTAL_STYLE = sublib
+
+include(/usr/lib/qt5/mkspecs/common/linux.conf)
+include(/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf)
+include(/usr/lib/qt5/mkspecs/common/g++-unix.conf)
+
+QMAKE_TARGET_CONFIG     = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qconfig.pri
+QMAKE_TARGET_MODULE     = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qmodule.pri
+QMAKEMODULES            = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/modules
+QMAKE_CC                = ${CC}
+QMAKE_CXX               = ${CXX}
+QMAKE_LINK              = ${CXX}
+QMAKE_LINK_C            = ${CC}
+QMAKE_LINK_SHLIB        = ${CXX}
+
+QMAKE_AR                = ${XBPS_CROSS_TRIPLET}-gcc-ar cqs
+QMAKE_OBJCOPY           = ${OBJCOPY}
+QMAKE_NM                = ${NM} -P
+QMAKE_STRIP             = ${STRIP}
+
+QMAKE_CFLAGS            = ${CFLAGS}
+QMAKE_CXXFLAGS          = ${CXXFLAGS}
+QMAKE_LFLAGS            = ${LDFLAGS}
+load(qt_config)
+_EOF
+	echo "#include \"${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/linux-g++/qplatformdefs.h\"" > "${XBPS_WRAPPERDIR}/target-spec/linux-g++/qplatformdefs.h"
+
+	cat > "${XBPS_WRAPPERDIR}/qt.conf" <<_EOF
+[Paths]
+Sysroot=${XBPS_CROSS_BASE}
+Prefix=${XBPS_CROSS_BASE}/usr
+ArchData=${XBPS_CROSS_BASE}/usr/lib/qt5
+Data=${XBPS_CROSS_BASE}/usr/share/qt5
+Documentation=${XBPS_CROSS_BASE}/usr/share/doc/qt5
+Headers=${XBPS_CROSS_BASE}/usr/include/qt5
+Libraries=${XBPS_CROSS_BASE}/usr/lib
+LibraryExecutables=/usr/lib/qt5/libexec
+Binaries=/usr/lib/qt5/bin
+Tests=${XBPS_CROSS_BASE}/usr/tests
+Plugins=/usr/lib/qt5/plugins
+Imports=${XBPS_CROSS_BASE}/usr/lib/qt5/imports
+Qml2Imports=${XBPS_CROSS_BASE}/usr/lib/qt5/qml
+Translations=${XBPS_CROSS_BASE}/usr/share/qt5/translations
+Settings=${XBPS_CROSS_BASE}/etc/xdg
+Examples=${XBPS_CROSS_BASE}/usr/share/qt5/examples
+HostPrefix=/usr
+HostData=/usr/lib/qt5
+HostBinaries=/usr/lib/qt5/bin
+HostLibraries=/usr/lib
+Spec=linux-g++
+TargetSpec=$XBPS_WRAPPERDIR/target-spec/linux-g++
+_EOF
+
+	# create the qmake-wrapper here because it only
+	# makes sense together with the qmake build-helper
+	# and not to interfere with e.g. the qmake build-style
+	#
+	#   + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS
+	#   + hardening flags will be picked up from environment variables
+        cat > "${XBPS_WRAPPERDIR}/qmake" <<_EOF
+#!/bin/sh
+exec /usr/lib/qt5/bin/qmake "\$@" -qtconf "${XBPS_WRAPPERDIR}/qt.conf" \\
+	QMAKE_CFLAGS+="\${CFLAGS}" \\
+	QMAKE_CXXFLAGS+="\${CXXFLAGS}" \\
+	QMAKE_LFLAGS+="\${LDFLAGS}"
+_EOF
+else
+        cat > "${XBPS_WRAPPERDIR}/qmake" <<_EOF
+#!/bin/sh
+exec /usr/lib/qt5/bin/qmake \
+	"\$@" \
+	PREFIX=/usr \
+	QT_INSTALL_PREFIX=/usr \
+	LIB=/usr/lib \
+	QMAKE_CC="$CC" QMAKE_CXX="$CXX" \
+	QMAKE_LINK="$CXX" QMAKE_LINK_C="$CC" \
+	QMAKE_CFLAGS+="\${CFLAGS}" \
+	QMAKE_CXXFLAGS+="\${CXXFLAGS}" \
+	QMAKE_LFLAGS+="\${LDFLAGS}" \
+	CONFIG+=no_qt_rpath
+_EOF
+fi
+chmod 755 ${XBPS_WRAPPERDIR}/qmake
+cp -p ${XBPS_WRAPPERDIR}/qmake{,-qt5}
diff --git a/common/build-helper/rust.sh b/common/build-helper/rust.sh
new file mode 100644
index 0000000..272d03f
--- /dev/null
+++ b/common/build-helper/rust.sh
@@ -0,0 +1,53 @@
+# Define equivalent of TOML config in environment
+# [build]
+# jobs = $XBPS_MAKEJOBS
+export CARGO_BUILD_JOBS="$XBPS_MAKEJOBS"
+export CARGO_HOME="/host/cargo"
+
+if [ "$CROSS_BUILD" ]; then
+	# Define equivalent of TOML config in environment
+	# [target.${RUST_TARGET}]
+	# linker = ${CC}
+	_XBPS_CROSS_RUST_TARGET_ENV="${XBPS_CROSS_RUST_TARGET^^}"
+	_XBPS_CROSS_RUST_TARGET_ENV="${_XBPS_CROSS_RUST_TARGET_ENV//-/_}"
+	export CARGO_TARGET_${_XBPS_CROSS_RUST_TARGET_ENV}_LINKER="$CC"
+	unset _XBPS_CROSS_RUST_TARGET_ENV
+	
+	# Define equivalent of TOML config in environment
+	# [build]
+	# target = ${RUST_TARGET}
+	export CARGO_BUILD_TARGET="$RUST_TARGET"
+
+	# If cc-rs needs to build host binaries, it guesses the compiler and
+	# uses default (wrong) flags unless they are specified explicitly;
+	# innocuous flags are used here just to disable its defaults
+	export HOST_CC="gcc"
+	export HOST_CFLAGS="-O2"
+
+	# Crates that use bindgen via build.rs are not cross-aware unless these are set
+	export BINDGEN_EXTRA_CLANG_ARGS="--sysroot=${XBPS_CROSS_BASE} -I${XBPS_CROSS_BASE}/usr/include"
+else
+	unset CARGO_BUILD_TARGET
+fi
+
+# For cross-compiling rust -sys crates
+export PKG_CONFIG_ALLOW_CROSS=1
+
+# gettext-rs
+export GETTEXT_BIN_DIR=/usr/bin
+export GETTEXT_LIB_DIR="${XBPS_CROSS_BASE}/usr/lib/gettext"
+export GETTEXT_INCLUDE_DIR="${XBPS_CROSS_BASE}/usr/include"
+
+# libssh2-sys
+export LIBSSH2_SYS_USE_PKG_CONFIG=1 
+
+# sodium-sys
+export SODIUM_LIB_DIR="${XBPS_CROSS_BASE}/usr/include"
+export SODIUM_INC_DIR="${XBPS_CROSS_BASE}/usr/lib"
+export SODIUM_SHARED=1
+
+# openssl-sys
+export OPENSSL_NO_VENDOR=1
+
+# pcre2-sys, only necessary for musl targets
+export PCRE2_SYS_STATIC=0
diff --git a/common/build-profiles/README b/common/build-profiles/README
new file mode 100644
index 0000000..41b18fc
--- /dev/null
+++ b/common/build-profiles/README
@@ -0,0 +1,17 @@
+BUILD PROFILES
+==============
+
+This directory contains build profiles to set properties on native builds
+for a specific architecture:
+
+	- XBPS_TRIPLET		(the compiler triplet)
+	- XBPS_CFLAGS		(C compiler flags for host compiler)
+	- XBPS_CXXFLAGS		(C++ compiler flags for the host compiler)
+	- XBPS_FFLAGS		(Fortran compiler flags for the host compiler)
+	- XBPS_RUST_TARGET	(the compiler triplet for usage by cargo)
+	- XBPS_ZIG_TARGET	(the arch-os-abi target triplet for zig)
+	- XBPS_ZIG_CPU		(the cpu/feature set for zig)
+
+These properties are also set in a cross environment, but the compiler
+flags are not added into the global flags. XBPS_RUST_TARGET is also
+exposed as RUST_BUILD instead of RUST_TARGET.
diff --git a/common/build-profiles/aarch64-musl.sh b/common/build-profiles/aarch64-musl.sh
new file mode 100644
index 0000000..8427d04
--- /dev/null
+++ b/common/build-profiles/aarch64-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-march=armv8-a"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="aarch64-unknown-linux-musl"
+XBPS_RUST_TARGET="$XBPS_TRIPLET"
+XBPS_ZIG_TARGET="aarch64-linux-musl"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/aarch64.sh b/common/build-profiles/aarch64.sh
new file mode 100644
index 0000000..59855df
--- /dev/null
+++ b/common/build-profiles/aarch64.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-march=armv8-a"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="aarch64-unknown-linux-gnu"
+XBPS_RUST_TARGET="$XBPS_TRIPLET"
+XBPS_ZIG_TARGET="aarch64-linux-gnu"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/armv6l-musl.sh b/common/build-profiles/armv6l-musl.sh
new file mode 100644
index 0000000..b46941a
--- /dev/null
+++ b/common/build-profiles/armv6l-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="armv6l-linux-musleabihf"
+XBPS_RUST_TARGET="arm-unknown-linux-musleabihf"
+XBPS_ZIG_TARGET="arm-linux-musleabihf"
+XBPS_ZIG_CPU="generic+v6"
diff --git a/common/build-profiles/armv6l.sh b/common/build-profiles/armv6l.sh
new file mode 100644
index 0000000..3b18223
--- /dev/null
+++ b/common/build-profiles/armv6l.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="armv6l-unknown-linux-gnueabihf"
+XBPS_RUST_TARGET="arm-unknown-linux-gnueabihf"
+XBPS_ZIG_TARGET="arm-linux-gnueabihf"
+XBPS_ZIG_CPU="generic+v6"
diff --git a/common/build-profiles/armv7l-musl.sh b/common/build-profiles/armv7l-musl.sh
new file mode 100644
index 0000000..dbf3eb0
--- /dev/null
+++ b/common/build-profiles/armv7l-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard"
+XBPS_TARGET_CXXFLAGS="$XBPS_CXXFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="armv7l-linux-musleabihf"
+XBPS_RUST_TARGET="armv7-unknown-linux-musleabihf"
+XBPS_ZIG_TARGET="arm-linux-musleabihf"
+XBPS_ZIG_CPU="generic+v7a+vfp3"
diff --git a/common/build-profiles/armv7l.sh b/common/build-profiles/armv7l.sh
new file mode 100644
index 0000000..141639b
--- /dev/null
+++ b/common/build-profiles/armv7l.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="armv7l-unknown-linux-gnueabihf"
+XBPS_RUST_TARGET="armv7-unknown-linux-gnueabihf"
+XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabihf"
+XBPS_CROSS_ZIG_CPU="generic+v7a+vfp3"
diff --git a/common/build-profiles/bootstrap.sh b/common/build-profiles/bootstrap.sh
new file mode 100644
index 0000000..abc0c37
--- /dev/null
+++ b/common/build-profiles/bootstrap.sh
@@ -0,0 +1,3 @@
+XBPS_CFLAGS="-O2 -pipe"
+XBPS_CXXFLAGS="$XBPS_CFLAGS"
+XBPS_FFLAGS="-fPIC -pipe"
diff --git a/common/build-profiles/i686-musl.sh b/common/build-profiles/i686-musl.sh
new file mode 100644
index 0000000..a607ef6
--- /dev/null
+++ b/common/build-profiles/i686-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=i686"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="i686-linux-musl"
+XBPS_RUST_TARGET="i686-unknown-linux-musl"
+XBPS_ZIG_TARGET="i686-linux-musl"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/i686.sh b/common/build-profiles/i686.sh
new file mode 100644
index 0000000..ac69fb0
--- /dev/null
+++ b/common/build-profiles/i686.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=i686"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="i686-pc-linux-gnu"
+XBPS_RUST_TARGET="i686-unknown-linux-gnu"
+XBPS_ZIG_TARGET="i386-linux-gnu"
+XBPS_ZIG_CPU="_i686+sse2"
diff --git a/common/build-profiles/ppc-musl.sh b/common/build-profiles/ppc-musl.sh
new file mode 100644
index 0000000..60b2e70
--- /dev/null
+++ b/common/build-profiles/ppc-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=G4"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpc-linux-musl"
+XBPS_RUST_TARGET="powerpc-unknown-linux-musl"
+XBPS_ZIG_TARGET="powerpc-linux-musl"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/ppc.sh b/common/build-profiles/ppc.sh
new file mode 100644
index 0000000..b7a1131
--- /dev/null
+++ b/common/build-profiles/ppc.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=G4"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpc-linux-gnu"
+XBPS_RUST_TARGET="powerpc-unknown-linux-gnu"
+XBPS_ZIG_TARGET="powerpc-linux-gnu"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/ppc64-musl.sh b/common/build-profiles/ppc64-musl.sh
new file mode 100644
index 0000000..4ec7430
--- /dev/null
+++ b/common/build-profiles/ppc64-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mcpu=970 -mtune=power9"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpc64-unknown-linux-musl"
+XBPS_RUST_TARGET="$XBPS_TRIPLET"
+XBPS_ZIG_TARGET="powerpc64-linux-musl"
+XBPS_ZIG_CPU="970"
diff --git a/common/build-profiles/ppc64.sh b/common/build-profiles/ppc64.sh
new file mode 100644
index 0000000..1d0c04a
--- /dev/null
+++ b/common/build-profiles/ppc64.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mcpu=970 -mtune=power9"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpc64-unknown-linux-gnu"
+XBPS_RUST_TARGET="$XBPS_TRIPLET"
+XBPS_ZIG_TARGET="powerpc64-linux-gnu"
+XBPS_ZIG_CPU="970"
diff --git a/common/build-profiles/ppc64le-musl.sh b/common/build-profiles/ppc64le-musl.sh
new file mode 100644
index 0000000..8d2db1b
--- /dev/null
+++ b/common/build-profiles/ppc64le-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=power9"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpc64le-unknown-linux-musl"
+XBPS_RUST_TARGET="$XBPS_TRIPLET"
+XBPS_ZIG_TARGET="powerpc64le-linux-musl"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/ppc64le.sh b/common/build-profiles/ppc64le.sh
new file mode 100644
index 0000000..8f0e735
--- /dev/null
+++ b/common/build-profiles/ppc64le.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=power9"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpc64le-unknown-linux-gnu"
+XBPS_RUST_TARGET="$XBPS_TRIPLET"
+XBPS_ZIG_TARGET="powerpc64le-linux-gnu"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/ppcle-musl.sh b/common/build-profiles/ppcle-musl.sh
new file mode 100644
index 0000000..c8d7e28
--- /dev/null
+++ b/common/build-profiles/ppcle-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mcpu=power8 -mtune=power9"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpcle-linux-musl"
+XBPS_RUST_TARGET="powerpcle-unknown-linux-musl"
+XBPS_ZIG_TARGET="powerpcle-linux-musl"
+XBPS_ZIG_CPU="pwr8"
diff --git a/common/build-profiles/ppcle.sh b/common/build-profiles/ppcle.sh
new file mode 100644
index 0000000..7eccadf
--- /dev/null
+++ b/common/build-profiles/ppcle.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mcpu=power8 -mtune=power9"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="powerpcle-linux-gnu"
+XBPS_RUST_TARGET="powerpcle-unknown-linux-gnu"
+XBPS_ZIG_TARGET="powerpcle-linux-gnu"
+XBPS_ZIG_CPU="pwr8"
diff --git a/common/build-profiles/x86_64-musl.sh b/common/build-profiles/x86_64-musl.sh
new file mode 100644
index 0000000..538baea
--- /dev/null
+++ b/common/build-profiles/x86_64-musl.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=generic"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="x86_64-unknown-linux-musl"
+XBPS_RUST_TARGET="${XBPS_TRIPLET}"
+XBPS_ZIG_TARGET="x86_64-linux-musl"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-profiles/x86_64.sh b/common/build-profiles/x86_64.sh
new file mode 100644
index 0000000..388b556
--- /dev/null
+++ b/common/build-profiles/x86_64.sh
@@ -0,0 +1,7 @@
+XBPS_TARGET_CFLAGS="-mtune=generic"
+XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS"
+XBPS_TRIPLET="x86_64-unknown-linux-gnu"
+XBPS_RUST_TARGET="${XBPS_TRIPLET}"
+XBPS_ZIG_TARGET="x86_64-linux-gnu"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/build-style/R-cran.sh b/common/build-style/R-cran.sh
new file mode 100644
index 0000000..ab1acc2
--- /dev/null
+++ b/common/build-style/R-cran.sh
@@ -0,0 +1,7 @@
+#
+# This helper is for templates using R-cran.
+#
+do_install() {
+	mkdir -p ${DESTDIR}/usr/lib/R/library
+	( cd .. && R CMD INSTALL -l ${DESTDIR}/usr/lib/R/library ${pkgname#R-cran-} )
+}
diff --git a/common/build-style/README b/common/build-style/README
new file mode 100644
index 0000000..8ed990b
--- /dev/null
+++ b/common/build-style/README
@@ -0,0 +1,12 @@
+BUILD STYLES
+============
+
+These shell snippets provide support for multiple build systems, i.e GNU configure,
+CMake, etc. A build style file must provide at least the following functions:
+
+	- do_configure
+	- do_build
+	- do_install
+
+If a source package defines its own do_xxx() function, the function defined in
+the build style file is simply ignored.
diff --git a/common/build-style/cargo.sh b/common/build-style/cargo.sh
new file mode 100644
index 0000000..53c4897
--- /dev/null
+++ b/common/build-style/cargo.sh
@@ -0,0 +1,27 @@
+#
+# This helper is for building rust projects which use cargo for building
+#
+
+do_build() {
+	: ${make_cmd:=cargo}
+
+	${make_cmd} build --release --target ${RUST_TARGET} ${configure_args}
+}
+
+do_check() {
+	: ${make_cmd:=cargo}
+
+	${make_cmd} test --release --target ${RUST_TARGET} ${configure_args} \
+		${make_check_args}
+}
+
+do_install() {
+	: ${make_cmd:=cargo}
+	: ${make_install_args:=--path .}
+
+	${make_cmd} install --target ${RUST_TARGET} --root="${DESTDIR}/usr" \
+		--locked ${configure_args} ${make_install_args}
+
+	rm -f "${DESTDIR}"/usr/.crates.toml
+	rm -f "${DESTDIR}"/usr/.crates2.json
+}
diff --git a/common/build-style/cmake.sh b/common/build-style/cmake.sh
new file mode 100644
index 0000000..33a556b
--- /dev/null
+++ b/common/build-style/cmake.sh
@@ -0,0 +1,128 @@
+#
+# This helper is for templates using cmake.
+#
+do_configure() {
+	local cmake_args=
+	[ ! -d ${cmake_builddir:=build} ] && mkdir -p ${cmake_builddir}
+	cd ${cmake_builddir}
+
+	if [ -z "$CHROOT_READY" ]; then
+		cat >bootstrap.cmake <<_EOF
+SET(CMAKE_SYSTEM_NAME Linux)
+SET(CMAKE_SYSTEM_VERSION 1)
+
+SET(CMAKE_C_COMPILER   ${CC})
+SET(CMAKE_CXX_COMPILER ${CXX})
+
+SET(CMAKE_FIND_ROOT_PATH  "${XBPS_MASTERDIR}/usr;${XBPS_MASTERDIR}")
+
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+_EOF
+		configure_args+=" -DCMAKE_TOOLCHAIN_FILE=bootstrap.cmake"
+	elif [ "$CROSS_BUILD" ]; then
+		case "$XBPS_TARGET_MACHINE" in
+			x86_64*) _CMAKE_SYSTEM_PROCESSOR=x86_64 ;;
+			i686*) _CMAKE_SYSTEM_PROCESSOR=x86 ;;
+			aarch64*) _CMAKE_SYSTEM_PROCESSOR=aarch64 ;;
+			arm*) _CMAKE_SYSTEM_PROCESSOR=arm ;;
+			mips*) _CMAKE_SYSTEM_PROCESSOR=mips ;;
+			ppc64le*) _CMAKE_SYSTEM_PROCESSOR=ppc64le ;;
+			ppc64*) _CMAKE_SYSTEM_PROCESSOR=ppc64 ;;
+			ppcle*) _CMAKE_SYSTEM_PROCESSOR=ppcle ;;
+			ppc*) _CMAKE_SYSTEM_PROCESSOR=ppc ;;
+			*) _CMAKE_SYSTEM_PROCESSOR=generic ;;
+		esac
+		cat > cross_${XBPS_CROSS_TRIPLET}.cmake <<_EOF
+SET(CMAKE_SYSTEM_NAME Linux)
+SET(CMAKE_SYSTEM_VERSION 1)
+
+SET(CMAKE_C_COMPILER   ${CC})
+SET(CMAKE_CXX_COMPILER ${CXX})
+SET(CMAKE_CROSSCOMPILING TRUE)
+
+SET(CMAKE_SYSTEM_PROCESSOR ${_CMAKE_SYSTEM_PROCESSOR})
+
+SET(CMAKE_FIND_ROOT_PATH  "${XBPS_CROSS_BASE}/usr;${XBPS_CROSS_BASE}")
+
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+_EOF
+		cmake_args+=" -DCMAKE_TOOLCHAIN_FILE=${wrksrc}/${build_wrksrc}/${cmake_builddir}/cross_${XBPS_CROSS_TRIPLET}.cmake"
+	fi
+	cmake_args+=" -DCMAKE_INSTALL_PREFIX=/usr"
+	cmake_args+=" -DCMAKE_BUILD_TYPE=None"
+	cmake_args+=" -DCMAKE_INSTALL_LIBDIR=lib${XBPS_TARGET_WORDSIZE}"
+
+	if [[ $build_helper = *"qemu"* ]]; then
+		echo "SET(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-${XBPS_TARGET_QEMU_MACHINE}-static)" \
+			>> cross_${XBPS_CROSS_TRIPLET}.cmake
+	fi
+
+	cmake_args+=" -DCMAKE_INSTALL_SBINDIR=bin"
+
+	export CMAKE_GENERATOR="${CMAKE_GENERATOR:-Ninja}"
+	# Remove -pipe: https://gitlab.kitware.com/cmake/cmake/issues/19590
+	CFLAGS="-DNDEBUG ${CFLAGS/ -pipe / }" CXXFLAGS="-DNDEBUG ${CXXFLAGS/ -pipe / }" \
+		cmake ${cmake_args} ${configure_args} \
+		${LIBS:+-DCMAKE_C_STANDARD_LIBRARIES="$LIBS"} \
+		${LIBS:+-DCMAKE_CXX_STANDARD_LIBRARIES="$LIBS"} \
+		${wrksrc}/${build_wrksrc}
+
+	# Replace -isystem with -I
+	if [ "$CMAKE_GENERATOR" = "Unix Makefiles" ]; then
+		find . -name flags.make -exec sed -i -e 's/-isystem/-I/g' "{}" +
+	elif [ "$CMAKE_GENERATOR" = Ninja ]; then
+		sed -i -e 's/-isystem/-I/g' build.ninja
+	fi
+}
+
+do_build() {
+	: ${make_cmd:=ninja}
+
+	cd ${cmake_builddir:=build}
+	${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}
+}
+
+do_check() {
+	: ${make_cmd:=ninja}
+
+	cd ${cmake_builddir:=build}
+
+	if [ -z "$make_check_target" ]; then
+		case $make_cmd in
+			make)
+				if make -q test 2>/dev/null; then
+					:
+				else
+					if [ $? -eq 2 ]; then
+						msg_warn 'No target to "make test".\n'
+						return 0
+					fi
+				fi
+				;;
+			ninja)
+				if ! ninja -t query test >/dev/null 2>&1; then
+					msg_warn 'No target to "ninja test".\n'
+					return 0
+				fi
+				;;
+			*)
+				msg_warn "Can't run tests with '$make_cmd', define do_check.\n"
+				;;
+		esac
+	fi
+
+	: ${make_check_target:=test}
+
+	${make_cmd} ${make_check_args} ${make_check_target}
+}
+
+do_install() {
+	: ${make_cmd:=ninja}
+	: ${make_install_target:=install}
+
+	cd ${cmake_builddir:=build}
+	DESTDIR=${DESTDIR} ${make_cmd} ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/configure.sh b/common/build-style/configure.sh
new file mode 100644
index 0000000..0963fc3
--- /dev/null
+++ b/common/build-style/configure.sh
@@ -0,0 +1,40 @@
+#
+# This helper is for templates using configure scripts (not generated
+# by the GNU autotools).
+#
+do_configure() {
+	: ${configure_script:=./configure}
+
+	${configure_script} ${configure_args}
+}
+
+do_build() {
+	: ${make_cmd:=make}
+
+	${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}
+}
+
+do_check() {
+	if [ -z "$make_cmd" ] && [ -z "$make_check_target" ]; then 
+		if make -q check 2>/dev/null; then
+			:
+		else
+			if [ $? -eq 2 ]; then
+				msg_warn 'No target to "make check".\n'
+				return 0
+			fi
+		fi
+	fi
+
+	: ${make_cmd:=make}
+	: ${make_check_target:=check}
+
+	${make_cmd} ${make_check_args} ${make_check_target}
+}
+
+do_install() {
+	: ${make_cmd:=make}
+	: ${make_install_target:=install}
+
+	${make_cmd} DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/fetch.sh b/common/build-style/fetch.sh
new file mode 100644
index 0000000..8ab140b
--- /dev/null
+++ b/common/build-style/fetch.sh
@@ -0,0 +1,12 @@
+# fetch build_style: fetches and copies files to ${wrksrc}.
+
+do_extract() {
+	local f curfile
+
+	mkdir -p "${wrksrc}"
+	for f in ${distfiles}; do
+		curfile="${f#*>}"
+		curfile="${curfile##*/}"
+		cp ${XBPS_SRCDISTDIR}/${pkgname}-${version}/${curfile} "${wrksrc}/${curfile}"
+	done
+}
diff --git a/common/build-style/gem.sh b/common/build-style/gem.sh
new file mode 100644
index 0000000..150c5b3
--- /dev/null
+++ b/common/build-style/gem.sh
@@ -0,0 +1,68 @@
+#
+# This helper is for templates using gem files from RubyGems.
+#
+do_install() {
+	: ${gem_cmd:=gem}
+
+	local _GEMDIR _INSTDIR
+	
+	_GEMDIR=$($gem_cmd env gemdir)
+	_INSTDIR=${DESTDIR}/${_GEMDIR}/gems/${pkgname#ruby-}-${version}
+
+	$gem_cmd install \
+		--local \
+		--install-dir ${DESTDIR}/${_GEMDIR} \
+		--bindir ${DESTDIR}/usr/bin \
+		--ignore-dependencies \
+		--no-document \
+		--verbose \
+		${XBPS_SRCDISTDIR}/${pkgname}-${version}/${pkgname#ruby-}-${version}.gem
+
+	# Remove cache
+	rm -rf ${DESTDIR}/${_GEMDIR}/cache
+
+	# Remove ext directory. they are only source code and configuration
+	# The actual extensions are guarded in an arch path
+	rm -rf ${_INSTDIR}/ext
+
+	# Remove installed tests and benchmarks
+	rm -rf ${_INSTDIR}/{test,tests,autotest,benchmark,benchmarks,script,examples,demo}
+
+	# Remove files shipped on the root of the gem, most of the time they are useless
+	find ${_INSTDIR} -maxdepth 1 -type f -delete
+
+	# Remove unnecessary files
+	find ${DESTDIR}/${_GEMDIR}/extensions \( -name mkmf.log -o -name gem_make.out \) -delete
+
+	# Place manpages in usr/share/man/man[0-9]
+	if [ -d ${_INSTDIR}/man ]; then
+		find ${_INSTDIR}/man -type f -name '*.[0-8n]' | while read -r m; do
+			vman ${m}
+		done
+	fi
+
+	rm -rf "${_INSTDIR}/man"
+
+	# Place executables in /usr/bin
+	if [ -d "${_INSTDIR}/bin" ]; then
+		for f in "${_INSTDIR}"/bin/*; do
+			vbin "${f}"
+		done
+	fi
+
+	rm -rf ${_INSTDIR}/bin
+
+	# Place conf files in their places
+	if [ -d ${_INSTDIR}/etc ]; then
+		find ${_INSTDIR}/etc -type f | while read -r c; do
+			vmkdir ${c%/*}/
+			mv ${c} "${DESTDIR}/${c##*${_INSTDIR}/etc/}/"
+		done
+	fi
+
+	rm -rf ${_INSTDIR}/etc
+
+	# Ignore the ~> operator, replace it with >=
+	sed 's|~>|>=|g' \
+		-i ${DESTDIR}/${_GEMDIR}/specifications/${pkgname#ruby-}-${version}.gemspec
+}
diff --git a/common/build-style/gemspec.sh b/common/build-style/gemspec.sh
new file mode 100644
index 0000000..b47ef7b
--- /dev/null
+++ b/common/build-style/gemspec.sh
@@ -0,0 +1,190 @@
+#
+# This helper is for templates using gemspec files from upstream or Rubygems.
+#
+do_build() {
+	: ${gem_cmd:=gem}
+	: ${gemspec:=${pkgname#ruby-}.gemspec}
+
+	# Fix packages that keep Gem.gemspec as the name instead of the proper
+	# $pkgname.gemspec
+	if [ -f Gem.gemspec ]; then
+		gemspec=Gem.gemspec
+	fi
+
+	if [ -f .gemspec ]; then
+		gemspec=.gemspec
+	fi
+
+	# Hardcode name and version just in case they try something funny like
+	# requiring RELEASE to be on the environment to not append -rc0 to version
+	# Some even forget to update the version in the gemspec after releasing
+	sed -ri "s|(\.name .*)=.*|\1 = \"${pkgname#ruby-}\"|g" $gemspec
+	sed -ri "s|(\.version .*)=.*|\1 = \"${version}\"|g" $gemspec
+
+	# Replace use of `git ls-files` with find, use printf so we can print without starting
+	# dot-slash path
+	sed -i 's|`git ls-files`|`find . -type f -printf "%P\\n"`|g' $gemspec
+
+	# Sadly ruby isn't capable of handling nullbytes in a command so we have to use
+	# -print0, then try using sed to remove the suffix
+	# The end result is:
+	# `find . -type f -print0 | sed -e "s@\\./@@g"`
+	sed -i 's|`git ls-files -z`|`find . -type f -print0 \| sed -e "s@\\\\./@@g"`|g' $gemspec
+
+	if [ "$CROSS_BUILD" ]; then
+
+		local _TARGET_PLATFORM
+
+		_TARGET_PLATFORM="$(ruby -r \
+			$(find ${XBPS_CROSS_BASE}/usr/lib/ruby -iname rbconfig.rb) \
+			-e 'puts RbConfig::CONFIG["arch"]' 2>/dev/null)"
+
+		# Patch all instances of extconf that use create_makefile
+		for f in $(find . -type f -name 'extconf.rb'); do
+			if [ ! -f ${f}.orig ]; then
+				# Create a .extconf file that forces the Makefile to use our environment
+				# this allows us to cross-compile like it is done with meson cross-files
+				cat<<EOF>append
+\$CPPFLAGS = ENV['CPPFLAGS'] if ENV['CPPFLAGS']
+RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
+RbConfig::MAKEFILE_CONFIG['CXX'] = ENV['CXX'] if ENV['CXX']
+RbConfig::MAKEFILE_CONFIG['LD'] = ENV['LD'] if ENV['LD']
+RbConfig::MAKEFILE_CONFIG['CFLAGS'] = ENV['CFLAGS'] if ENV['CFLAGS']
+RbConfig::MAKEFILE_CONFIG['CPPFLAGS'] = ENV['CPPFLAGS'] if ENV['CPPFLAGS']
+RbConfig::MAKEFILE_CONFIG['CXXFLAGS'] = ENV['CXXFLAGS'] if ENV['CXXFLAGS']
+EOF
+				cat $f > append2
+				# Use sed and enable verbose mode
+				cat<<EOF>>append2
+system("sed -i 's|^V =.*|V = 1|' Makefile")
+system("sed -i 's|^CFLAGS.*|CFLAGS = \$(CCDLFLAGS) ${VOID_TARGET_CFLAGS} \$(ARCH_FLAG)|' Makefile")
+system("sed -i 's|^topdir.*|topdir = ${XBPS_CROSS_BASE}/usr/include/ruby-\$(ruby_version)|' Makefile")
+system("sed -i 's|^hdrdir.*|hdrdir = ${XBPS_CROSS_BASE}/usr/include/ruby-\$(ruby_version)|' Makefile")
+system("sed -i 's|^arch_hdrdir.*|arch_hdrdir = ${XBPS_CROSS_BASE}/usr/include/ruby-\$(ruby_version)/\$(arch)|' Makefile")
+system("sed -i 's|^arch =.*|arch = ${_TARGET_PLATFORM}|' Makefile")
+system("sed -i 's|^dldflags =.*|dldflags = ${LDFLAGS}|' Makefile")
+EOF
+
+				# Create a backup which we will restore later
+				cp $f ${f}.orig
+
+				# Patch extconf.rb for cross compile
+				cat append append2 > $f
+			fi
+		done
+	fi
+
+	# If we are downloading a gem file then create a spec out of it
+	for f in $distfiles; do
+		if [ "${f##*.}" = "gem" ]; then
+			$gem_cmd spec \
+				"${XBPS_SRCDISTDIR}/${pkgname}-${version}/${f##*/}" \
+				--ruby > $gemspec
+		fi
+	done
+
+	sed 's|~>|>=|g' -i $gemspec
+
+	$gem_cmd build --verbose ${gemspec}
+
+	if [ "$CROSS_BUILD" ]; then
+		# Restore previous extconf.rb which we ship.
+		find . -type f -name 'extconf.rb.orig' | while read -r f; do
+			mv $f ${f%.*}
+		done
+	fi
+}
+
+do_install() {
+	: ${gem_cmd:=gem}
+
+	local _GEMDIR _INSTDIR
+
+	_GEMDIR=$($gem_cmd env gemdir)
+	_INSTDIR=${DESTDIR}/${_GEMDIR}/gems/${pkgname#ruby-}-${version}
+
+	# Ruby is very eager to add CFLAGS everywhere there is a compilation
+	# but we do both cross compilation of the modules and host compilation
+	# for checks, so unset CFLAGS and keep it in a separate value.
+	# We will manually pass CFLAGS as VOID_TAGET_CFLAGS to cross-compilation
+	# And ruby will use rbconfig.rb to get the proper CFLAGS for host compilation
+	VOID_TARGET_CFLAGS="$CFLAGS"
+	export VOID_TARGET_CFLAGS
+	unset CFLAGS
+
+	$gem_cmd install \
+		--local \
+		--install-dir ${DESTDIR}/${_GEMDIR} \
+		--bindir ${DESTDIR}/usr/bin \
+		--ignore-dependencies \
+		--no-document \
+		--verbose \
+		"${pkgname#ruby-}-${version}.gem" \
+		-- $configure_args
+
+	# Remove cache
+	rm -rf ${DESTDIR}/${_GEMDIR}/cache
+
+	# Remove ext directory, they are only source code and configuration
+	# The actual extensions are in a arch path guarded
+	rm -rf ${_INSTDIR}/ext
+
+	# Remove duplicated library that is available in a arch guarded
+	# extension
+	rm -rf ${_INSTDIR}/lib/*.so
+
+	# Remove installed tests and benchmarks
+	rm -rf ${_INSTDIR}/{test,tests,autotest,benchmark,benchmarks,script,examples,demo}
+
+	# Remove files shipped on the root of the gem, most of the time they are useless
+	find ${_INSTDIR} -maxdepth 1 -type f -delete
+
+	# Remove unnecessary files
+	find ${DESTDIR}/${_GEMDIR}/extensions \( -name mkmf.log -o -name gem_make.out \) -delete
+
+	# Place manpages in usr/share/man/man[0-9]
+	if [ -d ${_INSTDIR}/man ]; then
+		find ${_INSTDIR}/man -type f -name '*.[0-8n]' | while read -r m; do
+			vman ${m}
+		done
+	fi
+
+	rm -rf "${_INSTDIR}/man"
+
+	# Place executables in /usr/bin
+	if [ -d "${_INSTDIR}/bin" ]; then
+		for f in "${_INSTDIR}"/bin/*; do
+			vbin "${f}"
+		done
+	fi
+
+	rm -rf ${_INSTDIR}/bin
+
+	# Place conf files in their places
+	if [ -d ${_INSTDIR}/etc ]; then
+		find ${_INSTDIR}/etc -type f | while read -r c; do
+			vmkdir ${c%/*}/
+			mv ${c} "${DESTDIR}/${c##*${_INSTDIR}/etc/}/"
+		done
+	fi
+
+	rm -rf ${_INSTDIR}/etc
+
+	if [ "$CROSS_BUILD" ]; then
+
+		local _TARGET_PLATFORM _TARGET_EXT_DIR
+		
+		# Get arch of the target and host platform by reading the rbconfig.rb
+		# of the cross ruby
+		_TARGET_PLATFORM="$(ruby -r \
+			$(find ${XBPS_CROSS_BASE}/usr/lib/ruby -iname rbconfig.rb) \
+			-e 'puts RbConfig::CONFIG["arch"]' 2>/dev/null)"
+
+		# Path to the extensions on a package, ruby installs against the platform
+		# of the host, so we have to move them to the correct place
+		_TARGET_EXT_DIR="${DESTDIR}/${_GEMDIR}/extensions/${_TARGET_PLATFORM}"
+
+		find ${DESTDIR}/${_GEMDIR}/extensions -maxdepth 1 -type d \
+			-exec mv '{}' ${_TARGET_EXT_DIR} \;
+	fi
+}
diff --git a/common/build-style/gnu-configure.sh b/common/build-style/gnu-configure.sh
new file mode 100644
index 0000000..8121136
--- /dev/null
+++ b/common/build-style/gnu-configure.sh
@@ -0,0 +1,41 @@
+#
+# This helper is for templates using GNU configure scripts.
+#
+do_configure() {
+	: ${configure_script:=./configure}
+
+	export lt_cv_sys_lib_dlsearch_path_spec="/usr/lib64 /usr/lib32 /usr/lib /lib /usr/local/lib"
+	${configure_script} ${configure_args}
+}
+
+do_build() {
+	: ${make_cmd:=make}
+
+	export lt_cv_sys_lib_dlsearch_path_spec="/usr/lib64 /usr/lib32 /usr/lib /lib /usr/local/lib"
+	${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}
+}
+
+do_check() {
+	if [ -z "$make_cmd" ] && [ -z "$make_check_target" ]; then 
+		if make -q check 2>/dev/null; then
+			:
+		else
+			if [ $? -eq 2 ]; then
+				msg_warn 'No target to "make check".\n'
+				return 0
+			fi
+		fi
+	fi
+
+	: ${make_cmd:=make}
+	: ${make_check_target:=check}
+
+	${make_cmd} ${make_check_args} ${make_check_target}
+}
+
+do_install() {
+	: ${make_cmd:=make}
+	: ${make_install_target:=install}
+
+	${make_cmd} DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/gnu-makefile.sh b/common/build-style/gnu-makefile.sh
new file mode 100644
index 0000000..d7ea148
--- /dev/null
+++ b/common/build-style/gnu-makefile.sh
@@ -0,0 +1,41 @@
+#
+# This helper is for templates using GNU Makefiles.
+#
+do_build() {
+	: ${make_cmd:=make}
+
+	if [ -z "$make_use_env" ]; then
+		${make_cmd} \
+			CC="$CC" CXX="$CXX" LD="$LD" AR="$AR" RANLIB="$RANLIB" \
+			CPP="$CPP" AS="$AS" OBJCOPY="$OBJCOPY" OBJDUMP="$OBJDUMP" \
+			CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" \
+			${makejobs} ${make_build_args} ${make_build_target}
+	else
+		${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}
+	fi
+}
+
+do_check() {
+	if [ -z "$make_cmd" ] && [ -z "$make_check_target" ]; then 
+		if make -q check 2>/dev/null; then
+			:
+		else
+			if [ $? -eq 2 ]; then
+				msg_warn 'No target to "make check".\n'
+				return 0
+			fi
+		fi
+	fi
+
+	: ${make_cmd:=make}
+	: ${make_check_target:=check}
+
+	${make_cmd} ${make_check_args} ${make_check_target}
+}
+
+do_install() {
+	: ${make_cmd:=make}
+	: ${make_install_target:=install}
+
+	${make_cmd} STRIP=true PREFIX=/usr DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/go.sh b/common/build-style/go.sh
new file mode 100644
index 0000000..d18116e
--- /dev/null
+++ b/common/build-style/go.sh
@@ -0,0 +1,49 @@
+#
+# This helper is for templates for Go packages.
+#
+
+do_configure() {
+	# $go_import_path must be set, or we can't link $PWD into $GOSRCPATH
+	# nor build from modules
+	if [ -z "$go_import_path" ]; then
+		msg_error "\"\$go_import_path\" not set on $pkgname template.\n"
+	fi
+
+	# This isn't really configuration, but its needed by packages
+	# that do unusual things with the build where the expect to be
+	# able to cd into the $GOSRCPATH
+	if [ "${go_mod_mode}" != "off" ] && [ -f go.mod ]; then
+		# Skip GOPATH symlink for Go modules
+		msg_normal "Building $pkgname using Go modules.\n"
+	else
+		mkdir -p ${GOSRCPATH%/*}/
+		ln -fs "$PWD" "${GOSRCPATH}"
+	fi
+}
+
+do_build() {
+	go_package=${go_package:-$go_import_path}
+	# Build using Go modules if there's a go.mod file
+	if [ "${go_mod_mode}" != "off" ] && [ -f go.mod ]; then
+		if [ -z "${go_mod_mode}" ] && [ -d vendor ]; then
+			msg_normal "Using vendor dir for $pkgname Go dependencies.\n"
+			go_mod_mode=vendor
+		elif [ "${go_mod_mode}" = "default" ]; then
+			# Allow templates to explicitly opt into the go tool's
+			# default behavior.
+			go_mod_mode=
+		fi
+		go install -p "$XBPS_MAKEJOBS" -mod="${go_mod_mode}" -x -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package}
+	else
+		# Otherwise, build using GOPATH
+		go get -p "$XBPS_MAKEJOBS" -x -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package}
+	fi
+}
+
+do_install() {
+	for f in ${GOPATH}/bin/* ${GOPATH}/bin/**/*; do
+		if [ -f "$f" ] && [ -x "$f" ]; then
+			vbin "$f"
+		fi
+	done
+}
diff --git a/common/build-style/haskell-stack.sh b/common/build-style/haskell-stack.sh
new file mode 100644
index 0000000..2a28ffc
--- /dev/null
+++ b/common/build-style/haskell-stack.sh
@@ -0,0 +1,37 @@
+#
+# This helper is for templates built using Haskell stack.
+#
+# make_build_args="stack-build-flags"
+# stackage="lts-X.Y"  # or include a stack.yaml in $FILESDIR
+#
+do_build() {
+	# use --skip-ghc-check to really force stack to use the ghc in the system
+	# --system-ghc still downloads if stackage ghc version does not match ours
+	# this fails on all platforms other than x86_64 glibc when we bump ghc
+	local _stack_args="--system-ghc --skip-ghc-check"
+
+	if [ -f "${FILESDIR}/stack.yaml" ]; then
+		msg_normal "Using stack config in stack.yaml.\n"
+		cp "${FILESDIR}/stack.yaml" .
+	elif [ -z "$stackage" -a -f "stack.yaml" ]; then
+		msg_normal "Using stack.yaml from downloaded source.\n"
+	else
+		if [ -z "$stackage" ]; then
+			msg_error "Stackage version not set in \$stackage.\n"
+		fi
+		msg_normal "Using stackage resolver ${stackage}.\n"
+		STACK_ROOT="$wrksrc/.stack" \
+			stack init ${_stack_args} --force --resolver ${stackage}
+	fi
+
+	STACK_ROOT="$wrksrc/.stack" stack ${_stack_args} ${makejobs} build \
+		${make_build_args}
+}
+
+do_install() {
+	local _stack_args="--system-ghc --skip-ghc-check"
+
+	vmkdir usr/bin
+	STACK_ROOT="$wrksrc/.stack" stack ${_stack_args} install \
+	       	${make_build_args} --local-bin-path=${DESTDIR}/usr/bin
+}
diff --git a/common/build-style/meson.sh b/common/build-style/meson.sh
new file mode 100644
index 0000000..ab9f2ca
--- /dev/null
+++ b/common/build-style/meson.sh
@@ -0,0 +1,150 @@
+#
+# This helper is for templates using meson.
+#
+do_patch() {
+	: ${meson_crossfile:=xbps_meson.cross}
+
+	if [ "$CROSS_BUILD" ]; then
+		_MESON_TARGET_ENDIAN=little
+		# drop the -musl suffix to the target cpu, meson doesn't recognize it
+		_MESON_TARGET_CPU=${XBPS_TARGET_MACHINE/-musl/}
+		case "$XBPS_TARGET_MACHINE" in
+			mips|mips-musl|mipshf-musl)
+				_MESON_TARGET_ENDIAN=big
+				_MESON_CPU_FAMILY=mips
+				;;
+			armv*)
+				_MESON_CPU_FAMILY=arm
+				;;
+			i686*)
+				_MESON_CPU_FAMILY=x86
+				;;
+			ppc64le*)
+				_MESON_CPU_FAMILY=ppc64
+				;;
+			ppc64*)
+				_MESON_TARGET_ENDIAN=big
+				_MESON_CPU_FAMILY=ppc64
+				;;
+			ppcle*)
+				_MESON_CPU_FAMILY=ppc
+				;;
+			ppc*)
+				_MESON_TARGET_ENDIAN=big
+				_MESON_CPU_FAMILY=ppc
+				;;
+			*)
+				# if we reached here that means that the cpu and cpu_family
+				# are the same like 'x86_64' and 'aarch64'
+				_MESON_CPU_FAMILY=${_MESON_TARGET_CPU}
+				;;
+		esac
+
+		# Record cross-compiling information in cross file.
+		# CFLAGS and LDFLAGS must be set as c_args and c_link_args.
+		cat > ${meson_crossfile} <<EOF
+[binaries]
+c = '${CC}'
+cpp = '${CXX}'
+ar = '${XBPS_CROSS_TRIPLET}-gcc-ar'
+nm = '${NM}'
+ld = '${LD}'
+strip = '${STRIP}'
+readelf = '${READELF}'
+objcopy = '${OBJCOPY}'
+pkgconfig = '${PKG_CONFIG}'
+rust = ['rustc', '--target', '${RUST_TARGET}' ,'--sysroot', '${XBPS_CROSS_BASE}/usr']
+g-ir-scanner = '${XBPS_CROSS_BASE}/usr/bin/g-ir-scanner'
+g-ir-compiler = '${XBPS_CROSS_BASE}/usr/bin/g-ir-compiler'
+g-ir-generate = '${XBPS_CROSS_BASE}/usr/bin/g-ir-generate'
+llvm-config = '/usr/bin/llvm-config'
+cups-config = '${XBPS_CROSS_BASE}/usr/bin/cups-config'
+
+[properties]
+needs_exe_wrapper = true
+
+[built-in options]
+c_args = ['$(echo ${CFLAGS} | sed -r "s/\s+/','/g")']
+c_link_args = ['$(echo ${LDFLAGS} | sed -r "s/\s+/','/g")']
+
+cpp_args = ['$(echo ${CXXFLAGS} | sed -r "s/\s+/','/g")']
+cpp_link_args = ['$(echo ${LDFLAGS} | sed -r "s/\s+/','/g")']
+
+[host_machine]
+system = 'linux'
+cpu_family = '${_MESON_CPU_FAMILY}'
+cpu = '${_MESON_TARGET_CPU}'
+endian = '${_MESON_TARGET_ENDIAN}'
+EOF
+		if [[ $build_helper = *"qemu"* ]]; then
+			sed -e "/\[binaries\]/ a exe_wrapper = '/usr/bin/qemu-${XBPS_TARGET_QEMU_MACHINE}-static'" \
+				-i ${meson_crossfile}
+		fi
+
+		unset _MESON_CPU_FAMILY _MESON_TARGET_CPU _MESON_TARGET_ENDIAN
+	fi
+}
+
+do_configure() {
+	: ${meson_cmd:=meson}
+	: ${meson_builddir:=build}
+	: ${meson_crossfile:=xbps_meson.cross}
+
+	if [ "$CROSS_BUILD" ]; then
+		configure_args+=" --cross-file=${meson_crossfile}"
+	fi
+
+	# binutils ar needs a plugin when LTO is used on static libraries, so we
+	# have to use the gcc-ar wrapper that calls the correct plugin.
+	# As seen in https://github.com/mesonbuild/meson/issues/1646 (and its
+	# solution, https://github.com/mesonbuild/meson/pull/1649), meson fixed
+	# issues with static libraries + LTO by defaulting to gcc-ar themselves.
+	# We also force gcc-ar usage in the crossfile above.
+	export AR="gcc-ar"
+
+	# unbuffered output for continuous logging
+	PYTHONUNBUFFERED=1 ${meson_cmd} \
+		--prefix=/usr \
+		--libdir=/usr/lib${XBPS_TARGET_WORDSIZE} \
+		--libexecdir=/usr/libexec \
+		--bindir=/usr/bin \
+		--sbindir=/usr/bin \
+		--includedir=/usr/include \
+		--datadir=/usr/share \
+		--mandir=/usr/share/man \
+		--infodir=/usr/share/info \
+		--localedir=/usr/share/locale \
+		--sysconfdir=/etc \
+		--localstatedir=/var \
+		--sharedstatedir=/var/lib \
+		--buildtype=plain \
+		--auto-features=auto \
+		--wrap-mode=nodownload \
+		-Db_lto=true -Db_ndebug=true \
+		-Db_staticpic=true \
+		${configure_args} . ${meson_builddir}
+}
+
+do_build() {
+	: ${make_cmd:=ninja}
+	: ${make_build_target:=all}
+	: ${meson_builddir:=build}
+
+	${make_cmd} -C ${meson_builddir} ${makejobs} ${make_build_args} ${make_build_target}
+}
+
+do_check() {
+	: ${make_cmd:=ninja}
+	: ${make_check_target:=test}
+	: ${meson_builddir:=build}
+
+	${make_cmd} -C ${meson_builddir} ${makejobs} ${make_check_args} ${make_check_target}
+}
+
+do_install() {
+	: ${make_cmd:=ninja}
+	: ${make_install_target:=install}
+	: ${meson_builddir:=build}
+
+	DESTDIR=${DESTDIR} ${make_cmd} -C ${meson_builddir} ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/meta.sh b/common/build-style/meta.sh
new file mode 100644
index 0000000..c2dbce1
--- /dev/null
+++ b/common/build-style/meta.sh
@@ -0,0 +1,9 @@
+# meta pkg build style; do nothing.
+
+do_fetch() {
+	:
+}
+
+do_install() {
+	:
+}
diff --git a/common/build-style/perl-ModuleBuild.sh b/common/build-style/perl-ModuleBuild.sh
new file mode 100644
index 0000000..a84373b
--- /dev/null
+++ b/common/build-style/perl-ModuleBuild.sh
@@ -0,0 +1,52 @@
+#
+# This helper does the required steps to be able to build and install
+# perl modules with the Module::Build method into the correct location.
+#
+# Required vars to be set by a template:
+#
+# 	build_style=perl-ModuleBuild
+#
+do_configure() {
+	if [ -f Build.PL ]; then
+		# When cross compiling Module::Build reads in the build flags from the host perl, not the target:
+		# extract the target specific flags (the ones also set in perl’s template) from
+		# the target perl configuration and use them to override Module::Build’s default
+		_conf="${XBPS_CROSS_BASE}/usr/lib/perl5/core_perl/Config_heavy.pl"
+		_optimize=$(sed -n "s;^optimize='\(.*\)';\1;p" $_conf)
+		_ccflags=$(sed -n "s;^ccflags='\(.*\)';\1;p" $_conf)
+		_lddlflags=$(sed -n "s;^lddlflags='\(.*\)';\1;p" $_conf)
+		_ldflags=$(sed -n "s;^ldflags='\(.*\)';\1;p" $_conf)
+		_archlibexp=$(sed -n "s;^archlibexp='\(.*\)';\1;p" $_conf)
+
+		PERL_MM_USE_DEFAULT=1 PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$DESTDIR'" \
+			PERL_MB_OPT="--installdirs vendor --destdir '$DESTDIR'" \
+			LD="$CC" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
+			perl Build.PL --config optimize="$_optimize" --config ccflags="$_ccflags" \
+			--config lddlflags="$_lddlflags" --config ldflags="$_ldflags" \
+			--config archlibexp="${XBPS_CROSS_BASE}${_archlibexp}" \
+			${configure_args} INSTALLDIRS=vendor
+	else
+		msg_error "$pkgver: cannot find Build.PL for perl module!\n"
+	fi
+}
+
+do_build() {
+	if [ ! -x ./Build ]; then
+		msg_error "$pkgver: cannot find ./Build script!\n"
+	fi
+	LD="$CC" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" ./Build ${make_build_args}
+}
+
+do_check() {
+	if [ ! -x ./Build ]; then
+		msg_error "$pkgver: cannot find ./Build script!\n"
+	fi
+	./Build test
+}
+
+do_install() {
+	if [ ! -x ./Build ]; then
+		msg_error "$pkgver: cannot find ./Build script!\n"
+	fi
+	./Build ${make_install_args} install
+}
diff --git a/common/build-style/perl-module.sh b/common/build-style/perl-module.sh
new file mode 100644
index 0000000..b9a01b1
--- /dev/null
+++ b/common/build-style/perl-module.sh
@@ -0,0 +1,90 @@
+#
+# This helper does the required steps to be able to build and install
+# perl modules that use MakeMaker into the correct location.
+#
+# Required vars to be set by a template:
+#
+# 	build_style=perl-module
+#
+# Optionally if the module needs more directories to be configured other
+# than $XBPS_BUILDDIR/$wrksrc/$build_wrksrc, one can use (relative to
+# $wrksrc/$build_wrksrc):
+#
+#	perl_configure_dirs="blob/bob foo/blah"
+#
+do_configure() {
+	local perlmkf
+
+	local perlprefix=${XBPS_STATEDIR}/perlprefix-${XBPS_TARGET_MACHINE}
+	mkdir -p $perlprefix
+	if [ -d "$XBPS_CROSS_BASE/usr/lib/perl5/core_perl" ]; then
+		cp "$XBPS_CROSS_BASE/usr/lib/perl5/core_perl/Config"*.p? $perlprefix
+		cp "$XBPS_CROSS_BASE/usr/lib/perl5/core_perl/Errno.pm" $perlprefix
+		sed -i -e "s;archlibexp => '\(.*\)';archlibexp => '${XBPS_CROSS_BASE}\1';" \
+			${perlprefix}/Config.pm
+		sed -i -e "s;^archlibexp='\(.*\)';archlibexp='${XBPS_CROSS_BASE}\1';" \
+			${perlprefix}/Config_heavy.pl
+	else
+		cp "/usr/lib/perl5/core_perl/Config"*.p? $perlprefix
+		cp "/usr/lib/perl5/core_perl/Errno.pm" $perlprefix
+	fi
+	export PERL5LIB=$perlprefix
+
+	if [ -f "${wrksrc}/${build_wrksrc:+$build_wrksrc/}Makefile.PL" ]; then
+		sed -i "s,/usr/include,${XBPS_CROSS_BASE}/usr/include,g" \
+		"${wrksrc}/${build_wrksrc:+$build_wrksrc/}Makefile.PL"
+	fi
+
+	if [ -z "$perl_configure_dirs" ]; then
+		perlmkf="$wrksrc/${build_wrksrc:+$build_wrksrc/}Makefile.PL"
+		if [ ! -f "$perlmkf" ]; then
+			msg_error "*** ERROR couldn't find $perlmkf, aborting ***\n"
+		fi
+
+		cd "$wrksrc/${build_wrksrc:+$build_wrksrc}"
+		PERL_MM_USE_DEFAULT=1 GCC="$CC" CC="$CC" LD="$CC" \
+			OPTIMIZE="$CFLAGS" \
+			CFLAGS="$CFLAGS -I${XBPS_CROSS_BASE}/usr/include" \
+			LDFLAGS="$LDFLAGS -L${XBPS_CROSS_BASE}/usr/lib -lperl" \
+			LDDLFLAGS="-shared $CFLAGS -L${XBPS_CROSS_BASE}/usr/lib" \
+			perl -I. Makefile.PL ${configure_args} INSTALLDIRS=vendor
+	fi
+
+	for i in ${perl_configure_dirs}; do
+		perlmkf="$wrksrc/${build_wrksrc:+$build_wrksrc/}$i/Makefile.PL"
+		if [ -f "$perlmkf" ]; then
+			cd "$wrksrc/${build_wrksrc:+$build_wrksrc/}$i"
+			PERL_MM_USE_DEFAULT=1 GCC="$CC" CC="$CC" LD="$CC" \
+				OPTIMIZE="$CFLAGS" \
+				CFLAGS="$CFLAGS -I${XBPS_CROSS_BASE}/usr/include" \
+				LDFLAGS="$LDFLAGS -L${XBPS_CROSS_BASE}/usr/lib -lperl" \
+				LDDLFLAGS="-shared $CFLAGS -L${XBPS_CROSS_BASE}/usr/lib -lperl" \
+				perl -I. Makefile.PL ${make_build_args} INSTALLDIRS=vendor
+		else
+			msg_error "*** ERROR: couldn't find $perlmkf, aborting **\n"
+		fi
+	done
+}
+
+do_build() {
+	: ${make_cmd:=make}
+
+	${make_cmd} CC="$CC" LD="$CC" CFLAGS="$CFLAGS" OPTIMIZE="$CFLAGS" \
+		LDFLAGS="$LDFLAGS -L${XBPS_CROSS_BASE}/usr/lib -lperl" \
+		LDDLFLAGS="-shared $CFLAGS -L${XBPS_CROSS_BASE}/usr/lib -lperl" \
+		${makejobs} ${make_build_args} ${make_build_target}
+}
+
+do_check() {
+	: ${make_cmd:=make}
+	: ${make_check_target:=test}
+
+	${make_cmd} ${make_check_args} ${make_check_target}
+}
+
+do_install() {
+	: ${make_cmd:=make}
+	: ${make_install_target:=install}
+
+	${make_cmd} DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/python-module.sh b/common/build-style/python-module.sh
new file mode 100644
index 0000000..15cf757
--- /dev/null
+++ b/common/build-style/python-module.sh
@@ -0,0 +1,96 @@
+#
+# This helper is for templates installing python modules.
+#
+
+do_build() {
+	: ${python_versions:="2.7 $py3_ver"}
+	local pyver= tmp_cflags="$CFLAGS" tmp_ldflags="$LDFLAGS"
+
+	for pyver in $python_versions; do
+		if [ -n "$CROSS_BUILD" ]; then
+			CFLAGS="$tmp_cflags"
+			LDFLAGS="$tmp_ldflags"
+			ADDENV=
+
+			PYPREFIX="$XBPS_CROSS_BASE"
+			CFLAGS+=" -I${XBPS_CROSS_BASE}/include/python${pyver} -I${XBPS_CROSS_BASE}/usr/include"
+			LDFLAGS+=" -L${XBPS_CROSS_BASE}/lib/python${pyver} -L${XBPS_CROSS_BASE}/usr/lib"
+			CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
+			LDSHARED="${CC} -shared $LDFLAGS"
+			case $pyver in
+			3.*)
+				for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do
+					f=${f##*/}
+					_PYTHON_SYSCONFIGDATA_NAME=${f%.py}
+				done
+				ADDENV+=" PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib}"
+				ADDENV+=" _PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME""
+			esac
+			env CC="$CC" LDSHARED="$LDSHARED" $ADDENV \
+				PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
+				LDFLAGS="$LDFLAGS" python${pyver} setup.py \
+					build --build-base=build-${pyver} ${make_build_args}
+		else
+			python${pyver} setup.py build --build-base=build-${pyver} ${make_build_args}
+		fi
+	done
+}
+
+do_check() {
+	: ${python_versions:="2.7 $py3_ver"}
+
+	for pyver in $python_versions; do
+		ln -s build-${pyver} build
+		if [ -z "$make_check_target" ]; then
+			if ! python${pyver} setup.py --help test >/dev/null 2>&1; then
+				msg_warn "No command 'test' defined by setup.py for python${pyver}.\n"
+				rm build
+				return 0
+			fi
+		fi
+
+		python${pyver} setup.py ${make_check_target:-test} ${make_check_args}
+		rm build
+	done
+}
+
+do_install() {
+	: ${python_versions:="2.7 $py3_ver"}
+	local pyver=
+
+	for pyver in $python_versions; do
+		if [ -n "$CROSS_BUILD" ]; then
+			ADDENV=
+			PYPREFIX="$XBPS_CROSS_BASE"
+			CFLAGS+=" -I${XBPS_CROSS_BASE}/include/python${pyver} -I${XBPS_CROSS_BASE}/usr/include"
+			LDFLAGS+=" -L${XBPS_CROSS_BASE}/lib/python${pyver} -L${XBPS_CROSS_BASE}/usr/lib"
+			CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
+			LDSHARED="${CC} -shared $LDFLAGS"
+			case $pyver in
+			3.*)
+				for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do
+					f=${f##*/}
+					_PYTHON_SYSCONFIGDATA_NAME=${f%.py}
+				done
+				ADDENV+=" PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib}"
+				ADDENV+=" _PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME""
+			esac
+			env CC="$CC" LDSHARED="$LDSHARED" $ADDENV \
+				PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
+				LDFLAGS="$LDFLAGS" python${pyver} setup.py \
+					build --build-base=build-${pyver} \
+					install --prefix=/usr --root=${DESTDIR} ${make_install_args}
+		else
+			python${pyver} setup.py build --build-base=build-${pyver} \
+				install --prefix=/usr --root=${DESTDIR} ${make_install_args}
+		fi
+
+		# Rename unversioned scripts to avoid name conflicts.
+		if [ -d ${DESTDIR}/usr/bin ]; then
+			find ${DESTDIR}/usr/bin -type f ! -name "*[[:digit:]]" | while IFS= read -r f _; do
+				mv "${f}" "${f}${pyver%.*}"
+				echo "[python-module] Unversioned script renamed to '${f#$DESTDIR}${pyver%.*}'"
+			done
+		fi
+	done
+}
diff --git a/common/build-style/python2-module.sh b/common/build-style/python2-module.sh
new file mode 100644
index 0000000..0a31b15
--- /dev/null
+++ b/common/build-style/python2-module.sh
@@ -0,0 +1,34 @@
+#
+# This helper is for templates installing python2-only modules.
+#
+
+do_build() {
+	if [ -n "$CROSS_BUILD" ]; then
+		PYPREFIX="$XBPS_CROSS_BASE"
+		CFLAGS+=" -I${XBPS_CROSS_BASE}/${py2_inc} -I${XBPS_CROSS_BASE}/usr/include"
+		LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py2_lib} -L${XBPS_CROSS_BASE}/usr/lib"
+		CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
+		LDSHARED="${CC} -shared $LDFLAGS"
+		env CC="$CC" LDSHARED="$LDSHARED" \
+			PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
+			LDFLAGS="$LDFLAGS" python2 setup.py build ${make_build_args}
+	else
+		python2 setup.py build ${make_build_args}
+	fi
+}
+
+do_install() {
+	if [ -n "$CROSS_BUILD" ]; then
+		PYPREFIX="$XBPS_CROSS_BASE"
+		CFLAGS+=" -I${XBPS_CROSS_BASE}/${py2_inc} -I${XBPS_CROSS_BASE}/usr/include"
+		LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py2_lib} -L${XBPS_CROSS_BASE}/usr/lib"
+		CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
+		LDSHARED="${CC} -shared $LDFLAGS"
+		env CC="$CC" LDSHARED="$LDSHARED" \
+			PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
+			LDFLAGS="$LDFLAGS" python2 setup.py \
+				install --prefix=/usr --root=${DESTDIR} ${make_install_args}
+	else
+		python2 setup.py install --prefix=/usr --root=${DESTDIR} ${make_install_args}
+	fi
+}
diff --git a/common/build-style/python3-module.sh b/common/build-style/python3-module.sh
new file mode 100644
index 0000000..093bdae
--- /dev/null
+++ b/common/build-style/python3-module.sh
@@ -0,0 +1,64 @@
+#
+# This helper is for templates installing python3-only modules.
+#
+
+do_build() {
+	if [ -n "$CROSS_BUILD" ]; then
+		PYPREFIX="$XBPS_CROSS_BASE"
+		CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_inc} -I${XBPS_CROSS_BASE}/usr/include"
+		LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_lib} -L${XBPS_CROSS_BASE}/usr/lib"
+		CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
+		LDSHARED="${CC} -shared $LDFLAGS"
+		for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do
+			f=${f##*/}
+			_PYTHON_SYSCONFIGDATA_NAME=${f%.py}
+		done
+		env CC="$CC" LDSHARED="$LDSHARED" \
+			PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
+			PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib} \
+			_PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME" \
+			LDFLAGS="$LDFLAGS" python3 setup.py build ${make_build_args}
+	else
+		python3 setup.py build ${make_build_args}
+	fi
+}
+
+do_check() {
+	if python3 -c 'import pytest' >/dev/null 2>&1; then
+		PYTHONPATH="$(cd build/lib* && pwd)" \
+			python3 -m pytest ${make_check_args} ${make_check_target}
+	else
+		# Fall back to deprecated setup.py test orchestration without pytest
+		if [ -z "$make_check_target" ]; then
+			if ! python3 setup.py --help test >/dev/null 2>&1; then
+				msg_warn "No command 'test' defined by setup.py.\n"
+				return 0
+			fi
+		fi
+
+		: ${make_check_target:=test}
+		python3 setup.py ${make_check_target} ${make_check_args}
+	fi
+}
+
+do_install() {
+	if [ -n "$CROSS_BUILD" ]; then
+		PYPREFIX="$XBPS_CROSS_BASE"
+		CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_inc} -I${XBPS_CROSS_BASE}/usr/include"
+		LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_lib} -L${XBPS_CROSS_BASE}/usr/lib"
+		CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
+		LDSHARED="${CC} -shared $LDFLAGS"
+		for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do
+			f=${f##*/}
+			_PYTHON_SYSCONFIGDATA_NAME=${f%.py}
+		done
+		env CC="$CC" LDSHARED="$LDSHARED" \
+			PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
+			PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib} \
+			_PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME" \
+			LDFLAGS="$LDFLAGS" python3 setup.py \
+				install --prefix=/usr --root=${DESTDIR} ${make_install_args}
+	else
+		python3 setup.py install --prefix=/usr --root=${DESTDIR} ${make_install_args}
+	fi
+}
diff --git a/common/build-style/python3-pep517.sh b/common/build-style/python3-pep517.sh
new file mode 100644
index 0000000..075f954
--- /dev/null
+++ b/common/build-style/python3-pep517.sh
@@ -0,0 +1,33 @@
+#
+# This style is for templates installing python3 modules adhering to PEP517
+#
+
+do_build() {
+	# No PEP517 build tool currently supports compiled extensions
+	# Thus, there is no need to accommodate cross compilation here
+	: ${make_build_target:=.}
+
+	mkdir -p build
+	TMPDIR=build python3 -m pip wheel --no-deps --use-pep517 --no-clean \
+		--no-build-isolation ${make_build_args} ${make_build_target}
+}
+
+do_check() {
+	if python3 -c 'import pytest' >/dev/null 2>&1; then
+		python3 -m pytest ${make_check_args} ${make_check_target}
+	else
+		msg_warn "Unable to determine tests for PEP517 Python templates"
+		return 0
+	fi
+}
+
+do_install() {
+	# As with do_build, no need to accommodate cross compilation here
+	: ${make_install_target:=${pkgname#python3-}-${version}-*-*-*.whl}
+
+	# If do_build was overridden, make sure the TMPDIR exists
+	mkdir -p build
+	TMPDIR=build python3 -m pip install --use-pep517 --prefix /usr \
+		--root ${DESTDIR} --no-deps --no-build-isolation \
+		--no-clean ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/qmake.sh b/common/build-style/qmake.sh
new file mode 100644
index 0000000..25d6225
--- /dev/null
+++ b/common/build-style/qmake.sh
@@ -0,0 +1,148 @@
+#
+# This helper is for templates using Qt4/Qt5 qmake.
+#
+do_configure() {
+	local qmake
+	local qmake_args
+	if [ -x "/usr/lib/qt5/bin/qmake" ]; then
+		# Qt5 qmake
+		qmake="/usr/lib/qt5/bin/qmake"
+	fi
+	if [ -x "/usr/lib/qt/bin/qmake" ]; then
+		# Qt4 qmake
+		qmake="/usr/lib/qt/bin/qmake"
+	fi
+	if [ -z "${qmake}" ]; then
+		msg_error "${pkgver}: Could not find qmake - missing in hostmakedepends?\n"
+	fi
+	if [ "$CROSS_BUILD" ] && [ "$qmake" == "/usr/lib/qt5/bin/qmake" ]; then
+		case $XBPS_TARGET_MACHINE in
+			i686*) _qt_arch=i386;;
+			x86_64*) _qt_arch=x86_64;;
+			aarch64*) _qt_arch=arm64;;
+			arm*) _qt_arch=arm;;
+			mips*) _qt_arch=mips;;
+			ppc64*) _qt_arch=power64;;
+			ppc*) _qt_arch=power;;
+		esac
+		mkdir -p "${wrksrc}/.target-spec/linux-g++"
+		cat > "${wrksrc}/.target-spec/linux-g++/qmake.conf" <<_EOF
+MAKEFILE_GENERATOR      = UNIX
+CONFIG                 += incremental no_qt_rpath
+QMAKE_INCREMENTAL_STYLE = sublib
+
+include(/usr/lib/qt5/mkspecs/common/linux.conf)
+include(/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf)
+include(/usr/lib/qt5/mkspecs/common/g++-unix.conf)
+
+QMAKE_TARGET_CONFIG     = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qconfig.pri
+QMAKE_TARGET_MODULE     = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qmodule.pri
+QMAKEMODULES            = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/modules
+QMAKE_CC                = ${CC}
+QMAKE_CXX               = ${CXX}
+QMAKE_LINK              = ${CXX}
+QMAKE_LINK_C            = ${CC}
+QMAKE_LINK_SHLIB        = ${CXX}
+
+QMAKE_AR                = ${XBPS_CROSS_TRIPLET}-gcc-ar cqs
+QMAKE_OBJCOPY           = ${OBJCOPY}
+QMAKE_NM                = ${NM} -P
+QMAKE_STRIP             = ${STRIP}
+
+QMAKE_CFLAGS            = ${CFLAGS}
+QMAKE_CXXFLAGS          = ${CXXFLAGS}
+QMAKE_LFLAGS            = ${LDFLAGS}
+load(qt_config)
+_EOF
+		echo "#include \"${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/linux-g++/qplatformdefs.h\"" > "${wrksrc}/.target-spec/linux-g++/qplatformdefs.h"
+
+		mkdir -p "${wrksrc}/.host-spec/linux-g++"
+		cat > "${wrksrc}/.host-spec/linux-g++/qmake.conf" <<_EOF
+MAKEFILE_GENERATOR      = UNIX
+CONFIG                 += incremental no_qt_rpath
+QMAKE_INCREMENTAL_STYLE = sublib
+
+include(/usr/lib/qt5/mkspecs/common/linux.conf)
+include(/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf)
+include(/usr/lib/qt5/mkspecs/common/g++-unix.conf)
+
+QMAKE_TARGET_CONFIG     = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qconfig.pri
+QMAKE_TARGET_MODULE     = ${XBPS_CROSS_BASE}/usr/lib/qt5/mkspecs/qmodule.pri
+QMAKE_CC                = ${CC_host}
+QMAKE_CXX               = ${CXX_host}
+QMAKE_LINK              = ${CXX_host}
+QMAKE_LINK_C            = ${CC_host}
+QMAKE_LINK_SHLIB        = ${CXX_host}
+
+QMAKE_AR                = gcc-ar cqs
+QMAKE_OBJCOPY           = ${OBJCOPY_host}
+QMAKE_NM                = ${NM_host} -P
+QMAKE_STRIP             = ${STRIP_host}
+
+QMAKE_CFLAGS            = ${CFLAGS_host}
+QMAKE_CXXFLAGS          = ${CXXFLAGS_host}
+QMAKE_LFLAGS            = ${LDFLAGS_host}
+load(qt_config)
+_EOF
+echo '#include "/usr/lib/qt5/mkspecs/linux-g++/qplatformdefs.h"' > "${wrksrc}/.host-spec/linux-g++/qplatformdefs.h"
+		cat > "${wrksrc}/qt.conf" <<_EOF
+[Paths]
+Sysroot=${XBPS_CROSS_BASE}
+Prefix=/usr
+ArchData=${XBPS_CROSS_BASE}/usr/lib/qt5
+Data=${XBPS_CROSS_BASE}/usr/share/qt5
+Documentation=${XBPS_CROSS_BASE}/usr/share/doc/qt5
+Headers=${XBPS_CROSS_BASE}/usr/include/qt5
+Libraries=${XBPS_CROSS_BASE}/usr/lib
+LibraryExecutables=/usr/lib/qt5/libexec
+Binaries=/usr/lib/qt5/bin
+Tests=${XBPS_CROSS_BASE}/usr/tests
+Plugins=/usr/lib/qt5/plugins
+Imports=${XBPS_CROSS_BASE}/usr/lib/qt5/imports
+Qml2Imports=${XBPS_CROSS_BASE}/usr/lib/qt5/qml
+Translations=${XBPS_CROSS_BASE}/usr/share/qt5/translations
+Settings=${XBPS_CROSS_BASE}/etc/xdg
+Examples=${XBPS_CROSS_BASE}/usr/share/qt5/examples
+HostPrefix=/usr
+HostData=/usr/lib/qt5
+HostBinaries=/usr/lib/qt5/bin
+HostLibraries=/usr/lib
+Spec=${wrksrc}/.host-spec/linux-g++
+TargetSpec=${wrksrc}/.target-spec/linux-g++
+_EOF
+		qmake_args="-qtconf ${wrksrc}/qt.conf PKG_CONFIG_EXECUTABLE=${XBPS_WRAPPERDIR}/${PKG_CONFIG}"
+		${qmake} ${qmake_args} \
+			PREFIX=/usr \
+			QT_INSTALL_PREFIX=/usr \
+			LIB=/usr/lib \
+			QT_TARGET_ARCH=$_qt_arch \
+			${configure_args}
+	else
+		${qmake} ${qmake_args} \
+			PREFIX=/usr \
+			QT_INSTALL_PREFIX=/usr \
+			LIB=/usr/lib \
+			QMAKE_CC=$CC QMAKE_CXX=$CXX \
+			QMAKE_LINK=$CXX QMAKE_LINK_C=$CC \
+			QMAKE_CFLAGS="${CFLAGS}" \
+			QMAKE_CXXFLAGS="${CXXFLAGS}" \
+			QMAKE_LFLAGS="${LDFLAGS}" \
+			CONFIG+=no_qt_rpath \
+			${configure_args}
+	fi
+}
+
+do_build() {
+	: ${make_cmd:=make}
+
+	${make_cmd} ${makejobs} ${make_build_args} ${make_build_target} \
+		CC="$CC" CXX="$CXX" LINK="$CXX"
+}
+
+do_install() {
+	: ${make_cmd:=make}
+	: ${make_install_target:=install}
+
+	${make_cmd} STRIP=true PREFIX=/usr DESTDIR=${DESTDIR} \
+		INSTALL_ROOT=${DESTDIR} ${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/raku-dist.sh b/common/build-style/raku-dist.sh
new file mode 100644
index 0000000..3b1f28d
--- /dev/null
+++ b/common/build-style/raku-dist.sh
@@ -0,0 +1,16 @@
+#
+# This helper is for Raku package templates.
+#
+
+do_check() {
+	RAKULIB=lib prove -r -e raku t/
+}
+
+do_install() {
+	export RAKUDO_LOG_PRECOMP=1
+	export RAKUDO_RERESOLVE_DEPENDENCIES=0
+	raku-install-dist \
+		--to=${DESTDIR}/usr/lib/raku/vendor \
+		--for=vendor \
+		--from=.
+}
diff --git a/common/build-style/ruby-module.sh b/common/build-style/ruby-module.sh
new file mode 100644
index 0000000..c45d1cd
--- /dev/null
+++ b/common/build-style/ruby-module.sh
@@ -0,0 +1,13 @@
+#
+# This helper is for templates installing ruby modules.
+#
+
+do_install() {
+	local _vendorlibdir=$(ruby -e 'puts RbConfig::CONFIG["vendorlibdir"]')
+
+	if [ "$XBPS_WORDSIZE" != "$XBPS_TARGET_WORDSIZE" ]; then
+		_vendorlibdir="${_vendorlibdir//lib$XBPS_WORDSIZE/lib$XBPS_TARGET_WORDSIZE}"
+	fi
+
+	LANG=C ruby install.rb --destdir=${DESTDIR} --sitelibdir=${_vendorlibdir} ${make_install_args}
+}
diff --git a/common/build-style/scons.sh b/common/build-style/scons.sh
new file mode 100644
index 0000000..17527d7
--- /dev/null
+++ b/common/build-style/scons.sh
@@ -0,0 +1,26 @@
+#
+# This helper is for templates using scons.
+#
+do_build() {
+	: ${make_cmd:=scons}
+
+	${make_cmd} ${makejobs} CC=$CC CXX=$CXX CCFLAGS="$CFLAGS" \
+		cc=$CC cxx=$CXX ccflags="$CFLAGS" \
+		CXXFLAGS="$CXXFLAGS" LINKFLAGS="$LDFLAGS" \
+		cxxflags="$CXXFLAGS" linkflags="$LDFLAGS" \
+		RANLIB="$RANLIB" ranlib="$RANLIB" \
+		prefix=/usr destdir=${DESTDIR} DESTDIR=${DESTDIR} \
+		${make_build_args} ${make_build_target}
+}
+do_install() {
+	: ${make_cmd:=scons}
+	: ${make_install_target:=install}
+
+	${make_cmd} ${makejobs} CC=$CC CXX=$CXX CCFLAGS="$CFLAGS" \
+		cc=$CC cxx=$CXX ccflags="$CFLAGS" \
+		CXXFLAGS="$CXXFLAGS" LINKFLAGS="$LDFLAGS" \
+		cxxflags="$CXXFLAGS" linkflags="$LDFLAGS" \
+		RANLIB="$RANLIB" ranlib="$RANLIB" \
+		prefix=/usr destdir=${DESTDIR} DESTDIR=${DESTDIR} \
+		${make_install_args} ${make_install_target}
+}
diff --git a/common/build-style/sip-build.sh b/common/build-style/sip-build.sh
new file mode 100644
index 0000000..d8b3bce
--- /dev/null
+++ b/common/build-style/sip-build.sh
@@ -0,0 +1,147 @@
+#
+# This helper is for templates using sip-build.
+#
+
+do_configure() {
+	local _qt=
+	local _spec=
+	local _mkspec=
+
+	: "${sip_builddir:=build}"
+	mkdir -p "$sip_builddir"
+
+	if [ ! -d /$py3_sitelib/pyqtbuild ]; then
+		: "who uses sip-build without qmake anyway?"
+	elif [ -x /usr/lib/qt6/bin/qmake ]; then
+		_qt=qt6
+	elif [ -x /usr/lib/qt5/bin/qmake ]; then
+		_qt=qt5
+	else
+		msg_error 'qmake not found\n'
+	fi
+
+	if [ ! "$_qt" ]; then
+		: "who use sip-build without qmake anyway?"
+	elif [ "$CROSS_BUILD" ]; then
+		_mkspec="usr/lib/$_qt/mkspecs"
+		_spec="$XBPS_WRAPPERDIR/sip-build/target-spec/linux-g++"
+		mkdir -p "$_spec"
+		cat >"$_spec/qmake.conf" <<-_EOF
+		MAKEFILE_GENERATOR      = UNIX
+		CONFIG                 += incremental no_qt_rpath
+		QMAKE_INCREMENTAL_STYLE = sublib
+
+		include(/$_mkspec/common/linux.conf)
+		include(/$_mkspec/common/gcc-base-unix.conf)
+		include(/$_mkspec/common/g++-unix.conf)
+
+		QMAKE_TARGET_CONFIG     = $XBPS_CROSS_BASE/$_mkspec/qconfig.pri
+		QMAKE_TARGET_MODULE     = $XBPS_CROSS_BASE/$_mkspec/qmodule.pri
+		QMAKEMODULES            = $XBPS_CROSS_BASE/$_mkspec/modules
+		QMAKE_CC                = $CC
+		QMAKE_CXX               = $CXX
+		QMAKE_LINK              = $CXX
+		QMAKE_LINK_C            = $CC
+		QMAKE_LINK_SHLIB        = $CXX
+
+		QMAKE_AR                = $XBPS_CROSS_TRIPLET-gcc-ar cqs
+		QMAKE_OBJCOPY           = $OBJCOPY
+		QMAKE_NM                = $NM -P
+		QMAKE_STRIP             = $STRIP
+
+		QMAKE_CFLAGS            = $CFLAGS -I$XBPS_CROSS_BASE/usr/include/python$py3_ver
+		QMAKE_CXXFLAGS          = $CXXFLAGS -I$XBPS_CROSS_BASE/usr/include/python$py3_ver
+		QMAKE_LFLAGS            = -L$XBPS_CROSS_BASE/usr/lib $LDFLAGS
+		load(qt_config)
+		_EOF
+
+		printf '#include "%s/%s/linux-g++/qplatformdefs.h"\n' \
+			"$XBPS_CROSS_BASE" "$_mkspec" >"$_spec/qplatformdefs.h"
+		cat >"$XBPS_WRAPPERDIR/sip-build/qt.conf" <<-_EOF
+		[Paths]
+		Sysroot=$XBPS_CROSS_BASE
+		Prefix=$XBPS_CROSS_BASE/usr
+		ArchData=$XBPS_CROSS_BASE/usr/lib/$_qt
+		Data=$XBPS_CROSS_BASE/usr/share/$_qt
+		Documentation=$XBPS_CROSS_BASE/usr/share/doc/$_qt
+		Headers=$XBPS_CROSS_BASE/usr/include/$_qt
+		Libraries=$XBPS_CROSS_BASE/usr/lib
+		LibraryExecutables=/usr/lib/$_qt/libexec
+		Binaries=/usr/lib/$_qt/bin
+		Tests=$XBPS_CROSS_BASE/usr/tests
+		Plugins=/usr/lib/$_qt/plugins
+		Imports=$XBPS_CROSS_BASE/usr/lib/$_qt/imports
+		Qml2Imports=$XBPS_CROSS_BASE/usr/lib/$_qt/qml
+		Translations=$XBPS_CROSS_BASE/usr/share/$_qt/translations
+		Settings=$XBPS_CROSS_BASE/etc/xdg
+		Examples=$XBPS_CROSS_BASE/usr/share/$_qt/examples
+		HostPrefix=/usr
+		HostData=/usr/lib/$_qt
+		HostBinaries=/usr/lib/$_qt/bin
+		HostLibraries=/usr/lib
+		HostLibraryExecutables=/usr/lib/$_qt/libexec
+		Spec=linux-g++
+		TargetSpec=$_spec
+		_EOF
+		# Call it sip-qmake to not override qmake build-helper
+		#
+		# XXX: Intentionally quote {C,CXX,LD}FLAGS here but not native.
+		# - Cross Build:
+		#   + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS
+		#   + hardening flags will be picked up from environment variables
+		# - Native Build:
+		#   + hardening flags will be picked up first (Makefile, qt.conf?)
+		#   + base flags will be picked up from QMAKE_{C,CXX,LD}FLAGS
+		# Maybe there're better workaround, I don't know.
+		cat >"$XBPS_WRAPPERDIR/sip-qmake" <<-_EOF
+		#!/bin/sh
+		exec /usr/lib/$_qt/bin/qmake "\$@" \\
+		        -qtconf "$XBPS_WRAPPERDIR/sip-build/qt.conf" \\
+		        PKG_CONFIG_EXECUTABLE=${XBPS_WRAPPERDIR}/${PKG_CONFIG} \\
+		        QMAKE_CFLAGS+="\$CFLAGS" \\
+		        QMAKE_CXXFLAGS+="\$CXXFLAGS" \\
+		        QMAKE_LFLAGS+="\$LDFLAGS"
+		_EOF
+		chmod 755 ${XBPS_WRAPPERDIR}/sip-qmake
+	else
+		cat >"${XBPS_WRAPPERDIR}/sip-qmake" <<-_EOF
+		#!/bin/sh
+		exec /usr/lib/$_qt/bin/qmake \\
+		        "\$@" \\
+		        PREFIX=/usr \\
+		        QT_INSTALL_PREFIX=/usr \\
+		        LIB=/usr/lib \\
+		        QMAKE_CC="$CC" QMAKE_CXX="$CXX" \\
+		        QMAKE_LINK="$CXX" QMAKE_LINK_C="$CC" \\
+		        QMAKE_CFLAGS+="$CFLAGS" \\
+		        QMAKE_CXXFLAGS+="$CXXFLAGS" \\
+		        QMAKE_LFLAGS+="$LDFLAGS" \\
+		        CONFIG+=no_qt_rpath
+		_EOF
+		chmod 755 ${XBPS_WRAPPERDIR}/sip-qmake
+	fi
+
+	sip-build --no-make \
+		${_qt:+--qmake "$XBPS_WRAPPERDIR/sip-qmake"} \
+		--api-dir /usr/share/$_qt/qsci/api/python \
+		$configure_args \
+		--build-dir "$sip_builddir"
+
+	if [ "$CROSS_BUILD" ]; then
+		# -I/usr/include/python$py3_ver is set by sip-build :(
+		find "$sip_builddir" -name Makefile |
+		xargs sed -i "s,-I\\(/usr/include\\),-I$XBPS_CROSS_BASE\\1,g"
+	fi
+}
+
+do_build() {
+	: "${sip_builddir:=build}"
+	make -C "${sip_builddir}" ${makejobs}
+}
+
+do_install() {
+	: "${sip_builddir:=build}"
+	make -C "${sip_builddir}" \
+		DESTDIR=${DESTDIR} INSTALL_ROOT=${DESTDIR} \
+		install
+}
diff --git a/common/build-style/slashpackage.sh b/common/build-style/slashpackage.sh
new file mode 100644
index 0000000..83ad030
--- /dev/null
+++ b/common/build-style/slashpackage.sh
@@ -0,0 +1,35 @@
+#
+# This helper is for templates building slashpackage software.
+# http://cr.yp.to/slashpackage.html
+#
+# required variables
+#
+#   build_style=slashpackage
+#   wrksrc=<category>
+#   build_wrksrc=${pkgname}-${version}
+#   distfiles=<download link>
+# 
+# example (daemontools)
+#
+#   Template file for 'daemontools'
+#   pkgname=daemontools
+#   version=0.76
+#   revision=1
+#   wrksrc=admin
+#   build_wrksrc=${pkgname}-${version}
+#   build_style=slashpackage
+#   short_desc="A collection of tools for managing UNIX services"
+#   maintainer="bougyman <tj@geoforce.com>"
+#   license="Public Domain"
+#   homepage="http://cr.yp.to/daemontools.html"
+#   distfiles="http://cr.yp.to/daemontools/${pkgname}-${version}.tar.gz"
+
+do_build() {
+	package/compile
+}
+
+do_install() {
+	for command in command/*; do
+		vbin $command
+	done
+}
diff --git a/common/build-style/texmf.sh b/common/build-style/texmf.sh
new file mode 100644
index 0000000..dbed1fd
--- /dev/null
+++ b/common/build-style/texmf.sh
@@ -0,0 +1,70 @@
+do_build() {
+	local f p
+	# Extract the source files
+	mkdir -p "build/usr/share/texmf-dist"
+	find . -maxdepth 1 -print -name "*.tar.xz" \
+		-exec bsdtar -C "build/usr/share/texmf-dist" -xf {} \;
+	cd "build/usr/share/texmf-dist/"
+	# Everything in usr/share/texmf-dist/texmf-dist should really be in
+	# usr/share/texmf-dist, so we move it
+	if [ -d "texmf-dist" ] ; then
+		rsync -ar texmf-dist/ ./
+		rm -rf texmf-dist/
+	fi
+	# LICENSEs are unneeded
+	rm -f LICENSE*
+
+	# We have some conflicting files between different packages. To work
+	# around this, we use an ownership file that maps which conflicting
+	# files should be in which packages. Here, each file in the map list is
+	# checked whether it is in the package, and if it shouldn't be it is
+	# removed.
+	while IFS=' ' read -r f p ; do
+		if [ "$p" = "$pkgname" ] && ! [ -e "$f" ]; then
+			# Error out if the ownership map expects this package to have a
+			# file but it dosen't
+			msg_error "$pkgver: missing file $f\n"
+		elif [ "$p" != "$pkgname" ] && [ -e "$f" ]; then
+			# Remove a file that according to the ownership map belongs to
+			# another file
+			echo "removed $f"
+			# Install a file that lists the removed packages
+			mkdir -p ../texlive/removed
+			echo "$f" >> ../texlive/removed/$pkgname.txt
+			rm -f "$f"
+		fi
+	done < "${XBPS_COMMONDIR}/environment/build-style/texmf/ownership.txt"
+}
+
+do_check() {
+	# This is essentially a helper for generating the ownership map. It checks
+	# to see if there are any conflicts between all of the different packages.
+	local f p current_ver current_rev exitcode=0
+	cd build
+
+	while read p; do
+		# Don't check against the texlive-bin* packages, ourselves, -dbg or -32bit pkgs
+		if [[ ${p%-*} =~ .*-bin$ ]] || [ "${p%-*}" = "$pkgname" ] || [[ ${p%-*} =~ .*-dbg$ ]] || [[ ${p%-*} =~ .*-32bit$ ]]; then
+			continue
+		fi
+		# Don't check against any version other than the version in the source tree
+		current_ver="$(grep -m 1 version= ${XBPS_SRCPKGDIR}/${p%-*}/template | cut -d= -f2)"
+		current_rev="$(grep -m 1 revision= ${XBPS_SRCPKGDIR}/${p%-*}/template | cut -d= -f2)"
+		if [ "${p%-*}-${current_ver}_${current_rev}" != "${p}" ]; then
+			# They are not the same version
+			continue
+		fi
+		echo checking conflicts with ${p}...
+		while IFS= read -r f; do
+			if [ -e ".$f" ]; then
+				msg_red "both contain file $f\n"
+				exitcode=1
+			fi
+		done < <(xbps-query -Rf $p | sed 's/ -> .*//')
+	done < <(xbps-query -Rs texlive -p pkgver | cut -d : -f 1)
+	return $exitcode
+}
+
+do_install() {
+	vcopy build/usr .
+}
diff --git a/common/build-style/void-cross.sh b/common/build-style/void-cross.sh
new file mode 100644
index 0000000..92f03f8
--- /dev/null
+++ b/common/build-style/void-cross.sh
@@ -0,0 +1,640 @@
+#
+# This helper is for void system crosstoolchain templates.
+#
+# Optional variables:
+#
+# - cross_gcc_skip_go - do not build gccgo support
+# - cross_binutils_configure_args
+# - cross_gcc_bootstrap_configure_args
+# - cross_gcc_configure_args
+# - cross_glibc_cflags
+# - cross_glibc_ldflags
+# - cross_glibc_configure_args
+# - cross_musl_cflags
+# - cross_musl_ldflags
+# - cross_musl_configure_args
+#
+# configure_args is passed to both bootstrap gcc and final gcc
+# if you need to pass some to one and not the other, use the
+# respective cross_ variables for final gcc and bootstrap gcc
+#
+
+_void_cross_apply_patch() {
+	local pname="$(basename $1)"
+	if [ ! -f ".${pname}_done" ]; then
+		patch -Np1 $args -i $1
+		touch .${pname}_done
+	fi
+}
+
+_void_cross_build_binutils() {
+	[ -f ${wrksrc}/.binutils_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+
+	msg_normal "Patching binutils for ${tgt}\n"
+
+	cd ${wrksrc}/binutils-${ver}
+	if [ -d "${XBPS_SRCPKGDIR}/binutils/patches" ]; then
+		for f in ${XBPS_SRCPKGDIR}/binutils/patches/*.patch; do
+			_void_cross_apply_patch "$f"
+		done
+	fi
+	cd ..
+
+	msg_normal "Building binutils for ${tgt}\n"
+
+	mkdir -p ${wrksrc}/binutils_build
+	cd ${wrksrc}/binutils_build
+
+	../binutils-${ver}/configure \
+		--prefix=/usr \
+		--sbindir=/usr/bin \
+		--libdir=/usr/lib \
+		--libexecdir=/usr/lib \
+		--target=${tgt} \
+		--with-sysroot=/usr/${tgt} \
+		--disable-nls \
+		--disable-shared \
+		--disable-multilib \
+		--disable-werror \
+		--disable-gold \
+		--enable-relro \
+		--enable-plugins \
+		--enable-64-bit-bfd \
+		--enable-deterministic-archives \
+		--enable-default-hash-style=gnu \
+		--with-system-zlib \
+		--with-mmap \
+		--with-pic \
+		${cross_binutils_configure_args}
+
+	make configure-host
+	make ${makejobs}
+
+	make install DESTDIR=${wrksrc}/build_root
+
+	touch ${wrksrc}/.binutils_done
+}
+
+_void_cross_build_bootstrap_gcc() {
+	[ -f ${wrksrc}/.gcc_bootstrap_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+
+	msg_normal "Patching GCC for ${tgt}\n"
+
+	cd ${wrksrc}/gcc-${ver}
+
+	# Do not run fixincludes
+	sed -i 's@./fixinc.sh@-c true@' Makefile.in
+
+	for f in ${XBPS_SRCPKGDIR}/gcc/patches/*.patch; do
+		_void_cross_apply_patch "$f"
+	done
+	if [ -f ${wrksrc}/.musl_version ]; then
+		for f in ${XBPS_SRCPKGDIR}/gcc/files/*-musl.patch; do
+			_void_cross_apply_patch "$f"
+		done
+	fi
+	cd ..
+
+	msg_normal "Building bootstrap GCC for ${tgt}\n"
+
+	mkdir -p gcc_bootstrap
+	cd gcc_bootstrap
+
+	local extra_args
+	if [ -f ${wrksrc}/.musl_version ]; then
+		extra_args+=" --with-newlib"
+		extra_args+=" --disable-symvers"
+		extra_args+=" libat_cv_have_ifunc=no"
+	else
+		extra_args+=" --without-headers"
+	fi
+
+	../gcc-${ver}/configure \
+		--prefix=/usr \
+		--sbindir=/usr/bin \
+		--libdir=/usr/lib \
+		--libexecdir=/usr/lib \
+		--target=${tgt} \
+		--disable-nls \
+		--disable-multilib \
+		--disable-shared \
+		--disable-libquadmath \
+		--disable-decimal-float \
+		--disable-libgomp \
+		--disable-libmpx \
+		--disable-libmudflap \
+		--disable-libssp \
+		--disable-libitm \
+		--disable-libatomic \
+		--disable-threads \
+		--disable-sjlj-exceptions \
+		--enable-languages=c \
+		--with-gnu-ld \
+		--with-gnu-as \
+		${extra_args} \
+		${configure_args} \
+		${cross_gcc_bootstrap_configure_args}
+
+	make ${makejobs}
+	make install DESTDIR=${wrksrc}/build_root
+
+	local ptrs=$(${tgt}-gcc -dM -E - < /dev/null | \
+		grep __SIZEOF_POINTER__)
+	local ws=${ptrs##* }
+
+	case ${ws} in
+		8) echo 64 > ${wrksrc}/.gcc_wordsize ;;
+		4) echo 32 > ${wrksrc}/.gcc_wordsize ;;
+		*) msg_error "Unknown word size: ${ws}\n" ;;
+	esac
+
+	touch ${wrksrc}/.gcc_bootstrap_done
+}
+
+_void_cross_build_kernel_headers() {
+	[ -f ${wrksrc}/.linux_headers_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+	local arch
+
+	msg_normal "Patching Linux headers for ${tgt}\n"
+
+	cd ${wrksrc}/linux-${ver}
+	if [ -d "${XBPS_SRCPKGDIR}/kernel-libc-headers/patches" ]; then
+		for f in ${XBPS_SRCPKGDIR}/kernel-libc-headers/patches/*.patch; do
+			_void_cross_apply_patch "$f"
+		done
+	fi
+	cd ..
+
+	msg_normal "Building Linux headers for ${tgt}\n"
+
+	cd linux-${ver}
+
+	case "$tgt" in
+		x86_64*|i686*) arch=x86 ;;
+		powerpc*) arch=powerpc ;;
+		mips*) arch=mips ;;
+		aarch64*) arch=arm64 ;;
+		arm*) arch=arm ;;
+		riscv*) arch=riscv ;;
+		s390*) arch=s390 ;;
+		*) msg_error "Unknown Linux arch for ${tgt}\n" ;;
+	esac
+
+	make ARCH=${arch} headers
+	find usr/include -name '.*' -delete
+	rm usr/include/Makefile
+	rm -r usr/include/drm
+	cp -a usr/include ${wrksrc}/build_root/usr/${tgt}/usr
+
+	touch ${wrksrc}/.linux_headers_done
+}
+
+_void_cross_build_glibc_headers() {
+	[ -f ${wrksrc}/.glibc_headers_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+
+	msg_normal "Patching glibc for ${tgt}\n"
+
+	cd ${wrksrc}/glibc-${ver}
+	if [ -d "${XBPS_SRCPKGDIR}/glibc/patches" ]; then
+		for f in ${XBPS_SRCPKGDIR}/glibc/patches/*.patch; do
+			_void_cross_apply_patch "$f"
+		done
+	fi
+	cd ..
+
+	msg_normal "Building glibc headers for ${tgt}\n"
+
+	mkdir -p glibc_headers
+	cd glibc_headers
+
+	echo "libc_cv_forced_unwind=yes" > config.cache
+	echo "libc_cv_c_cleanup=yes" >> config.cache
+
+	# we don't need any custom args here, it's just headers
+	CC="${tgt}-gcc" CXX="${tgt}-g++" CPP="${tgt}-cpp" LD="${tgt}-ld" \
+	AS="${tgt}-as" NM="${tgt}-nm" CFLAGS="-pipe" CXXFLAGS="" CPPFLAGS="" \
+	LDFLAGS="" \
+	../glibc-${ver}/configure \
+		--prefix=/usr \
+		--host=${tgt} \
+		--with-headers=${wrksrc}/build_root/usr/${tgt}/usr/include \
+		--config-cache \
+		--enable-kernel=2.6.27 \
+		${cross_glibc_configure_args}
+
+	make -k install-headers cross_compiling=yes \
+		install_root=${wrksrc}/build_root/usr/${tgt}
+
+	touch ${wrksrc}/.glibc_headers_done
+}
+
+_void_cross_build_glibc() {
+	[ -f ${wrksrc}/.glibc_build_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+
+	msg_normal "Building glibc for ${tgt}\n"
+
+	mkdir -p ${wrksrc}/glibc_build
+	cd ${wrksrc}/glibc_build
+
+	local ws=$(cat ${wrksrc}/.gcc_wordsize)
+
+	echo "slibdir=/usr/lib${ws}" > configparms
+
+	echo "libc_cv_forced_unwind=yes" > config.cache
+	echo "libc_cv_c_cleanup=yes" >> config.cache
+
+	CC="${tgt}-gcc" CXX="${tgt}-g++" CPP="${tgt}-cpp" LD="${tgt}-ld" \
+	AR="${tgt}-ar" AS="${tgt}-as" NM="${tgt}-nm" \
+	CFLAGS="-pipe ${cross_glibc_cflags}" \
+	CXXFLAGS="-pipe ${cross_glibc_cflags}" \
+	CPPFLAGS="${cross_glibc_cflags}" \
+	LDFLAGS="${cross_glibc_ldflags}" \
+	../glibc-${ver}/configure \
+		--prefix=/usr \
+		--libdir=/usr/lib${ws} \
+		--libexecdir=/usr/libexec \
+		--host=${tgt} \
+		--with-headers=${wrksrc}/build_root/usr/${tgt}/usr/include \
+		--config-cache \
+		--disable-profile \
+		--disable-werror \
+		--enable-kernel=2.6.27 \
+		${cross_glibc_configure_args}
+
+	make ${makejobs}
+	make install_root=${wrksrc}/build_root/usr/${tgt} install
+
+	touch ${wrksrc}/.glibc_build_done
+}
+
+_void_cross_build_musl() {
+	[ -f ${wrksrc}/.musl_build_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+
+	msg_normal "Patching musl for ${tgt}\n"
+
+	cd ${wrksrc}/musl-${ver}
+	if [ -d "${XBPS_SRCPKGDIR}/musl/patches" ]; then
+		for f in ${XBPS_SRCPKGDIR}/musl/patches/*.patch; do
+			_void_cross_apply_patch "$f"
+		done
+	fi
+	cd ..
+
+	msg_normal "Building musl for ${tgt}\n"
+
+	mkdir -p musl_build
+	cd musl_build
+
+	CC="${tgt}-gcc" CXX="${tgt}-g++" CPP="${tgt}-cpp" LD="${tgt}-ld" \
+	AR="${tgt}-ar" AS="${tgt}-as" NM="${tgt}-nm" \
+	CFLAGS="-pipe -fPIC ${cross_musl_cflags}" \
+	CPPFLAGS="${cross_musl_cflags}" LDFLAGS="${cross_musl_ldflags}" \
+	../musl-${ver}/configure \
+		--prefix=/usr \
+		--host=${tgt} \
+		${cross_musl_configure_args}
+
+	make ${makejobs}
+	make DESTDIR=${wrksrc}/build_root/usr/${tgt} install
+
+	touch ${wrksrc}/.musl_build_done
+}
+
+_void_cross_build_libucontext() {
+	[ -n "$cross_gcc_skip_go" ] && return 0
+	[ -f ${wrksrc}/.libucontext_build_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+	local arch incpath
+
+	msg_normal "Building libucontext for ${tgt}\n"
+
+	case "$tgt" in
+		x86_64*) arch=x86_64 ;;
+		i686*) arch=x86 ;;
+		powerpc64*) arch=ppc64 ;;
+		powerpc*) arch=ppc ;;
+		mips*64*) arch=mips64 ;;
+		mips*) arch=mips ;;
+		aarch64*) arch=aarch64 ;;
+		arm*) arch=arm ;;
+		riscv64*) arch=riscv64 ;;
+		s390x*) arch=s390x ;;
+		*) msg_error "Unknown libucontext arch for ${tgt}\n" ;;
+	esac
+
+	cd ${wrksrc}/libucontext-${ver}
+	# a terrible hack but seems to work for now
+	# we build a static-only library to prevent linking to a runtime
+	# since it's tiny it can be linked into libgo and we don't have
+	# to keep it around (which would possibly conflict with crossdeps)
+	incpath="${wrksrc}/build_root/usr/${tgt}/usr/include"
+	CC="${tgt}-gcc" AS="${tgt}-as" AR="${tgt}-ar" \
+	make ARCH=$arch libucontext.a \
+		CFLAGS="${cross_musl_cflags} -g0 -nostdinc -isystem ${incpath}"
+
+	cp libucontext.a ${wrksrc}/build_root/usr/${tgt}/usr/lib
+
+	touch ${wrksrc}/.libucontext_build_done
+}
+
+_void_cross_build_gcc() {
+	[ -f ${wrksrc}/.gcc_build_done ] && return 0
+
+	local tgt=$1
+	local ver=$2
+
+	msg_normal "Building gcc for ${tgt}\n"
+
+	mkdir -p ${wrksrc}/gcc_build
+	cd ${wrksrc}/gcc_build
+
+	local langs="c,c++,fortran,objc,obj-c++,ada,lto"
+	if [ -z "$cross_gcc_skip_go" ]; then
+		langs+=",go"
+	fi
+
+	local extra_args
+	if [ -f ${wrksrc}/.musl_version ]; then
+		# otherwise glibc hosts get confused and use the gnu impl
+		extra_args+=" --enable-clocale=generic"
+		extra_args+=" --disable-symvers"
+		extra_args+=" --disable-gnu-unique-object"
+		extra_args+=" libat_cv_have_ifunc=no"
+	else
+		extra_args+=" --enable-gnu-unique-object"
+	fi
+
+	# note on --disable-libquadmath:
+	# on some platforms the library is actually necessary for the
+	# fortran frontend to build, but still disable it because it
+	# should not be in the resulting packages; it conflicts with
+	# the libquadmath you can install into the cross root
+	#
+	# platforms where this is a problem should explicitly force
+	# libquadmath to be on via cross_gcc_configure_args, the
+	# do_install in this build-style automatically removes it
+	#
+	../gcc-${ver}/configure \
+		--prefix=/usr \
+		--sbindir=/usr/bin \
+		--libdir=/usr/lib \
+		--libexecdir=/usr/lib \
+		--target=${tgt} \
+		--with-sysroot=/usr/${tgt} \
+		--with-build-sysroot=${wrksrc}/build_root/usr/${tgt} \
+		--enable-languages=${langs} \
+		--disable-nls \
+		--disable-multilib \
+		--disable-sjlj-exceptions \
+		--disable-libquadmath \
+		--disable-libmudflap \
+		--disable-libitm \
+		--disable-libvtv \
+		--disable-libsanitizer \
+		--disable-libstdcxx-pch \
+		--enable-shared \
+		--enable-threads=posix \
+		--enable-__cxa_atexit \
+		--enable-linker-build-id \
+		--enable-libada \
+		--enable-lto \
+		--enable-default-pie \
+		--enable-default-ssp \
+		--enable-libssp \
+		--with-gnu-ld \
+		--with-gnu-as \
+		--with-linker-hash-style=gnu \
+		${extra_args} \
+		${configure_args} \
+		${cross_gcc_configure_args}
+
+	make ${makejobs}
+
+	touch ${wrksrc}/.gcc_build_done
+}
+
+_void_cross_test_ver() {
+	local proj=$1
+	local noerr=$2
+	local ver cver
+	for p in ${proj}-*; do
+		cver=${p#${proj}-}
+		if [ -z "$noerr" -a -n "$ver" ]; then
+			msg_error "multiple versions of ${proj} found: ${ver}, ${cver}"
+		fi
+		ver=${cver}
+	done
+	if [ -d "${proj}-${ver}" ]; then
+		echo ${ver} > ${wrksrc}/.${proj}_version
+		return
+	fi
+	if [ -z "$noerr" ]; then
+		msg_error "project ${proj} not available for build\n"
+	fi
+}
+
+do_build() {
+	# Verify toolchain versions
+	cd ${wrksrc}
+
+	local binutils_ver linux_ver gcc_ver libc_ver libucontext_ver
+	local tgt=${sourcepkg/cross-}
+
+	_void_cross_test_ver binutils
+	_void_cross_test_ver linux
+	_void_cross_test_ver gcc
+
+	binutils_ver=$(cat .binutils_version)
+	linux_ver=$(cat .linux_version)
+	gcc_ver=$(cat .gcc_version)
+
+	_void_cross_test_ver musl noerr
+	if [ ! -f .musl_version ]; then
+		_void_cross_test_ver glibc
+		libc_ver=$(cat .glibc_version)
+	else
+		libc_ver=$(cat .musl_version)
+		if [ -z "$cross_gcc_skip_go" ]; then
+			_void_cross_test_ver libucontext
+			libucontext_ver=$(cat .libucontext_version)
+		fi
+	fi
+
+	local sysroot="/usr/${tgt}"
+
+	# Prepare environment
+	cd ${wrksrc}
+
+	# Core directories for the build root
+	mkdir -p build_root/usr/{bin,lib,include,share}
+	mkdir -p build_root/usr/${tgt}/usr/{bin,lib,include,share}
+
+	# Host root uses host wordsize
+	ln -sf usr/lib build_root/lib
+	ln -sf usr/lib build_root/lib${XBPS_TARGET_WORDSIZE}
+	ln -sf lib build_root/usr/lib${XBPS_TARGET_WORDSIZE}
+
+	# Prepare target sysroot
+	ln -sf usr/lib build_root/${sysroot}/lib
+	ln -sf lib build_root/${sysroot}/usr/libexec
+
+	_void_cross_build_binutils ${tgt} ${binutils_ver}
+
+	# Prepare environment so we can use temporary prefix
+	local oldpath="$PATH"
+	local oldldlib="$LD_LIBRARY_PATH"
+
+	export PATH="${wrksrc}/build_root/usr/bin:$PATH"
+	export LD_LIBRARY_PATH="${wrksrc}/build_root/usr/lib:$PATH"
+
+	_void_cross_build_bootstrap_gcc ${tgt} ${gcc_ver}
+	_void_cross_build_kernel_headers ${tgt} ${linux_ver}
+
+	local ws=$(cat ${wrksrc}/.gcc_wordsize)
+
+	# Now that we know the target wordsize, prepare symlinks
+	ln -sf usr/lib ${wrksrc}/build_root/${sysroot}/lib${ws}
+	ln -sf lib ${wrksrc}/build_root/${sysroot}/usr/lib${ws}
+
+	if [ -f ${wrksrc}/.musl_version ]; then
+		_void_cross_build_musl ${tgt} ${libc_ver}
+		_void_cross_build_libucontext ${tgt} ${libucontext_ver}
+	else
+		_void_cross_build_glibc_headers ${tgt} ${libc_ver}
+		_void_cross_build_glibc ${tgt} ${libc_ver}
+	fi
+
+	_void_cross_build_gcc ${tgt} ${gcc_ver}
+
+	# restore this stuff in case later hooks depend on it
+	export PATH="$oldpath"
+	export LD_LIBRARY_PATH="$oldldlib"
+}
+
+do_install() {
+	# We need to be able to access binutils in the root
+	local oldpath="$PATH"
+	local oldldlib="$LD_LIBRARY_PATH"
+	export PATH="${wrksrc}/build_root/usr/bin:$PATH"
+	export LD_LIBRARY_PATH="${wrksrc}/build_root/usr/lib:$PATH"
+
+	local tgt=${sourcepkg/cross-}
+	local sysroot="/usr/${tgt}"
+	local ws=$(cat ${wrksrc}/.gcc_wordsize)
+
+	# Core directories for the sysroot
+	#
+	# libexec is created for sysroot but not for dest, since in sysroot
+	# we configure glibc with separate libexec, elsewhere it's just lib
+	# and we want to delete the libexec from glibc afterwards to save space
+	mkdir -p ${DESTDIR}/${sysroot}/usr/{bin,lib,libexec,include,share}
+	# Sysroot base symlinks
+	ln -sf usr/bin ${DESTDIR}/${sysroot}/bin
+	ln -sf usr/lib ${DESTDIR}/${sysroot}/lib
+	ln -sf usr/lib ${DESTDIR}/${sysroot}/lib${ws}
+	ln -sf lib ${DESTDIR}/${sysroot}/usr/lib${ws}
+	ln -sf usr/include ${DESTDIR}/${sysroot}/include
+
+	# Install Linux headers
+	cd ${wrksrc}/linux-$(cat ${wrksrc}/.linux_version)
+	cp -a usr/include ${DESTDIR}/${sysroot}/usr
+
+	# Install binutils
+	cd ${wrksrc}/binutils_build
+	make install DESTDIR=${DESTDIR}
+
+	# Install final gcc
+	cd ${wrksrc}/gcc_build
+	make install DESTDIR=${DESTDIR}
+
+	# Move libcc1.so* to the sysroot
+	mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${sysroot}/usr/lib
+
+	local gcc_ver=$(cat ${wrksrc}/.gcc_version)
+	local gcc_patch=${gcc_ver/_*}
+	local gcc_minor=${gcc_patch%.*}
+	local gcc_major=${gcc_minor%.*}
+
+	if [ -f ${wrksrc}/.musl_version ]; then
+		# Install musl
+		cd ${wrksrc}/musl_build
+		make DESTDIR=${DESTDIR}/${sysroot} install
+
+		# Remove useless headers
+		rm -rf ${DESTDIR}/usr/lib/gcc/${tgt}/*/include-fixed
+
+		# Make ld-musl.so symlinks relative
+		for f in ${DESTDIR}/${sysroot}/usr/lib/ld-musl-*.so.*; do
+			ln -sf libc.so ${f}
+		done
+	else
+		# Install glibc
+		cd ${wrksrc}/glibc_build
+		make install_root=${DESTDIR}/${sysroot} install install-headers
+
+		# Remove bad header
+		rm -f ${DESTDIR}/usr/lib/gcc/${tgt}/${gcc_patch}/include-fixed/bits/statx.h
+	fi
+
+	# minor-versioned symlinks
+	mv ${DESTDIR}/usr/lib/gcc/${tgt}/${gcc_patch} \
+		${DESTDIR}/usr/lib/gcc/${tgt}/${gcc_minor}
+	ln -sfr ${DESTDIR}/usr/lib/gcc/${tgt}/${gcc_minor} \
+		${DESTDIR}/usr/lib/gcc/${tgt}/${gcc_patch}
+
+	# ditto for c++ headers
+	mv ${DESTDIR}/${sysroot}/usr/include/c++/${gcc_patch} \
+		${DESTDIR}/${sysroot}/usr/include/c++/${gcc_minor}
+	ln -sfr ${DESTDIR}/${sysroot}/usr/include/c++/${gcc_minor} \
+		${DESTDIR}/${sysroot}/usr/include/c++/${gcc_patch}
+
+	# Symlinks for gnarl and gnat shared libraries
+	local adalib=usr/lib/gcc/${tgt}/${gcc_patch}/adalib
+	mv ${DESTDIR}/${adalib}/libgnarl-${gcc_major}.so \
+		${DESTDIR}/${sysroot}/usr/lib
+	mv ${DESTDIR}/${adalib}/libgnat-${gcc_major}.so \
+		${DESTDIR}/${sysroot}/usr/lib
+	ln -sf libgnarl-${gcc_major}.so ${DESTDIR}/${sysroot}/usr/lib/libgnarl.so
+	ln -sf libgnat-${gcc_major}.so ${DESTDIR}/${sysroot}/usr/lib/libgnat.so
+	rm -vf ${DESTDIR}/${adalib}/libgna{rl,t}.so
+
+	# Remove unnecessary libatomic which is only built for gccgo
+	rm -rf ${DESTDIR}/${sysroot}/usr/lib/libatomic.*
+
+	# If libquadmath was forced (needed for gfortran on some platforms)
+	# then remove it because it conflicts with libquadmath package
+	rm -rf ${DESTDIR}/${sysroot}/usr/lib/libquadmath.*
+
+	# Remove leftover symlinks
+	rm -f ${DESTDIR}/usr/lib${XBPS_TARGET_WORDSIZE}
+	rm -f ${DESTDIR}/lib*
+	rm -f ${DESTDIR}/*bin
+	# Remove unnecessary stuff
+	rm -rf ${DESTDIR}/${sysroot}/{sbin,etc,var,libexec}
+	rm -rf ${DESTDIR}/${sysroot}/usr/{sbin,share,libexec}
+	rm -rf ${DESTDIR}/usr/share
+	rm -f ${DESTDIR}/usr/lib*/libiberty.a
+
+	export PATH="$oldpath"
+	export LD_LIBRARY_PATH="$oldldlib"
+}
diff --git a/common/build-style/waf.sh b/common/build-style/waf.sh
new file mode 100644
index 0000000..e943765
--- /dev/null
+++ b/common/build-style/waf.sh
@@ -0,0 +1,21 @@
+#
+# This helper is for templates using WAF to build/install.
+#
+do_configure() {
+	: ${configure_script:=waf}
+
+	PYTHON=/usr/bin/python2 python2 ${configure_script} configure \
+		--prefix=/usr --libdir=/usr/lib${XBPS_TARGET_WORDSIZE} ${configure_args}
+}
+
+do_build() {
+	: ${configure_script:=waf}
+
+	PYTHON=/usr/bin/python2 python2 ${configure_script} build ${make_build_args}
+}
+
+do_install() {
+	: ${configure_script:=waf}
+
+	PYTHON=/usr/bin/python2 python2 ${configure_script} install --destdir=${DESTDIR} ${make_install_args}
+}
diff --git a/common/build-style/waf3.sh b/common/build-style/waf3.sh
new file mode 100644
index 0000000..54fd221
--- /dev/null
+++ b/common/build-style/waf3.sh
@@ -0,0 +1,29 @@
+#
+# This helper is for templates using WAF with python3 to build/install.
+#
+do_configure() {
+	: ${configure_script:=waf}
+	local cross_args
+
+	if [[ $build_helper = *"qemu"* ]] && [ "$CROSS_BUILD" ]; then
+		# If the qemu build helper is specified, use it for cross builds
+		cross_args="--cross-compile --hostcc=${CC_FOR_BUILD}
+		 --cross-execute=qemu-${XBPS_TARGET_QEMU_MACHINE}-static"
+	fi
+
+	PYTHON=/usr/bin/python3 python3 ${configure_script} configure \
+		--prefix=/usr --libdir=/usr/lib${XBPS_TARGET_WORDSIZE} \
+		${configure_args} ${cross_args}
+}
+
+do_build() {
+	: ${configure_script:=waf}
+
+	PYTHON=/usr/bin/python3 python3 ${configure_script} build ${make_build_args}
+}
+
+do_install() {
+	: ${configure_script:=waf}
+
+	PYTHON=/usr/bin/python3 python3 ${configure_script} install --destdir=${DESTDIR} ${make_install_args}
+}
diff --git a/common/build-style/zig-build.sh b/common/build-style/zig-build.sh
new file mode 100644
index 0000000..205c4ca
--- /dev/null
+++ b/common/build-style/zig-build.sh
@@ -0,0 +1,41 @@
+do_build() {
+	local zig_target zig_cpu
+
+	# TODO: This duplication between build-profiles and cross-profiles
+	# is totally unnecessary. It would be nice if there was some way to
+	# avoid it.
+	if [ "$CROSS_BUILD" ]; then
+		zig_target="${XBPS_CROSS_ZIG_TARGET}"
+		zig_cpu="${XBPS_CROSS_ZIG_CPU}"
+	else
+		zig_target="${XBPS_ZIG_TARGET}"
+		zig_cpu="${XBPS_ZIG_CPU}"
+	fi
+
+	# Inform zig of the required libc include paths.
+	cat > xbps_zig_libc.txt <<-EOF
+		include_dir=${XBPS_CROSS_BASE}/usr/include
+		sys_include_dir=${XBPS_CROSS_BASE}/usr/include
+		crt_dir=${XBPS_CROSS_BASE}/usr/lib
+		msvc_lib_dir=
+		kernel32_lib_dir=
+		gcc_dir=
+	EOF
+
+	# The Zig build system only has a single install step, there is no
+	# way to build artifacts for a given prefix and then install those artifacts
+	# to that prefix at some later time. Therefore, we build and install to the zig-out
+	# directory and later copy the artifacts to the destdir in do_install().
+	# We use zig-out to avoid path conflicts as it is the default install
+	# prefix used by the zig build system.
+	DESTDIR="zig-out" zig build \
+		--sysroot "${XBPS_CROSS_BASE}" \
+		--libc xbps_zig_libc.txt \
+		-Dtarget="${zig_target}" -Dcpu="${zig_cpu}" \
+		-Drelease-safe --prefix /usr install \
+		${configure_args}
+}
+
+do_install() {
+	cp -r zig-out/* "${DESTDIR}"
+}
diff --git a/common/chroot-style/README b/common/chroot-style/README
new file mode 100644
index 0000000..a5d89d0
--- /dev/null
+++ b/common/chroot-style/README
@@ -0,0 +1,13 @@
+CHROOT STYLES
+=============
+
+This directory contains scripts to perform the chroot operation with xbps-src.
+The scripts should accept at least 5 arguments:
+
+	- $1 (MASTERDIR) masterdir to chroot
+	- $2 (DISTDIR) path to the void-packages directory
+	- $3 (HOSTDIR) path to hostdir
+	- $4 (EXTRA_ARGS) additional arguments to be passed
+	- $5 (CMD) command to execute
+	- $@ remaining arguments to pass
+
diff --git a/common/chroot-style/bwrap.sh b/common/chroot-style/bwrap.sh
new file mode 100755
index 0000000..de43235
--- /dev/null
+++ b/common/chroot-style/bwrap.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# This chroot script uses bubblewrap (see https://github.com/containers/bubblewrap)
+#
+set -e
+readonly MASTERDIR="$1"
+readonly DISTDIR="$2"
+readonly HOSTDIR="$3"
+readonly EXTRA_ARGS="$4"
+shift 4
+
+if ! command -v bwrap >/dev/null 2>&1; then
+	exit 1
+fi
+
+if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then
+	echo "$0 MASTERDIR/DISTDIR not set"
+	exit 1
+fi
+
+exec bwrap --bind "$MASTERDIR" / --ro-bind "$DISTDIR" /void-packages \
+	 --dev /dev --tmpfs /tmp --proc /proc \
+	${HOSTDIR:+--bind "$HOSTDIR" /host} $EXTRA_ARGS "$@"
diff --git a/common/chroot-style/ethereal.sh b/common/chroot-style/ethereal.sh
new file mode 100755
index 0000000..cf6e4dc
--- /dev/null
+++ b/common/chroot-style/ethereal.sh
@@ -0,0 +1,135 @@
+#!/bin/sh
+#
+# This chroot script uses symlinks to emulate being in a chroot using
+# the host system as the masterdir
+#
+# It will damage your host system, only use it in disposable
+# containers.
+#
+# 2 extra steps required when using this chroot-style:
+# 1. Symlink / to masterdir inside the void-packages repo
+# 2. write the arch of the host system, as dictated by xbps-uhelper arch
+# into /.xbps_chroot_init
+#
+# The supported way to make use of thie chroot-style is to create
+# a root filesystem that has base-chroot and git installed and 
+# have it inside a container engine like Docker.
+#
+# Docker example:
+# $ mkdir -p /tmp/image
+# $ xbps-install -y -r /tmp/image \
+#				 -R http://mirrors.servercentral.com/voidlinux/current \
+#				 -S base-chroot
+# $ tar -pC /tmp/image -c . | sudo docker import - voidlinux/masterdir
+# $ rm -rf /tmp/image 
+# # docker run --rm -it \
+#			   -e XBPS_CHROOT_CMD=ethereal \
+#			   -e XBPS_ALLOW_CHROOT_BREAKOUT=yes \
+#			   -v $(pwd):/hostrepo voidlinux/masterdir \
+#			   /bin/bash -c 'ln -s / /hostrepo/masterdir && /hostrepo/xbps-src pkg <pkgname>'
+#
+
+readonly MASTERDIR="$1"
+readonly DISTDIR="$2"
+readonly HOSTDIR="$3"
+readonly EXTRA_ARGS="$4"
+readonly CMD="$5"
+shift 5
+
+if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then
+	echo "$0 MASTERDIR/DISTDIR not set"
+	exit 1
+fi
+
+msg_red() {
+	# error messages in bold/red
+	[ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
+	printf "=> ERROR: %s\\n" "$@" >&2
+	[ -n "$NOCOLORS" ] || printf >&2 "\033[m"
+}
+
+fake_mount() {
+	# If we already have a symlink from the desired place
+	# to the base location then just return 0
+	if [ -L "$2" -a "$(readlink "$2")" = "$1" ]; then
+		return 0
+	fi
+
+	if [ -d "$2" ] && ! rmdir "$2" >/dev/null 2>&1; then
+		msg_red "Failed to remove $2, not empty ?\n"
+		exit 1
+	fi
+
+	[ -f "$2" -o -L "$2" ] && rm -f "$2"
+
+	ln -s "$1" "$2"
+	echo "linked $2 -> $1"
+}
+
+if [ "${XBPS_ALLOW_CHROOT_BREAKOUT}" != "yes" ]; then
+	msg_red "chroot-style 'ethereal' requires XBPS_ALLOW_CHROOT_BREAKOUT=yes\n"
+	msg_red "This chroot-style is meant for disposable containers and will destroy your system\n"
+	exit 1
+fi
+
+if [ ! -L "$MASTERDIR" -o "$(readlink "$MASTERDIR")" != "/" ]; then
+	msg_red "$MASTERDIR isn't symlinked to /!\n"
+	exit 1
+fi
+
+fake_mount "$DISTDIR" "$MASTERDIR"/void-packages
+
+# Do the same for hostdir
+if [ -n "$HOSTDIR" ]; then
+	fake_mount "$HOSTDIR" "$MASTERDIR"/host
+fi
+
+# xbps-src may send some other binds, parse them here
+while getopts 'b:' c -- "$EXTRA_ARGS"; do
+	# Skip everything that's not a bind
+	[ "$c" = "b" ] || continue
+
+	from="${OPTARG%:*}"
+	to="${OPTARG#*:}"
+
+	fake_mount "$from" "$to"
+
+	mounts="${mounts} $to"
+done
+
+# Store current directory for returning later
+OLDPWD="$(pwd)"
+
+# To give the illusion we entered the chroot, cd to /
+cd / || {
+	msg_red "Failed to change directory to root!\n"
+	exit 1 ; }
+
+# Tell xbps-src that we are "in the chroot"
+# Start with `env` so our environment var's stay the same
+env IN_CHROOT=1 $CMD $@
+
+# Store return of the command we care about
+ret="$?"
+
+# Return to OLDPWD
+cd "${OLDPWD}"
+
+# Remove the symlink and restore an empty dir to simulate
+# an umount operation.
+if [ -n "$HOSTDIR" ]; then
+	rm -f "$MASTERDIR"/host
+	mkdir -p "$MASTERDIR"/host
+fi
+
+# Same as the operation above, do it all for all mountpoints
+# that were passed to us.
+for m in $mounts; do
+	rm -f "$m"
+	mkdir -p "$m"
+done
+
+rm -f "$MASTERDIR"/void-packages
+mkdir -p "$MASTERDIR"/void-packages
+
+exit $ret
diff --git a/common/chroot-style/uchroot.sh b/common/chroot-style/uchroot.sh
new file mode 100755
index 0000000..5fe47eb
--- /dev/null
+++ b/common/chroot-style/uchroot.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# This chroot script uses xbps-uchroot(1).
+#
+readonly MASTERDIR="$1"
+readonly DISTDIR="$2"
+readonly HOSTDIR="$3"
+readonly EXTRA_ARGS="$4"
+readonly CMD="$5"
+shift 5
+
+if ! command -v xbps-uchroot >/dev/null 2>&1; then
+	exit 1
+fi
+
+if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then
+	echo "$0 MASTERDIR/DISTDIR not set"
+	exit 1
+fi
+
+exec xbps-uchroot $EXTRA_ARGS -b $DISTDIR:/void-packages ${HOSTDIR:+-b $HOSTDIR:/host} -- $MASTERDIR $CMD $@
diff --git a/common/chroot-style/uunshare.sh b/common/chroot-style/uunshare.sh
new file mode 100755
index 0000000..4d51464
--- /dev/null
+++ b/common/chroot-style/uunshare.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# This chroot script uses xbps-uunshare(1) with user_namespaces(7).
+#
+readonly MASTERDIR="$1"
+readonly DISTDIR="$2"
+readonly HOSTDIR="$3"
+readonly EXTRA_ARGS="$4"
+readonly CMD="$5"
+shift 5
+
+if ! command -v xbps-uunshare >/dev/null 2>&1; then
+	exit 1
+fi
+
+if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then
+	echo "$0 MASTERDIR/DISTDIR not set"
+	exit 1
+fi
+
+exec xbps-uunshare $EXTRA_ARGS -b $DISTDIR:/void-packages ${HOSTDIR:+-b $HOSTDIR:/host} -- $MASTERDIR $CMD $@
diff --git a/common/cross-profiles/README b/common/cross-profiles/README
new file mode 100644
index 0000000..f2300b5
--- /dev/null
+++ b/common/cross-profiles/README
@@ -0,0 +1,19 @@
+CROSS PROFILES
+==============
+
+This directory contains cross profiles to allow cross compilation for the specified target.
+A cross profile file must provide the following variables:
+
+	- XBPS_TARGET_MACHINE	(as returned by uname -m + optional -musl suffix)
+	- XBPS_CROSS_TRIPLET	(the cross compiler triplet)
+	- XBPS_CROSS_CFLAGS	(C compiler flags for the cross compiler)
+	- XBPS_CROSS_CXXFLAGS	(C++ compiler flags for the cross compiler)
+	- XBPS_CROSS_FFLAGS	(Fortran compiler flags for the cross compiler)
+	- XBPS_CROSS_CPPFLAGS	(Preprocessor flags for the cross compiler)
+	- XBPS_CROSS_LDFLAGS	(Linker flags for the cross compiler)
+	- XBPS_CROSS_RUST_TARGET (the rust triplet for the rust cross compiler)
+	- XBPS_CROSS_RUSTFLAGS (rust compiler flags for the cross compiler)
+	- XBPS_CROSS_ZIG_TARGET	(the arch-os-abi target triplet for zig)
+	- XBPS_CROSS_ZIG_CPU	(the cpu/feature set for zig)
+
+A source package matching `cross-${XBPS_CROSS_TRIPLET}' must also exist.
diff --git a/common/cross-profiles/aarch64-musl.sh b/common/cross-profiles/aarch64-musl.sh
new file mode 100644
index 0000000..892abba
--- /dev/null
+++ b/common/cross-profiles/aarch64-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARMv8.
+
+XBPS_TARGET_MACHINE="aarch64-musl"
+XBPS_TARGET_QEMU_MACHINE="aarch64"
+XBPS_CROSS_TRIPLET="aarch64-linux-musl"
+XBPS_CROSS_CFLAGS="-march=armv8-a"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="aarch64-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="aarch64-linux-musl"
+XBPS_CROSS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/aarch64.sh b/common/cross-profiles/aarch64.sh
new file mode 100644
index 0000000..7a99e6f
--- /dev/null
+++ b/common/cross-profiles/aarch64.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARMv8.
+
+XBPS_TARGET_MACHINE="aarch64"
+XBPS_TARGET_QEMU_MACHINE="aarch64"
+XBPS_CROSS_TRIPLET="aarch64-linux-gnu"
+XBPS_CROSS_CFLAGS="-march=armv8-a"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="aarch64-unknown-linux-gnu"
+XBPS_CROSS_ZIG_TARGET="aarch64-linux-gnu"
+XBPS_CROSS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/armv5te-musl.sh b/common/cross-profiles/armv5te-musl.sh
new file mode 120000
index 0000000..bb05c64
--- /dev/null
+++ b/common/cross-profiles/armv5te-musl.sh
@@ -0,0 +1 @@
+armv5tel-musl.sh
\ No newline at end of file
diff --git a/common/cross-profiles/armv5te.sh b/common/cross-profiles/armv5te.sh
new file mode 120000
index 0000000..efe0829
--- /dev/null
+++ b/common/cross-profiles/armv5te.sh
@@ -0,0 +1 @@
+armv5tel.sh
\ No newline at end of file
diff --git a/common/cross-profiles/armv5tel-musl.sh b/common/cross-profiles/armv5tel-musl.sh
new file mode 100644
index 0000000..0eb813a
--- /dev/null
+++ b/common/cross-profiles/armv5tel-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARM GNU EABI5 Soft Float and Musl libc.
+
+XBPS_TARGET_MACHINE="armv5tel-musl"
+XBPS_TARGET_QEMU_MACHINE="arm"
+XBPS_CROSS_TRIPLET="arm-linux-musleabi"
+XBPS_CROSS_CFLAGS="-march=armv5te -msoft-float -mfloat-abi=soft"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="arm-unknown-linux-musleabi"
+XBPS_CROSS_ZIG_TARGET="arm-linux-musleabi"
+XBPS_CROSS_ZIG_CPU="generic+v5te+soft_float"
diff --git a/common/cross-profiles/armv5tel.sh b/common/cross-profiles/armv5tel.sh
new file mode 100644
index 0000000..f582836
--- /dev/null
+++ b/common/cross-profiles/armv5tel.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARM GNU EABI5 Soft Float.
+
+XBPS_TARGET_MACHINE="armv5tel"
+XBPS_TARGET_QEMU_MACHINE="arm"
+XBPS_CROSS_TRIPLET="arm-linux-gnueabi"
+XBPS_CROSS_CFLAGS="-march=armv5te -msoft-float -mfloat-abi=soft"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="arm-unknown-linux-gnueabi"
+XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabi"
+XBPS_CROSS_ZIG_CPU="generic+v5te+soft_float"
diff --git a/common/cross-profiles/armv6hf-musl.sh b/common/cross-profiles/armv6hf-musl.sh
new file mode 120000
index 0000000..001b61a
--- /dev/null
+++ b/common/cross-profiles/armv6hf-musl.sh
@@ -0,0 +1 @@
+armv6l-musl.sh
\ No newline at end of file
diff --git a/common/cross-profiles/armv6hf.sh b/common/cross-profiles/armv6hf.sh
new file mode 120000
index 0000000..26afeb1
--- /dev/null
+++ b/common/cross-profiles/armv6hf.sh
@@ -0,0 +1 @@
+armv6l.sh
\ No newline at end of file
diff --git a/common/cross-profiles/armv6l-musl.sh b/common/cross-profiles/armv6l-musl.sh
new file mode 100644
index 0000000..5f32f9b
--- /dev/null
+++ b/common/cross-profiles/armv6l-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARM EABI5 Hard Float and Musl libc.
+
+XBPS_TARGET_MACHINE="armv6l-musl"
+XBPS_TARGET_QEMU_MACHINE="arm"
+XBPS_CROSS_TRIPLET="arm-linux-musleabihf"
+XBPS_CROSS_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="arm-unknown-linux-musleabihf"
+XBPS_CROSS_ZIG_TARGET="arm-linux-musleabihf"
+XBPS_CROSS_ZIG_CPU="generic+v6"
diff --git a/common/cross-profiles/armv6l.sh b/common/cross-profiles/armv6l.sh
new file mode 100644
index 0000000..7040996
--- /dev/null
+++ b/common/cross-profiles/armv6l.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARM GNU EABI5 Hard Float.
+
+XBPS_TARGET_MACHINE="armv6l"
+XBPS_TARGET_QEMU_MACHINE="arm"
+XBPS_CROSS_TRIPLET="arm-linux-gnueabihf"
+XBPS_CROSS_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="arm-unknown-linux-gnueabihf"
+XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabihf"
+XBPS_CROSS_ZIG_CPU="generic+v6"
diff --git a/common/cross-profiles/armv7hf-musl.sh b/common/cross-profiles/armv7hf-musl.sh
new file mode 120000
index 0000000..7f37aa0
--- /dev/null
+++ b/common/cross-profiles/armv7hf-musl.sh
@@ -0,0 +1 @@
+armv7l-musl.sh
\ No newline at end of file
diff --git a/common/cross-profiles/armv7hf.sh b/common/cross-profiles/armv7hf.sh
new file mode 120000
index 0000000..a00f4c3
--- /dev/null
+++ b/common/cross-profiles/armv7hf.sh
@@ -0,0 +1 @@
+armv7l.sh
\ No newline at end of file
diff --git a/common/cross-profiles/armv7l-musl.sh b/common/cross-profiles/armv7l-musl.sh
new file mode 100644
index 0000000..9a38832
--- /dev/null
+++ b/common/cross-profiles/armv7l-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARMv7 EABI Hard Float and Musl libc.
+
+XBPS_TARGET_MACHINE="armv7l-musl"
+XBPS_TARGET_QEMU_MACHINE="arm"
+XBPS_CROSS_TRIPLET="armv7l-linux-musleabihf"
+XBPS_CROSS_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="armv7-unknown-linux-musleabihf"
+XBPS_CROSS_ZIG_TARGET="arm-linux-musleabihf"
+XBPS_CROSS_ZIG_CPU="generic+v7a+vfp3"
diff --git a/common/cross-profiles/armv7l.sh b/common/cross-profiles/armv7l.sh
new file mode 100644
index 0000000..b8c9c41
--- /dev/null
+++ b/common/cross-profiles/armv7l.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ARMv7 GNU EABI Hard Float.
+
+XBPS_TARGET_MACHINE="armv7l"
+XBPS_TARGET_QEMU_MACHINE="arm"
+XBPS_CROSS_TRIPLET="armv7l-linux-gnueabihf"
+XBPS_CROSS_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="armv7-unknown-linux-gnueabihf"
+XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabihf"
+XBPS_CROSS_ZIG_CPU="generic+v7a+vfp3"
diff --git a/common/cross-profiles/i686-musl.sh b/common/cross-profiles/i686-musl.sh
new file mode 100644
index 0000000..c1cdf60
--- /dev/null
+++ b/common/cross-profiles/i686-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for i686 and Musl libc.
+
+XBPS_TARGET_MACHINE="i686-musl"
+XBPS_TARGET_QEMU_MACHINE="i386"
+XBPS_CROSS_TRIPLET="i686-linux-musl"
+XBPS_CROSS_CFLAGS="-march=i686"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="i686-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="i686-linux-musl"
+XBPS_CROSS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/i686.sh b/common/cross-profiles/i686.sh
new file mode 100644
index 0000000..16f4401
--- /dev/null
+++ b/common/cross-profiles/i686.sh
@@ -0,0 +1,12 @@
+# Cross build profile for i686 GNU.
+
+XBPS_TARGET_MACHINE="i686"
+XBPS_TARGET_QEMU_MACHINE="i386"
+XBPS_CROSS_TRIPLET="i686-pc-linux-gnu"
+XBPS_CROSS_CFLAGS="-march=i686"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="i686-unknown-linux-gnu"
+XBPS_CROSS_ZIG_TARGET="i386-linux-gnu"
+XBPS_CROSS_ZIG_CPU="_i686+sse2"
diff --git a/common/cross-profiles/mips-musl.sh b/common/cross-profiles/mips-musl.sh
new file mode 100644
index 0000000..7c44de7
--- /dev/null
+++ b/common/cross-profiles/mips-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for MIPS32 BE soft float.
+
+XBPS_TARGET_MACHINE="mips-musl"
+XBPS_TARGET_QEMU_MACHINE="mips"
+XBPS_CROSS_TRIPLET="mips-linux-musl"
+XBPS_CROSS_CFLAGS="-mtune=mips32r2 -mabi=32 -msoft-float"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="mips-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="mips-linux-musl"
+XBPS_CROSS_ZIG_CPU="generic+soft_float"
diff --git a/common/cross-profiles/mipsel-musl.sh b/common/cross-profiles/mipsel-musl.sh
new file mode 100644
index 0000000..fa4390c
--- /dev/null
+++ b/common/cross-profiles/mipsel-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for MIPS32 LE soft float.
+
+XBPS_TARGET_MACHINE="mipsel-musl"
+XBPS_TARGET_QEMU_MACHINE="mipsel"
+XBPS_CROSS_TRIPLET="mipsel-linux-musl"
+XBPS_CROSS_CFLAGS="-mtune=mips32r2 -mabi=32 -msoft-float"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="mipsel-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="mipsel-linux-musl"
+XBPS_CROSS_ZIG_CPU="generic+soft_float"
diff --git a/common/cross-profiles/mipselhf-musl.sh b/common/cross-profiles/mipselhf-musl.sh
new file mode 100644
index 0000000..49f4558
--- /dev/null
+++ b/common/cross-profiles/mipselhf-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for MIPS32 LE hardfloat.
+
+XBPS_TARGET_MACHINE="mipselhf-musl"
+XBPS_TARGET_QEMU_MACHINE="mipsel"
+XBPS_CROSS_TRIPLET="mipsel-linux-muslhf"
+XBPS_CROSS_CFLAGS="-mtune=mips32r2 -mabi=32 -mhard-float"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="mipsel-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="mipsel-linux-musl"
+XBPS_CROSS_ZIG_CPU="generic"
diff --git a/common/cross-profiles/mipshf-musl.sh b/common/cross-profiles/mipshf-musl.sh
new file mode 100644
index 0000000..513391b
--- /dev/null
+++ b/common/cross-profiles/mipshf-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for MIPS32 BE hard float.
+
+XBPS_TARGET_MACHINE="mipshf-musl"
+XBPS_TARGET_QEMU_MACHINE="mips"
+XBPS_CROSS_TRIPLET="mips-linux-muslhf"
+XBPS_CROSS_CFLAGS="-mtune=mips32r2 -mabi=32 -mhard-float"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="mips-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="mips-linux-musl"
+XBPS_CROSS_ZIG_CPU="generic"
diff --git a/common/cross-profiles/ppc-musl.sh b/common/cross-profiles/ppc-musl.sh
new file mode 100644
index 0000000..327ae23
--- /dev/null
+++ b/common/cross-profiles/ppc-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for PowerPC.
+
+XBPS_TARGET_MACHINE="ppc-musl"
+XBPS_TARGET_QEMU_MACHINE="ppc"
+XBPS_CROSS_TRIPLET="powerpc-linux-musl"
+XBPS_CROSS_CFLAGS="-mtune=G4"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpc-unknown-linux-musl"
+XBPS_ZIG_TARGET="powerpc-linux-musl"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/ppc.sh b/common/cross-profiles/ppc.sh
new file mode 100644
index 0000000..787f6bb
--- /dev/null
+++ b/common/cross-profiles/ppc.sh
@@ -0,0 +1,12 @@
+# Cross build profile for PowerPC.
+
+XBPS_TARGET_MACHINE="ppc"
+XBPS_TARGET_QEMU_MACHINE="ppc"
+XBPS_CROSS_TRIPLET="powerpc-linux-gnu"
+XBPS_CROSS_CFLAGS="-mtune=G4"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpc-unknown-linux-gnu"
+XBPS_ZIG_TARGET="powerpc-linux-gnu"
+XBPS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/ppc64-musl.sh b/common/cross-profiles/ppc64-musl.sh
new file mode 100644
index 0000000..c4b0f35
--- /dev/null
+++ b/common/cross-profiles/ppc64-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ppc64 big-endian musl.
+
+XBPS_TARGET_MACHINE="ppc64-musl"
+XBPS_TARGET_QEMU_MACHINE="ppc64"
+XBPS_CROSS_TRIPLET="powerpc64-linux-musl"
+XBPS_CROSS_CFLAGS="-mcpu=970 -mtune=power9"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpc64-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="powerpc64-linux-musl"
+XBPS_CROSS_ZIG_CPU="970"
diff --git a/common/cross-profiles/ppc64.sh b/common/cross-profiles/ppc64.sh
new file mode 100644
index 0000000..7ed5bc0
--- /dev/null
+++ b/common/cross-profiles/ppc64.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ppc64 big-endian GNU.
+
+XBPS_TARGET_MACHINE="ppc64"
+XBPS_TARGET_QEMU_MACHINE="ppc64"
+XBPS_CROSS_TRIPLET="powerpc64-linux-gnu"
+XBPS_CROSS_CFLAGS="-mcpu=970 -mtune=power9"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpc64-unknown-linux-gnu"
+XBPS_CROSS_ZIG_TARGET="powerpc64-linux-gnu"
+XBPS_CROSS_ZIG_CPU="970"
diff --git a/common/cross-profiles/ppc64le-musl.sh b/common/cross-profiles/ppc64le-musl.sh
new file mode 100644
index 0000000..df18c30
--- /dev/null
+++ b/common/cross-profiles/ppc64le-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ppc64 little-endian musl.
+
+XBPS_TARGET_MACHINE="ppc64le-musl"
+XBPS_TARGET_QEMU_MACHINE="ppc64le"
+XBPS_CROSS_TRIPLET="powerpc64le-linux-musl"
+XBPS_CROSS_CFLAGS="-mtune=power9"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpc64le-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="powerpc64le-linux-musl"
+XBPS_CROSS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/ppc64le.sh b/common/cross-profiles/ppc64le.sh
new file mode 100644
index 0000000..3fe7b2d
--- /dev/null
+++ b/common/cross-profiles/ppc64le.sh
@@ -0,0 +1,12 @@
+# Cross build profile for ppc64 little-endian GNU.
+
+XBPS_TARGET_MACHINE="ppc64le"
+XBPS_TARGET_QEMU_MACHINE="ppc64le"
+XBPS_CROSS_TRIPLET="powerpc64le-linux-gnu"
+XBPS_CROSS_CFLAGS="-mtune=power9"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpc64le-unknown-linux-gnu"
+XBPS_CROSS_ZIG_TARGET="powerpc64le-linux-gnu"
+XBPS_CROSS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/ppcle-musl.sh b/common/cross-profiles/ppcle-musl.sh
new file mode 100644
index 0000000..48e27c0
--- /dev/null
+++ b/common/cross-profiles/ppcle-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for little endian PowerPC.
+
+XBPS_TARGET_MACHINE="ppcle-musl"
+XBPS_TARGET_QEMU_MACHINE="ppcle"
+XBPS_CROSS_TRIPLET="powerpcle-linux-musl"
+XBPS_CROSS_CFLAGS="-mcpu=power8 -mtune=power9"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpcle-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="powerpcle-linux-musl"
+XBPS_CROSS_ZIG_CPU="pwr8"
diff --git a/common/cross-profiles/ppcle.sh b/common/cross-profiles/ppcle.sh
new file mode 100644
index 0000000..a591582
--- /dev/null
+++ b/common/cross-profiles/ppcle.sh
@@ -0,0 +1,12 @@
+# Cross build profile for little endian PowerPC.
+
+XBPS_TARGET_MACHINE="ppcle"
+XBPS_TARGET_QEMU_MACHINE="ppcle"
+XBPS_CROSS_TRIPLET="powerpcle-linux-gnu"
+XBPS_CROSS_CFLAGS="-mcpu=power8 -mtune=power9"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="powerpcle-unknown-linux-gnu"
+XBPS_CROSS_ZIG_TARGET="powerpcle-linux-gnu"
+XBPS_CROSS_ZIG_CPU="pwr8"
diff --git a/common/cross-profiles/x86_64-musl.sh b/common/cross-profiles/x86_64-musl.sh
new file mode 100644
index 0000000..38642a0
--- /dev/null
+++ b/common/cross-profiles/x86_64-musl.sh
@@ -0,0 +1,12 @@
+# Cross build profile for x86_64 and Musl libc.
+
+XBPS_TARGET_MACHINE="x86_64-musl"
+XBPS_TARGET_QEMU_MACHINE="x86_64"
+XBPS_CROSS_TRIPLET="x86_64-linux-musl"
+XBPS_CROSS_CFLAGS="-mtune=generic"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="x86_64-unknown-linux-musl"
+XBPS_CROSS_ZIG_TARGET="x86_64-linux-musl"
+XBPS_CROSS_ZIG_CPU="baseline"
diff --git a/common/cross-profiles/x86_64.sh b/common/cross-profiles/x86_64.sh
new file mode 100644
index 0000000..bd966d0
--- /dev/null
+++ b/common/cross-profiles/x86_64.sh
@@ -0,0 +1,12 @@
+# Cross build profile for x86_64 GNU.
+
+XBPS_TARGET_MACHINE="x86_64"
+XBPS_TARGET_QEMU_MACHINE="x86_64"
+XBPS_CROSS_TRIPLET="x86_64-linux-gnu"
+XBPS_CROSS_CFLAGS="-mtune=generic"
+XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS"
+XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr"
+XBPS_CROSS_RUST_TARGET="x86_64-unknown-linux-gnu"
+XBPS_CROSS_ZIG_TARGET="x86_64-linux-gnu"
+XBPS_CROSS_ZIG_CPU="baseline"
diff --git a/common/environment/README b/common/environment/README
new file mode 100644
index 0000000..2491ff5
--- /dev/null
+++ b/common/environment/README
@@ -0,0 +1,28 @@
+ENVIRONMENT SHELL SNIPPETS
+==========================
+
+This directory contains shell files (must not be executable nor contain a shebang)
+that are read by xbps-src when building source packages. The shell files
+are read in lexical order (as ordered by shell rules).
+
+These files shall set or unset environment variables while building packages.
+Only files with the `.sh' extension are read, so this file will be simply ignored.
+
+The following directories are used to set the order in which the shell snippets
+should be read by xbps-src:
+
+	* build-style	(to set vars for a specific build_style helper)
+	* setup		(before reading template)
+	* setup-subpkg	(before running the subpkg <pkgname>_package() function)
+	* fetch		(before running fetch phase)
+	* extract	(before running extract phase)
+	* configure	(before running configure phase)
+	* build		(before running build phase)
+	* check		(before running check phase)
+	* install	(before running install phase)
+	* pkg		(before running pkg phase)
+
+NOTES
+~~~~~
+* Symlinks can be created (relative) to make a shell snippet available in
+  multiple phases.
diff --git a/common/environment/build-style/.empty b/common/environment/build-style/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/build-style/R-cran.sh b/common/environment/build-style/R-cran.sh
new file mode 100644
index 0000000..ded6679
--- /dev/null
+++ b/common/environment/build-style/R-cran.sh
@@ -0,0 +1,8 @@
+makedepends+=" R"
+depends+=" R"
+wrksrc="${XBPS_BUILDDIR}/${pkgname#R-cran-}"
+
+# default to cran
+if [ -z "$distfiles" ]; then
+	distfiles="https://cran.r-project.org/src/contrib/${pkgname#R-cran-}_${version//r/-}.tar.gz"
+fi
diff --git a/common/environment/build-style/cargo.sh b/common/environment/build-style/cargo.sh
new file mode 100644
index 0000000..c7c9863
--- /dev/null
+++ b/common/environment/build-style/cargo.sh
@@ -0,0 +1,7 @@
+hostmakedepends+=" cargo"
+
+if [ "$CROSS_BUILD" ]; then
+	makedepends+=" rust-std"
+fi
+
+build_helper+=" rust"
diff --git a/common/environment/build-style/cmake.sh b/common/environment/build-style/cmake.sh
new file mode 100644
index 0000000..19b8f35
--- /dev/null
+++ b/common/environment/build-style/cmake.sh
@@ -0,0 +1,10 @@
+if [ "$CHROOT_READY" ]; then
+	if [ "$pkgname" != cmake ]; then
+		hostmakedepends+=" cmake"
+	fi
+	if [ "${make_cmd:-ninja}" = ninja ]; then
+		hostmakedepends+=" ninja"
+	fi
+fi
+
+export CTEST_OUTPUT_ON_FAILURE=TRUE
diff --git a/common/environment/build-style/gem.sh b/common/environment/build-style/gem.sh
new file mode 100644
index 0000000..73a97bd
--- /dev/null
+++ b/common/environment/build-style/gem.sh
@@ -0,0 +1,8 @@
+lib32disabled=yes
+hostmakedepends+=" ruby"
+depends+=" ruby"
+
+# default to rubygems
+if [ -z "$distfiles" ]; then
+	distfiles="https://rubygems.org/downloads/${pkgname#ruby-}-${version}.gem"
+fi
diff --git a/common/environment/build-style/gemspec.sh b/common/environment/build-style/gemspec.sh
new file mode 100644
index 0000000..b3025a9
--- /dev/null
+++ b/common/environment/build-style/gemspec.sh
@@ -0,0 +1,3 @@
+lib32disabled=yes
+hostmakedepends+=" ruby-devel"
+makedepends+=" ruby-devel"
diff --git a/common/environment/build-style/go.sh b/common/environment/build-style/go.sh
new file mode 100644
index 0000000..afa9082
--- /dev/null
+++ b/common/environment/build-style/go.sh
@@ -0,0 +1,45 @@
+if [ -z "$hostmakedepends" -o "${hostmakedepends##*gcc-go-tools*}" ]; then
+	# gc compiler
+	if [ -z "$archs" ]; then
+		archs="aarch64* armv[567]* i686* x86_64* ppc64le*"
+	fi
+	hostmakedepends+=" go"
+	nopie=yes
+else
+	# gccgo compiler
+	if [ -z "$archs" ]; then
+		# we have support for these in our gcc
+		archs="aarch64* armv[567]* i686* x86_64* ppc64*"
+	fi
+	if [ "$CROSS_BUILD" ]; then
+		# target compiler to use; otherwise it'll just call gccgo
+		export GCCGO="${XBPS_CROSS_TRIPLET}-gccgo"
+	fi
+fi
+
+case "$XBPS_TARGET_MACHINE" in
+	aarch64*) export GOARCH=arm64;;
+	armv5*) export GOARCH=arm; export GOARM=5;;
+	armv6*) export GOARCH=arm; export GOARM=6;;
+	armv7*) export GOARCH=arm; export GOARM=7;;
+	i686*) export GOARCH=386;;
+	x86_64*) export GOARCH=amd64;;
+	ppc64le*) export GOARCH=ppc64le;;
+	ppc64*) export GOARCH=ppc64;;
+	ppc*) export GOARCH=ppc;;
+	mipsel*) export GOARCH=mipsle;;
+	mips*) export GOARCH=mips;;
+esac
+
+export GOPATH="${wrksrc}/_build-${pkgname}-xbps"
+GOSRCPATH="${GOPATH}/src/${go_import_path}"
+export CGO_CFLAGS="$CFLAGS"
+export CGO_CPPFLAGS="$CPPFLAGS"
+export CGO_CXXFLAGS="$CXXFLAGS"
+export CGO_LDFLAGS="$LDFLAGS"
+export CGO_ENABLED=1
+export GO111MODULE=auto
+case "$XBPS_TARGET_MACHINE" in
+	*-musl) export GOCACHE="${XBPS_HOSTDIR}/gocache-muslc" ;;
+	*)	export GOCACHE="${XBPS_HOSTDIR}/gocache-glibc" ;;
+esac
diff --git a/common/environment/build-style/haskell-stack.sh b/common/environment/build-style/haskell-stack.sh
new file mode 100644
index 0000000..6b47c12
--- /dev/null
+++ b/common/environment/build-style/haskell-stack.sh
@@ -0,0 +1 @@
+hostmakedepends+=" ghc stack"
diff --git a/common/environment/build-style/meson.sh b/common/environment/build-style/meson.sh
new file mode 100644
index 0000000..d5a3c41
--- /dev/null
+++ b/common/environment/build-style/meson.sh
@@ -0,0 +1 @@
+hostmakedepends+=" meson"
diff --git a/common/environment/build-style/perl-ModuleBuild.sh b/common/environment/build-style/perl-ModuleBuild.sh
new file mode 100644
index 0000000..60d6771
--- /dev/null
+++ b/common/environment/build-style/perl-ModuleBuild.sh
@@ -0,0 +1,3 @@
+hostmakedepends+=" perl"
+makedepends+=" perl"
+lib32disabled=yes
diff --git a/common/environment/build-style/perl-module.sh b/common/environment/build-style/perl-module.sh
new file mode 100644
index 0000000..300ed9b
--- /dev/null
+++ b/common/environment/build-style/perl-module.sh
@@ -0,0 +1,4 @@
+hostmakedepends+=" perl"
+makedepends+=" perl"
+depends+=" perl"
+lib32disabled=yes
diff --git a/common/environment/build-style/python-module.sh b/common/environment/build-style/python-module.sh
new file mode 100644
index 0000000..d6b6502
--- /dev/null
+++ b/common/environment/build-style/python-module.sh
@@ -0,0 +1,2 @@
+lib32disabled=yes
+makedepends+=" python python3"
diff --git a/common/environment/build-style/python2-module.sh b/common/environment/build-style/python2-module.sh
new file mode 100644
index 0000000..3a3699b
--- /dev/null
+++ b/common/environment/build-style/python2-module.sh
@@ -0,0 +1,2 @@
+lib32disabled=yes
+makedepends+=" python"
diff --git a/common/environment/build-style/python3-module.sh b/common/environment/build-style/python3-module.sh
new file mode 100644
index 0000000..56471fe
--- /dev/null
+++ b/common/environment/build-style/python3-module.sh
@@ -0,0 +1,2 @@
+lib32disabled=yes
+makedepends+=" python3"
diff --git a/common/environment/build-style/python3-pep517.sh b/common/environment/build-style/python3-pep517.sh
new file mode 100644
index 0000000..48f0c1b
--- /dev/null
+++ b/common/environment/build-style/python3-pep517.sh
@@ -0,0 +1,2 @@
+hostmakedepends+=" python3-pip"
+lib32disabled=yes
diff --git a/common/environment/build-style/raku-dist.sh b/common/environment/build-style/raku-dist.sh
new file mode 100644
index 0000000..01dc08f
--- /dev/null
+++ b/common/environment/build-style/raku-dist.sh
@@ -0,0 +1,3 @@
+depends+=" rakudo"
+checkdepends+=" perl"
+hostmakedepends+=" rakudo"
diff --git a/common/environment/build-style/ruby-module.sh b/common/environment/build-style/ruby-module.sh
new file mode 100644
index 0000000..2444d3d
--- /dev/null
+++ b/common/environment/build-style/ruby-module.sh
@@ -0,0 +1 @@
+lib32disabled=yes
diff --git a/common/environment/build-style/scons.sh b/common/environment/build-style/scons.sh
new file mode 100644
index 0000000..614fb2c
--- /dev/null
+++ b/common/environment/build-style/scons.sh
@@ -0,0 +1 @@
+hostmakedepends+=" scons"
diff --git a/common/environment/build-style/texmf.sh b/common/environment/build-style/texmf.sh
new file mode 100644
index 0000000..098b1b6
--- /dev/null
+++ b/common/environment/build-style/texmf.sh
@@ -0,0 +1,5 @@
+# rsync isn't needed for everything but it's far easier to just put it here
+hostmakedepends+=" rsync"
+# python_version isn't needed for everything either
+python_version=3
+create_wrksrc=yes
diff --git a/common/environment/build-style/texmf/ownership.txt b/common/environment/build-style/texmf/ownership.txt
new file mode 100644
index 0000000..01dcd2f
--- /dev/null
+++ b/common/environment/build-style/texmf/ownership.txt
@@ -0,0 +1,215 @@
+dvipdfmx/dvipdfmx.cfg texlive
+dvips/base/color.pro texlive
+dvips/base/crop.pro texlive
+dvips/base/finclude.pro texlive
+dvips/base/hps.pro texlive
+dvips/base/special.pro texlive
+dvips/base/texc.pro texlive
+dvips/base/tex.pro texlive
+dvips/base/texps.pro texlive
+dvips/gsftopk/render.ps texlive
+dvips/xdvi/config.xdvi texlive
+fonts/cmap/dvipdfmx/EUC-UCS2 texlive
+fonts/enc/dvips/base/dvips-all.enc texlive
+fonts/map/dvipdfmx/cid-x.map texlive
+fonts/map/glyphlist/glyphlist.txt texlive
+fonts/map/glyphlist/pdfglyphlist.txt texlive
+psutils/paper.cfg texlive
+scripts/a2ping/a2ping.pl texlive
+scripts/accfonts/mkt1font texlive
+scripts/accfonts/vpl2ovp texlive
+scripts/accfonts/vpl2vpl texlive
+scripts/adhocfilelist/adhocfilelist.sh texlive
+scripts/albatross/albatross.sh texlive
+scripts/arara/arara.sh texlive
+scripts/attachfile2/pdfatfi.pl texlive
+scripts/authorindex/authorindex texlive
+scripts/bib2gls/bib2gls.sh texlive
+scripts/bib2gls/convertgls2bib.sh texlive
+scripts/bibexport/bibexport.sh texlive
+scripts/bundledoc/arlatex texlive
+scripts/bundledoc/bundledoc texlive
+scripts/cachepic/cachepic.tlu texlive-pictures
+scripts/checkcites/checkcites.lua texlive
+scripts/checklistings/checklistings.sh texlive
+scripts/chklref/chklref.pl texlive
+scripts/cjk-gs-integrate/cjk-gs-integrate.pl texlive
+scripts/clojure-pamphlet/pamphletangler texlive
+scripts/cluttex/cluttex.lua texlive
+scripts/context/perl/mptopdf.pl texlive
+scripts/context/stubs/unix/contextjit texlive
+scripts/context/stubs/unix/context texlive
+scripts/context/stubs/unix/luatools texlive
+scripts/context/stubs/unix/mtxrunjit texlive
+scripts/context/stubs/unix/mtxrun texlive
+scripts/context/stubs/unix/texexec texlive
+scripts/context/stubs/unix/texmfstart texlive
+scripts/convbkmk/convbkmk.rb texlive-langjapanese
+scripts/crossrefware/bbl2bib.pl texlive
+scripts/crossrefware/bibdoiadd.pl texlive
+scripts/crossrefware/bibmradd.pl texlive
+scripts/crossrefware/biburl2doi.pl texlive
+scripts/crossrefware/bibzbladd.pl texlive
+scripts/crossrefware/ltx2crossrefxml.pl texlive
+scripts/ctanbib/ctanbib texlive
+scripts/ctanify/ctanify texlive
+scripts/ctan-o-mat/ctan-o-mat.pl texlive
+scripts/ctanupload/ctanupload.pl texlive
+scripts/de-macro/de-macro texlive
+scripts/diadia/diadia.lua texlive-humanities
+scripts/dosepsbin/dosepsbin.pl texlive
+scripts/dtxgen/dtxgen texlive
+scripts/dviasm/dviasm.py texlive
+scripts/dviinfox/dviinfox.pl texlive
+scripts/epspdf/epspdftk.tcl texlive
+scripts/epspdf/epspdf.tlu texlive
+scripts/epstopdf/epstopdf.pl texlive
+scripts/exceltex/exceltex texlive
+scripts/fig4latex/fig4latex texlive-pictures
+scripts/findhyph/findhyph texlive
+scripts/fontools/afm2afm texlive
+scripts/fontools/autoinst texlive
+scripts/fontools/ot2kpx texlive
+scripts/fragmaster/fragmaster.pl texlive
+scripts/getmap/getmapdl.lua texlive
+scripts/git-latexdiff/git-latexdiff texlive
+scripts/glossaries/makeglossaries-lite.lua texlive
+scripts/glossaries/makeglossaries texlive
+scripts/hyperxmp/hyperxmp-add-bytecount.pl texlive
+scripts/installfont/installfont-tl texlive
+scripts/jfmutil/jfmutil.pl texlive
+scripts/ketcindy/ketcindy.pl texlive
+scripts/kotex-utils/jamo-normalize.pl texlive-langkorean
+scripts/kotex-utils/komkindex.pl texlive-langkorean
+scripts/kotex-utils/ttf2kotexfont.pl texlive-langkorean
+scripts/l3build/l3build.lua texlive-latexextra
+scripts/latex2man/latex2man texlive
+scripts/latex2nemeth/latex2nemeth texlive
+scripts/latexdiff/latexdiff.pl texlive
+scripts/latexdiff/latexdiff-vc.pl texlive
+scripts/latexdiff/latexrevise.pl texlive
+scripts/latexfileversion/latexfileversion texlive
+scripts/latex-git-log/latex-git-log texlive
+scripts/latexindent/latexindent.pl texlive
+scripts/latexmk/latexmk.pl texlive
+scripts/latexpand/latexpand texlive
+scripts/latex-papersize/latex-papersize.py texlive
+scripts/light-latex-make/llmk.lua texlive
+scripts/lilyglyphs/lily-glyph-commands.py texlive-music
+scripts/lilyglyphs/lily-image-commands.py texlive-music
+scripts/lilyglyphs/lily-rebuild-pdfs.py texlive-music
+scripts/listbib/listbib texlive
+scripts/listings-ext/listings-ext.sh texlive
+scripts/ltxfileinfo/ltxfileinfo texlive
+scripts/ltximg/ltximg.pl texlive
+scripts/luaotfload/luaotfload-tool.lua texlive
+scripts/lwarp/lwarpmk.lua texlive
+scripts/make4ht/make4ht texlive
+scripts/makedtx/makedtx.pl texlive
+scripts/match_parens/match_parens texlive
+scripts/mathspic/mathspic.pl texlive-pictures
+scripts/mf2pt1/mf2pt1.pl texlive
+scripts/mkgrkindex/mkgrkindex texlive-langgreek
+scripts/mkjobtexmf/mkjobtexmf.pl texlive
+scripts/mkpic/mkpic texlive-pictures
+scripts/m-tx/m-tx.lua texlive-music
+scripts/multibibliography/multibibliography.pl texlive
+scripts/musixtex/musixflx.lua texlive-music
+scripts/musixtex/musixtex.lua texlive-music
+scripts/pax/pdfannotextractor.pl texlive
+scripts/pdfbook2/pdfbook2 texlive
+scripts/pdfcrop/pdfcrop.pl texlive
+scripts/pdfjam/pdfjam texlive
+scripts/pdflatexpicscale/pdflatexpicscale.pl texlive
+scripts/pdftex-quiet/pdftex-quiet texlive
+scripts/pdfxup/pdfxup texlive
+scripts/pedigree-perl/pedigree.pl texlive-pstricks
+scripts/perltex/perltex.pl texlive
+scripts/petri-nets/pn2pdf texlive
+scripts/tikztosvg/tikztosvg texlive-pictures
+scripts/pfarrei/a5toa4.tlu texlive
+scripts/pfarrei/pfarrei.tlu texlive
+scripts/pkfix-helper/pkfix-helper texlive
+scripts/pkfix/pkfix.pl texlive
+scripts/pmxchords/pmxchords.lua texlive-music
+scripts/ps2eps/ps2eps.pl texlive
+scripts/pst2pdf/pst2pdf.pl texlive-pstricks
+scripts/pst-pdf/ps4pdf texlive-pstricks
+scripts/psutils/extractres.pl texlive
+scripts/psutils/includeres.pl texlive
+scripts/psutils/psjoin.pl texlive
+scripts/ptex2pdf/ptex2pdf.lua texlive
+scripts/ptex-fontmaps/kanji-config-updmap.pl texlive-langjapanese
+scripts/ptex-fontmaps/kanji-config-updmap-sys.sh texlive-langjapanese
+scripts/ptex-fontmaps/kanji-config-updmap-user.sh texlive-langjapanese
+scripts/ptex-fontmaps/kanji-fontmap-creator.pl texlive-langjapanese
+scripts/purifyeps/purifyeps texlive
+scripts/pygmentex/pygmentex.py texlive-latexextra
+scripts/pythontex/depythontex.py texlive
+scripts/pythontex/pythontex.py texlive
+scripts/rubik/rubikrotation.pl texlive-games
+scripts/simpdftex/simpdftex texlive
+scripts/spix/spix.py texlive
+scripts/splitindex/splitindex.pl texlive
+scripts/srcredact/srcredact.pl texlive
+scripts/sty2dtx/sty2dtx.pl texlive
+scripts/svn-multi/svn-multi.pl texlive
+scripts/tex4ebook/tex4ebook texlive
+scripts/texcount/texcount.pl texlive
+scripts/texdef/texdef.pl texlive
+scripts/texdiff/texdiff texlive
+scripts/texdirflatten/texdirflatten texlive
+scripts/texdoc/texdoc.tlu texlive
+scripts/texdoctk/texdoctk.pl texlive
+scripts/texfot/texfot.pl texlive
+scripts/texlive-extra/allcm.sh texlive
+scripts/texlive-extra/allneeded.sh texlive
+scripts/texlive-extra/dvi2fax.sh texlive
+scripts/texlive-extra/dvired.sh texlive
+scripts/texlive-extra/e2pall.pl texlive
+scripts/texlive-extra/fontinst.sh texlive
+scripts/texlive-extra/kpsetool.sh texlive
+scripts/texlive-extra/kpsewhere.sh texlive
+scripts/texlive-extra/ps2frag.sh texlive
+scripts/texlive-extra/pslatex.sh texlive
+scripts/texlive-extra/rubibtex.sh texlive-langcyrillic
+scripts/texlive-extra/rumakeindex.sh texlive-langcyrillic
+scripts/texlive-extra/texconfig-dialog.sh texlive
+scripts/texlive-extra/texconfig.sh texlive
+scripts/texlive-extra/texconfig-sys.sh texlive
+scripts/texlive-extra/texlinks.sh texlive
+scripts/texlive/fmtutil.pl texlive
+scripts/texlive/fmtutil-sys.sh texlive
+scripts/texlive/fmtutil-user.sh texlive
+scripts/texlive/mktexlsr texlive
+scripts/texlive/mktexmf texlive
+scripts/texlive/mktexpk texlive
+scripts/texlive/mktextfm texlive
+scripts/texliveonfly/texliveonfly.py texlive
+scripts/texlive/rungs.tlu texlive
+scripts/texlive/tlmgr.pl texlive
+scripts/texlive/updmap.pl texlive
+scripts/texlive/updmap-sys.sh texlive
+scripts/texlive/updmap-user.sh texlive
+scripts/texloganalyser/texloganalyser texlive
+scripts/texosquery/texosquery-jre5.sh texlive
+scripts/texosquery/texosquery-jre8.sh texlive
+scripts/texosquery/texosquery.sh texlive
+scripts/texplate/texplate.sh texlive
+scripts/thumbpdf/thumbpdf.pl texlive
+scripts/tlshell/tlshell.tcl texlive
+scripts/typeoutfileinfo/typeoutfileinfo.sh texlive
+scripts/ulqda/ulqda.pl texlive-science
+scripts/urlbst/urlbst texlive
+scripts/vpe/vpe.pl texlive
+scripts/webquiz/webquiz.py texlive
+scripts/wordcount/wordcount.sh texlive
+scripts/xindex/xindex.lua texlive
+scripts/yplan/yplan texlive
+texconfig/tcfmgr.map texlive
+texconfig/tcfmgr texlive
+web2c/fmtutil.cnf texlive
+web2c/texmf.cnf texlive
+xdvi/pixmap/toolbar2.xpm texlive
+xdvi/pixmap/toolbar.xpm texlive
+xdvi/XDvi texlive
diff --git a/common/environment/build-style/void-cross.sh b/common/environment/build-style/void-cross.sh
new file mode 100644
index 0000000..62ce9ea
--- /dev/null
+++ b/common/environment/build-style/void-cross.sh
@@ -0,0 +1,6 @@
+lib32disabled=yes
+nopie=yes
+create_wrksrc=yes
+
+nostrip_files+=" libcaf_single.a libgcc.a libgcov.a libgcc_eh.a
+ libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a"
diff --git a/common/environment/build-style/waf.sh b/common/environment/build-style/waf.sh
new file mode 100644
index 0000000..f5deafb
--- /dev/null
+++ b/common/environment/build-style/waf.sh
@@ -0,0 +1 @@
+hostmakedepends+=" python"
diff --git a/common/environment/build-style/waf3.sh b/common/environment/build-style/waf3.sh
new file mode 100644
index 0000000..471e0da
--- /dev/null
+++ b/common/environment/build-style/waf3.sh
@@ -0,0 +1 @@
+hostmakedepends+=" python3"
diff --git a/common/environment/build-style/zig-build.sh b/common/environment/build-style/zig-build.sh
new file mode 100644
index 0000000..049b7cd
--- /dev/null
+++ b/common/environment/build-style/zig-build.sh
@@ -0,0 +1 @@
+hostmakedepends+=" zig"
diff --git a/common/environment/build/.empty b/common/environment/build/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/build/bootstrap.sh b/common/environment/build/bootstrap.sh
new file mode 120000
index 0000000..a0cf1d2
--- /dev/null
+++ b/common/environment/build/bootstrap.sh
@@ -0,0 +1 @@
+../configure/bootstrap.sh
\ No newline at end of file
diff --git a/common/environment/build/ccache.sh b/common/environment/build/ccache.sh
new file mode 120000
index 0000000..b5ed088
--- /dev/null
+++ b/common/environment/build/ccache.sh
@@ -0,0 +1 @@
+../configure/ccache.sh
\ No newline at end of file
diff --git a/common/environment/build/cross.sh b/common/environment/build/cross.sh
new file mode 120000
index 0000000..43f6c48
--- /dev/null
+++ b/common/environment/build/cross.sh
@@ -0,0 +1 @@
+../configure/cross.sh
\ No newline at end of file
diff --git a/common/environment/build/debug-debug-prefix-map.sh b/common/environment/build/debug-debug-prefix-map.sh
new file mode 120000
index 0000000..98c260a
--- /dev/null
+++ b/common/environment/build/debug-debug-prefix-map.sh
@@ -0,0 +1 @@
+../configure/debug-debug-prefix-map.sh
\ No newline at end of file
diff --git a/common/environment/build/hardening.sh b/common/environment/build/hardening.sh
new file mode 120000
index 0000000..f043590
--- /dev/null
+++ b/common/environment/build/hardening.sh
@@ -0,0 +1 @@
+../configure/hardening.sh
\ No newline at end of file
diff --git a/common/environment/build/pkg-config.sh b/common/environment/build/pkg-config.sh
new file mode 120000
index 0000000..b8f8c44
--- /dev/null
+++ b/common/environment/build/pkg-config.sh
@@ -0,0 +1 @@
+../configure/pkg-config.sh
\ No newline at end of file
diff --git a/common/environment/check/bootstrap.sh b/common/environment/check/bootstrap.sh
new file mode 120000
index 0000000..a0cf1d2
--- /dev/null
+++ b/common/environment/check/bootstrap.sh
@@ -0,0 +1 @@
+../configure/bootstrap.sh
\ No newline at end of file
diff --git a/common/environment/check/ccache.sh b/common/environment/check/ccache.sh
new file mode 120000
index 0000000..b5ed088
--- /dev/null
+++ b/common/environment/check/ccache.sh
@@ -0,0 +1 @@
+../configure/ccache.sh
\ No newline at end of file
diff --git a/common/environment/check/cross.sh b/common/environment/check/cross.sh
new file mode 120000
index 0000000..43f6c48
--- /dev/null
+++ b/common/environment/check/cross.sh
@@ -0,0 +1 @@
+../configure/cross.sh
\ No newline at end of file
diff --git a/common/environment/check/debug-debug-prefix-map.sh b/common/environment/check/debug-debug-prefix-map.sh
new file mode 120000
index 0000000..98c260a
--- /dev/null
+++ b/common/environment/check/debug-debug-prefix-map.sh
@@ -0,0 +1 @@
+../configure/debug-debug-prefix-map.sh
\ No newline at end of file
diff --git a/common/environment/check/hardening.sh b/common/environment/check/hardening.sh
new file mode 120000
index 0000000..f043590
--- /dev/null
+++ b/common/environment/check/hardening.sh
@@ -0,0 +1 @@
+../configure/hardening.sh
\ No newline at end of file
diff --git a/common/environment/check/no_display.sh b/common/environment/check/no_display.sh
new file mode 100644
index 0000000..b7a905f
--- /dev/null
+++ b/common/environment/check/no_display.sh
@@ -0,0 +1 @@
+export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}
diff --git a/common/environment/check/pkg-config.sh b/common/environment/check/pkg-config.sh
new file mode 120000
index 0000000..b8f8c44
--- /dev/null
+++ b/common/environment/check/pkg-config.sh
@@ -0,0 +1 @@
+../configure/pkg-config.sh
\ No newline at end of file
diff --git a/common/environment/configure/.empty b/common/environment/configure/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/configure/autoconf_cache/aarch64-linux b/common/environment/configure/autoconf_cache/aarch64-linux
new file mode 100644
index 0000000..ad17545
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/aarch64-linux
@@ -0,0 +1,147 @@
+## # general
+ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
+ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
+## ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
+## ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+## ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+## ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
+## ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
+## ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
+## ac_cv_linux_vers=${ac_cv_linux_vers=2}
+## ac_cv_need_trio=${ac_cv_need_trio=no}
+ac_cv_sizeof___int64=0
+ac_cv_sizeof_char=1
+ac_cv_sizeof_int=4
+ac_cv_sizeof_long=8
+ac_cv_sizeof_long_long=8
+ac_cv_sizeof_short=2
+ac_cv_sizeof_size_t=8
+ac_cv_sizeof_ssize_t=8
+ac_cv_sizeof_void_p=8
+ac_cv_sizeof_unsigned_int=4
+ac_cv_sizeof_unsigned_long=8
+ac_cv_sizeof_bool=1
+## ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
+## ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=8}
+## ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+## ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=8}
+ac_cv_sizeof_unsigned_short=2
+## ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
+## ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=8}
+## ac_cv_sizeof_uid_t=${ac_cv_sizeof_uid_t=4}
+## ac_cv_sizeof_gid_t=${ac_cv_sizeof_gid_t=4}
+## ac_cv_sizeof_ino_t=${ac_cv_sizeof_ino_t=8}
+## ac_cv_sizeof_dev_t=${ac_cv_sizeof_dev_t=8}
+## ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=8}
+## ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
+## db_cv_alignp_t=${db_cv_alignp_t='unsigned long long'}
+## db_cv_align_t=${db_cv_align_t='unsigned long long'}
+## db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+## db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+## ac_cv_sizeof_struct_iovec=16
+
+# glib
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=8
+ac_cv_alignof_unsigned_long=8
+ac_cv_alignof_char=1
+ac_cv_alignof_double=8
+
+## nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
+## samba_cv_HAVE_VA_COPY=${samba_cv_HAVE_VA_COPY=yes}
+## utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+#gcc
+ac_cv_lib_m_sin=${ac_cv_lib_m_sin=yes}
+
+#orbit
+libIDL_cv_long_long_format=ll
+
+## # ORBit2
+## ac_cv_alignof_CORBA_boolean=1
+## ac_cv_alignof_CORBA_char=1
+## ac_cv_alignof_CORBA_double=8
+## ac_cv_alignof_CORBA_float=4
+## ac_cv_alignof_CORBA_long=4
+## ac_cv_alignof_CORBA_long_double=8
+## ac_cv_alignof_CORBA_long_long=8
+## ac_cv_alignof_CORBA_octet=1
+## ac_cv_alignof_CORBA_pointer=8
+## ac_cv_alignof_CORBA_short=2
+## ac_cv_alignof_CORBA_struct=1
+## ac_cv_alignof_CORBA_wchar=2
+## 
+## lf_cv_sane_realloc=yes
+as_cv_unaligned_access=${as_cv_unaligned_access=no}
+## 
+## #unfs3
+## nfsd_cv_broken_setfsuid=${nfsd_cv_broken_setfsuid=0}
+## nfsd_cv_func_statfs=${nfsd_cv_func_statfs=statfs2_bsize}
+## nfsd_cv_bsd_signals=${nfsd_cv_bsd_signals=yes}
+
+#apr
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# lftp
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
+
+# slrn
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+## # at-spi2-core
+ac_cv_alignof_dbind_pointer=8
+ac_cv_alignof_dbind_struct=1
+ac_cv_alignof_dbus_bool_t=4
+ac_cv_alignof_dbus_int16_t=2
+ac_cv_alignof_dbus_int32_t=4
+ac_cv_alignof_dbus_int64_t=8
+
+## # socat
+sc_cv_type_dev_basic='6 /* unsigned long */'
+sc_cv_type_gidt_basic='4 /* unsigned int */'
+sc_cv_type_longlong=yes
+sc_cv_type_modet_basic='4 /* unsigned int */'
+sc_cv_type_off64=yes
+sc_cv_type_off64_basic='5 /* long */'
+sc_cv_type_off_basic='5 /* long */'
+sc_cv_type_pidt_basic='3 /* int */'
+sc_cv_type_rlimit_rlimmax_basic='6 /* unsigned long */'
+sc_cv_type_sa_family_t=yes
+sc_cv_type_sighandler=yes
+sc_cv_type_sizet_basic='6 /* unsigned long */'
+sc_cv_type_socklen=yes
+sc_cv_type_socklent_basic='4 /* unsigned int */'
+sc_cv_type_stat64=yes
+sc_cv_type_stat64_stblksize_basic='3 /* int */'
+sc_cv_type_stat64_stblocks_basic='5 /* long */'
+sc_cv_type_stat64_stdev_basic='6 /* unsigned long */'
+sc_cv_type_stat64_stino_basic='6 /* unsigned long */'
+sc_cv_type_stat64_stnlink_basic='4 /* unsigned int */'
+sc_cv_type_stat64_stsize_basic='5 /* long */'
+sc_cv_type_stat_stblksize_basic='3 /* int */'
+sc_cv_type_stat_stblocks_basic='5 /* long */'
+sc_cv_type_stat_stino_basic='6 /* unsigned long */'
+sc_cv_type_stat_stnlink_basic='4 /* unsigned int */'
+sc_cv_type_stat_stsize_basic='5 /* long */'
+sc_cv_type_struct_timeval_tv_usec='5 /* long */'
+sc_cv_type_timet_basic='5 /* long */'
+sc_cv_type_uidt_basic='4 /* unsigned int */'
+sc_cv_type_uint16=yes
+sc_cv_type_uint32=yes
+sc_cv_type_uint64=yes
+sc_cv_type_uint8=yes
+sc_cv_typeof_struct_cmsghdr_cmsg_len='6 /* unsigned long */'
diff --git a/common/environment/configure/autoconf_cache/arm-common b/common/environment/configure/autoconf_cache/arm-common
new file mode 100644
index 0000000..0f09e06
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/arm-common
@@ -0,0 +1,232 @@
+# general
+ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
+ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
+ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
+ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
+ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
+ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
+ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
+ac_cv_sctp=${ac_cv_sctp=no}
+ac_cv_sizeof_struct_iovec=8
+
+# apache
+ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
+apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
+ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=yes}
+
+# coreutils
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+# db (sleepycat)
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# edb
+db_cv_spinlocks=${db_cv_spinlocks=no}
+
+# ettercap
+ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
+compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
+
+# fnmatch
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# glib
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
+glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
+glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
+
+# glib-2.0
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
+glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
+glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=8
+ac_cv_alignof_unsigned_long=4
+
+#gstreamer
+as_cv_unaligned_access=${as_cv_unaligned_access=no}
+
+# httppc
+ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
+
+# jikes
+ac_cv_sizeof_wchar_t=4
+
+# lftp
+ac_cv_need_trio=${ac_cv_need_trio=no}
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
+
+# libesmtp
+acx_working_snprintf=${acx_working_snprintf=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# libnet 
+ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# libxfce4util
+with_broken_putenv=${with_broken_putenv=no}
+
+# links
+ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
+
+# mysql
+mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
+mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
+
+# nano
+ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
+nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
+
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=8
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=8
+ac_cv_alignof_CORBA_long_long=8
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=4
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=1
+ac_cv_alignof_CORBA_wchar=2
+
+# php
+ac_cv_pread=${ac_cv_pread=no}
+ac_cv_pwrite=${ac_cv_pwrite=no}
+php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
+
+# rsync
+rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
+rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
+rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
+rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
+rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
+rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
+rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
+rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
+rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
+rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
+rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
+
+# screen
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+
+# slrn
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
+
+# socat
+sc_cv_sys_crdly_shift=9
+sc_cv_sys_csize_shift=4
+sc_cv_sys_tabdly_shift=11
+sc_cv_type_dev_basic='8 /* unsigned long long */'
+sc_cv_type_gidt_basic='4 /* unsigned int */'
+sc_cv_type_longlong=yes
+sc_cv_type_modet_basic='4 /* unsigned int */'
+sc_cv_type_off64=no
+sc_cv_type_off64_basic='0 /* unknown */'
+sc_cv_type_off_basic='3 /* int */'
+sc_cv_type_pidt_basic='3 /* int */'
+sc_cv_type_rlimit_rlimmax_basic='4 /* unsigned int */'
+sc_cv_type_sa_family_t=yes
+sc_cv_type_sighandler=no
+sc_cv_type_sizet_basic='4 /* unsigned int */'
+sc_cv_type_socklen=yes
+sc_cv_type_socklent_basic='4 /* unsigned int */'
+sc_cv_type_stat64=no
+sc_cv_type_stat64_stblksize_basic='0 /* unknown */'
+sc_cv_type_stat64_stblocks_basic='0 /* unknown */'
+sc_cv_type_stat64_stdev_basic='0 /* unknown */'
+sc_cv_type_stat64_stino_basic='0 /* unknown */'
+sc_cv_type_stat64_stnlink_basic='0 /* unknown */'
+sc_cv_type_stat64_stsize_basic='0 /* unknown */'
+sc_cv_type_stat_stblksize_basic='3 /* int */'
+sc_cv_type_stat_stblocks_basic='3 /* int */'
+sc_cv_type_stat_stino_basic='4 /* unsigned int */'
+sc_cv_type_stat_stnlink_basic='4 /* unsigned int */'
+sc_cv_type_stat_stsize_basic='3 /* int */'
+sc_cv_type_struct_timeval_tv_usec='3 /* int */'
+sc_cv_type_timet_basic='3 /* int */'
+sc_cv_type_uidt_basic='4 /* unsigned int */'
+sc_cv_type_uint16=yes
+sc_cv_type_uint32=yes
+sc_cv_type_uint64=yes
+sc_cv_type_uint8=yes
+sc_cv_typeof_struct_cmsghdr_cmsg_len='4 /* unsigned int */'
+
+# ssh
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
+
+# startup-notification
+lf_cv_sane_realloc=yes
+
+# xffm
+jm_cv_func_working_readdir=yes
+
+# evolution-data-server
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
+
+# at-spi2-core
+ac_cv_alignof_char=1
+ac_cv_alignof_dbind_pointer=4
+ac_cv_alignof_dbind_struct=1
+ac_cv_alignof_dbus_bool_t=4
+ac_cv_alignof_dbus_int16_t=2
+ac_cv_alignof_dbus_int32_t=4
+ac_cv_alignof_dbus_int64_t=8
+ac_cv_alignof_double=8
diff --git a/common/environment/configure/autoconf_cache/arm-linux b/common/environment/configure/autoconf_cache/arm-linux
new file mode 100644
index 0000000..d74f06b
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/arm-linux
@@ -0,0 +1,157 @@
+ac_cv_func_setvbuf_reversed=no
+ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
+ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
+ac_cv_sizeof_wchar_t=${ac_cv_sizeof_wchar_t=4}
+ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1}
+ac_cv_sizeof_bool=${ac_cv_sizeof_bool=1}
+ac_cv_sizeof_char_p=${ac_cv_sizeof_int_p=4}
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_sizeof_int_p=${ac_cv_sizeof_int_p=4}
+ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
+ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=4}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=4}
+ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
+ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
+ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
+ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
+ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
+ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
+ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
+ac_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
+ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2}
+ac_cv_sizeof_unsigned=${ac_cv_sizeof_unsigned=4}
+ac_cv_sizeof_unsigned_int=${ac_cv_sizeof_unsigned_int=4}
+ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=4}
+ac_cv_sizeof_unsigned_long_long=${ac_cv_sizeof_unsigned_long_long=8}
+ac_cv_sizeof_signed_char=${ac_cv_sizeof_signed_char=1}
+
+ac_cv_uchar=${ac_cv_uchar=no}
+ac_cv_uint=${ac_cv_uint=yes}
+ac_cv_ulong=${ac_cv_ulong=yes}
+ac_cv_ushort=${ac_cv_ushort=yes}
+ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
+
+# samba
+samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=${samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes}
+samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=${samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no}
+samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=${samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no}
+samba_cv_HAVE_BROKEN_GETGROUPS=${samba_cv_HAVE_BROKEN_GETGROUPS=no}
+samba_cv_HAVE_BROKEN_LINUX_SENDFILE=${samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes}
+samba_cv_HAVE_BROKEN_READDIR=${samba_cv_HAVE_BROKEN_READDIR=yes}
+samba_cv_HAVE_BROKEN_READDIR_NAME=${samba_cv_HAVE_BROKEN_READDIR_NAME=no}
+samba_cv_HAVE_C99_VSNPRINTF=${samba_cv_HAVE_C99_VSNPRINTF=yes}
+samba_cv_HAVE_DEV64_T=${samba_cv_HAVE_DEV64_T=no}
+samba_cv_HAVE_DEVICE_MAJOR_FN=${samba_cv_HAVE_DEVICE_MAJOR_FN=yes}
+samba_cv_HAVE_DEVICE_MINOR_FN=${samba_cv_HAVE_DEVICE_MINOR_FN=yes}
+samba_cv_HAVE_DQB_FSOFTLIMIT=${samba_cv_HAVE_DQB_FSOFTLIMIT=no}
+samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=${samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes}
+samba_cv_HAVE_FAM_H=${samba_cv_HAVE_FAM_H=no}
+samba_cv_HAVE_FCNTL_LOCK=${samba_cv_HAVE_FCNTL_LOCK=yes}
+samba_cv_HAVE_FTRUNCATE_EXTEND=${samba_cv_HAVE_FTRUNCATE_EXTEND=yes}
+samba_cv_HAVE_FUNCTION_MACRO=${samba_cv_HAVE_FUNCTION_MACRO=yes}
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+samba_cv_HAVE_INO64_T=${samba_cv_HAVE_INO64_T=no}
+samba_cv_HAVE_INT16_FROM_RPC_RPC_H=${samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_INT32_FROM_RPC_RPC_H=${samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes}
+samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes}
+samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes}
+samba_cv_HAVE_MAKEDEV=${samba_cv_HAVE_MAKEDEV=yes}
+samba_cv_HAVE_MMAP=${samba_cv_HAVE_MMAP=yes}
+samba_cv_HAVE_NATIVE_ICONV=${samba_cv_HAVE_NATIVE_ICONV=yes}
+samba_cv_HAVE_OFF64_T=${samba_cv_HAVE_OFF64_T=no}
+samba_cv_HAVE_ROOT=${samba_cv_HAVE_ROOT=yes}
+samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=${samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no}
+samba_cv_HAVE_SECURE_MKSTEMP=${samba_cv_HAVE_SECURE_MKSTEMP=yes}
+samba_cv_HAVE_SENDFILE=${samba_cv_HAVE_SENDFILE=yes}
+samba_cv_HAVE_SENDFILE64=${samba_cv_HAVE_SENDFILE64=yes}
+samba_cv_HAVE_SOCK_SIN_LEN=${samba_cv_HAVE_SOCK_SIN_LEN=no}
+samba_cv_HAVE_STAT_ST_BLKSIZE=${samba_cv_HAVE_STAT_ST_BLKSIZE=yes}
+samba_cv_HAVE_STAT_ST_BLOCKS=${samba_cv_HAVE_STAT_ST_BLOCKS=yes}
+samba_cv_HAVE_STRUCT_DIR64=${samba_cv_HAVE_STRUCT_DIR64=no}
+samba_cv_HAVE_STRUCT_DIRENT64=${samba_cv_HAVE_STRUCT_DIRENT64=yes}
+samba_cv_HAVE_STRUCT_FLOCK64=${samba_cv_HAVE_STRUCT_FLOCK64=yes}
+samba_cv_HAVE_TRUNCATED_SALT=${samba_cv_HAVE_TRUNCATED_SALT=no}
+samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=${samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=${samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no}
+samba_cv_HAVE_UNSIGNED_CHAR=${samba_cv_HAVE_UNSIGNED_CHAR=yes}
+samba_cv_HAVE_UTIMBUF=${samba_cv_HAVE_UTIMBUF=yes}
+samba_cv_HAVE_UT_UT_ADDR=${samba_cv_HAVE_UT_UT_ADDR=yes}
+samba_cv_HAVE_UT_UT_EXIT=${samba_cv_HAVE_UT_UT_EXIT=yes}
+samba_cv_HAVE_UT_UT_HOST=${samba_cv_HAVE_UT_UT_HOST=yes}
+samba_cv_HAVE_UT_UT_ID=${samba_cv_HAVE_UT_UT_ID=yes}
+samba_cv_HAVE_UT_UT_NAME=${samba_cv_HAVE_UT_UT_NAME=yes}
+samba_cv_HAVE_UT_UT_PID=${samba_cv_HAVE_UT_UT_PID=yes}
+samba_cv_HAVE_UT_UT_TIME=${samba_cv_HAVE_UT_UT_TIME=yes}
+samba_cv_HAVE_UT_UT_TV=${samba_cv_HAVE_UT_UT_TV=yes}
+samba_cv_HAVE_UT_UT_TYPE=${samba_cv_HAVE_UT_UT_TYPE=yes}
+samba_cv_HAVE_UT_UT_USER=${samba_cv_HAVE_UT_UT_USER=yes}
+samba_cv_HAVE_UX_UT_SYSLEN=${samba_cv_HAVE_UX_UT_SYSLEN=no}
+samba_cv_HAVE_VA_COPY=${samba_cv_HAVE_VA_COPY=yes}
+samba_cv_HAVE_WORKING_AF_LOCAL=${samba_cv_HAVE_WORKING_AF_LOCAL=yes}
+samba_cv_HAVE_Werror=${samba_cv_HAVE_Werror=yes}
+samba_cv_PUTUTLINE_RETURNS_UTMP=${samba_cv_PUTUTLINE_RETURNS_UTMP=yes}
+samba_cv_QUOTA_WORKS=${samba_cv_QUOTA_WORKS=yes}
+samba_cv_REALPATH_TAKES_NULL=${samba_cv_REALPATH_TAKES_NULL=yes}
+samba_cv_REPLACE_GETPASS=${samba_cv_REPLACE_GETPASS=yes}
+samba_cv_REPLACE_INET_NTOA=${samba_cv_REPLACE_INET_NTOA=no}
+samba_cv_REPLACE_READDIR=${samba_cv_REPLACE_READDIR=no}
+samba_cv_RUN_QUOTA_TESTS=${samba_cv_RUN_QUOTA_TESTS=yes}
+samba_cv_SEEKDIR_RETURNS_VOID=${samba_cv_SEEKDIR_RETURNS_VOID=yes}
+samba_cv_SIZEOF_DEV_T=${samba_cv_SIZEOF_DEV_T=yes}
+samba_cv_SIZEOF_INO_T=${samba_cv_SIZEOF_INO_T=yes}
+samba_cv_SIZEOF_OFF_T=${samba_cv_SIZEOF_OFF_T=yes}
+samba_cv_SYSCONF_SC_NGROUPS_MAX=${samba_cv_SYSCONF_SC_NGROUPS_MAX=yes}
+samba_cv_SYSCONF_SC_NPROCESSORS_ONLN=${samba_cv_SYSCONF_SC_NPROCESSORS_ONLN=yes}
+samba_cv_SYSCONF_SC_NPROC_ONLN=${samba_cv_SYSCONF_SC_NPROC_ONLN=no}
+samba_cv_SYSCONF_SC_PAGESIZE=${samba_cv_SYSCONF_SC_PAGESIZE=yes}
+samba_cv_SYSQUOTA_FOUND=${samba_cv_SYSQUOTA_FOUND=yes}
+samba_cv_SYSQUOTA_WORKS=${samba_cv_SYSQUOTA_WORKS=yes}
+samba_cv_SYSQUOTA_WORKS_XFS=${samba_cv_SYSQUOTA_WORKS_XFS=yes}
+samba_cv_TRY_QUOTAS=${samba_cv_TRY_QUOTAS=no}
+samba_cv_TRY_SYS_QUOTAS=${samba_cv_TRY_SYS_QUOTAS=yes}
+samba_cv_USE_SETRESUID=${samba_cv_USE_SETRESUID=yes}
+samba_cv_WE_USE_SYS_QUOTAS=${samba_cv_WE_USE_SYS_QUOTAS=yes}
+samba_cv_WITH_AFS=${samba_cv_WITH_AFS=no}
+samba_cv_WITH_FAKE_KASERVER=${samba_cv_WITH_FAKE_KASERVER=no}
+samba_cv_WITH_QUOTAS=${samba_cv_WITH_QUOTAS=auto}
+samba_cv_WITH_SYS_QUOTAS=${samba_cv_WITH_SYS_QUOTAS=auto}
+samba_cv_WITH_VFS_AFSACL=${samba_cv_WITH_VFS_AFSACL=no}
+samba_cv_compiler_supports_ll=${samba_cv_compiler_supports_ll=yes}
+samba_cv_found_xfs_header=${samba_cv_found_xfs_header=yes}
+samba_cv_have_longlong=${samba_cv_have_longlong=yes}
+samba_cv_have_setresgid=${samba_cv_have_setresgid=yes}
+samba_cv_have_setresuid=${samba_cv_have_setresuid=yes}
+samba_cv_immediate_structures=${samba_cv_immediate_structures=yes}
+samba_cv_optimize_out_funcation_calls=${samba_cv_optimize_out_funcation_calls=yes}
+samba_cv_sig_atomic_t=${samba_cv_sig_atomic_t=yes}
+samba_cv_socklen_t=${samba_cv_socklen_t=yes}
+samba_cv_struct_timespec=${samba_cv_struct_timespec=yes}
+samba_cv_sysquotas_file=${samba_cv_sysquotas_file=lib/sysquotas_linux.c}
+samba_cv_unixsocket=${samba_cv_unixsocket=yes}
+samba_cv_volatile=${samba_cv_volatile=yes}
+
+#older sambe defines
+samba_cv_USE_SETEUID=${samba_cv_USE_SETEUID=yes}
+samba_cv_USE_SETREUID=${samba_cv_USE_SETREUID=yes}
+samba_cv_USE_SETUIDX=${samba_cv_USE_SETUIDX=yes}
+samba_cv_LINUX_LFS_SUPPORT=${samba_cv_LINUX_LFS_SUPPORT=yes}
+
+# clamav
+clamav_av_func_working_snprintf_long=${clamav_av_func_working_snprintf_long=yes}
+clamav_av_have_in_port_t=${clamav_av_have_in_port_t=yes}
+clamav_av_have_in_addr_t=${clamav_av_have_in_addr_t=yes}
+ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
+
+#dbus
+ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=yes}
+
+# guile
+ac_cv_func_pthread_attr_getstack=${ac_cv_func_pthread_attr_getstack=yes}
+
+# gnet
+ac_cv_member_struct_sockaddr_sa_len=${ac_cv_member_struct_sockaddr_sa_len=no}
+ac_cv_gnet_have_abstract_sockets=${ac_cv_gnet_have_abstract_sockets=no}
+gnet_sockaddr_family_field_name=${gnet_sockaddr_family_field_name=ss_family}
diff --git a/common/environment/configure/autoconf_cache/common-glibc b/common/environment/configure/autoconf_cache/common-glibc
new file mode 100644
index 0000000..9823c53
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/common-glibc
@@ -0,0 +1,71 @@
+# clamav
+clamav_av_func_working_snprintf_long=${clamav_av_func_working_snprintf_long=yes}
+clamav_av_have_in_port_t=${clamav_av_have_in_port_t=yes}
+clamav_av_have_in_addr_t=${clamav_av_have_in_addr_t=yes}
+ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
+
+# coreutils
+fu_cv_sys_stat_statfs2_bsize=${fu_cv_sys_stat_statfs2_bsize=yes}
+
+# glib
+glib_cv_strlcpy=${glib_cv_strlcpy=no}
+ac_cv_func_printf_unix98=${ac_cv_func_printf_unix98=yes}
+ac_cv_func_snprintf_c99=${ac_cv_func_snprintf_c99=yes}
+ac_cv_func_vsnprintf_c99=${ac_cv_func_vsnprintf_c99=yes}
+glib_cv_compliant_posix_memalign=${glib_cv_compliant_posix_memalign=1}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+# glib-1.x requires this and pkgconfig-native / pkgconfig-nativesdk use
+# that to avoid a dependency loop.
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_va_copy=${glib_cv_va_copy=yes}
+glib_cv_have_qsort_r=${glib_cv_have_qsort_r=yes}
+
+#dbus-glib
+ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=yes}
+
+# git
+ac_cv_iconv_omits_bom=${ac_cv_iconv_omits_bom=no}
+
+# gnucash
+am_cv_scanf_lld=${am_cv_scanf_lld=yes}
+
+# guile
+ac_cv_func_pthread_attr_getstack=${ac_cv_func_pthread_attr_getstack=yes}
+
+#gcc-zlib
+ac_cv_func_getpagesize=${ac_cv_func_getpagesize=yes}
+ac_cv_func_memcpy=${ac_cv_func_memcpy=yes}
+ac_cv_func_strerror=${ac_cv_func_strerror=yes}
+
+# squid
+ac_cv_af_unix_large_dgram=${ac_cv_af_unix_large_dgram=yes}
+ac_cv_func_setresuid=${ac_cv_func_setresuid=yes}
+ac_cv_func_va_copy=${ac_cv_func_va_copy=yes}
+ac_cv_func___va_copy=${ac_cv_func___va_copy=yes}
+ac_cv_epoll_works=${ac_cv_epoll_works=yes}
+
+ac_cv_check_sjlj=ssjlj
+
+# m4
+gt_cv_locale_fr=${gt_cv_locale_fr=fr_FR}
+gl_cv_func_btowc_eof=${gl_cv_func_btowc_eof=yes}
+gl_cv_func_wcrtomb_retval=${gl_cv_func_wcrtomb_retval=yes}
+gl_cv_func_wctob_works=${gl_cv_func_wctob_works=yes}
+gl_cv_func_mbrtowc_incomplete_state=${gl_cv_func_mbrtowc_incomplete_state=yes}
+gl_cv_func_mbrtowc_sanitycheck=${gl_cv_func_mbrtowc_sanitycheck=yes}
+gl_cv_func_mbrtowc_null_arg=${gl_cv_func_mbrtowc_null_arg=yes}
+gl_cv_func_mbrtowc_retval=${gl_cv_func_mbrtowc_retval=yes}
+gl_cv_func_mbrtowc_nul_retval=${gl_cv_func_mbrtowc_nul_retval=yes}
+
+# va_copy and _va_copy
+ac_cv_va_copy=${ac_cv_va_copy=yes}
+ac_cv___va_copy=${ac_cv___va_copy=yes}
+ac_cv_func_va_copy=${ac_cv_func_va_copy=yes}
+ac_cv_func___va_copy=${ac_cv_func___va_copy=yes}
+
+# Xorg
+xorg_cv_malloc0_returns_null=${xorg_cv_malloc0_returns_null=yes}
+
+# socat
+ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
+sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
diff --git a/common/environment/configure/autoconf_cache/common-linux b/common/environment/configure/autoconf_cache/common-linux
new file mode 100644
index 0000000..718c2c3
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/common-linux
@@ -0,0 +1,172 @@
+# general
+ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
+ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
+ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
+ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
+ac_cv_func_memcmp_working=${ac_cv_func_memcmp_working=yes}
+ac_cv_func_getpgrp_void=yes
+ac_cv_func_setpgrp_void=yes
+ac_cv_func_setgrent_void=yes
+ac_cv_func_getgrgid_r=${ac_cv_func_getgrgid_r=yes}
+ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
+ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
+ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}
+ac_cv_type_uid_t={ac_cv_type_uid_t=yes}
+ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
+ac_cv_func_strdup=yes
+ac_cv_func_strtod=yes
+ac_cv_func_fork=yes
+ac_cv_func_fork=yes
+ac_cv_func_fork_works=yes
+ac_cv_func_chown_works=yes
+ac_cv_func_working_mktime=yes
+ac_cv_func_getgroups=yes
+ac_cv_func_getgroups_works=yes
+ac_cv_func_pread=yes
+ac_cv_func_pwrite=yes
+ac_cv_file__dev_random=yes
+ac_cv_file__dev_urandom=yes
+
+# ruby
+ac_cv_func_isnan=yes
+ac_cv_func_isinf=yes
+
+# apr
+ac_cv_file__dev_zero=${ac_cv_file__dev_zero=yes}
+ac_cv_sizeof_pid_t=${ac_cv_sizeof_pid_t=4}
+ac_cv_func_strcoll_works=yes
+
+# samba
+samba_cv_HAVE_IFACE_AIX=${samba_cv_HAVE_IFACE_AIX=no}
+samba_cv_HAVE_IFACE_IFCONF=${samba_cv_HAVE_IFACE_IFCONF=yes}
+samba_cv_HAVE_IFACE_IFREQ=${samba_cv_HAVE_IFACE_IFREQ=yes}
+samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=${samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no}
+
+# db
+db_cv_path_ar=${db_cv_path_ar=/usr/bin/ar}
+db_cv_path_chmod=${db_cv_path_chmod=/bin/chmod}
+db_cv_path_cp=${db_cv_path_cp=/bin/cp}
+db_cv_path_ln=${db_cv_path_ln=/bin/ln}
+db_cv_path_mkdir=${db_cv_path_mkdir=/bin/mkdir}
+db_cv_path_ranlib=${db_cv_path_ranlib=/usr/bin/ranlib}
+db_cv_path_rm=${db_cv_path_rm=/bin/rm}
+db_cv_path_sh=${db_cv_path_sh=/bin/sh}
+db_cv_path_strip=${db_cv_path_strip=/usr/bin/strip}
+
+# bash
+bash_cv_have_mbstate_t=${bash_cv_have_mbstate_t=yes}
+bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no}
+bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no}
+bash_cv_dup2_broken=${bash_cv_dup2_broken=no}
+bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no}
+bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t}
+bash_cv_getenv_redef=${bash_cv_getenv_redef=yes}
+bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=yes}
+bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no}
+bash_cv_printf_a_format=${bash_cv_printf_a_format=yes}
+bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no}
+bash_cv_job_control_missing=${bash_cv_job_control_missing=present}
+bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present}
+bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no}
+bash_cv_func_snprintf=yes
+bash_cv_func_vsnprintf=yes
+bash_cv_func_sigsetjmp=present
+bash_cv_getcwd_malloc=yes
+bash_cv_void_sighandler=yes
+bash_cv_func_ctype_nonascii=no
+bash_cv_wcontinued_broken=no
+bash_cv_wexitstatus_offset=8
+bash_cv_wcwidth_broken=no
+
+# cgdb
+ac_cv_file__dev_ptmx=yes
+ac_cv_file__dev_ptc=no
+
+# git
+ac_cv_snprintf_returns_bogus=no
+ac_cv_fread_reads_directories=yes
+
+# gnulib
+gl_cv_func_fstatat_zero_flag=yes
+gl_cv_func_memchr_works=yes
+gl_cv_func_dup2_works=yes
+gl_cv_func_utimensat_works=yes
+gl_cv_func_readlink_works=yes
+gl_cv_func_readlinkat_works=yes
+gl_cv_func_symlinkat_works=yes
+gl_cv_func_unsetenv_works=yes
+gl_cv_func_rmdir_works=yes
+gl_cv_func_chown_slash_works=yes
+gl_cv_func_chown_ctime_works=yes
+gl_cv_func_chown_follows_symlink=yes
+gl_cv_func_lstat_dereferences_slashed_symlink=yes
+gl_cv_func_getcwd_null=yes
+gl_cv_func_select_detects_ebadf=yes
+gl_cv_func_unlink_honors_slashes=yes
+gl_cv_func_snprintf_retval_c99=yes
+gl_cv_func_strerror_0_works=yes
+gl_cv_func_printf_sizes_c99=yes
+gl_cv_func_printf_infinite=yes
+gl_cv_func_printf_infinite_long_double=yes
+gl_cv_func_printf_directive_a=yes
+gl_cv_func_printf_directive_f=yes
+gl_cv_func_printf_flag_zero=yes
+gl_cv_func_printf_enomem=yes
+gl_cv_func_wcwidth_works=yes
+gl_cv_func_ungetc_works=yes
+gl_cv_func_fchownat_empty_filename_works=yes
+gl_cv_func_fcntl_f_dupfd_works=yes
+gl_cv_func_fdopendir_works=yes
+gl_cv_func_fpurge_works=yes
+gl_cv_func_futimens_works=yes
+gl_cv_func_getgroups_works=yes
+gl_cv_func_isnanl_works=yes
+gl_cv_func_link_works=yes
+gl_cv_func_linkat_slash=yes
+gl_cv_func_mkdir_trailing_slash_works=yes
+gl_cv_func_mkdir_trailing_dot_works=yes
+gl_cv_func_mkfifo_works=yes
+gl_cv_func_mknod_works=yes
+gl_cv_func_rename_slash_dst_works=yes
+gl_cv_func_rename_slash_src_works=yes
+gl_cv_func_rename_link_works=yes
+gl_cv_func_rename_dest_works=yes
+gl_cv_func_setenv_works=yes
+gl_cv_func_stat_file_slash=yes
+gl_cv_func_strtod_works=yes
+gl_cv_func_symlink_works=yes
+gl_cv_func_unlink_honors_slashes=yes
+gl_cv_func_perror_works=yes
+gl_cv_func_stpncpy=yes
+gl_cv_func_realpath_works=yes
+gl_cv_func_remove_dir_works=yes
+
+# mysql
+ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=yes}
+ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes}
+
+# TCL
+tcl_cv_api_serial=${tcl_cv_api_serial=termios}
+
+# python
+ac_cv_have_long_long_format=yes
+
+# socat
+ac_cv_have_c99_snprintf=yes
+
+# apache
+ac_cv_o_nonblock_inherited=${ac_cv_o_nonblock_inherited=no}
+
+# varnish
+ac_cv_have_viz=yes
+ac_cv_so_rcvtimeo_works=yes
+ac_cv_so_sndtimeo_works=yes
+
+# libtar
+compat_cv_func_makedev_three_args=no
+
+# exo
+ac_cv_strftime_extensions=yes
+
+# time
+ac_cv_func_wait3=yes
diff --git a/common/environment/configure/autoconf_cache/endian-big b/common/environment/configure/autoconf_cache/endian-big
new file mode 100644
index 0000000..b99e96c
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/endian-big
@@ -0,0 +1,8 @@
+ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
+ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
+
+# libnet
+ac_cv_libnet_endianess=${ac_cv_libnet_endianess=big}
+
+# libmemcached
+ac_cv_c_endian=big
diff --git a/common/environment/configure/autoconf_cache/endian-little b/common/environment/configure/autoconf_cache/endian-little
new file mode 100644
index 0000000..858db76
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/endian-little
@@ -0,0 +1,8 @@
+ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
+ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
+
+# libnet
+ac_cv_libnet_endianess=${ac_cv_libnet_endianess=lil}
+
+# libmemcached
+ac_cv_c_endian=little
diff --git a/common/environment/configure/autoconf_cache/ix86-common b/common/environment/configure/autoconf_cache/ix86-common
new file mode 100644
index 0000000..beed9a2
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/ix86-common
@@ -0,0 +1,268 @@
+# general
+ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
+ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1}
+ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4}
+ac_cv_sizeof_unsigned_char_p=${ac_cv_sizeof_unsigned_char_p=4}
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_sizeof_unsigned_int=${ac_cv_sizeof_unsigned_int=4}
+ac_cv_sizeof_int_p=${ac_cv_sizeof_int_p=4}
+ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
+ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=4}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_unsigned_long_long=${ac_cv_sizeof_unsigned_long_long=8}
+ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
+ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2}
+ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
+ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
+ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
+ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
+ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
+ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=4}
+ac_cv_sizeof_uid_t=${ac_cv_sizeof_uid_t=4}
+ac_cv_sizeof_gid_t=${ac_cv_sizeof_gid_t=4}
+ac_cv_sizeof_ino_t=${ac_cv_sizeof_ino_t=4}
+ac_cv_sizeof_dev_t=${ac_cv_sizeof_dev_t=8}
+ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
+ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
+ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
+ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
+ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
+ac_cv_sizeof_struct_iovec=8
+
+ac_cv_header_netinet_sctp_h=${ac_cv_header_netinet_sctp_h=no}
+ac_cv_header_netinet_sctp_uio_h=${ac_cv_header_netinet_sctp_uio_h=no}
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+ac_cv_sctp=${ac_cv_sctp=no}
+
+apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+ac_cv_path_ESD_CONFIG=no
+lf_cv_sane_realloc=yes
+jm_cv_func_gettimeofday_clobber=no
+samba_cv_HAVE_GETTIMEOFDAY_TZ=yes
+bf_lsbf=1
+ac_cv_uchar=${ac_cv_uchar=no}
+ac_cv_uint=${ac_cv_uint=yes}
+ac_cv_ulong=${ac_cv_ulong=yes}
+ac_cv_ushort=${ac_cv_ushort=yes}
+
+# audacity
+ac_cv_file_lib_src_libmad_frame_h=${ac_cv_file_lib_src_libmad_frame_h=no}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=yes}
+
+# clamav
+clamav_av_func_working_snprintf_long=${clamav_av_func_working_snprintf_long=yes}
+clamav_av_have_in_port_t=${clamav_av_have_in_port_t=yes}
+clamav_av_have_in_addr_t=${clamav_av_have_in_addr_t=yes}
+ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+# db
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# ettercap
+ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# glib
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
+glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
+glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=yes}
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=4
+ac_cv_alignof_unsigned_long=4
+
+# guile
+ac_cv_uchar=${ac_cv_uchar=no}
+ac_cv_uint=${ac_cv_uint=yes}
+ac_cv_ulong=${ac_cv_ulong=yes}
+ac_cv_ushort=${ac_cv_ushort=yes}
+
+# intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+# jikes-native
+ac_cv_sizeof_wchar_t=4
+
+# lftp
+ac_cv_need_trio=${ac_cv_need_trio=no}
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# libnet 
+ac_cv_lbl_unaligned_fail=${ac_cv_lbl_unaligned_fail=no}
+ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
+
+# libxfce4util
+with_broken_putenv=${with_broken_putenv=no}
+
+# mysql
+mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=yes}
+mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=yes}
+
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=4
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=4
+ac_cv_alignof_CORBA_long_long=4
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=4
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=4
+ac_cv_alignof_CORBA_wchar=2
+
+# php
+ac_cv_pread=${ac_cv_pread=no}
+ac_cv_pwrite=${ac_cv_pwrite=no}
+php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
+
+# rsync
+rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
+rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
+rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
+rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
+rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
+rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
+rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
+rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+rsync_cv_HAVE_C99_VSNPRINTF=${rsync_cv_HAVE_C99_VSNPRINTF=yes}
+rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
+rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
+rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# socat
+sc_cv_type_dev_basic='8 /* unsigned long long */'
+sc_cv_type_gidt_basic='4 /* unsigned int */'
+sc_cv_type_longlong=yes
+sc_cv_type_modet_basic='4 /* unsigned int */'
+sc_cv_type_off64=no
+sc_cv_type_off64_basic='0 /* unknown */'
+sc_cv_type_off_basic='3 /* int */'
+sc_cv_type_pidt_basic='3 /* int */'
+sc_cv_type_rlimit_rlimmax_basic='4 /* unsigned int */'
+sc_cv_type_sa_family_t=yes
+sc_cv_type_sighandler=no
+sc_cv_type_sizet_basic='4 /* unsigned int */'
+sc_cv_type_socklen=yes
+sc_cv_type_socklent_basic='4 /* unsigned int */'
+sc_cv_type_stat64=no
+sc_cv_type_stat64_stblksize_basic='0 /* unknown */'
+sc_cv_type_stat64_stblocks_basic='0 /* unknown */'
+sc_cv_type_stat64_stdev_basic='0 /* unknown */'
+sc_cv_type_stat64_stino_basic='0 /* unknown */'
+sc_cv_type_stat64_stnlink_basic='0 /* unknown */'
+sc_cv_type_stat64_stsize_basic='0 /* unknown */'
+sc_cv_type_stat_stblksize_basic='3 /* int */'
+sc_cv_type_stat_stblocks_basic='3 /* int */'
+sc_cv_type_stat_stino_basic='4 /* unsigned int */'
+sc_cv_type_stat_stnlink_basic='4 /* unsigned int */'
+sc_cv_type_stat_stsize_basic='3 /* int */'
+sc_cv_type_struct_timeval_tv_usec='3 /* int */'
+sc_cv_type_timet_basic='3 /* int */'
+sc_cv_type_uidt_basic='4 /* unsigned int */'
+sc_cv_type_uint16=yes
+sc_cv_type_uint32=yes
+sc_cv_type_uint64=yes
+sc_cv_type_uint8=yes
+sc_cv_typeof_struct_cmsghdr_cmsg_len='4 /* unsigned int */'
+
+# screen
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+
+# slrn
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
+
+# ssh
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_type_struct_timespec=${ac_cv_type_struct_timespec=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
+
+# startup-notification
+lf_cv_sane_realloc=yes
+
+# xffm
+jm_cv_func_working_readdir=yes
+
+# xorg X11R7
+ac_cv_sys_linker_h=${ac_cv_sys_linker_h=no}
+ac_cv_file__usr_share_X11_sgml_defs_ent=${ac_cv_file__usr_share_X11_sgml_defs_ent=no}
+
+# evolution-data-server
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
+
+#dbus
+ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=yes}
+
+#libpciaccess
+have_mtrr_h=yes
+
+#mozilla
+moz_cv_size_of_JS_BYTES_PER_WORD=4
+moz_cv_align_of_JS_ALIGN_OF_POINTER=4
+moz_cv_size_of_JS_BYTES_PER_DOUBLE=8
+
+#ofono
+ac_cv_lib_c_signalfd=${ac_cv_lib_c_signalfd=yes}
+
+#unfs3
+nfsd_cv_broken_setfsuid=${nfsd_cv_broken_setfsuid=0}
+nfsd_cv_func_statfs=${nfsd_cv_func_statfs=statfs2_bsize}
+nfsd_cv_bsd_signals=${nfsd_cv_bsd_signals=yes}
+
+# at-spi2-core
+ac_cv_alignof_char=1
+ac_cv_alignof_dbind_pointer=4
+ac_cv_alignof_dbind_struct=1
+ac_cv_alignof_dbus_bool_t=4
+ac_cv_alignof_dbus_int16_t=2
+ac_cv_alignof_dbus_int32_t=4
+ac_cv_alignof_dbus_int64_t=4
+ac_cv_alignof_double=4
diff --git a/common/environment/configure/autoconf_cache/mips-common b/common/environment/configure/autoconf_cache/mips-common
new file mode 100644
index 0000000..bbe8ff3
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/mips-common
@@ -0,0 +1,93 @@
+# general
+ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
+ac_cv_sizeof_struct_iovec=8
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+# screen
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+
+# socat
+sc_cv_type_dev_basic='8 /* unsigned long long */'
+sc_cv_type_gidt_basic='4 /* unsigned int */'
+sc_cv_type_longlong=yes
+sc_cv_type_modet_basic='4 /* unsigned int */'
+sc_cv_type_off64=no
+sc_cv_type_off64_basic='0 /* unknown */'
+sc_cv_type_off_basic='3 /* int */'
+sc_cv_type_pidt_basic='3 /* int */'
+sc_cv_type_rlimit_rlimmax_basic='4 /* unsigned int */'
+sc_cv_type_sa_family_t=yes
+sc_cv_type_sighandler=no
+sc_cv_type_sizet_basic='4 /* unsigned int */'
+sc_cv_type_socklen=yes
+sc_cv_type_socklent_basic='4 /* unsigned int */'
+sc_cv_type_stat64=no
+sc_cv_type_stat64_stblksize_basic='0 /* unknown */'
+sc_cv_type_stat64_stblocks_basic='0 /* unknown */'
+sc_cv_type_stat64_stdev_basic='0 /* unknown */'
+sc_cv_type_stat64_stino_basic='0 /* unknown */'
+sc_cv_type_stat64_stnlink_basic='0 /* unknown */'
+sc_cv_type_stat64_stsize_basic='0 /* unknown */'
+sc_cv_type_stat_stblksize_basic='3 /* int */'
+sc_cv_type_stat_stblocks_basic='3 /* int */'
+sc_cv_type_stat_stino_basic='4 /* unsigned int */'
+sc_cv_type_stat_stnlink_basic='4 /* unsigned int */'
+sc_cv_type_stat_stsize_basic='3 /* int */'
+sc_cv_type_struct_timeval_tv_usec='3 /* int */'
+sc_cv_type_timet_basic='3 /* int */'
+sc_cv_type_uidt_basic='4 /* unsigned int */'
+sc_cv_type_uint16=yes
+sc_cv_type_uint32=yes
+sc_cv_type_uint64=yes
+sc_cv_type_uint8=yes
+sc_cv_typeof_struct_cmsghdr_cmsg_len='4 /* unsigned int */'
+
+# ORBit2
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_wchar=2
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_long=8
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_double=8
+ac_cv_alignof_CORBA_long_double=8
+ac_cv_alignof_CORBA_pointer=4
+ac_cv_alignof_CORBA_struct=1
+
+# apache
+ac_cv_func_pthread_key_delete=${ac_cv_func_pthread_key_delete=yes}
+apr_cv_process_shared_works=${apr_cv_process_shared_works=no}
+ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# glib
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=8
+ac_cv_alignof_unsigned_long=4
+
+
+# slrn
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
+
+# at-spi2-core
+ac_cv_alignof_char=1
+ac_cv_alignof_dbind_pointer=4
+ac_cv_alignof_dbind_struct=1
+ac_cv_alignof_dbus_bool_t=4
+ac_cv_alignof_dbus_int16_t=2
+ac_cv_alignof_dbus_int32_t=4
+ac_cv_alignof_dbus_int64_t=8
+ac_cv_alignof_double=8
diff --git a/common/environment/configure/autoconf_cache/mips-linux b/common/environment/configure/autoconf_cache/mips-linux
new file mode 100644
index 0000000..ed9bf55
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/mips-linux
@@ -0,0 +1,78 @@
+# general
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=no}
+
+# openssh
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=no}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+
+# glib
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# startup-notification
+lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ncftp
+wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
+wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
+
+# db
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+
+# rrdtool
+rd_cv_ieee_works=${rd_cv_ieee_works=yes}
+# ac_cv_path_PERL=${ac_cv_path_PERL=no}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+
+# intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+# lmbench
+ac_cv_uint=${ac_cv_unit=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# evolution-data-server
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
+
diff --git a/common/environment/configure/autoconf_cache/mipsel-linux b/common/environment/configure/autoconf_cache/mipsel-linux
new file mode 100644
index 0000000..6ddcb2a
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/mipsel-linux
@@ -0,0 +1,78 @@
+# general
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=no}
+
+# openssh
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=no}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent=yes}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+
+# glib
+glib_cv___va_copy=${glib_cv___va_copy=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+
+# glib-2.0
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# startup-notification
+lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ncftp
+wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
+wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
+wi_cv_unix_domain_sockets=${wi_cv_unix_domain_sockets=yes}
+
+# db
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+
+# rrdtool
+rd_cv_ieee_works=${rd_cv_ieee_works=yes}
+# ac_cv_path_PERL=${ac_cv_path_PERL=no}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+
+# intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}
+
+#lmbench
+ac_cv_uint=${ac_cv_unit=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# evolution-data-server
+ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}
diff --git a/common/environment/configure/autoconf_cache/musl-linux b/common/environment/configure/autoconf_cache/musl-linux
new file mode 100644
index 0000000..58cc913
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/musl-linux
@@ -0,0 +1,183 @@
+# gnulib overrides
+#
+gl_cv_func_isnanl_works=yes
+gl_cv_header_working_stdint_h=yes
+gl_cv_func_fpurge_works=yes
+gl_cv_func_fcntl_f_dupfd_cloexec=yes
+gl_cv_func_getcwd_path_max=yes
+gl_cv_func_fprintf_posix=yes
+gl_cv_func_printf_sizes_c99=yes
+gl_cv_func_printf_long_double=yes
+gl_cv_func_printf_infinite=yes
+gl_cv_func_printf_infinite_long_double=yes
+gl_cv_func_printf_directive_a=yes
+gl_cv_func_printf_directive_f=yes
+gl_cv_func_printf_directive_n=yes
+gl_cv_func_printf_directive_ls=yes
+gl_cv_func_printf_positions=yes
+gl_cv_func_printf_flag_grouping=yes
+gl_cv_func_printf_flag_leftadjust=yes
+gl_cv_func_printf_flag_zero=yes
+gl_cv_func_printf_precision=yes
+gl_cv_func_printf_enomem=yes
+gl_cv_header_wchar_h_correct_inline=yes
+gl_cv_decl_null_works=yes
+gl_cv_func_malloc_posix=yes
+gl_cv_func_memchr_works=yes
+gl_cv_have_include_next=yes
+gt_cv_inttypes_pri_broken=no
+gl_cv_promoted_mode_t=mode_t
+gl_cv_func_mbrtowc_sanitycheck=yes
+gl_cv_sys_struct_timespec_in_time_h=yes
+gl_cv_func_iswcntrl_works=yes
+gl_cv_func_dup2_works=yes
+gl_cv_func_fcntl_f_dupfd_works=yes
+gl_cv_func_fseeko=yes
+# the following flag, according to fseeko.m4, is needed to skip the fseeko replacement
+gl_cv_func_fflush_stdin=yes
+gl_cv_func_gettimeofday_clobber=no
+gl_cv_func_gettimeofday_posix_signature=yes
+gl_cv_func_lseek_pipe=yes
+gl_cv_func_mbrtowc_retval=yes
+gl_cv_func_posix_spawn_works=yes
+gl_cv_func_sigprocmask=yes
+gl_cv_func_spawnattr_setschedparam=yes
+gl_cv_func_spawnattr_setschedpolicy=yes
+gl_cv_func_stat_dir_slash=yes
+gl_cv_func_strndup_works=yes
+gl_cv_func_unsetenv_works=yes
+gl_cv_func_working_strerror=yes
+gl_cv_have_raw_decl_atoll=yes
+gl_cv_have_raw_decl_btowc=yes
+gl_cv_have_raw_decl_chown=yes
+gl_cv_have_raw_decl_dprintf=yes
+gl_cv_have_raw_decl_dup2=yes
+gl_cv_have_raw_decl_dup3=yes
+gl_cv_have_raw_decl_endusershell=yes
+gl_cv_have_raw_decl_environ=yes
+gl_cv_have_raw_decl_faccessat=yes
+gl_cv_have_raw_decl_fchdir=yes
+gl_cv_have_raw_decl_fchmodat=yes
+gl_cv_have_raw_decl_fchownat=yes
+gl_cv_have_raw_decl_fcntl=yes
+gl_cv_have_raw_decl_fseeko=yes
+gl_cv_have_raw_decl_fstatat=yes
+gl_cv_have_raw_decl_fsync=yes
+gl_cv_have_raw_decl_ftello=yes
+gl_cv_have_raw_decl_ftruncate=yes
+gl_cv_have_raw_decl_futimens=yes
+gl_cv_have_raw_decl_getcwd=yes
+gl_cv_have_raw_decl_getdelim=yes
+gl_cv_have_raw_decl_getdomainname=yes
+gl_cv_have_raw_decl_getdtablesize=yes
+gl_cv_have_raw_decl_getgroups=yes
+gl_cv_have_raw_decl_gethostname=yes
+gl_cv_have_raw_decl_getline=yes
+gl_cv_have_raw_decl_getlogin=yes
+gl_cv_have_raw_decl_getlogin_r=yes
+gl_cv_have_raw_decl_getpagesize=yes
+gl_cv_have_raw_decl_getsubopt=yes
+gl_cv_have_raw_decl_getusershell=yes
+gl_cv_have_raw_decl_grantpt=yes
+gl_cv_have_raw_decl_lchown=yes
+gl_cv_have_raw_decl_link=yes
+gl_cv_have_raw_decl_linkat=yes
+gl_cv_have_raw_decl_lseek=yes
+gl_cv_have_raw_decl_lstat=yes
+gl_cv_have_raw_decl_mbsinit=yes
+gl_cv_have_raw_decl_mbrlen=yes
+gl_cv_have_raw_decl_mbrtowc=yes
+gl_cv_have_raw_decl_memmem=yes
+gl_cv_have_raw_decl_mempcpy=yes
+gl_cv_have_raw_decl_memrchr=yes
+gl_cv_have_raw_decl_mkdirat=yes
+gl_cv_have_raw_decl_mkdtemp=yes
+gl_cv_have_raw_decl_mkfifo=yes
+gl_cv_have_raw_decl_mknod=yes
+gl_cv_have_raw_decl_mknodat=yes
+gl_cv_have_raw_decl_mkstemp=yes
+gl_cv_have_raw_decl_openat=yes
+gl_cv_have_raw_decl_pipe2=yes
+gl_cv_have_raw_decl_posix_spawnattr_setpgroup=yes
+gl_cv_have_raw_decl_popen=yes
+gl_cv_have_raw_decl_pread=yes
+gl_cv_have_raw_decl_ptsname=yes
+gl_cv_have_raw_decl_rawmemchr=yes
+gl_cv_have_raw_decl_readlink=yes
+gl_cv_have_raw_decl_readlinkat=yes
+gl_cv_have_raw_decl_realpath=yes
+gl_cv_have_raw_decl_renameat=yes
+gl_cv_have_raw_decl_rmdir=yes
+gl_cv_have_raw_decl_setenv=yes
+gl_cv_have_raw_decl_setusershell=yes
+gl_cv_have_raw_decl_sigaction=yes
+gl_cv_have_raw_decl_sigaddset=yes
+gl_cv_have_raw_decl_sigdelset=yes
+gl_cv_have_raw_decl_sigemptyset=yes
+gl_cv_have_raw_decl_sigfillset=yes
+gl_cv_have_raw_decl_sigismember=yes
+gl_cv_have_raw_decl_sigpending=yes
+gl_cv_have_raw_decl_sigprocmask=yes
+gl_cv_have_raw_decl_sleep=yes
+gl_cv_have_raw_decl_snprintf=yes
+gl_cv_have_raw_decl_stat=yes
+gl_cv_have_raw_decl_stpcpy=yes
+gl_cv_have_raw_decl_stpncpy=yes
+gl_cv_have_raw_decl_strcasestr=yes
+gl_cv_have_raw_decl_strchrnul=yes
+gl_cv_have_raw_decl_strncat=yes
+gl_cv_have_raw_decl_strnlen=yes
+gl_cv_have_raw_decl_strpbrk=yes
+gl_cv_have_raw_decl_strsep=yes
+gl_cv_have_raw_decl_strsignal=yes
+gl_cv_have_raw_decl_strtod=yes
+gl_cv_have_raw_decl_strtok_r=yes
+gl_cv_have_raw_decl_strtoll=yes
+gl_cv_have_raw_decl_strtoull=yes
+gl_cv_have_raw_decl_strverscmp=yes
+gl_cv_have_raw_decl_symlink=yes
+gl_cv_have_raw_decl_symlinkat=yes
+gl_cv_have_raw_decl_tmpfile=yes
+gl_cv_have_raw_decl_ttyname_r=yes
+gl_cv_have_raw_decl_unlinkat=yes
+gl_cv_have_raw_decl_unlink=yes
+gl_cv_have_raw_decl_unlockpt=yes
+gl_cv_have_raw_decl_unsetenv=yes
+gl_cv_have_raw_decl_usleep=yes
+gl_cv_have_raw_decl_vdprintf=yes
+gl_cv_have_raw_decl_vsnprintf=yes
+gl_cv_have_raw_decl_wcsrtombs=yes
+gl_cv_have_raw_decl_wcrtomb=yes
+gl_cv_have_raw_decl_wcsnrtombs=yes
+gl_cv_have_raw_decl_wctob=yes
+gl_cv_have_raw_decl_wcwidth=yes
+gl_cv_header_inttypes_h=yes
+gl_cv_header_errno_h_complete=yes
+gl_cv_header_working_fcntl_h=yes
+gl_cv_header_stdint_h=yes
+gl_cv_size_max=yes
+gl_cv_sys_struct_timeval=yes
+gl_cv_sys_struct_utimbuf=yes
+
+# this gnulib test is especially stupid, it invokes UB and hangs for
+# an entire minute
+gl_cv_func_working_mktime=yes
+
+# Force detection of musl's gettext
+gt_func_gnugettext_libc=yes
+gt_cv_func_gnugettext1_libc=yes
+gt_cv_func_gnugettext2_libc=yes
+gt_cv_func_gnugettext3_libc=yes
+ac_cv_sys_file_offset_bits=64
+ac_cv_sizeof_off_t=8
+ac_cv_sizeof_ino_t=8
+ac_cv_sizeof_blkcnt_t=8
+
+# Force detection of musl's iconv
+ac_cv_libiconv_utf8=yes
+
+# musl omits BOM on UTF-16 and UTF-32
+ac_cv_iconv_omits_bom=yes
+
+# omit lchmod always returns ENOTSUP
+ac_cv_func_lchmod=no
diff --git a/common/environment/configure/autoconf_cache/powerpc-common b/common/environment/configure/autoconf_cache/powerpc-common
new file mode 100644
index 0000000..efa299c
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/powerpc-common
@@ -0,0 +1,14 @@
+# glib
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=8
+ac_cv_alignof_unsigned_long=4
+
+# at-spi2-core
+ac_cv_alignof_char=1
+ac_cv_alignof_dbind_pointer=4
+ac_cv_alignof_dbind_struct=1
+ac_cv_alignof_dbus_bool_t=4
+ac_cv_alignof_dbus_int16_t=2
+ac_cv_alignof_dbus_int32_t=4
+ac_cv_alignof_dbus_int64_t=8
+ac_cv_alignof_double=8
diff --git a/common/environment/configure/autoconf_cache/powerpc-linux b/common/environment/configure/autoconf_cache/powerpc-linux
new file mode 100644
index 0000000..a9f89cb
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/powerpc-linux
@@ -0,0 +1,16 @@
+# general
+ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}
+
+# startup-notification
+lf_cv_sane_realloc=yes
+
+# glib
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+
+# lftp
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
+
+# slrn
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
diff --git a/common/environment/configure/autoconf_cache/powerpc32-linux b/common/environment/configure/autoconf_cache/powerpc32-linux
new file mode 100644
index 0000000..0f461cd
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/powerpc32-linux
@@ -0,0 +1,272 @@
+ac_cv_func_setvbuf_reversed=no
+ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
+ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
+ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4}
+ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
+ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_sizeof_int_p=${ac_cv_sizeof_int_p=4}
+ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
+ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
+ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=4}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_long_long_int=${ac_cv_sizeof_long_long_int=8}
+ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
+ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
+ac_cv_sizeof_signed_char=${ac_cv_sizeof_signed_char=1}
+ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
+ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1}
+ac_cv_sizeof_unsigned_int=${ac_cv_sizeof_unsigned_int=4}
+ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=4}
+ac_cv_sizeof_unsigned_long_int=${ac_cv_sizeof_unsigned_long_int=4}
+ac_cv_sizeof_unsigned_long_long_int=${ac_cv_sizeof_unsigned_long_long_int=8}
+ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2}
+ac_cv_sizeof_unsigned_short_int=${ac_cv_sizeof_unsigned_short_int=2}
+ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
+ac_cv_sizeof_wchar_t=${ac_cv_sizeof_wchar_t=4}
+ac_cv_type___int64=${ac_cv_type___int64=no}
+ac_cv_type_size_t=${ac_cv_type_size_t=yes}
+ac_cv_type_void_p=${ac_cv_type_void_p=yes}
+ac_cv_uchar=${ac_cv_uchar=no}
+ac_cv_uint=${ac_cv_uint=yes}
+ac_cv_ulong=${ac_cv_ulong=yes}
+ac_cv_ushort=${ac_cv_ushort=yes}
+ac_cv_time_r_type=${ac_cv_time_r_type=POSIX}
+cookie_io_functions_use_off64_t=${cookie_io_functions_use_off64_t=yes}
+
+if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+	ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
+else
+	ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
+
+	# libc
+	libc_cv_ppc_machine=${libc_cv_ppc_machine=yes}
+	libc_cv_mlong_double_128ibm=${libc_cv_mlong_double_128ibm=yes}
+	libc_cv_mabi_ibmlongdouble=${libc_cv_mabi_ibmlongdouble=yes}
+	libc_cv_mlong_double_128=${libc_cv_mlong_double_128=yes}
+fi
+
+# apache
+ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
+
+# ssh
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
+ac_cv_type_struct_timespec=${ac_cv_type_struct_timespec=yes}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}
+
+# coreutils
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1019}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# nano
+ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
+nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
+
+
+# libnet
+ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
+
+# screen
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+
+ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
+ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
+ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
+ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
+
+# socat
+ac_cv_ispeed_offset=${ac_cv_ispeed_offset=13}
+sc_cv_termios_ispeed=${sc_cv_termios_ispeed=yes}
+
+# links
+ac_cv_lib_png_png_create_info_struct=${ac_cv_lib_png_png_create_info_struct=yes}
+
+# db
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
+
+# php
+ac_cv_pread=${ac_cv_pread=no}
+ac_cv_pwrite=${ac_cv_pwrite=no}
+php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# glib
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=yes}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=no}
+glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
+glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
+glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
+
+# ettercap
+ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}
+
+# libesmtp
+acx_working_snprintf=${acx_working_snprintf=yes}
+
+# D-BUS
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+
+# glib 2.0
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=24}
+glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
+glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4}
+glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=4}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=4}
+glib_cv_sys_use_pid_niceness_surrogate=${glib_cv_sys_use_pid_niceness_surrogate=yes}
+
+glib_cv_strlcpy=${glib_cv_strlcpy=no}
+
+# httppc
+ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
+
+# lftp
+ac_cv_need_trio=${ac_cv_need_trio=no}
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
+
+# edb
+db_cv_spinlocks=${db_cv_spinlocks=no}
+
+# fget
+compat_cv_func_snprintf_works=${compat_cv_func_snprintf_works=yes}
+compat_cv_func_basename_works=${compat_cv_func_basename_works=no}
+compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
+
+# slrn
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
+
+# libidl
+libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
+
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=4
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=4
+ac_cv_alignof_CORBA_long_long=4
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=4
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=4
+ac_cv_alignof_CORBA_wchar=2
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+# bash
+ac_cv_c_long_double=${ac_cv_c_long_double=yes}
+bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}
+
+# openssh
+ac_cv_have_broken_dirname=${ac_cv_have_broken_dirname='yes'}
+ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_have_space_d_name_in_struct_dirent='no'}
+ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf='no'}
+ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug='yes'}
+ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr='no'}
+ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr='yes'}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int='4'}
+
+#modphp
+if [ "$XBPS_TARGET_ENDIAN" != "le" ]; then
+	ac_cv_c_bigendian_php=${ac_cv_c_bigendian_php=yes}
+fi
+ac_cv_sizeof_ptrdiff_t=${ac_cv_sizeof_ptrdiff_t=4}
+
+# apache2 (note other apache stanza in this file)
+ap_void_ptr_lt_long=${ap_void_ptr_lt_long=no}
+apr_cv_use_lfs64=${apr_cv_use_lfs64=yes}
+apr_cv_epoll=${apr_cv_epoll=yes}
+apr_cv_pthreads_cflags=${apr_cv_pthreads_cflags=-pthread}
+apr_cv_pthreads_lib=${apr_cv_pthreads_lib=-lpthread}
+ac_cv_func_mmap=${ac_cv_func_mmap=yes}
+ac_cv_file__dev_zero=${ac_cv_file__dev_zero=yes}
+ac_cv_sizeof_pid_t=${ac_cv_sizeof_pid_t=4}
+ac_cv_socklen_t=${ac_cv_socklen_t=yes}
+ac_cv_struct_rlimit=${ac_cv_struct_rlimit=yes}
+ac_cv_negative_eai=${ac_cv_negative_eai=yes}
+apr_cv_gai_addrconfig=${apr_cv_gai_addrconfig=no}
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# binutils (libiberty)
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_type_int=${ac_cv_type_int=yes}
+ac_cv_type_uintptr_t=${ac_cv_type_uintptr_t=yes}
+liberty_cv_uint64=${liberty_cv_uint64=uint64_t}
+
+#samba
+ac_cv_func_memcmp_working=${ac_cv_func_memcmp_working=yes}
+fu_cv_sys_stat_statvfs64=${fu_cv_sys_stat_statvfs64=yes}
+samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=${samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no}
+samba_cv_HAVE_BROKEN_GETGROUPS=${samba_cv_HAVE_BROKEN_GETGROUPS=no}
+samba_cv_HAVE_BROKEN_READDIR=${samba_cv_HAVE_BROKEN_READDIR=yes}
+samba_cv_HAVE_BROKEN_READDIR_NAME=${samba_cv_HAVE_BROKEN_READDIR_NAME=no}
+samba_cv_HAVE_C99_VSNPRINTF=${samba_cv_HAVE_C99_VSNPRINTF=yes}
+samba_cv_HAVE_DEV64_T=${samba_cv_HAVE_DEV64_T=no}
+samba_cv_HAVE_DEVICE_MAJOR_FN=${samba_cv_HAVE_DEVICE_MAJOR_FN=yes}
+samba_cv_HAVE_DEVICE_MINOR_FN=${samba_cv_HAVE_DEVICE_MINOR_FN=yes}
+samba_cv_HAVE_FCNTL_LOCK=${samba_cv_HAVE_FCNTL_LOCK=yes}
+samba_cv_HAVE_FTRUNCATE_EXTEND=${samba_cv_HAVE_FTRUNCATE_EXTEND=yes}
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+samba_cv_HAVE_INO64_T=${samba_cv_HAVE_INO64_T=no}
+samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=${samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes}
+samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=${samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes}
+samba_cv_HAVE_KERNEL_SHARE_MODES=${samba_cv_HAVE_KERNEL_SHARE_MODES=yes}
+samba_cv_HAVE_MAKEDEV=${samba_cv_HAVE_MAKEDEV=yes}
+samba_cv_HAVE_MMAP=${samba_cv_HAVE_MMAP=yes}
+samba_cv_HAVE_OFF64_T=${samba_cv_HAVE_OFF64_T=no}
+samba_cv_HAVE_SECURE_MKSTEMP=${samba_cv_HAVE_SECURE_MKSTEMP=yes}
+samba_cv_HAVE_SENDFILE64=${samba_cv_HAVE_SENDFILE64=yes}
+samba_cv_HAVE_SENDFILE=${samba_cv_HAVE_SENDFILE=yes}
+samba_cv_HAVE_STRUCT_FLOCK64=${samba_cv_HAVE_STRUCT_FLOCK64=yes}
+samba_cv_HAVE_TRUNCATED_SALT=${samba_cv_HAVE_TRUNCATED_SALT=no}
+samba_cv_HAVE_UNSIGNED_CHAR=${samba_cv_HAVE_UNSIGNED_CHAR=yes}
+samba_cv_HAVE_WORKING_AF_LOCAL=${samba_cv_HAVE_WORKING_AF_LOCAL=yes}
+samba_cv_LINUX_LFS_SUPPORT=${samba_cv_LINUX_LFS_SUPPORT=yes}
+samba_cv_REALPATH_TAKES_NULL=${samba_cv_REALPATH_TAKES_NULL=yes}
+samba_cv_REPLACE_INET_NTOA=${samba_cv_REPLACE_INET_NTOA=no}
+samba_cv_REPLACE_READDIR=${samba_cv_REPLACE_READDIR=no}
+samba_cv_SIZEOF_DEV_T=${samba_cv_SIZEOF_DEV_T=yes}
+samba_cv_SIZEOF_INO_T=${samba_cv_SIZEOF_INO_T=yes}
+samba_cv_SIZEOF_OFF_T=${samba_cv_SIZEOF_OFF_T=yes}
+samba_cv_STAT_STATVFS64=${samba_cv_STAT_STATVFS64=yes}
+samba_cv_USE_SETEUID=${samba_cv_USE_SETEUID=yes}
+samba_cv_USE_SETRESUID=${samba_cv_USE_SETRESUID=yes}
+samba_cv_USE_SETREUID=${samba_cv_USE_SETREUID=yes}
+samba_cv_USE_SETUIDX=${samba_cv_USE_SETUIDX=yes}
+samba_cv_have_longlong=${samba_cv_have_longlong=yes}
+samba_cv_have_setresgid=${samba_cv_have_setresgid=yes}
+samba_cv_have_setresuid=${samba_cv_have_setresuid=yes}
+
+# mysql
+mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=no}
+mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
diff --git a/common/environment/configure/autoconf_cache/powerpc64-linux b/common/environment/configure/autoconf_cache/powerpc64-linux
new file mode 100644
index 0000000..169a27d
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/powerpc64-linux
@@ -0,0 +1,46 @@
+ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
+ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=8}
+ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
+ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_sizeof_long=${ac_cv_sizeof_long=8}
+ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=8}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_long_long_int=${ac_cv_sizeof_long_long_int=8}
+ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
+ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
+ac_cv_sizeof_signed_char=${ac_cv_sizeof_signed_char=1}
+ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1}
+ac_cv_sizeof_unsigned_int=${ac_cv_sizeof_unsigned_int=4}
+ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=8}
+ac_cv_sizeof_unsigned_long_int=${ac_cv_sizeof_unsigned_long_int=8}
+ac_cv_sizeof_unsigned_long_long_int=${ac_cv_sizeof_unsigned_long_long_int=8}
+ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2}
+ac_cv_sizeof_unsigned_short_int=${ac_cv_sizeof_unsigned_short_int=2}
+ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=8}
+
+if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+	ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
+else
+	ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
+fi
+
+# screen
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+
+# libpcap
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+
+# apr
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
diff --git a/common/environment/configure/autoconf_cache/x86_64-linux b/common/environment/configure/autoconf_cache/x86_64-linux
new file mode 100644
index 0000000..dc695d2
--- /dev/null
+++ b/common/environment/configure/autoconf_cache/x86_64-linux
@@ -0,0 +1,170 @@
+# general
+ac_cv_va_val_copy=${ac_cv_va_val_copy=no}
+ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
+ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
+ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}
+ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
+ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
+ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
+ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
+ac_cv_linux_vers=${ac_cv_linux_vers=2}
+ac_cv_need_trio=${ac_cv_need_trio=no}
+ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+ac_cv_sizeof_unsigned_int=${ac_cv_sizeof_unsigned_int=4}
+ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
+ac_cv_sizeof_long=${ac_cv_sizeof_long=8}
+ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=8}
+ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=16}
+ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=8}
+ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
+ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=8}
+ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
+ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2}
+ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2}
+ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=8}
+ac_cv_sizeof_uid_t=${ac_cv_sizeof_uid_t=4}
+ac_cv_sizeof_gid_t=${ac_cv_sizeof_gid_t=4}
+ac_cv_sizeof_ino_t=${ac_cv_sizeof_ino_t=8}
+ac_cv_sizeof_dev_t=${ac_cv_sizeof_dev_t=8}
+ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=8}
+ac_cv_strerror_r_SUSv3=${ac_cv_strerror_r_SUSv3=no}
+db_cv_alignp_t=${db_cv_alignp_t='unsigned long long'}
+db_cv_align_t=${db_cv_align_t='unsigned long long'}
+db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
+db_cv_sprintf_count=${db_cv_sprintf_count=yes}
+ac_cv_sizeof_struct_iovec=16
+
+# glib
+glib_cv_hasinline=${glib_cv_hasinline=yes}
+glib_cv_has__inline=${glib_cv_has__inline=yes}
+glib_cv_has__inline__=${glib_cv_has__inline__=yes}
+glib_cv_long_long_format=${glib_cv_long_long_format=ll}
+glib_cv_rtldglobal_broken=${glib_cv_rtldglobal_broken=yes}
+glib_cv_sane_realloc=${glib_cv_sane_realloc=yes}
+glib_cv_sizeof_gmutex=${glib_cv_sizeof_gmutex=40}
+glib_cv_sizeof_intmax_t=${glib_cv_sizeof_intmax_t=8}
+glib_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=8}
+glib_cv_sizeof_size_t=${glib_cv_sizeof_size_t=8}
+glib_cv_sizeof_system_thread=${glib_cv_sizeof_system_thread=8}
+glib_cv_stack_grows=${glib_cv_stack_grows=no}
+glib_cv_sys_pthread_cond_timedwait_posix=${glib_cv_sys_pthread_cond_timedwait_posix=yes}
+glib_cv_sys_pthread_getspecific_posix=${glib_cv_sys_pthread_getspecific_posix=yes}
+glib_cv_sys_pthread_mutex_trylock_posix=${glib_cv_sys_pthread_mutex_trylock_posix=yes}
+glib_cv_uscore=${glib_cv_uscore=no}
+glib_cv_va_val_copy=${glib_cv_va_val_copy=no}
+ac_cv_alignof_guint32=4
+ac_cv_alignof_guint64=8
+ac_cv_alignof_unsigned_long=8
+
+nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
+samba_cv_HAVE_VA_COPY=${samba_cv_HAVE_VA_COPY=yes}
+screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
+screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
+screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
+screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
+screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
+screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
+screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
+screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
+screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
+utils_cv_sys_open_max=${utils_cv_sys_open_max=1015}
+
+# gettext
+am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+#gcc
+ac_cv_lib_m_sin=${ac_cv_lib_m_sin=yes}
+
+#orbit
+libIDL_cv_long_long_format=ll
+
+# ORBit2
+ac_cv_alignof_CORBA_boolean=1
+ac_cv_alignof_CORBA_char=1
+ac_cv_alignof_CORBA_double=8
+ac_cv_alignof_CORBA_float=4
+ac_cv_alignof_CORBA_long=4
+ac_cv_alignof_CORBA_long_double=8
+ac_cv_alignof_CORBA_long_long=8
+ac_cv_alignof_CORBA_octet=1
+ac_cv_alignof_CORBA_pointer=8
+ac_cv_alignof_CORBA_short=2
+ac_cv_alignof_CORBA_struct=1
+ac_cv_alignof_CORBA_wchar=2
+
+lf_cv_sane_realloc=yes
+as_cv_unaligned_access=${as_cv_unaligned_access=yes}
+
+#unfs3
+nfsd_cv_broken_setfsuid=${nfsd_cv_broken_setfsuid=0}
+nfsd_cv_func_statfs=${nfsd_cv_func_statfs=statfs2_bsize}
+nfsd_cv_bsd_signals=${nfsd_cv_bsd_signals=yes}
+
+#apr
+apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes}
+
+# lftp
+lftp_cv_va_val_copy=${lftp_cv_va_val_copy=no}
+
+# slrn
+slrn_cv_va_val_copy=${slrn_cv_va_val_copy=no}
+
+# grub
+ac_cv_func___ashldi3=no
+ac_cv_func___ashrdi3=no
+ac_cv_func___bswapdi2=no
+ac_cv_func___bswapsi2=no
+ac_cv_func___lshrdi3=no
+ac_cv_func___trampoline_setup=no
+ac_cv_func___ucmpdi2=no
+ac_cv_func__restgpr_14_x=no
+
+# cvs
+cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
+
+# at-spi2-core
+ac_cv_alignof_char=1
+ac_cv_alignof_dbind_pointer=8
+ac_cv_alignof_dbind_struct=1
+ac_cv_alignof_dbus_bool_t=4
+ac_cv_alignof_dbus_int16_t=2
+ac_cv_alignof_dbus_int32_t=4
+ac_cv_alignof_dbus_int64_t=8
+ac_cv_alignof_double=8
+
+# socat
+sc_cv_type_dev_basic='6 /* unsigned long */'
+sc_cv_type_gidt_basic='4 /* unsigned int */'
+sc_cv_type_longlong=yes
+sc_cv_type_modet_basic='4 /* unsigned int */'
+sc_cv_type_off64=no
+sc_cv_type_off64_basic='0 /* unknown */'
+sc_cv_type_off_basic='5 /* long */'
+sc_cv_type_pidt_basic='3 /* int */'
+sc_cv_type_rlimit_rlimmax_basic='6 /* unsigned long */'
+sc_cv_type_sa_family_t=yes
+sc_cv_type_sighandler=no
+sc_cv_type_sizet_basic='6 /* unsigned long */'
+sc_cv_type_socklen=yes
+sc_cv_type_socklent_basic='4 /* unsigned int */'
+sc_cv_type_stat64=no
+sc_cv_type_stat64_stblksize_basic='0 /* unknown */'
+sc_cv_type_stat64_stblocks_basic='0 /* unknown */'
+sc_cv_type_stat64_stdev_basic='0 /* unknown */'
+sc_cv_type_stat64_stino_basic='0 /* unknown */'
+sc_cv_type_stat64_stnlink_basic='0 /* unknown */'
+sc_cv_type_stat64_stsize_basic='0 /* unknown */'
+sc_cv_type_stat_stblksize_basic='5 /* long */'
+sc_cv_type_stat_stblocks_basic='5 /* long */'
+sc_cv_type_stat_stino_basic='6 /* unsigned long */'
+sc_cv_type_stat_stnlink_basic='6 /* unsigned long */'
+sc_cv_type_stat_stsize_basic='5 /* long */'
+sc_cv_type_struct_timeval_tv_usec='5 /* long */'
+sc_cv_type_timet_basic='5 /* long */'
+sc_cv_type_uidt_basic='4 /* unsigned int */'
+sc_cv_type_uint16=yes
+sc_cv_type_uint32=yes
+sc_cv_type_uint64=yes
+sc_cv_type_uint8=yes
+sc_cv_typeof_struct_cmsghdr_cmsg_len='6 /* unsigned long */'
diff --git a/common/environment/configure/automake/config.guess b/common/environment/configure/automake/config.guess
new file mode 100755
index 0000000..8d70ec2
--- /dev/null
+++ b/common/environment/configure/automake/config.guess
@@ -0,0 +1,1685 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright 1992-2020 Free Software Foundation, Inc.
+
+timestamp='2020-09-19'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+#
+# Please send patches to <config-patches@gnu.org>.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Options:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2020 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+    # prevent multiple calls if $tmp is already set
+    test "$tmp" && return 0
+    : "${TMPDIR=/tmp}"
+    # shellcheck disable=SC2039
+    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+    dummy=$tmp/dummy
+    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+	,,)    echo "int x;" > "$dummy.c"
+	       for driver in cc gcc c89 c99 ; do
+		   if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+		       CC_FOR_BUILD="$driver"
+		       break
+		   fi
+	       done
+	       if test x"$CC_FOR_BUILD" = x ; then
+		   CC_FOR_BUILD=no_compiler_found
+	       fi
+	       ;;
+	,,*)   CC_FOR_BUILD=$CC ;;
+	,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+    esac
+}
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if test -f /.attbin/uname ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "$UNAME_SYSTEM" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	set_cc_for_build
+	cat <<-EOF > "$dummy.c"
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	#include <stdarg.h>
+	#ifdef __DEFINED_va_list
+	LIBC=musl
+	#else
+	LIBC=gnu
+	#endif
+	#endif
+	EOF
+	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+	;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    "/sbin/$sysctl" 2>/dev/null || \
+	    "/usr/sbin/$sysctl" 2>/dev/null || \
+	    echo unknown)`
+	case "$UNAME_MACHINE_ARCH" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    earmv*)
+		arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine="${arch}${endian}"-unknown
+		;;
+	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently (or will in the future) and ABI.
+	case "$UNAME_MACHINE_ARCH" in
+	    earm*)
+		os=netbsdelf
+		;;
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+		os=netbsd
+		;;
+	esac
+	# Determine ABI tags.
+	case "$UNAME_MACHINE_ARCH" in
+	    earm*)
+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "$UNAME_VERSION" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "$machine-${os}${release}${abi-}"
+	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+	exit ;;
+    *:LibertyBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+	exit ;;
+    *:MidnightBSD:*:*)
+	echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
+	exit ;;
+    *:SolidBSD:*:*)
+	echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
+	exit ;;
+    *:OS108:*:*)
+	echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
+	exit ;;
+    *:MirBSD:*:*)
+	echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
+	exit ;;
+    *:Sortix:*:*)
+	echo "$UNAME_MACHINE"-unknown-sortix
+	exit ;;
+    *:Twizzler:*:*)
+	echo "$UNAME_MACHINE"-unknown-twizzler
+	exit ;;
+    *:Redox:*:*)
+	echo "$UNAME_MACHINE"-unknown-redox
+	exit ;;
+    mips:OSF1:*.*)
+	echo mips-dec-osf1
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE=alpha ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE=alpha ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE=alpha ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE=alphaev5 ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE=alphaev56 ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE=alphapca56 ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE=alphapca57 ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE=alphaev6 ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE=alphaev67 ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE=alphaev68 ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE=alphaev68 ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE=alphaev68 ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE=alphaev69 ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE=alphaev7 ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE=alphaev79 ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo "$UNAME_MACHINE"-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo "$UNAME_MACHINE"-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix"$UNAME_RELEASE"
+	exit ;;
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux"$UNAME_RELEASE"
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	set_cc_for_build
+	SUN_ARCH=i386
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH=x86_64
+	    fi
+	fi
+	echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos"$UNAME_RELEASE"
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos"$UNAME_RELEASE"
+		;;
+	    sun4)
+		echo sparc-sun-sunos"$UNAME_RELEASE"
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos"$UNAME_RELEASE"
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint"$UNAME_RELEASE"
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint"$UNAME_RELEASE"
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint"$UNAME_RELEASE"
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint"$UNAME_RELEASE"
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint"$UNAME_RELEASE"
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint"$UNAME_RELEASE"
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten"$UNAME_RELEASE"
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten"$UNAME_RELEASE"
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix"$UNAME_RELEASE"
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix"$UNAME_RELEASE"
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix"$UNAME_RELEASE"
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	set_cc_for_build
+	sed 's/^	//' << EOF > "$dummy.c"
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos"$UNAME_RELEASE"
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
+	then
+	    if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+	       test "$TARGET_BINARY_INTERFACE"x = x
+	    then
+		echo m88k-dg-dgux"$UNAME_RELEASE"
+	    else
+		echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+	    fi
+	else
+	    echo i586-dg-dgux"$UNAME_RELEASE"
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if test -x /usr/bin/oslevel ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+	fi
+	echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		set_cc_for_build
+		sed 's/^		//' << EOF > "$dummy.c"
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if test -x /usr/bin/lslpp ; then
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+	else
+		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+	fi
+	echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+	case "$UNAME_MACHINE" in
+	    9000/31?)            HP_ARCH=m68000 ;;
+	    9000/[34]??)         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if test -x /usr/bin/getconf; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "$sc_cpu_version" in
+		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "$sc_kernel_bits" in
+			  32) HP_ARCH=hppa2.0n ;;
+			  64) HP_ARCH=hppa2.0w ;;
+			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
+			esac ;;
+		    esac
+		fi
+		if test "$HP_ARCH" = ""; then
+		    set_cc_for_build
+		    sed 's/^		//' << EOF > "$dummy.c"
+
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
+
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
+
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
+EOF
+		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if test "$HP_ARCH" = hppa2.0w
+	then
+	    set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH=hppa2.0w
+	    else
+		HP_ARCH=hppa64
+	    fi
+	fi
+	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux"$HPUX_REV"
+	exit ;;
+    3050*:HI-UX:*:*)
+	set_cc_for_build
+	sed 's/^	//' << EOF > "$dummy.c"
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if test -x /usr/sbin/sysversion ; then
+	    echo "$UNAME_MACHINE"-unknown-osf1mk
+	else
+	    echo "$UNAME_MACHINE"-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi"$UNAME_RELEASE"
+	exit ;;
+    *:BSD/OS:*:*)
+	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+	exit ;;
+    arm:FreeBSD:*:*)
+	UNAME_PROCESSOR=`uname -p`
+	set_cc_for_build
+	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_PCS_VFP
+	then
+	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+	else
+	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+	fi
+	exit ;;
+    *:FreeBSD:*:*)
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case "$UNAME_PROCESSOR" in
+	    amd64)
+		UNAME_PROCESSOR=x86_64 ;;
+	    i386)
+		UNAME_PROCESSOR=i586 ;;
+	esac
+	echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+	exit ;;
+    i*:CYGWIN*:*)
+	echo "$UNAME_MACHINE"-pc-cygwin
+	exit ;;
+    *:MINGW64*:*)
+	echo "$UNAME_MACHINE"-pc-mingw64
+	exit ;;
+    *:MINGW*:*)
+	echo "$UNAME_MACHINE"-pc-mingw32
+	exit ;;
+    *:MSYS*:*)
+	echo "$UNAME_MACHINE"-pc-msys
+	exit ;;
+    i*:PW*:*)
+	echo "$UNAME_MACHINE"-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case "$UNAME_MACHINE" in
+	    x86)
+		echo i586-pc-interix"$UNAME_RELEASE"
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix"$UNAME_RELEASE"
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix"$UNAME_RELEASE"
+		exit ;;
+	esac ;;
+    i*:UWIN*:*)
+	echo "$UNAME_MACHINE"-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-pc-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
+	exit ;;
+    *:Minix:*:*)
+	echo "$UNAME_MACHINE"-unknown-minix
+	exit ;;
+    aarch64:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    arm*:Linux:*:*)
+	set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	else
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+	    else
+		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+	    fi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    cris:Linux:*:*)
+	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+	exit ;;
+    crisv32:Linux:*:*)
+	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+	exit ;;
+    e2k:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    frv:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    hexagon:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    i*86:Linux:*:*)
+	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+	exit ;;
+    ia64:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    k1om:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    m32r*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    m68*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	set_cc_for_build
+	IS_GLIBC=0
+	test x"${LIBC}" = xgnu && IS_GLIBC=1
+	sed 's/^	//' << EOF > "$dummy.c"
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#undef mips64
+	#undef mips64el
+	#if ${IS_GLIBC} && defined(_ABI64)
+	LIBCABI=gnuabi64
+	#else
+	#if ${IS_GLIBC} && defined(_ABIN32)
+	LIBCABI=gnuabin32
+	#else
+	LIBCABI=${LIBC}
+	#endif
+	#endif
+
+	#if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+	CPU=mipsisa64r6
+	#else
+	#if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+	CPU=mipsisa32r6
+	#else
+	#if defined(__mips64)
+	CPU=mips64
+	#else
+	CPU=mips
+	#endif
+	#endif
+	#endif
+
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	MIPS_ENDIAN=el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	MIPS_ENDIAN=
+	#else
+	MIPS_ENDIAN=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
+	;;
+    mips64el:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    openrisc*:Linux:*:*)
+	echo or1k-unknown-linux-"$LIBC"
+	exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-"$LIBC"
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-"$LIBC"
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+	  *)    echo hppa-unknown-linux-"$LIBC" ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-"$LIBC"
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-"$LIBC"
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-"$LIBC"
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-"$LIBC"
+	exit ;;
+    riscv32:Linux:*:* | riscv64:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
+	exit ;;
+    sh64*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    sh*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    tile*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    vax:Linux:*:*)
+	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
+	exit ;;
+    x86_64:Linux:*:*)
+	set_cc_for_build
+	LIBCABI=$LIBC
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
+	    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_X32 >/dev/null
+	    then
+		LIBCABI="$LIBC"x32
+	    fi
+	fi
+	echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo "$UNAME_MACHINE"-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo "$UNAME_MACHINE"-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo "$UNAME_MACHINE"-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo "$UNAME_MACHINE"-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos"$UNAME_RELEASE"
+	exit ;;
+    i*86:*DOS:*:*)
+	echo "$UNAME_MACHINE"-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:*)
+	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+	else
+		echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+	else
+		echo "$UNAME_MACHINE"-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configure will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos"$UNAME_RELEASE"
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos"$UNAME_RELEASE"
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos"$UNAME_RELEASE"
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos"$UNAME_RELEASE"
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv"$UNAME_RELEASE"
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo "$UNAME_MACHINE"-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel@ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo "$UNAME_MACHINE"-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux"$UNAME_RELEASE"
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if test -d /usr/nec; then
+		echo mips-nec-sysv"$UNAME_RELEASE"
+	else
+		echo mips-unknown-sysv"$UNAME_RELEASE"
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux"$UNAME_RELEASE"
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux"$UNAME_RELEASE"
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux"$UNAME_RELEASE"
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux"$UNAME_RELEASE"
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux"$UNAME_RELEASE"
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux"$UNAME_RELEASE"
+	exit ;;
+    SX-ACE:SUPER-UX:*:*)
+	echo sxace-nec-superux"$UNAME_RELEASE"
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody"$UNAME_RELEASE"
+	exit ;;
+    *:Rhapsody:*:*)
+	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
+	exit ;;
+    arm64:Darwin:*:*)
+	echo aarch64-apple-darwin"$UNAME_RELEASE"
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p`
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	if command -v xcode-select > /dev/null 2> /dev/null && \
+		! xcode-select --print-path > /dev/null 2> /dev/null ; then
+	    # Avoid executing cc if there is no toolchain installed as
+	    # cc will be a stub that puts up a graphical alert
+	    # prompting the user to install developer tools.
+	    CC_FOR_BUILD=no_compiler_found
+	else
+	    set_cc_for_build
+	fi
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
+	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		   grep IS_64BIT_ARCH >/dev/null
+	    then
+		case $UNAME_PROCESSOR in
+		    i386) UNAME_PROCESSOR=x86_64 ;;
+		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		esac
+	    fi
+	    # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+	    if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		   grep IS_PPC >/dev/null
+	    then
+		UNAME_PROCESSOR=powerpc
+	    fi
+	elif test "$UNAME_PROCESSOR" = i386 ; then
+	    # uname -m returns i386 or x86_64
+	    UNAME_PROCESSOR=$UNAME_MACHINE
+	fi
+	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = x86; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-*:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk"$UNAME_RELEASE"
+	exit ;;
+    NSE-*:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk"$UNAME_RELEASE"
+	exit ;;
+    NSR-*:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk"$UNAME_RELEASE"
+	exit ;;
+    NSV-*:NONSTOP_KERNEL:*:*)
+	echo nsv-tandem-nsk"$UNAME_RELEASE"
+	exit ;;
+    NSX-*:NONSTOP_KERNEL:*:*)
+	echo nsx-tandem-nsk"$UNAME_RELEASE"
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	# shellcheck disable=SC2154
+	if test "$cputype" = 386; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo "$UNAME_MACHINE"-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux"$UNAME_RELEASE"
+	exit ;;
+    *:DragonFly:*:*)
+	echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "$UNAME_MACHINE" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
+	exit ;;
+    i*86:rdos:*:*)
+	echo "$UNAME_MACHINE"-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo "$UNAME_MACHINE"-pc-aros
+	exit ;;
+    x86_64:VMkernel:*:*)
+	echo "$UNAME_MACHINE"-unknown-esx
+	exit ;;
+    amd64:Isilon\ OneFS:*:*)
+	echo x86_64-unknown-onefs
+	exit ;;
+    *:Unleashed:*:*)
+	echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
+	exit ;;
+esac
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+  "4"
+#else
+  ""
+#endif
+  ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+  struct utsname un;
+
+  uname(&un);
+  if (strncmp(un.version, "V2", 2) == 0) {
+    printf ("i386-sequent-ptx2\n"); exit (0);
+  }
+  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+    printf ("i386-sequent-ptx1\n"); exit (0);
+  }
+  printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+  printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+  printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+  printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+  printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+  struct utsname un;
+  uname (&un);
+  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+  printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+  struct utsname *un;
+  uname (&un);
+  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+  printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
+echo "$0: unable to guess system type" >&2
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+    mips:Linux | mips64:Linux)
+	# If we got here on MIPS GNU/Linux, output extra information.
+	cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+	;;
+esac
+
+cat >&2 <<EOF
+
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
+
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+and
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+EOF
+
+year=`echo $timestamp | sed 's,-.*,,'`
+# shellcheck disable=SC2003
+if test "`expr "\`date +%Y\`" - "$year"`" -lt 3 ; then
+   cat >&2 <<EOF
+
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM  = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
+EOF
+fi
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/common/environment/configure/automake/config.sub b/common/environment/configure/automake/config.sub
new file mode 100755
index 0000000..780c2bb
--- /dev/null
+++ b/common/environment/configure/automake/config.sub
@@ -0,0 +1,1845 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright 1992-2020 Free Software Foundation, Inc.
+
+timestamp='2020-09-08'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches@gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
+
+Canonicalize a configuration name.
+
+Options:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2020 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo "$1"
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Split fields of configuration type
+# shellcheck disable=SC2162
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
+
+# Separate into logical components for further validation
+case $1 in
+	*-*-*-*-*)
+		echo Invalid configuration \`"$1"\': more than four components >&2
+		exit 1
+		;;
+	*-*-*-*)
+		basic_machine=$field1-$field2
+		basic_os=$field3-$field4
+		;;
+	*-*-*)
+		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+		# parts
+		maybe_os=$field2-$field3
+		case $maybe_os in
+			nto-qnx* | linux-* | uclinux-uclibc* \
+			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+			| storm-chaos* | os2-emx* | rtmk-nova*)
+				basic_machine=$field1
+				basic_os=$maybe_os
+				;;
+			android-linux)
+				basic_machine=$field1-unknown
+				basic_os=linux-android
+				;;
+			*)
+				basic_machine=$field1-$field2
+				basic_os=$field3
+				;;
+		esac
+		;;
+	*-*)
+		# A lone config we happen to match not fitting any pattern
+		case $field1-$field2 in
+			decstation-3100)
+				basic_machine=mips-dec
+				basic_os=
+				;;
+			*-*)
+				# Second component is usually, but not always the OS
+				case $field2 in
+					# Prevent following clause from handling this valid os
+					sun*os*)
+						basic_machine=$field1
+						basic_os=$field2
+						;;
+					# Manufacturers
+					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
+					| convergent* | ncr* | news | 32* | 3600* | 3100* \
+					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+					| ultra | tti* | harris | dolphin | highlevel | gould \
+					| cbm | ns | masscomp | apple | axis | knuth | cray \
+					| microblaze* | sim | cisco \
+					| oki | wec | wrs | winbond)
+						basic_machine=$field1-$field2
+						basic_os=
+						;;
+					*)
+						basic_machine=$field1
+						basic_os=$field2
+						;;
+				esac
+			;;
+		esac
+		;;
+	*)
+		# Convert single-component short-hands not valid as part of
+		# multi-component configurations.
+		case $field1 in
+			386bsd)
+				basic_machine=i386-pc
+				basic_os=bsd
+				;;
+			a29khif)
+				basic_machine=a29k-amd
+				basic_os=udi
+				;;
+			adobe68k)
+				basic_machine=m68010-adobe
+				basic_os=scout
+				;;
+			alliant)
+				basic_machine=fx80-alliant
+				basic_os=
+				;;
+			altos | altos3068)
+				basic_machine=m68k-altos
+				basic_os=
+				;;
+			am29k)
+				basic_machine=a29k-none
+				basic_os=bsd
+				;;
+			amdahl)
+				basic_machine=580-amdahl
+				basic_os=sysv
+				;;
+			amiga)
+				basic_machine=m68k-unknown
+				basic_os=
+				;;
+			amigaos | amigados)
+				basic_machine=m68k-unknown
+				basic_os=amigaos
+				;;
+			amigaunix | amix)
+				basic_machine=m68k-unknown
+				basic_os=sysv4
+				;;
+			apollo68)
+				basic_machine=m68k-apollo
+				basic_os=sysv
+				;;
+			apollo68bsd)
+				basic_machine=m68k-apollo
+				basic_os=bsd
+				;;
+			aros)
+				basic_machine=i386-pc
+				basic_os=aros
+				;;
+			aux)
+				basic_machine=m68k-apple
+				basic_os=aux
+				;;
+			balance)
+				basic_machine=ns32k-sequent
+				basic_os=dynix
+				;;
+			blackfin)
+				basic_machine=bfin-unknown
+				basic_os=linux
+				;;
+			cegcc)
+				basic_machine=arm-unknown
+				basic_os=cegcc
+				;;
+			convex-c1)
+				basic_machine=c1-convex
+				basic_os=bsd
+				;;
+			convex-c2)
+				basic_machine=c2-convex
+				basic_os=bsd
+				;;
+			convex-c32)
+				basic_machine=c32-convex
+				basic_os=bsd
+				;;
+			convex-c34)
+				basic_machine=c34-convex
+				basic_os=bsd
+				;;
+			convex-c38)
+				basic_machine=c38-convex
+				basic_os=bsd
+				;;
+			cray)
+				basic_machine=j90-cray
+				basic_os=unicos
+				;;
+			crds | unos)
+				basic_machine=m68k-crds
+				basic_os=
+				;;
+			da30)
+				basic_machine=m68k-da30
+				basic_os=
+				;;
+			decstation | pmax | pmin | dec3100 | decstatn)
+				basic_machine=mips-dec
+				basic_os=
+				;;
+			delta88)
+				basic_machine=m88k-motorola
+				basic_os=sysv3
+				;;
+			dicos)
+				basic_machine=i686-pc
+				basic_os=dicos
+				;;
+			djgpp)
+				basic_machine=i586-pc
+				basic_os=msdosdjgpp
+				;;
+			ebmon29k)
+				basic_machine=a29k-amd
+				basic_os=ebmon
+				;;
+			es1800 | OSE68k | ose68k | ose | OSE)
+				basic_machine=m68k-ericsson
+				basic_os=ose
+				;;
+			gmicro)
+				basic_machine=tron-gmicro
+				basic_os=sysv
+				;;
+			go32)
+				basic_machine=i386-pc
+				basic_os=go32
+				;;
+			h8300hms)
+				basic_machine=h8300-hitachi
+				basic_os=hms
+				;;
+			h8300xray)
+				basic_machine=h8300-hitachi
+				basic_os=xray
+				;;
+			h8500hms)
+				basic_machine=h8500-hitachi
+				basic_os=hms
+				;;
+			harris)
+				basic_machine=m88k-harris
+				basic_os=sysv3
+				;;
+			hp300 | hp300hpux)
+				basic_machine=m68k-hp
+				basic_os=hpux
+				;;
+			hp300bsd)
+				basic_machine=m68k-hp
+				basic_os=bsd
+				;;
+			hppaosf)
+				basic_machine=hppa1.1-hp
+				basic_os=osf
+				;;
+			hppro)
+				basic_machine=hppa1.1-hp
+				basic_os=proelf
+				;;
+			i386mach)
+				basic_machine=i386-mach
+				basic_os=mach
+				;;
+			isi68 | isi)
+				basic_machine=m68k-isi
+				basic_os=sysv
+				;;
+			m68knommu)
+				basic_machine=m68k-unknown
+				basic_os=linux
+				;;
+			magnum | m3230)
+				basic_machine=mips-mips
+				basic_os=sysv
+				;;
+			merlin)
+				basic_machine=ns32k-utek
+				basic_os=sysv
+				;;
+			mingw64)
+				basic_machine=x86_64-pc
+				basic_os=mingw64
+				;;
+			mingw32)
+				basic_machine=i686-pc
+				basic_os=mingw32
+				;;
+			mingw32ce)
+				basic_machine=arm-unknown
+				basic_os=mingw32ce
+				;;
+			monitor)
+				basic_machine=m68k-rom68k
+				basic_os=coff
+				;;
+			morphos)
+				basic_machine=powerpc-unknown
+				basic_os=morphos
+				;;
+			moxiebox)
+				basic_machine=moxie-unknown
+				basic_os=moxiebox
+				;;
+			msdos)
+				basic_machine=i386-pc
+				basic_os=msdos
+				;;
+			msys)
+				basic_machine=i686-pc
+				basic_os=msys
+				;;
+			mvs)
+				basic_machine=i370-ibm
+				basic_os=mvs
+				;;
+			nacl)
+				basic_machine=le32-unknown
+				basic_os=nacl
+				;;
+			ncr3000)
+				basic_machine=i486-ncr
+				basic_os=sysv4
+				;;
+			netbsd386)
+				basic_machine=i386-pc
+				basic_os=netbsd
+				;;
+			netwinder)
+				basic_machine=armv4l-rebel
+				basic_os=linux
+				;;
+			news | news700 | news800 | news900)
+				basic_machine=m68k-sony
+				basic_os=newsos
+				;;
+			news1000)
+				basic_machine=m68030-sony
+				basic_os=newsos
+				;;
+			necv70)
+				basic_machine=v70-nec
+				basic_os=sysv
+				;;
+			nh3000)
+				basic_machine=m68k-harris
+				basic_os=cxux
+				;;
+			nh[45]000)
+				basic_machine=m88k-harris
+				basic_os=cxux
+				;;
+			nindy960)
+				basic_machine=i960-intel
+				basic_os=nindy
+				;;
+			mon960)
+				basic_machine=i960-intel
+				basic_os=mon960
+				;;
+			nonstopux)
+				basic_machine=mips-compaq
+				basic_os=nonstopux
+				;;
+			os400)
+				basic_machine=powerpc-ibm
+				basic_os=os400
+				;;
+			OSE68000 | ose68000)
+				basic_machine=m68000-ericsson
+				basic_os=ose
+				;;
+			os68k)
+				basic_machine=m68k-none
+				basic_os=os68k
+				;;
+			paragon)
+				basic_machine=i860-intel
+				basic_os=osf
+				;;
+			parisc)
+				basic_machine=hppa-unknown
+				basic_os=linux
+				;;
+			psp)
+				basic_machine=mipsallegrexel-sony
+				basic_os=psp
+				;;
+			pw32)
+				basic_machine=i586-unknown
+				basic_os=pw32
+				;;
+			rdos | rdos64)
+				basic_machine=x86_64-pc
+				basic_os=rdos
+				;;
+			rdos32)
+				basic_machine=i386-pc
+				basic_os=rdos
+				;;
+			rom68k)
+				basic_machine=m68k-rom68k
+				basic_os=coff
+				;;
+			sa29200)
+				basic_machine=a29k-amd
+				basic_os=udi
+				;;
+			sei)
+				basic_machine=mips-sei
+				basic_os=seiux
+				;;
+			sequent)
+				basic_machine=i386-sequent
+				basic_os=
+				;;
+			sps7)
+				basic_machine=m68k-bull
+				basic_os=sysv2
+				;;
+			st2000)
+				basic_machine=m68k-tandem
+				basic_os=
+				;;
+			stratus)
+				basic_machine=i860-stratus
+				basic_os=sysv4
+				;;
+			sun2)
+				basic_machine=m68000-sun
+				basic_os=
+				;;
+			sun2os3)
+				basic_machine=m68000-sun
+				basic_os=sunos3
+				;;
+			sun2os4)
+				basic_machine=m68000-sun
+				basic_os=sunos4
+				;;
+			sun3)
+				basic_machine=m68k-sun
+				basic_os=
+				;;
+			sun3os3)
+				basic_machine=m68k-sun
+				basic_os=sunos3
+				;;
+			sun3os4)
+				basic_machine=m68k-sun
+				basic_os=sunos4
+				;;
+			sun4)
+				basic_machine=sparc-sun
+				basic_os=
+				;;
+			sun4os3)
+				basic_machine=sparc-sun
+				basic_os=sunos3
+				;;
+			sun4os4)
+				basic_machine=sparc-sun
+				basic_os=sunos4
+				;;
+			sun4sol2)
+				basic_machine=sparc-sun
+				basic_os=solaris2
+				;;
+			sun386 | sun386i | roadrunner)
+				basic_machine=i386-sun
+				basic_os=
+				;;
+			sv1)
+				basic_machine=sv1-cray
+				basic_os=unicos
+				;;
+			symmetry)
+				basic_machine=i386-sequent
+				basic_os=dynix
+				;;
+			t3e)
+				basic_machine=alphaev5-cray
+				basic_os=unicos
+				;;
+			t90)
+				basic_machine=t90-cray
+				basic_os=unicos
+				;;
+			toad1)
+				basic_machine=pdp10-xkl
+				basic_os=tops20
+				;;
+			tpf)
+				basic_machine=s390x-ibm
+				basic_os=tpf
+				;;
+			udi29k)
+				basic_machine=a29k-amd
+				basic_os=udi
+				;;
+			ultra3)
+				basic_machine=a29k-nyu
+				basic_os=sym1
+				;;
+			v810 | necv810)
+				basic_machine=v810-nec
+				basic_os=none
+				;;
+			vaxv)
+				basic_machine=vax-dec
+				basic_os=sysv
+				;;
+			vms)
+				basic_machine=vax-dec
+				basic_os=vms
+				;;
+			vsta)
+				basic_machine=i386-pc
+				basic_os=vsta
+				;;
+			vxworks960)
+				basic_machine=i960-wrs
+				basic_os=vxworks
+				;;
+			vxworks68)
+				basic_machine=m68k-wrs
+				basic_os=vxworks
+				;;
+			vxworks29k)
+				basic_machine=a29k-wrs
+				basic_os=vxworks
+				;;
+			xbox)
+				basic_machine=i686-pc
+				basic_os=mingw32
+				;;
+			ymp)
+				basic_machine=ymp-cray
+				basic_os=unicos
+				;;
+			*)
+				basic_machine=$1
+				basic_os=
+				;;
+		esac
+		;;
+esac
+
+# Decode 1-component or ad-hoc basic machines
+case $basic_machine in
+	# Here we handle the default manufacturer of certain CPU types.  It is in
+	# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		cpu=hppa1.1
+		vendor=winbond
+		;;
+	op50n)
+		cpu=hppa1.1
+		vendor=oki
+		;;
+	op60c)
+		cpu=hppa1.1
+		vendor=oki
+		;;
+	ibm*)
+		cpu=i370
+		vendor=ibm
+		;;
+	orion105)
+		cpu=clipper
+		vendor=highlevel
+		;;
+	mac | mpw | mac-mpw)
+		cpu=m68k
+		vendor=apple
+		;;
+	pmac | pmac-mpw)
+		cpu=powerpc
+		vendor=apple
+		;;
+
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		cpu=m68000
+		vendor=att
+		;;
+	3b*)
+		cpu=we32k
+		vendor=att
+		;;
+	bluegene*)
+		cpu=powerpc
+		vendor=ibm
+		basic_os=cnk
+		;;
+	decsystem10* | dec10*)
+		cpu=pdp10
+		vendor=dec
+		basic_os=tops10
+		;;
+	decsystem20* | dec20*)
+		cpu=pdp10
+		vendor=dec
+		basic_os=tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		cpu=m68k
+		vendor=motorola
+		;;
+	dpx2*)
+		cpu=m68k
+		vendor=bull
+		basic_os=sysv3
+		;;
+	encore | umax | mmax)
+		cpu=ns32k
+		vendor=encore
+		;;
+	elxsi)
+		cpu=elxsi
+		vendor=elxsi
+		basic_os=${basic_os:-bsd}
+		;;
+	fx2800)
+		cpu=i860
+		vendor=alliant
+		;;
+	genix)
+		cpu=ns32k
+		vendor=ns
+		;;
+	h3050r* | hiux*)
+		cpu=hppa1.1
+		vendor=hitachi
+		basic_os=hiuxwe2
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		cpu=hppa1.0
+		vendor=hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		cpu=m68000
+		vendor=hp
+		;;
+	hp9k3[2-9][0-9])
+		cpu=m68k
+		vendor=hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		cpu=hppa1.0
+		vendor=hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		cpu=hppa1.1
+		vendor=hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		cpu=hppa1.1
+		vendor=hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		cpu=hppa1.1
+		vendor=hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		cpu=hppa1.1
+		vendor=hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		cpu=hppa1.0
+		vendor=hp
+		;;
+	i*86v32)
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		basic_os=sysv32
+		;;
+	i*86v4*)
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		basic_os=sysv4
+		;;
+	i*86v)
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		basic_os=sysv
+		;;
+	i*86sol2)
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		basic_os=solaris2
+		;;
+	j90 | j90-cray)
+		cpu=j90
+		vendor=cray
+		basic_os=${basic_os:-unicos}
+		;;
+	iris | iris4d)
+		cpu=mips
+		vendor=sgi
+		case $basic_os in
+		    irix*)
+			;;
+		    *)
+			basic_os=irix4
+			;;
+		esac
+		;;
+	miniframe)
+		cpu=m68000
+		vendor=convergent
+		;;
+	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		cpu=m68k
+		vendor=atari
+		basic_os=mint
+		;;
+	news-3600 | risc-news)
+		cpu=mips
+		vendor=sony
+		basic_os=newsos
+		;;
+	next | m*-next)
+		cpu=m68k
+		vendor=next
+		case $basic_os in
+		    openstep*)
+		        ;;
+		    nextstep*)
+			;;
+		    ns2*)
+		      basic_os=nextstep2
+			;;
+		    *)
+		      basic_os=nextstep3
+			;;
+		esac
+		;;
+	np1)
+		cpu=np1
+		vendor=gould
+		;;
+	op50n-* | op60c-*)
+		cpu=hppa1.1
+		vendor=oki
+		basic_os=proelf
+		;;
+	pa-hitachi)
+		cpu=hppa1.1
+		vendor=hitachi
+		basic_os=hiuxwe2
+		;;
+	pbd)
+		cpu=sparc
+		vendor=tti
+		;;
+	pbb)
+		cpu=m68k
+		vendor=tti
+		;;
+	pc532)
+		cpu=ns32k
+		vendor=pc532
+		;;
+	pn)
+		cpu=pn
+		vendor=gould
+		;;
+	power)
+		cpu=power
+		vendor=ibm
+		;;
+	ps2)
+		cpu=i386
+		vendor=ibm
+		;;
+	rm[46]00)
+		cpu=mips
+		vendor=siemens
+		;;
+	rtpc | rtpc-*)
+		cpu=romp
+		vendor=ibm
+		;;
+	sde)
+		cpu=mipsisa32
+		vendor=sde
+		basic_os=${basic_os:-elf}
+		;;
+	simso-wrs)
+		cpu=sparclite
+		vendor=wrs
+		basic_os=vxworks
+		;;
+	tower | tower-32)
+		cpu=m68k
+		vendor=ncr
+		;;
+	vpp*|vx|vx-*)
+		cpu=f301
+		vendor=fujitsu
+		;;
+	w65)
+		cpu=w65
+		vendor=wdc
+		;;
+	w89k-*)
+		cpu=hppa1.1
+		vendor=winbond
+		basic_os=proelf
+		;;
+	none)
+		cpu=none
+		vendor=none
+		;;
+	leon|leon[3-9])
+		cpu=sparc
+		vendor=$basic_machine
+		;;
+	leon-*|leon[3-9]-*)
+		cpu=sparc
+		vendor=`echo "$basic_machine" | sed 's/-.*//'`
+		;;
+
+	*-*)
+		# shellcheck disable=SC2162
+		IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
+		;;
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+		cpu=$basic_machine
+		vendor=pc
+		;;
+	# These rules are duplicated from below for sake of the special case above;
+	# i.e. things that normalized to x86 arches should also default to "pc"
+	pc98)
+		cpu=i386
+		vendor=pc
+		;;
+	x64 | amd64)
+		cpu=x86_64
+		vendor=pc
+		;;
+	# Recognize the basic CPU types without company name.
+	*)
+		cpu=$basic_machine
+		vendor=unknown
+		;;
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+	# some cases the only manufacturer, in others, it is the most popular.
+	craynv-unknown)
+		vendor=cray
+		basic_os=${basic_os:-unicosmp}
+		;;
+	c90-unknown | c90-cray)
+		vendor=cray
+		basic_os=${Basic_os:-unicos}
+		;;
+	fx80-unknown)
+		vendor=alliant
+		;;
+	romp-unknown)
+		vendor=ibm
+		;;
+	mmix-unknown)
+		vendor=knuth
+		;;
+	microblaze-unknown | microblazeel-unknown)
+		vendor=xilinx
+		;;
+	rs6000-unknown)
+		vendor=ibm
+		;;
+	vax-unknown)
+		vendor=dec
+		;;
+	pdp11-unknown)
+		vendor=dec
+		;;
+	we32k-unknown)
+		vendor=att
+		;;
+	cydra-unknown)
+		vendor=cydrome
+		;;
+	i370-ibm*)
+		vendor=ibm
+		;;
+	orion-unknown)
+		vendor=highlevel
+		;;
+	xps-unknown | xps100-unknown)
+		cpu=xps100
+		vendor=honeywell
+		;;
+
+	# Here we normalize CPU types with a missing or matching vendor
+	dpx20-unknown | dpx20-bull)
+		cpu=rs6000
+		vendor=bull
+		basic_os=${basic_os:-bosx}
+		;;
+
+	# Here we normalize CPU types irrespective of the vendor
+	amd64-*)
+		cpu=x86_64
+		;;
+	blackfin-*)
+		cpu=bfin
+		basic_os=linux
+		;;
+	c54x-*)
+		cpu=tic54x
+		;;
+	c55x-*)
+		cpu=tic55x
+		;;
+	c6x-*)
+		cpu=tic6x
+		;;
+	e500v[12]-*)
+		cpu=powerpc
+		basic_os=${basic_os}"spe"
+		;;
+	mips3*-*)
+		cpu=mips64
+		;;
+	ms1-*)
+		cpu=mt
+		;;
+	m68knommu-*)
+		cpu=m68k
+		basic_os=linux
+		;;
+	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+		cpu=s12z
+		;;
+	openrisc-*)
+		cpu=or32
+		;;
+	parisc-*)
+		cpu=hppa
+		basic_os=linux
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		cpu=i586
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+		cpu=i686
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		cpu=i686
+		;;
+	pentium4-*)
+		cpu=i786
+		;;
+	pc98-*)
+		cpu=i386
+		;;
+	ppc-* | ppcbe-*)
+		cpu=powerpc
+		;;
+	ppcle-* | powerpclittle-*)
+		cpu=powerpcle
+		;;
+	ppc64-*)
+		cpu=powerpc64
+		;;
+	ppc64le-* | powerpc64little-*)
+		cpu=powerpc64le
+		;;
+	sb1-*)
+		cpu=mipsisa64sb1
+		;;
+	sb1el-*)
+		cpu=mipsisa64sb1el
+		;;
+	sh5e[lb]-*)
+		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+		;;
+	spur-*)
+		cpu=spur
+		;;
+	strongarm-* | thumb-*)
+		cpu=arm
+		;;
+	tx39-*)
+		cpu=mipstx39
+		;;
+	tx39el-*)
+		cpu=mipstx39el
+		;;
+	x64-*)
+		cpu=x86_64
+		;;
+	xscale-* | xscalee[bl]-*)
+		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+		;;
+	arm64-*)
+		cpu=aarch64
+		;;
+
+	# Recognize the canonical CPU Types that limit and/or modify the
+	# company names they are paired with.
+	cr16-*)
+		basic_os=${basic_os:-elf}
+		;;
+	crisv32-* | etraxfs*-*)
+		cpu=crisv32
+		vendor=axis
+		;;
+	cris-* | etrax*-*)
+		cpu=cris
+		vendor=axis
+		;;
+	crx-*)
+		basic_os=${basic_os:-elf}
+		;;
+	neo-tandem)
+		cpu=neo
+		vendor=tandem
+		;;
+	nse-tandem)
+		cpu=nse
+		vendor=tandem
+		;;
+	nsr-tandem)
+		cpu=nsr
+		vendor=tandem
+		;;
+	nsv-tandem)
+		cpu=nsv
+		vendor=tandem
+		;;
+	nsx-tandem)
+		cpu=nsx
+		vendor=tandem
+		;;
+	mipsallegrexel-sony)
+		cpu=mipsallegrexel
+		vendor=sony
+		;;
+	tile*-*)
+		basic_os=${basic_os:-linux-gnu}
+		;;
+
+	*)
+		# Recognize the canonical CPU types that are allowed with any
+		# company name.
+		case $cpu in
+			1750a | 580 \
+			| a29k \
+			| aarch64 | aarch64_be \
+			| abacus \
+			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+			| alphapca5[67] | alpha64pca5[67] \
+			| am33_2.0 \
+			| amdgcn \
+			| arc | arceb \
+			| arm | arm[lb]e | arme[lb] | armv* \
+			| avr | avr32 \
+			| asmjs \
+			| ba \
+			| be32 | be64 \
+			| bfin | bpf | bs2000 \
+			| c[123]* | c30 | [cjt]90 | c4x \
+			| c8051 | clipper | craynv | csky | cydra \
+			| d10v | d30v | dlx | dsp16xx \
+			| e2k | elxsi | epiphany \
+			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+			| h8300 | h8500 \
+			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+			| hexagon \
+			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
+			| ip2k | iq2000 \
+			| k1om \
+			| le32 | le64 \
+			| lm32 \
+			| m32c | m32r | m32rle \
+			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+			| m88110 | m88k | maxq | mb | mcore | mep | metag \
+			| microblaze | microblazeel \
+			| mips | mipsbe | mipseb | mipsel | mipsle \
+			| mips16 \
+			| mips64 | mips64eb | mips64el \
+			| mips64octeon | mips64octeonel \
+			| mips64orion | mips64orionel \
+			| mips64r5900 | mips64r5900el \
+			| mips64vr | mips64vrel \
+			| mips64vr4100 | mips64vr4100el \
+			| mips64vr4300 | mips64vr4300el \
+			| mips64vr5000 | mips64vr5000el \
+			| mips64vr5900 | mips64vr5900el \
+			| mipsisa32 | mipsisa32el \
+			| mipsisa32r2 | mipsisa32r2el \
+			| mipsisa32r6 | mipsisa32r6el \
+			| mipsisa64 | mipsisa64el \
+			| mipsisa64r2 | mipsisa64r2el \
+			| mipsisa64r6 | mipsisa64r6el \
+			| mipsisa64sb1 | mipsisa64sb1el \
+			| mipsisa64sr71k | mipsisa64sr71kel \
+			| mipsr5900 | mipsr5900el \
+			| mipstx39 | mipstx39el \
+			| mmix \
+			| mn10200 | mn10300 \
+			| moxie \
+			| mt \
+			| msp430 \
+			| nds32 | nds32le | nds32be \
+			| nfp \
+			| nios | nios2 | nios2eb | nios2el \
+			| none | np1 | ns16k | ns32k | nvptx \
+			| open8 \
+			| or1k* \
+			| or32 \
+			| orion \
+			| picochip \
+			| pdp10 | pdp11 | pj | pjl | pn | power \
+			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+			| pru \
+			| pyramid \
+			| riscv | riscv32 | riscv64 \
+			| rl78 | romp | rs6000 | rx \
+			| s390 | s390x \
+			| score \
+			| sh | shl \
+			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+			| sparclite \
+			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+			| spu \
+			| tahoe \
+			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+			| tron \
+			| ubicom32 \
+			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+			| vax \
+			| visium \
+			| w65 \
+			| wasm32 | wasm64 \
+			| we32k \
+			| x86 | x86_64 | xc16x | xgate | xps100 \
+			| xstormy16 | xtensa* \
+			| ymp \
+			| z8k | z80)
+				;;
+
+			*)
+				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+				exit 1
+				;;
+		esac
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $vendor in
+	digital*)
+		vendor=dec
+		;;
+	commodore*)
+		vendor=cbm
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if test x$basic_os != x
+then
+
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+	gnu/linux*)
+		kernel=linux
+		os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
+		;;
+	nto-qnx*)
+		kernel=nto
+		os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
+		;;
+	*-*)
+		# shellcheck disable=SC2162
+		IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+		;;
+	# Default OS when just kernel was specified
+	nto*)
+		kernel=nto
+		os=`echo $basic_os | sed -e 's|nto|qnx|'`
+		;;
+	linux*)
+		kernel=linux
+		os=`echo $basic_os | sed -e 's|linux|gnu|'`
+		;;
+	*)
+		kernel=
+		os=$basic_os
+		;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
+case $os in
+	# First match some system type aliases that might get confused
+	# with valid system types.
+	# solaris* is a basic system type, with this one exception.
+	auroraux)
+		os=auroraux
+		;;
+	bluegene*)
+		os=cnk
+		;;
+	solaris1 | solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	solaris)
+		os=solaris2
+		;;
+	unixware*)
+		os=sysv4.2uw
+		;;
+	# es1800 is here to avoid being matched by es* (a different OS)
+	es1800*)
+		os=ose
+		;;
+	# Some version numbers need modification
+	chorusos*)
+		os=chorusos
+		;;
+	isc)
+		os=isc2.2
+		;;
+	sco6)
+		os=sco5v6
+		;;
+	sco5)
+		os=sco3.2v5
+		;;
+	sco4)
+		os=sco3.2v4
+		;;
+	sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		;;
+	sco*v* | scout)
+		# Don't match below
+		;;
+	sco*)
+		os=sco3.2v2
+		;;
+	psos*)
+		os=psos
+		;;
+	qnx*)
+		os=qnx
+		;;
+	hiux*)
+		os=hiuxwe2
+		;;
+	lynx*178)
+		os=lynxos178
+		;;
+	lynx*5)
+		os=lynxos5
+		;;
+	lynxos*)
+		# don't get caught up in next wildcard
+		;;
+	lynx*)
+		os=lynxos
+		;;
+	mac[0-9]*)
+		os=`echo "$os" | sed -e 's|mac|macos|'`
+		;;
+	opened*)
+		os=openedition
+		;;
+	os400*)
+		os=os400
+		;;
+	sunos5*)
+		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+		;;
+	sunos6*)
+		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+		;;
+	wince*)
+		os=wince
+		;;
+	utek*)
+		os=bsd
+		;;
+	dynix*)
+		os=bsd
+		;;
+	acis*)
+		os=aos
+		;;
+	atheos*)
+		os=atheos
+		;;
+	syllable*)
+		os=syllable
+		;;
+	386bsd)
+		os=bsd
+		;;
+	ctix* | uts*)
+		os=sysv
+		;;
+	nova*)
+		os=rtmk-nova
+		;;
+	ns2)
+		os=nextstep2
+		;;
+	# Preserve the version number of sinix5.
+	sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	sinix*)
+		os=sysv4
+		;;
+	tpf*)
+		os=tpf
+		;;
+	triton*)
+		os=sysv3
+		;;
+	oss*)
+		os=sysv3
+		;;
+	svr4*)
+		os=sysv4
+		;;
+	svr3)
+		os=sysv3
+		;;
+	sysvr4)
+		os=sysv4
+		;;
+	ose*)
+		os=ose
+		;;
+	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+		os=mint
+		;;
+	dicos*)
+		os=dicos
+		;;
+	pikeos*)
+		# Until real need of OS specific support for
+		# particular features comes up, bare metal
+		# configurations are quite functional.
+		case $cpu in
+		    arm*)
+			os=eabi
+			;;
+		    *)
+			os=elf
+			;;
+		esac
+		;;
+	*)
+		# No normalization, but not necessarily accepted, that comes below.
+		;;
+esac
+
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+kernel=
+case $cpu-$vendor in
+	score-*)
+		os=elf
+		;;
+	spu-*)
+		os=elf
+		;;
+	*-acorn)
+		os=riscix1.2
+		;;
+	arm*-rebel)
+		kernel=linux
+		os=gnu
+		;;
+	arm*-semi)
+		os=aout
+		;;
+	c4x-* | tic4x-*)
+		os=coff
+		;;
+	c8051-*)
+		os=elf
+		;;
+	clipper-intergraph)
+		os=clix
+		;;
+	hexagon-*)
+		os=elf
+		;;
+	tic54x-*)
+		os=coff
+		;;
+	tic55x-*)
+		os=coff
+		;;
+	tic6x-*)
+		os=coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=tops20
+		;;
+	pdp11-*)
+		os=none
+		;;
+	*-dec | vax-*)
+		os=ultrix4.2
+		;;
+	m68*-apollo)
+		os=domain
+		;;
+	i386-sun)
+		os=sunos4.0.2
+		;;
+	m68000-sun)
+		os=sunos3
+		;;
+	m68*-cisco)
+		os=aout
+		;;
+	mep-*)
+		os=elf
+		;;
+	mips*-cisco)
+		os=elf
+		;;
+	mips*-*)
+		os=elf
+		;;
+	or32-*)
+		os=coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=sysv3
+		;;
+	sparc-* | *-sun)
+		os=sunos4.1.1
+		;;
+	pru-*)
+		os=elf
+		;;
+	*-be)
+		os=beos
+		;;
+	*-ibm)
+		os=aix
+		;;
+	*-knuth)
+		os=mmixware
+		;;
+	*-wec)
+		os=proelf
+		;;
+	*-winbond)
+		os=proelf
+		;;
+	*-oki)
+		os=proelf
+		;;
+	*-hp)
+		os=hpux
+		;;
+	*-hitachi)
+		os=hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=sysv
+		;;
+	*-cbm)
+		os=amigaos
+		;;
+	*-dg)
+		os=dgux
+		;;
+	*-dolphin)
+		os=sysv3
+		;;
+	m68k-ccur)
+		os=rtu
+		;;
+	m88k-omron*)
+		os=luna
+		;;
+	*-next)
+		os=nextstep
+		;;
+	*-sequent)
+		os=ptx
+		;;
+	*-crds)
+		os=unos
+		;;
+	*-ns)
+		os=genix
+		;;
+	i370-*)
+		os=mvs
+		;;
+	*-gould)
+		os=sysv
+		;;
+	*-highlevel)
+		os=bsd
+		;;
+	*-encore)
+		os=bsd
+		;;
+	*-sgi)
+		os=irix
+		;;
+	*-siemens)
+		os=sysv4
+		;;
+	*-masscomp)
+		os=rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=uxpv
+		;;
+	*-rom68k)
+		os=coff
+		;;
+	*-*bug)
+		os=coff
+		;;
+	*-apple)
+		os=macos
+		;;
+	*-atari*)
+		os=mint
+		;;
+	*-wrs)
+		os=vxworks
+		;;
+	*)
+		os=none
+		;;
+esac
+
+fi
+
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+	# Sometimes we do "kernel-abi", so those need to count as OSes.
+	musl* | newlib* | uclibc*)
+		;;
+	# Likewise for "kernel-libc"
+	eabi | eabihf | gnueabi | gnueabihf)
+		;;
+	# Now accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST end in a * to match a version number.
+	gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+	     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
+	     | hiux* | abug | nacl* | netware* | windows* \
+	     | os9* | macos* | osx* | ios* \
+	     | mpw* | magic* | mmixware* | mon960* | lnews* \
+	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
+	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+	     | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+	     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+	     | udi* | lites* | ieee* | go32* | aux* | hcos* \
+	     | chorusrdb* | cegcc* | glidix* \
+	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+	     | midipix* | mingw32* | mingw64* | mint* \
+	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+	     | interix* | uwin* | mks* | rhapsody* | darwin* \
+	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
+	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
+	     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+	     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+	     | nsk* | powerunix* | genode* | zvmoe* | qnx* )
+		;;
+	# This one is extra strict with allowed versions
+	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		;;
+	none)
+		;;
+	*)
+		echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+	linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+		;;
+	-dietlibc* | -newlib* | -musl* | -uclibc* )
+		# These are just libc implementations, not actual OSes, and thus
+		# require a kernel.
+		echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+		exit 1
+		;;
+	kfreebsd*-gnu* | kopensolaris*-gnu*)
+		;;
+	nto-qnx*)
+		;;
+	*-eabi* | *-gnueabi*)
+		;;
+	-*)
+		# Blank kernel with real OS is always fine.
+		;;
+	*-*)
+		echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+		exit 1
+		;;
+esac
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+case $vendor in
+	unknown)
+		case $cpu-$os in
+			*-riscix*)
+				vendor=acorn
+				;;
+			*-sunos*)
+				vendor=sun
+				;;
+			*-cnk* | *-aix*)
+				vendor=ibm
+				;;
+			*-beos*)
+				vendor=be
+				;;
+			*-hpux*)
+				vendor=hp
+				;;
+			*-mpeix*)
+				vendor=hp
+				;;
+			*-hiux*)
+				vendor=hitachi
+				;;
+			*-unos*)
+				vendor=crds
+				;;
+			*-dgux*)
+				vendor=dg
+				;;
+			*-luna*)
+				vendor=omron
+				;;
+			*-genix*)
+				vendor=ns
+				;;
+			*-clix*)
+				vendor=intergraph
+				;;
+			*-mvs* | *-opened*)
+				vendor=ibm
+				;;
+			*-os400*)
+				vendor=ibm
+				;;
+			s390-* | s390x-*)
+				vendor=ibm
+				;;
+			*-ptx*)
+				vendor=sequent
+				;;
+			*-tpf*)
+				vendor=ibm
+				;;
+			*-vxsim* | *-vxworks* | *-windiss*)
+				vendor=wrs
+				;;
+			*-aux*)
+				vendor=apple
+				;;
+			*-hms*)
+				vendor=hitachi
+				;;
+			*-mpw* | *-macos*)
+				vendor=apple
+				;;
+			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
+				vendor=atari
+				;;
+			*-vos*)
+				vendor=stratus
+				;;
+		esac
+		;;
+esac
+
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+exit
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/common/environment/configure/bootstrap.sh b/common/environment/configure/bootstrap.sh
new file mode 100644
index 0000000..f5ba5f4
--- /dev/null
+++ b/common/environment/configure/bootstrap.sh
@@ -0,0 +1,4 @@
+if [ -z "$CHROOT_READY" ]; then
+	CFLAGS+=" -isystem ${XBPS_MASTERDIR}/usr/include"
+	LDFLAGS+=" -L${XBPS_MASTERDIR}/usr/lib -Wl,-rpath-link=${XBPS_MASTERDIR}/usr/lib"
+fi
diff --git a/common/environment/configure/ccache.sh b/common/environment/configure/ccache.sh
new file mode 100644
index 0000000..2968cea
--- /dev/null
+++ b/common/environment/configure/ccache.sh
@@ -0,0 +1 @@
+export CCACHE_BASEDIR="$wrksrc/$build_wrksrc"
diff --git a/common/environment/configure/cross.sh b/common/environment/configure/cross.sh
new file mode 100644
index 0000000..d788729
--- /dev/null
+++ b/common/environment/configure/cross.sh
@@ -0,0 +1,5 @@
+if [ -n "$CROSS_BUILD" ]; then
+	CFLAGS+=" -I${XBPS_CROSS_BASE}/usr/include"
+	CXXFLAGS+=" -I${XBPS_CROSS_BASE}/usr/include"
+	LDFLAGS+=" -L${XBPS_CROSS_BASE}/usr/lib"
+fi
diff --git a/common/environment/configure/debug-debug-prefix-map.sh b/common/environment/configure/debug-debug-prefix-map.sh
new file mode 100644
index 0000000..ca30b61
--- /dev/null
+++ b/common/environment/configure/debug-debug-prefix-map.sh
@@ -0,0 +1,2 @@
+CFLAGS="${CFLAGS} -fdebug-prefix-map=$wrksrc=."
+CXXFLAGS="${CXXFLAGS} -fdebug-prefix-map=$wrksrc=."
diff --git a/common/environment/configure/gccspecs/hardened-cc1 b/common/environment/configure/gccspecs/hardened-cc1
new file mode 100644
index 0000000..f275759
--- /dev/null
+++ b/common/environment/configure/gccspecs/hardened-cc1
@@ -0,0 +1,5 @@
+*cpp_options:
++ %{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}
+
+*cc1_options:
++ %{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}
diff --git a/common/environment/configure/gccspecs/hardened-ld b/common/environment/configure/gccspecs/hardened-ld
new file mode 100644
index 0000000..36b31d7
--- /dev/null
+++ b/common/environment/configure/gccspecs/hardened-ld
@@ -0,0 +1,5 @@
+*self_spec:
++ %{static|Bstatic|shared|Bshareable|i|r|pie|nopie:;:-pie}
+
+*link:
++ %{!static:-z relro -z now}
diff --git a/common/environment/configure/gccspecs/hardened-mips-cc1 b/common/environment/configure/gccspecs/hardened-mips-cc1
new file mode 100644
index 0000000..41e40b9
--- /dev/null
+++ b/common/environment/configure/gccspecs/hardened-mips-cc1
@@ -0,0 +1,8 @@
+*cpp_options:
++ %{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE -mshared}}}}}
+
+*cc1_options:
++ %{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE -mshared}}}}}
+
+*asm_options:
++ %{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-mshared}}}}}
diff --git a/common/environment/configure/gnu-configure-args.sh b/common/environment/configure/gnu-configure-args.sh
new file mode 100644
index 0000000..dafbf5d
--- /dev/null
+++ b/common/environment/configure/gnu-configure-args.sh
@@ -0,0 +1,132 @@
+# This file sets up configure_args with common settings.
+
+if [ -n "$build_style" -a "$build_style" != "gnu-configure" ]; then
+	return 0
+fi
+
+# Store args from template so they can be included last and override
+# our defaults
+TEMPLATE_CONFIGURE_ARGS="${configure_args}"
+
+export configure_args="--prefix=/usr --sysconfdir=/etc --sbindir=/usr/bin --bindir=/usr/bin
+ --mandir=/usr/share/man --infodir=/usr/share/info --localstatedir=/var"
+
+. ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh
+export configure_args+=" --host=$XBPS_TRIPLET --build=$XBPS_TRIPLET"
+
+# Always use wordsize-specific libdir even though the real path is lib
+# This is to make sure 32-bit and 64-bit libs can coexist when looking
+# up things (the opposite-libdir is always symlinked as libNN)
+export configure_args+=" --libdir=\${exec_prefix}/lib${XBPS_TARGET_WORDSIZE}"
+
+_AUTOCONFCACHEDIR=${XBPS_COMMONDIR}/environment/configure/autoconf_cache
+
+# From now on all vars are exported to the environment
+set -a
+
+# Read autoconf cache variables for native target.
+case "$XBPS_TARGET_MACHINE" in
+	# musl libc
+	*-musl) . ${_AUTOCONFCACHEDIR}/musl-linux
+		;;
+esac
+
+# Cross compilation vars
+if [ -z "$CROSS_BUILD" ]; then
+	export configure_args+=" ${TEMPLATE_CONFIGURE_ARGS}"
+	unset TEMPLATE_CONFIGURE_ARGS
+
+	set +a
+	return 0
+fi
+
+export configure_args+=" --host=$XBPS_CROSS_TRIPLET --with-sysroot=$XBPS_CROSS_BASE --with-libtool-sysroot=$XBPS_CROSS_BASE "
+
+export configure_args+=" ${TEMPLATE_CONFIGURE_ARGS}"
+unset TEMPLATE_CONFIGURE_ARGS
+
+# Read autoconf cache variables for cross target (taken from OE).
+case "$XBPS_TARGET_MACHINE" in
+	# musl libc
+	*-musl) . ${_AUTOCONFCACHEDIR}/common-linux
+		. ${_AUTOCONFCACHEDIR}/musl-linux
+		;;
+	# gnu libc
+	*)	. ${_AUTOCONFCACHEDIR}/common-linux
+		. ${_AUTOCONFCACHEDIR}/common-glibc
+		;;
+esac
+
+# Read apropiate autoconf cache files for target machine.
+case "$XBPS_TARGET_MACHINE" in
+	armv5te*|armv?l*)
+		. ${_AUTOCONFCACHEDIR}/endian-little
+		. ${_AUTOCONFCACHEDIR}/arm-common
+		. ${_AUTOCONFCACHEDIR}/arm-linux
+		;;
+
+	aarch64*)
+		. ${_AUTOCONFCACHEDIR}/endian-little
+		. ${_AUTOCONFCACHEDIR}/aarch64-linux
+		;;
+
+	i686*)	. ${_AUTOCONFCACHEDIR}/endian-little
+		. ${_AUTOCONFCACHEDIR}/ix86-common
+		;;
+
+	mips)	. ${_AUTOCONFCACHEDIR}/endian-big
+		. ${_AUTOCONFCACHEDIR}/mips-common
+		. ${_AUTOCONFCACHEDIR}/mips-linux
+		;;
+
+	mipshf*)
+		. ${_AUTOCONFCACHEDIR}/endian-big
+		. ${_AUTOCONFCACHEDIR}/mips-common
+		. ${_AUTOCONFCACHEDIR}/mips-linux
+		;;
+
+	mipsel*)
+		. ${_AUTOCONFCACHEDIR}/endian-little
+		. ${_AUTOCONFCACHEDIR}/mips-common
+		. ${_AUTOCONFCACHEDIR}/mips-linux
+		;;
+
+	x86_64*)
+		. ${_AUTOCONFCACHEDIR}/endian-little
+		. ${_AUTOCONFCACHEDIR}/x86_64-linux
+		;;
+
+	ppc64le*)
+		. ${_AUTOCONFCACHEDIR}/endian-little
+		. ${_AUTOCONFCACHEDIR}/powerpc-common
+		. ${_AUTOCONFCACHEDIR}/powerpc-linux
+		. ${_AUTOCONFCACHEDIR}/powerpc64-linux
+		;;
+
+	ppc64*)
+		. ${_AUTOCONFCACHEDIR}/endian-big
+		. ${_AUTOCONFCACHEDIR}/powerpc-common
+		. ${_AUTOCONFCACHEDIR}/powerpc-linux
+		. ${_AUTOCONFCACHEDIR}/powerpc64-linux
+		;;
+
+	ppcle*)
+		. ${_AUTOCONFCACHEDIR}/endian-little
+		. ${_AUTOCONFCACHEDIR}/powerpc-common
+		. ${_AUTOCONFCACHEDIR}/powerpc-linux
+		. ${_AUTOCONFCACHEDIR}/powerpc32-linux
+		;;
+
+	ppc*)
+		. ${_AUTOCONFCACHEDIR}/endian-big
+		. ${_AUTOCONFCACHEDIR}/powerpc-common
+		. ${_AUTOCONFCACHEDIR}/powerpc-linux
+		. ${_AUTOCONFCACHEDIR}/powerpc32-linux
+		;;
+
+	*) ;;
+esac
+
+unset _AUTOCONFCACHEDIR
+
+set +a # vars are not exported to the environment anymore
diff --git a/common/environment/configure/hardening.sh b/common/environment/configure/hardening.sh
new file mode 100644
index 0000000..9e02364
--- /dev/null
+++ b/common/environment/configure/hardening.sh
@@ -0,0 +1,30 @@
+# Enable as-needed by default.
+LDFLAGS="-Wl,--as-needed ${LDFLAGS}"
+
+if [ -z "$nopie" ]; then
+	# Our compilers use --enable-default-pie and --enable-default-ssp,
+	# but the bootstrap host compiler may not, force them.
+	if [ -z "$CHROOT_READY" ]; then
+		CFLAGS="-fstack-protector-strong -D_FORTIFY_SOURCE=2 ${CFLAGS}"
+		CXXFLAGS="-fstack-protector-strong -D_FORTIFY_SOURCE=2 ${CXXFLAGS}"
+		_GCCSPECSDIR=${XBPS_COMMONDIR}/environment/configure/gccspecs
+		case "$XBPS_TARGET_MACHINE" in
+			mips*) _GCCSPECSFILE="${_GCCSPECSDIR}/hardened-mips-cc1" ;;
+			*) _GCCSPECSFILE="${_GCCSPECSDIR}/hardened-cc1" ;;
+		esac
+		CFLAGS="-specs=${_GCCSPECSFILE} ${CFLAGS}"
+		CXXFLAGS="-specs=${_GCCSPECSFILE} ${CXXFLAGS}"
+		LDFLAGS="-specs=${_GCCSPECSDIR}/hardened-ld -Wl,-z,relro -Wl,-z,now ${LDFLAGS}"
+	else
+		# Enable FORITFY_SOURCE=2
+		CFLAGS="-fstack-clash-protection -D_FORTIFY_SOURCE=2 ${CFLAGS}"
+		CXXFLAGS="-fstack-clash-protection -D_FORTIFY_SOURCE=2 ${CXXFLAGS}"
+		FFLAGS="-fstack-clash-protection ${FFLAGS}"
+		LDFLAGS="-Wl,-z,relro -Wl,-z,now ${LDFLAGS}"
+	fi
+else
+	CFLAGS="-fno-PIE ${CFLAGS}"
+	CXXFLAGS="-fno-PIE ${CFLAGS}"
+	FFLAGS="-fno-PIE ${FFLAGS}"
+	LDFLAGS="-no-pie ${LDFLAGS}"
+fi
diff --git a/common/environment/configure/pkg-config.sh b/common/environment/configure/pkg-config.sh
new file mode 100644
index 0000000..bf81c5f
--- /dev/null
+++ b/common/environment/configure/pkg-config.sh
@@ -0,0 +1,5 @@
+# This snippet setups pkg-config vars.
+
+if [ -z "$CHROOT_READY" ]; then
+	export PKG_CONFIG_PATH="${XBPS_MASTERDIR}/usr/lib/pkgconfig:${XBPS_MASTERDIR}/usr/share/pkgconfig"
+fi
diff --git a/common/environment/extract/.empty b/common/environment/extract/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/fetch/.empty b/common/environment/fetch/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/fetch/fetch_cmd.sh b/common/environment/fetch/fetch_cmd.sh
new file mode 100644
index 0000000..2efc359
--- /dev/null
+++ b/common/environment/fetch/fetch_cmd.sh
@@ -0,0 +1,4 @@
+#
+# Sets the fetch_cmd variable used by hooks/do-fetch/00-distfiles.sh
+#
+: ${fetch_cmd:=$XBPS_FETCH_CMD}
diff --git a/common/environment/fetch/misc.sh b/common/environment/fetch/misc.sh
new file mode 120000
index 0000000..7d5f3f6
--- /dev/null
+++ b/common/environment/fetch/misc.sh
@@ -0,0 +1 @@
+../setup/misc.sh
\ No newline at end of file
diff --git a/common/environment/install/.empty b/common/environment/install/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/install/ccache.sh b/common/environment/install/ccache.sh
new file mode 120000
index 0000000..b5ed088
--- /dev/null
+++ b/common/environment/install/ccache.sh
@@ -0,0 +1 @@
+../configure/ccache.sh
\ No newline at end of file
diff --git a/common/environment/install/cross.sh b/common/environment/install/cross.sh
new file mode 120000
index 0000000..43f6c48
--- /dev/null
+++ b/common/environment/install/cross.sh
@@ -0,0 +1 @@
+../configure/cross.sh
\ No newline at end of file
diff --git a/common/environment/install/debug-debug-prefix-map.sh b/common/environment/install/debug-debug-prefix-map.sh
new file mode 120000
index 0000000..98c260a
--- /dev/null
+++ b/common/environment/install/debug-debug-prefix-map.sh
@@ -0,0 +1 @@
+../configure/debug-debug-prefix-map.sh
\ No newline at end of file
diff --git a/common/environment/install/extglob.sh b/common/environment/install/extglob.sh
new file mode 100644
index 0000000..c0bf59d
--- /dev/null
+++ b/common/environment/install/extglob.sh
@@ -0,0 +1,18 @@
+# This provides the extglob function to expand wildcards in the destdir
+
+expand_destdir() {
+	local result= glob= file=
+
+	(
+		set -f
+		for glob in $@; do
+			files=$(echo "${PKGDESTDIR}/${glob}")
+			set +f
+			for file in $files; do
+				result+="${blank}${file#$PKGDESTDIR/}"
+				blank=" "
+			done
+		done
+		echo "$result"
+	)
+}
diff --git a/common/environment/install/hardening.sh b/common/environment/install/hardening.sh
new file mode 120000
index 0000000..f043590
--- /dev/null
+++ b/common/environment/install/hardening.sh
@@ -0,0 +1 @@
+../configure/hardening.sh
\ No newline at end of file
diff --git a/common/environment/install/pkg-config.sh b/common/environment/install/pkg-config.sh
new file mode 120000
index 0000000..b8f8c44
--- /dev/null
+++ b/common/environment/install/pkg-config.sh
@@ -0,0 +1 @@
+../configure/pkg-config.sh
\ No newline at end of file
diff --git a/common/environment/patch/bootstrap.sh b/common/environment/patch/bootstrap.sh
new file mode 120000
index 0000000..a0cf1d2
--- /dev/null
+++ b/common/environment/patch/bootstrap.sh
@@ -0,0 +1 @@
+../configure/bootstrap.sh
\ No newline at end of file
diff --git a/common/environment/patch/ccache.sh b/common/environment/patch/ccache.sh
new file mode 120000
index 0000000..b5ed088
--- /dev/null
+++ b/common/environment/patch/ccache.sh
@@ -0,0 +1 @@
+../configure/ccache.sh
\ No newline at end of file
diff --git a/common/environment/patch/cross.sh b/common/environment/patch/cross.sh
new file mode 120000
index 0000000..43f6c48
--- /dev/null
+++ b/common/environment/patch/cross.sh
@@ -0,0 +1 @@
+../configure/cross.sh
\ No newline at end of file
diff --git a/common/environment/patch/debug-debug-prefix-map.sh b/common/environment/patch/debug-debug-prefix-map.sh
new file mode 120000
index 0000000..98c260a
--- /dev/null
+++ b/common/environment/patch/debug-debug-prefix-map.sh
@@ -0,0 +1 @@
+../configure/debug-debug-prefix-map.sh
\ No newline at end of file
diff --git a/common/environment/patch/gnu-configure-args.sh b/common/environment/patch/gnu-configure-args.sh
new file mode 120000
index 0000000..d3cafa3
--- /dev/null
+++ b/common/environment/patch/gnu-configure-args.sh
@@ -0,0 +1 @@
+../configure/gnu-configure-args.sh
\ No newline at end of file
diff --git a/common/environment/patch/hardening.sh b/common/environment/patch/hardening.sh
new file mode 120000
index 0000000..f043590
--- /dev/null
+++ b/common/environment/patch/hardening.sh
@@ -0,0 +1 @@
+../configure/hardening.sh
\ No newline at end of file
diff --git a/common/environment/patch/pkg-config.sh b/common/environment/patch/pkg-config.sh
new file mode 120000
index 0000000..b8f8c44
--- /dev/null
+++ b/common/environment/patch/pkg-config.sh
@@ -0,0 +1 @@
+../configure/pkg-config.sh
\ No newline at end of file
diff --git a/common/environment/pkg/extglob.sh b/common/environment/pkg/extglob.sh
new file mode 120000
index 0000000..727ffaf
--- /dev/null
+++ b/common/environment/pkg/extglob.sh
@@ -0,0 +1 @@
+../install/extglob.sh
\ No newline at end of file
diff --git a/common/environment/setup-subpkg/.empty b/common/environment/setup-subpkg/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/setup-subpkg/subpkg.sh b/common/environment/setup-subpkg/subpkg.sh
new file mode 100644
index 0000000..6edab5d
--- /dev/null
+++ b/common/environment/setup-subpkg/subpkg.sh
@@ -0,0 +1,48 @@
+# This shell snippet unsets all variables/functions that can be used in
+# a package template and can also be used in subpkgs.
+
+## VARIABLES
+unset -v conf_files mutable_files preserve triggers alternatives
+unset -v depends run_depends replaces provides conflicts tags
+
+# hooks/post-install/03-strip-and-debug-pkgs
+unset -v nostrip nostrip_files
+
+# hooks/post-install/14-fix-permissions
+unset -v nocheckperms nofixperms
+
+# hooks/pre-pkg/04-generate-runtime-deps
+unset -v noverifyrdeps skiprdeps allow_unknown_shlibs shlib_requires
+
+# hooks/pre-pkg/06-prepare-32bit
+unset -v lib32depends lib32disabled lib32files lib32mode lib32symlinks
+
+# hooks/pre-pkg/06-shlib-provides
+unset -v noshlibprovides shlib_provides
+
+# xbps-triggers: system-accounts
+unset -v system_accounts system_groups
+
+# xbps-triggers: font-dirs
+unset -v font_dirs
+
+# xbps-triggers: xml-catalog
+unset -v xml_entries sgml_entries xml_catalogs sgml_catalogs
+
+# xbps-triggers: pycompile
+unset -v pycompile_dirs pycompile_module
+
+# xbps-triggers: dkms
+unset -v dkms_modules
+
+# xbps-triggers: kernel-hooks
+unset -v kernel_hooks_version
+
+# xbps-triggers: mkdirs
+unset -v make_dirs
+
+# xbps-triggers: binfmts
+unset -v binfmts
+
+# xbps-triggers: register-shell
+unset -v register_shell
diff --git a/common/environment/setup/.empty b/common/environment/setup/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/environment/setup/git.sh b/common/environment/setup/git.sh
new file mode 100644
index 0000000..bd72f2e
--- /dev/null
+++ b/common/environment/setup/git.sh
@@ -0,0 +1,35 @@
+# If XBPS_USE_BUILD_MTIME is enabled in conf file don't continue.
+# only run this, if SOURCE_DATE_EPOCH isn't set.
+
+if [ -z "$XBPS_GIT_CMD" ]; then
+	if [ -z "$XBPS_USE_BUILD_MTIME" ] || [ -n "$XBPS_USE_GIT_REVS" ]; then
+		msg_error "BUG: environment/setup: XBPS_GIT_CMD is not set\n"
+	fi
+fi
+
+if [ -n "$XBPS_USE_BUILD_MTIME" ]; then
+	unset SOURCE_DATE_EPOCH
+elif [ -z "${SOURCE_DATE_EPOCH}" ]; then
+	if [ -n "$IN_CHROOT" ]; then
+		msg_error "xbps-src's BUG: SOURCE_DATE_EPOCH is undefined\n"
+	fi
+	# check if the template is under version control:
+	if [ -n "$basepkg" -a -z "$($XBPS_GIT_CMD -C ${XBPS_SRCPKGDIR}/${basepkg} ls-files template)" ]; then
+		export SOURCE_DATE_EPOCH="$(stat -c %Y ${XBPS_SRCPKGDIR}/${basepkg}/template)"
+	else
+		export SOURCE_DATE_EPOCH=$($XBPS_GIT_CMD -C ${XBPS_DISTDIR} cat-file commit HEAD |
+			sed -n '/^committer /{s/.*> \([0-9][0-9]*\) [-+][0-9].*/\1/p;q}')
+	fi
+fi
+
+# if XBPS_USE_GIT_REVS is enabled in conf file,
+# compute XBPS_GIT_REVS to use in pkg hooks
+if [ -z "$XBPS_USE_GIT_REVS" ]; then
+	unset XBPS_GIT_REVS
+elif [ -z "$XBPS_GIT_REVS" ]; then
+	if [ -n "$IN_CHROOT" ]; then
+		msg_error "xbps-src's BUG: XBPS_GIT_REVS is undefined\n"
+	else
+		export XBPS_GIT_REVS="$($XBPS_GIT_CMD -C "${XBPS_DISTDIR}" rev-parse --verify --short HEAD)"
+	fi
+fi
diff --git a/common/environment/setup/install.sh b/common/environment/setup/install.sh
new file mode 100644
index 0000000..5f0571d
--- /dev/null
+++ b/common/environment/setup/install.sh
@@ -0,0 +1,267 @@
+# -*-* shell *-*-
+
+# enable aliases
+shopt -s expand_aliases
+
+# clear all aliases
+unalias -a
+
+# disable wildcards helper
+_noglob_helper() {
+       set +f
+       "$@"
+}
+
+# Apply _noglob to v* commands
+for cmd in vinstall vcopy vcompletion vmove vmkdir vbin vman vdoc vconf vsconf vlicense vsv; do
+       alias ${cmd}="set -f; _noglob_helper _${cmd}"
+done
+
+_vsv() {
+	local service="$1"
+	local LN_OPTS="-s"
+	local svdir="${PKGDESTDIR}/etc/sv/${service}"
+
+	if [ $# -lt 1 ]; then
+		msg_red "$pkgver: vsv: 1 argument expected: <service>\n"
+		return 1
+	fi
+
+	if [ -n "$XBPS_BUILD_FORCEMODE" ]; then
+		LN_OPTS+="f"
+	fi
+
+	vmkdir etc/sv
+	vcopy "${FILESDIR}/$service" etc/sv
+	if [ ! -L $svdir/run ]; then
+		chmod 755 $svdir/run
+	fi
+	if [ -e $svdir/finish ] && [ ! -L $svdir/finish ]; then
+		chmod 755 $svdir/finish
+	fi
+	ln ${LN_OPTS} /run/runit/supervise.${service} $svdir/supervise
+	if [ -d $svdir/log ]; then
+		ln ${LN_OPTS} /run/runit/supervise.${service}-log $svdir/log/supervise
+		if [ -e $svdir/log/run ] && [ ! -L $svdir/log/run ]; then
+			chmod 755 ${PKGDESTDIR}/etc/sv/${service}/log/run
+		fi
+	fi
+}
+
+_vbin() {
+	local file="$1" targetfile="$2"
+
+	if [ $# -lt 1 ]; then
+		msg_red "$pkgver: vbin: 1 argument expected: <file>\n"
+		return 1
+	fi
+
+	vinstall "$file" 755 usr/bin "$targetfile"
+}
+
+_vman() {
+	local file="$1" target="${2:-${1##*/}}"
+
+	if [ $# -lt 1 ]; then
+		msg_red "$pkgver: vman: 1 argument expected: <file>\n"
+		return 1
+	fi
+
+	suffix=${target##*.}
+
+	if [[ $suffix == gz ]]
+	then
+		gunzip "$file"
+		file="${file:0:-3}"
+		target="${target:0:-3}"
+		suffix=${target##*.}
+	fi
+
+	if [[ $suffix == bz2 ]]
+	then
+		bunzip2 "$file"
+		file="${file:0:-4}"
+		target="${target:0:-4}"
+		suffix=${target##*.}
+	fi
+
+	if  [[ $target =~ (.*)\.([a-z][a-z](_[A-Z][A-Z])?)\.(.*) ]]
+	then
+		name=${BASH_REMATCH[1]}.${BASH_REMATCH[4]}
+		mandir=${BASH_REMATCH[2]}/man${suffix:0:1}
+	else
+		name=$target
+		mandir=man${suffix:0:1}
+	fi
+
+	if [[ ${mandir} == *man[0-9n] ]] ; then
+		vinstall "$file" 644 "usr/share/man/${mandir}" "$name"
+		return 0
+	fi
+
+	msg_red "$pkgver: vman: Filename '${target}' does not look like a man page\n"
+	return 1
+}
+
+_vdoc() {
+	local file="$1" targetfile="$2"
+
+	if [ $# -lt 1 ]; then
+		msg_red "$pkgver: vdoc: 1 argument expected: <file>\n"
+		return 1
+	fi
+
+	vinstall "$file" 644 "usr/share/doc/${pkgname}" "$targetfile"
+}
+
+_vconf() {
+	local file="$1" targetfile="$2"
+
+	if [ $# -lt 1 ]; then
+		msg_red "$pkgver: vconf: 1 argument expected: <file>\n"
+		return 1
+	fi
+
+	vinstall "$file" 644 etc "$targetfile"
+}
+
+_vsconf() {
+	local file="$1" targetfile="$2"
+
+	if [ $# -lt 1 ]; then
+		msg_red "$pkgver: vsconf: 1 argument expected: <file>\n"
+		return 1
+	fi
+
+	vinstall "$file" 644 "usr/share/examples/${pkgname}" "$targetfile"
+}
+
+_vlicense() {
+	local file="$1" targetfile="$2"
+
+	if [ $# -lt 1 ]; then
+		msg_red "$pkgver: vlicense: 1 argument expected: <file>\n"
+		return 1
+	fi
+
+	vinstall "$file" 644 "usr/share/licenses/${pkgname}" "$targetfile"
+}
+
+_vinstall() {
+	local file="$1" mode="$2" targetdir="$3" targetfile="$4"
+
+	if [ -z "$PKGDESTDIR" ]; then
+		msg_red "$pkgver: vinstall: PKGDESTDIR unset, can't continue...\n"
+		return 1
+	fi
+
+	if [ $# -lt 3 ]; then
+		msg_red "$pkgver: vinstall: 3 arguments expected: <file> <mode> <target-directory>\n"
+		return 1
+	fi
+
+	if [ ! -r "${file}" ]; then
+		msg_red "$pkgver: vinstall: cannot find '$file'...\n"
+		return 1
+	fi
+
+	if [ -z "$targetfile" ]; then
+		install -Dm${mode} "${file}" "${PKGDESTDIR}/${targetdir}/${file##*/}"
+	else
+		install -Dm${mode} "${file}" "${PKGDESTDIR}/${targetdir}/${targetfile##*/}"
+	fi
+}
+
+_vcopy() {
+	local files="$1" targetdir="$2"
+
+	if [ -z "$PKGDESTDIR" ]; then
+		msg_red "$pkgver: vcopy: PKGDESTDIR unset, can't continue...\n"
+		return 1
+	fi
+	if [ $# -ne 2 ]; then
+		msg_red "$pkgver: vcopy: 2 arguments expected: <files> <target-directory>\n"
+		return 1
+	fi
+
+	cp -a $files ${PKGDESTDIR}/${targetdir}
+}
+
+_vmove() {
+	local f files="$1" _targetdir
+
+	if [ -z "$DESTDIR" ]; then
+		msg_red "$pkgver: vmove: DESTDIR unset, can't continue...\n"
+		return 1
+	elif [ -z "$PKGDESTDIR" ]; then
+		msg_red "$pkgver: vmove: PKGDESTDIR unset, can't continue...\n"
+		return 1
+	elif [ "$DESTDIR" = "$PKGDESTDIR" ]; then
+		msg_red "$pkgver: vmove is intended to be used in pkg_install\n"
+		return 1
+	fi
+	if [ $# -ne 1 ]; then
+		msg_red "$pkgver: vmove: 1 argument expected: <files>\n"
+		return 1
+	fi
+	for f in ${files}; do
+		_targetdir=${f%/*}/
+		break
+	done
+
+	if [ -z "${_targetdir}" ]; then
+		[ ! -d ${PKGDESTDIR} ] && install -d ${PKGDESTDIR}
+		mv ${DESTDIR}/$files ${PKGDESTDIR}
+	else
+		if [ ! -d ${PKGDESTDIR}/${_targetdir} ]; then
+			install -d ${PKGDESTDIR}/${_targetdir}
+		fi
+		mv ${DESTDIR}/$files ${PKGDESTDIR}/${_targetdir}
+	fi
+}
+
+_vmkdir() {
+	local dir="$1" mode="$2"
+
+	if [ -z "$PKGDESTDIR" ]; then
+		msg_red "$pkgver: vmkdir: PKGDESTDIR unset, can't continue...\n"
+		return 1
+	fi
+
+	if [ -z "$dir" ]; then
+		msg_red "vmkdir: directory argument unset.\n"
+		return 1
+	fi
+
+	if [ -z "$mode" ]; then
+		install -d ${PKGDESTDIR}/${dir}
+	else
+		install -dm${mode} ${PKGDESTDIR}/${dir}
+	fi
+}
+
+_vcompletion() {
+	local file="$1" shell="$2" cmd="${3:-${pkgname}}"
+	local _bash_completion_dir=usr/share/bash-completion/completions/
+	local _fish_completion_dir=usr/share/fish/vendor_completions.d/
+	local _zsh_completion_dir=usr/share/zsh/site-functions/
+
+	if [ $# -lt 2 ]; then
+		msg_red "$pkgver: vcompletion: 2 arguments expected: <file> <shell>\n"
+		return 1
+	fi
+
+	if ! [ -f "$file" ]; then
+		msg_red "$pkgver: vcompletion: file $file doesn't exist\n"
+	fi
+
+	case "$shell" in
+		bash) vinstall "$file" 0644 $_bash_completion_dir "${cmd}" ;;
+		fish) vinstall "$file" 0644 $_fish_completion_dir "${cmd}.fish" ;;
+		zsh) vinstall "$file" 0644 $_zsh_completion_dir "_${cmd}" ;;
+		*)
+			msg_red "$pkgver: vcompletion: unknown shell ${shell}"
+			return 1
+			;;
+	esac
+}
diff --git a/common/environment/setup/misc.sh b/common/environment/setup/misc.sh
new file mode 100644
index 0000000..177b1e5
--- /dev/null
+++ b/common/environment/setup/misc.sh
@@ -0,0 +1,22 @@
+#
+# Common variables that can be used by xbps-src.
+#
+# SITE used for ditfiles mirrors. For use in $distfiles.
+set -a
+
+SOURCEFORGE_SITE="https://downloads.sourceforge.net/sourceforge"
+NONGNU_SITE="https://download.savannah.nongnu.org/releases"
+UBUNTU_SITE="http://archive.ubuntu.com/ubuntu/pool"
+XORG_SITE="https://www.x.org/releases/individual"
+DEBIAN_SITE="http://ftp.debian.org/debian/pool"
+GNOME_SITE="https://download.gnome.org/sources"
+KERNEL_SITE="https://www.kernel.org/pub/linux"
+CPAN_SITE="https://www.cpan.org/modules/by-module"
+PYPI_SITE="https://files.pythonhosted.org/packages/source"
+MOZILLA_SITE="https://ftp.mozilla.org/pub"
+GNU_SITE="https://ftp.gnu.org/gnu"
+FREEDESKTOP_SITE="https://freedesktop.org/software"
+KDE_SITE="https://download.kde.org/stable"
+VIDEOLAN_SITE="https://download.videolan.org/pub/videolan"
+
+set +a
diff --git a/common/environment/setup/options.sh b/common/environment/setup/options.sh
new file mode 100644
index 0000000..83e0f94
--- /dev/null
+++ b/common/environment/setup/options.sh
@@ -0,0 +1,38 @@
+# vim: set ts=4 sw=4 et:
+
+vopt_if() {
+    local name="build_option_$1" t="$2" f="$3"
+    if [ ${!name} ]; then
+        echo -n "$t"
+    else
+        echo -n "$f"
+    fi
+}
+
+vopt_with() {
+    local opt="$1" flag="${2:-$1}"
+    vopt_if "$opt" "--with-${flag}" "--without-${flag}"
+}
+
+vopt_enable() {
+    local opt="$1" flag="${2:-$1}"
+    if [ "$#" -gt "2" ]; then
+        msg_error "vopt_enable $opt: $(($# - 2)) excess parameter(s)\n"
+    fi
+    vopt_if "$1" "--enable-${flag}" "--disable-${flag}"
+}
+
+vopt_conflict() {
+    local opt1="$1" opt2="$2" n1="build_option_$1" n2="build_option_$2"
+    if [ "${!n1}" -a "${!n2}" ]; then
+        msg_error "options '${opt1}' and '${opt2}' conflict\n"
+    fi
+}
+
+vopt_bool() {
+    local opt="$1" prop="${2:-$1}"
+    if [ "$#" -gt "2" ]; then
+        msg_error "vopt_bool $opt: $(($# - 2)) excess parameter(s)\n"
+    fi
+    vopt_if "$1" "-D${prop}=true" "-D${prop}=false"
+}
diff --git a/common/environment/setup/python.sh b/common/environment/setup/python.sh
new file mode 100644
index 0000000..43ee4d0
--- /dev/null
+++ b/common/environment/setup/python.sh
@@ -0,0 +1,14 @@
+#
+# Useful variables for determining Python version and paths.
+#
+
+py2_ver="2.7"
+py2_lib="usr/lib/python${py2_ver}"
+py2_sitelib="${py2_lib}/site-packages"
+py2_inc="usr/include/python${py2_ver}"
+
+py3_ver="3.10"
+py3_abiver=""
+py3_lib="usr/lib/python${py3_ver}"
+py3_sitelib="${py3_lib}/site-packages"
+py3_inc="usr/include/python${py3_ver}${py3_abiver}"
diff --git a/common/environment/setup/replace-interpreter.sh b/common/environment/setup/replace-interpreter.sh
new file mode 100644
index 0000000..1660ac6
--- /dev/null
+++ b/common/environment/setup/replace-interpreter.sh
@@ -0,0 +1,41 @@
+# This helper replaces shebang paths pointing to the correct ones
+# as used by xbps. Multiple languages are supported:
+#
+#	- GNU Bash
+#	- Perl
+#	- Python
+#
+
+bash_regexp=".*sh"
+perl_regexp=".*perl[^[:space:]]*"
+python_regexp=".*python[^[:space:]]*"
+
+replace_interpreter() {
+	local lang="$1" file="$2" trsb orsb
+
+	[ -z $lang -o -z $file ] && return 1
+
+	case $lang in
+	bash)
+		orsb=$bash_regexp
+		trpath="/bin/bash"
+		;;
+	perl)
+		orsb=$perl_regexp
+		trpath="/usr/bin/perl"
+		;;
+	python)
+		orsb=$python_regexp
+		trpath="/usr/bin/python"
+		;;
+	*)
+		;;
+	esac
+
+	if [ -f $file ]; then
+		sed -i -e "1s|^#![[:space:]]*${orsb}|#!${trpath}|" $file
+		msg_normal "Transformed $lang script: ${file##$wrksrc}.\n"
+	else
+		msg_warn "Ignoring unexistent $lang script: ${file##$wrksrc}.\n"
+	fi
+}
diff --git a/common/environment/setup/sourcepkg.sh b/common/environment/setup/sourcepkg.sh
new file mode 100644
index 0000000..bc06f74
--- /dev/null
+++ b/common/environment/setup/sourcepkg.sh
@@ -0,0 +1,39 @@
+# This shell snippet unsets all variables/functions that can be used in
+# the package template (excluding subpackages).
+
+## VARIABLES
+unset -v pkgname version revision short_desc homepage license maintainer
+unset -v archs distfiles checksum build_style build_helper nocross broken
+unset -v configure_script configure_args wrksrc build_wrksrc create_wrksrc
+unset -v make_build_args make_check_args make_install_args
+unset -v make_build_target make_check_target make_install_target
+unset -v make_cmd meson_cmd gem_cmd fetch_cmd
+unset -v python_version stackage
+unset -v cmake_builddir meson_builddir
+unset -v meson_crossfile
+unset -v gemspec
+unset -v go_import_path go_package go_mod_mode
+unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env
+unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
+unset -v nopie build_options build_options_default bootstrap repository reverts
+unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH
+unset -v CC CXX CPP GCC LD AR AS RANLIB NM OBJDUMP OBJCOPY STRIP READELF PKG_CONFIG
+
+# hooks/do-extract/00-distfiles
+unset -v skip_extraction
+
+# hooks/post-install/03-strip-and-debug-pkgs
+unset -v nodebug
+
+# build-helpers/gir.sh for cross builds
+unset -v GIR_EXTRA_LIBS_PATH GIR_EXTRA_OPTIONS
+
+## FUNCTIONS
+unset -f pre_fetch do_fetch post_fetch
+unset -f pre_extract do_extract post_extract
+unset -f pre_patch do_patch post_patch
+unset -f pre_configure do_configure post_configure
+unset -f pre_build do_build post_build
+unset -f pre_check do_check post_check
+unset -f pre_install do_install post_install
+unset -f do_clean
diff --git a/common/environment/setup/vsed.sh b/common/environment/setup/vsed.sh
new file mode 100644
index 0000000..5b5bf42
--- /dev/null
+++ b/common/environment/setup/vsed.sh
@@ -0,0 +1,66 @@
+# Helper function for calling sed on files and checking if the
+# file is actually changed
+#
+# NOTE: this will not check if the input is valid, you can problably
+# make it execute arbirtrary commands via passing '; cmd' to a vsed
+# call.
+
+vsed() {
+	local files=() regexes=() OPTIND OPTSTRING="ie:" has_inline=
+
+	eval set -- "$(getopt -s bash "$OPTSTRING" "$@")";
+
+	while getopts "$OPTSTRING" opt; do
+		case $opt in
+			i) has_inline=1 ;;
+			e) regexes+=("$OPTARG") ;;
+			*) ;;
+		esac
+	done
+
+	if ! [ "$has_inline" ]; then
+		msg_red "$pkgver: vsed: you must specify -i.\n"
+		return 1
+	fi
+
+	shift $(($OPTIND - 1))
+
+	if [ ${#regexes[@]} -eq 0 ] && [ $# -ge 2 ]; then
+		regexes+=("$1")
+		shift
+	fi
+
+	if [ ${#regexes[@]} -eq 0 ]; then
+		msg_red "$pkgver: vsed: no regexes specified.\n"
+		return 1
+	fi
+
+	for i; do
+		files+=("$i")
+	done
+
+	if [ ${#files[@]} -eq 0 ]; then
+		msg_red "$pkgver: vsed: no files specified.\n"
+		return 1
+	fi
+
+	for f in "${files[@]}"; do
+		olddigest="$($XBPS_DIGEST_CMD "$f")"
+		olddigest="${olddigest%% *}"
+
+		for rx in "${regexes[@]}"; do
+			sed -i "$f" -e "$rx" || {
+				msg_red "$pkgver: vsed: sed call failed with regex \"$rx\" on file \"$f\"\n"
+				return 1
+			}
+
+			newdigest="$($XBPS_DIGEST_CMD "$f")"
+			newdigest="${newdigest%% *}"
+
+			if [ "$olddigest" = "$newdigest" ]; then
+				msg_warn "$pkgver: vsed: regex \"$rx\" didn't change file \"$f\"\n"
+			fi
+			olddigest="${newdigest}"
+		done
+	done
+}
diff --git a/common/hooks/README b/common/hooks/README
new file mode 100644
index 0000000..81acade
--- /dev/null
+++ b/common/hooks/README
@@ -0,0 +1,52 @@
+HOOKS
+=====
+
+This directory contains shell hooks that are processed after or before the
+specified phase. The shell hooks are simply shell snippets (must not be
+executable nor contain a shebang) that are processed lexically by xbps-src.
+Only files with the `.sh` extension are processed.
+
+A shell hook must provide a `hook()` function which is the entry point to
+execute it via xbps-src.
+
+The following directories are used to set the order in which the hooks
+should be processed by xbps-src:
+
+	* pre-fetch		(before running fetch phase)
+	* do-fetch		(running fetch phase)
+	* post-fetch		(after running fetch phase)
+
+	* pre-extract		(before running extract phase)
+	* do-extract		(running extract phase)
+	* post-extract		(after running extract phase)
+
+	* pre-configure		(before running configure phase)
+	* do-configure		(running configure phase)
+	* post-configure	(after running configure phase)
+
+	* pre-build		(before running build phase)
+	* do-build		(running build phase)
+	* post-build		(after running build phase)
+
+	* pre-install		(before running install phase)
+	* do-install		(running install phase)
+	* post-install		(after running install phase)
+
+	* pre-pkg		(before running pkg phase)
+	* do-pkg		(running pkg phase)
+	* post-pkg		(after running pkg phase)
+
+NOTES
+~~~~~
+* Symlinks can be created (relative) to make a hook available in multiple phases.
+
+* The phases do-fetch, do-extract, do-configure, do-build, and do-install can
+  be overwritten by the template file. That means if a template contains a
+  do_install function, the hooks defined for do-install won't be executed.
+  Note that this is only true for the do-* hooks.
+
+* the pre_* function of the template will be run *after* the corresponding
+  pre-* hooks.
+
+* the post_* function of the template will be run *before* the corresponding
+  post-* hooks.
diff --git a/common/hooks/do-build/.empty b/common/hooks/do-build/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-check/.empty b/common/hooks/do-check/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-configure/.empty b/common/hooks/do-configure/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-extract/.empty b/common/hooks/do-extract/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-extract/00-distfiles.sh b/common/hooks/do-extract/00-distfiles.sh
new file mode 100644
index 0000000..922f702
--- /dev/null
+++ b/common/hooks/do-extract/00-distfiles.sh
@@ -0,0 +1,172 @@
+# This hook extracts $distfiles into $XBPS_BUILDDIR if $distfiles and $checksum
+# variables are set.
+
+hook() {
+	local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version"
+	local f j curfile found extractdir
+	local TAR_CMD
+
+	if [ -z "$distfiles" -a -z "$checksum" ]; then
+		mkdir -p "$wrksrc"
+		return 0
+	fi
+
+	# Check that distfiles are there before anything else.
+	for f in ${distfiles}; do
+		curfile="${f#*>}"
+		curfile="${curfile##*/}"
+		if [ ! -f $srcdir/$curfile ]; then
+			msg_error "$pkgver: cannot find ${curfile}, use 'xbps-src fetch' first.\n"
+		fi
+	done
+
+	if [ -n "$create_wrksrc" ]; then
+		mkdir -p "${wrksrc}" || msg_error "$pkgver: failed to create wrksrc.\n"
+	fi
+
+	# Disable trap on ERR; the code is smart enough to report errors and abort.
+	trap - ERR
+
+	TAR_CMD="$(command -v bsdtar)"
+	[ -z "$TAR_CMD" ] && TAR_CMD="$(command -v tar)"
+	[ -z "$TAR_CMD" ] && msg_error "xbps-src: no suitable tar cmd (bsdtar, tar)\n"
+
+	msg_normal "$pkgver: extracting distfile(s), please wait...\n"
+
+	for f in ${distfiles}; do
+		curfile="${f#*>}"
+		curfile="${curfile##*/}"
+		for j in ${skip_extraction}; do
+			if [ "$curfile" = "$j" ]; then
+				found=1
+				break
+			fi
+		done
+		if [ -n "$found" ]; then
+			unset found
+			continue
+		fi
+
+		case $curfile in
+		*.tar.lzma)   cursufx="txz";;
+		*.tar.lz)     cursufx="tlz";;
+		*.tlz)        cursufx="tlz";;
+		*.tar.xz)     cursufx="txz";;
+		*.txz)        cursufx="txz";;
+		*.tar.bz2)    cursufx="tbz";;
+		*.tbz)        cursufx="tbz";;
+		*.tar.gz)     cursufx="tgz";;
+		*.tgz)        cursufx="tgz";;
+		*.gz)         cursufx="gz";;
+		*.xz)         cursufx="xz";;
+		*.bz2)        cursufx="bz2";;
+		*.tar)        cursufx="tar";;
+		*.zip)        cursufx="zip";;
+		*.rpm)        cursufx="rpm";;
+		*.patch)      cursufx="txt";;
+		*.diff)       cursufx="txt";;
+		*.txt)        cursufx="txt";;
+		*.sh)         cursufx="txt";;
+		*.7z)	      cursufx="7z";;
+		*.gem)	      cursufx="gem";;
+		*.crate)      cursufx="crate";;
+		*) msg_error "$pkgver: unknown distfile suffix for $curfile.\n";;
+		esac
+
+		if [ -n "$create_wrksrc" ]; then
+			extractdir="$wrksrc"
+		else
+			extractdir="$XBPS_BUILDDIR"
+		fi
+
+		case ${cursufx} in
+		tar|txz|tbz|tlz|tgz|crate)
+			$TAR_CMD -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C "$extractdir"
+			if [ $? -ne 0 ]; then
+				msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
+			fi
+			;;
+		gz|bz2|xz)
+			cp -f $srcdir/$curfile "$extractdir"
+			cd "$extractdir"
+			case ${cursufx} in
+			gz)
+				 gunzip -f $curfile
+				;;
+			bz2)
+				bunzip2 -f $curfile
+				;;
+			*)
+				unxz -f $curfile
+				;;
+			esac
+			;;
+		zip)
+			if command -v unzip &>/dev/null; then
+				unzip -o -q $srcdir/$curfile -d "$extractdir"
+				if [ $? -ne 0 ]; then
+					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
+				fi
+			elif command -v bsdtar &>/dev/null; then
+				bsdtar -xf $srcdir/$curfile -C "$extractdir"
+				if [ $? -ne 0 ]; then
+					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
+				fi
+			else
+				msg_error "$pkgver: cannot find unzip or bsdtar bin for extraction.\n"
+			fi
+			;;
+		rpm)
+			if command -v rpmextract &>/dev/null; then
+				cd "$extractdir"
+				rpmextract $srcdir/$curfile
+				if [ $? -ne 0 ]; then
+					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
+				fi
+			else
+				msg_error "$pkgver: cannot find rpmextract for extraction.\n"
+			fi
+			;;
+		txt)
+			if [ "$create_wrksrc" ]; then
+				cp -f $srcdir/$curfile "$extractdir"
+			else
+				msg_error "$pkgname: ${curfile##*.} files can only be extracted when create_wrksrc is set\n"
+			fi
+			;;
+		7z)
+			if command -v 7z &>/dev/null; then
+				7z x $srcdir/$curfile -o"$extractdir"
+				if [ $? -ne 0 ]; then
+					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
+				fi
+			elif command -v bsdtar &>/dev/null; then
+				bsdtar -xf $srcdir/$curfile -C "$extractdir"
+				if [ $? -ne 0 ]; then
+					msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
+				fi
+			else
+				msg_error "$pkgver: cannot find 7z or bsdtar bin for extraction.\n"
+			fi
+			;;
+		gem)
+			case "$TAR_CMD" in
+				*bsdtar)
+					$TAR_CMD -xOf $srcdir/$curfile data.tar.gz | \
+						$TAR_CMD -xz -C "$extractdir" -s ",^,${wrksrc##*/}/," -f -
+					;;
+				*)
+					$TAR_CMD -xOf $srcdir/$curfile data.tar.gz | \
+						$TAR_CMD -xz -C "$extractdir" --transform="s,^,${wrksrc##*/}/,"
+					;;
+			esac
+			if [ $? -ne 0 ]; then
+				msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
+			fi
+			;;
+		*)
+			msg_error "$pkgver: cannot guess $curfile extract suffix. ($cursufx)\n"
+			;;
+		esac
+	done
+}
diff --git a/common/hooks/do-fetch/.empty b/common/hooks/do-fetch/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-fetch/00-distfiles.sh b/common/hooks/do-fetch/00-distfiles.sh
new file mode 100644
index 0000000..e2bf543
--- /dev/null
+++ b/common/hooks/do-fetch/00-distfiles.sh
@@ -0,0 +1,298 @@
+# This hook downloads the distfiles specified in a template by
+# the $distfiles variable and then verifies its sha256 checksum comparing
+# its value with the one stored in the $checksum variable.
+
+# Get the checksum for $curfile at index $dfcount
+get_cksum() {
+	local curfile="$1" dfcount="$2" ckcount cksum i
+
+	ckcount=0
+	cksum=0
+	for i in ${checksum}; do
+		if [ $dfcount -eq $ckcount -a -n "$i" ]; then
+			cksum=$i
+		fi
+		ckcount=$((ckcount + 1))
+	done
+	if [ -z "$cksum" ]; then
+		msg_error "$pkgver: cannot find checksum for $curfile.\n"
+	fi
+	echo "$cksum"
+}
+
+# Return the checksum of the contents of a tarball
+contents_cksum() {
+	local curfile="$1" cursufx cksum
+
+	case $curfile in
+	*.tar.lzma)   cursufx="txz";;
+	*.tar.lz)     cursufx="tlz";;
+	*.tlz)        cursufx="tlz";;
+	*.tar.xz)     cursufx="txz";;
+	*.txz)        cursufx="txz";;
+	*.tar.bz2)    cursufx="tbz";;
+	*.tbz)        cursufx="tbz";;
+	*.tar.gz)     cursufx="tgz";;
+	*.tgz)        cursufx="tgz";;
+	*.gz)         cursufx="gz";;
+	*.bz2)        cursufx="bz2";;
+	*.tar)        cursufx="tar";;
+	*.zip)        cursufx="zip";;
+	*.rpm)        cursufx="rpm";;
+	*.patch)      cursufx="txt";;
+	*.diff)       cursufx="txt";;
+	*.txt)        cursufx="txt";;
+	*.7z)	      cursufx="7z";;
+	*.gem)	      cursufx="gem";;
+	*.crate)      cursufx="crate";;
+	*) msg_error "$pkgver: unknown distfile suffix for $curfile.\n";;
+	esac
+
+	case ${cursufx} in
+	tar|txz|tbz|tlz|tgz|crate)
+		cksum=$($XBPS_DIGEST_CMD <($TAR_CMD -x -O -f "$curfile"))
+		if [ $? -ne 0 ]; then
+			msg_error "$pkgver: extracting $curfile to pipe.\n"
+		fi
+		;;
+	gz)
+		cksum=$($XBPS_DIGEST_CMD <(gunzip -c "$curfile"))
+		;;
+	bz2)
+		cksum=$($XBPS_DIGEST_CMD <(bunzip2 -c "$curfile"))
+		;;
+	zip)
+		if command -v unzip &>/dev/null; then
+			cksum=$($XBPS_DIGEST_CMD <(unzip -p "$curfile"))
+			if [ $? -ne 0 ]; then
+				msg_error "$pkgver: extracting $curfile to pipe.\n"
+			fi
+		else
+			msg_error "$pkgver: cannot find unzip bin for extraction.\n"
+		fi
+		;;
+	rpm)
+		if command -v rpmextract &>/dev/null; then
+			cksum=$($XBPS_DIGEST_CMD <(rpm2cpio "$curfile" | $TAR_CMD -x -f -))
+			if [ $? -ne 0 ]; then
+				msg_error "$pkgver: extracting $curfile to pipe.\n"
+			fi
+		else
+			msg_error "$pkgver: cannot find rpmextract for extraction.\n"
+		fi
+		;;
+	txt)
+		cksum=$($XBPS_DIGEST_CMD "$curfile")
+		;;
+	7z)
+		if command -v 7z &>/dev/null; then
+			cksum=$($XBPS_DIGEST_CMD <(7z x -o "$curfile"))
+			if [ $? -ne 0 ]; then
+				msg_error "$pkgver: extracting $curfile to pipe.\n"
+			fi
+		else
+			msg_error "$pkgver: cannot find 7z bin for extraction.\n"
+		fi
+		;;
+	gem)
+		cksum=$($XBPS_DIGEST_CMD <($TAR_CMD -x -O -f "$curfile" data.tar.gz | $TAR_CMD -xzO ))
+		;;
+	*)
+		msg_error "$pkgver: cannot guess $curfile extract suffix. ($cursufx)\n"
+		;;
+	esac
+
+	if [ -z "$cksum" ]; then
+		msg_error "$pkgver: cannot find contents checksum for $curfile.\n"
+	fi
+	echo "$cksum"
+}
+
+# Verify the checksum for $curfile stored at $distfile and index $dfcount
+verify_cksum() {
+	local curfile="$1" distfile="$2" dfcount="$3" filesum cksum
+
+	cksum=$(get_cksum $curfile $dfcount)
+
+	# If the checksum starts with an commercial at (@) it is the contents checksum
+	if [ "${cksum:0:1}" = "@" ]; then
+		cksum=${cksum:1}
+		msg_normal "$pkgver: verifying contents checksum for distfile '$curfile'... "
+		filesum=$(contents_cksum "$curfile")
+		if [ "${cksum}" != "$filesum" ]; then
+			echo
+			msg_red "SHA256 mismatch for '$curfile:'\n@$filesum\n"
+			errors=$((errors + 1))
+		else
+			msg_normal_append "OK.\n"
+		fi
+	else
+		msg_normal "$pkgver: verifying checksum for distfile '$curfile'... "
+		filesum=$(${XBPS_DIGEST_CMD} "$distfile")
+		if [ "$cksum" != "$filesum" ]; then
+			echo
+			msg_red "SHA256 mismatch for '$curfile:'\n$filesum\n"
+			errors=$((errors + 1))
+		else
+			if [ ! -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" ]; then
+				mkdir -p "$XBPS_SRCDISTDIR/by_sha256"
+				ln -f "$distfile" "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}"
+			fi
+			msg_normal_append "OK.\n"
+		fi
+	fi
+}
+
+# Link an existing cksum $distfile for $curfile at index $dfcount
+link_cksum() {
+	local curfile="$1" distfile="$2" dfcount="$3" filesum cksum
+
+	cksum=$(get_cksum $curfile $dfcount)
+
+	if [ -n "$cksum" -a -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" ]; then
+		ln -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" "$distfile"
+		msg_normal "$pkgver: using known distfile $curfile.\n"
+	fi
+}
+
+try_mirrors() {
+	local curfile="$1" distfile="$2" dfcount="$3" subdir="$4" f="$5"
+	local filesum cksum basefile mirror path scheme
+	[ -z "$XBPS_DISTFILES_MIRROR" ] && return
+	basefile="${f##*/}"
+	cksum=$(get_cksum $curfile $dfcount)
+	for mirror in $XBPS_DISTFILES_MIRROR; do
+		scheme="file"
+		if [[ $mirror == *://* ]]; then
+			scheme="${mirror%%:/*}"
+			path="${mirror#${scheme}://}"
+		else
+			path="$mirror"
+		fi
+		if [ "$scheme" == "file" ]; then
+			# Skip file:// mirror locations (/some/where or file:///some/where)
+			# where the specified directory does not exist
+			if [ ! -d "$path" ]; then
+				msg_warn "$pkgver: mount point $path does not exist...\n"
+				continue
+			fi
+		fi
+		if [[ "$mirror" == *voidlinux* ]]; then
+			# For distfiles.voidlinux.* append the subdirectory
+			mirror="$mirror/$subdir"
+		fi
+		msg_normal "$pkgver: fetching distfile '$curfile' from '$mirror'...\n"
+		$fetch_cmd "$mirror/$curfile"
+		# If basefile was not found, but a curfile file may exist, try to fetch it
+		if [ ! -f "$distfile" -a "$basefile" != "$curfile" ]; then
+			$fetch_cmd "$mirror/$basefile"
+		fi
+		[ ! -f "$distfile" ] && continue
+		flock -n ${distfile}.part rm -f ${distfile}.part
+		filesum=$(${XBPS_DIGEST_CMD} "$distfile")
+		[ "$cksum" == "$filesum" ] && break
+		msg_normal "$pkgver: checksum failed - removing '$curfile'...\n"
+		rm -f ${distfile}
+	done
+}
+
+hook() {
+	local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version"
+	local dfcount=0 dfgood=0 errors=0 max_retries
+
+	if [ ! -d "$srcdir" ]; then
+		mkdir -p -m775 "$srcdir"
+		chgrp $(id -g) "$srcdir"
+	fi
+
+	cd $srcdir || msg_error "$pkgver: cannot change dir to $srcdir!\n"
+
+	# Disable trap on ERR; the code is smart enough to report errors and abort.
+	trap - ERR
+
+	# Detect bsdtar and GNU tar (in that order of preference)
+	TAR_CMD="$(command -v bsdtar)"
+	if [ -z "$TAR_CMD" ]; then
+		TAR_CMD="$(command -v tar)"
+	fi
+
+	# Detect distfiles with obsolete checksum and purge them from the cache
+	for f in ${distfiles}; do
+		curfile="${f#*>}"
+		curfile="${curfile##*/}"
+		distfile="$srcdir/$curfile"
+
+		if [ -f "$distfile" ]; then
+			cksum=$(get_cksum $curfile $dfcount)
+			if [ "${cksum:0:1}" = "@" ]; then
+				cksum=${cksum:1}
+				filesum=$(contents_cksum "$distfile")
+			else
+				filesum=$(${XBPS_DIGEST_CMD} "$distfile")
+			fi
+			if [ "$cksum" = "$filesum" ]; then
+				dfgood=$((dfgood + 1))
+			else
+				inode=$(stat "$distfile" --printf "%i")
+				msg_warn "$pkgver: wrong checksum found for ${curfile} - purging\n"
+				find ${XBPS_SRCDISTDIR} -inum ${inode} -delete -print
+			fi
+		fi
+		dfcount=$((dfcount + 1))
+	done
+
+	# We're done, if all distfiles were found and had good checksums
+	[ $dfcount -eq $dfgood ] && return
+
+	# Download missing distfiles and verify their checksums
+	dfcount=0
+	for f in ${distfiles}; do
+		curfile="${f#*>}"
+		curfile="${curfile##*/}"
+		distfile="$srcdir/$curfile"
+
+		# If file lock cannot be acquired wait until it's available.
+		while true; do
+			flock -w 1 ${distfile}.part true
+			[ $? -eq 0 ] && break
+			msg_warn "$pkgver: ${curfile} is already being downloaded, waiting for 1s ...\n"
+		done
+		# If distfile does not exist, try to link to it.
+		if [ ! -f "$distfile" ]; then
+			link_cksum $curfile $distfile $dfcount
+		fi
+		# If distfile does not exist, download it from a mirror location.
+		if [ ! -f "$distfile" ]; then
+			try_mirrors $curfile $distfile $dfcount $pkgname-$version $f
+		fi
+		# If distfile does not exist, download it from the original location.
+		if [[ "$FTP_RETRIES" && "${f}" =~ ^ftp:// ]]; then
+			max_retries="$FTP_RETRIES"
+		else
+			max_retries=1
+		fi
+		for retry in $(seq 1 1 $max_retries); do
+			if [ ! -f "$distfile" ]; then
+				if [ "$retry" == 1 ]; then
+					msg_normal "$pkgver: fetching distfile '$curfile'...\n"
+				else
+					msg_normal "$pkgver: fetch attempt $retry of $max_retries...\n"
+				fi
+				flock "${distfile}.part" $fetch_cmd "$f"
+			fi
+		done
+		if [ ! -f "$distfile" ]; then
+			msg_error "$pkgver: failed to fetch $curfile.\n"
+		fi
+		# distfile downloaded, verify sha256 hash.
+		flock -n ${distfile}.part rm -f ${distfile}.part
+		verify_cksum $curfile $distfile $dfcount
+		dfcount=$((dfcount + 1))
+	done
+
+	unset TAR_CMD
+
+	if [ $errors -gt 0 ]; then
+		msg_error "$pkgver: couldn't verify distfiles, exiting...\n"
+	fi
+}
diff --git a/common/hooks/do-install/.empty b/common/hooks/do-install/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-patch/.empty b/common/hooks/do-patch/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-patch/00-patches.sh b/common/hooks/do-patch/00-patches.sh
new file mode 100644
index 0000000..9f7e21f
--- /dev/null
+++ b/common/hooks/do-patch/00-patches.sh
@@ -0,0 +1,54 @@
+# This hook applies patches from "patches" directory.
+
+_process_patch() {
+	local _args= _patch= i=$1
+
+	_args="-Np1"
+	_patch=${i##*/}
+
+	if [ -f $PATCHESDIR/${_patch}.args ]; then
+		_args=$(<$PATCHESDIR/${_patch}.args)
+	elif [ -n "$patch_args" ]; then
+		_args=$patch_args
+	fi
+	cp -f $i "$wrksrc"
+
+	# Try to guess if its a compressed patch.
+	if [[ $f =~ .gz$ ]]; then
+		gunzip "$wrksrc/${_patch}"
+		_patch=${_patch%%.gz}
+	elif [[ $f =~ .bz2$ ]]; then
+		bunzip2 "$wrksrc/${_patch}"
+		_patch=${_patch%%.bz2}
+	elif [[ $f =~ .diff$ ]]; then
+		:
+	elif [[ $f =~ .patch$ ]]; then
+		:
+	else
+		msg_warn "$pkgver: unknown patch type: $i.\n"
+		return 0
+	fi
+
+	cd "$wrksrc"
+	msg_normal "$pkgver: patching: ${_patch}.\n"
+	patch -s ${_args} -i ${_patch} 2>/dev/null
+}
+
+hook() {
+	if [ ! -d "$wrksrc" ]; then
+		return 0
+	fi
+	if [ -r $PATCHESDIR/series ]; then
+		while read -r f; do
+			_process_patch "$PATCHESDIR/$f"
+		done < $PATCHESDIR/series
+	else
+		for f in $PATCHESDIR/*; do
+			[ ! -f $f ] && continue
+			if [[ $f =~ ^.*.args$ ]]; then
+				continue
+			fi
+			_process_patch $f
+		done
+	fi
+}
diff --git a/common/hooks/do-pkg/.empty b/common/hooks/do-pkg/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/do-pkg/00-gen-pkg.sh b/common/hooks/do-pkg/00-gen-pkg.sh
new file mode 100644
index 0000000..e61f053
--- /dev/null
+++ b/common/hooks/do-pkg/00-gen-pkg.sh
@@ -0,0 +1,166 @@
+# This hook generates a XBPS binary package from an installed package in destdir.
+
+genpkg() {
+	local pkgdir="$1" arch="$2" desc="$3" pkgver="$4" binpkg="$5"
+	local _preserve _deps _shprovides _shrequires _gitrevs _provides _conflicts
+	local _replaces _reverts _mutable_files _conf_files f
+	local _pkglock="$pkgdir/${binpkg}.lock"
+
+	if [ ! -d "${PKGDESTDIR}" ]; then
+		msg_warn "$pkgver: cannot find pkg destdir... skipping!\n"
+		return 0
+	fi
+
+	[ ! -d $pkgdir ] && mkdir -p $pkgdir
+
+	while [ -f "$_pkglock" ]; do
+		msg_warn "${pkgver}: binpkg is being created, waiting for 1s...\n"
+		sleep 1
+	done
+
+	# Don't overwrite existing binpkgs by default, skip them.
+	if [ -e $pkgdir/$binpkg ] && [ "$XBPS_PRESERVE_PKGS" ] && [ -z "$XBPS_BUILD_FORCEMODE" ]; then
+		msg_normal "${pkgver}: skipping existing $binpkg pkg...\n"
+		return 0
+	fi
+
+	# Lock binpkg
+	trap "rm -f '$_pkglock'" ERR EXIT
+	touch -f "$_pkglock"
+
+	if [ ! -d $pkgdir ]; then
+		mkdir -p $pkgdir
+	fi
+	cd $pkgdir
+
+	_preserve=${preserve:+-p}
+	if [ -s ${PKGDESTDIR}/rdeps ]; then
+		_deps="$(<${PKGDESTDIR}/rdeps)"
+	fi
+	if [ -s ${PKGDESTDIR}/shlib-provides ]; then
+		_shprovides="$(<${PKGDESTDIR}/shlib-provides)"
+	fi
+	if [ -s ${PKGDESTDIR}/shlib-requires ]; then
+		_shrequires="$(<${PKGDESTDIR}/shlib-requires)"
+	fi
+	if [ -s ${XBPS_STATEDIR}/gitrev ]; then
+		_gitrevs="$(<${XBPS_STATEDIR}/gitrev)"
+	fi
+
+	# Stripping whitespaces
+	local _provides="$(echo $provides)"
+	local _conflicts="$(echo $conflicts)"
+	local _replaces="$(echo $replaces)"
+	local _reverts="$(echo $reverts)"
+	local _mutable_files="$(echo $mutable_files)"
+	local _conf_files="$(expand_destdir "$conf_files")"
+	local _alternatives="$(echo $alternatives)"
+	local _tags="$(echo $tags)"
+	local _changelog="$(echo $changelog)"
+
+	msg_normal "Creating $binpkg for repository $pkgdir ...\n"
+
+	#
+	# Create the XBPS binary package.
+	#
+	xbps-create \
+		${_provides:+--provides "${_provides}"} \
+		${_conflicts:+--conflicts "${_conflicts}"} \
+		${_replaces:+--replaces "${_replaces}"} \
+		${_reverts:+--reverts "${_reverts}"} \
+		${_mutable_files:+--mutable-files "${_mutable_files}"} \
+		${_deps:+--dependencies "${_deps}"} \
+		${_conf_files:+--config-files "${_conf_files}"} \
+		${PKG_BUILD_OPTIONS:+--build-options "${PKG_BUILD_OPTIONS}"} \
+		${_gitrevs:+--source-revisions "${_gitrevs}"} \
+		${_shprovides:+--shlib-provides "${_shprovides}"} \
+		${_shrequires:+--shlib-requires "${_shrequires}"} \
+		${_alternatives:+--alternatives "${_alternatives}"} \
+		${_preserve:+--preserve} \
+		${tags:+--tags "${tags}"} \
+		${_changelog:+--changelog "${_changelog}"} \
+		${XBPS_PKG_COMPTYPE:+--compression $XBPS_PKG_COMPTYPE} \
+		--architecture ${arch} \
+		--homepage "${homepage}" \
+		--license "${license}" \
+		--maintainer "${maintainer}" \
+		--desc "${desc}" \
+		--pkgver "${pkgver}" \
+		--quiet \
+		${PKGDESTDIR}
+	rval=$?
+
+	# Unlock binpkg
+	rm -f "$_pkglock"
+	trap - ERR EXIT
+
+	if [ $rval -ne 0 ]; then
+		rm -f $pkgdir/$binpkg
+		msg_error "Failed to created binary package: $binpkg!\n"
+	fi
+}
+
+hook() {
+	local arch= binpkg= repo= _pkgver= _desc= _pkgn= _pkgv= _provides= \
+		_replaces= _reverts= f= found_dbg_subpkg=
+
+	arch=$XBPS_TARGET_MACHINE
+	binpkg=${pkgver}.${arch}.xbps
+
+	if [ -n "$repository" ]; then
+		repo=$XBPS_REPOSITORY/$repository
+	else
+		repo=$XBPS_REPOSITORY
+	fi
+
+	genpkg ${repo} ${arch} "${short_desc}" ${pkgver} ${binpkg}
+
+	for f in ${provides}; do
+		_pkgn="$($XBPS_UHELPER_CMD getpkgname $f)"
+		_pkgv="$($XBPS_UHELPER_CMD getpkgversion $f)"
+		_provides+=" ${_pkgn}-32bit-${_pkgv}"
+	done
+	for f in ${replaces}; do
+		_pkgn="$($XBPS_UHELPER_CMD getpkgdepname $f)"
+		_pkgv="$($XBPS_UHELPER_CMD getpkgdepversion $f)"
+		_replaces+=" ${_pkgn}-32bit${_pkgv}"
+	done
+
+	# Generate -dbg pkg.
+	for f in ${subpackages}; do
+		# If there's an explicit subpkg named ${pkgname}-dbg, don't generate
+		# it automagically (required by linuxX.X).
+		if [ "${sourcepkg}-dbg" = "$f" ]; then
+			found_dbg_subpkg=1
+			break
+		fi
+	done
+	if [ -z "$found_dbg_subpkg" -a -d "${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${pkgname}-dbg-${version}" ]; then
+		source ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
+		repo=$XBPS_REPOSITORY/debug
+		_pkgver=${pkgname}-dbg-${version}_${revision}
+		_desc="${short_desc} (debug files)"
+		binpkg=${_pkgver}.${arch}.xbps
+		PKGDESTDIR="${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${pkgname}-dbg-${version}"
+		genpkg ${repo} ${arch} "${_desc}" ${_pkgver} ${binpkg}
+	fi
+	# Generate 32bit pkg.
+	if [ "$XBPS_TARGET_MACHINE" != "i686" ]; then
+		return
+	fi
+	if [ -d "${XBPS_DESTDIR}/${pkgname}-32bit-${version}" ]; then
+		source ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
+		if [ -n "$repository" ]; then
+			repo=$XBPS_REPOSITORY/multilib/$repository
+		else
+			repo=$XBPS_REPOSITORY/multilib
+		fi
+		_pkgver=${pkgname}-32bit-${version}_${revision}
+		_desc="${short_desc} (32bit)"
+		binpkg=${_pkgver}.x86_64.xbps
+		PKGDESTDIR="${XBPS_DESTDIR}/${pkgname}-32bit-${version}"
+		[ -n "${_provides}" ] && export provides="${_provides}"
+		[ -n "${_replaces}" ] && export replaces="${_replaces}"
+		genpkg ${repo} x86_64 "${_desc}" ${_pkgver} ${binpkg}
+	fi
+}
diff --git a/common/hooks/post-build/.empty b/common/hooks/post-build/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-check/.empty b/common/hooks/post-check/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-configure/.empty b/common/hooks/post-configure/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-extract/.empty b/common/hooks/post-extract/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-fetch/.empty b/common/hooks/post-fetch/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-install/.empty b/common/hooks/post-install/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-install/00-compress-info-files.sh b/common/hooks/post-install/00-compress-info-files.sh
new file mode 100644
index 0000000..ee394a8
--- /dev/null
+++ b/common/hooks/post-install/00-compress-info-files.sh
@@ -0,0 +1,43 @@
+# This hook compresses info(1) files.
+
+hook() {
+	local f j dirat lnkat newlnk
+	local fpattern="s|${PKGDESTDIR}||g;s|^\./$||g;/^$/d"
+	#
+	# Find out if this package contains info files and compress
+	# all them with gzip.
+	#
+	if [ ! -f ${PKGDESTDIR}/usr/share/info/dir ]; then
+		return 0
+	fi
+	# Always remove this file if curpkg is not texinfo.
+	if [ "$pkgname" != "texinfo" ]; then
+		rm -f ${PKGDESTDIR}/usr/share/info/dir
+	fi
+
+	find ${PKGDESTDIR}/usr/share/info -type f -follow | while read f
+	do
+		j=$(echo "$f"|sed -e "$fpattern")
+		[ "$j" = "" ] && continue
+		[ "$j" = "/usr/share/info/dir" ] && continue
+		# Ignore compressed files.
+		if  [[ "$j" =~ .*.gz$ ]]; then
+			continue
+		fi
+		# Ignore non info files.
+		if ! [[ "$j" =~ .*.info$ ]] && ! [[ "$j" =~ .*.info-[0-9]*$ ]]; then
+			continue
+		fi
+		if [ -h ${PKGDESTDIR}/"$j" ]; then
+			dirat="${j%/*}/"
+			lnkat=$(readlink ${PKGDESTDIR}/"$j")
+			newlnk="${j##*/}"
+			rm -f ${PKGDESTDIR}/"$j"
+			cd ${PKGDESTDIR}/"$dirat"
+			ln -s "${lnkat}".gz "${newlnk}".gz
+			continue
+		fi
+		echo "   Compressing info file: $j..."
+		gzip -nfq9 ${PKGDESTDIR}/"$j"
+	done
+}
diff --git a/common/hooks/post-install/00-fixup-gir-path.sh b/common/hooks/post-install/00-fixup-gir-path.sh
new file mode 100644
index 0000000..6fdb111
--- /dev/null
+++ b/common/hooks/post-install/00-fixup-gir-path.sh
@@ -0,0 +1,11 @@
+# This hook removes the symlink necessary to fix the wrong install path of
+# 'gir' files when cross building packages (see pre-install hook). It's a
+# workaround and not a proper fix. Remove it once the root cause of the problem
+# is fixed.
+
+# Has to be a low number so it runs before remove-empty-dirs
+
+hook() {
+	[ -z "$CROSS_BUILD" ] && return
+	rm -f "${PKGDESTDIR}/usr/${XBPS_CROSS_TRIPLET}/usr"
+}
diff --git a/common/hooks/post-install/00-libdir.sh b/common/hooks/post-install/00-libdir.sh
new file mode 100644
index 0000000..21c7e35
--- /dev/null
+++ b/common/hooks/post-install/00-libdir.sh
@@ -0,0 +1,7 @@
+# This hook removes the wordsize specific libdir symlink.
+
+hook() {
+	if [ "${pkgname}" != "base-files" ]; then
+		rm -f ${PKGDESTDIR}/usr/lib${XBPS_TARGET_WORDSIZE}
+	fi
+}
diff --git a/common/hooks/post-install/00-uncompress-manpages.sh b/common/hooks/post-install/00-uncompress-manpages.sh
new file mode 100644
index 0000000..c7a4e47
--- /dev/null
+++ b/common/hooks/post-install/00-uncompress-manpages.sh
@@ -0,0 +1,21 @@
+# This hook uncompresses man(1) files.
+
+hook() {
+	local f lnkat mandir=${PKGDESTDIR}/usr/share/man
+
+	if [ ! -d $mandir ] ||
+	   [ -z "$(find $mandir -regex '.*\.\(gz\|bz2\)' -print -quit)" ]; then
+		return 0
+	fi
+
+	# rewrite symlinks
+	find $mandir -type l -regex '.*\.\(gz\|bz2\)' | while read f
+	do
+		lnkat=$(readlink "$f")
+		ln -s ${lnkat%.*} ${f%.*}
+		rm $f
+	done
+
+	find $mandir -type f -name '*.gz' -exec gunzip -v -f {} + &>/dev/null
+	find $mandir -type f -name '*.bz2' -exec bunzip2 -v -f {} + &>/dev/null
+}
diff --git a/common/hooks/post-install/01-remove-misc.sh b/common/hooks/post-install/01-remove-misc.sh
new file mode 100644
index 0000000..06e8c19
--- /dev/null
+++ b/common/hooks/post-install/01-remove-misc.sh
@@ -0,0 +1,11 @@
+# hook to remove misc files.
+hook() {
+	case "$XBPS_TARGET_MACHINE" in
+		*-musl) ;;
+		*) return 0;;
+	esac
+	# Remove charset.alias on musl
+	if [ -f $PKGDESTDIR/usr/lib/charset.alias ]; then
+		rm -f $PKGDESTDIR/usr/lib/charset.alias
+	fi
+}
diff --git a/common/hooks/post-install/02-remove-libtool-archives.sh b/common/hooks/post-install/02-remove-libtool-archives.sh
new file mode 100644
index 0000000..dd4afe8
--- /dev/null
+++ b/common/hooks/post-install/02-remove-libtool-archives.sh
@@ -0,0 +1,7 @@
+# This hook removes libtool archives (.la) unless $keep_libtool_archives is set.
+
+hook() {
+	if [ -z "$keep_libtool_archives" -a -d "${PKGDESTDIR}" ]; then
+		find ${PKGDESTDIR} -name \*.la -delete
+	fi
+}
diff --git a/common/hooks/post-install/02-remove-perl-files.sh b/common/hooks/post-install/02-remove-perl-files.sh
new file mode 100644
index 0000000..e8dad01
--- /dev/null
+++ b/common/hooks/post-install/02-remove-perl-files.sh
@@ -0,0 +1,8 @@
+# This hook removes perl pod/.packlist files.
+
+hook() {
+	if [ "$pkgname" != "perl" -a -d "${PKGDESTDIR}" ]; then
+		find ${PKGDESTDIR} -type f -name perllocal.pod -delete
+		find ${PKGDESTDIR} -type f -name .packlist -delete
+	fi
+}
diff --git a/common/hooks/post-install/02-remove-python-bytecode-files.sh b/common/hooks/post-install/02-remove-python-bytecode-files.sh
new file mode 100644
index 0000000..3fa8bdc
--- /dev/null
+++ b/common/hooks/post-install/02-remove-python-bytecode-files.sh
@@ -0,0 +1,7 @@
+# This hook removes python bytecode files (.py[co]).
+
+hook() {
+    if [ -d "${PKGDESTDIR}" ]; then
+        find ${PKGDESTDIR} -type f -name '*.py[co]' -delete
+    fi
+}
diff --git a/common/hooks/post-install/03-remove-empty-dirs.sh b/common/hooks/post-install/03-remove-empty-dirs.sh
new file mode 100644
index 0000000..c54f458
--- /dev/null
+++ b/common/hooks/post-install/03-remove-empty-dirs.sh
@@ -0,0 +1,10 @@
+# This hooks removes empty dirs and warns about them.
+
+hook() {
+    if [ -d "${PKGDESTDIR}" ]; then
+        find "${PKGDESTDIR}" -mindepth 1 -type d -empty -print -delete|sort -r|while read f; do
+            _dir="${f##${PKGDESTDIR}}"
+            msg_warn "$pkgver: removed empty dir: ${_dir}\n"
+        done
+    fi
+}
diff --git a/common/hooks/post-install/04-create-xbps-metadata-scripts.sh b/common/hooks/post-install/04-create-xbps-metadata-scripts.sh
new file mode 100644
index 0000000..69e318a
--- /dev/null
+++ b/common/hooks/post-install/04-create-xbps-metadata-scripts.sh
@@ -0,0 +1,406 @@
+# This hook generates XBPS pkg metadata INSTALL/REMOVE scripts.
+
+_add_trigger() {
+	local f= found= name="$1"
+
+	for f in ${triggers}; do
+		[ "$f" = "$name" ] && found=1
+	done
+	[ -z "$found" ] && triggers="$triggers $name"
+}
+
+process_metadata_scripts() {
+	local action="$1"
+	local action_file="$2"
+	local tmpf=$(mktemp) || exit 1
+	local fpattern="s|${PKGDESTDIR}||g;s|^\./$||g;/^$/d"
+	local targets= f= _f= info_files= home= shell= descr= groups=
+	local found= triggers_found= _icondirs= _schemas= _mods= _tmpfiles=
+
+	case "$action" in
+		install) ;;
+		remove) ;;
+		*) return 1;;
+	esac
+
+	cd ${PKGDESTDIR}
+	cat >> $tmpf <<_EOF
+#!/bin/sh
+#
+# Generic INSTALL/REMOVE script. Arguments passed to this script:
+#
+# \$1 = ACTION	[pre/post]
+# \$2 = PKGNAME
+# \$3 = VERSION
+# \$4 = UPDATE	[yes/no]
+# \$5 = CONF_FILE (path to xbps.conf)
+# \$6 = ARCH (uname -m)
+#
+# Note that paths must be relative to CWD, to avoid calling
+# host commands if /bin/sh (dash) is not installed and it's
+# not possible to chroot(2).
+#
+
+export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
+
+TRIGGERSDIR="./usr/libexec/xbps-triggers"
+ACTION="\$1"
+PKGNAME="\$2"
+VERSION="\$3"
+UPDATE="\$4"
+CONF_FILE="\$5"
+ARCH="\$6"
+
+#
+# The following code will run the triggers.
+#
+_EOF
+	#
+	# Handle kernel hooks.
+	#
+	if [ -n "${kernel_hooks_version}" ]; then
+		_add_trigger kernel-hooks
+		echo "export kernel_hooks_version=\"${kernel_hooks_version}\"" >> $tmpf
+	fi
+	#
+	# Handle DKMS modules.
+	#
+	if [ -n "${dkms_modules}" ]; then
+		_add_trigger dkms
+		echo "export dkms_modules=\"${dkms_modules}\"" >> $tmpf
+	fi
+	#
+	# Handle system groups.
+	#
+	if [ -n "${system_groups}" ]; then
+		_add_trigger system-accounts
+		echo "export system_groups=\"${system_groups}\"" >> $tmpf
+	fi
+	#
+	# Handle system accounts.
+	#
+	if [ -n "${system_accounts}" ]; then
+		_add_trigger system-accounts
+		echo "export system_accounts=\"${system_accounts}\"" >> $tmpf
+		for f in ${system_accounts}; do
+			local _uname="${f%:*}"
+			local _uid="${f#*:}"
+
+			eval homedir="\$${_uname}_homedir"
+			eval shell="\$${_uname}_shell"
+			eval descr="\$${_uname}_descr"
+			eval groups="\$${_uname}_groups"
+			eval pgroup="\$${_uname}_pgroup"
+			if [ -n "$homedir" ]; then
+				echo "export ${_uname}_homedir=\"$homedir\"" >> $tmpf
+			fi
+			if [ -n "$shell" ]; then
+				echo "export ${_uname}_shell=\"$shell\"" >> $tmpf
+			fi
+			if [ -n "$descr" ]; then
+				echo "export ${_uname}_descr=\"$descr\"" >> $tmpf
+			fi
+			if [ -n "$groups" ]; then
+				echo "export ${_uname}_groups=\"${groups}\"" >> $tmpf
+			fi
+			if [ -n "$pgroup" ]; then
+				echo "export ${_uname}_pgroup=\"${pgroup}\"" >> $tmpf
+			fi
+			unset homedir shell descr groups pgroup
+		done
+	fi
+	#
+	# Handle mkdirs trigger.
+	#
+	if [ -n "${make_dirs}" ]; then
+		_add_trigger mkdirs
+		echo "export make_dirs=\"${make_dirs}\"" >> $tmpf
+	fi
+	#
+	# Handle binfmts trigger
+	#
+	if [ -n "${binfmts}" ]; then
+		_add_trigger binfmts
+		echo "export binfmts=\"${binfmts}\"" >> $tmpf
+	fi
+	#
+	# Handle GNU Info files.
+	#
+	if [ -d "${PKGDESTDIR}/usr/share/info" ]; then
+		unset info_files
+		for f in $(find ${PKGDESTDIR}/usr/share/info -type f); do
+			j=$(echo $f|sed -e "$fpattern")
+			[ "$j" = "" ] && continue
+			[ "$j" = "/usr/share/info/dir" ] && continue
+			if [ -z "$info_files" ]; then
+				info_files="$j"
+			else
+				info_files="$info_files $j"
+			fi
+		done
+		if [ -n "${info_files}" ]; then
+			_add_trigger info-files
+			echo "export info_files=\"${info_files}\"" >> $tmpf
+		fi
+	fi
+	#
+	# Handle files in hwdb directory
+	#
+	if [ -d "${PKGDESTDIR}/usr/lib/udev/hwdb.d" ]; then
+		_add_trigger hwdb.d-dir
+	fi
+	#
+	# Handle texmf database changes
+	#
+	if [ -d "${PKGDESTDIR}/usr/share/texmf-dist" ] ; then
+		_add_trigger texmf-dist
+	fi
+	#
+	# (Un)Register a shell in /etc/shells.
+	#
+	if [ -n "${register_shell}" ]; then
+		_add_trigger register-shell
+		echo "export register_shell=\"${register_shell}\"" >> $tmpf
+	fi
+	#
+	# Handle SGML/XML catalog entries via xmlcatmgr.
+	#
+	if [ -n "${sgml_catalogs}" ]; then
+		for catalog in ${sgml_catalogs}; do
+			sgml_entries="${sgml_entries} CATALOG ${catalog} --"
+		done
+	fi
+	if [ -n "${sgml_entries}" ]; then
+		echo "export sgml_entries=\"${sgml_entries}\"" >> $tmpf
+	fi
+	if [ -n "${xml_catalogs}" ]; then
+		for catalog in ${xml_catalogs}; do
+			xml_entries="${xml_entries} nextCatalog ${catalog} --"
+		done
+	fi
+	if [ -n "${xml_entries}" ]; then
+		echo "export xml_entries=\"${xml_entries}\"" >> $tmpf
+	fi
+	if [ -n "${sgml_entries}" -o -n "${xml_entries}" ]; then
+		_add_trigger xml-catalog
+	fi
+	#
+	# Handle X11 font updates via mkfontdir/mkfontscale.
+	#
+	if [ -n "${font_dirs}" ]; then
+		_add_trigger x11-fonts
+		echo "export font_dirs=\"${font_dirs}\"" >> $tmpf
+	fi
+	#
+	# Handle GTK+ Icon cache directories.
+	#
+	if [ -d ${PKGDESTDIR}/usr/share/icons ]; then
+		for f in ${PKGDESTDIR}/usr/share/icons/*; do
+			[ ! -d "${f}" ] && continue
+			_icondirs="${_icondirs} ${f#${PKGDESTDIR}}"
+		done
+		if [ -n "${_icondirs}" ]; then
+			echo "export gtk_iconcache_dirs=\"${_icondirs}\"" >> $tmpf
+			_add_trigger gtk-icon-cache
+		fi
+	fi
+	#
+	# Handle .desktop files in /usr/share/applications with
+	# desktop-file-utils.
+	#
+	if [ -d ${PKGDESTDIR}/usr/share/applications ]; then
+		_add_trigger update-desktopdb
+	fi
+	#
+	# Handle GConf schemas/entries files with gconf-schemas.
+	#
+	if [ -d ${PKGDESTDIR}/usr/share/gconf/schemas ]; then
+		_add_trigger gconf-schemas
+		for f in ${PKGDESTDIR}/usr/share/gconf/schemas/*.schemas; do
+			_schemas="${_schemas} ${f##*/}"
+		done
+		echo "export gconf_schemas=\"${_schemas}\"" >> $tmpf
+	fi
+	#
+	# Handle gio-modules trigger.
+	#
+	if [ -d ${PKGDESTDIR}/usr/lib/gio/modules ]; then
+		_add_trigger gio-modules
+	fi
+	#
+	# Handle gtk immodules in /usr/lib/gtk-2.0/2.10.0/immodules with
+	# gtk-immodules
+	#
+	if [ -d ${PKGDESTDIR}/usr/lib/gtk-2.0/2.10.0/immodules ]; then
+		_add_trigger gtk-immodules
+	fi
+	#
+	# Handle gtk3 immodules in /usr/lib/gtk-3.0/3.0.0/immodules with
+	# gtk3-immodules
+	#
+	if [ -d ${PKGDESTDIR}/usr/lib/gtk-3.0/3.0.0/immodules ]; then
+		_add_trigger gtk3-immodules
+	fi
+	#
+	# Handle gsettings schemas in /usr/share/glib-2.0/schemas with
+	# gsettings-schemas.
+	#
+	if [ -d ${PKGDESTDIR}/usr/share/glib-2.0/schemas ]; then
+		_add_trigger gsettings-schemas
+	fi
+	#
+	# Handle gdk-pixbuf loadable modules in /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders
+	# with gdk-pixbuf-loaders
+	#
+	if [ -d ${PKGDESTDIR}/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders ]; then
+		_add_trigger gdk-pixbuf-loaders
+	fi
+	#
+	# Handle mime database in /usr/share/mime with update-mime-database.
+	#
+	if [ -d ${PKGDESTDIR}/usr/share/mime ]; then
+		_add_trigger mimedb
+	fi
+	#
+	# Handle python bytecode archives with pycompile trigger.
+	#
+	local pycompile_version
+	if [ -d ${PKGDESTDIR}/usr/lib/python* ]; then
+		pycompile_version="$(find ${PKGDESTDIR}/usr/lib/python* -prune -type d | grep -o '[[:digit:]]\.[[:digit:]]\+$')"
+		if [ -z "${pycompile_module}" ]; then
+			pycompile_module="$(find ${PKGDESTDIR}/usr/lib/python*/site-packages -mindepth 1 -maxdepth 1 '!' -name '*.egg-info' '!' -name '*.dist-info' '!' -name '*.so' '!' -name '*.pth' -printf '%f ')"
+		fi
+	fi
+
+	if [ -n "$python_version" ]; then
+		pycompile_version=${python_version}
+	fi
+
+	if [ "$pycompile_version" = 3 ]; then
+		pycompile_version=${py3_ver}
+	elif [ "$pycompile_version" = 2 ]; then
+		pycompile_version=${py2_ver}
+	fi
+
+	if [ -n "${pycompile_dirs}" -o -n "${pycompile_module}" ]; then
+		[ -n "$pycompile_version" ] || msg_error "$pkgver: byte-compilation is required, but python_version is not set\n"
+		echo "export pycompile_version=\"${pycompile_version}\"" >>$tmpf
+		if [ -n "${pycompile_dirs}" ]; then
+			echo "export pycompile_dirs=\"${pycompile_dirs}\"" >>$tmpf
+		fi
+		if [ -n "${pycompile_module}" ]; then
+			echo "export pycompile_module=\"${pycompile_module}\"" >>$tmpf
+		fi
+		_add_trigger pycompile
+	fi
+	#
+	# Handle appdata metadata with AppStream
+	#
+	for f in ${PKGDESTDIR}/usr/share/appdata/*.xml ${PKGDESTDIR}/usr/share/app-info/*.xml ${PKGDESTDIR}/var/lib/app-info/*.xml ${PKGDESTDIR}/var/cache/app-info/*.xml; do
+		if [ -f "${f}" ]; then
+			_add_trigger appstream-cache
+			break
+		fi
+	done
+
+	# End of trigger var exports.
+	echo >> $tmpf
+
+	#
+	# Write the INSTALL/REMOVE package scripts.
+	#
+	if [ -n "$triggers" ]; then
+		triggers_found=1
+		echo "case \"\${ACTION}\" in" >> $tmpf
+		echo "pre)" >> $tmpf
+		for f in ${triggers}; do
+			if [ ! -f $XBPS_TRIGGERSDIR/$f ]; then
+				rm -f $tmpf
+				msg_error "$pkgname: unknown trigger $f, aborting!\n"
+			fi
+			echo "   Added trigger '$f' for the '${action^^}' script."
+		done
+		for f in ${triggers}; do
+			targets=$($XBPS_TRIGGERSDIR/$f targets)
+			for j in ${targets}; do
+				if ! [[ $j =~ pre-${action} ]]; then
+					continue
+				fi
+				printf "\t\${TRIGGERSDIR}/$f run $j \${PKGNAME} \${VERSION} \${UPDATE} \${CONF_FILE}\n" >> $tmpf
+				printf "\t[ \$? -ne 0 ] && exit \$?\n" >> $tmpf
+			done
+		done
+		printf "\t;;\n" >> $tmpf
+		echo "post)" >> $tmpf
+		for f in ${triggers}; do
+			targets=$($XBPS_TRIGGERSDIR/$f targets)
+			for j in ${targets}; do
+				if ! [[ $j =~ post-${action} ]]; then
+					continue
+				fi
+				printf "\t\${TRIGGERSDIR}/$f run $j \${PKGNAME} \${VERSION} \${UPDATE} \${CONF_FILE}\n" >> $tmpf
+				printf "\t[ \$? -ne 0 ] && exit \$?\n" >> $tmpf
+			done
+		done
+		printf "\t;;\n" >> $tmpf
+		echo "esac" >> $tmpf
+		echo >> $tmpf
+	fi
+
+	if [ -z "$triggers" -a ! -f "$action_file" ]; then
+		rm -f $tmpf
+		return 0
+	fi
+
+	case "$action" in
+	install)
+		if [ -f ${action_file} ]; then
+			found=1
+			cat ${action_file} >> $tmpf
+		fi
+		echo >> $tmpf
+		echo "exit 0" >> $tmpf
+		mv $tmpf ${PKGDESTDIR}/INSTALL && chmod 755 ${PKGDESTDIR}/INSTALL
+		;;
+	remove)
+		unset found
+		if [ -f ${action_file} ]; then
+			found=1
+			cat ${action_file} >> $tmpf
+		fi
+		echo >> $tmpf
+		echo "exit 0" >> $tmpf
+		mv $tmpf ${PKGDESTDIR}/REMOVE && chmod 755 ${PKGDESTDIR}/REMOVE
+		;;
+	esac
+}
+
+hook() {
+	local meta_install meta_remove
+
+	if [ -n "${sourcepkg}" -a "${sourcepkg}" != "${pkgname}" ]; then
+		# subpkg
+		meta_install=${XBPS_SRCPKGDIR}/${pkgname}/${pkgname}.INSTALL
+		msg_install=${XBPS_SRCPKGDIR}/${pkgname}/${pkgname}.INSTALL.msg
+		meta_remove=${XBPS_SRCPKGDIR}/${pkgname}/${pkgname}.REMOVE
+		msg_remove=${XBPS_SRCPKGDIR}/${pkgname}/${pkgname}.REMOVE.msg
+	else
+		# sourcepkg
+		meta_install=${XBPS_SRCPKGDIR}/${pkgname}/INSTALL
+		msg_install=${XBPS_SRCPKGDIR}/${pkgname}/INSTALL.msg
+		meta_remove=${XBPS_SRCPKGDIR}/${pkgname}/REMOVE
+		msg_remove=${XBPS_SRCPKGDIR}/${pkgname}/REMOVE.msg
+	fi
+	process_metadata_scripts install ${meta_install} || \
+		msg_error "$pkgver: failed to write INSTALL metadata file!\n"
+
+	process_metadata_scripts remove ${meta_remove} || \
+		msg_error "$pkgver: failed to write REMOVE metadata file!\n"
+
+	if [ -s ${msg_install} ]; then
+		install -m644 ${msg_install} ${PKGDESTDIR}/INSTALL.msg
+	fi
+	if [ -s ${msg_remove} ]; then
+		install -m644 ${msg_remove} ${PKGDESTDIR}/REMOVE.msg
+	fi
+}
diff --git a/common/hooks/post-install/05-generate-gitrevs.sh b/common/hooks/post-install/05-generate-gitrevs.sh
new file mode 100644
index 0000000..c5a51f0
--- /dev/null
+++ b/common/hooks/post-install/05-generate-gitrevs.sh
@@ -0,0 +1,23 @@
+# This hook generates a file ${XBPS_STATEDIR}/gitrev with the last
+# commit sha1 (in short mode) for source pkg if XBPS_USE_GIT_REVS is enabled.
+
+hook() {
+	local GITREVS_FILE=${XBPS_STATEDIR}/gitrev
+
+	# If XBPS_USE_GIT_REVS is disabled in conf file don't continue.
+	if [ -z $XBPS_USE_GIT_REVS ]; then
+		return
+	fi
+	# If the file exists don't regenerate it again.
+	if [ -s ${GITREVS_FILE} ]; then
+		return
+	fi
+
+	if [ -z "$XBPS_GIT_REVS" ]; then
+		msg_error "BUG: XBPS_GIT_REVS is not set\n"
+	fi
+
+	cd $XBPS_SRCPKGDIR
+	echo "${sourcepkg}:${XBPS_GIT_REVS}"
+	echo "${sourcepkg}:${XBPS_GIT_REVS}" > $GITREVS_FILE
+}
diff --git a/common/hooks/post-install/06-strip-and-debug-pkgs.sh b/common/hooks/post-install/06-strip-and-debug-pkgs.sh
new file mode 100644
index 0000000..191c025
--- /dev/null
+++ b/common/hooks/post-install/06-strip-and-debug-pkgs.sh
@@ -0,0 +1,148 @@
+# This hook executes the following tasks:
+#	- strips ELF binaries/libraries
+#	- generates -dbg pkgs
+
+make_debug() {
+	local dname= fname= dbgfile=
+
+	[ -n "$nodebug" ] && return 0
+
+	dname=${1%/*}/ ; dname=${dname#$PKGDESTDIR}
+	fname="${1##*/}"
+	dbgfile="${dname}/${fname}"
+
+	mkdir -p "${PKGDESTDIR}/usr/lib/debug/${dname}"
+	$OBJCOPY --only-keep-debug --compress-debug-sections \
+		"$1" "${PKGDESTDIR}/usr/lib/debug/${dbgfile}"
+	if [ $? -ne 0 ]; then
+		msg_red "${pkgver}: failed to create dbg file: ${dbgfile}\n"
+		return 1
+	fi
+	chmod 644 "${PKGDESTDIR}/usr/lib/debug/${dbgfile}"
+}
+
+attach_debug() {
+	local dname= fname= dbgfile=
+
+	[ -n "$nodebug" ] && return 0
+
+	dname=${1%/*}/ ; dname=${dname#$PKGDESTDIR}
+	fname="${1##*/}"
+	dbgfile="${dname}/${fname}"
+
+	$OBJCOPY --add-gnu-debuglink="${PKGDESTDIR}/usr/lib/debug/${dbgfile}" "$1"
+	if [ $? -ne 0 ]; then
+		msg_red "${pkgver}: failed to attach dbg to ${dbgfile}\n"
+		return 1
+	fi
+}
+
+create_debug_pkg() {
+	local _pkgname= _destdir=
+
+	[ -n "$nodebug" ] && return 0
+	[ ! -d "${PKGDESTDIR}/usr/lib/debug" ] && return 0
+
+	_pkgname="${pkgname}-dbg-${version}"
+	_destdir="${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${_pkgname}"
+	mkdir -p "${_destdir}/usr/lib"
+	mv ${PKGDESTDIR}/usr/lib/debug ${_destdir}/usr/lib
+	if [ $? -ne 0 ]; then
+		msg_red "$pkgver: failed to create debug pkg\n"
+		return 1
+	fi
+	printf "${pkgver} " >> ${_destdir}/rdeps
+	rmdir --ignore-fail-on-non-empty "${PKGDESTDIR}/usr/lib" 2>/dev/null
+	return 0
+}
+
+hook() {
+	local fname= x= f= _soname= STRIPCMD=
+
+	if [ -n "$nostrip" ]; then
+		return 0
+	fi
+
+	STRIPCMD=/usr/bin/$STRIP
+
+	find ${PKGDESTDIR} -type f | while read f; do
+		if [[ $f =~ ^${PKGDESTDIR}/usr/lib/debug/ ]]; then
+			continue
+		fi
+
+		fname=${f##*/}
+		for x in ${nostrip_files}; do
+			if [ "$x" = "$fname" -o "$x" = "${f#$PKGDESTDIR}" ]; then
+				found=1
+				break
+			fi
+		done
+		if [ -n "$found" ]; then
+			unset found
+			continue
+		fi
+		case "$(file -bi "$f")" in
+		application/x-executable*)
+			chmod +w "$f"
+			if [[ $(file $f) =~ "statically linked" ]]; then
+				# static binary
+				if ! $STRIPCMD "$f"; then
+					msg_red "$pkgver: failed to strip ${f#$PKGDESTDIR}\n"
+					return 1
+				fi
+				echo "   Stripped static executable: ${f#$PKGDESTDIR}"
+			else
+				make_debug "$f"
+				if ! $STRIPCMD "$f"; then
+					msg_red "$pkgver: failed to strip ${f#$PKGDESTDIR}\n"
+					return 1
+				fi
+				echo "   Stripped executable: ${f#$PKGDESTDIR}"
+				unset nopie_found
+				for x in ${nopie_files}; do
+					if [ "$x" = "${f#$PKGDESTDIR}" ]; then
+						nopie_found=1
+						break
+					fi
+				done
+				if [ -z "$nopie" ] && [ -z "$nopie_found" ]; then
+					msg_red "$pkgver: non-PIE executable found in PIE build: ${f#$PKGDESTDIR}\n"
+					return 1
+				fi
+				attach_debug "$f"
+			fi
+			;;
+		application/x-sharedlib*|application/x-pie-executable*)
+			local type="$(file -b "$f")"
+			if [[ $type =~ "no machine" ]]; then
+				# using ELF as a container format (e.g. guile)
+				echo "   Ignoring ELF file without machine set: ${f#$PKGDESTDIR}"
+				continue
+			fi
+
+			chmod +w "$f"
+			# shared library
+			make_debug "$f"
+			if ! $STRIPCMD --strip-unneeded "$f"; then
+				msg_red "$pkgver: failed to strip ${f#$PKGDESTDIR}\n"
+				return 1
+			fi
+			if [[ $type =~ "interpreter " ]]; then
+				echo "   Stripped position-independent executable: ${f#$PKGDESTDIR}"
+			else
+				echo "   Stripped library: ${f#$PKGDESTDIR}"
+			fi
+			attach_debug "$f"
+			;;
+		application/x-archive*)
+			chmod +w "$f"
+			if ! $STRIPCMD --strip-debug "$f"; then
+				msg_red "$pkgver: failed to strip ${f#$PKGDESTDIR}\n"
+				return 1
+			fi
+			echo "   Stripped static library: ${f#$PKGDESTDIR}";;
+		esac
+	done
+	create_debug_pkg
+	return $?
+}
diff --git a/common/hooks/post-install/10-pkglint-devel-paths.sh b/common/hooks/post-install/10-pkglint-devel-paths.sh
new file mode 100644
index 0000000..ff9e0fc
--- /dev/null
+++ b/common/hooks/post-install/10-pkglint-devel-paths.sh
@@ -0,0 +1,84 @@
+# vim: set ts=4 sw=4 et:
+#
+# This hook executes the following tasks:
+#   - Looks on non -devel packages for files that should be in the -devel package
+#   - Searches for solinks (.so) and archives (.a) on usr/lib
+#   - Searches for executables in usr/bin that end with -config and a respective manpage
+
+hook() {
+    local solink archive
+
+    if [[ "$pkgname" == *"-devel" ]]; then
+        return 0
+    fi
+
+    if [[ "$subpackages" != *"-devel" ]]; then
+        return 0
+    fi
+
+    for f in $(find $PKGDESTDIR -type d); do
+        case "${f#$PKGDESTDIR}" in
+            /usr/include)
+                msg_warn "usr/include should be in -devel package\n"
+                ;;
+            /usr/share/pkgconfig)
+                msg_warn "usr/share/pkgconfig should be in -devel package\n"
+                ;;
+            /usr/lib/pkgconfig)
+                msg_warn "usr/lib/pkgconfig should be in -devel package\n"
+                ;;
+            /usr/share/vala)
+                msg_warn "usr/share/vala should be in -devel package\n"
+                ;;
+            /usr/share/gir-1.0)
+                msg_warn "usr/share/gir-1.0 should be in -devel package\n"
+                ;;
+            /usr/share/man/man3)
+                msg_warn "usr/share/man/man3 should be in -devel package\n"
+                ;;
+            /usr/share/aclocal)
+                msg_warn "usr/share/aclocal should be in -devel package\n"
+                ;;
+            /usr/share/cmake)
+                msg_warn "usr/share/cmake should be in -devel package\n"
+                ;;
+            /usr/lib/cmake)
+                msg_warn "usr/lib/cmake should be in -devel package\n"
+                ;;
+            /usr/share/gtk-doc)
+                msg_warn "usr/share/gtk-doc should be in -devel package\n"
+                ;;
+            /usr/lib/qt5/mkspecs)
+                msg_warn "usr/lib/qt5/mkspecs should be in -devel package\n"
+                ;;
+        esac
+    done
+
+    if [ -n "$(find $PKGDESTDIR/usr/lib -maxdepth 1 -type l -iname '*.so' 2>/dev/null)" ]; then
+        solink=1
+    fi
+
+    if [ -n "$(find $PKGDESTDIR/usr/lib -maxdepth 1 -type f -iname '*.a' 2>/dev/null)" ]; then
+        archive=1
+    fi
+
+    if [ -d $PKGDESTDIR/usr/bin ]; then
+        for x in $(find $PKGDESTDIR/usr/bin -type f -executable -iname '*-config'); do
+            msg_warn "${x#$PKGDESTDIR\/} should be in -devel package\n"
+        done
+    fi
+
+    if [ -d $PKGDESTDIR/usr/man/man1 ]; then
+        for m in $(find $PKGDESTDIR/usr/man/man1 -type f -iname '*-config.1'); do
+            msg_warn "${m#$PKGDESTDIR\/} should be in -devel package\n"
+        done
+    fi
+
+    if [ -n "$solink" ]; then
+        msg_warn "usr/lib/*.so should be in -devel package\n"
+    fi
+
+    if [ -n "$archive" ]; then
+        msg_warn "usr/lib/*.a should be in -devel package\n"
+    fi
+}
diff --git a/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh b/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh
new file mode 100644
index 0000000..a665f3e
--- /dev/null
+++ b/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh
@@ -0,0 +1,52 @@
+# vim: set ts=4 sw=4 et:
+#
+# This hook executes the following tasks:
+#   - Looks on all packages for binary files being installed to /usr/share
+#   - Allows exceptions listed in $ignore_elf_files and $ignore_elf_dirs
+
+hook() {
+    local matches mime file f prune_expr dir
+
+    if [ ! -d ${PKGDESTDIR}/usr/share ]; then
+        return 0
+    fi
+
+    if [ "${ignore_elf_dirs}" ]; then
+        for dir in ${ignore_elf_dirs}; do
+            if ! [ "${prune_expr}" ]; then
+                prune_expr="( -path ${PKGDESTDIR}${dir}"
+            else
+                prune_expr+=" -o -path ${PKGDESTDIR}${dir}"
+            fi
+        done
+        prune_expr+=" ) -prune -o "
+    fi
+
+    # Find all binaries in /usr/share and add them to the pool
+    while read -r f; do
+        mime="${f##*:}"
+        mime="${mime// /}"
+        file="${f%:*}"
+        file="${file#${PKGDESTDIR}}"
+        case "${mime}" in
+            application/x-sharedlib*|\
+             application/x-pie-executable*|\
+             application/x-executable*)
+                if [[ ${ignore_elf_files} != *"${file}"* ]]; then
+                    matches+=" ${file}"
+                fi
+                ;;
+        esac
+    done < <(find $PKGDESTDIR/usr/share $prune_expr -type f | file --mime-type --files-from -)
+
+    # Check passed if no packages in pool
+    if [ -z "$matches" ]; then
+        return 0
+    fi
+
+    msg_red "${pkgver}: ELF files found in /usr/share:\n"
+    for f in $matches; do
+        msg_red "   ${f}\n"
+    done
+    msg_error "${pkgver}: cannot continue with installation!\n"
+}
diff --git a/common/hooks/post-install/12-rename-python3-c-bindings.sh b/common/hooks/post-install/12-rename-python3-c-bindings.sh
new file mode 100644
index 0000000..c16b69d
--- /dev/null
+++ b/common/hooks/post-install/12-rename-python3-c-bindings.sh
@@ -0,0 +1,16 @@
+# This hook executes the following tasks:
+#	- renames cpython binding files to not include the arch-specific extension suffix
+
+hook() {
+	if [ ! -d ${PKGDESTDIR}/${py3_sitelib} ]; then
+		return 0
+	fi
+
+	find "${PKGDESTDIR}/${py3_sitelib}" -type f -executable -iname '*.cpython*.so' \
+		| while read -r file; do
+		filename="${file##*/}"
+		modulename="${filename%%.*}"
+		msg_warn "${pkgver}: renamed '${filename}' to '${modulename}.so'.\n"
+		mv ${file} ${file%/*}/${modulename}.so
+	done
+}
diff --git a/common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh b/common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh
new file mode 100644
index 0000000..5cdfb0e
--- /dev/null
+++ b/common/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh
@@ -0,0 +1,22 @@
+# This hook removes reference to $XBPS_CROSS_BASE in
+# /usr/{lib,share}/pkgconfig/*.pc
+#
+# We don't touch /usr/bin/*-config since there're other information that
+# references $XBPS_CROSS_BASE
+
+hook() {
+	if [ -z "$CROSS_BUILD" ]; then
+		return 0
+	fi
+	for f in "$PKGDESTDIR"/usr/lib/pkgconfig/*.pc \
+		"$PKGDESTDIR"/usr/share/pkgconfig/*.pc
+	do
+		if [ -f "$f" ]; then
+			# Sample sed script
+			# s,/usr/armv7l-linux-musleabihf/usr,/usr,g
+			# trailing /usr to avoid clashing with
+			# other $XBPS_CROSS_BASE and $XBPS_CROSS_TRIPLET.
+			sed -i -e "s,$XBPS_CROSS_BASE/usr,/usr,g" "$f"
+		fi
+	done
+}
diff --git a/common/hooks/post-install/14-fix-permissions.sh b/common/hooks/post-install/14-fix-permissions.sh
new file mode 100644
index 0000000..9207308
--- /dev/null
+++ b/common/hooks/post-install/14-fix-permissions.sh
@@ -0,0 +1,36 @@
+# This hook fixes permissions in common places
+
+change_file_perms() {
+	local dir="${PKGDESTDIR}${1}"
+	# permission mask for matching the files
+	local permmask="$2"
+	# permissions which will be set on matched files
+	local perms="$3"
+	if [ -d "$dir" ]; then
+		find "$dir" -type f -perm "/$permmask" -exec chmod -v "$perms" {} +
+	fi
+}
+
+hook() {
+	if [ -z "$nocheckperms" ]; then
+		# check that no files have permission write for other users
+		find "$PKGDESTDIR" -type f -perm -0002 | while read -r file; do
+			msg_error "$pkgver: file ${file#$PKGDESTDIR} has write permission for other users\n"
+		done
+	fi
+
+	if [ -z "$nofixperms" ]; then
+		change_file_perms "/usr/share/man" 133 644
+		change_file_perms "/etc/apparmor.d" 111 644
+		change_file_perms "/usr/share/applications" 133 644
+		change_file_perms "/usr/share/help" 133 644
+		change_file_perms "/usr/share/icons" 133 644
+		change_file_perms "/usr/share/locale" 133 644
+		change_file_perms "/usr/share/metainfo" 133 644
+		change_file_perms "/usr/share/appdata" 133 644
+		change_file_perms "/usr/include" 133 644
+		change_file_perms "/usr/share/bash-completion/completions" 133 644
+		change_file_perms "/usr/share/fish/vendor_completions.d" 133 644
+		change_file_perms "/usr/share/zsh/site-functions" 133 644
+	fi
+}
diff --git a/common/hooks/post-install/99-pkglint-warn-cross-cruft.sh b/common/hooks/post-install/99-pkglint-warn-cross-cruft.sh
new file mode 100644
index 0000000..16e6c5f
--- /dev/null
+++ b/common/hooks/post-install/99-pkglint-warn-cross-cruft.sh
@@ -0,0 +1,21 @@
+# This hook warns if :
+# - Any text file /usr/{bin,lib,libexec,share} contains $XBPS_CROSS_BASE
+# - Any text file /usr/{bin,lib,libexec,share} contains $XBPS_WRAPPERDIR
+
+hook() {
+	if [ -z "$CROSS_BUILD" ]; then
+		return 0
+	fi
+	for d in bin lib libexec share; do
+		for f in $PKGDESTDIR/usr/$d/* $PKGDESTDIR/usr/$d/**/*; do
+			case "$(file -bi "$f")" in
+			text/*) if grep -q -e "$XBPS_CROSS_BASE" \
+					   -e "$XBPS_WRAPPERDIR" "$f"; then
+					msg_warn "${f#$PKGDESTDIR} has cross cruft\n"
+				fi
+				;;
+			esac
+		done
+	done
+	return 0;
+}
diff --git a/common/hooks/post-patch/.empty b/common/hooks/post-patch/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-pkg/.empty b/common/hooks/post-pkg/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/post-pkg/00-register-pkg.sh b/common/hooks/post-pkg/00-register-pkg.sh
new file mode 100644
index 0000000..67b7209
--- /dev/null
+++ b/common/hooks/post-pkg/00-register-pkg.sh
@@ -0,0 +1,51 @@
+# This hook registers a XBPS binary package into the specified local repository.
+
+registerpkg() {
+	local repo="$1" pkg="$2" arch="$3"
+
+	if [ ! -f ${repo}/${pkg} ]; then
+		msg_error "Unexistent binary package ${repo}/${pkg}!\n"
+	fi
+
+	printf "%s:%s:%s\n" "${arch}" "${repo}" "${pkg}" >> "${XBPS_STATEDIR}/.${sourcepkg}_register_pkg"
+}
+
+hook() {
+	local arch= binpkg= pkgdir=
+
+	if [ -n "$repository" ]; then
+		pkgdir=$XBPS_REPOSITORY/$repository
+	else
+		pkgdir=$XBPS_REPOSITORY
+	fi
+	arch=$XBPS_TARGET_MACHINE
+	binpkg=${pkgver}.${arch}.xbps
+	binpkg32=${pkgname}-32bit-${version}_${revision}.x86_64.xbps
+	binpkg_dbg=${pkgname}-dbg-${version}_${revision}.${arch}.xbps
+
+	# Register binpkg.
+	if [ -f ${pkgdir}/${binpkg} ]; then
+		registerpkg ${pkgdir} ${binpkg}
+	fi
+
+	# Register -dbg binpkg if it exists.
+	pkgdir=$XBPS_REPOSITORY/debug
+	PKGDESTDIR="${XBPS_DESTDIR}/${XBPS_CROSS_TRIPLET}/${pkgname}-dbg-${version}"
+	if [ -d ${PKGDESTDIR} -a -f ${pkgdir}/${binpkg_dbg} ]; then
+		registerpkg ${pkgdir} ${binpkg_dbg}
+	fi
+
+	# Register 32bit binpkg if it exists.
+	if [ "$XBPS_TARGET_MACHINE" != "i686" ]; then
+		return
+	fi
+	if [ -n "$repository" ]; then
+		pkgdir=$XBPS_REPOSITORY/multilib/$repository
+	else
+		pkgdir=$XBPS_REPOSITORY/multilib
+	fi
+	PKGDESTDIR="${XBPS_DESTDIR}/${pkgname}-32bit-${version}"
+	if [ -d ${PKGDESTDIR} -a -f ${pkgdir}/${binpkg32} ]; then
+		registerpkg ${pkgdir} ${binpkg32} x86_64
+	fi
+}
diff --git a/common/hooks/pre-build/.empty b/common/hooks/pre-build/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-build/02-script-wrapper.sh b/common/hooks/pre-build/02-script-wrapper.sh
new file mode 120000
index 0000000..b637ffb
--- /dev/null
+++ b/common/hooks/pre-build/02-script-wrapper.sh
@@ -0,0 +1 @@
+../pre-configure/02-script-wrapper.sh
\ No newline at end of file
diff --git a/common/hooks/pre-check/.empty b/common/hooks/pre-check/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-configure/.empty b/common/hooks/pre-configure/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-configure/00-gnu-configure-asneeded.sh b/common/hooks/pre-configure/00-gnu-configure-asneeded.sh
new file mode 100644
index 0000000..a2865f6
--- /dev/null
+++ b/common/hooks/pre-configure/00-gnu-configure-asneeded.sh
@@ -0,0 +1,13 @@
+# This hook enables ld(1) --as-needed in gnu-configure packages.
+
+hook() {
+	local conf_script=${configure_script:-./configure}
+
+	if [ ! -f "${conf_script}" ]; then
+		return 0
+	fi
+	# http://lists.gnu.org/archive/html/libtool-patches/2004-06/msg00002.html
+	if [ "$build_style" = "gnu-configure" ]; then
+		sed -i "s/^\([ \t]*tmp_sharedflag\)='-shared'/\1='-shared -Wl,--as-needed'/" ${conf_script}
+	fi
+}
diff --git a/common/hooks/pre-configure/01-override-config.sh b/common/hooks/pre-configure/01-override-config.sh
new file mode 100644
index 0000000..29cd661
--- /dev/null
+++ b/common/hooks/pre-configure/01-override-config.sh
@@ -0,0 +1,14 @@
+# This hook overrides config.sub and config.guess.
+
+hook() {
+	local _cfgdir="${XBPS_COMMONDIR}/environment/configure/automake"
+
+	if [ -z "$build_style" -o "$build_style" = "gnu-configure" ]; then
+		for f in $(find "${wrksrc}" -type f -name "*config*.sub"); do
+			cp -f ${_cfgdir}/config.sub ${f}
+		done
+		for f in $(find "${wrksrc}" -type f -name "*config*.guess"); do
+			cp -f ${_cfgdir}/config.guess ${f}
+		done
+	fi
+}
diff --git a/common/hooks/pre-configure/02-script-wrapper.sh b/common/hooks/pre-configure/02-script-wrapper.sh
new file mode 100644
index 0000000..09c7960
--- /dev/null
+++ b/common/hooks/pre-configure/02-script-wrapper.sh
@@ -0,0 +1,242 @@
+# This hook creates wrappers for foo-config scripts in cross builds.
+#
+# Wrappers are created in ${wrksrc}/.xbps/bin and this path is appended
+# to make configure scripts find them.
+
+generic_wrapper() {
+	local wrapper="$1"
+	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
+	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
+
+	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
+#!/bin/sh
+exec ${XBPS_CROSS_BASE}/usr/bin/${wrapper} --prefix=${XBPS_CROSS_BASE}/usr "\$@"
+_EOF
+
+	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
+}
+
+generic_wrapper2() {
+	local wrapper="$1"
+
+	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
+	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
+
+	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
+#!/bin/sh
+if [ "\$1" = "--prefix" ]; then
+	echo "${XBPS_CROSS_BASE}/usr"
+elif [ "\$1" = "--cflags" ]; then
+	${XBPS_CROSS_BASE}/usr/bin/${wrapper} --cflags | sed -e "s,-I/usr/include,-I${XBPS_CROSS_BASE}/usr/include,g"
+elif [ "\$1" = "--libs" ]; then
+	${XBPS_CROSS_BASE}/usr/bin/${wrapper} --libs | sed -e "s,-L/usr/lib,-L${XBPS_CROSS_BASE}/usr/lib,g"
+else
+	exec ${XBPS_CROSS_BASE}/usr/bin/${wrapper} "\$@"
+fi
+exit \$?
+_EOF
+	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
+}
+
+generic_wrapper3() {
+	local wrapper="$1"
+	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
+	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
+
+	cp ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ${XBPS_WRAPPERDIR}
+	sed -e "s,^libdir=.*,libdir=${XBPS_CROSS_BASE}/usr/lib,g" -i ${XBPS_WRAPPERDIR}/${wrapper}
+	sed -e "s,^prefix=.*,prefix=${XBPS_CROSS_BASE}/usr," -i ${XBPS_WRAPPERDIR}/${wrapper}
+
+	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
+}
+
+apr_apu_wrapper() {
+	local wrapper="$1"
+
+	[ ! -x ${XBPS_CROSS_BASE}/usr/bin/${wrapper} ] && return 0
+	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
+
+	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
+#!/bin/sh
+${XBPS_CROSS_BASE}/usr/bin/${wrapper} "\$@" | sed -e "s,/usr/,${XBPS_CROSS_BASE}/usr/,g"
+exit \$?
+_EOF
+	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
+}
+
+python_wrapper() {
+	local wrapper="$1" version="$2"
+
+	[ -x ${XBPS_WRAPPERDIR}/${wrapper} ] && return 0
+	cat >>${XBPS_WRAPPERDIR}/${wrapper}<<_EOF
+#!/bin/sh
+case "\$1" in
+--includes|--cflags)
+	echo "-I${XBPS_CROSS_BASE}/usr/include/python${version}" ;;
+esac
+exit 0
+_EOF
+	chmod 755 ${XBPS_WRAPPERDIR}/${wrapper}
+}
+
+pkgconfig_wrapper() {
+	if [ ! -x /usr/bin/pkg-config ]; then
+		return 0
+	fi
+	[ -x ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-pkg-config ] && return 0
+	cat >>${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-pkg-config<<_EOF
+#!/bin/sh
+
+export PKG_CONFIG_SYSROOT_DIR="$XBPS_CROSS_BASE"
+export PKG_CONFIG_PATH="$XBPS_CROSS_BASE/usr/lib/pkgconfig:$XBPS_CROSS_BASE/usr/share/pkgconfig\${PKG_CONFIG_PATH:+:\${PKG_CONFIG_PATH}}"
+export PKG_CONFIG_LIBDIR="$XBPS_CROSS_BASE/usr/lib/pkgconfig\${PKG_CONFIG_LIBDIR:+:\${PKG_CONFIG_LIBDIR}}"
+exec /usr/bin/pkg-config "\$@"
+_EOF
+	chmod 755 ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-pkg-config
+	if [ -z "$no_generic_pkgconfig_link" ]; then
+		ln -sf ${XBPS_CROSS_TRIPLET}-pkg-config ${XBPS_WRAPPERDIR}/pkg-config
+	fi
+}
+
+vapigen_wrapper() {
+	local _vala_version _file
+	if [ ! -x /usr/bin/vapigen ]; then
+		return 0
+	fi
+	[ -x ${XBPS_WRAPPERDIR}/vapigen ] && return 0
+	for _file in /usr/bin/vapigen-*; do
+		if [ -x "${_file}" ]; then
+			_vala_version=${_file#*-}
+		fi
+	done
+	cat >>${XBPS_WRAPPERDIR}/vapigen<<_EOF
+#!/bin/sh
+exec /usr/bin/vapigen \\
+	 "\$@" \\
+	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala/vapi \\
+	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala-${_vala_version}/vapi \\
+	 --girdir=${XBPS_CROSS_BASE}/usr/share/gir-1.0
+_EOF
+	chmod 755 ${XBPS_WRAPPERDIR}/vapigen
+	ln -sf vapigen ${XBPS_WRAPPERDIR}/vapigen-${_vala_version}
+}
+
+valac_wrapper() {
+	local _vala_version _file
+	if [ ! -x /usr/bin/valac ]; then
+		return 0
+	fi
+	[ -x ${XBPS_WRAPPERDIR}/valac ] && return 0
+	for _file in /usr/bin/valac-*; do
+		if [ -x "${_file}" ]; then
+			_vala_version=${_file#*-}
+		fi
+	done
+	cat >>${XBPS_WRAPPERDIR}/valac<<_EOF
+#!/bin/sh
+exec /usr/bin/valac \\
+	 "\$@" \\
+	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala/vapi \\
+	 --vapidir=${XBPS_CROSS_BASE}/usr/share/vala-${_vala_version}/vapi \\
+	 --girdir=${XBPS_CROSS_BASE}/usr/share/gir-1.0
+_EOF
+	chmod 755 ${XBPS_WRAPPERDIR}/valac
+	ln -sf valac ${XBPS_WRAPPERDIR}/valac-${_vala_version}
+}
+
+install_wrappers() {
+	local fname
+
+	for f in ${XBPS_COMMONDIR}/wrappers/*.sh; do
+		fname=${f##*/}
+		fname=${fname%.sh}
+		install -p -m0755 ${f} ${XBPS_WRAPPERDIR}/${fname}
+	done
+}
+
+install_cross_wrappers() {
+	local fname prefix
+
+	if [ -n "$XBPS_CCACHE" ]; then
+		[ -x "/usr/bin/ccache" ] && prefix="/usr/bin/ccache "
+	elif [ -n "$XBPS_DISTCC" ]; then
+		[ -x "/usr/bin/distcc" ] && prefix="/usr/bin/distcc "
+	fi
+
+	for fname in cc gcc; do
+		sed -e "s,@BIN@,${prefix}/usr/bin/$XBPS_CROSS_TRIPLET-gcc,g" \
+			${XBPS_COMMONDIR}/wrappers/cross-cc > \
+			${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
+		chmod 755 ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
+	done
+	for fname in c++ g++; do
+		sed -e "s,@BIN@,${prefix}/usr/bin/$XBPS_CROSS_TRIPLET-g++,g" \
+			${XBPS_COMMONDIR}/wrappers/cross-cc > \
+			${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
+		chmod 755 ${XBPS_WRAPPERDIR}/${XBPS_CROSS_TRIPLET}-${fname}
+	done
+}
+
+link_wrapper() {
+	local wrapper="$1"
+	[ ! -x "${XBPS_CROSS_BASE}/usr/bin/${wrapper}" ] && return 0
+	[ -L "${XBPS_WRAPPERDIR}/${wrapper}" ] && return 0
+	ln -sf "${XBPS_CROSS_BASE}/usr/bin/${wrapper}" "${XBPS_WRAPPERDIR}"
+}
+
+hook() {
+	export PATH="$XBPS_WRAPPERDIR:$PATH"
+
+	install_wrappers
+
+	[ -z "$CROSS_BUILD" ] && return 0
+
+	install_cross_wrappers
+	pkgconfig_wrapper
+	vapigen_wrapper
+	valac_wrapper
+
+	if [ -x /usr/bin/pkg-config ]; then
+		link_wrapper freetype-config
+	else
+		generic_wrapper freetype-config
+	fi
+
+	generic_wrapper icu-config
+	generic_wrapper libgcrypt-config
+	generic_wrapper sdl-config
+	generic_wrapper sdl2-config
+	generic_wrapper gpgme-config
+	generic_wrapper imlib2-config
+	generic_wrapper libmikmod-config
+	generic_wrapper pcre-config
+	generic_wrapper net-snmp-config
+	generic_wrapper wx-config
+	generic_wrapper wx-config-3.0
+	generic_wrapper wx-config-gtk3
+	generic_wrapper2 curl-config
+	generic_wrapper2 gpg-error-config
+	generic_wrapper2 libassuan-config
+	generic_wrapper2 mysql_config
+	generic_wrapper2 taglib-config
+	generic_wrapper2 nspr-config
+	generic_wrapper2 gdal-config
+	generic_wrapper3 libpng-config
+	generic_wrapper3 xmlrpc-c-config
+	generic_wrapper3 krb5-config
+	generic_wrapper3 cups-config
+	generic_wrapper3 Magick-config
+	generic_wrapper3 fltk-config
+	generic_wrapper3 xslt-config
+	generic_wrapper3 xml2-config
+	generic_wrapper3 fox-config
+	generic_wrapper3 xapian-config
+	generic_wrapper3 ncurses5-config
+	generic_wrapper3 ncursesw5-config
+	generic_wrapper3 libetpan-config
+	generic_wrapper3 giblib-config
+	python_wrapper python-config 2.7
+	python_wrapper python3-config 3.10
+	apr_apu_wrapper apr-1-config
+	apr_apu_wrapper apu-1-config
+}
diff --git a/common/hooks/pre-extract/.empty b/common/hooks/pre-extract/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-fetch/.empty b/common/hooks/pre-fetch/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-install/.empty b/common/hooks/pre-install/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-install/00-libdir.sh b/common/hooks/pre-install/00-libdir.sh
new file mode 100644
index 0000000..4c57fbc
--- /dev/null
+++ b/common/hooks/pre-install/00-libdir.sh
@@ -0,0 +1,10 @@
+# This hook creates the wordsize specific libdir symlink.
+
+hook() {
+	if [ -L ${PKGDESTDIR}/usr/lib${XBPS_TARGET_WORDSIZE} ]; then
+		return 0
+	elif [ "${pkgname}" != "base-files" ]; then
+		vmkdir usr/lib
+		ln -sf lib ${PKGDESTDIR}/usr/lib${XBPS_TARGET_WORDSIZE}
+	fi
+}
diff --git a/common/hooks/pre-install/02-script-wrapper.sh b/common/hooks/pre-install/02-script-wrapper.sh
new file mode 120000
index 0000000..b637ffb
--- /dev/null
+++ b/common/hooks/pre-install/02-script-wrapper.sh
@@ -0,0 +1 @@
+../pre-configure/02-script-wrapper.sh
\ No newline at end of file
diff --git a/common/hooks/pre-install/98-fixup-gir-path.sh b/common/hooks/pre-install/98-fixup-gir-path.sh
new file mode 100644
index 0000000..64fd140
--- /dev/null
+++ b/common/hooks/pre-install/98-fixup-gir-path.sh
@@ -0,0 +1,10 @@
+# This hook fixes the wrong install path of 'gir' files
+# when cross building packages. It's a workaround and
+# not a proper fix. Remove it once the root cause of the
+# problem is fixed.
+
+hook() {
+	[ -z "$CROSS_BUILD" ] && return
+	vmkdir usr/${XBPS_CROSS_TRIPLET}
+	ln -sf ".." "${PKGDESTDIR}/usr/${XBPS_CROSS_TRIPLET}/usr"
+}
diff --git a/common/hooks/pre-patch/.empty b/common/hooks/pre-patch/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-pkg/.empty b/common/hooks/pre-pkg/.empty
new file mode 100644
index 0000000..e69de29
diff --git a/common/hooks/pre-pkg/03-rewrite-python-shebang.sh b/common/hooks/pre-pkg/03-rewrite-python-shebang.sh
new file mode 100644
index 0000000..07162ad
--- /dev/null
+++ b/common/hooks/pre-pkg/03-rewrite-python-shebang.sh
@@ -0,0 +1,40 @@
+# This hook executes the following tasks:
+#	- rewrites python shebangs with the corresponding python version
+
+hook() {
+	local pyver= shebang= off=
+
+	if [ -d ${PKGDESTDIR}/usr/lib/python* ]; then
+		pyver="$(find ${PKGDESTDIR}/usr/lib/python* -prune -type d | grep -o '[[:digit:]]\.[[:digit:]]\+$')"
+	fi
+
+	if [ -n "$python_version" ]; then
+		pyver="$python_version"
+	fi
+
+	if [ -n "$pyver" ]; then
+		default_shebang="#!/usr/bin/python${pyver%.*}"
+	fi
+
+	grep -rlIZ -m1 '^#!.*python' "${PKGDESTDIR}" |
+		while IFS= read -r -d '' file; do
+			[ ! -s "$file" ] && continue
+
+			pyinterp=$(sed -n -E -e 2q -e 's@^#!.*([[:space:]]|/)(python([0-9](\.[0-9]+)?)?)([[:space:]]+.*|$)@\2@p' "$file")
+			[ -z "$pyinterp" ] && continue
+
+			pyver=${pyinterp#python}
+			if [ -n "$pyver" ]; then
+				shebang="#!/usr/bin/python${pyver%.*}"
+			else
+				shebang="$default_shebang"
+			fi
+
+			basefile=${file#$PKGDESTDIR}
+
+			[ -n "$shebang" ] || msg_error "python_version missing in template: unable to convert shebang in $basefile\n"
+
+			echo "   Shebang converted to '$shebang': $basefile"
+			sed -i "1s@.*python.*@${shebang}@" -- "$file"
+		done
+}
diff --git a/common/hooks/pre-pkg/04-generate-runtime-deps.sh b/common/hooks/pre-pkg/04-generate-runtime-deps.sh
new file mode 100644
index 0000000..c8f8c04
--- /dev/null
+++ b/common/hooks/pre-pkg/04-generate-runtime-deps.sh
@@ -0,0 +1,171 @@
+# vim: set ts=4 sw=4 et:
+#
+# This hook executes the following tasks:
+#	- Generates rdeps file with run-time dependencies for xbps-create(1)
+#	- Generates shlib-requires file for xbps-create(1)
+
+add_rundep() {
+    local dep="$1" i= rpkgdep= _depname= found=
+
+    _depname="$($XBPS_UHELPER_CMD getpkgdepname ${dep} 2>/dev/null)"
+    if [ -z "${_depname}" ]; then
+        _depname="$($XBPS_UHELPER_CMD getpkgname ${dep} 2>/dev/null)"
+    fi
+
+    for i in ${run_depends}; do
+        rpkgdep="$($XBPS_UHELPER_CMD getpkgdepname $i 2>/dev/null)"
+        if [ -z "$rpkgdep" ]; then
+            rpkgdep="$($XBPS_UHELPER_CMD getpkgname $i 2>/dev/null)"
+        fi
+        if [ "${rpkgdep}" != "${_depname}" ]; then
+            continue
+        fi
+        $XBPS_UHELPER_CMD cmpver "$i" "$dep"
+        rval=$?
+        if [ $rval -eq 255 ]; then
+            run_depends="${run_depends/${i}/${dep}}"
+        fi
+        found=1
+    done
+    if [ -z "$found" ]; then
+        run_depends+=" ${dep}"
+    fi
+}
+
+store_pkgdestdir_rundeps() {
+        if [ -n "$run_depends" ]; then
+            : > ${PKGDESTDIR}/rdeps
+            for f in ${run_depends}; do
+                _curdep="$(echo "$f" | sed -e 's,\(.*\)?.*,\1,')"
+                if [ -z "$($XBPS_UHELPER_CMD getpkgdepname ${_curdep} 2>/dev/null)" -a \
+                     -z "$($XBPS_UHELPER_CMD getpkgname ${_curdep} 2>/dev/null)" ]; then
+                    _curdep="${_curdep}>=0"
+                fi
+                printf -- "${_curdep} " >> ${PKGDESTDIR}/rdeps
+            done
+        fi
+}
+
+hook() {
+    local depsftmp f lf j mapshlibs sorequires _curdep elfmagic
+
+    # Disable trap on ERR, xbps-uhelper cmd might return error... but not something
+    # to be worried about because if there are broken shlibs this hook returns
+    # error via msg_error().
+    trap - ERR
+
+    mapshlibs=$XBPS_COMMONDIR/shlibs
+
+    if [ -n "$noverifyrdeps" ]; then
+        store_pkgdestdir_rundeps
+        return 0
+    fi
+
+    depsftmp=$(mktemp) || exit 1
+    find ${PKGDESTDIR} -type f -perm -u+w > $depsftmp 2>/dev/null
+
+    exec 3<&0 # save stdin
+    exec < $depsftmp
+    while read f; do
+        lf=${f#${PKGDESTDIR}}
+	    if [ "${skiprdeps/${lf}/}" != "${skiprdeps}" ]; then
+		    msg_normal "Skipping dependency scan for ${lf}\n"
+		    continue
+	    fi
+        read -n4 elfmagic < "$f"
+        if [ "$elfmagic" = $'\177ELF' ]; then
+            for nlib in $($OBJDUMP -p "$f"|awk '/NEEDED/{print $2}'); do
+                [ -z "$verify_deps" ] && verify_deps="$nlib" && continue
+                found=0
+                for j in ${verify_deps}; do
+                    [[ $j == $nlib ]] && found=1 && break
+                done
+                [[ $found -eq 0 ]] && verify_deps="$verify_deps $nlib"
+            done
+        fi
+    done
+    exec 0<&3 # restore stdin
+    rm -f $depsftmp
+
+    #
+    # Add required run time packages by using required shlibs resolved
+    # above, the mapping is done thru the common/shlibs file.
+    #
+    for f in ${verify_deps}; do
+        unset _f j rdep _rdep rdepcnt soname _pkgname _rdepver found
+        _f=$(echo "$f"|sed -E 's|\+|\\+|g')
+        rdep="$(grep -E "^${_f}[[:blank:]]+.*$" $mapshlibs|cut -d ' ' -f2)"
+        rdepcnt="$(grep -E "^${_f}[[:blank:]]+.*$" $mapshlibs|cut -d ' ' -f2|wc -l)"
+        if [ -z "$rdep" ]; then
+            # Ignore libs by current pkg
+            soname=$(find ${PKGDESTDIR} -name "$f")
+            if [ -z "$soname" ]; then
+                msg_red_nochroot "   SONAME: $f <-> UNKNOWN PKG PLEASE FIX!\n"
+                broken=1
+            else
+                echo "   SONAME: $f <-> $pkgname (ignored)"
+            fi
+            continue
+        elif [ "$rdepcnt" -gt 1 ]; then
+            unset j found
+            # Check if shlib is provided by multiple pkgs.
+            for j in ${rdep}; do
+                _pkgname=$($XBPS_UHELPER_CMD getpkgname "$j")
+                # if there's a SONAME matching pkgname, use it.
+                for x in ${pkgname} ${subpackages}; do
+                    [[ $_pkgname == $x ]] && found=1 && break
+                done
+                [[ $found ]] && _rdep=$j && break
+            done
+            if [ -z "${_rdep}" ]; then
+                # otherwise pick up the first one.
+                for j in ${rdep}; do
+                    [ -z "${_rdep}" ] && _rdep=$j
+                done
+            fi
+        else
+            _rdep=$rdep
+        fi
+        _pkgname=$($XBPS_UHELPER_CMD getpkgname "${_rdep}" 2>/dev/null)
+        _rdepver=$($XBPS_UHELPER_CMD getpkgversion "${_rdep}" 2>/dev/null)
+        if [ -z "${_pkgname}" -o -z "${_rdepver}" ]; then
+            msg_red_nochroot "   SONAME: $f <-> UNKNOWN PKG PLEASE FIX!\n"
+            broken=1
+            continue
+        fi
+        # Check if pkg is a subpkg of sourcepkg; if true, ignore version
+        # in common/shlibs.
+        _sdep="${_pkgname}>=${_rdepver}"
+        for _subpkg in ${subpackages}; do
+            if [ "${_subpkg}" = "${_pkgname}" ]; then
+                _sdep="${_pkgname}-${version}_${revision}"
+                break
+            fi
+        done
+
+        if [ "${_pkgname}" != "${pkgname}" ]; then
+            echo "   SONAME: $f <-> ${_sdep}"
+            sorequires+="${f} "
+        else
+            # Ignore libs by current pkg
+            echo "   SONAME: $f <-> ${_rdep} (ignored)"
+            continue
+        fi
+        add_rundep "${_sdep}"
+    done
+    #
+    # If pkg uses any unknown SONAME error out.
+    #
+    if [ -n "$broken" -a -z "$allow_unknown_shlibs" ]; then
+        msg_error "$pkgver: cannot guess required shlibs, aborting!\n"
+    fi
+
+    store_pkgdestdir_rundeps
+
+    for f in ${shlib_requires}; do
+        sorequires+="${f} "
+    done
+    if [ -n "${sorequires}" ]; then
+        echo "${sorequires}" > ${PKGDESTDIR}/shlib-requires
+    fi
+}
diff --git a/common/hooks/pre-pkg/05-prepare-32bit.sh b/common/hooks/pre-pkg/05-prepare-32bit.sh
new file mode 100644
index 0000000..d0e0565
--- /dev/null
+++ b/common/hooks/pre-pkg/05-prepare-32bit.sh
@@ -0,0 +1,168 @@
+# This hook creates a new PKGDESTDIR with 32bit files for x86_64.
+#
+# Variables that can be used in templates:
+#	- lib32depends: if set, 32bit pkg will use this rather than "depends".
+#	- lib32disabled: if set, no 32bit pkg will be created.
+#	- lib32files: additional files to add to the 32bit pkg (abs paths, separated by blanks).
+#	- lib32symlinks: makes a symlink from lib32 to lib of the specified file (basename).
+#	- lib32mode:
+#		* if unset only files for libraries will be copied.
+#		* if set to "full" all files will be copied.
+
+hook() {
+	local destdir32=${XBPS_DESTDIR}/${pkgname}-32bit-${version}
+
+	# By default always enabled unless "lib32disabled" is set.
+	if [ -n "$lib32disabled" ]; then
+		return
+	fi
+	# This hook will only work when building for x86.
+	if [ "$XBPS_TARGET_MACHINE" != "i686" ]; then
+		return
+	fi
+	if [ -z "$lib32mode" ]; then
+		# Library mode, copy only relevant files to new destdir.
+		#
+		# If /usr/lib does not exist don't continue...
+		# except for devel packages, for which empty 32bit package will be created
+		if ! [ -d ${PKGDESTDIR}/usr/lib ] && ! [[ ${pkgname} == *-devel ]]; then
+			return
+		fi
+
+		mkdir -p ${destdir32}/usr/lib32
+		if [ -d ${PKGDESTDIR}/usr/lib ]; then
+			cp -a ${PKGDESTDIR}/usr/lib/* ${destdir32}/usr/lib32
+		fi
+
+		# Only keep shared libs, static libs, and pkg-config files.
+		find "${destdir32}" -not \( \
+			-name '*.pc' -or \
+			-name '*.so' -or \
+			-name '*.so.*' -or \
+			-name '*.a' -or \
+			-name '*.la' -or \
+			-name '*.o' -or \
+			-type d \
+		\) -delete
+
+		# Remove empty dirs.
+		while IFS= read -r -d '' f; do
+			_dir="${f##${destdir32}}"
+			[ -z "${_dir}" ] && continue
+			rmdir --ignore-fail-on-non-empty -p "$f" &>/dev/null
+		done < <(find ${destdir32} -type d -empty -print0 | sort -uz)
+
+		# Switch pkg-config files to lib32.
+		if [ -d ${destdir32}/usr/lib32/pkgconfig ]; then
+			sed -e 's,/usr/lib$,/usr/lib32,g' \
+			    -e 's,${exec_prefix}/lib$,${exec_prefix}/lib32,g' \
+			    -i ${destdir32}/usr/lib32/pkgconfig/*.pc
+		fi
+	elif [ "$lib32mode" = "full" ]; then
+		# Full 32bit mode; copy everything to new destdir.
+		mkdir -p ${destdir32}
+		cp -a ${PKGDESTDIR}/* ${destdir32}/
+		# remove symlink
+		if [ -h ${destdir32}/usr/lib32 ]; then
+			rm ${destdir32}/usr/lib32
+		fi
+		# if /usr/lib dir exists move it to lib32.
+		if [ -d ${destdir32}/usr/lib ]; then
+			mv ${destdir32}/usr/lib ${destdir32}/usr/lib32
+		fi
+	fi
+	if [[ ${pkgname} == *-devel ]]; then
+		mkdir -p ${destdir32}
+	fi
+	if [ ! -d ${destdir32} ]; then
+		return
+	fi
+
+	# If the rdeps file exist (runtime deps), copy and then modify it for
+	# 32bit dependencies.
+	trap - ERR
+
+	: > ${destdir32}/rdeps
+
+	if [ -s "$PKGDESTDIR/rdeps" ]; then
+		if [ -n "$lib32depends" ]; then
+			_deps="${lib32depends}"
+		else
+			_deps="$(<${PKGDESTDIR}/rdeps)"
+		fi
+		for f in ${_deps}; do
+			unset found pkgn pkgv _shprovides
+
+			pkgn="$($XBPS_UHELPER_CMD getpkgdepname $f)"
+			if [ -z "${pkgn}" ]; then
+				pkgn="$($XBPS_UHELPER_CMD getpkgname $f)"
+				if [ -z "${pkgn}" ]; then
+					msg_error "$pkgver: invalid dependency $f\n"
+				fi
+				pkgv="-$($XBPS_UHELPER_CMD getpkgversion ${f})"
+			else
+				pkgv="$($XBPS_UHELPER_CMD getpkgdepversion ${f})"
+			fi
+			# If dependency is a development pkg switch it to 32bit.
+			if [[ $pkgn == *-devel ]]; then
+				echo "   RDEP: $f -> ${pkgn}-32bit${pkgv} (development)"
+				printf "${pkgn}-32bit${pkgv} " >> ${destdir32}/rdeps
+				continue
+			fi
+			# If dependency does not have "shlib-provides" do not
+			# change it to 32bit.
+			for x in ${subpackages}; do
+				if [ "$x" = "$pkgn" ]; then
+					found=1
+					break
+				fi
+			done
+			if [ -z "$found" ]; then
+				# Dependency is not a subpkg, check shlib-provides
+				# via binpkgs.
+				_shprovides="$($XBPS_QUERY_CMD -R --property=shlib-provides "$pkgn")"
+				if [ -n "${_shprovides}" ]; then
+					echo "   RDEP: $f -> ${pkgn}-32bit${pkgv} (shlib-provides)"
+					printf "${pkgn}-32bit${pkgv} " >> ${destdir32}/rdeps
+				else
+					echo "   RDEP: $f -> ${pkgn}${pkgv} (no shlib-provides)"
+					printf "${pkgn}${pkgv} " >> ${destdir32}/rdeps
+				fi
+			else
+				if [ -s ${XBPS_DESTDIR}/${pkgn}-${version}/shlib-provides ]; then
+					# Dependency is a subpkg; check if it provides any shlib
+					# and convert to 32bit if true.
+					echo "   RDEP: $f -> ${pkgn}-32bit${pkgv} (subpkg, shlib-provides)"
+					printf "${pkgn}-32bit${pkgv} " >> ${destdir32}/rdeps
+				else
+					echo "   RDEP: $f -> ${pkgn}${pkgv} (subpkg, no shlib-provides)"
+					printf "${pkgn}${pkgv} " >> ${destdir32}/rdeps
+				fi
+			fi
+		done
+	fi
+
+	# Also install additional files set via "lib32files".
+	for f in ${lib32files}; do
+		echo "$pkgver: installing additional files: $f ..."
+		_targetdir=${destdir32}/${f%/*}/
+		mkdir -p ${_targetdir/\/usr\/lib/\/usr\/lib32}
+		cp -a ${PKGDESTDIR}/${f} ${_targetdir/\/usr\/lib/\/usr\/lib32}
+	done
+	# Additional symlinks to the native libdir.
+	for f in ${lib32symlinks}; do
+		echo "$pkgver: symlinking $f to the native libdir..."
+		if [ "${f%/*}" != "${f}" ]; then
+			mkdir -p ${destdir32}/usr/lib{,32}/${f%/*}/
+		else
+			mkdir -p ${destdir32}/usr/lib{,32}/
+		fi
+		ln -sfr ${destdir32}/usr/lib32/$f ${destdir32}/usr/lib/$f
+	done
+	# If it's a development pkg add a dependency to the 64bit pkg.
+	if [[ $pkgn == *-devel ]]; then
+		echo "   RDEP: ${pkgver}"
+		printf "${pkgver} " >> ${destdir32}/rdeps
+	fi
+	printf "\n" >> ${destdir32}/rdeps
+}
diff --git a/common/hooks/pre-pkg/06-shlib-provides.sh b/common/hooks/pre-pkg/06-shlib-provides.sh
new file mode 100644
index 0000000..a09eb6f
--- /dev/null
+++ b/common/hooks/pre-pkg/06-shlib-provides.sh
@@ -0,0 +1,56 @@
+# This hook executes the following tasks:
+#	- generates shlib-provides file for xbps-create(1)
+
+collect_sonames() {
+	local _destdir="$1" f _soname _fname _pattern
+	local _pattern="^[[:alnum:]]+(.*)+\.so(\.[0-9]+)*$"
+	local _versioned_pattern="^[[:alnum:]]+(.*)+\.so(\.[0-9]+)+$"
+	local _tmpfile=$(mktemp) || exit 1
+
+	if [ ! -d ${_destdir} ]; then
+		rm -f ${_tmpfile}
+		return 0
+	fi
+
+	# real pkg
+	find ${_destdir} -type f -name "*.so*" | while read f; do
+		_fname="${f##*/}"
+		case "$(file -bi "$f")" in
+		application/x-sharedlib*|application/x-pie-executable*)
+			# shared library
+			_soname=$(${OBJDUMP} -p "$f"|grep SONAME|awk '{print $2}')
+			# Register all versioned sonames, and
+			# unversioned sonames only when in libdir.
+			if [[ ${_soname} =~ ${_versioned_pattern} ]] ||
+			   [[ ${_soname} =~ ${_pattern} &&
+			   	( -e ${_destdir}/usr/lib/${_fname} ||
+				  -e ${_destdir}/usr/lib32/${_fname} ) ]]; then
+				echo "${_soname}" >> ${_tmpfile}
+				echo "   SONAME ${_soname} from ${f##${_destdir}}"
+			fi
+			;;
+		esac
+	done
+
+	for f in ${shlib_provides}; do
+		echo "$f" >> ${_tmpfile}
+	done
+	if [ -s "${_tmpfile}" ]; then
+		tr '\n' ' ' < "${_tmpfile}" > ${_destdir}/shlib-provides
+		echo >> ${_destdir}/shlib-provides
+	fi
+	rm -f ${_tmpfile}
+}
+
+hook() {
+	local _destdir32=${XBPS_DESTDIR}/${pkgname}-32bit-${version}
+
+	if [ -n "$noshlibprovides" ]; then
+		return 0
+	fi
+
+	# native pkg
+	collect_sonames ${PKGDESTDIR}
+	# 32bit pkg
+	collect_sonames ${_destdir32}
+}
diff --git a/common/hooks/pre-pkg/90-set-timestamps.sh b/common/hooks/pre-pkg/90-set-timestamps.sh
new file mode 100644
index 0000000..2113b02
--- /dev/null
+++ b/common/hooks/pre-pkg/90-set-timestamps.sh
@@ -0,0 +1,10 @@
+# This hook executes the following tasks:
+#	- sets the timestamps in a package to the commit date
+
+hook() {
+	# If SOURCE_DATE_EPOCH is set, set mtimes to that timestamp.
+	if [ -n "$SOURCE_DATE_EPOCH" ]; then
+		msg_normal "$pkgver: setting mtimes to %s\n" "$(date --date "@$SOURCE_DATE_EPOCH")"
+		find $PKGDESTDIR -print0 | xargs -0 touch -h --date "@$SOURCE_DATE_EPOCH"
+	fi
+}
diff --git a/common/hooks/pre-pkg/99-pkglint-subpkgs.sh b/common/hooks/pre-pkg/99-pkglint-subpkgs.sh
new file mode 100644
index 0000000..240d5ef
--- /dev/null
+++ b/common/hooks/pre-pkg/99-pkglint-subpkgs.sh
@@ -0,0 +1,54 @@
+# vim: set ts=4 sw=4 et:
+#
+# This hook executes the following tasks:
+#	- Warns if the main package is in subpackages=
+#	- Warns if a subpackage is unreachable (never appears in subpackages=)
+
+hook() {
+    local subpkgs matches
+
+    # Run this only against the main package
+    if [ "$pkgname" != "$sourcepkg" ]; then
+        return 0
+    fi
+
+    if [ -z "$subpackages" ]; then
+        return 0
+    fi
+
+    subpkgs=$(get_subpkgs)
+
+    # Sort the strings so they can be compare for equality
+    subpkgs="$(printf '%s\n' $subpkgs | sort)"
+    subpackages="$(printf '%s\n' $subpackages | sort)"
+
+    if [ "$subpackages" = "$subpkgs" ]; then
+        return 0
+    fi
+
+    # sed supports comment but let's put them here
+    # 1: print everything between pairs of <""> in subpackages[+]?="..."
+    # 2: multiline subpackages="...\n..."
+    # 2.1: For any line in the middle, i.e. no <"> exists, print it
+    # 2.2: For the first line, print everything after <">
+    # 2.3: For last line, print everything before <">
+    matches="$(sed -n -e 's/subpackages.*"\(.*\)"[^"]*$/\1/p' \
+            -e '/subpackages[^"]*"[^"]*$/,/"/{
+                /"/!p
+                /subpackages/s/.*"//p
+                s/".*//p
+            }' $XBPS_SRCPKGDIR/$pkgname/template |
+        tr '\v\t\r\n' '    ')"
+
+    for s in $subpkgs; do
+        case " $matches " in
+            *" $s "*) ;;
+            *) msg_warn "${s}_package() defined but will never be built.\n" ;;
+        esac
+    done
+
+    case " $matches " in
+        *" $pkgname "*)
+            msg_warn "$pkgname is sourcepkg but is in subpackages=.\n" ;;
+    esac
+}
diff --git a/common/hooks/pre-pkg/99-pkglint.sh b/common/hooks/pre-pkg/99-pkglint.sh
new file mode 100644
index 0000000..ea73c96
--- /dev/null
+++ b/common/hooks/pre-pkg/99-pkglint.sh
@@ -0,0 +1,189 @@
+# This hook checks for common issues related to void.
+
+hook() {
+	local error=0 filename= rev= libname= conflictPkg= conflictFile=
+	local conflictRev= ignore= found= mapshlibs=$XBPS_COMMONDIR/shlibs
+	local emptypkg=yes
+
+	set +E
+
+	# Check for forbidden directories that are symlinks in void.
+	for f in lib bin sbin lib64 lib32 usr/sbin usr/lib64; do
+		[ -e "${PKGDESTDIR}/${f}" ] || continue
+		if [ "${pkgname}" = "base-files" ]; then
+			if [ -L "${PKGDESTDIR}/${f}" ]; then
+				continue
+			fi
+			msg_red "${pkgver}: /${f} must be a symlink.\n"
+			error=1
+		else
+			msg_red "${pkgver}: /${f} must not exist.\n"
+			error=1
+		fi
+	done
+
+	for f in var/run usr/local; do
+		if [ -d ${PKGDESTDIR}/${f} ]; then
+			msg_red "${pkgver}: /${f} directory is not allowed, remove it!\n"
+			error=1
+		fi
+	done
+
+	for f in "$PKGDESTDIR"/*; do
+		f="${f##*/}"
+		case "$f" in
+		'*')	# The filename is exactly '*'
+			if [ -e "${PKGDESTDIR}/*" ]; then
+				msg_red "${pkgver}: File /* is not allowed\n"
+				error=1
+			fi
+			;;
+		lib|bin|sbin|lib64|lib32|usr|var|opt|etc|boot|srv)
+			emptypkg=no
+			;;
+		INSTALL|INSTALL.msg|REMOVE|REMOVE.msg|rdeps|shlib-requires|shlib-provides)
+			if [ ! -f "${PKGDESTDIR}/$f" ]; then
+				msg_red "${pkgver}: /${f} is not allowed\n"
+				error=1
+			fi
+			;;
+		*)
+			msg_red "${pkgver}: /${f} directory is not allowed, remove it!\n"
+			error=1
+			;;
+		esac
+	done
+
+	# Forbid empty packages unless build_style=meta or it is 32bit devel package
+	if [ "$build_style" != meta ] && [ "$emptypkg" != no ] && [[ ${pkgname} != *-devel-32bit ]]; then
+		msg_red "${pkgver}: PKGDESTDIR is empty and build_style != meta\n"
+		error=1
+	fi
+
+	# Check that configuration files really exist.
+	for f in $(expand_destdir "${conf_files}"); do
+		if [ ! -f "${PKGDESTDIR}/${f}" ]; then
+			msg_red "${pkgver}: '$f' configuration file not in PKGDESTDIR!\n"
+			error=1
+		fi
+	done
+
+	# Check for l10n files in usr/lib/locale
+	if [ -d ${PKGDESTDIR}/usr/lib/locale ]; then
+		msg_red "${pkgver}: /usr/lib/locale is forbidden, use /usr/share/locale!\n"
+		error=1
+	fi
+
+	# Check for bash completions in etc/bash_completion.d
+	# should be on usr/share/bash-completion/completions
+	if [ -d ${PKGDESTDIR}/etc/bash_completion.d ]; then
+		msg_red "${pkgver}: /etc/bash_completion.d is forbidden. Use /usr/share/bash-completion/completions.\n"
+		error=1
+	fi
+
+	# Prevent packages from installing to these paths in etc, they should use
+	# their equivalent in usr/lib
+	for f in udev/{rules.d,hwdb.d} modprobe.d sysctl.d; do
+		if [ -d ${PKGDESTDIR}/etc/${f} ]; then
+			msg_red "${pkgver}: /etc/${f} is forbidden. Use /usr/lib/${f}.\n"
+			error=1
+		fi
+	done
+
+	# Likewise with the comment above but for usr/share
+	for f in X11/xorg.conf.d gconf/schemas; do
+		if [ -d ${PKGDESTDIR}/etc/${f} ]; then
+			msg_red "${pkgver}: /etc/${f} is forbidden. Use /usr/share/${f}.\n"
+			error=1
+		fi
+	done
+
+	if [ -d ${PKGDESTDIR}/etc/dracut.conf.d ]; then
+		msg_red "${pkgver}: /etc/dracut.conf.d is forbidden. Use /usr/lib/dracut/dracut.conf.d.\n"
+		error=1
+	fi
+
+	if [ -d ${PKGDESTDIR}/usr/man ]; then
+		msg_red "${pkgver}: /usr/man is forbidden, use /usr/share/man.\n"
+		error=1
+	fi
+
+	if [ -d ${PKGDESTDIR}/usr/doc ]; then
+		msg_red "${pkgver}: /usr/doc is forbidden. Use /usr/share/doc.\n"
+		error=1
+	fi
+
+	if [ -d ${PKGDESTDIR}/usr/dict ]; then
+		msg_red "${pkgver}: /usr/dict is forbidden. Use /usr/share/dict.\n"
+		error=1
+	fi
+
+	# Forbid files would be generated by mimedb trigger
+	for f in XMLnamespaces aliases generic-icons globs globs2 icons \
+		magic mime.cache subclasses treemagic types version ; do
+		if [ -f "${PKGDESTDIR}/usr/share/mime/$f" ]; then
+			msg_red "${pkgver}: /usr/share/mime/$f is forbidden. Delete it.\n"
+			error=1
+		fi
+	done
+
+	if [ $error -gt 0 ]; then
+		msg_error "${pkgver}: cannot continue with installation!\n"
+	fi
+
+	# Check for missing shlibs and SONAME bumps.
+	if [ ! -s "${PKGDESTDIR}/shlib-provides" ]; then
+		return 0
+	fi
+
+	for filename in $(<${PKGDESTDIR}/shlib-provides); do
+		rev=${filename#*.so.}
+		libname=${filename%.so*}
+		_shlib=$(echo "$libname"|sed -E 's|\+|\\+|g')
+		_pkgname=$(echo "$pkgname"|sed -E 's|\+|\\+|g')
+		if [ "$rev" = "$filename" ]; then
+			_pattern="^${_shlib}\.so[[:blank:]]+${_pkgname}-[^-]+_[0-9]+"
+		else
+			_pattern="^${_shlib}\.so\.[0-9]+(.*)[[:blank:]]+${_pkgname}-[^-]+_[0-9]+"
+		fi
+		grep -E "${_pattern}" $mapshlibs | { \
+			while read conflictFile conflictPkg ignore; do
+				found=1
+				conflictRev=${conflictFile#*.so.}
+				if [ -n "$ignore" -a "$ignore" != "$XBPS_TARGET_MACHINE" ]; then
+					continue
+				elif [ "$rev" = "$conflictRev" ]; then
+					continue
+				elif [[ ${rev}.* =~ $conflictRev ]]; then
+					continue
+				fi
+				msg_red "${pkgver}: SONAME bump detected: ${libname}.so.${conflictRev} -> ${libname}.so.${rev}\n"
+				msg_red "${pkgver}: please update common/shlibs with this line: \"${libname}.so.${rev} ${pkgver}\"\n"
+				msg_red "${pkgver}: all reverse dependencies should also be revbumped to be rebuilt against ${libname}.so.${rev}:\n"
+				_revdeps=$($XBPS_QUERY_XCMD -Rs ${libname}.so -p shlib-requires|cut -d ' ' -f1)
+				for x in ${_revdeps}; do
+					msg_red "   ${x%:}\n"
+				done
+				msg_error "${pkgver}: cannot continue with installation!\n"
+			done
+			# Try to match provided shlibs in virtual packages.
+			for f in ${provides}; do
+				_vpkgname="$($XBPS_UHELPER_CMD getpkgname ${f} 2>/dev/null)"
+				_spkgname="$(grep "^${filename}" $mapshlibs | cut -d ' ' -f2)"
+				_libpkgname="$($XBPS_UHELPER_CMD getpkgname ${_spkgname} 2>/dev/null)"
+				if [ -z "${_spkgname}" -o  -z "${_libpkgname}" ]; then
+					continue
+				fi
+				if [ "${_vpkgname}" = "${_libpkgname}" ]; then
+					found=1
+					break
+				fi
+			done;
+			if [ -z "$found" ]; then
+				_myshlib="${libname}.so"
+				[ "${_myshlib}" != "${rev}" ] && _myshlib+=".${rev}"
+				msg_warn "${pkgver}: ${_myshlib} not found in common/shlibs!\n"
+			fi;
+		}
+	done
+}
diff --git a/common/hooks/pre-pkg/999-collected-rdeps.sh b/common/hooks/pre-pkg/999-collected-rdeps.sh
new file mode 100644
index 0000000..67f4a62
--- /dev/null
+++ b/common/hooks/pre-pkg/999-collected-rdeps.sh
@@ -0,0 +1,7 @@
+# This hook displays resolved dependencies for a pkg.
+
+hook() {
+	if [ -e $PKGDESTDIR/rdeps ]; then
+		echo "   $(cat $PKGDESTDIR/rdeps)"
+	fi
+}
diff --git a/common/options.description b/common/options.description
new file mode 100644
index 0000000..f9e3d0c
--- /dev/null
+++ b/common/options.description
@@ -0,0 +1,108 @@
+desc_option_aalib="Enable support for aalib video output"
+desc_option_acl="Enable support for ACLs and Extended Attributes"
+desc_option_alsa="Enable support for ALSA"
+desc_option_aom="Enable support for the AV1 codec"
+desc_option_avahi="Enable support for Avahi"
+desc_option_avif="Enable support for avif image format"
+desc_option_backtrace="Enable support for backtraces via libunwind"
+desc_option_bluetooth="Enable support for bluetooth"
+desc_option_cdparanoia="Enable support for CD audio (cdparanoia)"
+desc_option_colord="Enable support for colord"
+desc_option_consolekit="Enable support for ConsoleKit"
+desc_option_cups="Enable support for CUPS"
+desc_option_dav1d="Enable support for the AV1 decoder"
+desc_option_dbus="Enable support for D-BUS"
+desc_option_dri2="Enable support for the DRI2 extension"
+desc_option_dri="Enable support for the DRI extension"
+desc_option_efi="Enable support for EFI"
+desc_option_expat="Enable support for XML via expat"
+desc_option_faac="Enable support for FAAC codec"
+desc_option_fdk_aac="Enable support for Fraunhofer FDK AAC codec"
+desc_option_framebuffer="Enable support for the Framebuffer"
+desc_option_gdk_pixbuf="Enable support to use transparency via gdk-pixbuf"
+desc_option_geoclue2="Enable support for geolocation (v2)"
+desc_option_geoip="Enable support for IP geolocation"
+desc_option_gif="Enable support for GIF images"
+desc_option_gir="Enable support for gobject introspection data"
+desc_option_gles2="Enable support for GLES (v2)"
+desc_option_gles="Enable support for GLES (v1)"
+desc_option_gnome="Enable support for GNOME"
+desc_option_gmic="Enable support for image processing with G'MIC"
+desc_option_gnutls="Enable support for SSL with gnutls"
+desc_option_gssapi="Enable support for GSSAPI"
+desc_option_gstreamer="Enable support for GStreamer"
+desc_option_gtk="Enable support for the GTK+2 GUI toolkit"
+desc_option_gtk3="Enable support for the GTK+3 GUI toolkit"
+desc_option_guile="Enable support for Guile lang"
+desc_option_ffmpeg="Enable support for FFmpeg"
+desc_option_harfbuzz="enable support for Harfbuzz"
+desc_option_idn="Enable support for IDN"
+desc_option_imagemagick="Enable support for ImageMagick"
+desc_option_jack="Enable support for the JACK sound server"
+desc_option_jpeg="Enable support for JPEG images"
+desc_option_lame="Enable support for the LAME encoder"
+desc_option_ldap="Enable support for LDAP"
+desc_option_ldns="Enable support for LDNS DNSSEC library"
+desc_option_libao="Enable support for libao sound library"
+desc_option_libedit="Enable support for NetBSD's libedit"
+desc_option_lua="Enable support for Lua"
+desc_option_lz4="Enable support for LZ4 compression format"
+desc_option_lzo="Enable support for LZO compression format"
+desc_option_microhttpd="Enable support for microhttpd"
+desc_option_mpcdec="Enable support for the Musepack decoder"
+desc_option_native_build="Enable instruction subsets supported by the build computer"
+desc_option_notify="Enable support for desktop notifications (libnotify)"
+desc_option_nvenc="Enable support for NVENC codecs"
+desc_option_openblas="Enable support for OpenBLAS accelerated linear algebra"
+desc_option_opengl="Enable support for OpenGL"
+desc_option_openssl="Enable support for SSL with OpenSSL"
+desc_option_pam="Enable support for PAM"
+desc_option_pdf="Enable support to preview PDF files"
+desc_option_perl="Enable support for Perl"
+desc_option_png="Enable support for PNG images"
+desc_option_portaudio="Enable support for PortAudio"
+desc_option_ps="Enable support to preview PS files"
+desc_option_pulseaudio="Enable support for the PulseAudio sound server"
+desc_option_python="Enable support for Python"
+desc_option_qrencode="Enable support for qrencode"
+desc_option_qt="Enable support for building the QT UI"
+desc_option_raw="Enable support for RAW image files"
+desc_option_readline="Enable support for GNU readline"
+desc_option_rpi="Enable support for Raspberry Pi"
+desc_option_rtmp="Enable support for RTMP"
+desc_option_sasl="Enable support for SASL"
+desc_option_sdl="Enable support for SDL (1.x)"
+desc_option_sdl2="Enable support for SDL (2.x)"
+desc_option_seccomp="Enable support for syscall filtering"
+desc_option_shoutcast="Enable support for shoutcast"
+desc_option_smb="Enable support for SMB protocol"
+desc_option_sndio="Enable support for the sndio sound server"
+desc_option_snmp="Enable support for SNMP"
+desc_option_ssh="Enable support for SSH"
+desc_option_ssl="Enable support for SSL"
+desc_option_startup_notification="Enable support for desktop notification"
+desc_option_static="Enable static linking"
+desc_option_svg="Enable support for SVG images"
+desc_option_svtav1="Enable support for the SVT-AV1 Encoder and Decoder"
+desc_option_tcpwrappers="Enable support for tcpwrappers"
+desc_option_tiff="Enable support for TIFF images"
+desc_option_upower="Enable support for UPower"
+desc_option_usb="Enable support for USB"
+desc_option_v4l2="Enable support for V4L2 (Video 4 Linux 2)"
+desc_option_vaapi="Enable support for VA-API"
+desc_option_vala="Generate bindings for vala"
+desc_option_vapoursynth="Enable support for VapourSynth"
+desc_option_vdpau="Enable support for VDPAU"
+desc_option_vpx="Enable support for VP8/VP9 codecs"
+desc_option_vulkan="Enable support for Vulkan"
+desc_option_wavpack="Enable support for the Wavpack audio format"
+desc_option_wayland="Enable support for the Wayland backend"
+desc_option_x11="Enable support for X11"
+desc_option_x265="Enable support for the x265 codec"
+desc_option_xml="Enable support for XML"
+desc_option_xscreensaver="Enable support for libXScrnSaver to determine idle time"
+desc_option_zeitgeist="Enable support for ZeitGeist"
+desc_option_zimg="Enable support for the zimg image processing library"
+desc_option_zstd="Enable support for ZSTD compression format"
+desc_option_elogind="Enable support for elogind"
+desc_option_drm="Enable support for DRM"
diff --git a/common/repo-keys/1e:23:91:e5:12:be:9b:dc:4c:c5:b8:af:cf:a7:a9:bb.plist b/common/repo-keys/1e:23:91:e5:12:be:9b:dc:4c:c5:b8:af:cf:a7:a9:bb.plist
new file mode 100644
index 0000000..84649d6
--- /dev/null
+++ b/common/repo-keys/1e:23:91:e5:12:be:9b:dc:4c:c5:b8:af:cf:a7:a9:bb.plist
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>public-key</key>
+	<data>LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF1T1ZrUjJPWVV5cW11NGMrWWVSOApMSnNSbzJXNzJ6MVBIMlZpb1FDR2hpdy9ZSW5PSFVSVzJLYjVRd3B2OXIxUTF1UmcvV2NYZU5PVGNObEw5NXlSCmRMbGJpK2dhMkVnOXJ6TjFtR2RLUVZzN0xEYmR3WFdZS2UvQ3BRZlpaTHBLS0tGRnlmbXJINDUrYzR0YitHNVIKdjdkNUZ2cTBhNmVMQ2g5VmdIZE9iQmNzSU55N1hJRUJwcllkYkpIaWVJdDNpVVpQb0p4ZTNNZ0gzTXFFV1J1RApOVlhEWHJGNDdvSFRnK0h3NHNZd3Q0aWl6T2NSNzNleFFmQ0FFL0ZWdU8zYWpPTTlWcVJ5N1VyNVFHMGxQZWRhCjBiU3c2WjJ1QmJOaFhVTDE4ZUk1L2ZHT3kxTjhwUVRRS0IvTHlIa1lFTy8zTGhndklCeGFmSlZXbU1IWTlJM1AKczdoSkM1TmhTb2FyazNibUlLRi9Rb3RXYnMvN0VrSFpjYTJyQk83TmpqYSt1ZU82eS9BbUVDeEhvY0pWb0loZwprbFN5OGROK1RlQytCRWt2OHdlbjRtUVdITFRnV2tob2xtSm01Y0Yya3BlYStNVVNhYnIrYzNHOExPY2pDQm8xCllTVkc0N1FxWExCY3EvaHg0SnJIRG05ODZGZU5CY3oyMWJFclh3M2JVT04xVjVOMGVlYXNOZmY4amNqb3lQczIKUzBrdjdTb1NicXZ3Qm0zMFlaMEI4NEdtai9telFoWUlVTTd3ZnJlWkZ1RGJFS2VPVDQ5WldPNUJGL01XWEF0RwpqWW1RWEFDZ1UxTmdIZEVzeXh2ODhoaUpRL3NwWnNXaytDbGFzL25wZFpBUDZyUjdzdjBYUGNRL3l1djBFTTlrCmdqZ2pMNmttTUtnVTNlc1k4RGJWSjlVQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=</data>
+	<key>public-key-size</key>
+	<integer>4096</integer>
+	<key>signature-by</key>
+	<string>Cereus Linux</string>
+</dict>
+</plist>
diff --git a/common/repo-keys/3d:b9:c0:50:41:a7:68:4c:2e:2c:a9:a2:5a:04:b7:3f.plist b/common/repo-keys/3d:b9:c0:50:41:a7:68:4c:2e:2c:a9:a2:5a:04:b7:3f.plist
new file mode 100644
index 0000000..41bc2cb
--- /dev/null
+++ b/common/repo-keys/3d:b9:c0:50:41:a7:68:4c:2e:2c:a9:a2:5a:04:b7:3f.plist
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>public-key</key>
+	<data>LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUFvM1Nrc2p5N01PMmc4UWxsZjdCVQp1aXhFUWlqN3FOSVJrU0hrWWw4SGxxd1hOczFnK1FzbzhGV3dSbDNMbUpTVW5wT1BaOG1sdVdSajd4Y2pLbnVJCnhPRjBtQS8vM0lzTnVId2dYV2RLL0JiT29wNzFLZmt4aEE0WjhwK0hRbmhLMThxUkFPbG9xOGJ6WXZhaGI2NmEKemdWVTVFM1JzRDU4V0M2ZTFOUVdSSGpiMG1TM2h6M1NxVWVWZFVMT20zVzZBRTdYdWlVQVJOSEdyY1ljMXkyKwpxNjBKWHMrVk5sRlMwaGdDdnpqS3phMVg5cWtzQndzTmdaRlhBcXN1MGFKRndYSTEvM2R4ZWxBcUZFbnRMWVFSCjA4NHpaTDFmWDVRMWlacGNEaHVhTWZVREVZQjA4UzdKTTBYKytibkxxVnphVTZzc0RXdGtzbFJaNjNaVStISTUKemk5a0pyc25LcU5Pa3BKSnJTUkRyMGFvRjV2RDRwN20vYWdZKzdTRk5aaDZzOUJ5V0x3NDVFdytwalVVUmp5aQp6T01TSFhEM3YzczhFdzZkV29wbTVQTGUvUEgzZWFiMEVnbG9yVDZhYmRwaCtaVG4zaUxMWVVkSGNmQ1FDN01GCkNmVGl1TWt4SkJpaCtoOEhKaUlBdmpDZjVxdjZiaFpEUHpGRzAwbEpYRUZwNHRpbGp6eTFmbitiMkdLY3BDOWQKUUs4TEc3M0RFaXhacHBmU09IU09MMWYxVlBzZTBRdnl6d2RWc0xzR0dqV0FaZkw4WUdVZDl4Y20yeW5tVzFuNgpKTjl6NE9oZ3lRa21mNUFFUXpYSUxQR0d1MlREUVh5c05IRG0vUnRMMHJPN3cxbFVKSTVYOW1kbEZYd0xUWHI3ClYrU25aK3U5VCtFREg1NTV6WDJDZTgwQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=</data>
+	<key>public-key-size</key>
+	<integer>4096</integer>
+	<key>signature-by</key>
+	<string>Void Linux</string>
+</dict>
+</plist>
diff --git a/common/repo-keys/60:ae:0c:d6:f0:95:17:80:bc:93:46:7a:89:af:a3:2d.plist b/common/repo-keys/60:ae:0c:d6:f0:95:17:80:bc:93:46:7a:89:af:a3:2d.plist
new file mode 100644
index 0000000..c1e82a7
--- /dev/null
+++ b/common/repo-keys/60:ae:0c:d6:f0:95:17:80:bc:93:46:7a:89:af:a3:2d.plist
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>public-key</key>
+	<data>LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF2clN6QlpNdmd2T0NJM0FYYk9qYQoycktSa0pTVE0zYy9FalRJZ0NnRFhndW05M0JQQ3RZOE1jRlZvQ1U0T2lYSEdmVG1xMzlCVk5wTHZMSEw5S2sxCnAyNzhTQmhYVk90YkIyRVZtREtudmZJREVUbGRMR3plN3JaTlJKZHR1TjJtWi9UVnJVQjlTMHlRYytJdWY0aHYKMytEOTdWSWRUSkhBN0FTcjA0MjhwcEVHSkd3U1NoWTJYSm05RDVJMEV1R1JXYzE0TUVHN2RJS0ppWWlNMG5FNAp0WW8yL3ZINElGVEhkblZBM2dZaVp5RG5idUNBUi84RVNmVVRVMTNTTkNPZGJ1ZGYzRDVCY3krVWlNREpJM1llCjRNRktCclQ5WmhaK0dzWEJaWTQ4MmxxaVppNkNMNXB0YzlJUUZmOC9lS1phOGphdGtpVkZWZ3JLZU5Sak9UeE4KZldTdTJua3hHTlgrYmhYWXRoaUdXbUpFWThjQ0FQeUZOK0x2NVJldEsyNTZnZGNiMnNrbUVxZWZ2MnpQQyt3VgpXQmJkSDViRDRiWmpuME42Wmw4MXJ2NVJ6RHZudmYrdkQxNGFGVWJaOFFGcXU3NVBiTDR3Nm1ZTTRsZE0vZzBSCjZOWEU4QXo5Qnd4MnREZlllS3V1dHcxRXBQbTJZdkZ5VFViMWNveUF1VEdSeUFhcDFVVEh2ZzlsaFBJSm1oRlEKSjVrQ2cxcUQ3QTMxV2wwUmxuZTZoZ0dvMFpaTko1Y0pNL3YvelNUS0pjdUZnd283SDBoT0dpbDZEZm84OUI0agpHOTZBQ3lQUytEVktQRlhSWXdqL0FrYkhwYVEyZjFGTUFvU3BCcXVEcUhoM3VrazcxS1g2ajE5dDBpRjhEUUxyCnZ0RlNTZElqREEwMmx3ZVY5TmFRcFdzQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=</data>
+	<key>public-key-size</key>
+	<integer>4096</integer>
+	<key>signature-by</key>
+	<string>Void Linux</string>
+</dict>
+</plist>
diff --git a/common/scripts/README.xbps-cycles.md b/common/scripts/README.xbps-cycles.md
new file mode 100644
index 0000000..12774e5
--- /dev/null
+++ b/common/scripts/README.xbps-cycles.md
@@ -0,0 +1,22 @@
+# Cycle detector for void-packages
+
+This script enumerates dependencies for packages in a
+[void-packages repository](https://github.com/void-linux/void-packages)
+and identifies build-time dependency cycles.
+
+For command syntax, run `xbps-cycles.py -h`. Often, it may be sufficient to run
+`xbps-cycles.py` with no arguments. By default, the script will look for a
+repository at `$XBPS_DISTDIR`; if that variable is not defined, the current
+directory is used instead. To override this behavior, use the `-d` option to
+provide the path to your desired void-packages clone.
+
+The standard behavior will be to spawn multiple processes, one per CPU, to
+enumerate package dependencies. This is by far the most time-consuming part of
+the execution. To override the degree of parallelism, use the `-j` option.
+
+Dependencies can be cached on disk, one file per package, in directory
+passed with `-c` option. On next execution with same option, dependencies are
+read from file rather than computed.
+
+Failures should be harmless but, at this early stage, unlikely to be pretty or
+even helpful.
diff --git a/common/scripts/lint-commits b/common/scripts/lint-commits
new file mode 100755
index 0000000..01c4eda
--- /dev/null
+++ b/common/scripts/lint-commits
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+die() {
+	printf '%s\n' "$*" >&2
+	exit 1
+}
+
+GIT_CMD=$(command -v chroot-git 2>/dev/null) ||
+GIT_CMD=$(command -v git 2>/dev/null) ||
+die "neither chroot-git nor git could be found!"
+
+rev_parse() {
+	if [ -n "$1" ]; then
+		"$GIT_CMD" rev-parse --verify "$1"
+	else
+		shift
+		while test "$#" != 0
+		do
+			"$GIT_CMD" rev-parse --verify "$1" 2>/dev/null && return
+			shift
+		done
+		return 1
+	fi
+}
+
+base=$(rev_parse "$1" FETCH_HEAD ORIG_HEAD) || die "base commit not found"
+tip=$(rev_parse "$2" HEAD) || die "tip commit not found"
+status=0
+
+for cmt in $("$GIT_CMD" rev-list --abbrev-commit $base..$tip)
+do
+	"$GIT_CMD" cat-file commit "$cmt" |
+	awk -vC="$cmt" '
+	# skip header
+	/^$/ && !msg { msg = 1; next }
+	!msg { next }
+	# 3: long-line-is-banned-except-footnote-like-this-for-url
+	(NF > 2) && (length > 80) { print C ": long line: " $0; exit 1 }
+	!subject {
+		if (length > 50) { print C ": subject is a bit long" }
+		if (!($0 ~ ":" || $0 ~ "^Take over maintainership " || $0 ~ "^Orphan ")) { print C ": subject does not follow CONTRIBUTING.md guildelines"; exit 1 }
+		# Below check is too noisy?
+		# if (!($0 ~ "^New package:" || $0 ~ ".*: update to")) {
+		# 	print C ": not new package/update/removal?"
+		# }
+		subject = 1; next
+	}
+	/^$/ { body = 1; next }
+	!body { print C ": second line must be blank"; exit 1 }
+	' || status=1
+done
+exit $status
diff --git a/common/scripts/lint-version-change b/common/scripts/lint-version-change
new file mode 100755
index 0000000..5e96877
--- /dev/null
+++ b/common/scripts/lint-version-change
@@ -0,0 +1,90 @@
+#!/bin/sh
+
+# when $3 is empty, template is read from working directory
+template="$1" base_rev="$2" tip_rev="$3"
+status=0
+
+die() {
+	printf '%s\n' "$*" >&2
+	exit 1
+}
+
+if ! [ "$base_rev" ]; then
+	die "usage: $0 TEMPLATE BASE-REVISION [TIP-REVISION]"
+fi
+
+if command -v chroot-git >/dev/null 2>&1; then
+	GIT_CMD=$(command -v chroot-git)
+elif command -v git >/dev/null 2>&1; then
+	GIT_CMD=$(command -v git)
+else
+	die "neither chroot-git nor git could be found"
+fi
+
+scan() {
+	rx="$1" msg="$2"
+	template_path=$template
+	if [ "$tip_rev" ]; then
+		template_path="${tip_rev}:${template}"
+		maybe_git="$GIT_CMD"
+		revspec="[^:]*:"
+	fi
+	$maybe_git grep -P -Hn -e "$rx" "$template_path" |
+		grep -v -P -e "[^:]*:[^:]*:\s*#" |
+		sed "s/^${revspec}\([^:]*:[^:]*:\)\(.*\)/\1 $msg/"
+}
+
+show_template() {
+	rev="$1"
+	if [ "$rev" ]; then
+		$GIT_CMD cat-file blob "${rev}:${template}" 2>/dev/null
+	else
+		cat "${template}" 2>/dev/null
+	fi
+}
+
+show_template_var() {
+	rev="$1" var="$2"
+	show_template "$rev" | grep -Po '^'${var}'=\K.*'
+}
+
+revision_reset() {
+	[ "${revision}" = 1 ] && return
+	if [ "$prev_version" ]; then
+		case "$prev_reverts" in
+			*"$version"_*) return
+		esac
+		action=update
+	else
+		action=creation
+	fi
+	scan "^revision=" "revision should be set to 1 on ${action}"
+	status=1
+}
+
+reverts_on_downgrade() {
+	[ "$version" ] || return
+	case "$reverts" in
+		*"$prev_version"_*) ;;
+		*)
+			scan "^version=" "missing reverts= for downgrade $prev_version to $version"
+			status=1
+	esac
+}
+
+version_change() {
+	version="$(show_template_var "$tip_rev" version)"
+	revision="$(show_template_var "$tip_rev" revision)"
+	reverts="$(show_template_var "$tip_rev" reverts)"
+	prev_version="$(show_template_var "$base_rev" version)"
+	prev_reverts="$(show_template_var "$base_rev" reverts)"
+	xbps-uhelper cmpver "$version" "$prev_version"
+	case "$?" in
+		1) revision_reset;;
+		-1|255) reverts_on_downgrade;;
+	esac
+}
+
+version_change
+
+exit $status
diff --git a/common/scripts/xbps-cycles.py b/common/scripts/xbps-cycles.py
new file mode 100755
index 0000000..dbfd538
--- /dev/null
+++ b/common/scripts/xbps-cycles.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+import glob
+import subprocess
+import multiprocessing
+
+from argparse import ArgumentParser
+
+import networkx as nx
+
+
+def enum_depends(pkg, xbpsdir, cachedir):
+	'''
+	Return a pair (pkg, [dependencies]), where [dependencies] is the list
+	of dependencies for the given package pkg. The argument xbpsdir should
+	be a path to a void-packages repository. Dependencies will be
+	determined by invoking
+
+		<xbpsdir>/xbps-src show-build-deps <pkg>
+
+	unless <cachedir>/deps-<pkg> file exist, in that case it is read.
+
+	If the return code of this call nonzero, a message will be printed but
+	the package will treated as if it has no dependencies.
+	'''
+	if cachedir:
+		cachepath = os.path.join(cachedir, 'deps-' + pkg)
+		try:
+			with open(cachepath) as f:
+				return pkg, [l.strip() for l in f]
+		except FileNotFoundError:
+			pass
+
+	cmd = [os.path.join(xbpsdir, 'xbps-src'), 'show-build-deps', pkg]
+
+	try:
+		deps = subprocess.check_output(cmd)
+	except subprocess.CalledProcessError as err:
+		print('xbps-src failed to find dependencies for package', pkg)
+		deps = [ ]
+	else:
+		deps = [d for d in deps.decode('utf-8').split('\n') if d]
+		if cachedir:
+			with open(cachepath, 'w') as f:
+				for d in deps:
+					print(d, file=f)
+
+	return pkg, deps
+
+
+def find_cycles(depmap, xbpsdir):
+	'''
+	For a map depmap: package -> [dependencies], construct a directed graph
+	and identify any cycles therein.
+
+	The argument xbpsdir should be a path to the root of a void-packages
+	repository. All package names in depmap will be appended to the path
+	<xbpsdir>/srcpkgs and reduced with os.path.realpath to coalesce
+	subpackages.
+	'''
+	G = nx.DiGraph()
+
+	for i, deps in depmap.items():
+		path = os.path.join(xbpsdir, 'srcpkgs', i)
+		i = os.path.basename(os.path.realpath(path))
+
+		for j in deps:
+			path = os.path.join(xbpsdir, 'srcpkgs', j.strip())
+			j = os.path.basename(os.path.realpath(path))
+			G.add_edge(i, j)
+
+	for c in nx.strongly_connected_components(G):
+		if len(c) < 2: continue
+		pkgs = nx.to_dict_of_lists(G, c)
+
+		p = min(pkgs.keys())
+		cycles = [ ]
+		while True:
+			cycles.append(p)
+
+			# Cycle is complete when package is not in map
+			try: deps = pkgs.pop(p)
+			except KeyError: break
+
+		        # Any of the dependencies here contributes to a cycle
+			p = min(deps)
+			if len(deps) > 1:
+				print('Mulitpath: {} -> {}, choosing first'.format(p, deps))
+
+		if cycles:
+			print('Cycle: ' + ' -> '.join(cycles) + '\n')
+
+
+if __name__ == '__main__':
+	parser = ArgumentParser(description='Cycle detector for xbps-src')
+	parser.add_argument('-j', '--jobs', default=None,
+			type=int, help='Number of parallel jobs')
+	parser.add_argument('-c', '--cachedir',
+			default=None, help='''Directory to use as cache for xbps-src show-build-deps. Directory must exist already.''')
+	parser.add_argument('-d', '--directory',
+			default=None, help='Path to void-packages repo')
+
+	args = parser.parse_args()
+
+	if not args.directory:
+		try: args.directory = os.environ['XBPS_DISTDIR']
+		except KeyError: args.directory = '.'
+
+	cachedir = args.cachedir
+
+	pool = multiprocessing.Pool(processes = args.jobs)
+
+	pattern = os.path.join(args.directory, 'srcpkgs', '*')
+	depmap = dict(pool.starmap(enum_depends,
+			((os.path.basename(g), args.directory, cachedir)
+				for g in glob.iglob(pattern))))
+
+	find_cycles(depmap, args.directory)
diff --git a/common/shlibs b/common/shlibs
new file mode 100644
index 0000000..836cacc
--- /dev/null
+++ b/common/shlibs
@@ -0,0 +1,4148 @@
+# --*-- shell --*--
+#
+# This file represents a map between shared libraries and packages
+# in XBPS. Every shared library installed by a package must be
+# listed here and mapped to a binary package.
+#
+# The first field lists the exact SONAME embedded in binaries.
+#
+# The second field lists the package/version tuple containing the SONAME.
+# The version component is used as greater than or equal to that version
+# in resulting binary package.
+#
+# The third field (optional) specifies that shared library should not be used
+# to perform checks of soname bumps.
+#
+# PLEASE NOTE: when multiple packages provide the same SONAME, the first
+# one (order top->bottom) is preferred over the next ones.
+#
+libc.so musl-1.1.24_7
+libc.so.6 glibc-2.32_1
+libm.so.6 glibc-2.32_1
+libpthread.so.0 glibc-2.32_1
+librt.so.1 glibc-2.32_1
+libdl.so.2 glibc-2.32_1
+ld-linux-x86-64.so.2 glibc-2.32_1 x86_64
+ld-linux.so.2 glibc-2.32_1 i686
+ld-linux.so.3 glibc-2.32_1 armv5tel
+ld-linux-aarch64.so.1 glibc-2.32_1 aarch64
+ld64.so.2 glibc-2.32_1 ppc64
+ld.so.1 glibc-2.32_1 mips
+ld.so.1 glibc-2.32_1 ppc
+ld-linux-armhf.so.3 glibc-2.32_1
+libresolv.so.2 glibc-2.32_1
+libanl.so.1 glibc-2.32_1
+libthread_db.so.1 glibc-2.32_1
+libutil.so.1 glibc-2.32_1
+libnsl.so.1 glibc-2.32_1
+libnss_db.so.2 glibc-2.32_1
+libnss_files.so.2 glibc-2.32_1
+libnss_compat.so.2 glibc-2.32_1
+libnss_dns.so.2 glibc-2.32_1
+libnss_hesiod.so.2 glibc-2.32_1
+libcrypt.so.1 glibc-2.32_1
+libBrokenLocale.so.1 glibc-2.32_1
+libmemusage.so glibc-2.32_1
+libSegFault.so glibc-2.32_1
+libpcprofile.so glibc-2.32_1
+libcidn.so.1 glibc-2.32_1
+libmvec.so.1 glibc-2.32_1
+libcddgmp.so.0 cddlib-0.94m_1
+libcdd.so.0 cddlib-0.94m_1
+libz.so.1 zlib-1.2.3_1
+libb2.so.1 libb2-0.98.1_1
+libbz2.so.1 bzip2-1.0.5_1
+libarchive.so.13 libarchive-3.5.1_2
+libcc1.so.0 gcc-6.2.1_1
+libcc1plugin.so.0 gcc-6.2.1_1
+libitm.so.1 libitm-4.7.3_1
+liblto_plugin.so.0 gcc-4.7.3_1
+libgcc_s.so.1 libgcc-4.4.0_1
+libgo.so.16 libgo-10.2.0_1
+libperl.so.5.34 perl-5.34.0_1
+libgmp.so.10 gmp-5.0.1_1
+libgmpxx.so.4 gmpxx-6.0.0_2
+libmpfi.so.0 mpfi-1.5.3_1
+libmpfr.so.6 mpfr-4.0.0_1
+libppl.so.14 ppl-1.2_1
+libppl_c.so.4 ppl-0.11_1
+libstdc++.so.6 libstdc++-4.4.0_1
+libssp.so.0 libssp-4.4.0_1
+libcxsparse.so.3 SuiteSparse-5.10.1_1
+libncurses.so.6 ncurses-libs-6.0_1 ignore
+libncursesw.so.6 ncurses-libs-5.8_1 ignore
+libtinfo.so.6 ncurses-libtinfo-libs-6.2_2
+libnetcdf.so.15 netcdf-4.7.0_1
+libformw.so.6 ncurses-libs-5.8_1 ignore
+libfplll.so.7 fplll-5.4.1_1
+libpanelw.so.6 ncurses-libs-5.8_1 ignore
+libmenuw.so.6 ncurses-libs-5.8_1 ignore
+libobjc.so.4 libobjc-4.7.3_12
+libgomp.so.1 libgomp-4.4.0_1
+libgps.so.29 gpsd-3.23_1
+libmagic.so.1 libmagic-5.12_1
+libbluetooth.so.3 libbluetooth-4.58_1
+libwmf-0.2.so.7 libwmf-0.2.8.4_1
+libwmflite-0.2.so.7 libwmf-0.2.8.4_1
+libgthread-2.0.so.0 glib-2.72.0_1
+libglib-2.0.so.0 glib-2.72.0_1
+libgmodule-2.0.so.0 glib-2.72.0_1
+libgio-2.0.so.0 glib-2.72.0_1
+libgobject-2.0.so.0 glib-2.72.0_1
+libatk-1.0.so.0 atk-1.26.0_1
+libpangocairo-1.0.so.0 pango-1.24.0_1
+libpangoft2-1.0.so.0 pango-1.24.0_1
+libpangoxft-1.0.so.0 pango-xft-1.36.3_2
+libpango-1.0.so.0 pango-1.24.0_1
+libcairo.so.2 cairo-1.8.6_1
+libcairo-gobject.so.2 cairo-1.8.6_1
+libcairo-script-interpreter.so.2 cairo-1.8.6_1
+libgdk-x11-2.0.so.0 gtk+-2.16.0_1
+libgtk-x11-2.0.so.0 gtk+-2.16.0_1
+libgdk_pixbuf-2.0.so.0 gdk-pixbuf-2.22.0_1
+libgdk_pixbuf_xlib-2.0.so.0 gdk-pixbuf-xlib-2.30.8_1
+libgailutil.so.18 gtk+-2.16.0_1
+libfreetype.so.6 freetype-2.3.9_1
+libfontconfig.so.1 fontconfig-2.6.0_1
+libX11-xcb.so.1 libX11-1.2_1
+libX11.so.6 libX11-1.2_1
+libXpresent.so.1 libXpresent-1.0.0_1
+libexpat.so.1 expat-2.0.0_1
+libjpeg.so.8 libjpeg-turbo-1.3.0_2
+libturbojpeg.so.0 libjpeg-turbo-1.3.0_2
+libpng16.so.16 libpng-1.6.2_1
+libXrender.so.1 libXrender-0.9.4_1
+libXrandr.so.2 libXrandr-1.3.0_1
+libGLU.so.1 glu-9.0.0_1
+libGL.so.1 libGL-7.11_1
+libEGL.so.1 libEGL-7.11_1
+libGLESv1_CM.so.1 libGLES-1.0_1
+libGLESv2.so.2 libGLES-1.0_1
+libEGL.so rpi-userland-0.0.0.0.20150907_1
+libGLESv2.so rpi-userland-0.0.0.0.20150907_1
+libGLESv2.so opera-55.0.2994.37_2
+libGLESv2.so discord-0.0.7_1
+libGLESv2.so keybase-desktop-3.1.2_1
+libGLESv2.so Signal-Desktop-1.23.2_1
+libGLESv2.so slack-desktop-3.4.2_1
+libbrcmEGL.so rpi-userland-20180103_2
+libbrcmGLESv2.so rpi-userland-20180103_2
+libbrcmOpenVG.so rpi-userland-20180103_2
+libnvidia-ml.so.1 nvidia-libs-346.47_1 ignore
+libnvidia-ml.so.1 nvidia390-libs-390.87_1 ignore
+libnvidia-ml.so.1 nvidia470-libs-470.103.01_1 ignore
+libnvidia-tls.so.346.47 nvidia-libs-346.47_1 ignore
+libnvidia-glcore.so.346.47 nvidia-libs-346.47_1 ignore
+libnvidia-gtk2.so.346.47 nvidia-gtklibs-346.47_1 ignore
+libnvidia-gtk3.so.346.47 nvidia-gtklibs-346.47_1 ignore
+libnvidia-glcore.so.390.87 nvidia390-libs-390.87_1 ignore
+libnvidia-glsi.so.346.72 nvidia-libs-346.72_1 ignore
+libnvidia-fatbinaryloader.so.390.147 nvidia390-libs-390.147_1 ignore
+libnvidia-fatbinaryloader.so.430.40 nvidia-libs-430.40_1 ignore
+libglapi.so.0 libglapi-7.11_1
+libgbm.so.1 libgbm-9.0_1
+libOpenGL.so.0 libglvnd-1.3.0_1
+libGLX.so.0 libglvnd-1.3.0_1
+librsvg-2.so.2 librsvg-2.26.0_1
+libdbus-1.so.3 dbus-libs-1.2.10_1
+libdbus-glib-1.so.2 dbus-glib-0.80_1
+libxml2.so.2 libxml2-2.7.0_1
+libxlsxwriter.so.4 libxlsxwriter-1.1.4_1
+libfuse.so.2 fuse-2.8.1_1
+libfuse3.so.3 fuse3-3.1.0_1
+libXext.so.6 libXext-1.0.5_1
+libulockmgr.so.1 fuse-2.9.7_1
+libXcomposite.so.1 libXcomposite-0.4.0_1
+libXdamage.so.1 libXdamage-1.1.1_1
+libXfixes.so.3 libXfixes-4.0.3_1
+libXinerama.so.1 libXinerama-1.0.3_1
+libSM.so.6 libSM-1.1.0_1
+libICE.so.6 libICE-1.0.5_1
+libXau.so.6 libXau-1.0.4_1
+libexslt.so.0 libxslt-1.1.24_1
+libxslt.so.1 libxslt-1.1.24_1
+libstartup-notification-1.so.0 startup-notification-0.10_1
+libwnck-1.so.22 libwnck2-2.30_1
+libwnck-3.so.0 libwnck-2.91.90_1
+libnl.so.1 libnl-1.1_1
+libnl-3.so.200 libnl3-3.2.1_1
+libnl-route-3.so.200 libnl3-3.2.1_1
+libnl-idiag-3.so.200 libnl3-3.2.28_1
+libnl-nf-3.so.200 libnl3-3.2.1_1
+libnl-genl-3.so.200 libnl3-3.2.1_1
+libnl-cli-3.so.200 libnl3-3.2.1_1
+libreadline.so.8 libreadline8-8.0_1
+libhistory.so.8 libhistory8-8.0_1
+libxfconf-0.so.3 xfconf-4.13.7_1
+libxfce4util.so.7 libxfce4util-4.12.1_1
+libxfce4panel-1.0.so.4 libxfce4panel-4.9.2_1
+libxfce4panel-2.0.so.4 libxfce4panel-4.12.0_1
+libgdbm.so.6 gdbm-1.16_1
+libgdbm_compat.so.4 gdbm-1.10_1_1
+libintl.so.8 gettext-libs-0.19.2_1
+libgettextlib-0.21.so gettext-0.21_3
+libgettextsrc-0.21.so gettext-0.21_3
+libtextstyle.so.0 gettext-0.21_3
+libgettextpo.so.0 gettext-0.21_3
+libattr.so.1 attr-2.4.43_1
+libacl.so.1 acl-2.2.47_1
+libpython2.7.so.1.0 python-2.7.18_3
+libffi.so.7 libffi-3.3_1
+libffcall.so.0 ffcall-2.1_1
+libavcall.so.1 ffcall-2.1_1
+libtrampoline.so.1 ffcall-2.1_1
+libcallback.so.1 ffcall-2.1_1
+libcrack.so.2 libcracklib-2.8.22_2
+libpam.so.0 pam-libs-1.1.6_3
+libpamc.so.0 pam-libs-1.1.6_3
+libpam_misc.so.0 pam-libs-1.1.6_3
+libcap.so.2 libcap-2.16_1
+libpsx.so.2 libcap-2.45_1
+liblzma.so.5 liblzma-5.0.0_1
+libuuid.so.1 libuuid-2.18_1
+libblkid.so.1 libblkid-2.18_1
+libidn.so.12 libidn-1.35_1
+libusb-1.0.so.0 libusb-1.0.0_1
+libusb-0.1.so.4 libusb-compat-0.1.0_1
+libpci.so.3 pciutils-3.7.0_1
+libpcre.so.1 libpcre-8.30_1
+libpcreposix.so.0 libpcre-7.8_1
+libpcrecpp.so.0 libpcrecpp-7.8_1
+libgirepository-gimarshallingtests-1.0.so libgirepository-1.30_1
+libgirepository-everything-1.0.so libgirepository-1.30_1
+libgirepository-1.0.so.1 libgirepository-1.30_1
+libudev.so.1 eudev-libudev-1.6_1
+libgudev-1.0.so.0 libgudev-230_1
+libext2fs.so.2 e2fsprogs-libs-1.41.5_1
+libcom_err.so.2 e2fsprogs-libs-1.41.5_1
+libe2p.so.2 e2fsprogs-libs-1.41.5_1
+libss.so.2 e2fsprogs-libs-1.41.5_1
+libiw.so.29 wireless_tools-29_1
+libpopt.so.0 popt-1.15_1
+libtasn1.so.6 libtasn1-3.2_1
+libgpg-error.so.0 libgpg-error-1.6_1
+liblzo2.so.2 lzo-2.03_1
+libgcrypt.so.20 libgcrypt-1.6.1_1
+libgnutls.so.30 gnutls-3.4.13_1
+libgnutlsxx.so.30 gnutls-3.7.4_1
+libgnutls-dane.so.0 gnutls-3.6.12_1
+libdevmapper.so.1.02 device-mapper-2.02.110_1
+libdevmapper-event.so.1.02 device-mapper-2.02.110_1
+libdevmapper-event-lvm2.so.2.02 device-mapper-2.02.110_1
+liblvm2cmd.so.2.02 device-mapper-2.02.54_1
+libprop.so.0 proplib-0.1_1
+libfontenc.so.1 libfontenc-1.0.4_1
+libXfont.so.1 libXfont-1.4.0_1
+libx86.so.1 libx86-1.1_1
+libxcb-render.so.0 libxcb-1.2_1
+libxcb-glx.so.0 libxcb-1.2_1
+libxcb-composite.so.0 libxcb-1.2_1
+libxcb-randr.so.0 libxcb-1.2_1
+libxcb-shape.so.0 libxcb-1.2_1
+libxcb-sync.so.1 libxcb-1.10_1
+libxcb-shm.so.0 libxcb-1.2_1
+libxcb-screensaver.so.0 libxcb-1.2_1
+libxcb-xprint.so.0 libxcb-1.2_1
+libxcb-res.so.0 libxcb-1.2_1
+libxcb.so.1 libxcb-1.2_1
+libxcb-damage.so.0 libxcb-1.2_1
+libxcb-dpms.so.0 libxcb-1.2_1
+libxcb-record.so.0 libxcb-1.2_1
+libxcb-xtest.so.0 libxcb-1.2_1
+libxcb-xv.so.0 libxcb-1.2_1
+libxcb-xf86dri.so.0 libxcb-1.2_1
+libxcb-xinerama.so.0 libxcb-1.2_1
+libxcb-dri2.so.0 libxcb-1.2_1
+libxcb-xevie.so.0 libxcb-1.2_1
+libxcb-xfixes.so.0 libxcb-1.2_1
+libxcb-xvmc.so.0 libxcb-1.2_1
+libxcb-xkb.so.1 libxcb-1.10_1
+libxcb-xinput.so.0 libxcb-1.10_1
+libxcb-dri3.so.0 libxcb-1.10_1
+libxcb-present.so.0 libxcb-1.10_1
+libxcb-imdkit.so.1 xcb-imdkit-1.0.2_1
+libXdmcp.so.6 libXdmcp-1.0.2_1
+libpolkit-gobject-1.so.0 polkit-0.99_1
+libpolkit-agent-1.so.0 polkit-0.99_1
+libpolkit-backend-1.so.0 polkit-0.99_1
+libXt.so.6 libXt-1.0.5_1
+libXtst.so.6 libXtst-1.0.3_1
+libxkbfile.so.1 libxkbfile-1.0.5_1
+libXpm.so.4 libXpm-3.5.7_1
+libXmu.so.6 libXmu-1.0.4_1
+libXmuu.so.1 libXmu-1.0.4_1
+libdrm.so.2 libdrm-2.4.6_1
+libdrm_radeon.so.1 libdrm-2.4.6_1
+libdrm_intel.so.1 libdrm-2.4.6_1
+libdrm_nouveau.so.2 libdrm-2.4.34_1
+libdrm_amdgpu.so.1 libdrm-2.4.64_1
+libdrm_freedreno.so.1 libdrm-2.4.97_1
+libkms.so.1 libdrm-2.4.6_1
+libXxf86vm.so.1 libXxf86vm-1.0.2_1
+libXi.so.6 libXi-1.2.1_1
+libdmx.so.1 libdmx-1.0.2_1
+libXRes.so.1 libXres-1.0.3_1
+libxreaderdocument.so.3 libxreader-1.6.1_1
+libxreaderview.so.3 libxreader-1.6.1_1
+libpciaccess.so.0 libpciaccess-0.10.5_1
+libpixman-1.so.0 pixman-0.14.0_1
+libXaw.so.6 libXaw-1.0.5_1 ignore
+libXaw.so.7 libXaw-1.0.5_1 ignore
+libXaw6.so.6 libXaw-1.0.5_1
+libXaw7.so.7 libXaw-1.0.5_1
+libXft.so.2 libXft-2.1.13_1
+libXcursor.so.1 libXcursor-1.1.9_1
+libXxf86dga.so.1 libXxf86dga-1.0.2_1
+libXxf86misc.so.1 libXxf86misc-1.0.1_1
+libXp.so.6 libXp-1.0.0_1
+libXfontcache.so.1 libXfontcache-1.0.4_1
+libXv.so.1 libXv-1.0.4_1
+libXvMC.so.1 libXvMC-1.0.4_1
+libXvMCW.so.1 libXvMC-1.0.4_1
+libxcb-errors.so.0 xcb-util-errors-1.0_1
+libxcb-icccm.so.4 xcb-util-wm-0.3.9_1
+libxcb-ewmh.so.2 xcb-util-wm-0.3.9_1
+libxcb-aux.so.0 xcb-util-0.3.4_1
+libxcb-image.so.0 xcb-util-image-0.3.9_1
+libxcb-reply.so.1 xcb-util-0.3.4_1
+libxcb-keysyms.so.1 xcb-util-keysyms-0.3.9_1
+libxcb-property.so.1 xcb-util-0.3.4_1
+libxcb-atom.so.1 xcb-util-0.3.4_1
+libxcb-event.so.1 xcb-util-0.3.4_1
+libxcb-util.so.1 xcb-util-0.3.9_1
+libtiff.so.5 tiff-4.0.0_1
+libtiffxx.so.5 tiff-4.0.0_1
+libnotify.so.4 libnotify-0.7_1
+libexo-1.so.0 exo-0.7.3_1
+libexo-2.so.0 exo-0.12.0_1
+libglade-2.0.so.0 libglade-2.6.4_1
+libglademm-2.4.so.1 libglademm-2.6.7_1
+libthunarx-3.so.0 Thunar-1.8.1_1
+libexif.so.12 libexif-0.6.17_1
+liboil-0.3.so.0 liboil-0.3.16_1
+libopenmpt.so.0 libopenmpt-0.4.11_1
+libogg.so.0 libogg-1.3.0_1
+libvorbis.so.0 libvorbis-1.2.1rc1_1
+libvorbisenc.so.2 libvorbis-1.2.1rc1_1
+libvorbisfile.so.3 libvorbis-1.2.1rc1_1
+libtheora.so.0 libtheora-1.0_1
+libtheoradec.so.1 libtheora-1.0_1
+libtheoraenc.so.1 libtheora-1.0_1
+libcdda_interface.so.0 libcdparanoia-10.2_10
+libcdda_paranoia.so.0 libcdparanoia-10.2_10
+libasound.so.2 alsa-lib-1.0.20_1
+libatopology.so.2 alsa-lib-1.2.1_1
+libvisual-0.4.so.0 libvisual-0.4.0_1
+libxfsm-4.6.so.0 xfce4-session-4.9.1_1
+libxklavier.so.16 libxklavier-5.0_1
+liblcms.so.1 lcms-1.18_1
+libgd.so.3 gd-2.1.0_1
+libcroco-0.6.so.3 libcroco-0.6.2_1
+libgsf-1.so.114 libgsf-1.14.11_1
+libMagickCore-7.Q16HDRI.so.10 libmagick-7.1.0.10_1
+libMagickWand-7.Q16HDRI.so.10 libmagick-7.1.0.10_1
+libMagick++-7.Q16HDRI.so.5 libmagick-7.0.11.1_1
+libMagickCore-6.Q16.so.7 libmagick6-6.9.11.61_1
+libMagickWand-6.Q16.so.7 libmagick6-6.9.11.61_1
+libMagick++-6.Q16.so.9 libmagick6-6.9.12.1_1
+libltdl.so.7 libltdl-2.2.6_1
+libpoppler.so.111 libpoppler-21.07.0_1
+libpoppler-glib.so.8 poppler-glib-0.18.2_1
+libpoppler-cpp.so.0 poppler-cpp-0.18.2_1
+libpoppler-qt5.so.1 poppler-qt5-0.31.0_1
+libtcl8.6.so tcl-8.6.0_1
+libtk8.6.so tk-8.6.1_3
+libsqlite3.so.0 sqlite-3.38.0_1
+libIDL-2.so.0 libIDL-0.8.13_1
+libnspr4.so nspr-4.8_1
+libplc4.so nspr-4.8_1
+libplds4.so nspr-4.8_1
+libsoftokn3.so nss-3.12.4_1
+libssl3.so nss-3.12.4_1
+libnssutil3.so nss-3.12.4_1
+libsmime3.so nss-3.12.4_1
+libfreebl3.so nss-3.12.4_1
+libnssdbm3.so nss-3.12.4_1
+libnssckbi.so nss-3.12.4_1
+libnss3.so nss-3.12.4_1
+libcurl.so.4 libcurl-7.75.0_2
+libdaemon.so.0 libdaemon-0.14_1
+libavahi-common.so.3 avahi-libs-0.6.25_1
+libavahi-core.so.7 avahi-libs-0.6.25_1
+libavahi-client.so.3 avahi-libs-0.6.25_1
+libavahi-gobject.so.0 avahi-glib-libs-0.6.25_1
+libavahi-glib.so.1 avahi-glib-libs-0.6.25_1
+libdns_sd.so.1 avahi-compat-libs-0.6.25_1
+libhowl.so.0 avahi-compat-libs-0.6.25_1
+libavahi-ui.so.0 avahi-ui-libs-0.6.25_1
+libavahi-ui-gtk3.so.0 avahi-ui-libs-gtk3-0.6.25_1
+libavahi-libevent.so.1 avahi-libevent-libs-0.8_1
+libavahi-qt5.so.1 avahi-qt5-libs-0.8_1
+libmp4v2.so.2 libmp4v2-2.0.0_1
+libfaac.so.0 faac-1.28_1
+libfaad.so.2 faad2-2.7_1
+libfaad_drm.so.2 faad2-2.8.0_1
+libid3tag.so.0 libid3tag-0.15.1b_1
+libgif.so.7 giflib-5.1.0_1
+libImlib2.so.1 imlib2-1.4.2_1
+libmp3lame.so.0 lame-3.98.2_1
+libavdevice.so.58 libavdevice-4.0_1
+libavformat.so.58 libavformat-4.0_1
+libswscale.so.5 libswscale-4.0_1
+libswresample.so.3 libswresample-4.0_1
+libavresample.so.4 libavresample-4.0_1
+libpostproc.so.55 libpostproc-4.0_1
+libavcodec.so.58 libavcodec-4.0_1
+libavutil.so.56 libavutil-4.0_1
+libavfilter.so.7 libavfilter-4.0_1
+libSDL-1.2.so.0 SDL-1.2.14_1
+libSDL_image-1.2.so.0 SDL_image-1.2.10_1
+libx264.so.157 x264-20190507.2245_1
+libxvidcore.so.4 xvidcore-1.2.2_1
+libtag.so.1 taglib-1.6.1_1
+libtag-extras.so.1 taglib-extras-1.0.1_1
+libtag_c.so.0 taglib-1.6.1_1
+libfribidi.so.0 fribidi-0.19.2_1
+liba52.so.0 liba52-0.7.4_1
+libcddb.so.2 libcddb-1.3.2_1
+libiso9660.so.11 libcdio-2.0.0_1
+libudf.so.0 libcdio-0.83_1
+libcdio_cdda.so.2 libcdio-paranoia-10.2_1
+libcdio_paranoia.so.2 libcdio-paranoia-10.2_1
+libiso9660++.so.0 libcdio-0.83_1
+libcdio++.so.1 libcdio-2.0.0_1
+libcdio.so.19 libcdio-2.1.0_1
+libmpcdec.so.5 libmpcdec-1.2.6_1
+libproxy.so.1 libproxy-0.4.6_1
+libmoar.so MoarVM-2015.11_1
+libFLAC.so.8 libflac-1.2.1_1
+libFLAC++.so.6 libflac-1.2.1_1
+libField3D.so.1.7 Field3D-1.7.3_1
+libMAC.so.6 libMAC-5.28_1
+libmad.so.0 libmad-0.15.1b_1
+libmatroska.so.7 libmatroska-1.6.0_1
+libmatrix_client.so.0.7.0 mtxclient-0.7.0_1
+libebml.so.5 libebml-1.4.0_1
+libdvdread.so.8 libdvdread-6.1.1_1
+libdvdnav.so.4 libdvdnav-4.1.3_1
+libdvbpsi.so.10 libdvbpsi-1.3.1_1
+libdca.so.0 libdca-0.0.5_1
+libmpeg2.so.0 libmpeg2-0.5.1_1
+libmpeg2convert.so.0 libmpeg2-0.5.1_1
+libmng.so.2 libmng-2.0.2_1
+libQgpsmm.so.29 gpsd-qt-3.23_1
+libsysfs.so.2 libsysfs-2.1.0_1
+libsensors.so.5 libsensors-3.5.0_1
+libcap-ng.so.0 libcap-ng-0.6.2_1
+libphysfs.so.1 physfs-2.0.0_1
+libSDL_ttf-2.0.so.0 SDL_ttf-2.0.9_1
+libKScreenLocker.so.5 kscreenlocker-5.8.4_1
+libparted.so.2 libparted-3.1_1
+libparted-fs-resize.so.0 libparted-3.1_1
+libntfs-3g.so.89 ntfs-3g-2021.8.22_1
+libruby.so.3.1 ruby-3.1.0_1
+librw.so.0 rankwidth-0.9_1
+libprocessui.so.9 libksysguard-5.18.90_1
+libksignalplotter.so.9 libksysguard-5.18.90_1
+libksgrd.so.9 libksysguard-5.18.90_1
+libprocesscore.so.9 libksysguard-5.18.90_1
+liblsofui.so.9 libksysguard-5.18.90_1
+libKSysGuardSensorFaces.so.1 libksysguard-5.18.90_1
+libKSysGuardFormatter.so.1 libksysguard-5.19.5_1
+libKSysGuardSystemStats.so.1 libksysguard-5.22.0_1
+libKWaylandServer.so.5 kwayland-server-5.18.90_1
+libxenctrl.so.4.14 xen-libs-4.14.0_1
+libxenfsimage.so.4.14 xen-libs-4.14.0_1
+libxenguest.so.4.14 xen-libs-4.14.0_1
+libxenhypfs.so.1 xen-libs-4.14.0_1
+libxlutil.so.4.14 xen-libs-4.14.0_1
+libxenlight.so.4.14 xen-libs-4.14.0_1
+libxenevtchn.so.1 xen-libs-4.10.0_1
+libxengnttab.so.1 xen-libs-4.10.0_1
+libxendevicemodel.so.1 xen-libs-4.10.0_1
+libxenforeignmemory.so.1 xen-libs-4.10.0_1
+libxentoolcore.so.1 xen-libs-4.10.0_1
+libxenstore.so.3.0 xen-libs-4.10.0_1
+libxentoollog.so.1 xen-libs-4.10.0_1
+libxencall.so.1 xen-libs-4.10.0_1
+libxenvchan.so.4.14 xen-libs-4.14.0_1
+libfsimage.so.1.0 xen-libs-4.10.0_1
+libxenstat.so.4.14 xen-libs-4.14.0_1
+libfam.so.0 gamin-0.1.10_1
+libgamin-1.so.0 gamin-0.1.10_1
+libKF5SyntaxHighlighting.so.5 syntax-highlighting-5.29.0_1
+libKF5Libkleo.so.5 libkleo-17.12.3_1
+libKF5GrantleeTheme.so.5 grantleetheme-17.12.3_1
+libKF5IMAP.so.5 kimap-17.12.3_1
+libKF5Ldap.so.5 kldap-17.12.3_1
+libKF5CalendarCore.so.5 kcalendarcore-5.63.0_1
+libKF5AkonadiSearchDebug.so.5 akonadi-search-17.12.3_1
+libKF5AkonadiSearchCore.so.5 akonadi-search-17.12.3_1
+libKF5AkonadiSearchPIM.so.5 akonadi-search-17.12.3_1
+libKF5AkonadiSearchXapian.so.5 akonadi-search-17.12.3_1
+libKF5LibkdepimAkonadi.so.5 libkdepim-17.12.3_1
+libKF5Libkdepim.so.5 libkdepim-17.12.3_1
+libKF5PimCommon.so.5 pimcommon-17.12.3_1
+libKF5PimCommonAkonadi.so.5 pimcommon-17.12.3_1
+libKF5Gravatar.so.5 libgravatar-17.12.3_1
+libKF5Sane.so.5 libksane-18.04.2_1
+libKPimSMTP.so.5 ksmtp-17.12.3_1
+libKF5MailTransport.so.5 kmailtransport-17.12.3_1
+libKF5MailTransportAkonadi.so.5 kmailtransport-17.12.3_1
+libKF5Mbox.so.5 kmbox-17.12.3_1
+libKF5MessageComposer.so.5 messagelib-17.12.3_1
+libKF5MessageList.so.5 messagelib-17.12.3_1
+libKF5TemplateParser.so.5 messagelib-17.12.3_1
+libKF5WebEngineViewer.so.5 messagelib-17.12.3_1
+libKF5MessageCore.so.5 messagelib-17.12.3_1
+libKF5MimeTreeParser.so.5 messagelib-17.12.3_1
+libKF5MessageViewer.so.5 messagelib-17.12.3_1
+libKF5CalendarUtils.so.5 kcalutils-17.12.3_1
+libKF5KontactInterface.so.5 kontactinterface-17.12.3_1
+libKF5KSieveUi.so.5 libksieve-17.12.3_1
+libKF5KManageSieve.so.5 libksieve-17.12.3_1
+libKF5KSieve.so.5 libksieve-17.12.3_1
+libKF5MailImporterAkonadi.so.5 mailimporter-17.12.3_1
+libKF5MailImporter.so.5 mailimporter-17.12.3_1
+libKF5MailCommon.so.5 mailcommon-17.12.3_1
+libKF5Tnef.so.5 ktnef-17.12.3_1
+libKF5AkonadiCalendar.so.5 akonadi-calendar-17.12.3_1
+libKF5CalendarSupport.so.5 calendarsupport-17.12.3_1
+libKF5AkonadiNotes.so.5 akonadi-notes-17.12.3_1
+libKPimKDAV.so.5 kdav-5.72.0_1
+libKF5DAV.so.5 kdav-5.72.0_1
+libKF5AlarmCalendar.so.5 kalarmcal-17.12.3_1
+libakonadi-singlefileresource.so.5 kdepim-runtime-17.12.3_1
+libkmindexreader.so.5 kdepim-runtime-17.12.3_1
+libkdexoauth2.so.3 kdepim-runtime-17.12.3_1
+libakonadi-filestore.so.5 kdepim-runtime-17.12.3_1
+libmaildir.so.5 kdepim-runtime-17.12.3_1
+libfolderarchivesettings.so.5 kdepim-runtime-17.12.3_1
+libkImageAnnotator.so.0 kImageAnnotator-0.4.1_1
+libkColorPicker.so.0 kColorPicker-0.1.5_1
+libbabl-0.1.so.0 babl-0.1.16_1
+libbamf3.so.2 bamf-0.5.1_1
+libicuio.so.70 icu-libs-70.1_1
+libicui18n.so.70 icu-libs-70.1_1
+libicudata.so.70 icu-libs-70.1_1
+libicutu.so.70 icu-libs-70.1_1
+libicuuc.so.70 icu-libs-70.1_1
+libicutest.so.70 icu-libs-70.1_1
+libaspell.so.15 libaspell-0.60.8_2
+libpspell.so.15 libaspell-0.60.8_2
+libenchant-2.so.2 enchant2-2.2.3_1
+libgconf-2.so.4 GConf-2.32.0_1
+libpackagekit-glib2.so.18 PackageKit-1.1.12_1
+libpsl.so.5 libpsl-0.20.2_1
+libsoup-2.4.so.1 libsoup-2.34.0_1
+libsoup-3.0.so.0 libsoup3-3.0.0_1
+libsoup-gnome-2.4.so.1 libsoup-gnome-2.34.0_1
+libgnome-panel.so.0 gnome-panel-3.37.1_1
+libuninum.so.5 libuninum-2.7_1
+libunique-3.0.so.0 libunique-2.91.4_1
+libwebkit2gtk-4.0.so.37 webkit2gtk-2.6.2_1
+libjavascriptcoregtk-4.0.so.18 webkit2gtk-2.6.2_1
+libgimp-2.0.so.0 libgimp-2.10.0_1
+libgimpwidgets-2.0.so.0 libgimp-2.10.0_1
+libgimpui-2.0.so.0 libgimp-2.10.0_1
+libgimpbase-2.0.so.0 libgimp-2.10.0_1
+libgimpthumb-2.0.so.0 libgimp-2.10.0_1
+libgimpconfig-2.0.so.0 libgimp-2.10.0_1
+libgimpmath-2.0.so.0 libgimp-2.10.0_1
+libgimpcolor-2.0.so.0 libgimp-2.10.0_1
+libgimpmodule-2.0.so.0 libgimp-2.10.0_1
+libgmic.so.2 gmic-2.1.8_1
+libcgmic.so.2 gmic-2.1.8_1
+libexiv2.so.27 exiv2-0.27_1
+libKF5Holidays.so.5 kholidays-5.47.0_1
+libPhabricatorHelpers.so.5 purpose-5.48.0_1
+libKF5PurposeWidgets.so.5 purpose-5.48.0_1
+libKF5Purpose.so.5 purpose-5.48.0_1
+libKF5PulseAudioQt.so.3 pulseaudio-qt-1.3_1
+libReviewboardHelpers.so.5 purpose-5.48.0_1
+libecpg_compat.so.3 postgresql-libs-14.0_1
+libecpg.so.6 postgresql-libs-14.0_1
+libpgtypes.so.3 postgresql-libs-14.0_1
+libpq.so.5 postgresql-libs-14.0_1
+libmypaint.so.0 libmypaint-1.6.1_1
+libgssapi_krb5.so.2 mit-krb5-libs-1.8_1
+libgssrpc.so.4 mit-krb5-libs-1.8_1
+libk5crypto.so.3 mit-krb5-libs-1.8_1
+libkadm5clnt_mit.so.12 mit-krb5-libs-1.18.2_1
+libkadm5srv_mit.so.12 mit-krb5-libs-1.18.2_1
+libkdb5.so.10 mit-krb5-libs-1.18.2_1
+libkrb5.so.3 mit-krb5-libs-1.8_1
+libkrad.so.0 mit-krb5-libs-1.12.1_1
+libkrb5support.so.0 mit-krb5-libs-1.8_1
+libkdb_ldap.so.1 mit-krb5-libs-1.14.2_2
+libverto.so.0 mit-krb5-libs-1.8_1
+libverto-k5ev.so.0 mit-krb5-libs-1.8_1
+libmenu-cache.so.3 menu-cache-1.0.0_1
+libupower-glib.so.3 libupower-glib3-0.99.3_1
+libcanberra.so.0 libcanberra-0.23_1
+libcanberra-gtk.so.0 libcanberra-gtk-0.30_6
+libcanberra-gtk3.so.0 libcanberra-gtk3-0.30_6
+libgtop-2.0.so.11 libgtop-2.38.0_1
+librarian.so.0 rarian-0.8.1_1
+libmusikcore.so musikcube-0.93.1_3
+libgnome-menu-3.so.0 gnome-menus-2.91.6_1
+libart_lgpl_2.so.2 libart-2.3.20_1
+libgnomecanvas-2.so.0 libgnomecanvas-2.30.1_1
+libgnomecanvasmm-2.6.so.1 libgnomecanvasmm-2.26.0_1
+libgnome-keyring.so.0 libgnome-keyring-3.0.0_1
+libical.so.3 libical-3.0.4_1
+libical_cxx.so.3 libical-3.0.4_1
+libicalss.so.3 libical-3.0.4_1
+libicalss_cxx.so.3 libical-3.0.4_1
+libicalvcal.so.3 libical-3.0.4_1
+libical-glib.so.3 libical-3.0.4_1
+libcamel-1.2.so.63 evolution-data-server-3.42.0_1
+libedataserver-1.2.so.26 evolution-data-server-3.40.0_1
+libebackend-1.2.so.10 evolution-data-server-3.17.90_1
+libedataserverui-1.2.so.3 evolution-data-server-3.40.0_1
+libebook-contacts-1.2.so.3 evolution-data-server-3.34.0_1
+libedata-book-1.2.so.26 evolution-data-server-3.34.0_1
+libebook-1.2.so.20 evolution-data-server-3.34.0_1
+libecal-2.0.so.1 evolution-data-server-3.34.0_1
+libevolution-calendar.so evolution-3.28.0_1
+libevolution-util.so evolution-3.28.0_1
+libemail-engine.so evolution-3.28.0_1
+libevolution-mail.so evolution-3.28.0_1
+libevolution-mail-formatter.so evolution-3.40.0_1
+libevolution-shell.so evolution-3.28.0_1
+libedata-cal-2.0.so.1 evolution-data-server-3.34.0_1
+libgdata.so.22 libgdata-0.17.9_1
+libpcap.so.1 libpcap-1.1.1_1
+libiptc.so.0 iptables-1.4.7_1
+libip6tc.so.2 iptables-1.8.3_1
+libxtables.so.12 iptables-1.6.1_1
+libip4tc.so.2 iptables-1.8.3_1
+libipq.so.0 iptables-1.4.7_1
+libnm.so.0 libnm-1.0.0_1
+libKF5ItemModels.so.5 kitemmodels-5.26.0_1
+libboost_context.so.1.72.0 libboost_context1.72-1.72.0_1
+libboost_coroutine.so.1.72.0 libboost_coroutine1.72-1.72.0_1
+libboost_container.so.1.72.0 libboost_container1.72-1.72.0_1
+libboost_prg_exec_monitor.so.1.72.0 libboost_prg_exec_monitor1.72-1.72.0_1
+libboost_timer.so.1.72.0 libboost_timer1.72-1.72.0_1
+libboost_random.so.1.72.0 libboost_random1.72-1.72.0_1
+libboost_filesystem.so.1.72.0 libboost_filesystem1.72-1.72.0_1
+libboost_unit_test_framework.so.1.72.0 libboost_unit_test_framework1.72-1.72.0_1
+libboost_math_c99.so.1.72.0 libboost_math_c991.72-1.72.0_1
+libboost_math_tr1.so.1.72.0 libboost_math_tr11.72-1.72.0_1
+libboost_regex.so.1.72.0 libboost_regex1.72-1.72.0_1
+libboost_serialization.so.1.72.0 libboost_serialization1.72-1.72.0_1
+libboost_chrono.so.1.72.0 libboost_chrono1.72-1.72.0_1
+libboost_wserialization.so.1.72.0 libboost_wserialization1.72-1.72.0_1
+libboost_graph.so.1.72.0 libboost_graph1.72-1.72.0_1
+libboost_log.so.1.72.0 libboost_log1.72-1.72.0_1
+libboost_locale.so.1.72.0 libboost_locale1.72-1.72.0_1
+libboost_program_options.so.1.72.0 libboost_program_options1.72-1.72.0_1
+libboost_iostreams.so.1.72.0 libboost_iostreams1.72-1.72.0_1
+libboost_system.so.1.72.0 libboost_system1.72-1.72.0_1
+libboost_thread.so.1.72.0 libboost_thread1.72-1.72.0_1
+libboost_log_setup.so.1.72.0 libboost_log_setup1.72-1.72.0_1
+libboost_date_time.so.1.72.0 libboost_date_time1.72-1.72.0_1
+libboost_wave.so.1.72.0 libboost_wave1.72-1.72.0_1
+libboost_atomic.so.1.72.0 libboost_atomic1.72-1.72.0_1
+libboost_type_erasure.so.1.72.0 libboost_type_erasure1.72-1.72.0_1
+libboost_fiber.so.1.72.0 libboost_fiber1.72-1.72.0_1
+libboost_stacktrace_noop.so.1.72.0 libboost_stacktrace_noop1.72-1.72.0_1
+libboost_stacktrace_addr2line.so.1.72.0 libboost_stacktrace_addr2line1.72-1.72.0_1
+libboost_stacktrace_basic.so.1.72.0 libboost_stacktrace_basic1.72-1.72.0_1
+libboost_python27.so.1.72.0 boost-python1.72-1.72.0_1
+libboost_python310.so.1.72.0 boost-python3-1.72-1.72.0_6
+libexempi.so.8 exempi-2.5.0_1
+libatasmart.so.4 libatasmart-0.17_1
+libsgutils2-1.45.so.2 libsgutils-1.45_1
+liblvm2app.so.2.2 liblvm2app-2.02.54_1
+libcpufreq.so.0 libcpufreq-007_1
+libcpuid.so.15 libcpuid-0.5.0_1
+libgucharmap_2_90.so.7 gucharmap-3.0.0_1
+libgphoto2.so.6 libgphoto2-2.5.7_1
+libgphoto2_port.so.12 libgphoto2-2.5.7_1
+libgvfscommon.so.0 gvfs-1.7.2_1
+libgvfscommon-dnssd.so.0 gvfs-1.7.2_1
+libgvfsdaemon.so gvfs-1.20_1
+libgvfscommon.so gvfs-1.20_1
+libnautilus-extension.so.1 libnautilus-3.2.1_1
+libmpc.so.3 libmpc-1.0.1_1
+libsigc-2.0.so.0 libsigc++-1.1_1
+libsigc-3.0.so.0 libsigc++3-3.0.3_1
+libglibmm-2.4.so.1 glibmm-2.24.0_1
+libgiomm-2.4.so.1 glibmm-2.24.0_1
+libglibmm_generate_extra_defs-2.4.so.1 glibmm-2.24.0_1
+libglibmm-2.68.so.1 glibmm2.68-2.68.0_1
+libgiomm-2.68.so.1 glibmm2.68-2.68.0_1
+libglibmm_generate_extra_defs-2.68.so.1 glibmm2.68-2.68.0_1
+libcairomm-1.0.so.1 cairomm-1.8.4_1
+libcairomm-1.16.so.1 cairomm1.16-1.16.0_1
+libpangomm-1.4.so.1 pangomm-2.26.0_1
+libpangomm-2.48.so.1 pangomm2.48-2.48.0_1
+libatkmm-1.6.so.1 atkmm-2.22.1_1
+libgtkmm-3.0.so.1 gtkmm-2.99.5_1
+libgdkmm-3.0.so.1 gtkmm-2.99.5_1
+libgtkmm-4.0.so.0 gtkmm4-4.0.0_1
+libgnome-bluetooth.so.13 gnome-bluetooth-3.12.0_1
+libsasl2.so.3 libsasl-2.1.26_1
+liblber-2.4.so.2 libldap-2.4.21_1
+libldap-2.4.so.2 libldap-2.4.21_1
+libldap_r-2.4.so.2 libldap-2.4.21_1
+libevent-2.1.so.7 libevent-2.1.11_1
+libevent_core-2.1.so.7 libevent-2.1.11_1
+libevent_extra-2.1.so.7 libevent-2.1.11_1
+libevent_pthreads-2.1.so.7 libevent-2.1.11_1
+libevent_openssl-2.1.so.7 libevent-2.1.11_1
+libSDL_mixer-1.2.so.0 SDL_mixer-1.2.11_1
+libapr-1.so.0 apr-1.4.2_1
+libaprutil-1.so.0 apr-util-1.6.1_11
+libnetpgp.so.0 libnetpgp-20140220_19
+libmj.so.0 libmj-20140220_19
+libmca_common_sm.so.40 libopenmpi-3.0.1_1
+libmca_common_dstore.so.1 libopenmpi-4.0.1_1
+libmca_common_ompio.so.41 libopenmpi-3.0.1_1
+libmca_common_monitoring.so.50 libopenmpi-3.1.2_1
+libmpi.so.40 libopenmpi-3.0.1_1
+libompitrace.so.40 libopenmpi-3.0.1_1
+libopen-pal.so.40 libopenmpi-3.0.1_1
+libopen-rte.so.40 libopenmpi-3.0.1_1
+liboshmem.so.40 libopenmpi-3.0.1_1
+libmtp.so.9 libmtp-1.1.4_1
+libelf.so.1 libelf-0.155_1
+libdw.so.1 libelf-0.155_1
+libasm.so.1 libelf-0.155_1
+libdebuginfod.so.1 libdebuginfod-0.182_1
+libgtksourceview-3.0.so.1 gtksourceview-3.8.0_1
+libtalloc.so.2 talloc-2.0.1_1
+libpytalloc-util.so.2 libpytalloc-util-2.3.1_2
+libmount.so.1 libmount-2.18_1
+libdconf.so.1 dconf-0.13.90_1
+libassuan.so.0 libassuan-2.0.1_1
+libgpgme.so.11 libgpgme-1.12.0_2
+libgpgmepp.so.6 gpgmepp-1.7.0_3
+libqgpgme.so.7 gpgmeqt-1.7.0_3
+libgarcon-1.so.0 garcon-0.1.12_1
+libgarcon-gtk2-1.so.0 garcon-0.4.0_1
+libgarcon-gtk3-1.so.0 garcon-0.6.1_1
+libxfce4ui-1.so.0 libxfce4ui-4.9.2_1
+libxfce4ui-2.so.0 libxfce4ui-4.12.1_2
+libxfce4kbd-private-2.so.0 libxfce4ui-4.9.2_1
+libxfce4kbd-private-3.so.0 libxfce4ui-4.12.1_2
+libxml++-2.6.so.2 libxml++-2.32.0_1
+libxml++-3.0.so.1 libxml++3.0-3.0.1_1
+libftgl.so.2 ftgl-2.1.2_1
+libGLEW.so.2.2 glew-2.2.0_1
+libsndfile.so.1 libsndfile-1.0.20_1
+libspeex.so.1 libspeex-1.1_1
+libspeexdsp.so.1 speexdsp-1.2rc2_1
+libasyncns.so.0 libasyncns-0.8_1
+libpulse.so.0 libpulseaudio-15.0_1
+libpulse-mainloop-glib.so.0 libpulseaudio-15.0_1
+libpulse-simple.so.0 libpulseaudio-15.0_1
+libpulsecommon-15.0.so libpulseaudio-15.0_1
+libpulsecore-15.0.so libpulseaudio-15.0_1
+libprojectM.so.3 projectM-3.1.7_2
+liborc-0.4.so.0 orc-0.4.11_1
+liborc-test-0.4.so.0 orc-0.4.11_1
+libgmime-2.6.so.0 gmime-2.6.4_1
+libtotem-plparser.so.18 totem-pl-parser-3.26.1_1
+libtotem-plparser-mini.so.18 libtotem-plparser-mini-3.26.1_1
+libgladeui-2.so.13 libgladeui3-3.38.0_1
+libtdb.so.1 libtdb-1.2.2_1
+libgssdp-1.2.so.0 gssdp-1.2.0_1
+libgupnp-1.2.so.0 gupnp-1.2.0_1
+libsamplerate.so.0 libsamplerate-0.1.7_1
+libmms.so.0 libmms-0.6_1
+libsmbios.so.2 libsmbios-2.2.28_1
+libsmbios_c.so.2 libsmbios-2.2.28_1
+libjasper.so.4 libjasper-1.900.27_1
+librecode.so.0 librecode-3.6_1
+libenca.so.0 libenca-1.13_1
+libwavpack.so.1 libwavpack-4.60.1_1
+libSDL_net-1.2.so.0 SDL_net-1.2.7_1
+libmodplug.so.1 libmodplug-0.8.8_1
+libfetch.so.2 libfetch-2.34_23
+libneon.so.27 neon-0.31.2_2
+libsvn_subr-1.so.0 libsvn-1.7.5_1
+libsvn_diff-1.so.0 libsvn-1.7.5_1
+libsvn_client-1.so.0 libsvn-1.7.5_1
+libsvn_delta-1.so.0 libsvn-1.7.5_1
+libsvn_fs-1.so.0 libsvn-1.7.5_1
+libsvn_ra-1.so.0 libsvn-1.7.5_1
+libsvn_repos-1.so.0 libsvn-1.7.5_1
+libsvn_wc-1.so.0 libsvn-1.7.5_1
+libsvn_fs_util-1.so.0 libsvn-1.7.5_1
+libsvn_ra_svn-1.so.0 libsvn-1.7.5_1
+libsvn_fs_fs-1.so.0 libsvn-1.7.5_1
+libsvn_fs_base-1.so.0 libsvn-1.7.5_1
+libsvn_ra_local-1.so.0 libsvn-1.7.5_1
+libsvn_ra_neon-1.so.0 libsvn-1.7.5_1
+libsvn_ra_serf-1.so.0 libsvn-1.8.1_1
+libsvn_fs_x-1.so.0 libsvn-1.9.0_1
+libsvn_swig_py-1.so.0 subversion-python-1.7.5_1
+libsvn_swig_perl-1.so.0 subversion-perl-1.7.5_1
+libjson-glib-1.0.so.0 json-glib-0.12.2_1
+libcjson.so.1 cJSON-1.7.8_1
+libvirt.so.0 libvirt-0.8.7_1
+libvirt-qemu.so.0 libvirt-0.8.7_1
+libvirt-lxc.so.0 libvirt-1.0.2_1
+libgdk-3.so.0 gtk+3-3.0.0_1
+libgtk-3.so.0 gtk+3-3.0.0_1
+libgailutil-3.so.0 gtk+3-3.0.0_1
+liblightdm-gobject-1.so.0 liblightdm-gobject-1.2.2_1
+libcelt0.so.2 celt-0.11.1_1
+libspice-server.so.1 spice-0.14.3_3
+libbrasero-burn3.so.1 brasero-2.91.90_1
+libbrasero-media3.so.1 brasero-2.91.90_1
+libbrasero-utils3.so.1 brasero-2.91.90_1
+libXss.so.1 libXScrnSaver-1.1.3_1
+libyelp.so.0 yelp-3.36.0_1
+libpeas-1.0.so.0 libpeas-1.0.0_2
+libpeas-gtk-1.0.so.0 libpeas-1.0.0_2
+libtotem.so.0 libtotem-3.6.2_1
+libclutter-1.0.so.0 clutter-1.14.0_1
+libavfs.so.0 libavfs-1.0.5_1
+libgjs.so.0 gjs-1.65.2_1
+libtelepathy-glib.so.0 telepathy-glib-0.15.5_1
+libaccountsservice.so.0 accountsservice-0.6.4_1
+libfolks.so.26 folks-0.15.0_1
+libfolks-dummy.so.26 folks-0.15.0_1
+libfolks-telepathy.so.26 folks-0.15.0_1
+libfolks-eds.so.26 folks-0.15.0_1
+libnice.so.10 libnice-0.1.18_3
+libgupnp-igd-1.0.so.4 gupnp-igd-0.2.0_1
+libtelepathy-logger.so.3 telepathy-logger-0.6.0_1
+libmission-control-plugins.so.0 telepathy-mission-control-5.9.2_1
+libclutter-gtk-1.0.so.0 clutter-gtk-1.1.2_1
+libchamplain-0.12.so.0 libchamplain-0.12.5_2
+libchamplain-gtk-0.12.so.0 libchamplain-0.12.5_2
+libvpx.so.5 libvpx5-1.7.0_1
+libvpx.so.6 libvpx6-1.8.0_1
+libXevie.so.1 libXevie-1.0.2_1
+libatspi.so.0 at-spi2-core-1.91.91_1
+libatk-bridge-2.0.so.0 at-spi2-atk-2.6.0_1
+libvte-2.91.so.0 vte3-0.68.0_1
+libpipeline.so.1 libpipeline-1.2.0_1
+libosp.so.5 opensp-1.5.2_1
+libogrove.so.0 openjade-1.3.2_1
+libospgrove.so.0 openjade-1.3.2_1
+libostyle.so.0 openjade-1.3.2_1
+libtorrent.so.21 libtorrent-0.13.8_4
+libgiblib.so.1 giblib-1.2.4_1
+libgc.so.1 gc-7.6.4_1
+libcord.so.1 gc-7.4_1
+libgslcblas.so.0 gsl-1.15_1
+libgsl.so.27 gsl-2.7.1_1
+liblua5.1.so.5.1 lua51-5.1.5_1
+liblua5.2.so.5.2 lua52-5.2.4_2
+liblua5.3.so.5.3 lua53-5.3.5_4
+liblua5.4.so.5.4 lua54-5.4.0_1
+libsurgescript.so.0.5.5 surgescript-0.5.5_1
+libburn.so.4 libburn-0.7.2_1
+libKF5Auth.so.5 kauth-5.26.0_1
+libKF5AuthCore.so.5 kauth-5.56.0_1
+libgdkmm-2.4.so.1 gtkmm2-2.24.0_1
+libgtkmm-2.4.so.1 gtkmm2-2.24.0_1
+libquadmath.so.0 libquadmath-4.4.0_1
+libgfortran.so.5 libgfortran-8.2.0_1
+libgnarl-10.so libada-10.2.0_1
+libgnat-10.so libada-10.2.0_1
+libwebp.so.7 libwebp-0.6.0_1
+libwebpmux.so.3 libwebp-0.6.0_1
+libwebpdemux.so.2 libwebp-0.5.0_1
+libwebpdecoder.so.3 libwebp-0.6.0_1
+libva-x11.so.2 libva-2.13.0_1
+libva.so.2 libva-2.13.0_1
+libva-glx.so.2 libva-glx-2.13.0_1
+libva-drm.so.2 libva-2.13.0_1
+libva-wayland.so.2 libva-2.13.0_1
+libv4l2.so.0 v4l-utils-0.8.5_1
+libv4lconvert.so.0 v4l-utils-0.8.5_1
+libv4l1.so.0 v4l-utils-0.8.5_1
+libv4l2rds.so.0 v4l-utils-1.2.1_1
+libdvbv5.so.0 v4l-utils-1.6.2_1
+libjson-c.so.5 json-c-0.14.0_1
+libcogl.so.20 cogl-1.18.0_1
+libcogl-pango.so.20 cogl-1.18.0_1
+libcogl-gst.so.20 cogl-1.18.0_1
+libcogl-gles2.so.20 cogl-1.18.0_1
+libcogl-path.so.20 cogl-1.18.0_1
+libp11-kit.so.0 p11-kit-0.7_1
+librest-0.7.so.0 rest-0.7_1
+librest-extras-0.7.so.0 rest-0.7_1
+libgoa-1.0.so.0 gnome-online-accounts-3.2.0_1
+libgoa-backend-1.0.so.1 gnome-online-accounts-3.10.0_1
+liboauth.so.0 liboauth-0.9.4_1
+liblcms2.so.2 lcms2-2.2_1
+libcolord.so.2 libcolord-1.1.7_1
+libcolordprivate.so.2 libcolord-1.1.7_1
+libcolorhug.so.2 libcolord-1.1.7_1
+libgupnp-av-1.0.so.2 gupnp-av-0.10.0_1
+libgrilo-0.3.so.0 grilo-0.3.2_1
+libgrlnet-0.3.so.0 grilo-0.3.2_1
+libgrlpls-0.3.so.0 grilo-0.3.2_1
+libquvi.so.7 libquvi-0.4.0_1
+libepc-1.0.so.3 libepc-0.4.1_1
+libepc-ui-1.0.so.3 libepc-0.4.1_1
+libgupnp-dlna-2.0.so.3 gupnp-dlna-0.10.0_1
+libgupnp-dlna-gst-2.0.so.3 gupnp-dlna-0.10.0_1
+libgupnp-dlna-1.0.so.2 gupnp-dlna-0.6.1_1
+libtracker-common.so libtracker-2.2.0_1
+libtracker-data.so libtracker-2.2.0_1
+libfm.so.4 libfm-1.2.3_3
+libfm-gtk3.so.4 libfm-gtk+3-1.3.1_2
+libfm-extra.so.4 libfm-extra-1.2.3_3
+libunique-1.0.so.0 libunique1-1.1.6_1
+libdiscid.so.0 libdiscid-0.2.2_1
+librhythmbox-core.so.10 librhythmbox-3.4.1_1
+libdmapsharing-3.0.so.2 libdmapsharing-2.9.12_1
+libgexiv2.so.2 libgexiv2-0.6.1_1
+libraw.so.20 libraw-0.20.2_1
+libraw_r.so.20 libraw-0.20.2_1
+libdjvulibre.so.21 libdjvulibre-3.5.24_1
+libgxps.so.2 libgxps-0.2.0_1
+libt1.so.5 libt1-5.1.2_1
+libt1x.so.5 libt1-5.1.2_1
+libevdocument3.so.4 libevince-3.3.92_1
+libevview3.so.3 libevince-3.3.92_1
+libjack.so.0 libjack-1.9.7_1
+libjackserver.so.0 libjack-1.9.7_1
+libjacknet.so.0 libjack-1.9.7_1
+libfftw3_threads.so.3 libfftw-3.3_1
+libfftw3.so.3 libfftw-3.3_1
+libfftw3_omp.so.3 libfftw-3.3.5_1
+libfftw3l_threads.so.3 libfftw-3.3_1
+libfftw3l.so.3 libfftw-3.3_1
+libfftw3l_omp.so.3 libfftw-3.3.5_1
+libfftw3f_threads.so.3 libfftw-3.3_1
+libfftw3f.so.3 libfftw-3.3_1
+libfftw3f_omp.so.3 libfftw-3.3.5_1
+libfluidsynth.so.3 libfluidsynth-2.2.0_1
+liblo.so.7 liblo-0.26_1
+libvamp-sdk.so.2 libvamp-plugin-sdk-2.2_1
+librubberband.so.2 librubberband-1.6.0_1
+libaubio.so.5 libaubio-0.4.3_1
+libraptor2.so.0 libraptor-2.0.4_1
+liblrdf.so.2 liblrdf-0.4.0_1
+libserd-0.so.0 libserd-0.18.0_1
+libsord-0.so.0 libsord-0.5.0_1
+libgiggle.so.0 libgiggle-0.6.1_1
+libgiggle-git.so.0 libgiggle-0.6.1_1
+libwine.so.1 libwine-1.6_1
+libwv-1.2.so.4 libwv-1.2.9_1
+libabiword-3.0.so libabiword-3.0.0_1
+libmpg123.so.0 libmpg123-1.13.4_2
+libout123.so.0 libmpg123-1.23.0_1
+libsyn123.so.0 libmpg123-1.26.0_1
+libopenal.so.1 libopenal-1.13_1
+libalure.so.1 alure-1.2_1
+libalut.so.0 freealut-1.1.0_1
+liblilv-0.so.0 liblilv-0.14.4_1
+libsuil-0.so.0 suil-0.6.4_1
+libmcpp.so.0 libmcpp-2.7.2_1
+libjitterentropy.so.3 jitterentropy-3.0.0_1
+libkdecorations2.so.5 kdecoration-5.8.4_1
+libkdecorations2private.so.9 kdecoration-5.23.0_1
+libGlacier2.so.37 libIce-3.7.5_2
+libGlacier2CryptPermissionsVerifier.so.37 libIce-3.7.5_2
+libIce.so.37 libIce-3.7.5_2
+libIceSSL.so.37 libIce-3.7.5_2
+libIceUtil.so.37 libIce-3.7.5_2
+libIceStormService.so.37 libIce-3.7.5_2
+libIceStorm.so.37 libIce-3.7.5_2
+libFreeze.so.37 libIce-3.7.5_2
+libSlice.so.37 libIce-3.7.5_2
+libIceBox.so.37 libIce-3.7.5_2
+libIceGrid.so.37 libIce-3.7.5_2
+libIcePatch2.so.37 libIce-3.7.5_2
+libIceDB.so.37 libIce-3.7.5_2
+libIceXML.so.37 libIce-3.7.5_2
+libIceDiscovery.so.37 libIce-3.7.5_2
+libIceLocatorDiscovery.so.37 libIce-3.7.5_2
+libvdpau.so.1 libvdpau-0.4.1_1
+libgsm.so.1 libgsm-1.0.13_13
+libcgroup.so.1 libcgroup-0.37.1_1
+libxdg-basedir.so.1 libxdg-basedir-1.1.1_1
+libev.so.4 libev-4.04_1
+libell.so.0 ell-0.45_1
+libgvnc-1.0.so.0 gtk-vnc-0.4.4_1
+libgtk-vnc-2.0.so.0 gtk-vnc-0.4.4_1
+libgvncpulse-1.0.so.0 gtk-vnc-1.2.0_2
+libyaml-0.so.2 libyaml-0.1.4_1
+libuchardet.so.0 uchardet-0.0.6_1
+libgtksourceviewmm-3.0.so.0 gtksourceviewmm-3.2.0_1
+libyajl.so.2 yajl-2.0.1_1
+libconfuse.so.2 confuse-3.2.1_1
+liblldb.so.12 lldb-12.0.0_1
+libclang.so.12 libclang-12.0.0_1
+libclang-cpp.so.12 libclang-cpp-12.0.0_1
+libLLVM-11.so libllvm11-11.0.0_1
+libLLVM-12.so libllvm12-12.0.0_1
+libisofs.so.6 libisofs-0.6.24_1
+libmpack.so.0 libmpack-1.0.5_1
+libGeoIP.so.1 libgeoip-1.4.8_1
+libnilfs.so.0 libnilfs-2.1.0_1
+libnilfsgc.so.0 libnilfs-2.1.0_1
+libnilfscleaner.so.0 libnilfs-2.1.0_1
+libchicken.so.11 libchicken-5.1.0_1
+libmdb.so.0 libmdb-0.5_1
+libmdbsql.so.0 libmdb-0.5_1
+libkmod.so.2 libkmod-5_1
+libestr.so.0 libestr-0.1.2_1
+libee.so.0 libee-0.3.2_1
+libobt.so.2 libopenbox-3.5.2_1
+libobrender.so.32 libopenbox-3.6.1_1
+libgssglue.so.1 libgssglue-0.3_1
+libtirpc.so.3 libtirpc-1.0.2_1
+libnfsidmap.so.1 libnfsidmap-2.4.3_2
+libbind9-9.16.22.so bind-libs-9.16.22_1
+libdns-9.16.22.so bind-libs-9.16.22_1
+libirs-9.16.22.so bind-libs-9.16.22_1
+libisc-9.16.22.so bind-libs-9.16.22_1
+libisccc-9.16.22.so bind-libs-9.16.22_1
+libisccfg-9.16.22.so bind-libs-9.16.22_1
+libns-9.16.22.so bind-libs-9.16.22_1
+libplist-2.0.so.3 libplist-2.2.0_1
+libplist++-2.0.so.3 libplist++-2.2.0_1
+libnsbmp.so.0 libnsbmp-0.0.3_1
+libnsgif.so.0 libnsgif-0.0.3_1
+libparserutils.so.0 libparserutils-0.1.1_1
+libwapcaplet.so.0 libwapcaplet-0.1.0_1
+libcss.so.0 libcss-0.1.1_1
+libhubbub.so.0 libhubbub-0.1.1_1
+liblutok.so.3 lutok-0.4_1
+libmtdev.so.1 mtdev-1.1.2_1
+libcryptsetup.so.12 libcryptsetup-2.3.4_2
+libgusb.so.2 libgusb-0.1.3_1
+libmash-0.2.so.0 mash-0.2.0_4
+libbytesize.so.1 libbytesize-1.2_1
+libblockdev.so.2 libblockdev-2.16_1
+libbd_utils.so.2 libblockdev-2.16_1
+libndctl.so.6 libndctl-60.3_1
+libdaxctl.so.1 libdaxctl-60.3_1
+libudisks2.so.0 udisks2-1.93.0_1
+libgcr-base-3.so.1 gcr-3.3.92_1
+libgck-1.so.0 gcr-3.8.0_1
+libgcr-ui-3.so.1 gcr-3.8.0_1
+libcld2.so cld2-0.0.1.20150821_1
+libcld2_full.so cld2-full-0.0.1.20150821_1
+libwacom.so.2 libwacom-0.3_1
+libfarstream-0.2.so.5 farstream-0.2.7_1
+libass.so.9 libass-0.13.6_1
+libcryptui.so.0 libcryptui-3.4.0_1
+libkeyutils.so.1 libkeyutils-1.5.5_1
+libiptcdata.so.0 libiptcdata-1.0.4_1
+libutempter.so.0 libutempter-1.1.5_1
+libxatracker.so.2 libxatracker-10.0.0_2
+libtumbler-1.so.0 tumbler-4.9.2_1
+libwebrtc_audio_processing.so.1 webrtc-audio-processing-0.3_1
+libcupsmime.so.1 libcups-1.5.3_1
+libcupsppdc.so.1 libcups-1.5.3_1
+libcupscgi.so.1 libcups-1.5.3_1
+libcups.so.2 libcups-1.5.3_1
+libcupsimage.so.2 libcups-1.5.3_1
+libijs-0.35.so libijs-0.8_1
+libgs.so.9 libgs-0.8_1
+libssh2.so.1 libssh2-1.9.0_3
+libvirt-glib-1.0.so.0 libvirt-glib-0.0.8_1
+libsnmp.so.40 libnet-snmp-5.9_2
+libnetsnmp.so.40 libnet-snmp-5.9_2
+libnetsnmpagent.so.40 libnet-snmp-5.9_2
+libnetsnmpmibs.so.40 libnet-snmp-5.9_2
+libnetsnmptrapd.so.40 libnet-snmp-5.9_2
+libnetsnmphelpers.so.40 libnet-snmp-5.9_2
+libieee1284.so.3 libieee1284-0.2.10_1
+libsane.so.1 libsane-1.0.22_1
+libfltk.so.1.3 fltk-1.3.0_1
+libfltk_forms.so.1.3 fltk-1.3.0_1
+libfltk_gl.so.1.3 fltk-1.3.0_1
+libfltk_images.so.1.3 fltk-1.3.0_1
+libspectre.so.1 libspectre-0.2.6_1
+libsratom-0.so.0 sratom-0.4.0_1
+libpwquality.so.1 libpwquality-1.1.1_1
+libiml.so.0 iml-1.0.5_1
+libisl.so.23 isl-0.23_1
+libisl.so.19 isl15-0.19_1
+libcloog-isl.so.4 cloog-0.18.1_1
+librtmp.so.1 librtmp-2.4.20161210_9
+libORBit-2.so.0 libORBit2-2.14.19_1
+libORBit-imodule-2.so.0 libORBit2-2.14.19_1
+libORBitCosNaming-2.so.0 libORBit2-2.14.19_1
+libminiupnpc.so.17 miniupnpc-2.1_1
+libxbps.so.5 libxbps-0.59.1_4
+libatf-c.so.1 atf-libs-0.21_1
+libatf-c++.so.2 atf-libs-0.21_1
+libvdeplug.so.3 libvde2-2.3.2_23
+libvdemgmt.so.0 libvde2-2.3.2_23
+libvdehist.so.0 libvde2-2.3.2_23
+libvdesnmp.so.0 libvde2-2.3.2_23
+libsbc.so.1 sbc-1.0_1
+libecryptfs.so.1 libecryptfs-111_9
+libnuma.so.1 libnuma-2.0.7_1
+libxar.so.1 xar-1.6.1_9
+libmikmod.so.3 libmikmod-3.1.12_1
+libSDL_sound-1.0.so.1 SDL_sound-1.0.3_1
+libgtksourceview-2.0.so.0 gtksourceview2-2.10.5_1
+libraul.so.10 raul-0.8.0_1
+libxdot.so.4 graphviz-libs-2.28.0_6
+libgvpr.so.2 graphviz-libs-2.28.0_6
+libcgraph.so.6 graphviz-libs-2.28.0_6
+libgvc.so.6 graphviz-libs-2.28.0_6
+libcdt.so.5 graphviz-libs-2.28.0_6
+libpathplan.so.4 graphviz-libs-2.28.0_6
+liblab_gamut.so.1 graphviz-libs-2.40.1_1
+libflowcanvas.so.5 flowcanvas-0.7.1_1
+liblash.so.1 ladish-1_1
+libmowgli-2.so.0 libmowgli-2.1.3_8
+libgts-0.7.so.5 gts-0.7.6_1
+libguess.so.1 libguess-1.1_1
+libaudcore.so.5 audacious-3.9_1
+libaudgui.so.5 audacious-3.9_1
+libaudtag.so.3 audacious-3.8_1
+libaudqt.so.2 audacious-3.10.1_2
+libgstreamer-1.0.so.0 gstreamer1-1.0.0_1
+libgstbase-1.0.so.0 gstreamer1-1.0.0_1
+libgstcontroller-1.0.so.0 gstreamer1-1.0.0_1
+libgstnet-1.0.so.0 gstreamer1-1.0.0_1
+libgstcheck-1.0.so.0 gstreamer1-1.0.0_1
+libgsttag-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstfft-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstrtp-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstsdp-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstrtsp-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstvideo-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstaudio-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstpbutils-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstriff-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstapp-1.0.so.0 gst-plugins-base1-1.0.0_1
+libgstallocators-1.0.so.0 gst-plugins-base1-1.1.1_1
+libgstphotography-1.0.so.0 gst-plugins-bad1-1.18.3_2
+libgstsignalprocessor-1.0.so.0 gst-plugins-bad1-1.18.3_2
+libgstbasevideo-1.0.so.0 gst-plugins-bad1-1.18.3_2
+libgstbasecamerabinsrc-1.0.so.0 gst-plugins-bad1-1.18.3_2
+libgstcodecparsers-1.0.so.0 gst-plugins-bad1-1.18.3_2
+libgstplayer-1.0.so.0 gst-plugins-bad1-1.18.3_2
+libgstwebrtc-1.0.so.0 gst-plugins-bad1-1.18.4_2
+libgstgl-1.0.so.0 gst-plugins-base1-1.14.0_1
+libgnome-desktop-3.so.19 gnome-desktop-3.37.90.1_1
+libsecret-1.so.0 libsecret-0.10_1
+libgweather-3.so.16 libgweather-3.34.0_1
+libgnomekbd.so.8 libgnomekbd-3.6.0_1
+libgnomekbdui.so.8 libgnomekbd-3.6.0_1
+libibus-1.0.so.5 ibus-1.4.99.20120917_1
+libxapian.so.30 libxapian-1.4.0_1
+libzeitgeist-1.0.so.1 libzeitgeist-0.3.18_1
+libcolord-gtk.so.1 colord-gtk-0.1.23_1
+libcolord-gtk4.so.1 colord-gtk-0.3.0_1
+libgdm.so.1 libgdm-3.6.0_1
+libclutter-gst-2.0.so.0 clutter-gst-1.9.92_1
+libcheese.so.8 libcheese-3.17.90_1
+libcheese-gtk.so.25 libcheese-3.17.90_1
+libSoundTouch.so.1 soundtouch-1.9.2_1
+libzapojit-0.0.so.0 libzapojit-0.0.2_1
+libmusicbrainz5.so.1 libmusicbrainz5-5.1.0_1
+librygel-core-2.6.so.2 librygel-0.26.0_1
+librygel-renderer-2.6.so.2 librygel-0.26.0_1
+librygel-renderer-gst-2.6.so.2 librygel-0.26.0_1
+librygel-ruih-2.0.so.1 librygel-0.26.0_1
+librygel-server-2.6.so.2 librygel-0.26.0_1
+librygel-db-2.6.so.2 librygel-0.28.0_1
+libharfbuzz.so.0 libharfbuzz-0.9.4_1
+libharfbuzz-icu.so.0 libharfbuzz-0.9.19_1
+libharfbuzz-subset.so.0 libharfbuzz-1.7.6_1
+libharfbuzz-gobject.so.0 libharfbuzz-2.7.2_2
+libosinfo-1.0.so.0 libosinfo-0.2.0_1
+libspice-client-gtk-3.0.so.5 spice-gtk-0.37_6
+libspice-client-glib-2.0.so.8 spice-gtk-0.37_6
+libspice-controller.so.0 spice-gtk-0.37_6
+libvirt-gconfig-1.0.so.0 libvirt-glib-0.1.2_1
+libvirt-gobject-1.0.so.0 libvirt-glib-0.1.2_1
+libgsasl.so.7 libgsasl-1.8.0_1
+libzmq.so.5 zeromq-4.1.2_1
+libstatgrab.so.10 libstatgrab-0.91_1
+libseccomp.so.2 libseccomp-2.0.0_1
+libqrencode.so.4 libqrencode-4.0.0_1
+libwayland-server.so.0 wayland-1.6.0_1
+libwayland-client.so.0 wayland-1.10.0_1
+libwayland-cursor.so.0 wayland-1.6.0_1
+libwayland-egl.so.1 wayland-1.15.0_4
+libvarlink.so.0 libvarlink-22_1
+libtomcrypt.so.1 libtomcrypt-1.18.0_1
+libHX.so.28 libHX-3.14_1
+libxkbcommon.so.0 libxkbcommon-0.2.0_1
+libxkbcommon-x11.so.0 libxkbcommon-x11-0.4.2_1
+libxkbregistry.so.0 libxkbregistry-1.3.0_3
+libgee-0.8.so.2 libgee08-0.8.2_1
+libnettle.so.8 nettle-3.6_1
+libhogweed.so.6 nettle-3.6_1
+libgtkspell.so.0 gtkspell-2.0.16_1
+libgtkspell3-3.so.0 gtkspell3-3.0.9_1
+libpurple.so.0 libpurple-2.10.6_1
+libpurple-client.so.0 libpurple-2.10.6_1
+libjabber.so.0 libpurple-2.13.0_1
+libgnt.so.0 libgnt-2.10.6_1
+libao.so.4 libao-1.1.0_1
+libjansson.so.4 jansson-2.4_1
+libleveldb.so.1 leveldb-1.8.0_1
+libcprops.so.15 libcprops-0.1.12_1
+libopus.so.0 opus-1.0.2_1
+libconfig++.so.11 libconfig++-1.7.1_1
+libconfig.so.11 libconfig-1.7.1_1
+libopusfile.so.0 opusfile-0.12_2
+libopusurl.so.0 opusfile-0.12_2
+libopusenc.so.0 libopusenc-0.2_1
+libgranite.so.6 granite-6.2.0_1
+libprotobuf-vala.so.0 libprotobuf-vala-0.1.0_1
+librlog.so.5 librlog-1.4_1
+libtinyxml.so.0 tinyxml-2.6.2_1
+libtinyxml2.so.9 tinyxml2-9.0.0_1
+libbluray.so.2 libbluray-1.0.0_1
+libnfs.so.13 libnfs-4.0.0_1
+libzip.so.5 libzip-1.7.3_2
+libluajit-5.1.so.2 LuaJIT-2.0.0_1
+libOSMesa.so.8 libOSMesa-9.1_1
+libtaginfo.so.1 libtaginfo-0.1.3_1
+libtaginfo_c.so.0 libtaginfo-0.1.3_1
+libaa.so.1 aalib-1.4rc4_2
+libbsd.so.0 libbsd-0.4.2_1
+libWFC.so rpi-userland-0.0.0.0.20150907_1
+libbcm_host.so rpi-userland-0.0.0.0.20150907_1
+libopenmaxil.so rpi-userland-0.0.0.0.20150907_1
+libvchiq_arm.so rpi-userland-0.0.0.0.20150907_1
+libvcos.so rpi-userland-0.0.0.0.20150907_1
+libmmal.so rpi-userland-0.0.0.0.20150907_1
+libmmal_core.so rpi-userland-0.0.0.0.20150907_1
+libmmal_util.so rpi-userland-0.0.0.0.20150907_1
+libOpenVG.so rpi-userland-0.0.0.0.20150907_1
+libmmal_vc_client.so rpi-userland-20170427_1
+libmmal_components.so rpi-userland-20170427_1
+libvcsm.so rpi-userland-20170427_1
+libcontainers.so rpi-userland-20170427_1
+libbrcmWFC.so rpi-userland-20180103_1
+libdebug_sym.so rpi-userland-20180103_1
+libdtovl.so rpi-userland-20180103_1
+libwiringPi.so libwiringPi-0.0.20200408_1
+libwiringPiDev.so libwiringPi-0.0.20200408_1
+liblockdev.so.1 lockdev-1.0.3_1
+libcec.so.6 libcec-6.0.2_1
+librump.so.0 netbsd-rumpkernel-20140526_3
+librumpvfs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_disk.so.0 netbsd-rumpkernel-20140526_3
+librumpdev.so.0 netbsd-rumpkernel-20140526_3
+librumpuser.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_sockin.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_net.so.0 netbsd-rumpkernel-20140526_3
+librumpnet.so.0 netbsd-rumpkernel-20140526_3
+librumpkern_sys_linux.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_netsmb.so.0 netbsd-rumpkernel-20140526_3
+librumpkern_crypto.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_usb.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_ulpt.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_umass.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_ugenhc.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_ucom.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_ubt.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_opencrypto.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_wscons.so.0 netbsd-rumpkernel-20140526_3
+librumpvfs_aio.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_sysmon.so.0 netbsd-rumpkernel-20140526_3
+librumpvfs_layerfs.so.0 netbsd-rumpkernel-20140526_3
+librumpvfs_fifofs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_scsipi.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_nfsserver.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_rnd.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_v7fs.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_union.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_raidframe.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_umap.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_putter.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_udf.so.0 netbsd-rumpkernel-20140526_3
+librumphijack.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_tmpfs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_pud.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_virtif.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_sysvbfs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_pad.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_bpfjit.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_shmif.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_config.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_syspuffs.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_smbfs.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_local.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_npf.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_ptyfs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_md.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_null.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_netmpls.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_netinet6.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_ntfs.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_nilfs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_fss.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_netinet.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_netbt.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_msdos.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_nfs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_drvctl.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_net80211.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_mfs.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_lfs.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_dm.so.0 netbsd-rumpkernel-20140526_3
+librumpkern_time.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_kernfs.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_hfs.so.0 netbsd-rumpkernel-20140526_3
+librumpkern_sljit.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_ffs.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_fdesc.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_bridge.so.0 netbsd-rumpkernel-20140526_3
+librumpkern_z.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_cgd.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_ext2fs.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_efs.so.0 netbsd-rumpkernel-20140526_3
+librumpnet_agr.so.0 netbsd-rumpkernel-20140526_3
+librumpkern_tty.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_bpf.so.0 netbsd-rumpkernel-20140526_3
+librumpfs_cd9660.so.0 netbsd-rumpkernel-20140526_3
+librumpdev_audio.so.0 netbsd-rumpkernel-20140526_3
+librumpclient.so.0 netbsd-rumpkernel-20140526_3
+libdotconf.so.0 dotconf-1.3_1
+libspeechd.so.2 speech-dispatcher-0.8_1
+libre2.so.7 re2-2020.06.01_1
+libminizip.so.1 minizip-1.2.7_1
+libsrtp2.so.1 libsrtp-2.1.0_1
+libjsoncpp.so.24 jsoncpp-1.9.4_1
+libesmtp.so.6 libesmtp-1.0.6_21
+libcaca.so.0 libcaca-0.99.beta18_3
+libcaca++.so.0 libcaca-0.99.beta18_3
+libunwind.so.8 libunwind-1.5.0_3
+libunwind-ptrace.so.0 libunwind-1.5.0_3
+libunwind-x86_64.so.8 libunwind-1.5.0_3
+libunwind-x86.so.8 libunwind-1.5.0_3
+libunwind-arm.so.8 libunwind-1.5.0_3
+libunwind-mips.so.8 libunwind-1.5.0_3
+libunwind-aarch64.so.8 libunwind-1.5.0_3
+libunwind-ppc32.so.8 libunwind-1.5.0_3
+libunwind-ppc64.so.8 libunwind-1.5.0_3
+libunwind-setjmp.so.0 libunwind-1.5.0_3
+libmicrohttpd.so.12 libmicrohttpd-0.9.73_1
+libmicrodns.so.1 libmicrodns-0.2.0_1
+libgit2.so.1.0 libgit2-1.0.1_3
+libgit2-glib-1.0.so.0 libgit2-glib-0.23.4_1
+libagg.so.2 agg-2.5_1
+libzzip-0.so.13 zziplib-0.13.62_1
+libzzipfseeko-0.so.13 zziplib-0.13.62_1
+libzzipwrap-0.so.13 zziplib-0.13.62_1
+libzzipmmapped-0.so.13 zziplib-0.13.62_1
+libkworkspace5.so.5 kworkspace-5.14.5_2
+libdb-5.3.so libdb-5.3.21_1
+libdb_cxx-5.3.so libdb-cxx-5.3.21_1
+libcares.so.2 c-ares-1.10.0_1
+libcryptopp.so.8 crypto++-8.3.0_1
+libdbusmenu-glib.so.4 libdbusmenu-glib-12.10.2_1
+libdbusmenu-gtk3.so.4 libdbusmenu-gtk3-12.10.2_1
+libGrantlee_Templates.so.5 grantlee5-5.0.0_1
+libGrantlee_TextDocument.so.5 grantlee5-5.0.0_1
+librasqal.so.3 librasqal-0.9.30_1
+librdf.so.0 librdf-1.0.16_1
+libclucene-core.so.1 clucene-2.3.3.4_1
+libclucene-shared.so.1 clucene-2.3.3.4_1
+libclucene-contribs-lib.so.1 clucene-2.3.3.4_1
+libodbcinst.so.2 libodbc-2.3.1_1
+libodbc.so.2 libodbc-2.3.1_1
+libiodbc.so.2 libiodbc-3.52.8_1
+libiodbcinst.so.2 libiodbc-3.52.8_1
+libsolarus.so.1 solarus-1.6.2_1
+libsolarus-gui.so.1 solarus-1.6.2_1
+libplank.so.1 plank-0.11.0_1
+libssh.so.4 libssh-0.9.5_2
+libxcb-render-util.so.0 xcb-util-renderutil-0.3.8_1
+libKPimGAPIContacts.so.5 libkgapi-17.12.3_1
+libKPimGAPIBlogger.so.5 libkgapi-17.12.3_1
+libKPimGAPILatitude.so.5 libkgapi-17.12.3_1
+libKPimGAPICalendar.so.5 libkgapi-17.12.3_1
+libKPimGAPICore.so.5 libkgapi-17.12.3_1
+libKPimGAPITasks.so.5 libkgapi-17.12.3_1
+libKPimGAPIMaps.so.5 libkgapi-17.12.3_1
+libKPimGAPIDrive.so.5 libkgapi-17.12.3_1
+libkgapi2.so.2 libkgapi-2.0.1_1
+libqoauth.so.2 qoauth-qt5-2.0.0_1
+libIrrlicht.so.1.8 irrlicht-1.8_1
+libsnappy.so.1 snappy-1.1.0_1
+libbenchmark.so.1 benchmark-1.5.5_1
+libbenchmark_main.so.1 benchmark-1.5.5_1
+libKF5Torrent.so.6 libktorrent-2.1_1
+libvncserver.so.1 libvncserver-0.9.13_2
+libvncclient.so.1 libvncserver-0.9.13_2
+libotr.so.5 libotr-4.0.0_1
+liballeg.so.4.4 allegro4-4.4.2_1
+liballeggl.so.4.4 allegro4-4.4.2_1
+libjpgalleg.so.4.4 allegro4-4.4.2_1
+libloadpng.so.4.4 allegro4-4.4.2_1
+liblogg.so.4.4 allegro4-4.4.2_1
+libraw1394.so.11 libraw1394-2.1.0_1
+libqmi-glib.so.5 libqmi-1.14.2_1
+libmbim-glib.so.4 libmbim-1.10.0_1
+libmm-glib.so.0 libmm-glib-1.0.0_1
+libgpm.so.2 libgpm-1.20.7_1
+libgdl-3.so.5 gdl-3.8.1_1
+libgda-5.0.so.4 libgda-5.2.9_4
+libgda-report-5.0.so.4 libgda-5.2.9_4
+libgda-ui-5.0.so.4 libgda-5.2.9_4
+libgda-xslt-5.0.so.4 libgda-5.2.9_4
+libamtk-5.so.0 amtk-5.0.0_1
+libdevhelp-3.so.6 devhelp-libs-3.30.0_1
+libunistring.so.2 libunistring-0.9.4_1
+libguile-2.2.so.1 libguile-2.2.7_1
+libopts.so.25 libopts-5.18.4_6
+libanjuta-3.so.0 anjuta-3.8.4_1
+libgmlib.so.1 gmtk-1.0.8_1
+libgmtk.so.1 gmtk-1.0.8_1
+liblrzip.so.0 liblrzip-0.614_3
+libsilcclient-1.1.so.4 silc-toolkit-1.1.11_1
+libsilc-1.1.so.4 silc-toolkit-1.1.11_1
+libphorward.so.0 libphorward-0.17_1
+libusbip.so.0 libusbip-3.10_1
+libcpupower.so.0 libcpupower-3.10_1
+librsync.so.2 librsync-1.0.0_1
+libserf-1.so.1 serf-1.3.9_13
+libmpdclient.so.2 libmpdclient-0.28_1
+libmcrypt.so.4 libmcrypt-2.5.8_1
+libgraphite2.so.3 graphite-1.2.3_1
+libFOX-1.6.so.0 fox-1.6.49_1
+libCHART-1.6.so.0 fox-1.6.49_1
+libchromaprint.so.1 chromaprint-1.5.0_1
+libedit.so.0 libedit-20130712.3.1_1
+libnet.so.9 libnet-1.2_1
+libgpaste.so.13 libgpaste-3.38.2_1
+libthreadutil.so.6 libupnp-1.6.18_1
+libupnp.so.17 libupnp-1.14.0_1
+libixml.so.11 libupnp-1.14.0_1
+libupnpp.so.11 libupnpp-0.21.0_1
+libgeocode-glib.so.0 geocode-glib-3.10.0_1
+libzeitgeist-2.0.so.0 libzeitgeist2-0.9.14_1
+libpotrace.so.0 libpotrace-1.11_1
+libSDL2-2.0.so.0 SDL2-2.0.0_1
+libcacard.so.0 libcacard-1.6.1_1
+libxcb-cursor.so.0 xcb-util-cursor-0.1.0_1
+libgldi.so.3 libgldi-3.3.1_1
+libevdev.so.2 libevdev-1.2_1
+libgdiplus.so.0 libgdiplus-2.10.9_1
+libmonosgen-2.0.so.1 mono-3.2.3_1
+libshout-idjc.so.3 libshout-idjc-2.3.1_1
+libmonoboehm-2.0.so.1 mono-3.2.3_1
+libglusterfs.so.0 libglusterfs-8.3_2
+libgfdb.so.0 libglusterfs-8.3_2
+libgfchangelog.so.0 libglusterfs-8.3_2
+libgfrpc.so.0 libglusterfs-8.3_2
+libgfxdr.so.0 libglusterfs-8.3_2
+libgfapi.so.0 libglusterfs-8.3_2
+libglusterd.so.0 libglusterfs-8.3_2
+libsnapper.so.5 libsnapper-0.4.1_1
+libtsm.so.3 libtsm-3_1
+libxine.so.2 libxine-1.2.4_1
+libjbig2dec.so.0 libjbig2dec-0.11_1
+libsource-highlight.so.4 libsource-highlight-3.1.7_1
+libvlc.so.5 libvlc-2.1.1_3
+libvlccore.so.9 libvlc-3.0.2_1
+libvlc_vdpau.so.0 libvlc-2.2.0_1
+libvlc_pulse.so.0 libvlc-3.0.2_1
+libvlc_xcb_events.so.0 libvlc-3.0.2_1
+libcmocka.so.0 cmocka-1.1.1_1
+libbtrfs.so.0 libbtrfs-3.12_1
+libreiserfscore.so.0 reiserfsprogs-3.6.27_3
+libbtrfsutil.so.1 libbtrfsutil-5.4_1
+libecore_audio.so.1 efl-1.25.1_2
+libecore_con.so.1 efl-1.25.1_2
+libecore_evas.so.1 efl-1.25.1_2
+libecore_file.so.1 efl-1.25.1_2
+libecore_imf_evas.so.1 efl-1.25.1_2
+libecore_imf.so.1 efl-1.25.1_2
+libecore_input_evas.so.1 efl-1.25.1_2
+libecore_input.so.1 efl-1.25.1_2
+libecore_ipc.so.1 efl-1.25.1_2
+libecore.so.1 efl-1.25.1_2
+libecore_x.so.1 efl-1.25.1_2
+libecore_wl2.so.1 efl-1.25.1_2
+libecore_drm2.so.1 efl-1.25.1_2
+libedje.so.1 efl-1.25.1_2
+libeet.so.1 efl-1.25.1_2
+libeeze.so.1 efl-1.25.1_2
+libefreet_mime.so.1 efl-1.25.1_2
+libefreet.so.1 efl-1.25.1_2
+libefreet_trash.so.1 efl-1.25.1_2
+libeina.so.1 efl-1.25.1_2
+libeio.so.1 efl-1.25.1_2
+libeldbus.so.1 efl-1.25.1_2
+libelput.so.1 efl-1.25.1_2
+libembryo.so.1 efl-1.25.1_2
+libemotion.so.1 efl-1.25.1_2
+libeo.so.1 efl-1.25.1_2
+libethumb_client.so.1 efl-1.25.1_2
+libethumb.so.1 efl-1.25.1_2
+libevas.so.1 efl-1.25.1_2
+libefl.so.1 efl-1.25.1_2
+libefl_canvas_wl.so.1 efl-1.25.1_2
+libelua.so.1 efl-1.25.1_2
+libelocation.so.1 efl-1.25.1_2
+libelementary.so.1 efl-1.25.1_2
+libector.so.1 efl-1.25.1_2
+libemile.so.1 efl-1.25.1_2
+libcjs.so.0 cjs-2.0.0_1
+libmuffin.so.0 muffin-2.0.5_1
+libmuffin-cogl-pango-0.so muffin-4.0.5_1
+libmuffin-cogl-path-0.so muffin-4.0.5_1
+libmuffin-cogl-0.so muffin-4.0.5_1
+libmuffin-clutter-0.so muffin-4.0.5_1
+libcinnamon-desktop.so.4 cinnamon-desktop-2.0.4_1
+libcinnamon-control-center.so.1 libcinnamon-control-center-2.4.2_1
+libcvc.so.0 cinnamon-desktop-3.2.0_1
+libnemo-extension.so.1 libnemo-2.0.8_1
+libtimezonemap.so.1 libtimezonemap-0.4.6_1
+libxshmfence.so.1 libxshmfence-1.1_1
+libgoffice-0.10.so.10 goffice-0.10.9_1
+libc++.so.1 libcxx-3.4_1
+libopenobex.so.2 openobex-1.7.1_1
+libnotmuch.so.5 libnotmuch-0.25_1
+libatomic_ops_gpl.so.1 libatomic_ops-7.4.2_1
+libatomic_ops.so.1 libatomic_ops-7.4.2_1
+libbfb.so.1 libbfb-0.24.2_1
+libmulticobex.so.1 libmulticobex-0.24_1
+libobexftp.so.0 libobexftp-0.24_1
+libhunspell-1.7.so.0 libhunspell1.7-1.7.0_1
+libstdlog.so.0 liblogging-1.0.0_1
+liblogging-stdlog.so.0 liblogging-1.0.2_1
+libdom.so.0 libdom-0.0.1_1
+libslang.so.2 slang-2.2.4_1
+libtre.so.5 tre-0.8.0_1
+libktoblzcheck.so.1 ktoblzcheck-1.43_2
+libgwenhywfar.so.79 gwenhywfar-5.4.0_2
+libgwengui-gtk2.so.79 gwenhywfar-gtk-5.4.0_2
+libgwengui-gtk3.so.79 gwenhywfar-gtk3-5.4.0_2
+libgwengui-cpp.so.79 gwenhywfar-5.4.0_2
+libgwengui-qt5.so.79 gwenhywfar-qt5-5.4.0_2
+libaqbanking.so.44 aqbanking-6.0.0_1
+libaqnone.so.35 aqbanking-5.6.10_1
+libaqhbci.so.24 aqbanking-5.7.8_1
+libaqofxconnect.so.7 aqbanking-5.0.25_1
+libaqebics.so.0 aqbanking-5.0.25_1
+libaqbankingpp.so.0 aqbanking-5.0.25_1
+libxmlsec1.so.1 xmlsec1-1.2.31_2
+libxmlsec1-nss.so.1 xmlsec1-1.2.31_2
+libxmlsec1-openssl.so.1 xmlsec1-1.2.31_2
+libcheck.so.0 check-0.9.12_1
+liblxc.so.1 liblxc-4.0.6_2
+libtcmalloc.so.4 gperftools-2.1_1
+libaio.so.1 libaio-0.3.109_1
+libofx.so.7 libofx-0.10.1_1
+libsigsegv.so.2 libsigsegv-2.10_2
+libfprint.so.0 libfprint0-1.0_1
+libfprint-2.so.2 libfprint-1.90.7_1
+libwx_baseu_xml-3.0.so.0 wxWidgets-common-3.0.4_1
+libwx_baseu-3.0.so.0 wxWidgets-common-3.0.4_1
+libwx_gtk2_adv-3.0.so.0 wxWidgets-3.0.0_1
+libwx_base_xml-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2_html-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2_aui-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2_core-3.0.so.0 wxWidgets-3.0.0_1
+libwx_base_net-3.0.so.0 wxWidgets-3.0.0_1
+libwx_base-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_gl-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_stc-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_adv-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_qa-3.0.so.0 wxWidgets-3.0.0_1
+libwx_baseu_net-3.0.so.0 wxWidgets-common-3.0.4_1
+libwx_gtk2u_core-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_richtext-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_propgrid-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_html-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_xrc-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_aui-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_ribbon-3.0.so.0 wxWidgets-3.0.0_1
+libwx_gtk2u_media-3.0.so.0 wxWidgets-3.0.1_1
+libmspack.so.0 libmspack-0.4alpha_1
+libslim.so.1.3.6 slim-1.3.6_1
+libmediaart-2.0.so.0 libmediaart-1.9.1_1
+libinput.so.10 libinput-1.2.0_1
+libuhttpmock-0.0.so.0 uhttpmock-0.2.0_1
+libgfbgraph-0.2.so.0 gfbgraph-0.2.2_1
+libgtkhex-3.so.0 libgtkhex-3.10.0_1
+libgdlmm-3.0.so.2 libgdlmm-3.7.3_1
+libdmraid.so.1 dmraid-1.0.0.rc16.3_5
+libdovecot.so.0 dovecot-2.3.13_3
+libdovecot-login.so.0 dovecot-2.3.13_3
+libdovecot-compression.so.0 dovecot-2.3.13_3
+libdovecot-sql.so.0 dovecot-2.3.13_3
+libdovecot-storage.so.0 dovecot-2.3.13_3
+libdovecot-lda.so.0 dovecot-2.3.13_3
+libwiretap.so.12 libwireshark-3.6.3_1
+libwireshark.so.15 libwireshark-3.6.3_1
+libwsutil.so.13 libwireshark-3.6.3_1
+libKF5ContactEditor.so.5 akonadi-contacts-17.12.1_1
+libKF5AkonadiContact.so.5 akonadi-contacts-17.12.1_1
+libKF5Prison.so.5 prison-5.43.0_1
+libKF5AkonadiMime.so.5 akonadi-mime-17.12.1_1
+libKF5Mime.so.5 kmime-17.12.1_1
+libKF5Kirigami2.so.5 kirigami2-5.47.0_1
+libtaskmanager.so.6 plasma-workspace-5.8.4_1
+libnotificationmanager.so.1 plasma-workspace-5.15.90_1
+libZXing.so.1 zxing-cpp-1.2.0_1
+libfreerdp-client2.so.2 libfreerdp-2.2.0_3
+libfreerdp2.so.2 libfreerdp-2.2.0_3
+libwinpr2.so.2 libfreerdp-2.2.0_3
+libwinpr-tools2.so.2 libfreerdp-2.2.0_3
+libfreerdp-core.so.1.0 libfreerdp-2.2.0_3
+libfreerdp-channels.so.1.0 libfreerdp-2.2.0_3
+libfreerdp-rail.so.1.0 libfreerdp-2.2.0_3
+libfreerdp-kbd.so.1.0 libfreerdp-2.2.0_3
+libfreerdp-utils.so.1.0 libfreerdp-2.2.0_3
+libfreerdp-codec.so.1.0 libfreerdp-2.2.0_3
+libfreerdp-gdi.so.1.0 libfreerdp-2.2.0_3
+libfreerdp-cache.so.1.0 libfreerdp-2.2.0_3
+libuwac0.so.0 libfreerdp-2.2.0_3
+libfreerdp-server2.so.2 libfreerdp-server-2.4.0_1
+libfreerdp-shadow-subsystem2.so.2 libfreerdp-server-2.4.0_1
+libfreerdp-shadow2.so.2 libfreerdp-server-2.4.0_1
+libcppunit-1.15.so.1 libcppunit-1.15.1_1
+libcalc.so.2.14.0.8 libcalc-2.14.0.8_1
+libcustcalc.so.2.14.0.8 libcalc-2.14.0.8_1
+libOgreMain.so.1.12.9 libogre-1.12.9_1
+libOgreBites.so.1.12.9 libogre-1.12.9_1
+libOgreOverlay.so.1.12.9 libogre-1.12.9_1
+libOgreProperty.so.1.12.9 libogre-1.12.9_1
+libOgreTerrain.so.1.12.9 libogre-1.12.9_1
+libOgreVolume.so.1.12.9 libogre-1.12.9_1
+libOgreRTShaderSystem.so.1.12.9 libogre-1.12.9_1
+libOgreMeshLodGenerator.so.1.12.9 libogre-1.12.9_1
+libOgrePaging.so.1.12.9 libogre-1.12.9_1
+libglut.so.3 libfreeglut-2.8.1_1
+libogmrip-gtk.so.1 ogmrip-1.0.0_1
+libogmdvd.so.1 ogmrip-1.0.0_1
+libogmjob.so.1 ogmrip-1.0.0_1
+libogmrip-mplayer.so.1 ogmrip-1.0.0_1
+libogmrip.so.1 ogmrip-1.0.0_1
+libogmrip-lavc.so.1 ogmrip-1.0.0_1
+libogmdvd-gtk.so.1 ogmrip-1.0.0_1
+libSDL2_image-2.0.so.0 SDL2_image-2.0.0_1
+liba2ps.so.1 liba2ps-4.14_1
+libplibul.so.1 plib-1.8.5_1
+libplibjs.so.1 plib-1.8.5_1
+libplibsl.so.1 plib-1.8.5_1
+libplibsm.so.1 plib-1.8.5_1
+libplibfnt.so.1 plib-1.8.5_1
+libplibpu.so.1 plib-1.8.5_1
+libplibsg.so.1 plib-1.8.5_1
+libplibssg.so.1 plib-1.8.5_1
+libplibpuaux.so.1 plib-1.8.5_1
+libplibssgaux.so.1 plib-1.8.5_1
+libplibnet.so.1 plib-1.8.5_1
+libplibpsl.so.1 plib-1.8.5_1
+libplibpw.so.1 plib-1.8.5_1
+libode.so.8 libode-0.16_1
+libosmocore.so.12 libosmocore-1.2.0_1
+libosmovty.so.4 libosmocore-0.10.2_1
+libosmosim.so.0 libosmocore-0.8.0_1
+libosmocodec.so.0 libosmocore-0.6.6_1
+libosmogsm.so.13 libosmocore-1.2.0_1
+libosmogb.so.9 libosmocore-1.2.0_1
+libosmoctrl.so.0 libosmocore-0.7.0_1
+libgtkglext-x11-1.0.so.0 gtkglext-1.2.0_4
+libgdkglext-x11-1.0.so.0 gtkglext-1.2.0_4
+libXaw3d.so.8 libXaw3d-1.6.2_1
+libshiboken2.so.5.15 libshiboken2-5.15.0_1
+libpyside2.so.5.15 libpyside2-python3-5.15.0_1
+libupsclient.so.4 libnetwork-ups-tools-2.7.4_12
+libnutclient.so.0 libnetwork-ups-tools-2.7.4_12
+libnutscan.so.1 libnetwork-ups-tools-2.7.4_12
+libsphinxad.so.0 sphinxbase-0.8_1
+libsphinxbase.so.1 sphinxbase-0.8_1
+libpocketsphinx.so.1 libpocketsphinx-0.8_3
+libcmuclmtk.so.0 libcmuclmtk-0.7_2
+libttsmimic.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_usenglish.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_grapheme_lang.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_indic_lang.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmulex.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_indic_lex.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_grapheme_lex.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_us_kal.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_time_awb.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_us_kal16.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_us_awb.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_us_rms.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_cmu_us_slt.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_vid_gb_ap.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_all_langs.so.0 mimic-1.2.0.2_1
+libttsmimic_lang_all_voices.so.0 mimic-1.2.0.2_1
+libtcmalloc_minimal.so.4 gperftools-2.1.90_1
+libtcmalloc_minimal_debug.so.4 gperftools-2.1.90_1
+libtcmalloc_debug.so.4 gperftools-2.1.90_1
+libprofiler.so.0 gperftools-2.1.90_1
+libtcmalloc_and_profiler.so.4 gperftools-2.1.90_1
+libHalf-2_4.so.24 ilmbase-2.4.0_1
+libIex-2_4.so.24 ilmbase-2.4.0_1
+libIexMath-2_4.so.24 ilmbase-2.4.0_1
+libImath-2_4.so.24 ilmbase-2.4.0_1
+libIlmThread-2_4.so.24 ilmbase-2.4.0_1
+libIlmImf-2_4.so.24 libopenexr-2.4.0_1
+libIlmImfUtil-2_4.so.24 libopenexr-2.4.0_1
+libGraphicsMagick.so.3 libgraphicsmagick-1.3.19_1
+libGraphicsMagick++.so.12 libgraphicsmagick-1.3.22_1
+libGraphicsMagickWand.so.2 libgraphicsmagick-1.3.19_1
+liblensfun.so.1 lensfun-0.3.2_1
+libmitlm.so.1 mitlm-0.4.2_1
+libextractor.so.3 libextractor-1.1_1
+libextractor_common.so.1 libextractor-1.1_1
+libpano13.so.3 libpano13-2.9.19_1
+libubsan.so.1 libsanitizer-8.2.0_1
+libtsan.so.0 libsanitizer-6.3.0_1
+libasan.so.6 libsanitizer-10.2.0_1
+liblsan.so.0 libsanitizer-6.3.0_1
+libvtv.so.0 libvtv-6.3.0_1
+libatomic.so.1 libatomic-4.9.0_1
+libpcsclite.so.1 libpcsclite-1.8.11_1
+libpcscspy.so.0 libpcsclite-1.8.11_1
+libBulletDynamics.so.3.17 bullet-3.17_1
+libBulletCollision.so.3.17 bullet-3.17_1
+libLinearMath.so.3.17 bullet-3.17_1
+libBulletSoftBody.so.3.17 bullet-3.17_1
+libBullet3Common.so.3.17 bullet-3.17_1
+libinotifytools.so.0 libinotify-tools-3.14_2
+libfswatch.so.11 libfswatch-1.13.0_1
+libopensc.so.8 libopensc-0.22.0_1
+libSDL2_ttf-2.0.so.0 SDL2_ttf-2.0.12_1
+librtlsdr.so.0 librtlsdr-0.5.3_1
+libSDL2_mixer-2.0.so.0 SDL2_mixer-2.0.0_1
+libSDL2_net-2.0.so.0 SDL2_net-2.0.0_1
+libnxml.so.0 libnxml-0.18.3_1
+libmrss.so.0 libmrss-0.19.2_1
+libuv.so.1 libuv-1.0.0_1
+libXm.so.4 motif-2.3.8_1
+libMrm.so.4 motif-2.3.8_1
+libUil.so.4 motif-2.3.8_1
+libgtest.so gtest-1.7.0_1
+libgtest_main.so gtest-1.7.0_1
+libxmlsec1-gcrypt.so.1 xmlsec1-1.2.31_2
+libxmlsec1-gnutls.so.1 xmlsec1-1.2.31_2
+libefivar.so.1 libefivar-31_1
+libefiboot.so.1 libefivar-31_1
+libportaudio.so.2 portaudio-19.20140130_1
+libportaudiocpp.so.0 portaudio-cpp-19.20140130_1
+libdar.so.6000 libdar-2.6.6_1
+libdar64.so.6000 libdar-2.6.6_1
+libpython3.so python3-3.9.2_2
+libpython3.10.so.1.0 python3-3.10.0_1
+libbrscandec2.so.1 brother-brscan3-0.2.11_2
+libpyglib-2.0-python.so.0 python-gobject2-2.28.6_11
+libxmlrpc_server_abyss.so.3 xmlrpc-c-1.51.06_2
+libxmlrpc++.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_server.so.3 xmlrpc-c-1.51.06_2
+libxmlrpc_packetsocket.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc.so.3 xmlrpc-c-1.51.06_2
+libxmlrpc_util.so.4 xmlrpc-c-1.51.06_2
+libxmlrpc_abyss.so.3 xmlrpc-c-1.51.06_2
+libxmlrpc_server_abyss++.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_cpp.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_client++.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_server++.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_server_cgi++.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_server_pstream++.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_client.so.3 xmlrpc-c-1.51.06_2
+libxmlrpc_util++.so.8 xmlrpc-c-1.51.06_2
+libxmlrpc_abyss++.so.8 xmlrpc-c-1.51.06_2
+libtelepathy-farstream.so.3 telepathy-farstream-0.6.0_6
+libnetpbm.so.11 libnetpbm-10.66.03_2
+libid3.so id3lib-3.8.3_1
+libid3-3.8.so.3 id3lib-3.8.3_1
+libgirara-gtk3.so.3 girara-0.2.8_1
+libjq.so.1 jq-1.6_2
+libcrypto.so.1.1 libcrypto1.1-1.1.1f_1
+libssl.so.1.1 libssl1.1-1.1.1f_1
+libvamp-hostsdk.so.3 libvamp-plugin-sdk-2.2_6
+libportmidi.so portmidi-217_1
+libWildMidi.so.2 libwildmidi-0.4.3_1
+libsox.so.3 sox-14.4.2_1
+libsoxr.so.0 libsoxr-0.1.2_1
+libsoxr-lsr.so.0 libsoxr-0.1.2_1
+libdumb.so.2 dumb-2.0.3_1
+libaldmb.so.2 aldumb-2.0.3_3
+libframe.so.6 frame-2.5.0_1
+libgrail.so.6 grail-3.1.0_1
+libgeis.so.1 geis-2.2.16_1
+libndp.so.0 libndp-1.3_1
+libepoxy.so.0 libepoxy-1.2_1
+libfakekey.so.0 libfakekey-0.1_1
+libsmartcols.so.1 libsmartcols-2.25_1
+libfdisk.so.1 libfdisk-2.26_1
+libspiro.so.1 libspiro-20190731_1
+libopenjp2.so.7 libopenjpeg2-2.1.0_1
+libcln.so.6 cln-1.3.3_1
+libchm.so.0 libchmlib-0.40_1
+libOkular5Core.so.9 libokular-18.04.1_1
+libmnl.so.0 libmnl-1.0.3_1
+libnftnl.so.11 libnftnl-1.1.2_1
+libfcgi.so.0 fcgi-2.4.0_2
+libdshconfig.so.1 libdshconfig-0.20.13_1
+libpar2.so.1 libpar2-0.4_1
+libsodium.so.23 libsodium-1.0.15_1
+libstrophe.so.0 libstrophe-0.10.1_2
+libganv-1.so.1 ganv-1.4.2_1
+libblas.so.3 blas-3.5.0_1
+libcblas.so.3 cblas-3.6.0_1
+liblapack.so.3 lapack-3.5.0_1
+libcinnamon-menu-3.so.0 cinnamon-menus-2.2.0_1
+libmate-desktop-2.so.17 mate-desktop-1.8.0_1
+libmarco-private.so.2 libmarco-1.22.2_1
+libmate-menu.so.2 mate-menus-1.8.0_1
+libcaja-extension.so.1 libcaja-1.8.1_1
+libmatekbd.so.4 libmatekbd-1.8.0_1
+libmatemixer.so.0 libmatemixer-1.10.0_1
+libmatekbdui.so.4 libmatekbd-1.8.0_1
+libmate-window-settings.so.1 libmate-control-center-1.8.1_1
+libmateweather.so.1 libmateweather-1.8.0_1
+libmate-panel-applet-4.so.1 libmate-panel-1.8.0_1
+libslab.so.0 libmate-control-center-1.8.2_1
+liblz4.so.1 liblz4-1.8.2_1
+libatrilview.so.3 libatril-1.8.0_1
+libatrildocument.so.3 libatril-1.8.0_1
+libjawt.so openjdk8-jre-8u20_2
+libawt.so openjdk8-jre-8u20_1
+libawt_xawt.so openjdk8-jre-8u20_1
+libjava.so openjdk8-jre-8u20_1
+libjli.so openjdk8-jre-8u20_1
+libjvm.so openjdk8-jre-8u20_1
+libjawt.so openjdk11-11.0.5+10_1
+libawt.so openjdk11-11.0.5+10_1
+libawt_xawt.so openjdk11-11.0.5+10_1
+libjava.so openjdk11-11.0.5+10_1
+libjli.so openjdk11-11.0.5+10_1
+libjvm.so openjdk11-11.0.5+10_1
+libjawt.so openjdk7-bootstrap-7u221b02_1
+libawt.so openjdk7-bootstrap-7u221b02_1
+libawt_xawt.so openjdk7-bootstrap-7u221b02_1
+libjava.so openjdk7-bootstrap-7u221b02_1
+libjli.so openjdk7-bootstrap-7u221b02_1
+libjvm.so openjdk7-bootstrap-7u221b02_1
+libjawt.so openjdk9-bootstrap-9.0.4p12_1
+libawt.so openjdk9-bootstrap-9.0.4p12_1
+libawt_xawt.so openjdk9-bootstrap-9.0.4p12_1
+libjava.so openjdk9-bootstrap-9.0.4p12_1
+libjli.so openjdk9-bootstrap-9.0.4p12_1
+libjvm.so openjdk9-bootstrap-9.0.4p12_1
+libjawt.so openjdk10-bootstrap-10.0.2p13_1
+libawt.so openjdk10-bootstrap-10.0.2p13_1
+libawt_xawt.so openjdk10-bootstrap-10.0.2p13_1
+libjava.so openjdk10-bootstrap-10.0.2p13_1
+libjli.so openjdk10-bootstrap-10.0.2p13_1
+libjvm.so openjdk10-bootstrap-10.0.2p13_1
+libjawt.so mandrel-21.1.0.0_1
+libawt.so mandrel-21.1.0.0_1
+libawt_xawt.so mandrel-21.1.0.0_1
+libjava.so mandrel-21.1.0.0_1
+libjli.so mandrel-21.1.0.0_1
+libjvm.so mandrel-21.1.0.0_1
+libucl.so.5 libucl-0.8.1_6
+libhandle.so.1 xfsprogs-3.2.1_1
+libnfnetlink.so.0 libnfnetlink-1.0.1_1
+libnetfilter_log.so.1 libnetfilter_log-1.0.1_1
+libnetfilter_log_libipulog.so.1 libnetfilter_log-1.0.1_1
+libnetfilter_acct.so.1 libnetfilter_acct-1.0.2_1
+libnetfilter_conntrack.so.3 libnetfilter_conntrack-1.0.4_1
+libmsgpack.so.4 msgpack-1.1.0_1
+libmsgpackc.so.2 msgpack-1.1.0_1
+libewf.so.3 libewf-20171104_1
+libcupsfilters.so.1 libcups-filters-1.0.67_3
+libfontembed.so.1 libcups-filters-1.17.5_1
+libjemalloc.so.2 jemalloc-4.0.0_1
+liblucene++.so.0 Lucene++-3.0.6_1
+liblucene++-contrib.so.0 Lucene++-3.0.6_1
+libeolian.so.1 efl-1.25.1_2
+libecore_avahi.so.1 efl-1.25.1_2
+libephysics.so.1 efl-1.25.1_2
+libgunicode.so.5 fontforge-2.0.20190317_1
+libgutils.so.3 fontforge-2.0.20190317_1
+libgioftp.so.2 fontforge-2.0.20140101_3
+libfontforge.so.4 fontforge-20200314_1
+libgdraw.so.6 fontforge-2.0.20190317_1
+libfontforgeexe.so.3 fontforge-2.0.20190317_1
+libwraster.so.6 WindowMaker-0.95.8_1
+libWUtil.so.5 WindowMaker-0.95.6_3
+libWINGs.so.3 WindowMaker-0.95.6_3
+libWMaker.so.1 WindowMaker-0.95.6_3
+librevenge-0.0.so.0 librevenge-0.0.1_1
+librevenge-generators-0.0.so.0 librevenge-0.0.1_1
+librevenge-stream-0.0.so.0 librevenge-0.0.1_1
+libepubgen-0.1.so.1 libepubgen-0.1.0_1
+libqxp-0.0.so.0 libqxp-0.0.1_1
+libetonyek-0.1.so.1 libetonyek-0.1.1_1
+libodfgen-0.1.so.1 libodfgen-0.1.1_1
+libKF5SonnetUi.so.5 sonnet-5.26.0_1
+libKF5SonnetCore.so.5 sonnet-5.26.0_1
+libcdr-0.1.so.1 libcdr-0.1.0_1
+libmspub-0.1.so.1 libmspub-0.1.1_1
+libvisio-0.1.so.1 libvisio-0.1.0_1
+libwpd-0.10.so.10 libwpd-0.10.0_1
+libwps-0.4.so.4 libwps-0.4.3_1
+libwpg-0.3.so.3 libwpg-0.3.0_1
+libvigraimpex.so.11 vigra-1.11.0_1
+libhyphen.so.0 hyphen-2.8.8_1
+libmythes-1.2.so.0 mythes-1.2.4_1
+liblpsolve55.so lpsolve-5.5.2.0_1
+liblangtag.so.1 liblangtag-0.5.4_1
+liblangtag-gobject.so.0 liblangtag-0.5.4_1
+libexttextcat-2.0.so.0 libexttextcat-3.4.3_1
+libledger.so.3 libledger-3.1_1
+libksba.so.8 libksba-1.3.1_1
+libgltf-0.0.so.0 libgltf-0.0.2_1
+libgltf-0.1.so.1 libgltf-0.1.0_1
+libabw-0.1.so.1 libabw-0.1.0_1
+libcmis-0.5.so.5 libcmis-0.5.0_1
+libcmis-c-0.5.so.5 libcmis-0.5.0_1
+libQt5Bluetooth.so.5 qt5-connectivity-5.15.2_3
+libQt53DAnimation.so.5 qt5-3d-5.15.2_3
+libQt53DCore.so.5 qt5-3d-5.15.2_3
+libQt53DInput.so.5 qt5-3d-5.15.2_3
+libQt53DLogic.so.5 qt5-3d-5.15.2_3
+libQt53DRender.so.5 qt5-3d-5.15.2_3
+libQt53DQuick.so.5 qt5-3d-5.15.2_3
+libQt53DQuickInput.so.5 qt5-3d-5.15.2_3
+libQt53DQuickRender.so.5 qt5-3d-5.15.2_3
+libQt53DQuickScene2D.so.5 qt5-3d-5.15.2_3
+libQt53DExtras.so.5 qt5-3d-5.15.2_3
+libQt53DQuickExtras.so.5 qt5-3d-5.15.2_3
+libQt53DQuickAnimation.so.5 qt5-3d-5.15.2_3
+libQt5Charts.so.5 qt5-charts-5.15.2_3
+libQt5DataVisualization.so.5 qt5-datavis3d-5.15.2_3
+libQt5Gamepad.so.5 qt5-gamepad-5.15.2_3
+libQt5Nfc.so.5 qt5-connectivity-5.15.2_3
+libQt5WebView.so.5 qt5-webview-5.15.0_1
+libQt5Qml.so.5 qt5-declarative-5.15.2_3
+libQt5QmlDevTools.so.5 qt5-declarative-5.15.2_3
+libQt5Quick.so.5 qt5-declarative-5.15.2_3
+libQt5QuickTest.so.5 qt5-declarative-5.15.2_3
+libQt5QuickWidgets.so.5 qt5-declarative-5.15.2_3
+libQt5QuickParticles.so.5 qt5-declarative-5.15.2_3
+libQt5QuickShapes.so.5 qt5-declarative-5.15.2_3
+libQt5QmlModels.so.5 qt5-declarative-5.15.2_3
+libQt5QmlWorkerScript.so.5 qt5-declarative-5.15.2_3
+libQt5QuickControls2.so.5 qt5-quickcontrols2-5.15.2_3
+libQt5QuickTemplates2.so.5 qt5-quickcontrols2-5.15.2_3
+libQt5Positioning.so.5 qt5-location-5.15.2_3
+libQt5Location.so.5 qt5-location-5.15.2_3
+libQt5PositioningQuick.so.5 qt5-location-5.15.2_3
+libQt5VirtualKeyboard.so.5 qt5-virtualkeyboard-5.15.2_3
+libQt5Multimedia.so.5 qt5-multimedia-5.15.2_3
+libQt5MultimediaGstTools.so.5 qt5-multimedia-5.15.2_3
+libQt5MultimediaQuick.so.5 qt5-multimedia-5.15.2_3
+libQt5MultimediaQuick_p.so.5 qt5-multimedia-5.15.2_3
+libQt5MultimediaWidgets.so.5 qt5-multimedia-5.15.2_3
+libQt5NetworkAuth.so.5 qt5-networkauth-5.15.2_3
+libQt5Purchasing.so.5 qt5-purchasing-5.15.2_3
+libQt5RemoteObjects.so.5 qt5-remoteobjects-5.15.2_3
+libqgsttools_p.so.1 qt5-multimedia-5.15.2_3
+libQt5LabsTemplates.so.5 qt5-quickcontrols2-5.15.2_3
+libQt5Scxml.so.5 qt5-scxml-5.15.2_3
+libQt5Script.so.5 qt5-script-5.15.2_3
+libQt5ScriptTools.so.5 qt5-script-5.15.2_3
+libQt5Sensors.so.5 qt5-sensors-5.15.2_3
+libQt5SerialBus.so.5 qt5-serialbus-5.15.2_3
+libQt5SerialPort.so.5 qt5-serialport-5.15.2_3
+libQt5Svg.so.5 qt5-svg-5.15.2_3
+libQt5CLucene.so.5 qt5-tools-5.15.2_3
+libQt5Help.so.5 qt5-tools-5.15.2_3
+libQt5Designer.so.5 qt5-tools-5.15.2_3
+libQt5DesignerComponents.so.5 qt5-tools-5.15.2_3
+libQt5WaylandClient.so.5 qt5-wayland-5.15.2_3
+libQt5WaylandCompositor.so.5 qt5-wayland-5.15.2_3
+libQt5WebChannel.so.5 qt5-webchannel-5.15.2_3
+libQt5WebEngineCore.so.5 qt5-webengine-5.15.0_1
+libQt5WebEngine.so.5 qt5-webengine-5.15.0_1
+libQt5WebEngineWidgets.so.5 qt5-webengine-5.15.0_1
+libQt5WebSockets.so.5 qt5-websockets-5.15.2_3
+libQt5X11Extras.so.5 qt5-x11extras-5.15.2_3
+libQt5XmlPatterns.so.5 qt5-xmlpatterns-5.15.2_3
+libQt5Core.so.5 qt5-core-5.15.2_3
+libQt5EglFSDeviceIntegration.so.5 qt5-gui-5.15.2_3
+libQt5Network.so.5 qt5-network-5.15.2_3
+libQt5Sql.so.5 qt5-sql-5.15.2_3
+libQt5Xml.so.5 qt5-xml-5.15.2_3
+libQt5Gui.so.5 qt5-gui-5.15.2_3
+libQt5Widgets.so.5 qt5-widgets-5.15.2_3
+libQt5Test.so.5 qt5-test-5.15.2_3
+libQt5DBus.so.5 qt5-dbus-5.15.2_3
+libQt5Concurrent.so.5 qt5-concurrent-5.15.2_3
+libQt5OpenGL.so.5 qt5-opengl-5.15.2_3
+libQt5PrintSupport.so.5 qt5-printsupport-5.15.2_3
+libQt5XcbQpa.so.5 qt5-gui-5.15.2_3
+libQt5EglDeviceIntegration.so.5 qt5-gui-5.15.2_3
+libQt5EglFsKmsSupport.so.5 qt5-gui-5.15.2_3
+libQt5TextToSpeech.so.5 qt5-speech-5.15.2_3
+libQt5Bodymovin.so.5 qt5-lottie-5.15.2_3
+libQt5WebKit.so.5 qt5-webkit-5.6.0_1
+libQt5WebKitWidgets.so.5 qt5-webkit-5.6.0_1
+libx265.so.199 x265-3.5_1
+libQt5Xdg.so.3 libqtxdg-3.1.0_1
+libQt5XdgIconLoader.so.3 libqtxdg-3.1.0_1
+libqwt.so.6 qwt-6.1.3_1
+liblxqt-qt5.so.0 liblxqt-0.8.0_1
+liblxqt-globalkeys-qt5.so.0 lxqt-globalkeys-0.8.0_1
+liblxqt-globalkeys-ui-qt5.so.0 lxqt-globalkeys-0.8.0_1
+libsysstat-qt5.so.0 libsysstat-0.3.2_1
+libpolkit-qt5-agent-1.so.1 polkit-qt5-0.112.0_1
+libpolkit-qt5-gui-1.so.1 polkit-qt5-0.112.0_1
+libpolkit-qt5-core-1.so.1 polkit-qt5-0.112.0_1
+libfm-qt.so.10 libfm-qt-1.0.0_1
+libqtermwidget5.so.1 qtermwidget-1.0.0_1
+libQt6Core.so.6 qt6-core-6.0.0_1
+libQt6OpenGL.so.6 qt6-gui-6.0.0_1
+libQt6DBus.so.6 qt6-dbus-6.0.0_1
+libQt6PrintSupport.so.6 qt6-printsupport-6.0.0_1
+libQt6Concurrent.so.6 qt6-concurrent-6.0.0_1
+libQt6Widgets.so.6 qt6-widgets-6.0.0_1
+libQt6Network.so.6 qt6-network-6.0.0_1
+libQt6Sql.so.6 qt6-sql-6.0.0_1
+libQt6Xml.so.6 qt6-xml-6.0.0_1
+libQt6Gui.so.6 qt6-gui-6.0.0_1
+libQt6XcbQpa.so.6 qt6-gui-6.0.0_1
+libQt6EglFSDeviceIntegration.so.6 qt6-gui-6.0.0_1
+libQt6EglFsKmsSupport.so.6 qt6-gui-6.0.0_1
+libQt6EglFsKmsGbmSupport.so.6 qt6-gui-6.0.0_1
+libQt6OpenGLWidgets.so.6 qt6-opengl-widgets-6.0.0_1
+libQt6Test.so.6 qt6-test-6.0.0_1
+libQt6WaylandCompositor.so.6 qt6-wayland-6.0.0_1
+libQt6WaylandClient.so.6 qt6-wayland-6.0.0_1
+libQt6Core5Compat.so.6 qt6-qt5compat-6.0.0_1
+libQt6Svg.so.6 qt6-svg-6.0.0_1
+libQt6SvgWidgets.so.6 qt6-svg-6.0.0_1
+libQt6Qml.so.6 qt6-declarative-6.0.0_1
+libQt6LabsAnimation.so.6 qt6-declarative-6.1.0_1
+libQt6LabsFolderListModel.so.6 qt6-declarative-6.1.0_1
+libQt6LabsQmlModels.so.6 qt6-declarative-6.1.0_1
+libQt6LabsSettings.so.6 qt6-declarative-6.1.0_1
+libQt6LabsSharedImage.so.6 qt6-declarative-6.1.0_1
+libQt6LabsWavefrontMesh.so.6 qt6-declarative-6.1.0_1
+libQt6QmlLocalStorage.so.6 qt6-declarative-6.1.0_1
+libQt6QmlWorkerScript.so.6 qt6-declarative-6.0.0_1
+libQt6QuickTest.so.6 qt6-declarative-devel-6.2.0beta4_1
+libQt6QuickShapes.so.6 qt6-declarative-6.0.0_1
+libQt6QuickWidgets.so.6 qt6-declarative-6.0.0_1
+libQt6Quick.so.6 qt6-declarative-6.0.0_1
+libQt6QmlModels.so.6 qt6-declarative-6.0.0_1
+libQt6QuickLayouts.so.6 qt6-declarative-6.1.0_1
+libQt6QuickParticles.so.6 qt6-declarative-6.0.0_1
+libQt6ShaderTools.so.6 qt6-shadertools-6.0.0_1
+libQt6Quick3D.so.6 qt6-quick3d-6.0.0_1
+libQt6Quick3DRuntimeRender.so.6 qt6-quick3d-6.0.0_1
+libQt6Quick3DUtils.so.6 qt6-quick3d-6.0.0_1
+libQt6Quick3DAssetImport.so.6 qt6-quick3d-6.0.0_1
+libQt6Quick3DIblBaker.so.6 qt6-quick3d-6.0.3_1
+libQt6Quick3DParticles.so.6 qt6-quick3d-6.1.0_1
+libQt6QuickControls2Impl.so.6 qt6-declarative-6.0.0_1
+libQt6QuickControls2.so.6 qt6-declarative-6.0.0_1
+libQt6QuickTemplates2.so.6 qt6-declarative-6.0.0_1
+libQt6NetworkAuth.so.6 qt6-networkauth-6.1.0rc2_1
+libQt6ScxmlQml.so.6 qt6-scxml-6.1.0rc2_1
+libQt6Scxml.so.6 qt6-scxml-6.1.0rc2_1
+libQt6StateMachine.so.6 qt6-scxml-6.1.0rc2_1
+libQt6StateMachineQml.so.6 qt6-scxml-6.1.0rc2_1
+libQt6Bodymovin.so.6 qt6-lottie-6.1.0rc2_1
+libQt63DQuickAnimation.so.6 qt6-3d-6.1.0rc2_1
+libQt63DQuickRender.so.6 qt6-3d-6.1.0rc2_1
+libQt63DExtras.so.6 qt6-3d-6.1.0rc2_1
+libQt63DQuickInput.so.6 qt6-3d-6.1.0rc2_1
+libQt63DCore.so.6 qt6-3d-6.1.0rc2_1
+libQt63DQuickScene2D.so.6 qt6-3d-6.1.0rc2_1
+libQt63DLogic.so.6 qt6-3d-6.1.0rc2_1
+libQt63DRender.so.6 qt6-3d-6.1.0rc2_1
+libQt63DAnimation.so.6 qt6-3d-6.1.0rc2_1
+libQt63DQuickExtras.so.6 qt6-3d-6.1.0rc2_1
+libQt63DInput.so.6 qt6-3d-6.1.0rc2_1
+libQt63DQuick.so.6 qt6-3d-6.1.0rc2_1
+libQt6Charts.so.6 qt6-charts-6.1.0rc2_1
+libQt6Designer.so.6 qt6-tools-6.1.0_1
+libQt6DesignerComponents.so.6 qt6-tools-6.1.0_1
+libQt6Help.so.6 qt6-tools-6.1.0_1
+libQt6UiTools.so.6 qt6-tools-6.1.0_1
+libQt6HunspellInputMethod.so.6 qt6-virtualkeyboard-6.1.0_1
+libQt6VirtualKeyboard.so.6 qt6-virtualkeyboard-6.1.0_1
+libQt6SerialPort.so.6 qt6-serialport-6.2.0alpha_1
+libQt6WebSockets.so.6 qt6-websockets-6.2.0alpha_1
+libQt6WebChannel.so.6 qt6-webchannel-6.2.0alpha_1
+libQt6Positioning.so.6 qt6-location-6.2.0alpha_1
+libnpth.so.0 npth-1.1_1
+libnpupnp.so.4 libnpupnp-4.0.2_1
+libglfw.so.3 glfw-3.0.4_1
+libusbmuxd-2.0.so.6 libusbmuxd-2.0.2_1
+libimobiledevice-1.0.so.6 libimobiledevice-1.3.0_2
+libstfl.so.0 stfl-0.23_1
+libCDApplet.so cairo-dock-plugins-3.4.0_1
+libldns.so.3 libldns-1.7.1_4
+libopenjpeg.so.5 libopenjpeg-1.5.2_1
+liboping.so.0 liboping-1.8.0_1
+libloudmouth-1.so.0 loudmouth-1.5.3_12
+libtorrent-rasterbar.so.10 libtorrent-rasterbar-1.2.12_2
+libcapstone.so.4 capstone-4.0_1
+libhavege.so.2 libhaveged-1.9.11_1
+libnih.so.1 libnih-1.0.3_1
+libnih-dbus.so.1 libnih-1.0.3_1
+libopencv_ml.so.3.4 libopencv-3.4.1_1
+libopencv_objdetect.so.3.4 libopencv-3.4.1_1
+libopencv_dnn.so.3.4 libopencv-3.4.1_1
+libopencv_shape.so.3.4 libopencv-3.4.1_1
+libopencv_stitching.so.3.4 libopencv-3.4.1_1
+libopencv_photo.so.3.4 libopencv-3.4.1_1
+libopencv_video.so.3.4 libopencv-3.4.1_1
+libopencv_calib3d.so.3.4 libopencv-3.4.1_1
+libopencv_features2d.so.3.4 libopencv-3.4.1_1
+libopencv_flann.so.3.4 libopencv-3.4.1_1
+libopencv_highgui.so.3.4 libopencv-3.4.1_1
+libopencv_videoio.so.3.4 libopencv-3.4.1_1
+libopencv_imgcodecs.so.3.4 libopencv-3.4.1_1
+libopencv_imgproc.so.3.4 libopencv-3.4.1_1
+libopencv_core.so.3.4 libopencv-3.4.1_1
+libopencv_superres.so.3.4 libopencv-3.4.1_1
+libopencv_videostab.so.3.4 libopencv-3.4.1_1
+libopencv_quality.so.4.5 libopencv4-4.5.3_1
+libopencv_reg.so.4.5 libopencv4-4.5.3_1
+libopencv_surface_matching.so.4.5 libopencv4-4.5.3_1
+libopencv_xphoto.so.4.5 libopencv4-4.5.3_1
+libopencv_freetype.so.4.5 libopencv4-4.5.3_1
+libopencv_fuzzy.so.4.5 libopencv4-4.5.3_1
+libopencv_hfs.so.4.5 libopencv4-4.5.3_1
+libopencv_img_hash.so.4.5 libopencv4-4.5.3_1
+libopencv_line_descriptor.so.4.5 libopencv4-4.5.3_1
+libopencv_saliency.so.4.5 libopencv4-4.5.3_1
+libopencv_structured_light.so.4.5 libopencv4-4.5.3_1
+libopencv_aruco.so.4.5 libopencv4-4.5.3_1
+libopencv_bgsegm.so.4.5 libopencv4-4.5.3_1
+libopencv_bioinspired.so.4.5 libopencv4-4.5.3_1
+libopencv_ccalib.so.4.5 libopencv4-4.5.3_1
+libopencv_face.so.4.5 libopencv4-4.5.3_1
+libopencv_tracking.so.4.5 libopencv4-4.5.3_1
+libopencv_xfeatures2d.so.4.5 libopencv4-4.5.3_1
+libopencv_optflow.so.4.5 libopencv4-4.5.3_1
+libopencv_ximgproc.so.4.5 libopencv4-4.5.3_1
+libopencv_plot.so.4.5 libopencv4-4.5.3_1
+libopencv_text.so.4.5 libopencv4-4.5.3_1
+libopencv_ml.so.4.5 libopencv4-4.5.3_1
+libopencv_objdetect.so.4.5 libopencv4-4.5.3_1
+libopencv_dnn.so.4.5 libopencv4-4.5.3_1
+libopencv_shape.so.4.5 libopencv4-4.5.3_1
+libopencv_stitching.so.4.5 libopencv4-4.5.3_1
+libopencv_photo.so.4.5 libopencv4-4.5.3_1
+libopencv_video.so.4.5 libopencv4-4.5.3_1
+libopencv_calib3d.so.4.5 libopencv4-4.5.3_1
+libopencv_features2d.so.4.5 libopencv4-4.5.3_1
+libopencv_flann.so.4.5 libopencv4-4.5.3_1
+libopencv_highgui.so.4.5 libopencv4-4.5.3_1
+libopencv_videoio.so.4.5 libopencv4-4.5.3_1
+libopencv_imgcodecs.so.4.5 libopencv4-4.5.3_1
+libopencv_imgproc.so.4.5 libopencv4-4.5.3_1
+libopencv_core.so.4.5 libopencv4-4.5.3_1
+libopencv_superres.so.4.5 libopencv4-4.5.3_1
+libopencv_videostab.so.4.5 libopencv4-4.5.3_1
+libopencv_gapi.so.4.5 libopencv4-4.5.3_1
+libopencv_xobjdetect.so.4.5 libopencv4-4.5.3_1
+libopencv_datasets.so.4.5 libopencv4-4.5.3_1
+libopencv_dnn_objdetect.so.4.5 libopencv4-4.5.3_1
+libopencv_dnn_superres.so.4.5 libopencv4-4.5.3_1
+libopencv_dpm.so.4.5 libopencv4-4.5.3_1
+libopencv_phase_unwrapping.so.4.5 libopencv4-4.5.3_1
+libopencv_stereo.so.4.5 libopencv4-4.5.3_1
+libopencv_rapid.so.4.5 libopencv4-4.5.3_1
+libopencv_intensity_transform.so.4.5 libopencv4-4.5.3_1
+libopencv_alphamat.so.4.5 libopencv4-4.5.3_1
+libopencv_barcode.so.4.5 libopencv4-4.5.3_1
+libopencv_mcc.so.4.5 libopencv4-4.5.3_1
+libuniconf.so.4.6 wvstreams-4.6.1_20
+libwvbase.so.4.6 wvstreams-4.6.1_20
+libwvutils.so.4.6 wvstreams-4.6.1_20
+libwvstreams.so.4.6 wvstreams-4.6.1_20
+libespeak-ng.so.1 libespeak-ng-1.50_1
+libKF5Plotting.so.5 kplotting-5.26.0_1
+libpgf.so.6 libpgf-6.14.12_1
+libqhull_r.so.8.0 libqhull-2020.2_1
+libqhull.so.8.0 libqhull-2020.2_1
+libKF5NetworkManagerQt.so.6 networkmanager-qt5-5.26.0_1
+libfcitx-core.so.0 libfcitx-4.2.8_1
+libfcitx-gclient.so.1 libfcitx-4.2.9.5_1
+libfcitx-utils.so.0 libfcitx-4.2.8_1
+libfcitx-config.so.4 libfcitx-4.2.8_1
+libFcitxQt5DBusAddons.so.1 libfcitx-qt5-1.2.1_1
+libFcitxQt5WidgetsAddons.so.1 libfcitx-qt5-1.2.1_1
+libfcitx-qt5.so.0 libfcitx-qt5-0.1.3_1
+libFcitx5Utils.so.2 libfcitx5-5.0.5_1
+libFcitx5Core.so.7 libfcitx5-5.0.5_1
+libFcitx5Config.so.6 libfcitx5-5.0.5_1
+libFcitx5GClient.so.2 fcitx5-gtk-5.0.4_1
+libFcitx5Qt5DBusAddons.so.1 fcitx5-qt5-5.0.3_1
+libFcitx5Qt5WidgetsAddons.so.2 fcitx5-qt5-5.0.3_1
+libdruntime-ldc-debug-shared.so.98 ldc-runtime-1.28.0_1
+libdruntime-ldc-shared.so.98 ldc-runtime-1.28.0_1
+libphobos2-ldc-shared.so.98 ldc-runtime-1.28.0_1
+libphobos2-ldc-debug-shared.so.98 ldc-runtime-1.28.0_1
+libldc-jit.so.98 ldc-runtime-1.28.0_1
+libmarblewidget-qt5.so.28 marble5-17.12.2_1
+libastro.so.2 marble5-17.12.2_1
+libparrot.so.6.9.0 parrot-6.9.0_1
+libasr.so.0 libasr-1.0.0_1
+libssr-glinject.so ssr-0.3.1_1
+libgdict-1.0.so.10 gnome-dictionary-3.18.1_1
+libasignify.so.1 asignify-1.0_1
+libvte2_90.so.9 vte290-0.36.3_1
+libd0_blind_id.so.0 xonotic-0.8.0_1
+libuecc.so.0 libuecc-5_1
+libKF5WindowSystem.so.5 kwindowsystem-5.6.0_1
+libKF5GuiAddons.so.5 kguiaddons-5.6.0_1
+libLayerShellQtInterface.so.5 layer-shell-qt-5.21.90_1
+liblxqt.so.1 liblxqt-1.0.0_1
+liblxqt-globalkeys.so.1 lxqt-globalkeys-1.0.0_1
+liblxqt-globalkeys-ui.so.1 lxqt-globalkeys-1.0.0_1
+libenet.so.7 libenet-1.3.12_1
+librrd.so.8 rrdtool-1.6.0_1
+librrd_th.so.4 rrdtool-1.4.9_1
+libmosquitto.so.1 libmosquitto-1.6.3_5
+libmosquittopp.so.1 libmosquittopp-1.6.3_5
+libmpv.so.1 mpv-0.8.0_2
+libmbedtls.so.12 mbedtls-2.13.1_1
+libmbedcrypto.so.3 mbedtls-2.9.0_1
+libmbedx509.so.0 mbedtls-2.9.0_1
+libdmtx.so.0 libdmtx-0.7.4_1
+libdbus-c++-1.so.0 libdbus-c++-0.9.0_1
+libdbus-c++-glib-1.so.0 libdbus-c++-0.9.0_1
+libpagemaker-0.0.so.0 libpagemaker-0.0.2_1
+libKF5CddbWidgets.so.5 libkcddb-17.08.2_1
+libKF5Cddb.so.5 libkcddb-17.08.2_1
+libk3bdevice.so.7 k3b-17.08.2_1
+libk3blib.so.7 k3b-17.08.2_1
+libsndio.so.7 libsndio-1.7.0_1
+libopenconnect.so.5 openconnect-7.05_1
+libusbredirparser.so.1 usbredir-0.7_1
+libusbredirhost.so.1 usbredir-0.7_1
+libprotobuf-c.so.1 protobuf-c-1.1.0_1
+libutf8proc.so.2 libutf8proc-2.2.0_1
+libnsutils.so.0 libnsutils-0.0.1_1
+libtoxcore.so.2 toxcore-0.2.0_1
+libgom-1.0.so.0 gom-0.3.0_1
+libetpan.so.20 libetpan-1.9.3_4
+libxmp.so.4 libxmp-4.3.7_1
+libKF5ThreadWeaver.so.5 threadweaver-5.26.0_1
+libOpenImageIO_Util.so.2.2 openimageio-2.2.13.1_1
+libOpenImageIO.so.2.2 openimageio-2.2.13.1_1
+libOpenColorIO.so.1 opencolorio-1.0.8_1
+libyaml-cpp.so.0.6 yaml-cpp-0.6.2_1
+libpaper.so.1 libpaper-1.1.24_1
+libhtsjava.so.2 httrack-3.49.2_7
+libhttrack.so.2 httrack-3.49.2_7
+libbg.so.2 bglibs-2.03_3
+libcvm-command.so.1 cvm-0.97_1
+libcvm-local.so.1 cvm-0.97_1
+libcvm-module.so.1 cvm-0.97_1
+libcvm-qmail.so.1 cvm-0.97_1
+libcvm-sasl.so.1 cvm-0.97_1
+libcvm-sql.so.1 cvm-0.97_1
+libcvm-udp.so.1 cvm-0.97_1
+libcvm-v1client.so.1 cvm-0.97_1
+libcvm-v2client.so.1 cvm-0.97_1
+libudns.so.0 udns-0.4_1
+libcriu.so.2 criu-3.13_2
+libcompel.so.1 criu-3.13_2
+libwebsockets.so.15 libwebsockets-3.2.2_5
+libnfc.so.6 libnfc-1.8.0_1
+libfuzzy.so.2 libfuzzy-2.12_1
+libSDL_gfx.so.15 SDL_gfx-2.0.25_2
+libsfml-network.so.2.5 SFML-2.5.0_1
+libsfml-system.so.2.5 SFML-2.5.0_1
+libsfml-window.so.2.5 SFML-2.5.0_1
+libsfml-audio.so.2.5 SFML-2.5.0_1
+libsfml-graphics.so.2.5 SFML-2.5.0_1
+libclamav.so.9 clamav-0.103.1_2
+libclamunrar.so.9 clamav-0.103.1_2
+libclamunrar_iface.so.9 clamav-0.103.1_2
+libfreshclam.so.2 clamav-0.103.1_2
+libqca-qt5.so.2 qca-qt5-2.1.3_1
+libqt5keychain.so.1 qtkeychain-qt5-0.7.0_1
+libphonon4qt5.so.4 phonon-qt5-4.8.3_1
+libphonon4qt5experimental.so.4 phonon-qt5-4.8.3_1
+libtelepathy-qt5.so.0 telepathy-qt5-0.9.5_1
+libtelepathy-qt5-service.so.0 telepathy-qt5-0.9.7_1
+libtelepathy-qt5-farstream.so.0 telepathy-qt5-farstream-0.9.5_1
+libKF5Attica.so.5 attica-5.6.0_1
+libechonest5.so.2.3 libechonest-qt5-2.3.0_1
+liblastfm_fingerprint5.so.1 liblastfm-qt5-1.0.9_1
+liblastfm5.so.1 liblastfm-qt5-1.0.9_1
+libquazip5.so.1 quazip-0.7.3_2
+libjreen-qt5.so.1 jreen-1.3.0_1
+libzen.so.0 libzen-0.4.31_1
+libmediainfo.so.0 libmediainfo-0.7.75_1
+libnghttp2.so.14 nghttp2-1.43.0_2
+librom1394.so.0 libavc1394-0.5.4_1
+libavc1394.so.0 libavc1394-0.5.4_1
+libiec61883.so.0 libiec61883-1.2.0_1
+libffado.so.2 libffado-2.2.1_1
+libkomparediff2.so.5 libkomparediff2-17.08.2_1
+libkompareinterface.so.5 kompare-17.08.2_1
+libkomparedialogpages.so.5 kompare-17.08.2_1
+libfdt.so.1 dtc-1.4.1_1
+libKasten4Controllers.so.0 okteta-0.26.0_1
+libKasten4Core.so.0 okteta-0.26.0_1
+libKasten4Gui.so.0 okteta-0.26.0_1
+libKasten4Okteta2Controllers.so.0 okteta-0.26.0_1
+libKasten4Okteta2Core.so.0 okteta-0.26.0_1
+libKasten4Okteta2Gui.so.0 okteta-0.26.0_1
+libOkteta3Core.so.0 okteta-0.26.0_1
+libOkteta3Gui.so.0 okteta-0.26.0_1
+libhttp_parser.so.2.9 http-parser-2.9.0_1
+libmaa.so.4 libmaa-1.4.2_1
+libcodeblocks.so.0 codeblocks-13.12_1
+liblept.so.5 leptonica-1.73_1
+libtesseract.so.4 tesseract-ocr-4.0.0_1
+libffmpegthumbnailer.so.4 ffmpegthumbnailer-2.0.10_1
+libopenraw.so.7 libopenraw-0.1.0_1
+libopenrawgnome.so.7 libopenraw-0.1.0_1
+libgeda.so.47 geda-1.10.1_1
+libgedacairo.so.1 geda-1.10.2_1
+libxornstorage.so.0 geda-1.10.2_1
+libclutter-gst-3.0.so.0 clutter-gst3-3.0.4_1
+libgsound.so.0 gsound-1.0.1_1
+libprocps.so.8 procps-ng-3.3.16_1
+libgegl-0.4.so.0 gegl-0.4.16_1
+libgegl-npd-0.4.so gegl-0.4.16_1
+libgegl-sc-0.4.so gegl-0.4.16_1
+libgnunettransportmonitor.so.0 gnunet-0.12.2_1
+libgnunettransporttesting.so.0 gnunet-0.12.2_1
+libgnunettransporttesting2.so.0 gnunet-0.12.2_1
+libgnunetcore.so.0 gnunet-0.12.2_1
+libgnunettestbedlogger.so.0 gnunet-0.12.2_1
+libgnunettestbed.so.0 gnunet-0.12.2_1
+libgnunetatstesting.so.0 gnunet-0.12.2_1
+libgnunetnse.so.0 gnunet-0.12.2_1
+libgnunetdht.so.3 gnunet-0.12.2_1
+libgnunetfriends.so.0 gnunet-0.12.2_1
+libgnunetregexblock.so.1 gnunet-0.12.2_1
+libgnunetregex.so.3 gnunet-0.12.2_1
+libgnunetdns.so.0 gnunet-0.12.2_1
+libgnunetidentity.so.1 gnunet-0.12.2_1
+libgnunetnamecache.so.0 gnunet-0.12.2_1
+libgnunetnamestore.so.0 gnunet-0.12.2_1
+libgnunetcadet.so.7 gnunet-0.12.2_1
+libgnunetset.so.0 gnunet-0.12.2_1
+libgnunetconsensus.so.0 gnunet-0.12.2_1
+libgnunetscalarproduct.so.0 gnunet-0.12.2_1
+libgnunetrevocation.so.0 gnunet-0.12.2_1
+libgnunetvpn.so.0 gnunet-0.12.2_1
+libgnunetgns.so.0 gnunet-0.12.2_1
+libgnunetfs.so.2 gnunet-0.12.2_1
+libgnunetsecretsharing.so.0 gnunet-0.12.2_1
+libnss_gns.so.2 gnunet-0.12.2_1
+libnss_gns4.so.2 gnunet-0.12.2_1
+libnss_gns6.so.2 gnunet-0.12.2_1
+libgnunetutil.so.13 gnunet-0.12.2_1
+libgnunetnt.so.0 gnunet-0.12.2_1
+libgnunetgnsrecord.so.0 gnunet-0.12.2_1
+libgnunethello.so.0 gnunet-0.12.2_1
+libgnunetblock.so.0 gnunet-0.12.2_1
+libgnunetblockgroup.so.0 gnunet-0.12.2_1
+libgnunetstatistics.so.2 gnunet-0.12.2_1
+libgnunetarm.so.2 gnunet-0.12.2_1
+libgnunettesting.so.1 gnunet-0.12.2_1
+libgnunetpeerinfo.so.0 gnunet-0.12.2_1
+libgnunetsq.so.0 gnunet-0.12.2_1
+libgnunetdatacache.so.0 gnunet-0.12.2_1
+libgnunetdatastore.so.1 gnunet-0.12.2_1
+libgnunetpeerstore.so.0 gnunet-0.12.2_1
+libgnunetats.so.4 gnunet-0.12.2_1
+libgnunetatsapplication.so.0 gnunet-0.12.2_1
+libgnunetatstransport.so.0 gnunet-0.12.2_1
+libgnunetnatnew.so.2 gnunet-0.12.2_1
+libgnunetnatauto.so.0 gnunet-0.12.2_1
+libgnunetfragmentation.so.2 gnunet-0.12.2_1
+libgnunettransport.so.2 gnunet-0.12.2_1
+libgnunettransportapplication.so.0 gnunet-0.12.2_1
+libgnunettransportcore.so.0 gnunet-0.12.2_1
+libgnunettransportcommunicator.so.0 gnunet-0.12.2_1
+libskarnet.so.2.11 skalibs-2.11.0.0_1
+libKF5BalooWidgets.so.5 baloo-widgets5-17.04.3_1
+libtidy.so.58 libtidy5-5.8.0_1
+libSDL2_gfx-1.0.so.0 SDL2_gfx-1.0.1_1
+libQupZilla.so.2 qupzilla-2.0.0_1
+libinjeqt.so.1 injeqt-1.1.0_1
+libgadu.so.3 libgadu-1.12.1_1
+libhiredis.so.1.0.0 hiredis-1.0.0_1
+libIL.so.1 devil-1.7.8_1
+libILU.so.1 devil-1.7.8_1
+libILUT.so.1 devil-1.7.8_1
+liboath.so.0 oath-toolkit-2.6.0_2
+libanthy.so.1 libanthy-0.4_1
+libanthydic.so.1 libanthy-0.4_1
+libanthyinput.so.0 libanthy-0.4_1
+libanthy-unicode.so.0 libanthy-unicode-1.0.0.20201109_1
+libanthydic-unicode.so.0 libanthy-unicode-1.0.0.20201109_1
+libanthyinput-unicode.so.0 libanthy-unicode-1.0.0.20201109_1
+libanthygobject-1.0.so.5 ibus-anthy-1.5.6_1
+libtbbmalloc_proxy_debug.so.2 tbb-4.3_1
+libtbbmalloc_proxy.so.2 tbb-4.3_1
+libtbbmalloc.so.2 tbb-4.3_1
+libembree.so.3 embree-3.12.2_1
+libtbb_debug.so.2 tbb-4.3_1
+libtbb.so.2 tbb-4.3_1
+libtbbmalloc_debug.so.2 tbb-4.3_1
+libembree.so.2 embree-2.5.1_1
+libgtkimageview.so.0 gtkimageview-1.6.4_1
+libgoocanvas-2.0.so.9 goocanvas-2.0.4_1
+libp8-platform.so.2 p8-platform-2.1.0.1_1
+libOIS.so.1.5.0 ois-1.5_1
+libSILLY.so.1 silly-0.1.0_1
+libkeybinder-3.0.so.0 libkeybinder3-0.3.0_1
+libbrlapi.so.0.8 brltty-6.1_1
+liblouis.so.20 liblouis-3.11.0_1
+libCEGUIBase-0.7.9.so cegui07-0.7.9_1
+libCEGUIFalagardWRBase-0.7.9.so cegui07-0.7.9_1
+libCEGUIDevILImageCodec-0.7.9.so cegui07-0.7.9_1
+libCEGUIExpatParser-0.7.9.so cegui07-0.7.9_1
+libCEGUIOpenGLRenderer-0.7.9.so cegui07-0.7.9_1
+libCEGUIIrrlichtRenderer-0.7.9.so cegui07-0.7.9_1
+libCEGUILibxmlParser-0.7.9.so cegui07-0.7.9_1
+libCEGUILuaScriptModule-0.7.9.so cegui07-0.7.9_1
+libCEGUISILLYImageCodec-0.7.9.so cegui07-0.7.9_1
+libCEGUISTBImageCodec-0.7.9.so cegui07-0.7.9_1
+libCEGUIFreeImageImageCodec-0.7.9.so cegui07-0.7.9_3
+libCEGUITGAImageCodec-0.7.9.so cegui07-0.7.9_1
+libCEGUITinyXMLParser-0.7.9.so cegui07-0.7.9_1
+libCEGUItoluapp-0.7.9.so cegui07-0.7.9_1
+libCEGUIBase-0.so.2 cegui-0.8.7_1
+libCEGUIOpenGLRenderer-0.so.2 cegui-0.8.7_1
+libCEGUIOgreRenderer-0.so.2 cegui-0.8.7_1
+libCEGUIIrrlichtRenderer-0.so.2 cegui-0.8.7_1
+libCEGUICommonDialogs-0.so.2 cegui-0.8.7_1
+libCEGUICoreWindowRendererSet.so cegui-0.8.7_1
+libCEGUIDevILImageCodec.so cegui-0.8.7_1
+libCEGUIExpatParser.so cegui-0.8.7_1
+libCEGUILibXMLParser.so cegui-0.8.7_1
+libCEGUISILLYImageCodec.so cegui-0.8.7_1
+libct.so.4 freetds-0.95.19_1
+libsybdb.so.5 freetds-0.95.19_1
+libqqwing.so.2 qqwing-1.3.4_1
+libiniparser.so.1 iniparser-4.1_1
+libzita-resampler.so.1 zita-resampler-1.3.0_1
+libmlt.so.6 mlt-6.4.1_1
+libmlt++.so.3 mlt-6.4.1_1
+libmlt++-7.so.7 mlt7-7.0.1_1
+libmlt-7.so.7 mlt7-7.0.1_1
+libunibilium.so.4 unibilium-2.0.0_1
+libtermkey.so.1 libtermkey-0.17_1
+libicu4lua.so.0 icu4lua-0.2B_1
+libKF5I18n.so.5 ki18n-5.26.0_1
+libKF5I18nLocaleData.so.5 ki18n-5.88.0_1
+libglog.so.0 glog-0.3.4_1
+libzita-convolver.so.4 zita-convolver-4.0.3_1
+libzita-alsa-pcmi.so.0 zita-alsa-pcmi-0.2.0_1
+libpugixml.so.1 pugixml-1.6_1
+libnewt.so.0.52 newt-0.52.18_1
+libgeany.so.0 geany-1.25_1
+libctpl.so.2 ctpl-0.3.4_1
+libmuparser.so.2 muparser-2.2.5_1
+libgtkgl-2.0.so.1 gtkglarea-2.1.0_1
+libdwarf.so.1 libdwarf-20160613_1
+libmemcached.so.11 libmemcached-1.0.18_1
+libhashkit.so.2 libmemcached-1.0.18_1
+libmemcachedutil.so.2 libmemcached-1.0.18_1
+libc-client.so.1 c-client-2007f_4
+libonig.so.5 oniguruma-6.8.1_1
+liblo10k1.so.0 alsa-tools-1.0.29_1
+libgflags.so.2.2 gflags-2.1.2_1
+libgflags_nothreads.so.2.2 gflags-2.1.2_1
+libswmhack.so.0.0 spectrwm-2.7.2_1
+libchardet.so.1 libchardet-1.0.4_1
+libcollectdclient.so.1 libcollectdclient-5.12.0_3
+libpinktrace_1.0.so.100 pinktrace-1.0.0_1
+libsyd_1.0.so.0 sydbox-1.0.2_1
+libcsync.so.0 csync-0.50.0_1
+libcalligrasheetsodf.so.17 calligra-sheets-3.2.0_1
+libkokross.so.17 calligra-libs-3.2.1_3
+libkotext.so.17 calligra-libs-3.2.0_1
+libkoodf.so.17 calligra-libs-3.2.0_1
+libkarbonui.so.17 calligra-karbon-3.2.0_1
+libkomain.so.17 calligra-libs-3.2.0_1
+libkowidgets.so.17 calligra-libs-3.2.0_1
+libflake.so.17 calligra-libs-3.2.0_1
+libcalligrasheetscommon.so.17 calligra-sheets-3.2.0_1
+libkovectorimage.so.17 calligra-libs-3.2.0_1
+libwordsprivate.so.17 calligra-words-3.2.0_1
+libkotextlayout.so.17 calligra-libs-3.2.0_1
+libkowidgetutils.so.17 calligra-libs-3.2.0_1
+libkundo2.so.17 calligra-libs-3.2.0_1
+libpigmentcms.so.17 calligra-libs-3.2.0_1
+libbasicflakes.so.17 calligra-libs-3.2.0_1
+libkoplugin.so.17 calligra-libs-3.2.0_1
+libkoversion.so.17 calligra-libs-3.2.0_1
+libkopageapp.so.17 calligra-libs-3.2.0_1
+libkostore.so.17 calligra-libs-3.2.0_1
+libkomsooxml.so.17 calligra-filters-3.2.0_1
+libkoodf2.so.17 calligra-filters-3.2.0_1
+libkowv2.so.9 calligra-filters-2.9.7_1
+libRtfReader.so.17 calligra-filters-3.2.0_1
+libkoodfreader.so.17 calligra-filters-3.2.0_1
+libkoformula.so.17 calligra-plugins-3.2.0_1
+libkarboncommon.so.17 calligra-karbon-3.2.0_1
+libcalligrastageprivate.so.17 calligra-stage-3.2.0_1
+libkookularGenerator_odt.so.17 calligra-extras-3.2.0_1
+libkookularGenerator_odp.so.17 calligra-extras-3.2.0_1
+libgemini.so.17 calligra-gemini-3.2.0_1
+libarpack.so.2 arpack-ng-3.3.0_2
+libfts.so.0 musl-fts-1.2_2
+libobstack.so.1 musl-obstack-1.2.1_1
+libucontext.so.1 libucontext-1.0_1
+libucontext_posix.so.1 libucontext-1.0_1
+libgavl.so.1 gavl-1.40_1
+libmxml.so.1 mxml-2.9_1
+libKF5Pty.so.5 kpty-5.26.0_1
+libdovecot-sieve.so.0 dovecot-plugin-pigeonhole-0.4.9_2
+libi3ipc-glib-1.0.so.0 i3ipc-glib-0.6.0_1
+libcsound64.so.6.0 csound-6.05.0_1
+libcsnd6.so.6.0 csound-6.05.0_1
+libfko.so.3 libfko-2.6.9_1
+libvterm.so.0 libvterm-0.0.20151005_1
+libboinc_opencl.so.7 boinc-7.16.16_2
+libboinc_api.so.7 boinc-7.16.16_2
+libboinc_graphics2.so.7 boinc-7.16.16_2
+libsynfig.so.0 synfig-1.0.1_1
+libhidapi-hidraw.so.0 hidapi-0.8.0rc1_1
+libhidapi-libusb.so.0 hidapi-0.8.0rc1_1
+libu2f-host.so.0 libu2f-host-1.1.10_5
+libu2f-server.so.0 libu2f-server-1.1.0_9
+libsqlcipher.so.0 sqlcipher-4.3.0_3
+libgta.so.1 libgta-1.2.0_1
+libgdal.so.26 libgdal-3.0.4_9
+libosgViewer.so.131 osg-3.4.1_1
+libosgShadow.so.131 osg-3.4.1_1
+libosgParticle.so.131 osg-3.4.1_1
+libOpenThreads.so.20 osg-3.4.1_1
+libosgFX.so.131 osg-3.4.1_1
+libosgText.so.131 osg-3.4.1_1
+libosgUI.so.131 osg-3.4.1_1
+libosg.so.131 osg-3.4.1_1
+libosgAnimation.so.131 osg-3.4.1_1
+libosgDB.so.131 osg-3.4.0_1
+libosgManipulator.so.131 osg-3.4.1_1
+libosgSim.so.131 osg-3.4.1_1
+libosgTerrain.so.131 osg-3.4.1_1
+libosgWidget.so.131 osg-3.4.1_1
+libosgQt.so.131 osg-3.4.1_1
+libosgUtil.so.131 osg-3.4.1_1
+libosgVolume.so.131 osg-3.4.1_1
+libosgGA.so.131 osg-3.4.1_1
+libosgPresentation.so.131 osg-3.4.1_1
+libKF5Screen.so.7 libkscreen-5.7.5_1
+libdbusmenu-qt5.so.2 libdbusmenu-qt5-0.9.3.0_1
+libKF5Solid.so.5 libksolid-5.15.0_2
+libfreeimage.so.3 freeimage-3.17.0_1
+libfreeimageplus.so.3 freeimage-plus-3.17.0_1
+libtoluapp.so toluapp-1.0.93_1
+libmpd.so.1 libmpd-11.8.17_1
+libfa.so.1 augeas-1.4.0_1
+libaugeas.so.0 augeas-1.4.0_1
+libplot.so.2 plotutils-2.6_1
+libplplot.so.17 libplplot-5.15.0_1
+libplplottcltk.so.14 libplplot-5.15.0_1
+libplplottcltk_Main.so.1 libplplot-5.15.0_1
+libfloatfann.so.2 fann-2.2.0_1
+libfixedfann.so.2 fann-2.2.0_1
+libfann.so.2 fann-2.2.0_1
+libdoublefann.so.2 fann-2.2.0_1
+libxerces-c-3.2.so libxerces-c-3.2.0_1
+libunibreak.so.3 libunibreak-4.0_1
+libgconfmm-2.6.so.1 gconfmm-2.28.3_1
+libiperf.so.0 iperf3-3.1.1_1
+libKF5UnitConversion.so.5 kunitconversion-5.26.0_1
+libfdk-aac.so.2 fdk-aac-2.0.0_1
+libyubikey.so.0 libyubikey-1.13_1
+libykpers-1.so.1 libykpers-1.17.2_1
+libg7221codec.so.2 pjproject-2.8_5
+libilbccodec.so.2 pjproject-2.8_5
+libpj.so.2 pjproject-2.8_5
+libpjlib-util.so.2 pjproject-2.8_5
+libpjmedia-audiodev.so.2 pjproject-2.8_5
+libpjmedia-codec.so.2 pjproject-2.8_5
+libpjmedia-videodev.so.2 pjproject-2.8_5
+libpjmedia.so.2 pjproject-2.8_5
+libpjnath.so.2 pjproject-2.8_5
+libpjsip-simple.so.2 pjproject-2.8_5
+libpjsip-ua.so.2 pjproject-2.8_5
+libpjsip.so.2 pjproject-2.8_5
+libpjsua.so.2 pjproject-2.8_5
+libpjsua2.so.2 pjproject-2.8_5
+libhdf5_hl.so.100 hdf5-1.10.1_2
+libhdf5.so.103 hdf5-1.10.4_1
+libhdf5_hl_cpp.so.100 hdf5-1.10.1_2
+libhdf5_cpp.so.103 hdf5-1.10.4_1
+libhdf5hl_fortran.so.100 hdf5-1.10.1_2
+libhdf5_fortran.so.102 hdf5-1.10.5_1
+libcryptmount.so.0 libpam-mount-2.15_1
+libglob.so.0 libglob-1.0_1
+libepub.so.0 ebook-tools-0.2.2_1
+libosmgpsmap-1.0.so.1 libosmgpsmap-1.1.0_1
+libtspi.so.1 trousers-0.3.14_11
+libpsiconv.so.6 psiconv-0.9.9_1
+libshout.so.3 libshout-2.4.1_1
+libfirm.so.1.22 libfirm-1.22.0_1
+libaudiofile.so.1 audiofile-0.3.6_1
+libbs2b.so.0 libbs2b-3.1.0_1
+libmunge.so.2 munge-libs-0.5.14_3
+libmgba.so.0.9 libmgba-0.9.2_1
+libglabels-3.0.so.8 libglabels30-3.2.1_1
+libglbarcode-3.0.so.0 libglabels30-3.2.1_1
+libjim.so.0.81 jimtcl-0.81_1
+libftdi1.so.2 libftdi1-1.2_1
+libax25.so.0 libax25-0.0.12rc4_1
+libax25io.so.0 libax25-0.0.12rc4_1
+libmill.so.18 libmill-1.14_1
+libges-1.0.so.0 gst1-editing-services-1.6.2_1
+libykneomgr.so.0 libykneomgr-0.1.8_1
+libopenshot-audio.so.8 libopenshot-audio-0.2.2_1
+libopenshot.so.21 libopenshot-0.2.7_1
+libpqxx-6.3.so libpqxx-6.3.3_1
+libndpi.so.3 ndpi-3.4_1
+liblog.so android-studio-3.0.1_1
+libm.so android-studio-3.0.1_1
+libdl.so android-studio-3.0.1_1
+libKF5WidgetsAddons.so.5 kwidgetsaddons-5.26.0_1
+libsearpc.so.1 libsearpc-3.0.7_1
+libseafile.so.0 seafile-libclient-7.0.10_2
+libpodofo.so.0.9.7 libpodofo-0.9.7_2
+libIrcUtil.so.3 libcommuni-3.4.0_1
+libIrcCore.so.3 libcommuni-3.4.0_1
+libIrcModel.so.3 libcommuni-3.4.0_1
+libp2edrvmagick++.so.0 libpstoedit-3.70_1
+libp2edrvstd.so.0 libpstoedit-3.70_1
+libpstoedit.so.0 libpstoedit-3.70_1
+libtolua.so tolua-5.2.0_1
+libhwloc.so.15 libhwloc-2.0.4_1
+libnetfilter_cttimeout.so.1 libnetfilter_cttimeout-1.0.0_1
+libnetfilter_cthelper.so.0 libnetfilter_cthelper-1.0.0_1
+libnetfilter_queue.so.1 libnetfilter_queue-1.0.2_1
+libfilezilla.so.24 libfilezilla-0.36.0_1
+libtommath.so.1 libtommath-1.0_1
+libKF5ItemViews.so.5 kitemviews-5.26.0_1
+libunicorn.so.1 unicorn-1.0_1
+libglyphy.so.0 glyphy-0.0.20160104_1
+libSwiften.so.0 swiften-4.0.3_2
+libfreehand-0.1.so.1 libfreehand-0.1.1_1
+libe-book-0.1.so.1 libe-book-0.1.2_1
+libOsi.so.1 CoinMP-1.8.3_1
+libClp.so.1 CoinMP-1.8.3_1
+libCoinMP.so.1 CoinMP-1.8.3_1
+libOsiCbc.so.3 CoinMP-1.8.3_1
+libCoinUtils.so.3 CoinMP-1.8.3_1
+libClpSolver.so.1 CoinMP-1.8.3_1
+libCgl.so.1 CoinMP-1.8.3_1
+libOsiClp.so.1 CoinMP-1.8.3_1
+libCbc.so.3 CoinMP-1.8.3_1
+libOsiCommonTests.so.1 CoinMP-1.8.3_1
+libCbcSolver.so.3 CoinMP-1.8.3_1
+libmwaw-0.3.so.3 libmwaw-0.3.7_1
+libixion-0.16.so.0 libixion-0.16.1_1
+liborcus-parser-0.16.so.0 liborcus-0.16.1_1
+liborcus-mso-0.16.so.0 liborcus-0.16.1_1
+liborcus-0.16.so.0 liborcus-0.16.1_1
+liborcus-spreadsheet-model-0.16.so.0 liborcus-0.16.1_1
+libnumbertext-1.0.so.0 libnumbertext-1.0.4_1
+libGeneratedSaxParser.so opencollada-0.0.20160223_1
+libMathMLSolver.so opencollada-0.0.20160223_1
+libOpenCOLLADABaseUtils.so opencollada-0.0.20160223_1
+libOpenCOLLADAFramework.so opencollada-0.0.20160223_1
+libOpenCOLLADASaxFrameworkLoader.so opencollada-0.0.20160223_1
+libOpenCOLLADAStreamWriter.so opencollada-0.0.20160223_1
+leatherman_util.so.1.12.4 leatherman-1.12.4_1
+leatherman_locale.so.1.12.4 leatherman-1.12.4_1
+leatherman_logging.so.1.12.4 leatherman-1.12.4_1
+leatherman_json_container.so.1.12.4 leatherman-1.12.4_1
+leatherman_file_util.so.1.12.4 leatherman-1.12.4_1
+leatherman_curl.so.1.12.4 leatherman-1.12.4_1
+leatherman_dynamic_library.so.1.12.4 leatherman-1.12.4_1
+leatherman_execution.so.1.12.4 leatherman-1.12.4_1
+leatherman_ruby.so.1.12.4 leatherman-1.12.4_1
+libUTF.so opencollada-0.0.20160223_1
+libbuffer.so opencollada-0.0.20160223_1
+libftoa.so opencollada-0.0.20160223_1
+libzlib.so opencollada-1.6.51_1
+libfbclient.so.2 libfbclient3-3.0.4.33054_1
+libipmiutil.so.1 ipmiutil-3.1.3_4
+libqxmpp.so.3 qxmpp-1.2.0_1
+libunwind.so.1 llvm-libunwind-3.8.0_1
+libc++abi.so.1 libcxxabi-3.8.0_1
+libfastjson.so.4 libfastjson-0.99.3_1
+libdcadec.so.0 dcadec-0.2.0_1
+libcmark.so.0 cmark-0.24.1_1
+libspotify.so.12 libspotify-12.1.51_1
+libvidstab.so.1.1 libvidstab-1.1.0_1
+libxdo.so.3 xdotool-3.20150503.1_1
+libabigail.so.0 libabigail-1.0.rc3_1
+libgnome-games-support-1.so.3 libgnome-games-support-1.4.0_1
+libKDevCMakeCommon.so.35 kdevelop-21.12.2_1
+libKDevClangPrivate.so.35 kdevelop-21.12.2_1
+libKDevCompileAnalyzerCommon.so.35 kdevelop-21.12.2_1
+libKDevPlatformDebugger.so.57 kdevelop-21.12.2_1
+libKDevPlatformDocumentation.so.57 kdevelop-21.12.2_1
+libKDevPlatformInterfaces.so.57 kdevelop-21.12.2_1
+libKDevPlatformLanguage.so.57 kdevelop-21.12.2_1
+libKDevPlatformOutputView.so.57 kdevelop-21.12.2_1
+libKDevPlatformProject.so.57 kdevelop-21.12.2_1
+libKDevPlatformSerialization.so.57 kdevelop-21.12.2_1
+libKDevPlatformShell.so.57 kdevelop-21.12.2_1
+libKDevPlatformSublime.so.57 kdevelop-21.12.2_1
+libKDevPlatformTests.so.57 kdevelop-21.12.2_1
+libKDevPlatformUtil.so.57 kdevelop-21.12.2_1
+libKDevPlatformVcs.so.57 kdevelop-21.12.2_1
+libts.so.0 tslib-1.6_1
+libobs.so.0 obs-0.14.1_2
+libobsglad.so.0 obs-0.14.1_2
+libobs-opengl.so.0 obs-0.14.1_2
+libobs-frontend-api.so.0 obs-20.1.3_1
+libzimg.so.2 zimg-2.0.4_1
+libvapoursynth.so vapoursynth-R32_2
+libvapoursynth-script.so.0 vapoursynth-R32_1
+libtwolame.so.0 twolame-0.3.13_1
+libsignon-plugins.so.1 signond-8.58_1
+libsignon-qt5.so.1 signond-8.58_1
+libsignon-plugins-common.so.1 signond-8.58_1
+libsignon-extension.so.1 signond-8.58_1
+libj4status-plugin.so.0 j4status-0.1_1
+libvirglrenderer.so.1 virglrenderer-0.5.0_1
+libglpk.so.40 glpk-4.60_1
+libipmimonitoring.so.6 freeipmi-1.5.7_1
+libipmiconsole.so.2 freeipmi-1.5.1_1
+libfreeipmi.so.17 freeipmi-1.5.1_1
+libipmidetect.so.0 freeipmi-1.5.1_1
+libsmpeg-0.4.so.0 smpeg-0.4.5_3
+libsmpeg2-2.0.so.0 smpeg2-2.0.0_1
+libedac.so.1 libedac-0.18_1
+libxlsreader.so.8 libxls-1.6.1_1
+libR.so R-4.0.2_1
+libmarkdown.so.2 discount-2.2.0_3
+libkeystone.so.0 keystone-0.9_1
+libmate-slab.so.0 libmate-control-center-1.14.0_2
+libuev.so.3 libuev-2.4.0_1
+liburcu-bp.so.6 liburcu-0.10.0_1
+liburcu-cds.so.6 liburcu-0.10.0_1
+liburcu-common.so.6 liburcu-0.10.0_1
+liburcu-mb.so.6 liburcu-0.10.0_1
+liburcu-qsbr.so.6 liburcu-0.10.0_1
+liburcu-signal.so.6 liburcu-0.10.0_1
+liburcu.so.6 liburcu-0.10.0_1
+liblttng-ust.so.0 lttng-ust-2.7.2_1
+liblttng-ust-ctl.so.4 lttng-ust-2.10.0_1
+liblttng-ust-fork.so.0 lttng-ust-2.7.2_1
+liblttng-ust-fd.so.0 lttng-ust-2.10.0_1
+liblttng-ust-libc-wrapper.so.0 lttng-ust-2.7.2_1
+liblttng-ust-pthread-wrapper.so.0 lttng-ust-2.7.2_1
+liblttng-ust-cyg-profile.so.0 lttng-ust-2.7.2_1
+liblttng-ust-cyg-profile-fast.so.0 lttng-ust-2.7.2_1
+liblttng-ust-dl.so.0 lttng-ust-2.7.2_1
+liblttng-ust-tracepoint.so.0 lttng-ust-2.7.2_1
+libbabeltrace.so.1 babeltrace-1.5.3_1
+libbabeltrace-ctf.so.1 babeltrace-1.5.3_1
+libbabeltrace-ctf-text.so.1 babeltrace-1.5.3_1
+libbabeltrace-ctf-metadata.so.1 babeltrace-1.5.3_1
+libbabeltrace-dummy.so.1 babeltrace-1.5.3_1
+libbabeltrace-lttng-live.so.1 babeltrace-1.5.3_1
+liblttng-ctl.so.0 lttng-tools-2.10.1_1
+libKF5DNSSD.so.5 kdnssd-5.26.0_1
+libtwaindsm.so.2 twaindsm-2.3.0_1
+libspnav.so.0 libspnav-0.2.3_1
+libsimage.so.20 simage-1.7.0_1
+libCoin.so.80 coin3-4.0.0_1
+libgl2ps.so.1 gl2ps-1.3.9_1
+libKF5CoreAddons.so.5 kcoreaddons-5.26.0_1
+librpmatch.so.0 musl-rpmatch-1.0_1
+libmilter.so.1.0.2 libmilter-1.0.2_1
+libopendkim.so.10 opendkim-2.10.3_12
+libtevent.so.0 tevent-0.9.28_1
+libldb.so.2 ldb-2.2.0_1
+libpyldb-util.so.2 libpyldb-util-2.2.0_1
+libpath_utils.so.1 ding-libs-0.5.0_1
+libdhash.so.1 ding-libs-0.5.0_1
+libcollection.so.4 ding-libs-0.5.0_1
+libref_array.so.1 ding-libs-0.5.0_1
+libbasicobjects.so.0 ding-libs-0.5.0_1
+libini_config.so.5 ding-libs-0.5.0_1
+libipa_hbac.so.0 sssd-2.4.0_3
+libsss_idmap.so.0 sssd-2.4.0_3
+libnss_sss.so.2 sssd-2.4.0_3
+libsss_nss_idmap.so.0 sssd-2.4.0_3
+libsss_simpleifp.so.0 sssd-2.4.0_3
+libsss_certmap.so.0 sssd-2.4.0_3
+libsss_util.so sssd-2.4.0_3
+libsss_crypt.so sssd-2.4.0_3
+libsss_debug.so sssd-2.4.0_3
+libforms.so.2 xforms-1.2.4_2
+libflimage.so.2 xforms-1.2.4_2
+libutilspp.so.0 curlpp-0.7.3_2
+libcurlpp.so.1 curlpp-0.8.1_1
+libtcd.so.1 libtcd-2.2.7.r2_1
+libaccounts-glib.so.1 libaccounts-glib-1.24_1
+libaccounts-qt5.so.1 libaccounts-qt5-1.14_1
+libshotwell-plugin-dev-1.0.so.0 shotwell-0.30.0_1
+libshotwell-plugin-common.so.0 shotwell-0.30.0_1
+libshotwell-authenticator.so.0 shotwell-0.30.0_1
+liballegro.so.5.2 allegro5-5.2.1_1
+liballegro_primitives.so.5.2 allegro5-5.2.1_1
+liballegro_image.so.5.2 allegro5-5.2.1_1
+liballegro_font.so.5.2 allegro5-5.2.1_1
+liballegro_audio.so.5.2 allegro5-5.2.1_1
+liballegro_acodec.so.5.2 allegro5-5.2.1_1
+liballegro_ttf.so.5.2 allegro5-5.2.1_1
+liballegro_color.so.5.2 allegro5-5.2.1_1
+liballegro_memfile.so.5.2 allegro5-5.2.1_1
+liballegro_physfs.so.5.2 allegro5-5.2.1_1
+liballegro_video.so.5.2 allegro5-5.2.1_1
+liballegro_main.so.5.2 allegro5-5.2.1_1
+liballegro_dialog.so.5.2 allegro5-5.2.1_1
+libKF5DBusAddons.so.5 kdbusaddons-5.26.0_1
+libsystemsettingsview.so.3 systemsettings-5.11.5_2
+libmono-profiler-cov.so.0 mono-4.0.1.44_2
+libmono-profiler-aot.so.0 mono-4.0.1.44_2
+libmono-profiler-iomap.so.0 mono-4.0.1.44_2
+libmono-profiler-log.so.0 mono-4.0.1.44_2
+libikvm-native.so mono-4.0.1.44_2
+libMonoPosixHelper.so mono-4.0.1.44_2
+libMonoSupportW.so mono-4.0.1.44_2
+libmono-btls-shared.so mono-5.2.0.215_1
+libxcb-xrm.so.0 xcb-util-xrm-1.0_1
+libinchi.so.0 openbabel-2.3.2_1
+libopenbabel.so.5 openbabel-2.4.1_1
+libcourier-unicode.so.7 courier-unicode-2.2.2_1
+libzstd.so.1 libzstd-1.0.0_1
+libudis86.so.0 udis86-1.7.2_4
+libsass.so.1 libsass-3.5.0_1
+libjbig.so.0 jbigkit-libs-2.1_2
+libjbig85.so.0 jbigkit-libs-2.1_2
+libskk.so.0 libskk-1.0.2_1
+libKF5WaylandServer.so.5 kwayland-5.26.0_1
+libKF5WaylandClient.so.5 kwayland-5.26.0_1
+libKF5IdleTime.so.5 kidletime-5.26.0_1
+libKF5Archive.so.5 karchive-5.26.0_1
+libKF5Codecs.so.5 kcodecs-5.26.0_1
+libKF5ConfigCore.so.5 kconfig-5.26.0_1
+libKF5ConfigGui.so.5 kconfig-5.26.0_1
+libKF5Completion.so.5 kcompletion-5.26.0_1
+libKF5Crash.so.5 kcrash-5.26.0_1
+libKF5ConfigWidgets.so.5 kconfigwidgets-5.26.0_1
+libKF5Service.so.5 kservice-5.26.0_1
+libKF5GlobalAccel.so.5 kglobalaccel-5.26.0_1
+libKF5GlobalAccelPrivate.so.5 kglobalaccel-5.26.0_1
+libKF5Package.so.5 kpackage-5.26.0_1
+libKF5Su.so.5 kdesu-5.26.0_1
+libKF5Emoticons.so.5 kemoticons-5.26.0_1
+libKF5IconThemes.so.5 kiconthemes-5.26.0_1
+libKF5JobWidgets.so.5 kjobwidgets-5.26.0_1
+libKF5Notifications.so.5 knotifications-5.26.0_1
+libKF5TextWidgets.so.5 ktextwidgets-5.26.0_1
+libKF5Wallet.so.5 kwallet-5.26.0_1
+libkwalletbackend5.so.5 kwallet-5.36.0_1
+libKF5XmlGui.so.5 kxmlgui-5.26.0_1
+libKF5Bookmarks.so.5 kbookmarks-5.26.0_1
+libKF5KIOWidgets.so.5 kio-5.26.0_1
+libKF5KIOCore.so.5 kio-5.26.0_1
+libKF5KIOFileWidgets.so.5 kio-5.26.0_1
+libKF5KIOGui.so.5 kio-5.36.0_1
+libKF5KIONTLM.so.5 kio-5.36.0_1
+libKF5Declarative.so.5 kdeclarative-5.26.0_1
+libKF5QuickAddons.so.5 kdeclarative-5.26.0_1
+libKF5CalendarEvents.so.5 kdeclarative-5.26.0_1
+libKF5KCMUtils.so.5 kcmutils-5.26.0_1
+libKF5Style.so.5 frameworkintegration-5.26.0_1
+libkdeinit5_klauncher.so kinit-5.26.0_1
+libKF5NewStuff.so.5 knewstuff-5.26.0_1
+libKF5NewStuffCore.so.5 knewstuff-5.36.0_1
+libKF5NotifyConfig.so.5 knotifyconfig-5.26.0_1
+libKF5Parts.so.5 kparts-5.26.0_1
+libKF5Activities.so.5 kactivities5-5.26.0_1
+libkdeinit5_kded5.so kded-5.26.0_1
+libKF5WebKit.so.5 kdewebkit-5.26.0_1
+libKF5TextEditor.so.5 ktexteditor-5.26.0_1
+libKF5Plasma.so.5 plasma-framework-5.26.0_1
+libKF5PlasmaQuick.so.5 plasma-framework-5.26.0_1
+libKF5ModemManagerQt.so.6 modemmanager-qt5-5.26.0_1
+libKF5People.so.5 kpeople-5.26.0_1
+libKF5PeopleBackend.so.5 kpeople-5.36.0_1
+libKF5PeopleWidgets.so.5 kpeople-5.36.0_1
+libKF5XmlRpcClient.so.5 kxmlrpcclient-5.26.0_1
+libKF5BluezQt.so.6 bluez-qt5-5.26.0_1
+libKF5FileMetaData.so.3 kfilemetadata5-5.26.0_1
+libKF5Baloo.so.5 baloo5-5.26.0_1
+libKF5BalooEngine.so.5 baloo5-5.26.0_1
+libKF5ActivitiesStats.so.1 kactivities5-stats-5.26.0_1
+libKF5Runner.so.5 krunner-5.26.0_1
+libKF5JS.so.5 kjs-5.26.0_1
+libKF5JSApi.so.5 kjs-5.36.0_1
+libKF5KDELibs4Support.so.5 kdelibs4support-5.26.0_1
+libKF5KHtml.so.5 khtml-5.26.0_1
+libKF5JsEmbed.so.5 kjsembed-5.26.0_1
+libKF5KrossCore.so.5 kross-5.26.0_1
+libKF5KrossUi.so.5 kross-5.36.0_1
+liblmdb.so.0 lmdb-0.9.18_2
+libisns.so.0 libisns-0.101_2
+libz80ex.so.1 z80ex-1.1.21_1
+libz80ex_dasm.so.1 z80ex-1.1.21_1
+libqmmp.so.1 qmmp-1.1.4_1
+libqmmpui.so.1 qmmp-1.1.4_1
+libalkimia5.so.8 libalkimia-8.0.1_1
+libpayeeidentifier_iban_bic_widgets.so.5 kmymoney-5.0.0_1
+libkmm_plugin.so.5 kmymoney-5.0.0_1
+libkmm_widgets.so.5 kmymoney-5.0.0_1
+libkmm_mymoney.so.5 kmymoney-5.0.0_1
+libpayeeidentifier_nationalAccount.so.5 kmymoney-5.0.0_1
+libpayeeidentifier_iban_bic.so.5 kmymoney-5.0.0_1
+libkmm_payeeidentifier.so.5 kmymoney-5.0.0_1
+libKDb3.so.4 kdb-3.1.0_1
+libKPropertyWidgets3.so.4 kproperty-3.1.0_1
+libKPropertyCore3.so.4 kproperty-3.1.0_1
+libKReport3.so.4 kreport-3.1.0_1
+libbotan-2.so.16 botan-2.16.0_3
+libswipl.so.8 swi-prolog-8.2.4_2
+libpcre2-16.so.0 libpcre2-10.22_1
+libpcre2-32.so.0 libpcre2-10.22_1
+libpcre2-8.so.0 libpcre2-10.22_1
+libpcre2-posix.so.3 libpcre2-10.39_1
+libui.so.0 libui-alpha3.1_1
+libgnome-autoar-0.so.0 gnome-autoar-0.1.1_1
+libgnome-autoar-gtk-0.so.0 gnome-autoar-0.1.1_1
+libxapp.so.1 xapps-1.0.2_1
+libite.so.5 libite-2.0.1_1
+liblog4cplus-1.2.so.5 log4cplus-1.2.0_1
+liblog4cplus-2.0.so.3 log4cplus-2.0.0_1
+liblog4cplusU-2.0.so.3 log4cplus-2.0.3_1
+libpng12.so.0 libpng12-1.2.56_2
+libpng.so.3 libpng12-1.2.56_2
+libcapnpc-0.9.1.so capnproto-0.9.1_1
+libcapnp-json-0.9.1.so capnproto-0.9.1_1
+libcapnp-rpc-0.9.1.so capnproto-0.9.1_1
+libcapnp-websocket-0.9.1.so capnproto-0.9.1_1
+libcapnp-0.9.1.so capnproto-0.9.1_1
+libkj-http-0.9.1.so capnproto-0.9.1_1
+libkj-async-0.9.1.so capnproto-0.9.1_1
+libkj-test-0.9.1.so capnproto-0.9.1_1
+libkj-0.9.1.so capnproto-0.9.1_1
+libkea-asiodns.so.12 libkea-1.9.5_2
+libkea-asiolink.so.23 libkea-1.9.5_2
+libkea-cc.so.22 libkea-1.9.5_2
+libkea-cfgclient.so.22 libkea-1.9.5_2
+libkea-cryptolink.so.16 libkea-1.9.5_2
+libkea-database.so.21 libkea-1.9.5_2
+libkea-dhcp++.so.33 libkea-1.9.5_2
+libkea-dhcp_ddns.so.15 libkea-1.9.5_2
+libkea-dhcpsrv.so.43 libkea-1.9.5_2
+libkea-dns++.so.16 libkea-1.9.5_2
+libkea-eval.so.25 libkea-1.9.5_2
+libkea-exceptions.so.0 libkea-1.9.5_2
+libkea-hooks.so.31 libkea-1.9.5_2
+libkea-http.so.23 libkea-1.9.5_2
+libkea-log.so.18 libkea-1.9.5_2
+libkea-pgsql.so.18 libkea-1.9.5_2
+libkea-process.so.26 libkea-1.9.5_2
+libkea-stats.so.18 libkea-1.9.5_2
+libkea-util-io.so.0 libkea-1.9.5_2
+libkea-util.so.32 libkea-1.9.5_2
+libytnef.so.0 ytnef-1.8_1
+libpisock.so.9 pilot-link-0.12.5_1
+libpisync.so.1 pilot-link-0.12.5_1
+libpitcl.so.0 pilot-link-0.12.5_1
+libiscsi.so.9 libiscsi-1.19.0_1
+libgme.so.0 libgme-0.6.1_1
+libzmusic.so.1 ZMusic-1.1.2_1
+libzmusiclite.so.1 ZMusic-1.1.2_1
+libsidplayfp.so.6 libsidplayfp-2.1.0_1
+libstilview.so.0 libsidplayfp-1.8.7_1
+libczmq.so.4 czmq-4.0.1_1
+liblz.so.1 lzlib-1.8_1
+libelogind.so.0 libelogind-238.1_2
+libseat.so.1 libseat-0.3.0_1
+libnma.so.0 libnma-1.8.30_1
+libnma-gtk4.so.0 libnma-1.8.36_1
+libgspell-1.so.2 gspell-1.8.0_1
+libotf.so.1 libotf-0.9.16_1
+libimagequant.so.0 libimagequant-2.8.2_1
+libDOtherSide.so.0.7 dotherside-0.7.1_1
+libstlink.so.1 stlink-1.5.1_1
+libopencsg.so.1 opencsg-1.4.2_1
+libCGAL.so.13 cgal-4.10_1
+libCGAL_Core.so.13 cgal-4.10_1
+libCGAL_ImageIO.so.14 cgal-4.14_1
+libqscintilla2_qt5.so.15 qscintilla-qt5-2.11_1
+libQtAVWidgets.so.1 qtav-1.12.0_1
+libQtAV.so.1 qtav-1.12.0_1
+liblxpanel.so.0 lxpanel-0.9.3_1
+libuim.so.8 uim-1.8.6_1
+libuim-scm.so.0 uim-1.8.6_1
+libuim-custom.so.2 uim-1.8.6_1
+libgcroots.so.0 libgcroots-0.3.2_1
+libdecoration.so.0 compiz-core-0.8.14_1
+libcompizconfig.so.0 libcompizconfig-0.8.14_1
+libemeraldengine.so.0 emerald-0.8.14_1
+libhangul.so.1 libhangul-0.1.0_1
+libmutter-9.so.0 mutter-41.0_1
+libmutter-clutter-9.so.0 mutter-41.0_1
+libmutter-cogl-9.so.0 mutter-41.0_1
+libmutter-cogl-pango-9.so.0 mutter-41.0_1
+libgeoclue-2.so.0 geoclue2-2.4.4_1
+libgepub.so.0 libgepub-0.4_1
+libslopy.so.7.6 slop-7.6_1
+libbcunit.so.1 bcunit-3.0_1
+libzbar.so.0 libzbar-0.10_1
+libzbargtk.so.0 libzbar-0.10_1
+libzbarqt.so.0 libzbar-qt-0.10_10
+libargtable2.so.0 argtable-2.13_1
+libomxil-bellagio.so.0 libomxil-bellagio-0.9.3_1
+libomxdynamicloader.so.0 libomxil-bellagio-0.9.3_1
+libomxaudio_effects.so.0 libomxil-bellagio-0.9.3_1
+libomxclocksrc.so.0 libomxil-bellagio-0.9.3_1
+libomxvideosched.so.0 libomxil-bellagio-0.9.3_1
+libnss_libvirt_guest.so.2 libvirt-3.1.0_1
+libvirt-admin.so.0 libvirt-3.1.0_1
+libnss_libvirt.so.2 libvirt-3.1.0_1
+libassimp.so.5 libassimp-5.0.0_1
+libdouble-conversion.so.3 double-conversion-3.1.5_1
+libspectrum.so.8 libspectrum-1.2.2_1
+libbearssl.so.0 bearssl-0.3_1
+libXfont2.so.2 libXfont2-2.0.1_1
+libqalculate.so.22 libqalculate-3.20.1_1
+libweston-9.so.0 weston-9.0.0_1
+libostree-1.so.1 libostree-2020.8_2
+librhash.so.0 rhash-1.3.4_1
+libserialport.so.0 libserialport-0.1.1_1
+libsigrok.so.4 libsigrok-0.5.0_1
+libsigrokcxx.so.4 libsigrok-0.5.0_1
+libsigrokdecode.so.4 libsigrokdecode-0.5.0_2
+libglyr.so.1 glyr-1.0.8_1
+libPocoJSON.so.64 poco-1.9.4_3
+libPocoMongoDB.so.64 poco-1.9.4_3
+libPocoZip.so.64 poco-1.9.4_3
+libPocoData.so.64 poco-1.9.4_3
+libPocoNet.so.64 poco-1.9.4_3
+libPocoDataSQLite.so.64 poco-1.9.4_3
+libPocoFoundation.so.64 poco-1.9.4_3
+libPocoXML.so.64 poco-1.9.4_3
+libPocoUtil.so.64 poco-1.9.4_3
+libPocoRedis.so.64 poco-1.9.4_3
+libPocoEncodings.so.64 poco-1.9.4_3
+libPocoNetSSL.so.64 poco-1.9.4_3
+libPocoCrypto.so.64 poco-1.9.4_3
+libPtex.so ptex-2.3.2_1
+libopenblas.so.0 openblas-0.2.19_1
+librtaudio.so.6 rtaudio-5.1.0_1
+librtmidi.so.5 rtmidi-4.0.0_1
+libbiblesync.so.2.1.0 biblesync-2.1.0_1
+libbac-9.4.2.so bacula-common-9.4.2_4
+libbaccfg-9.4.2.so bacula-common-9.4.2_4
+libbacfind-9.4.2.so bacula-common-9.4.2_4
+libbacsql-9.4.2.so bacula-common-9.4.2_4
+libbaccats-9.4.2.so bacula-common-9.4.2_4
+libbacsd-9.4.2.so bacula-common-9.4.2_4
+libbaccats-sqlite3-9.4.2.so bacula-common-9.4.2_4
+libbaccats-postgresql-9.4.2.so bacula-common-postgresql-9.4.2_4
+libbaccats-mysql-9.4.2.so bacula-common-mariadb-9.4.2_4
+bpipe-fd.so bacula-fd-9.4.2_4
+libnftables.so.1 libnftables-0.9.1_1
+libbctoolbox.so.1 bctoolbox-0.6.0_1
+libortp.so.15 ortp-4.4.0_1
+libsuperlu.so.5 superlu-5.2.1_1
+libgosu.so.0 gosu-0.12.0_1
+libyara.so.9 libyara-4.2.0_1
+libyaz_icu.so.5 yaz-5.23.1_1
+libyaz.so.5 yaz-5.23.1_1
+libyaz_server.so.5 yaz-5.23.1_1
+libgcab-1.0.so.0 gcab-0.7_1
+libwpe-1.0.so.1 libwpe-1.10.0_1
+libWPEBackend-fdo-1.0.so.1 wpebackend-fdo-1.8.3_1
+libliveMedia.so.81 live555-2020.08.11_2
+libgroupsock.so.8 live555-2020.08.11_2
+libUsageEnvironment.so.3 live555-2020.08.11_2
+libBasicUsageEnvironment.so.1 live555-2020.08.11_2
+libappstream.so.4 AppStream-0.12.2_1
+libappstream-glib.so.8 appstream-glib-0.6.13_1
+libappstream-builder.so.8 appstream-glib-0.6.13_1
+libflatpak.so.0 flatpak-0.9.3_2
+libnanomsg.so.5 nanomsg-1.1.3_1
+libindicator3.so.7 libindicator-12.10.1_1
+libappindicator3.so.1 libappindicator-12.10.0_1
+libscanmem.so.1 libscanmem-0.17_5
+libsctp.so.1 lksctp-tools-1.0.17_1
+libwithsctp.so.1 lksctp-tools-1.0.17_1
+libnss_ldap.so.2 nss-pam-ldapd-0.9.7_4
+libunshield.so.0 libunshield-0.6_1
+libMyGUIEngine.so.3.4.1 libmygui-3.4.1_1
+libproj.so.18 proj-6.3.0_1
+libnlopt.so.0 nlopt-2.4.2_1
+libeb.so.16 libeb-4.3.3_1
+libchipcard.so.6 libchipcard-5.0.4_1
+libraqm.so.0 libraqm-0.2.0_1
+liboggz.so.2 liboggz-1.1.1_1
+libfishsound.so.1 libfishsound-1.0.0_1
+libxqilla.so.2 XQilla-2.3.4_1
+libKF5DocTools.so.5 kdoctools-5.36.0_1
+libKF5MediaPlayer.so.5 kmediaplayer-5.36.0_1
+libxo.so.0 libxo-0.9.0_1
+libbrotlicommon.so.1 brotli-1.0.2_1
+libbrotlidec.so.1 brotli-1.0.2_1
+libbrotlienc.so.1 brotli-1.0.2_1
+libfilteraudio.so filter_audio-0.0.1_1
+libgstreamermm-1.0.so.1 gstreamermm-1.8.0_1
+libmovit.so.8 movit-1.6.0_1
+libduktape.so.206 duktape-2.6.0_1
+libccgnu2-1.8.so.0 commoncpp2-1.8.1_1
+libccext2-1.8.so.0 commoncpp2-1.8.1_1
+libucommon.so.8 ucommon-7.0.0_1
+libusecure.so.8 ucommon-7.0.0_1
+libcommoncpp.so.8 ucommon-7.0.0_1
+libdatrie.so.1 libdatrie-0.2.10_1
+libthai.so.0 libthai-0.1.26_1
+libm17n-flt.so.0 m17n-lib-1.7.0_1
+libm17n-gui.so.0 m17n-lib-1.7.0_1
+libm17n-core.so.0 m17n-lib-1.7.0_1
+libm17n.so.0 m17n-lib-1.7.0_1
+libprotobuf-lite.so.30 libprotobuf-lite-3.19.4_1
+libprotoc.so.30 libprotoc-3.19.4_1
+libprotobuf.so.30 libprotobuf-3.19.4_1
+libsombok.so.3 sombok-2.4.0_1
+libdeviceclient.so.0 pragha-1.3.3_1
+libguile-srfi-srfi-1-v-3.so.3 guile1.8-1.8.8_1
+libguile-srfi-srfi-4-v-3.so.3 guile1.8-1.8.8_1
+libguile-srfi-srfi-60-v-2.so.2 guile1.8-1.8.8_1
+libguile.so.17 guile1.8-1.8.8_1
+libguilereadline-v-17.so.17 guile1.8-1.8.8_1
+libguile-srfi-srfi-13-14-v-3.so.3 guile1.8-1.8.8_1
+libykclient.so.3 ykclient-2.15_1
+libbooster.so.0 cppcms-1.0.5_1
+libcppcms.so.1 cppcms-1.0.5_1
+libcppdb.so.0 cppdb-0.3.1_1
+libtracker-control-2.0.so.0 libtracker-2.0.0_1
+libtracker-sparql-2.0.so.0 libtracker-2.0.0_1
+libtracker-miner-2.0.so.0 libtracker-2.0.1_1
+libtracker-sparql-3.0.so.0 libtracker3-3.0.0_1
+libdockapp.so.3 libdockapp-0.7.2_1
+libkrdccore.so.5 krdc-17.04.3_1
+libArcus.so.3 libArcus-3.1.0_1
+libgutenprint.so.9 gutenprint-5.3.3_1
+libunbound.so.8 libunbound-1.13.1_2
+libmirage.so.11 libmirage-3.1.0_1
+libwkhtmltox.so.0 libwkhtmltopdf-0.12.5_1
+libsysprof-4.so sysprof-3.37.90_1
+libsysprof-ui-4.so sysprof-3.37.90_1
+libvala-0.56.so.0 libvala-0.56.0_1
+libvaladoc-0.56.so.0 libvaladoc-0.56.0_1
+libvalaccodegen.so libvala-0.44.0_1
+libphodav-2.0.so.0 phodav-2.2_1
+libgfshare.so.2 libgfshare-2.0.0_1
+libtacacs.so.1 tacacs-4.0.4.28_1
+libffms2.so.4 libffms2-2.23.1_1
+libddcutil.so.4 ddcutil-1.0.1_1
+liblsmash.so.2 liblsmash-2.9.1_1
+libgiac.so.0 libgiac-1.4.9r17_1
+libgnustep-base.so.1.28 gnustep-base-1.28.0_1
+libtermbox.so.1 termbox-1.1.0_1
+libmysofa.so.1 libmysofa-1.2_1
+libzinnia.so.0 libzinnia-0.06_1
+libdnet.so.1 libdnet-1.12_1
+libgtkd-3.so.0 gtkd-3.7.0_2
+libgtkdsv-3.so.0 libgtkdsv-3.7.0_2
+libvted-3.so.0 libvted-3.7.0_2
+libpeasd-3.so.0 libpeasd-3.7.0_2
+libgstreamerd-3.so.0 libgstreamerd-3.7.0_2
+libgtkdgl-3.so.0 libgtkdgl-3.7.0_2
+libmega.so.30703 MEGAsdk-3.7.3c_2
+libopenglrecorder.so.0 libopenglrecorder-0.1.0_1
+libgpod.so.4 libgpod-0.8.3_1
+libi2c.so.0 i2c-tools-4.0_1
+libmarisa.so.0 marisa-0.2.5_1
+libopencc.so.1.1 opencc-1.1.1_1
+librime.so.1 librime-1.2.9_1
+libIMECore.so.0 libime-1.0.5_1
+libIMEPinyin.so.0 libime-1.0.5_1
+libIMETable.so.0 libime-1.0.5_1
+libIMEJyutping.so.1 libime-jyutping-1.0.2_1
+libairspy.so.0 libairspy-1.0.9_1
+libKF5KDcraw.so.5 libkdcraw5-17.04.3_1
+libKF5Kipi.so.32.0.0 libkipi5-17.04.3_1
+libhackrf.so.0 libhackrf-2017.02.1_1
+libtecla.so.1 libtecla-1.6.3_1
+libtecla_r.so.1 libtecla-1.6.3_1
+libzim.so.6 libzim-6.0.1_1
+libkiwix.so.9 kiwix-lib-9.0.1_1
+libaria2.so.0 libaria2-1.35.0_3
+librpm.so.9 librpm-4.15.0_1
+librpmsign.so.9 librpmsign-4.15.0_1
+librpmbuild.so.9 librpmbuild-4.15.0_1
+librpmio.so.9 librpmio-4.15.0_1
+libsquirrel.so.0 squirrel-libs-3.1_1
+libsqstdlib.so.0 squirrel-libs-3.1_1
+libexecinfo.so.1 libexecinfo-1.1_1
+libkdeconnectpluginkcm.so.2 kdeconnect-20.12.2_1
+libkdeconnectinterfaces.so.21 kdeconnect-21.03.80_1
+libkdeconnectcore.so.21 kdeconnect-21.03.80_1
+libkpmcore.so.11 kpmcore-21.03.80_1
+libpkcs11-helper.so.1 pkcs11-helper-1.25.1_6
+libr_core.so.5.0.0 radare2-5.0.0_1
+libr_config.so.5.0.0 radare2-5.0.0_1
+libr_cons.so.5.0.0 radare2-5.0.0_1
+libr_util.so.5.0.0 radare2-5.0.0_1
+libr_flag.so.5.0.0 radare2-5.0.0_1
+libr_asm.so.5.0.0 radare2-5.0.0_1
+libr_bin.so.5.0.0 radare2-5.0.0_1
+libr_anal.so.5.0.0 radare2-5.0.0_1
+libr_lang.so.5.0.0 radare2-5.0.0_1
+libr_debug.so.5.0.0 radare2-5.0.0_1
+libr_egg.so.5.0.0 radare2-5.0.0_1
+libr_bp.so.5.0.0 radare2-5.0.0_1
+libr_search.so.5.0.0 radare2-5.0.0_1
+libr_io.so.5.0.0 radare2-5.0.0_1
+libr_hash.so.5.0.0 radare2-5.0.0_1
+libr_socket.so.5.0.0 radare2-5.0.0_1
+libr_parse.so.5.0.0 radare2-5.0.0_1
+libr_syscall.so.5.0.0 radare2-5.0.0_1
+libr_crypto.so.5.0.0 radare2-5.0.0_1
+libr_fs.so.5.0.0 radare2-5.0.0_1
+libr_magic.so.5.0.0 radare2-5.0.0_1
+libr_reg.so.5.0.0 radare2-5.0.0_1
+libykpiv.so.1 libykpiv-2.1.1_2
+libykcs11.so.1 libykcs11-2.1.1_2
+libKF5KExiv2.so.15.0.0 libkexiv25-17.04.3_1
+libqmobipocket.so.2 libqmobipocket-17.04.3_1
+libgloox.so.17 gloox-1.0.20_1
+libgsmsd.so.8 gammu-smsd-1.39.0_1
+libGammu.so.8 gammu-1.39.0_1
+libz3.so z3-4.6.0_2
+libngspice.so.0 ngspice-35_1
+libvulkan.so.1 vulkan-loader-1.0.57.0_1
+libembb_mtapi_cpp.so embb-1.0.0_3
+libembb_mtapi_c.so embb-1.0.0_3
+libembb_mtapi_network_c.so embb-1.0.0_3
+libembb_base_cpp.so embb-1.0.0_3
+libembb_base_c.so embb-1.0.0_3
+libhpdf-2.3.0.so Haru-2.3.0_3
+libKF5Contacts.so.5 kcontacts-5.63.0_1
+libKF5AkonadiPrivate.so.5 akonadi5-17.12.0_1
+libKF5AkonadiCore.so.5 akonadi5-17.12.0_1
+libKF5AkonadiAgentBase.so.5 akonadi5-17.12.0_1
+libKF5AkonadiWidgets.so.5 akonadi5-17.12.0_1
+libKF5AkonadiXml.so.5 akonadi5-17.12.0_1
+libKF5PimTextEdit.so.5 kpimtextedit-17.12.0_1
+libKF5IdentityManagement.so.5 kidentitymanagement-17.12.0_1
+libKChart.so.2 kdiagram-2.6.0_1
+libKGantt.so.2 kdiagram-2.6.0_1
+libscrypt.so.0 libscrypt-1.21_1
+libzuluCryptPluginManager.so.1.0.0 zulucrypt-5.2.0_1
+libzuluCrypt-exe.so.1.2.0 zulucrypt-5.2.0_1
+libzuluCrypt.so.1.2.0 zulucrypt-5.2.0_1
+libaacs.so.0 libaacs-0.9.0_1
+libttfautohint.so.1 ttfautohint-1.8.1_1
+libcob.so.4 gnucobol-libs-2.2_1
+libkrfbprivate.so.5.0 krfb-17.08.1_1
+libarcan_shmif.so.0.14 arcan-0.6.1_1
+libarcan_shmif_ext.so.0.14 arcan-0.6.1_1
+libarcan_shmif_server.so.0.14 arcan-0.6.1_1
+libarcan_tui.so.0.14 arcan-0.6.1_1
+libarcan_a12.so.0.1 arcan-0.6.1_1
+liblwipv6.so.2 lwipv6-1.5a_1
+libpipewire-0.2.so.1 libpipewire0.2-0.2.7_1
+libpipewire-0.3.so.0 libpipewire-0.3.6_1
+libvolk.so.2.5 volk-2.5.0_1
+libgnuradio-runtime.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-pmt.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-blocks.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-audio.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-fec.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-fft.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-filter.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-analog.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-digital.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-dtv.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-channels.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-trellis.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-video-sdl.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-vocoder.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-wavelet.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-uhd.so.3.8.0 gnuradio-3.8.0.0_1
+libgnuradio-osmosdr.so.0.2.0 gnuradio-osmosdr-0.2.0_1
+libflann_cpp.so.1.9 flann-1.9.1_1
+libflann.so.1.9 flann-1.9.1_1
+libvtkChartsCore-9.0.so.1 vtk-9.0.1_1
+libvtkCommonColor-9.0.so.1 vtk-9.0.1_1
+libvtkCommonComputationalGeometry-9.0.so.1 vtk-9.0.1_1
+libvtkCommonCore-9.0.so.1 vtk-9.0.1_1
+libvtkCommonDataModel-9.0.so.1 vtk-9.0.1_1
+libvtkCommonExecutionModel-9.0.so.1 vtk-9.0.1_1
+libvtkCommonMath-9.0.so.1 vtk-9.0.1_1
+libvtkCommonMisc-9.0.so.1 vtk-9.0.1_1
+libvtkCommonSystem-9.0.so.1 vtk-9.0.1_1
+libvtkCommonTransforms-9.0.so.1 vtk-9.0.1_1
+libvtkDICOMParser-9.0.so.1 vtk-9.0.1_1
+libvtkDomainsChemistry-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersAMR-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersCore-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersExtraction-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersFlowPaths-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersGeneral-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersGeneric-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersGeometry-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersHybrid-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersHyperTree-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersImaging-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersModeling-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersParallel-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersParallelImaging-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersPoints-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersProgrammable-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersSMP-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersSelection-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersSources-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersStatistics-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersTexture-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersTopology-9.0.so.1 vtk-9.0.1_1
+libvtkFiltersVerdict-9.0.so.1 vtk-9.0.1_1
+libvtkGeovisCore-9.0.so.1 vtk-9.0.1_1
+libvtkIOAMR-9.0.so.1 vtk-9.0.1_1
+libvtkIOAsynchronous-9.0.so.1 vtk-9.0.1_1
+libvtkIOCityGML-9.0.so.1 vtk-9.0.1_1
+libvtkIOCore-9.0.so.1 vtk-9.0.1_1
+libvtkIOEnSight-9.0.so.1 vtk-9.0.1_1
+libvtkIOExodus-9.0.so.1 vtk-9.0.1_1
+libvtkIOExport-9.0.so.1 vtk-9.0.1_1
+libvtkIOExportGL2PS-9.0.so.1 vtk-9.0.1_1
+libvtkIOExportPDF-9.0.so.1 vtk-9.0.1_1
+libvtkIOGeometry-9.0.so.1 vtk-9.0.1_1
+libvtkIOImage-9.0.so.1 vtk-9.0.1_1
+libvtkIOImport-9.0.so.1 vtk-9.0.1_1
+libvtkIOInfovis-9.0.so.1 vtk-9.0.1_1
+libvtkIOLSDyna-9.0.so.1 vtk-9.0.1_1
+libvtkIOLegacy-9.0.so.1 vtk-9.0.1_1
+libvtkIOMotionFX-9.0.so.1 vtk-9.0.1_1
+libvtkIOMINC-9.0.so.1 vtk-9.0.1_1
+libvtkIOMovie-9.0.so.1 vtk-9.0.1_1
+libvtkIONetCDF-9.0.so.1 vtk-9.0.1_1
+libvtkIOOggTheora-9.0.so.1 vtk-9.0.1_1
+libvtkIOPLY-9.0.so.1 vtk-9.0.1_1
+libvtkIOParallel-9.0.so.1 vtk-9.0.1_1
+libvtkIOParallelXML-9.0.so.1 vtk-9.0.1_1
+libvtkIOSQL-9.0.so.1 vtk-9.0.1_1
+libvtkIOSegY-9.0.so.1 vtk-9.0.1_1
+libvtkIOTecplotTable-9.0.so.1 vtk-9.0.1_1
+libvtkIOVeraOut-9.0.so.1 vtk-9.0.1_1
+libvtkIOVideo-9.0.so.1 vtk-9.0.1_1
+libvtkIOXML-9.0.so.1 vtk-9.0.1_1
+libvtkIOXMLParser-9.0.so.1 vtk-9.0.1_1
+libvtkImagingColor-9.0.so.1 vtk-9.0.1_1
+libvtkImagingCore-9.0.so.1 vtk-9.0.1_1
+libvtkImagingFourier-9.0.so.1 vtk-9.0.1_1
+libvtkImagingGeneral-9.0.so.1 vtk-9.0.1_1
+libvtkImagingHybrid-9.0.so.1 vtk-9.0.1_1
+libvtkImagingMath-9.0.so.1 vtk-9.0.1_1
+libvtkImagingMorphological-9.0.so.1 vtk-9.0.1_1
+libvtkImagingSources-9.0.so.1 vtk-9.0.1_1
+libvtkImagingStatistics-9.0.so.1 vtk-9.0.1_1
+libvtkImagingStencil-9.0.so.1 vtk-9.0.1_1
+libvtkInfovisCore-9.0.so.1 vtk-9.0.1_1
+libvtkInfovisLayout-9.0.so.1 vtk-9.0.1_1
+libvtkInteractionImage-9.0.so.1 vtk-9.0.1_1
+libvtkInteractionStyle-9.0.so.1 vtk-9.0.1_1
+libvtkInteractionWidgets-9.0.so.1 vtk-9.0.1_1
+libvtkParallelCore-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingAnnotation-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingContext2D-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingCore-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingFreeType-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingGL2PSOpenGL2-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingImage-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingLOD-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingLabel-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingOpenGL2-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingSceneGraph-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingUI-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingVolume-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingVolumeOpenGL2-9.0.so.1 vtk-9.0.1_1
+libvtkRenderingVtkJS-9.0.so.1 vtk-9.0.1_1
+libvtkTestingRendering-9.0.so.1 vtk-9.0.1_1
+libvtkViewsContext2D-9.0.so.1 vtk-9.0.1_1
+libvtkViewsCore-9.0.so.1 vtk-9.0.1_1
+libvtkViewsInfovis-9.0.so.1 vtk-9.0.1_1
+libvtkexodusII-9.0.so.1 vtk-9.0.1_1
+libvtklibharu-9.0.so.1 vtk-9.0.1_1
+libvtkmetaio-9.0.so.1 vtk-9.0.1_1
+libvtksys-9.0.so.1 vtk-9.0.1_1
+libvtkverdict-9.0.so.1 vtk-9.0.1_1
+libvolume_key.so.1 volume_key-0.3.9_1
+librand48_r.so.0 rand48_r-0.1_1
+libxxhash.so.0 libxxHash-0.6.5_2
+libcapnp_c.so.0 c-capnproto-0.3_1
+libTKBin.so.7 occt-7.2.0p1_1
+libTKDraw.so.7 occt-7.2.0p1_1
+libTKSTEP209.so.7 occt-7.2.0p1_1
+libTKOpenGl.so.7 occt-7.2.0p1_1
+libTKBinTObj.so.7 occt-7.2.0p1_1
+libTKSTL.so.7 occt-7.2.0p1_1
+libTKViewerTest.so.7 occt-7.2.0p1_1
+libTKCAF.so.7 occt-7.2.0p1_1
+libTKService.so.7 occt-7.2.0p1_1
+libTKV3d.so.7 occt-7.2.0p1_1
+libTKXCAF.so.7 occt-7.2.0p1_1
+libTKMesh.so.7 occt-7.2.0p1_1
+libTKSTEP.so.7 occt-7.2.0p1_1
+libTKMath.so.7 occt-7.2.0p1_1
+libTKLCAF.so.7 occt-7.2.0p1_1
+libTKShHealing.so.7 occt-7.2.0p1_1
+libTKGeomAlgo.so.7 occt-7.2.0p1_1
+libTKTObjDRAW.so.7 occt-7.2.0p1_1
+libTKTObj.so.7 occt-7.2.0p1_1
+libTKStd.so.7 occt-7.2.0p1_1
+libTKSTEPBase.so.7 occt-7.2.0p1_1
+libTKIGES.so.7 occt-7.2.0p1_1
+libTKGeomBase.so.7 occt-7.2.0p1_1
+libTKFillet.so.7 occt-7.2.0p1_1
+libTKFeat.so.7 occt-7.2.0p1_1
+libTKG2d.so.7 occt-7.2.0p1_1
+libTKXSBase.so.7 occt-7.2.0p1_1
+libTKDCAF.so.7 occt-7.2.0p1_1
+libTKXml.so.7 occt-7.2.0p1_1
+libTKTopTest.so.7 occt-7.2.0p1_1
+libTKG3d.so.7 occt-7.2.0p1_1
+libTKBRep.so.7 occt-7.2.0p1_1
+libTKVRML.so.7 occt-7.2.0p1_1
+libTKCDF.so.7 occt-7.2.0p1_1
+libTKXSDRAW.so.7 occt-7.2.0p1_1
+libTKXMesh.so.7 occt-7.2.0p1_1
+libTKernel.so.7 occt-7.2.0p1_1
+libTKTopAlgo.so.7 occt-7.2.0p1_1
+libTKHLR.so.7 occt-7.2.0p1_1
+libTKBinXCAF.so.7 occt-7.2.0p1_1
+libTKVCAF.so.7 occt-7.2.0p1_1
+libTKBinL.so.7 occt-7.2.0p1_1
+libTKXmlXCAF.so.7 occt-7.2.0p1_1
+libTKXDEIGES.so.7 occt-7.2.0p1_1
+libTKBO.so.7 occt-7.2.0p1_1
+libTKStdL.so.7 occt-7.2.0p1_1
+libTKXDEDRAW.so.7 occt-7.2.0p1_1
+libTKXmlTObj.so.7 occt-7.2.0p1_1
+libTKPrim.so.7 occt-7.2.0p1_1
+libTKMeshVS.so.7 occt-7.2.0p1_1
+libTKSTEPAttr.so.7 occt-7.2.0p1_1
+libTKBool.so.7 occt-7.2.0p1_1
+libTKOffset.so.7 occt-7.2.0p1_1
+libTKXDESTEP.so.7 occt-7.2.0p1_1
+libTKQADraw.so.7 occt-7.2.0p1_1
+libTKXmlL.so.7 occt-7.2.0p1_1
+libTKRWMesh.so.7 occt-7.4.0_1
+libargon2.so.1 libargon2-20171227_1
+libdazzle-1.0.so.0 libdazzle-3.28.0_1
+libjsonrpc-glib-1.0.so.1 jsonrpc-glib-3.28.0_1
+libtemplate_glib-1.0.so.0 template-glib-3.28.0_1
+libmedimport.so.0 libmed-3.3.1_1
+libmedC.so.11 libmed-4.0.0_1
+libmed.so.11 libmed-4.0.0_1
+libeog.so eog-3.28.0_4
+libfreexl.so.1 freexl-1.0.5_1
+libgeos-3.9.0.so geos-3.9.0_1
+libgeos_c.so.1 geos-3.9.0_1
+libpapi.so.5 papi-5.6.0_1
+libpfm.so.4 papi-5.6.0_1
+libfifechan.so.0.1.5 fifechan-0.1.5_1
+libfifechan_sdl.so.0.1.5 fifechan-0.1.5_1
+libfifechan_opengl.so.0.1.5 fifechan-0.1.5_1
+libpolyclipping.so.22 clipper-6.4.2_1
+libSoapySDR.so.0.7 SoapySDR-0.7.0_1
+libeditorconfig.so.0 editorconfig-0.12.2_1
+libcfitsio.so.9 cfitsio-3.480_1
+libapparmor.so.1 libapparmor-2.12.0_1
+libplacebo.so.157 libplacebo-4.157.0_1
+libw2xc.so waifu2x-converter-cpp-5.2_1
+libnova-0.15.so.0 libnova-0.15.0_1
+libcue.so.2 libcue-2.2.0_1
+libticonv.so.8 libticonv-1.1.5_1
+libtifiles2.so.10 libtifiles2-1.1.7_1
+libticables2.so.7 libticables2-1.3.5_1
+libticalcs2.so.12 libticalcs2-1.1.9_1
+libhtmlcxx.so.3 htmlcxx-0.86_1
+libcss_parser_pp.so.0 htmlcxx-0.86_1
+libcss_parser.so.0 htmlcxx-0.86_1
+libaom.so.2 libaom-2.0.0_1
+libre.so.1 re-2.0.1_1
+libtpms.so.0 libtpms-0.9.0_1
+libswtpm_libtpms.so.0 libswtpm-0.6.1_1
+libspandsp.so.2 spandsp-0.0.6_1
+libspa-alsa.so libspa-alsa-0.3.6_1
+libspa-audioconvert.so libspa-audioconvert-0.3.6_1
+libspa-audiomixer.so libspa-audiomixer-0.3.6_1
+libspa-bluez5.so libspa-bluetooth-0.3.6_1
+libspa-control.so libspa-control-0.3.6_1
+libspa-ffmpeg.so libspa-ffmpeg-0.3.6_1
+libspa-jack.so libspa-jack-0.3.6_1
+libspa-v4l2.so libspa-v4l2-0.3.6_1
+libspa-videoconvert.so libspa-videoconvert-0.3.6_1
+libspa-vulkan.so libspa-vulkan-0.3.6_1
+librem.so rem-0.5.3_1
+libshp.so.1 shapelib-1.4.1_1
+libantlr3c.so libantlr3c-3.4_1
+libbzrtp.so.0 bzrtp-1.0.6_1
+libbellesip.so.1 belle-sip-4.4.0_1
+libKF5EventViews.so.5 eventviews-21.08.3_1
+libKF5IncidenceEditor.so.5 incidenceeditor-21.08.3_1
+libmediastreamer.so.11 mediastreamer-4.4.0_1
+liblinphone.so.10 linphone-4.4.0_1
+liblinphone++.so.10 linphone-4.4.0_1
+libbelr.so.1 belr-0.1.3_1
+libbelcard.so.1 belcard-1.0.2_1
+libshaderc_shared.so.1 shaderc-2018.0_1
+libglslang.so glslang-6.2.2596_1
+libHLSL.so glslang-8.13.3743_1
+libSPIRV.so glslang-6.2.2596_1
+libmaxminddb.so.0 libmaxminddb-1.3.2_1
+libmysqlpp.so.3 mysql++-3.2.5_1
+libKF5Syndication.so.5 syndication-5.50.0_1
+liblqr-1.so.0 liblqr-0.4.2_1
+libmozjs-78.so.0 mozjs78-78.1.0_1
+libebur128.so.1 libebur128-1.2.4_1
+libgtksourceview-4.so.0 gtksourceview4-4.0.2_1
+libgtksourceview-5.so.0 gtksourceview5-5.2.0_1
+libwx_gtk3u_propgrid-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_qa-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_core-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_html-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_adv-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_richtext-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_xrc-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_webview-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_aui-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_media-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_ribbon-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_gl-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libwx_gtk3u_stc-3.0.so.0 wxWidgets-gtk3-3.0.4_1
+libtepl-6.so.0 tepl-6.00.0_1
+libnomacsCore.so.3 nomacs-3.10.2_4
+libaudit.so.1 libaudit-2.8.4_1
+libauparse.so.0 libauparse-2.8.4_1
+libOpenCL.so.1 ocl-icd-2.2.12_1
+liburiparser.so.1 uriparser-0.8.6_1
+libcpptest.so.1 cpptest-2.0.0_1
+libhandy-0.0.so.0 libhandy-0.0.3_1
+libhandy-1.so.0 libhandy1-0.90.0_1
+libadwaita-1.so.0 libadwaita-1.0.0alpha2_1
+libswitchboard-2.0.so.0 switchboard-2.3.2_1
+libcodecore.so.0 libio.elementary.code-3.0_1
+libio.elementary.music-core.so.0 libio.elementary.music-5.0_1
+libpantheon-files-core.so.6 libio.elementary.files-6.0.0_1
+libpantheon-files-widgets.so.6 libio.elementary.files-6.0.0_1
+libwlroots.so.9 wlroots0.14-0.14.1_1
+libwlroots.so.10 wlroots-0.15.0_1
+libbaseencode.so.1 libbaseencode-1.0.9_1
+libcotp.so.12 libcotp-1.2.1_1
+libunarr.so.1 libunarr-1.0.1_1
+libretro-gtk-1.so.0 retro-gtk-1.0.0_1
+libmanette-0.2.so.0 libmanette-0.2.1_1
+libfmt.so.8 fmt-8.0.1_1
+libelementary-calendar.so.0 libio.elementary.calendar-4.2.3_1
+libolm.so.3 olm-3.0.0_1
+libtls.so.22 libtls-3.4.1_1
+libxmlb.so.2 libxmlb-0.2.1_1
+libvoikko.so.1 libvoikko-4.2_1
+libfstrcmp.so.0 libfstrcmp-0.7.D001_1
+libUMP.so.3 libump-git-20181122_2
+libdri2.so.1 libdri2-git-20140317_2
+libpst.so.4 libpst-0.6.72_1
+libhamlib.so.4 hamlib-4.2_1
+libhamlib++.so.4 hamlib-4.2_1
+libnss_mdns_minimal.so.2 nss-mdns-0.14.1_1
+libnss_mdns4_minimal.so.2 nss-mdns-0.14.1_1
+libnss_mdns6_minimal.so.2 nss-mdns-0.14.1_1
+libnss_mdns.so.2 nss-mdns-0.14.1_1
+libnss_mdns4.so.2 nss-mdns-0.14.1_1
+libnss_mdns6.so.2 nss-mdns-0.14.1_1
+libSavitar.so.0 libSavitar-2.7.0_1
+libcsfml-audio.so.2.5 CSFML-2.5_1
+libcsfml-graphics.so.2.5 CSFML-2.5_1
+libcsfml-window.so.2.5 CSFML-2.5_1
+libcsfml-system.so.2.5 CSFML-2.5_1
+libcsfml-network.so.2.5 CSFML-2.5_1
+libtokyocabinet.so.9 tokyocabinet-1.4.48_1
+libdav1d.so.5 libdav1d4-0.8.1_1
+libdqlite.so.0 dqlite-0.2.1_1
+libwoff2common.so.1.0.2 libwoff2common1.0.2-1.0.2_1
+libwoff2enc.so.1.0.2 libwoff2enc1.0.2-1.0.2_1
+libwoff2dec.so.1.0.2 libwoff2dec1.0.2-1.0.2_1
+libcloudproviders.so.0 libcloudproviders-0.2.5_2
+libKF5KDEGames.so.7 libkdegames-18.08.3_1
+libKF5KDEGamesPrivate.so.7 libkdegames-21.04.0_1
+libidn2.so.0 libidn2-2.1.1_1
+libgmime-3.0.so.0 gmime3-3.2.3_1
+libgetdns.so.10 getdns-1.5.1_7
+libgetdns_ext_event.so.10 getdns-1.5.1_7
+libgetdns_ext_ev.so.10 getdns-1.5.1_7
+libgetdns_ext_uv.so.10 getdns-1.5.1_7
+libzck.so.1 zchunk-1.1.9_3
+librec.so.1 librec1-1.8_1
+libfixposix.so.3 libfixposix-0.4.3_1
+libgerv.so.1 gerbv-2.6.2_1
+libtexpdf.so.0 libtexpdf-0.9.5_1
+libupstart.so.1 libupstart-1.13.3_1
+librtas.so.2 librtas-2.0.2_1
+librtasevent.so.2 librtas-2.0.2_1
+libbroker.so.3 zeek-4.0.1_1
+libcaf_core.so.0.18.0 zeek-4.0.0_1
+libcaf_io.so.0.18.0 zeek-4.0.0_1
+libcaf_openssl.so.0.18.0 zeek-4.0.0_1
+libbinpac.so.0 zeek-3.2.4_2
+libllhttp.so.1 llhttp-1.0.1_1
+libpinyin.so.13 libpinyin-2.2.1_1
+libzhuyin.so.13 libzhuyin-2.6.0_3
+libuhd.so.4.0.0 uhd-4.0.0.0_1
+libeditline.so.1 editline-1.16.0_1
+libgnuradio-rds.so.1 gnuradio-rds-3.8.0_1
+libgnuradio-nrsc5-1.0.0git.so.0.0.0 gnuradio-nrsc5-1.0.0_1
+libvkd3d-utils.so.1 vkd3d-1.1_1
+libvkd3d-shader.so.1 vkd3d-1.3_1
+libvkd3d.so.1 vkd3d-1.1_1
+libgaminggear.so.0 libgaminggear-0.15.1_1
+libgaminggearfx.so.0 libgaminggear-0.15.1_1
+libgaminggearwidget.so.0 libgaminggear-0.15.1_1
+libopkg.so.1 libopkg-0.4.4_2
+libpkgconf.so.3 libpkgconf-1.8.0_1
+libkodiplatform.so.19.0 kodi-platform-20180302_1
+libQuotient.so.0.6 libQuotient-0.6.11_1
+libipset.so.13 libipset-7.9_1
+libmp3splt.so.0 libmp3splt-0.9.2_1
+libliquid.so.1 liquid-dsp-1.3.1_1
+libsnore-qt5.so.0.7 snorenotify-0.7.0_1
+libsnoresettings-qt5.so.0.7 snorenotify-0.7.0_1
+libTECkit.so.0 libteckit-2.5.8_1
+libTECkit_Compiler.so.0 libteckit-2.5.8_1
+libwf-config.so.1 wf-config-0.5.0_1
+libQt5Pas.so.1 qt5pas-2.6~beta_1
+libClp.so.1 libClp-1.16.11_1
+libCoinUtils.so.3 libClp-1.16.11_1
+libOsiClp.so.1 libClp-1.16.11_1
+libClpSolver.so.1 libClp-1.16.11_1
+libOsiCommonTests.so.1 libClp-1.16.11_1
+libOsi.so.1 libClp-1.16.11_1
+libOGDF.so libogdf-2018.03_1
+libCOIN.so libogdf-2018.03_1
+librocksdb.so.5 rocksdb-5.17.2_1
+libfrr.so.0 libfrr-6.0_1
+libkaccounts.so.2 kaccounts-integration-20.04.3_1
+libfrrospfapiclient.so.0 libfrrospfapiclient-6.0_1
+liborocos-kdl.so.1.4 orocos-kdl-1.4.0_1
+libibumad.so.3 rdma-core-22.1_1
+libibverbs.so.1 rdma-core-22.1_1
+librdmacm.so.1 rdma-core-22.1_1
+libdvdcss.so.2 libdvdcss-1.4.2_1
+libvalapanel.so.0 vala-panel-0.4.87_1
+libappmenu-gtk2-parser.so.0 appmenu-gtk-module-0.7.1_1
+libappmenu-gtk3-parser.so.0 appmenu-gtk3-module-0.7.1_1
+libqhttpengine.so.1 qhttpengine-1.0.1_1
+libqmdnsengine.so.0 qmdnsengine-0.1.0_1
+libyang.so.1 libyang-1.0r5_1
+libhtp.so.2 libhtp-0.5.30_1
+libgedit-41.so gedit-41.0_1
+libchewing.so.3 libchewing-0.5.1_1
+libdwarves.so.1 pahole-1.12_1
+libdwarves_emit.so.1 pahole-1.12_1
+libdwarves_reorganize.so.1 pahole-1.12_1
+libclthreads.so.2 clthreads-2.4.2_1
+libclxclient.so.3 clxclient-3.9.2_1
+libsecp256k1.so.0 libbitcoin-secp256k1-0.1.0.13_1
+libbitcoin.so.0 libbitcoin-system-3.5.0_1
+libbitcoin-protocol.so.0 libbitcoin-protocol-3.5.0_1
+libbitcoin-client.so.0 libbitcoin-client-3.5.0_1
+libbitcoin-network.so.0 libbitcoin-network-3.5.0_1
+libbitcoin-explorer.so.0 libbitcoin-explorer-3.5.0_1
+libltc.so.11 libltc-1.3.1_1
+libbitcoin-consensus.so.0 libbitcoin-consensus-3.5.0_1
+libbitcoin-database.so.0 libbitcoin-database-3.5.0_1
+libbitcoin-blockchain.so.0 libbitcoin-blockchain-3.5.0_1
+libbitcoin-node.so.0 libbitcoin-node-3.5.0_1
+libbitcoin-server.so.0 libbitcoin-server-3.5.0_1
+libvpd-2.2.so.2 libvpd-2.2.6_1
+libvpd_cxx-2.2.so.2 libvpd-2.2.6_1
+liblcf.so.0 liblcf-0.6.0_1
+liboblibs.so.0.1 oblibs-0.1.1.1_1
+libaal-1.0.so.7 libaal-1.0.7_1
+libaal-minimal.so.0 libaal-1.0.7_1
+libcli.so.1.9 libcli-1.9.8.4_1
+libaddress_sorting.so.18 grpc-1.39.0_1
+libgpr.so.18 grpc-1.39.0_1
+libgrpc++.so.1.39 grpc-1.39.0_1
+libgrpc++_alts.so.1.39 grpc-1.39.0_1
+libgrpc++_error_details.so.1.39 grpc-1.39.0_1
+libgrpc++_reflection.so.1.39 grpc-1.39.0_1
+libgrpc++_unsecure.so.1.39 grpc-1.39.0_1
+libgrpc.so.18 grpc-1.39.0_1
+libgrpc_plugin_support.so.1.39 grpc-1.39.0_1
+libgrpc_unsecure.so.18 grpc-1.39.0_1
+libgrpcpp_channelz.so.1.39 grpc-1.39.0_1
+libupb.so.18 grpc-1.39.0_1
+libircclient.so.1 libircclient-1.10_5
+libFAudio.so.0 FAudio-19.05_1
+libqaccessibilityclient-qt5.so.0 libqaccessibilityclient-0.4.0_1
+libnitrokey.so.3 libnitrokey-3.4.1_1
+libceres.so.2 ceres-solver-2.0.0_1
+libgraphene-1.0.so.0 graphene-1.8.2_1
+libflite.so.1 flite-2.1_1
+libflite_cmu_us_kal.so.1 flite-2.1_1
+libflite_usenglish.so.1 flite-2.1_1
+libflite_cmulex.so.1 flite-2.1_1
+libflite_cmu_us_kal16.so.1 flite-2.2_1
+libgtk-4.so.1 gtk4-4.0.0_1
+libmodule.so.5 libmodule-5.0.0_1
+libgnustep-gui.so.0.29 gnustep-gui-0.29.0_1
+libmhash.so.2 mhash-0.9.9.9_1
+librlottie.so.0 rlottie-0.0.20160709_1
+libdocopt.so.0 docopt.cpp-0.6.3_1
+libfstrm.so.0 fstrm-0.5.0_1
+libfreecell-solver.so.0 libfreecell-solver-5.10.0_1
+libknot.so.12 libknot-3.1.0_1
+libdnssec.so.8 libknot-3.0.0_1
+libzscanner.so.4 libknot-3.1.0_1
+libkres.so.9 knot-resolver-4.0.0_1
+libnsl.so.3 libnsl-2.0.0_1
+libbcc.so.0 bcc-0.10.0_1
+libbcc_bpf.so.0 bcc-0.10.0_1
+libde265.so.0 libde265-1.0.3_1
+libheif.so.1 libheif-1.4.0_1
+libuninameslist.so.1 libuninameslist-20190701_1
+libgambit.so.4 gambit-4.9.3_6
+liblog4cpp.so.5 log4cpp-1.1.3_1
+libnuspell.so.5 libnuspell-5.0.0_1
+liblog4c.so.3 log4c-1.2.4_1
+libqb.so.100 libqb-2.0.0_1
+libusbguard.so.1 usbguard-1.0.0_1
+libknet.so.1 libknet1-1.11_4
+libdrumstick-file.so.1 drumstick-1.1.2_1
+libdrumstick-alsa.so.1 drumstick-1.1.2_1
+libdrumstick-rt.so.1 drumstick-1.1.2_1
+libnozzle.so.1 libnozzle1-1.11_4
+libmygpo-qt5.so.1 libmygpo-qt-1.1.0_1
+libluv.so.1 libluv-1.30.1.0_1
+libarmadillo.so.9 armadillo-9.700.2_1
+libvarnishapi.so.2 libvarnishapi-6.3.0_1
+libicns.so.1 libicns-0.8.1_1
+librabbitmq.so.4 rabbitmq-c-0.10.0_2
+libuInputPlus.so.0 libuInputPlus-0.1.3_1
+libevdevPlus.so.0 libevdevPlus-0.1.0_1
+librte_lpm.so.2 dpdk-19.08_5
+librte_sched.so.3 dpdk-19.08_5
+librte_eal.so.11 dpdk-19.08_5
+librte_pci.so.1 dpdk-19.08_5
+librte_gro.so.1 dpdk-19.08_5
+librte_jobstats.so.1 dpdk-19.08_5
+librte_bpf.so.1 dpdk-19.08_5
+librte_ip_frag.so.1 dpdk-19.08_5
+librte_port.so.3 dpdk-19.08_5
+librte_latencystats.so.1 dpdk-19.08_5
+librte_pipeline.so.3 dpdk-19.08_5
+librte_distributor.so.1 dpdk-19.08_5
+librte_pmd_vmxnet3.so.1 dpdk-19.08_5
+librte_pmd_dpaa_sec.so.1 dpdk-19.08_5
+librte_common_octeontx.so.1 dpdk-19.08_5
+librte_pmd_iavf.so.1 dpdk-19.08_5
+librte_pmd_octeontx_event.so.1 dpdk-19.08_5
+librte_pmd_ring.so.2 dpdk-19.08_5
+librte_rawdev_skeleton.so.1 dpdk-19.08_5
+librte_pmd_qat.so.1 dpdk-19.08_5
+librte_pmd_hinic.so.1 dpdk-19.08_5
+librte_bus_vmbus.so.2 dpdk-19.08_5
+librte_pmd_null.so.2 dpdk-19.08_5
+librte_pmd_bbdev_null.so.1 dpdk-19.08_5
+librte_common_dpaax.so.1 dpdk-19.08_5
+librte_pmd_dpaa2_event.so.2 dpdk-19.08_5
+librte_pmd_bnxt.so.2 dpdk-19.08_5
+librte_bus_ifpga.so.2 dpdk-19.08_5
+librte_pmd_pcap.so.1 dpdk-19.08_5
+librte_pmd_kni.so.1 dpdk-19.08_5
+librte_pmd_enetc.so.1 dpdk-19.08_5
+librte_pmd_atlantic.so.1 dpdk-19.08_5
+librte_mempool_stack.so.1 dpdk-19.08_5
+librte_pmd_opdl_event.so.1 dpdk-19.08_5
+librte_rawdev_dpaa2_cmdif.so.2 dpdk-19.08_5
+librte_pmd_avp.so.1 dpdk-19.08_5
+librte_pmd_cxgbe.so.1 dpdk-19.08_5
+librte_pmd_crypto_scheduler.so.1 dpdk-19.08_5
+librte_pmd_openssl.so.1 dpdk-19.08_5
+librte_pmd_octeontx2_event.so.1 dpdk-19.08_5
+librte_pmd_sfc.so.1 dpdk-19.08_5
+librte_pmd_i40e.so.2 dpdk-19.08_5
+librte_pmd_e1000.so.1 dpdk-19.08_5
+librte_rawdev_octeontx2_dma.so.1 dpdk-19.08_5
+librte_rawdev_ioat.so.1 dpdk-19.08_5
+librte_pmd_dpaa2.so.2 dpdk-19.08_5
+librte_pmd_sw_event.so.1 dpdk-19.08_5
+librte_mempool_octeontx2.so.1 dpdk-19.08_5
+librte_pmd_bbdev_fpga_lte_fec.so.1 dpdk-19.08_5
+librte_rawdev_ntb.so.1 dpdk-19.08_5
+librte_pmd_memif.so.1 dpdk-19.08_5
+librte_pmd_dpaa2_sec.so.2 dpdk-19.08_5
+librte_pmd_failsafe.so.1 dpdk-19.08_5
+librte_pmd_thunderx.so.1 dpdk-19.08_5
+librte_pmd_octeontx.so.1 dpdk-19.08_5
+librte_pmd_dpaa.so.1 dpdk-19.08_5
+librte_pmd_caam_jr.so.1 dpdk-19.08_5
+librte_pmd_virtio.so.1 dpdk-19.08_5
+librte_pmd_octeontx_compress.so.1 dpdk-19.08_5
+librte_pmd_zlib.so.1 dpdk-19.08_5
+librte_bus_pci.so.2 dpdk-19.08_5
+librte_pmd_bond.so.2 dpdk-19.08_5
+librte_pmd_ice.so.1 dpdk-19.08_5
+librte_pmd_skeleton_event.so.1 dpdk-19.08_5
+librte_mempool_ring.so.1 dpdk-19.08_5
+librte_pmd_octeontx2.so.1 dpdk-19.08_5
+librte_mempool_octeontx.so.1 dpdk-19.08_5
+librte_pmd_ark.so.1 dpdk-19.08_5
+librte_pmd_null_crypto.so.1 dpdk-19.08_5
+librte_pmd_ena.so.1 dpdk-19.08_5
+librte_pmd_axgbe.so.1 dpdk-19.08_5
+librte_common_cpt.so.1 dpdk-19.08_5
+librte_pmd_af_packet.so.1 dpdk-19.08_5
+librte_pmd_vhost.so.2 dpdk-19.08_5
+librte_pmd_softnic.so.1 dpdk-19.08_5
+librte_pmd_nfp.so.1 dpdk-19.08_5
+librte_bus_fslmc.so.2 dpdk-19.08_5
+librte_bus_dpaa.so.2 dpdk-19.08_5
+librte_pmd_fm10k.so.1 dpdk-19.08_5
+librte_pmd_bbdev_turbo_sw.so.1 dpdk-19.08_5
+librte_mempool_dpaa2.so.2 dpdk-19.08_5
+librte_pmd_ipn3ke.so.1 dpdk-19.08_5
+librte_pmd_vdev_netvsc.so.1 dpdk-19.08_5
+librte_mempool_dpaa.so.1 dpdk-19.08_5
+librte_pmd_bnx2x.so.1 dpdk-19.08_5
+librte_pmd_enic.so.1 dpdk-19.08_5
+librte_pmd_ixgbe.so.2 dpdk-19.08_5
+librte_common_octeontx2.so.1 dpdk-19.08_5
+librte_pmd_liquidio.so.1 dpdk-19.08_5
+librte_pmd_netvsc.so.2 dpdk-19.08_5
+librte_mempool_bucket.so.1 dpdk-19.08_5
+librte_pmd_virtio_crypto.so.1 dpdk-19.08_5
+librte_pmd_ccp.so.1 dpdk-19.08_5
+librte_bus_vdev.so.2 dpdk-19.08_5
+librte_pmd_tap.so.1 dpdk-19.08_5
+librte_pmd_octeontx_crypto.so.1 dpdk-19.08_5
+librte_rawdev_dpaa2_qdma.so.2 dpdk-19.08_5
+librte_pmd_dsw_event.so.1 dpdk-19.08_5
+librte_pmd_dpaa_event.so.1 dpdk-19.08_5
+librte_pmd_ifc.so.1 dpdk-19.08_5
+librte_stack.so.1 dpdk-19.08_5
+librte_kvargs.so.1 dpdk-19.08_5
+librte_security.so.2 dpdk-19.08_5
+librte_bitratestats.so.2 dpdk-19.08_5
+librte_rcu.so.1 dpdk-19.08_5
+librte_gso.so.1 dpdk-19.08_5
+librte_efd.so.1 dpdk-19.08_5
+librte_cmdline.so.2 dpdk-19.08_5
+librte_telemetry.so.1 dpdk-19.08_5
+librte_pdump.so.3 dpdk-19.08_5
+librte_eventdev.so.7 dpdk-19.08_5
+librte_vhost.so.4 dpdk-19.08_5
+librte_net.so.1 dpdk-19.08_5
+librte_meter.so.3 dpdk-19.08_5
+librte_acl.so.2 dpdk-19.08_5
+librte_mempool.so.5 dpdk-19.08_5
+librte_table.so.3 dpdk-19.08_5
+librte_power.so.1 dpdk-19.08_5
+librte_reorder.so.1 dpdk-19.08_5
+librte_ring.so.2 dpdk-19.08_5
+librte_ethdev.so.12 dpdk-19.08_5
+librte_bbdev.so.1 dpdk-19.08_5
+librte_ipsec.so.1 dpdk-19.08_5
+librte_timer.so.1 dpdk-19.08_5
+librte_cfgfile.so.2 dpdk-19.08_5
+librte_member.so.1 dpdk-19.08_5
+librte_compressdev.so.1 dpdk-19.08_5
+librte_mbuf.so.5 dpdk-19.08_5
+librte_hash.so.2 dpdk-19.08_5
+librte_flow_classify.so.1 dpdk-19.08_5
+librte_metrics.so.1 dpdk-19.08_5
+librte_cryptodev.so.8 dpdk-19.08_5
+librte_rawdev.so.1 dpdk-19.08_5
+librte_kni.so.2 dpdk-19.08_5
+libredwg.so.0 libredwg-0.9_1
+libgcj-tools.so.17 libgcj-6.5.0_1
+libgcj_bc.so.1 libgcj-6.5.0_1
+libgcj.so.17 libgcj-6.5.0_1
+libgij.so.17 libgcj-6.5.0_1
+libtty.so.1 libtermrec-0.18_1
+libtss2-mu.so.0 tpm2-tss-2.3.1_1
+libtss2-esys.so.0 tpm2-tss-2.3.1_1
+libtss2-sys.so.1 tpm2-tss-3.0.1_1
+libtss2-tcti-device.so.0 tpm2-tss-2.3.1_1
+libtss2-rc.so.0 tpm2-tss-2.3.1_1
+libtss2-tcti-mssim.so.0 tpm2-tss-2.3.1_1
+libtss2-tctildr.so.0 tpm2-tss-2.3.1_1
+libzfsbootenv.so.1 zfs-2.0.3_2
+libzfs.so.4 zfs-2.0.3_2
+libuutil.so.3 zfs-2.0.3_2
+libzpool.so.5 zfs-2.1.0_1
+libzfs_core.so.3 zfs-2.0.3_2
+libnvpair.so.3 zfs-2.0.3_2
+libgmio.so gmio-0.4.1_1
+libjsonnet.so.0 jsonnet-0.14.0_2
+libjsonnet++.so.0 jsonnet-0.14.0_2
+libigdgmm.so.11 intel-gmmlib-21.3.1_1
+libigfxcmrt.so.7 intel-media-driver-21.3.5_1
+libigdgmm.so.11 intel-gmmlib-19.4.1_1
+libigraph.so.0 igraph-0.9.4_1
+libgtk-layer-shell.so.0 gtk-layer-shell-0.1.0_1
+librdkafka.so.1 librdkafka-1.4.4_3
+librdkafka++.so.1 librdkafka-1.4.4_3
+libraft.so.0 raft-0.9.16_1
+libmdnsd.so.1 libmdnsd-0.9_1
+libosdGPU.so.3.4.3 OpenSubdiv-3.4.3_1
+libosdCPU.so.3.4.3 OpenSubdiv-3.4.3_1
+libdino.so.0 dino-0.1.0_1
+libxmpp-vala.so.0 dino-0.1.0_1
+libqlite.so.0 dino-0.1.0_1
+libmpir.so.23 mpir-3.0.0_1
+libmpirxx.so.8 mpir-3.0.0_1
+libcaribou.so.0 libcaribou-0.4.21_3
+libtinyclipboard.so.1 tinyclipboard-16.01_1
+libcbor.so.0.9 libcbor-0.9.0_1
+libfido2.so.1 libfido2-1.6.0_2
+libjanet.so.1.21 janet-1.21.1_1
+libOpenImageDenoise.so.1 openimagedenoise-1.3.0_1
+libcbang0.so cbang-1.6.0_3
+libblosc.so.1 c-blosc-1.17.1_1
+libopenvdb.so.9.0 openvdb-9.0.0_1
+libAlembic.so.1.7 alembic-1.7.13_1
+libmodsecurity.so.3 modsecurity-3.0.4_1
+libraven.so.0 budgie-desktop-10.5.1_1
+libbudgie-private.so.0 budgie-desktop-10.5.1_1
+libbudgietheme.so.0 budgie-desktop-10.5.1_1
+libbudgie-plugin.so.0 budgie-desktop-10.5.1_1
+libslirp.so.0 libslirp-4.2.0_1
+libqpdf.so.28 libqpdf-10.0.0_1
+libstk-4.6.1.so libstk-4.6.1_1
+libc++utilities.so.5 cpp-utilities-5.2.0_1
+libtagparser.so.11 tagparser-11.0.0_1
+libqtutilities.so.6 qtutilities-6.0.4_1
+libkdsoap.so.2 KDSoap-2.0.0_1
+libkdsoap-server.so.2 KDSoap-2.0.0_1
+libstoken.so.1 stoken-0.92_1
+libjpegxr.so.0 jxrlib-0.2.2_1
+libjxrglue.so.0 jxrlib-0.2.2_1
+libhidrd_util.so.0 hidrd-0.2.0_1
+libhidrd_usage.so.0 hidrd-0.2.0_1
+libhidrd_item.so.0 hidrd-0.2.0_1
+libhidrd_opt.so.0 hidrd-0.2.0_1
+libhidrd_strm.so.0 hidrd-0.2.0_1
+libhidrd_fmt.so.0 hidrd-0.2.0_1
+libjcat.so.1 libjcat-0.1.2_1
+libmatio.so.9 matio-1.5.17_2
+libportal.so.0 libportal-0.3_1
+libvips.so.42 libvips-8.9.2_1
+libvips-cpp.so.42 libvips-8.9.2_1
+libselinux.so.1 libselinux-3.0_1
+libsepol.so.1 libsepol-3.0_1
+libfrrcares.so.0 libfrr-7.3.1_1
+libhugetlbfs.so.0 libhugetlbfs-2.22_1
+libmonocypher.so.3 monocypher-3.1.1_1
+libkpathsea.so.6 texlive-20200406_1
+libtexluajit.so.2 texlive-LuaTeX-20200406_1
+libtexlua53.so.5 texlive-LuaTeX-20200406_1
+libptexenc.so.1 texlive-20200406_1
+libsynctex.so.2 libsynctex-20200406_3
+libdolphinvcs.so.5 dolphin-20.04.3_1
+libocl.so.2019.07 opencamlib-2019.07_1
+libcglm.so.0 cglm-0.7.6_1
+libfcft.so.4 fcft-3.0.1_1
+libaml.so.0 aml-0.1.0_1
+libneatvnc.so.0 neatvnc-0.3.2_1
+libtdjson.so.1.8.0 libtd-1.8.0_1
+libJudy.so.1 judy-1.0.5_1
+libsignal-protocol-c.so.2 libsignal-protocol-c-2.3.3_2
+libKSeExprUI.so.4 seexpr-krita-4.0.4.0_1
+libKSeExpr.so.4 seexpr-krita-4.0.4.0_1
+libkritaqmicinterface.so.17 krita-5.0.0_1
+liburing.so.2 liburing-2.0_1
+libbson-1.0.so.0 libbson-1.17.4_2
+libsonic.so.0 libsonic-0.2.0_1
+libtickit.so.3 libtickit-0.4.1_1
+libnotcurses.so.3 notcurses-3.0.5_1
+libnotcurses-core.so.3 notcurses-3.0.5_1
+libnotcurses++.so.3 notcurses-3.0.5_1
+libnotcurses-ffi.so.3 notcurses-3.0.5_1
+libevemu.so.3 evemu-2.7.0_1
+libantilib.so.1 libantimicrox-3.1.2_1
+libinih.so.0 inih-52_1
+libpcaudio.so.0 pcaudiolib-1.1_1
+libdcerpc-samr.so.0 samba-4.13.2_1
+libdcerpc-server-core.so.0 samba-4.13.2_1
+libnetapi.so.0 samba-4.13.2_1
+libnss_winbind.so.2 samba-4.13.2_1
+libnss_wins.so.2 samba-4.13.2_1
+libsamba-policy.so.0 samba-4.13.2_1
+libauth-unix-token-samba4.so samba-4.13.2_1
+libauth4-samba4.so samba-4.13.3_1
+libdcerpc-samba4.so samba-4.13.2_1
+libdsdb-module-samba4.so samba-4.13.2_1
+libgpext-samba4.so samba-4.13.2_1
+libnet-keytab-samba4.so samba-4.13.3_1
+libposix-eadb-samba4.so samba-4.13.2_1
+libprinting-migrate-samba4.so samba-4.13.2_1
+libsamba-net-samba4.so samba-4.13.2_1
+libsamba-python-samba4.so samba-4.13.3_1
+libshares-samba4.so samba-4.13.2_1
+libsmbd-base-samba4.so samba-4.13.2_1
+libsmbd-conn-samba4.so samba-4.13.2_1
+libsmbpasswordparser-samba4.so samba-4.13.3_1
+libxattr-tdb-samba4.so samba-4.13.2_1
+libdcerpc.so.0 samba-libs-4.13.2_1
+libdcerpc-binding.so.0 samba-libs-4.13.2_1
+libndr-krb5pac.so.0 samba-libs-4.13.2_1
+libndr-nbt.so.0 samba-libs-4.13.2_1
+libndr-standard.so.0 samba-libs-4.13.2_1
+libndr.so.1 samba-libs-4.13.2_1
+libsamba-credentials.so.1 samba-libs-4.13.2_1
+libsamba-errors.so.1 samba-libs-4.13.2_1
+libsamba-hostconfig.so.0 samba-libs-4.13.2_1
+libsamba-passdb.so.0 samba-libs-4.13.2_1
+libsamba-util.so.0 samba-libs-4.13.2_1
+libsamdb.so.0 samba-libs-4.13.2_1
+libsmbclient.so.0 samba-libs-4.13.2_1
+libsmbconf.so.0 samba-libs-4.13.2_1
+libsmbldap.so.2 samba-libs-4.13.2_1
+libwbclient.so.0 samba-libs-4.13.2_1
+libcli-ldap-samba4.so samba-libs-4.13.2_1
+libcliauth-samba4.so samba-libs-4.13.2_1
+libcluster-samba4.so samba-libs-4.13.3_1
+libcommon-auth-samba4.so samba-libs-4.13.2_1
+libdcerpc-samba-samba4.so samba-libs-4.13.2_1
+libflag-mapping-samba4.so samba-libs-4.13.3_1
+libgpo-samba4.so samba-libs-4.13.2_1
+libiov-buf-samba4.so samba-libs-4.13.3_1
+libndr-samba-samba4.so samba-libs-4.13.2_1
+libndr-samba4.so samba-libs-4.13.2_1
+libprinter-driver-samba4.so samba-libs-4.13.3_1
+libsmb-transport-samba4.so samba-libs-4.13.2_1
+libtdb-wrap-samba4.so samba-libs-4.13.3_1
+libutil-cmdline-samba4.so samba-libs-4.13.2_1
+libwinbind-client-samba4.so samba-libs-4.13.2_1
+libsixel.so.1 libsixel-1.8.6_1
+libpamtest.so.0 pam_wrapper-1.1.3_1
+libopenaptx.so.0 libopenaptx-0.2.0_1
+libsimavr.so.1 simavr-1.6_2
+libsimavrparts.so.1 simavr-1.6_2
+libsword-1.8.1.so libsword-1.8.1_6
+libgivaro.so.9 givaro-4.1.1_1
+liblinbox.so.0 linbox-1.6.3_1
+libpari-gmp.so.7 pari-2.13.0_1
+libpari-gmp-tls.so.7 pari-2.13.2_1
+libtree-sitter.so.0 tree-sitter-0.19.0_1
+libplanarity.so.0 planarity-3.0.1.1_1
+libgap.so.0 gap-4.11.1_1
+libgtkdatabox.so.1 gtkdatabox3-1.0.0_1
+libxcvt.so.0 libxcvt-0.1.1_1
+libgf2x.so.3 gf2x-1.3.0_1
+libntl.so.44 ntl-11.5.1_1
+libflint.so.16 flintlib-2.8.0_1
+libarb.so.2 arb-2.20.0_1
+libec.so.8 eclib-20210625_1
+libsymmetrica.so.2 symmetrica-3.0.1_1
+libLfunction.so.1 lcalc-2.0.4_1
+liblrcalc.so.2 lrcalc-2.1_1
+libwayland-client++.so.0 libwaylandpp-0.2.8_1
+libwayland-cursor++.so.0 libwaylandpp-0.2.8_1
+libwayland-egl++.so.0 libwaylandpp-0.2.8_1
+libwayland-client-extra++.so.0 libwaylandpp-0.2.8_1
+libspdlog.so.1 libspdlog-1.8.2_2
+libmd.so.0 libmd-1.0.3_1
+libldacBT_abr.so.2 ldacBT-2.0.2.3_1
+libldacBT_enc.so.2 ldacBT-2.0.2.3_1
+libfreeaptx.so.0 libfreeaptx-0.1.1_1
+libgumbo.so.1 gumbo-parser-0.10.1_2
+libmariadb.so.3 libmariadbclient-10.5.9_1
+libmariadbd.so.19 libmariadbclient-10.5.9_1
+libinstpatch-1.0.so.2 libinstpatch-1.1.6_1
+libbasu.so.0 basu-0.2.0_1
+libhomfly.so.0 libhomfly-1.02r6_1
+libXcomp.so.3 nx-libs-3.5.99.24_1
+libXcompshad.so.3 nx-libs-3.5.99.24_1
+libNX_X11.so.6 nx-libs-3.5.99.24_1
+librnnoise.so.0 rnnoise-0.4.1_1
+liblhasa.so.0 lhasa-0.3.1_2
+libmt32emu.so.2 libmt32emu-2.5.1_1
+libqrtr-glib.so.0 libqrtr-glib-1.0.0_1
+libbraiding.so.0 libbraiding-1.1_1
+libstemmer.so.2 libstemmer-2.1.0_1
+libdecor-0.so.0 libdecor-0.1.0_1
+libprimecount.so.7 primecount-7.2_1
+libprimesieve.so.9 primesieve-7.7_1
+libavif.so.13 libavif-0.9.3_1
+libkdumpfile.so.9 libkdumpfile-0.4.1_1
+libamd.so.2 SuiteSparse-5.10.1_1
+libcholmod.so.3 SuiteSparse-5.10.1_1
+libumfpack.so.5 SuiteSparse-5.10.1_1
+libecl.so.21.2 ecl-21.2.1_1
+libecm.so.1 ecm-7.0.4_3
+libcliquer.so.1 cliquer-1.22_1
+libSingular-4.3.0.so singular-4.3.0_1
+libfactory-4.3.0.so singular-4.3.0_1
+libpolys-4.3.0.so singular-4.3.0_1
+libomalloc-0.9.6.so singular-4.3.0_1
+libsingular_resources-4.3.0.so singular-4.3.0_1
+libbrial.so.3 brial-1.2.10_1
+libbrial_groebner.so.3 brial-1.2.10_1
+libm4ri-0.0.20200125.so m4ri-20200125_1
+libm4rie-0.0.20200125.so m4rie-20200125_1
+libptytty.so.0 libptytty-2.0_1
+libcoeurl.so.0 coeurl-0.1.0_1
+libKPimPkPass.so.5 kpkpass-21.08.3_1
+libphonenumber.so.8 libphonenumber-8.12.38_1
+libgeocoding.so.8 libphonenumber-8.12.38_1
+libKPimItinerary.so.5 kitinerary-21.08.3_1
+libKPimAddressbookImportExport.so.5 kaddressbook-21.08.3_1
+libKPimImportWizard.so.5 akonadi-import-wizard-21.08.3_1
+libadblocklibprivate.so.5 kdepim-addons-21.08.3_1
+libdkimverifyconfigure.so.5 kdepim-addons-21.08.3_1
+libexpireaccounttrashfolderconfig.so.5 kdepim-addons-21.08.3_1
+libfolderconfiguresettings.so.5 kdepim-addons-21.08.3_1
+libshorturlpluginprivate.so.5 kdepim-addons-21.08.3_1
+libkmailquicktextpluginprivate.so.5 kdepim-addons-21.08.3_1
+libkmailmarkdown.so.5 kdepim-addons-21.08.3_1
+libgrammarcommon.so.5 kdepim-addons-21.08.3_1
+libkmailgrammalecte.so.5 kdepim-addons-21.08.3_1
+libkmaillanguagetool.so.5 kdepim-addons-21.08.3_1
+libkaddressbookmergelibprivate.so.5 kdepim-addons-21.08.3_1
+libkmailconfirmbeforedeleting.so.5 kdepim-addons-21.08.3_1
+libkaddressbookprivate.so.5 kaddressbook-21.08.3_1
+libcodec2.so.1.0 codec2-1.0.1_1
+libx86emu.so.3 libx86emu-3.4_1
+libdeflate.so.0 libdeflate-1.8_1
+libjawt.so openjdk17-jre-17.0.1+12_1
+libawt.so openjdk17-jre-17.0.1+12_1
+libawt_xawt.so openjdk17-jre-17.0.1+12_1
+libjava.so openjdk17-jre-17.0.1+12_1
+libjli.so openjdk17-jre-17.0.1+12_1
+libjvm.so openjdk17-jre-17.0.1+12_1
+librttopo.so.1 librttopo-1.1.0_1
+libspatialite.so.7 libspatialite-5.0.1_1
+mod_spatialite.so.7 libspatialite-5.0.1_1
+libSvtAv1Enc.so.0 libsvt-av1-0.9.0_1
+libSvtAv1Dec.so.0 libsvt-av1-0.9.0_1
+librz_bp.so.0.3.4 rizin-0.3.4_1
+librz_reg.so.0.3.4 rizin-0.3.4_1
+librz_debug.so.0.3.4 rizin-0.3.4_1
+librz_hash.so.0.3.4 rizin-0.3.4_1
+librz_config.so.0.3.4 rizin-0.3.4_1
+librz_parse.so.0.3.4 rizin-0.3.4_1
+librz_asm.so.0.3.4 rizin-0.3.4_1
+librz_type.so.0.3.4 rizin-0.3.4_1
+librz_socket.so.0.3.4 rizin-0.3.4_1
+librz_egg.so.0.3.4 rizin-0.3.4_1
+librz_core.so.0.3.4 rizin-0.3.4_1
+librz_diff.so.0.3.4 rizin-0.3.4_1
+librz_main.so.0.3.4 rizin-0.3.4_1
+librz_cons.so.0.3.4 rizin-0.3.4_1
+librz_crypto.so.0.3.4 rizin-0.3.4_1
+librz_analysis.so.0.3.4 rizin-0.3.4_1
+librz_syscall.so.0.3.4 rizin-0.3.4_1
+librz_io.so.0.3.4 rizin-0.3.4_1
+librz_flag.so.0.3.4 rizin-0.3.4_1
+librz_magic.so.0.3.4 rizin-0.3.4_1
+librz_util.so.0.3.4 rizin-0.3.4_1
+librz_lang.so.0.3.4 rizin-0.3.4_1
+librz_search.so.0.3.4 rizin-0.3.4_1
+librz_bin.so.0.3.4 rizin-0.3.4_1
+libaravis-0.8.so.0 libaravis-0.8.21_1
+libLimeSuite.so.20.10-1 LimeSuite-20.10.0_1
diff --git a/common/travis/build.sh b/common/travis/build.sh
new file mode 100755
index 0000000..f5cf9cf
--- /dev/null
+++ b/common/travis/build.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# build.sh
+
+if [ "$1" != "$2" ]; then
+	arch="-a $2"
+fi
+
+if [ "$3" = 1 ]; then
+	test="-Q"
+fi
+
+PKGS=$(/hostrepo/xbps-src sort-dependencies $(cat /tmp/templates))
+
+for pkg in ${PKGS}; do
+	/hostrepo/xbps-src -j$(nproc) -H "$HOME"/hostdir $arch $test pkg "$pkg"
+	[ $? -eq 1 ] && exit 1
+done
+
+exit 0
diff --git a/common/travis/changed_templates.sh b/common/travis/changed_templates.sh
new file mode 100755
index 0000000..686436c
--- /dev/null
+++ b/common/travis/changed_templates.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# changed_templates.sh
+
+if command -v chroot-git >/dev/null 2>&1; then
+	GIT_CMD=$(command -v chroot-git)
+elif command -v git >/dev/null 2>&1; then
+	GIT_CMD=$(command -v git)
+fi
+
+tip="$($GIT_CMD rev-list -1 --parents HEAD)"
+case "$tip" in
+	*" "*" "*) tip="${tip##* }" ;;
+	*)         tip="${tip%% *}" ;;
+esac
+
+base="$($GIT_CMD merge-base FETCH_HEAD "$tip")" || {
+	echo "Your branches is based on too old copy."
+	echo "Please rebase to newest copy."
+	exit 1
+}
+
+echo "$base $tip" >/tmp/revisions
+
+/bin/echo -e '\x1b[32mChanged packages:\x1b[0m'
+$GIT_CMD diff-tree -r --no-renames --name-only --diff-filter=AM \
+	"$base" "$tip" \
+	-- 'srcpkgs/*/template' |
+	cut -d/ -f 2 |
+	tee /tmp/templates |
+	sed "s/^/  /" >&2
diff --git a/common/travis/check-install.sh b/common/travis/check-install.sh
new file mode 100755
index 0000000..d972567
--- /dev/null
+++ b/common/travis/check-install.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# check-install.sh
+
+export XBPS_TARGET_ARCH="$2" XBPS_DISTDIR=/hostrepo
+
+if [ "$1" != "$XBPS_TARGET_ARCH" ]; then
+	triplet="$(/hostrepo/xbps-src -a "$XBPS_TARGET_ARCH" show-var XBPS_CROSS_TRIPLET)"
+	ROOTDIR="-r /usr/$triplet"
+fi
+
+ADDREPO="--repository=$HOME/hostdir/binpkgs --repository=$HOME/hostdir/binpkgs/nonfree"
+
+while read -r pkg; do
+	for subpkg in $(xsubpkg $pkg); do
+		/bin/echo -e "\x1b[32mTrying to install dependants of $subpkg:\x1b[0m"
+		for dep in $(xbps-query $ADDREPO -RX "$subpkg"); do
+			xbps-install \
+				$ROOTDIR $ADDREPO \
+				-Sny \
+				"$subpkg" "$(xbps-uhelper getpkgname "$dep")"
+			if [ $? -eq 8 ]; then
+				/bin/echo -e "\x1b[31mFailed to install '$subpkg' and '$dep'\x1b[0m"
+				exit 1
+			fi
+		done
+	done
+done < /tmp/templates
diff --git a/common/travis/fetch-xbps.sh b/common/travis/fetch-xbps.sh
new file mode 100755
index 0000000..5a4e458
--- /dev/null
+++ b/common/travis/fetch-xbps.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# fetch-xbps.sh
+
+command -v xbps-uhelper >/dev/null && exit
+TAR=tar
+command -v bsdtar >/dev/null && TAR=bsdtar
+ARCH=$(uname -m)-musl
+VERSION=0.59_5
+URL="https://alpha.de.repo.voidlinux.org/static/xbps-static-static-${VERSION}.${ARCH}.tar.xz"
+FILE=${URL##*/}
+
+mkdir -p /tmp/bin
+
+/bin/echo -e '\x1b[32mInstalling xbps...\x1b[0m'
+if command -v wget >/dev/null; then
+	wget -q -O "$FILE" "$URL" || exit 1
+else
+	curl -s -o "$FILE" "$URL" || exit 1
+fi
+
+$TAR xf "$FILE" -C /tmp/bin --strip-components=3 ./usr/bin || exit 1
diff --git a/common/travis/fetch-xtools.sh b/common/travis/fetch-xtools.sh
new file mode 100755
index 0000000..0dd9e6c
--- /dev/null
+++ b/common/travis/fetch-xtools.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# fetch-xtools.sh
+
+TAR=tar
+command -v bsdtar >/dev/null && TAR=bsdtar
+URL="https://github.com/leahneukirchen/xtools/archive/master.tar.gz"
+FILE="xtools.tar.gz"
+
+mkdir -p /tmp/bin
+
+/bin/echo -e '\x1b[32mInstalling xtools...\x1b[0m'
+if command -v wget >/dev/null; then
+	wget -q -O "$FILE" "$URL" || exit 1
+else
+	xbps-fetch -o "$FILE" "$URL" || exit 1
+fi
+
+$TAR xf "$FILE" -C /tmp/bin --strip-components=1 || exit 1
diff --git a/common/travis/fetch_upstream.sh b/common/travis/fetch_upstream.sh
new file mode 100755
index 0000000..4531556
--- /dev/null
+++ b/common/travis/fetch_upstream.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# changed_templates.sh
+
+if command -v chroot-git >/dev/null 2>&1; then
+	GIT_CMD=$(command -v chroot-git)
+elif command -v git >/dev/null 2>&1; then
+	GIT_CMD=$(command -v git)
+fi
+
+/bin/echo -e '\x1b[32mFetching upstream...\x1b[0m'
+$GIT_CMD fetch --depth 200 https://github.com/void-linux/void-packages.git master
diff --git a/common/travis/license.lst b/common/travis/license.lst
new file mode 100644
index 0000000..78c4cb1
--- /dev/null
+++ b/common/travis/license.lst
@@ -0,0 +1,525 @@
+0BSD
+389-exception
+AAL
+ADSL
+AFL-1.1
+AFL-1.2
+AFL-2.0
+AFL-2.1
+AFL-3.0
+AGPL-1.0-only
+AGPL-1.0-or-later
+AGPL-3.0-only
+AGPL-3.0-or-later
+AMDPLPA
+AML
+AMPAS
+ANTLR-PD-fallback
+ANTLR-PD
+APAFML
+APL-1.0
+APSL-1.0
+APSL-1.1
+APSL-1.2
+APSL-2.0
+Abstyles
+Adobe-2006
+Adobe-Glyph
+Afmparse
+Aladdin
+Apache-1.0
+Apache-1.1
+Apache-2.0
+App-s2p
+Artistic-1.0-Perl
+Artistic-1.0-cl8
+Artistic-1.0
+Artistic-2.0
+Autoconf-exception-2.0
+Autoconf-exception-3.0
+BSD-1-Clause
+BSD-2-Clause-Patent
+BSD-2-Clause-Views
+BSD-2-Clause
+BSD-3-Clause-Attribution
+BSD-3-Clause-Clear
+BSD-3-Clause-LBNL
+BSD-3-Clause-Modification
+BSD-3-Clause-No-Military-License
+BSD-3-Clause-No-Nuclear-License-2014
+BSD-3-Clause-No-Nuclear-License
+BSD-3-Clause-No-Nuclear-Warranty
+BSD-3-Clause-Open-MPI
+BSD-3-Clause
+BSD-4-Clause-Shortened
+BSD-4-Clause-UC
+BSD-4-Clause
+BSD-Protection
+BSD-Source-Code
+BSL-1.0
+BUSL-1.1
+Bahyph
+Barr
+Beerware
+Bison-exception-2.2
+BitTorrent-1.0
+BitTorrent-1.1
+BlueOak-1.0.0
+Bootloader-exception
+Borceux
+C-UDA-1.0
+CAL-1.0-Combined-Work-Exception
+CAL-1.0
+CATOSL-1.1
+CC-BY-1.0
+CC-BY-2.0
+CC-BY-2.5-AU
+CC-BY-2.5
+CC-BY-3.0-AT
+CC-BY-3.0-DE
+CC-BY-3.0-NL
+CC-BY-3.0-US
+CC-BY-3.0
+CC-BY-4.0
+CC-BY-NC-1.0
+CC-BY-NC-2.0
+CC-BY-NC-2.5
+CC-BY-NC-3.0-DE
+CC-BY-NC-3.0
+CC-BY-NC-4.0
+CC-BY-NC-ND-1.0
+CC-BY-NC-ND-2.0
+CC-BY-NC-ND-2.5
+CC-BY-NC-ND-3.0-DE
+CC-BY-NC-ND-3.0-IGO
+CC-BY-NC-ND-3.0
+CC-BY-NC-ND-4.0
+CC-BY-NC-SA-1.0
+CC-BY-NC-SA-2.0-FR
+CC-BY-NC-SA-2.0-UK
+CC-BY-NC-SA-2.0
+CC-BY-NC-SA-2.5
+CC-BY-NC-SA-3.0-DE
+CC-BY-NC-SA-3.0-IGO
+CC-BY-NC-SA-3.0
+CC-BY-NC-SA-4.0
+CC-BY-ND-1.0
+CC-BY-ND-2.0
+CC-BY-ND-2.5
+CC-BY-ND-3.0-DE
+CC-BY-ND-3.0
+CC-BY-ND-4.0
+CC-BY-SA-1.0
+CC-BY-SA-2.0-UK
+CC-BY-SA-2.0
+CC-BY-SA-2.1-JP
+CC-BY-SA-2.5
+CC-BY-SA-3.0-AT
+CC-BY-SA-3.0-DE
+CC-BY-SA-3.0
+CC-BY-SA-4.0
+CC-PDDC
+CC0-1.0
+CDDL-1.0
+CDDL-1.1
+CDL-1.0
+CDLA-Permissive-1.0
+CDLA-Permissive-2.0
+CDLA-Sharing-1.0
+CECILL-1.0
+CECILL-1.1
+CECILL-2.0
+CECILL-2.1
+CECILL-B
+CECILL-C
+CERN-OHL-1.1
+CERN-OHL-1.2
+CERN-OHL-P-2.0
+CERN-OHL-S-2.0
+CERN-OHL-W-2.0
+CLISP-exception-2.0
+CNRI-Jython
+CNRI-Python-GPL-Compatible
+CNRI-Python
+COIL-1.0
+CPAL-1.0
+CPL-1.0
+CPOL-1.02
+CUA-OPL-1.0
+Caldera
+ClArtistic
+Classpath-exception-2.0
+Community-Spec-1.0
+Condor-1.1
+Crossword
+CrystalStacker
+Cube
+D-FSL-1.0
+DL-DE-BY-2.0
+DOC
+DRL-1.0
+DSDP
+DigiRule-FOSS-exception
+Dotseqn
+ECL-1.0
+ECL-2.0
+EFL-1.0
+EFL-2.0
+EPICS
+EPL-1.0
+EPL-2.0
+EUDatagrid
+EUPL-1.0
+EUPL-1.1
+EUPL-1.2
+Elastic-2.0
+Entessa
+ErlPL-1.1
+Eurosym
+FDK-AAC
+FLTK-exception
+FSFAP
+FSFUL
+FSFULLR
+FTL
+Fair
+Fawkes-Runtime-exception
+Font-exception-2.0
+Frameworx-1.0
+FreeBSD-DOC
+FreeImage
+GCC-exception-2.0
+GCC-exception-3.1
+GD
+GFDL-1.1-invariants-only
+GFDL-1.1-invariants-or-later
+GFDL-1.1-no-invariants-only
+GFDL-1.1-no-invariants-or-later
+GFDL-1.1-only
+GFDL-1.1-or-later
+GFDL-1.2-invariants-only
+GFDL-1.2-invariants-or-later
+GFDL-1.2-no-invariants-only
+GFDL-1.2-no-invariants-or-later
+GFDL-1.2-only
+GFDL-1.2-or-later
+GFDL-1.3-invariants-only
+GFDL-1.3-invariants-or-later
+GFDL-1.3-no-invariants-only
+GFDL-1.3-no-invariants-or-later
+GFDL-1.3-only
+GFDL-1.3-or-later
+GL2PS
+GLWTPL
+GPL-1.0-only
+GPL-1.0-or-later
+GPL-2.0-only
+GPL-2.0-or-later
+GPL-3.0-linking-exception
+GPL-3.0-linking-source-exception
+GPL-3.0-only
+GPL-3.0-or-later
+GPL-CC-1.0
+Giftware
+Glide
+Glulxe
+HPND-sell-variant
+HPND
+HTMLTIDY
+HaskellReport
+Hippocratic-2.1
+IBM-pibs
+ICU
+IJG
+IPA
+IPL-1.0
+ISC
+ImageMagick
+Imlib2
+Info-ZIP
+Intel-ACPI
+Intel
+Interbase-1.0
+JPNIC
+JSON
+Jam
+JasPer-2.0
+LAL-1.2
+LAL-1.3
+LGPL-2.0-only
+LGPL-2.0-or-later
+LGPL-2.1-only
+LGPL-2.1-or-later
+LGPL-3.0-linking-exception
+LGPL-3.0-only
+LGPL-3.0-or-later
+LGPLLR
+LLVM-exception
+LPL-1.0
+LPL-1.02
+LPPL-1.0
+LPPL-1.1
+LPPL-1.2
+LPPL-1.3a
+LPPL-1.3c
+LZMA-exception
+Latex2e
+Leptonica
+LiLiQ-P-1.1
+LiLiQ-R-1.1
+LiLiQ-Rplus-1.1
+Libpng
+Libtool-exception
+Linux-OpenIB
+Linux-man-pages-copyleft
+Linux-syscall-note
+MIT-0
+MIT-CMU
+MIT-Modern-Variant
+MIT-advertising
+MIT-enna
+MIT-feh
+MIT-open-group
+MIT
+MITNFA
+MPL-1.0
+MPL-1.1
+MPL-2.0-no-copyleft-exception
+MPL-2.0
+MS-PL
+MS-RL
+MTLL
+MakeIndex
+MirOS
+Motosoto
+MulanPSL-1.0
+MulanPSL-2.0
+Multics
+Mup
+NAIST-2003
+NASA-1.3
+NBPL-1.0
+NCGL-UK-2.0
+NCSA
+NGPL
+NIST-PD-fallback
+NIST-PD
+NLOD-1.0
+NLOD-2.0
+NLPL
+NOSL
+NPL-1.0
+NPL-1.1
+NPOSL-3.0
+NRL
+NTP-0
+NTP
+Naumen
+Net-SNMP
+NetCDF
+Newsletr
+Nokia-Qt-exception-1.1
+Nokia
+Noweb
+O-UDA-1.0
+OCCT-PL
+OCCT-exception-1.0
+OCLC-2.0
+OCaml-LGPL-linking-exception
+ODC-By-1.0
+ODbL-1.0
+OFL-1.0-RFN
+OFL-1.0-no-RFN
+OFL-1.0
+OFL-1.1-RFN
+OFL-1.1-no-RFN
+OFL-1.1
+OGC-1.0
+OGDL-Taiwan-1.0
+OGL-Canada-2.0
+OGL-UK-1.0
+OGL-UK-2.0
+OGL-UK-3.0
+OGTSL
+OLDAP-1.1
+OLDAP-1.2
+OLDAP-1.3
+OLDAP-1.4
+OLDAP-2.0.1
+OLDAP-2.0
+OLDAP-2.1
+OLDAP-2.2.1
+OLDAP-2.2.2
+OLDAP-2.2
+OLDAP-2.3
+OLDAP-2.4
+OLDAP-2.5
+OLDAP-2.6
+OLDAP-2.7
+OLDAP-2.8
+OML
+OPL-1.0
+OPUBL-1.0
+OSET-PL-2.1
+OSL-1.0
+OSL-1.1
+OSL-2.0
+OSL-2.1
+OSL-3.0
+OpenJDK-assembly-exception-1.0
+OpenSSL
+PDDL-1.0
+PHP-3.0
+PHP-3.01
+PS-or-PDF-font-exception-20170817
+PSF-2.0
+Parity-6.0.0
+Parity-7.0.0
+Plexus
+PolyForm-Noncommercial-1.0.0
+PolyForm-Small-Business-1.0.0
+PostgreSQL
+Python-2.0
+QPL-1.0
+Qhull
+Qt-GPL-exception-1.0
+Qt-LGPL-exception-1.1
+Qwt-exception-1.0
+RHeCos-1.1
+RPL-1.1
+RPL-1.5
+RPSL-1.0
+RSA-MD
+RSCPL
+Rdisc
+Ruby
+SAX-PD
+SCEA
+SGI-B-1.0
+SGI-B-1.1
+SGI-B-2.0
+SHL-0.5
+SHL-0.51
+SHL-2.0
+SHL-2.1
+SISSL-1.2
+SISSL
+SMLNJ
+SMPPL
+SNIA
+SPL-1.0
+SSH-OpenSSH
+SSH-short
+SSPL-1.0
+SWL
+Saxpath
+SchemeReport
+Sendmail-8.23
+Sendmail
+SimPL-2.0
+Sleepycat
+Spencer-86
+Spencer-94
+Spencer-99
+SugarCRM-1.1.3
+Swift-exception
+TAPR-OHL-1.0
+TCL
+TCP-wrappers
+TMate
+TORQUE-1.1
+TOSL
+TU-Berlin-1.0
+TU-Berlin-2.0
+UCL-1.0
+UPL-1.0
+Unicode-DFS-2015
+Unicode-DFS-2016
+Unicode-TOU
+Universal-FOSS-exception-1.0
+Unlicense
+VOSTROM
+VSL-1.0
+Vim
+W3C-19980720
+W3C-20150513
+W3C
+WTFPL
+Watcom-1.0
+Wsuipa
+WxWindows-exception-3.1
+X11-distribute-modifications-variant
+X11
+XFree86-1.1
+XSkat
+Xerox
+Xnet
+YPL-1.0
+YPL-1.1
+ZPL-1.1
+ZPL-2.0
+ZPL-2.1
+Zed
+Zend-2.0
+Zimbra-1.3
+Zimbra-1.4
+Zlib
+blessing
+bzip2-1.0.6
+copyleft-next-0.3.0
+copyleft-next-0.3.1
+curl
+deprecated_AGPL-1.0
+deprecated_AGPL-3.0
+deprecated_BSD-2-Clause-FreeBSD
+deprecated_BSD-2-Clause-NetBSD
+deprecated_GFDL-1.1
+deprecated_GFDL-1.2
+deprecated_GFDL-1.3
+deprecated_GPL-1.0+
+deprecated_GPL-1.0
+deprecated_GPL-2.0+
+deprecated_GPL-2.0-with-GCC-exception
+deprecated_GPL-2.0-with-autoconf-exception
+deprecated_GPL-2.0-with-bison-exception
+deprecated_GPL-2.0-with-classpath-exception
+deprecated_GPL-2.0-with-font-exception
+deprecated_GPL-2.0
+deprecated_GPL-3.0+
+deprecated_GPL-3.0-with-GCC-exception
+deprecated_GPL-3.0-with-autoconf-exception
+deprecated_GPL-3.0
+deprecated_LGPL-2.0+
+deprecated_LGPL-2.0
+deprecated_LGPL-2.1+
+deprecated_LGPL-2.1
+deprecated_LGPL-3.0+
+deprecated_LGPL-3.0
+deprecated_Nunit
+deprecated_StandardML-NJ
+deprecated_bzip2-1.0.5
+deprecated_eCos-2.0
+deprecated_wxWindows
+diffmark
+dvipdfm
+eCos-exception-2.0
+eGenix
+etalab-2.0
+freertos-exception-2.0
+gSOAP-1.3b
+gnu-javamail-exception
+gnuplot
+i2p-gpl-java-exception
+iMatix
+libpng-2.0
+libselinux-1.0
+libtiff
+mif-exception
+mpich2
+openvpn-openssl-exception
+psfrag
+psutils
+u-boot-exception-2.0
+xinetd
+xpp
+zlib-acknowledgement
diff --git a/common/travis/prepare.sh b/common/travis/prepare.sh
new file mode 100755
index 0000000..550fbd7
--- /dev/null
+++ b/common/travis/prepare.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+#
+# prepare.sh
+
+[ "$XLINT" ] && exit 0
+
+/bin/echo -e '\x1b[32mUpdating etc/conf...\x1b[0m'
+echo XBPS_BUILD_ENVIRONMENT=void-packages-ci >> etc/conf
+echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf
+
+/bin/echo -e '\x1b[32mEnabling ethereal chroot-style...\x1b[0m'
+echo XBPS_CHROOT_CMD=ethereal >> etc/conf
+echo XBPS_ALLOW_CHROOT_BREAKOUT=yes >> etc/conf
+
+/bin/echo -e '\x1b[32mLinking / to /masterdir...\x1b[0m'
+ln -s / masterdir
diff --git a/common/travis/set_mirror.sh b/common/travis/set_mirror.sh
new file mode 100755
index 0000000..a57ab20
--- /dev/null
+++ b/common/travis/set_mirror.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+TRAVIS_PROTO=http
+TRAVIS_MIRROR=repo-us.voidlinux.org
+
+for _i in etc/xbps.d/repos-remote*.conf ; do
+    /bin/echo -e "\x1b[32mUpdating $_i...\x1b[0m"
+    # First fix the proto, ideally we'd serve everything with HTTPS,
+    # but key management and rotation is a pain, and things are signed
+    # so we can afford to be a little lazy at times.
+    sed -i "s:https:$TRAVIS_PROTO:g" $_i
+
+    # Now set the mirror
+    sed -i "s:alpha\.de\.repo\.voidlinux\.org:$TRAVIS_MIRROR:g" $_i
+done
diff --git a/common/travis/show_files.sh b/common/travis/show_files.sh
new file mode 100755
index 0000000..8799ed5
--- /dev/null
+++ b/common/travis/show_files.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# show_files.sh
+
+export XBPS_TARGET_ARCH="$2" XBPS_DISTDIR=/hostrepo
+
+while read -r pkg; do
+	for subpkg in $(xsubpkg $pkg); do
+		/bin/echo -e "\x1b[32mFiles of $subpkg:\x1b[0m"
+		xbps-query --repository=$HOME/hostdir/binpkgs \
+				   --repository=$HOME/hostdir/binpkgs/nonfree \
+				   -i -f "$subpkg" ||
+					/bin/echo -e "\x1b[33m    $subpkg wasn't found\x1b[0m"
+	done
+done < /tmp/templates
diff --git a/common/travis/xlint.sh b/common/travis/xlint.sh
new file mode 100755
index 0000000..6b3d9e9
--- /dev/null
+++ b/common/travis/xlint.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# xlint.sh
+
+[ "$XLINT" ] || exit 0 
+
+EXITCODE=0
+read base tip < /tmp/revisions
+
+common/scripts/lint-commits $base $tip || EXITCODE=$?
+
+for t in $(awk '{ print "srcpkgs/" $0 "/template" }' /tmp/templates); do
+	/bin/echo -e "\x1b[32mLinting $t...\x1b[0m"
+	xlint "$t" || EXITCODE=$?
+	common/scripts/lint-version-change "$t" $base $tip || EXITCODE=$?
+done
+exit $EXITCODE
diff --git a/common/wrappers/cross-cc b/common/wrappers/cross-cc
new file mode 100644
index 0000000..0e08bc9
--- /dev/null
+++ b/common/wrappers/cross-cc
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# compiler wrapper to get rid of -I/usr/include and -L/usr/lib, that fucks up
+# cross compilation badly.
+declare -a MYARGS
+
+ARGS=("$@")
+i=0
+while [ $i -lt ${#ARGS[@]} ]; do
+	arg="${ARGS[$i]}"
+	if [ "$incpath" ]; then
+		if [ "$arg" = "/usr/include" ]; then
+			echo "[cc-wrapper] ignoring -I $arg"
+		else
+			MYARGS+=("-I${arg}")
+		fi
+		unset incpath
+	elif [ "$libpath" ]; then
+		# XXX: avoid so much repetition
+		if [ "$arg" = "/usr/lib" -o "$arg" = "/usr/lib32" -o "$arg" = "/usr/lib64" -o "$arg" = "/lib" ]; then
+			echo "[cc-wrapper] ignoring -L $arg"
+		else
+			MYARGS+=("-L${arg}")
+		fi
+		unset libpath
+	elif [ "$arg" = "-I" ]; then
+		incpath=1
+	elif [ "$arg" = "-L" ]; then
+		libpath=1
+	elif [ "$arg" = "-I/usr/include" -o "$arg" = "-L/usr/lib" \
+		-o "$arg" = "-L/usr/lib32" -o "$arg" = "-L/usr/lib64" \
+		-o "$arg" = "-L/lib" ]; then
+		echo "[cc-wrapper] ignoring $arg"
+	else
+		MYARGS+=("${arg}")
+	fi
+	i=$((i+1))
+done
+#echo "[cc-wrapper] @BIN@ ${MYARGS[@]}"
+exec @BIN@ "${MYARGS[@]}"
diff --git a/common/wrappers/date.sh b/common/wrappers/date.sh
new file mode 100644
index 0000000..89ea97f
--- /dev/null
+++ b/common/wrappers/date.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ "$SOURCE_DATE_EPOCH" ]; then
+	post="--utc --date @$SOURCE_DATE_EPOCH"
+fi
+exec /usr/bin/date "$@" $post
diff --git a/common/wrappers/install.sh b/common/wrappers/install.sh
new file mode 100644
index 0000000..82b61c2
--- /dev/null
+++ b/common/wrappers/install.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# install-wrapper - run install(1), but never strip or chown
+set -e
+
+# taken from install (GNU coreutils) 8.23
+opts='bcCdDg:m:o:psS:t:TvZ'
+longopts='backup::,compare,directory,group:,mode:,owner:,preserve-timestamps,\
+strip:,strip-program:,suffix:,target-directory:,no-target-directory,verbose,\
+preserve-context,context::,help,version'
+
+parsed="$(getopt -o "$opts" --long "$longopts" -n 'install-wrapper' -- "$@")"
+eval set -- "$parsed"
+
+iopts=()
+while :; do
+	case "$1" in
+	-s|--strip)
+		echo "install-wrapper: overriding call to strip(1)." 1>&2
+		iopts+=("$1" --strip-program=true)
+		shift;;
+	--strip-program)
+		echo "install-wrapper: dropping strip program '$2'." 1>&2
+		shift 2;;
+	-g|--group|-o|--owner)
+		echo "install-wrapper: dropping option $1 $2." 1>&2
+		shift 2;;
+	-b|-c|-C|--compare|-d|--directory|-D|-p|--preserve-timestamps|\
+	-T|--no-target-directory|-v|--verbose|--preserve-context|-Z|\
+	--help|--version)
+		iopts+=("$1")
+		shift;;
+	-m|--mode|-S|--suffix|-t|--target-directory|--backup|--context)
+		iopts+=("$1" "$2")
+		shift 2;;
+	--)
+		shift
+		break;;
+	*)
+		echo 'cant happen, report a bug' 1>&2
+		exit 111;;
+	esac
+done
+
+exec /usr/bin/install "${iopts[@]}" -- "$@"
diff --git a/common/wrappers/ldconfig.sh b/common/wrappers/ldconfig.sh
new file mode 100644
index 0000000..32818e2
--- /dev/null
+++ b/common/wrappers/ldconfig.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+if [ "$1" = "-p" ]; then
+	exec /usr/bin/ldconfig "$@"
+fi
+
+echo "ldconfig-wrapper: ignoring arguments: $@"
+exit 0
diff --git a/common/wrappers/strip.sh b/common/wrappers/strip.sh
new file mode 100644
index 0000000..febf451
--- /dev/null
+++ b/common/wrappers/strip.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+echo "strip-wrapper: ignoring arguments: $@"
+exit 0
diff --git a/common/wrappers/uname.sh b/common/wrappers/uname.sh
new file mode 100644
index 0000000..4edca25
--- /dev/null
+++ b/common/wrappers/uname.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+uname=$(/usr/bin/uname $@)
+rv=$?
+uname_m=$(/usr/bin/uname -m)
+arch=${XBPS_ARCH%-musl}
+# if XBPS_ARCH was reseted by `env -i` use original `/usr/bin/uname -m`
+: ${arch:=$uname_m}
+echo "$uname" |
+	sed "s/\(^\| \)$(/usr/bin/uname -n)\($\| \)/\1void\2/" |
+	sed "s/$uname_m/$arch/"
+
+exit $rv
diff --git a/common/xbps-src/libexec/build.sh b/common/xbps-src/libexec/build.sh
new file mode 100755
index 0000000..7243231
--- /dev/null
+++ b/common/xbps-src/libexec/build.sh
@@ -0,0 +1,140 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#   $1 - current pkgname to build [REQUIRED]
+#   $2 - target pkgname (origin) to build [REQUIRED]
+#   $3 - xbps target [REQUIRED]
+#   $4 - cross target [OPTIONAL]
+#   $5 - internal [OPTIONAL]
+
+if [ $# -lt 3 -o $# -gt 5 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname targetpkg target [cross-target]"
+    exit 1
+fi
+
+readonly PKGNAME="$1"
+readonly XBPS_TARGET_PKG="$2"
+readonly XBPS_TARGET="$3"
+readonly XBPS_CROSS_BUILD="$4"
+readonly XBPS_CROSS_PREPARE="$5"
+
+export XBPS_TARGET
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+last="${XBPS_DEPENDS_CHAIN##*,}"
+case "$XBPS_DEPENDS_CHAIN" in
+    *,$last,*)
+        msg_error "Build-time cyclic dependency$last,${XBPS_DEPENDS_CHAIN##*,$last,} detected.\n"
+esac
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+readonly SOURCEPKG="$sourcepkg"
+
+check_existing_pkg
+
+show_pkg_build_options
+check_pkg_arch $XBPS_CROSS_BUILD
+
+if [ -z "$XBPS_CROSS_PREPARE" ]; then
+    prepare_cross_sysroot $XBPS_CROSS_BUILD || exit $?
+fi
+# Install dependencies from binary packages
+if [ "$PKGNAME" != "$XBPS_TARGET_PKG" -o -z "$XBPS_SKIP_DEPS" ]; then
+    install_pkg_deps $PKGNAME $XBPS_TARGET_PKG pkg $XBPS_CROSS_BUILD $XBPS_CROSS_PREPARE || exit $?
+fi
+
+if [ "$XBPS_CROSS_BUILD" ]; then
+    install_cross_pkg $XBPS_CROSS_BUILD || exit $?
+fi
+
+# Fetch distfiles after installing required dependencies,
+# because some of them might be required for do_fetch().
+$XBPS_LIBEXECDIR/xbps-src-dofetch.sh $SOURCEPKG $XBPS_CROSS_BUILD || exit 1
+[ "$XBPS_TARGET" = "fetch" ] && exit 0
+
+# Fetch, extract, build and install into the destination directory.
+$XBPS_LIBEXECDIR/xbps-src-doextract.sh $SOURCEPKG $XBPS_CROSS_BUILD || exit 1
+[ "$XBPS_TARGET" = "extract" ] && exit 0
+
+# Run patch phrase
+$XBPS_LIBEXECDIR/xbps-src-dopatch.sh $SOURCEPKG $XBPS_CROSS_BUILD || exit 1
+[ "$XBPS_TARGET" = "patch" ] && exit 0
+
+# Run configure phase
+$XBPS_LIBEXECDIR/xbps-src-doconfigure.sh $SOURCEPKG $XBPS_CROSS_BUILD || exit 1
+[ "$XBPS_TARGET" = "configure" ] && exit 0
+
+# Run build phase
+$XBPS_LIBEXECDIR/xbps-src-dobuild.sh $SOURCEPKG $XBPS_CROSS_BUILD || exit 1
+[ "$XBPS_TARGET" = "build" ] && exit 0
+
+# Run check phase
+$XBPS_LIBEXECDIR/xbps-src-docheck.sh $SOURCEPKG $XBPS_CROSS_BUILD || exit 1
+[ "$XBPS_TARGET" = "check" ] && exit 0
+
+# Install pkgs into destdir.
+$XBPS_LIBEXECDIR/xbps-src-doinstall.sh $SOURCEPKG no $XBPS_CROSS_BUILD || exit 1
+
+for subpkg in ${subpackages} ${sourcepkg}; do
+    $XBPS_LIBEXECDIR/xbps-src-doinstall.sh $subpkg yes $XBPS_CROSS_BUILD || exit 1
+done
+for subpkg in ${subpackages} ${sourcepkg}; do
+    $XBPS_LIBEXECDIR/xbps-src-prepkg.sh $subpkg $XBPS_CROSS_BUILD || exit 1
+done
+
+for subpkg in ${subpackages} ${sourcepkg}; do
+    if [ "$PKGNAME" = "${subpkg}" -a "$XBPS_TARGET" = "install" ]; then
+        exit 0
+    fi
+done
+
+# Clean list of preregistered packages
+printf "" > ${XBPS_STATEDIR}/.${sourcepkg}_register_pkg
+# If install went ok generate the binpkgs.
+for subpkg in ${subpackages} ${sourcepkg}; do
+    $XBPS_LIBEXECDIR/xbps-src-dopkg.sh $subpkg "$XBPS_REPOSITORY" "$XBPS_CROSS_BUILD" || exit 1
+done
+
+# Registering packages at once per repository. This makes sure that staging is
+# triggered for all new packages if any of them introduces inconsistencies.
+cut -d: -f 1,2 ${XBPS_STATEDIR}/.${sourcepkg}_register_pkg | sort -u | \
+    while IFS=: read -r arch repo; do
+        paths=$(grep "^$arch:$repo:" "${XBPS_STATEDIR}/.${sourcepkg}_register_pkg" | \
+            cut -d : -f 2,3 | tr ':' '/')
+        if [ -z "$XBPS_PRESERVE_PKGS" ] || [ "$XBPS_BUILD_FORCEMODE" ]; then
+            force=-f
+        fi
+        if [ -n "${arch}" ]; then
+            msg_normal "Registering new packages to $repo ($arch)\n"
+            XBPS_TARGET_ARCH=${arch} $XBPS_RINDEX_CMD \
+                ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} ${force} -a ${paths}
+        else
+            msg_normal "Registering new packages to $repo\n"
+            if [ -n "$XBPS_CROSS_BUILD" ]; then
+                $XBPS_RINDEX_XCMD ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} \
+					${force} -a ${paths}
+            else
+                $XBPS_RINDEX_CMD ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} \
+					${force} -a ${paths}
+            fi
+        fi
+    done
+
+# pkg cleanup
+if declare -f do_clean >/dev/null; then
+    run_func do_clean
+fi
+
+if [ -n "$XBPS_DEPENDENCY" -o -z "$XBPS_KEEP_ALL" ]; then
+    remove_pkg_autodeps
+    remove_pkg_wrksrc
+    remove_pkg $XBPS_CROSS_BUILD
+    remove_pkg_statedir
+fi
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-dobuild.sh b/common/xbps-src/libexec/xbps-src-dobuild.sh
new file mode 100755
index 0000000..cee3f65
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-dobuild.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#	$1 - pkgname to build [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_CROSS_BUILD="$2"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+XBPS_BUILD_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_build_done"
+
+if [ -f $XBPS_BUILD_DONE -a -z "$XBPS_BUILD_FORCEMODE" ] ||
+   [ -f $XBPS_BUILD_DONE -a -n "$XBPS_BUILD_FORCEMODE" -a $XBPS_TARGET != "build" ]; then
+    exit 0
+fi
+
+for f in $XBPS_COMMONDIR/environment/build/*.sh; do
+    source_file "$f"
+done
+
+run_step build optional
+
+touch -f $XBPS_BUILD_DONE
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-docheck.sh b/common/xbps-src/libexec/xbps-src-docheck.sh
new file mode 100755
index 0000000..1e82c1a
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-docheck.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#	$1 - pkgname to build [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_CROSS_BUILD="$2"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+XBPS_CHECK_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_check_done"
+
+if [ -n "$XBPS_CROSS_BUILD" ]; then
+    msg_normal "${pkgname}-${version}_${revision}: skipping check (cross build for $XBPS_CROSS_BUILD) ...\n"
+    exit 0
+fi
+
+if [ -z "$XBPS_CHECK_PKGS" ]; then
+    msg_normal "${pkgname}-${version}_${revision}: skipping check (XBPS_CHECK_PKGS is disabled) ...\n"
+    exit 0
+fi
+
+if [ "$make_check" = no ]; then
+    msg_normal "${pkgname}-${version}_${revision}: skipping check (make_check=no) ...\n"
+    exit 0
+fi
+
+if [ "$make_check" = extended -a "$XBPS_CHECK_PKGS" != full ]; then
+    msg_normal \
+        "${pkgname}-${version}_${revision}: skipping check (make_check=extended and XBPS_CHECK_PKGS is not 'full') ...\n"
+    exit 0
+fi
+
+if [ "$make_check" = ci-skip ] && [ "$XBPS_BUILD_ENVIRONMENT" = void-packages-ci ]; then
+    msg_warn \
+        "${pkgname}-${version}_${revision}: skipping here because of make_check=ci-skip. Tests should be run locally.\n"
+    exit 0
+fi
+
+for f in $XBPS_COMMONDIR/environment/check/*.sh; do
+    source_file "$f"
+done
+
+run_step check optional
+
+touch -f $XBPS_CHECK_DONE
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-doconfigure.sh b/common/xbps-src/libexec/xbps-src-doconfigure.sh
new file mode 100755
index 0000000..2adeab5
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-doconfigure.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#	$1 - pkgname to configure [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_CROSS_BUILD="$2"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+XBPS_CONFIGURE_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_configure_done"
+
+if [ -f $XBPS_CONFIGURE_DONE -a -z "$XBPS_BUILD_FORCEMODE" ] ||
+   [ -f $XBPS_CONFIGURE_DONE -a -n "$XBPS_BUILD_FORCEMODE" -a $XBPS_TARGET != "configure" ]; then
+    exit 0
+fi
+
+for f in $XBPS_COMMONDIR/environment/configure/*.sh; do
+    source_file "$f"
+done
+
+run_step configure optional
+
+touch -f $XBPS_CONFIGURE_DONE
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-doextract.sh b/common/xbps-src/libexec/xbps-src-doextract.sh
new file mode 100755
index 0000000..8b1633a
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-doextract.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#	$1 - pkgname [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_CROSS_BUILD="$2"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+for f in $XBPS_COMMONDIR/environment/extract/*.sh; do
+    source_file "$f"
+done
+
+XBPS_EXTRACT_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_extract_done"
+
+if [ -f $XBPS_EXTRACT_DONE ]; then
+    exit 0
+fi
+
+# Run pre-extract hooks
+run_pkg_hooks pre-extract
+
+# If template defines pre_extract(), use it.
+if declare -f pre_extract >/dev/null; then
+    run_func pre_extract
+fi
+
+# If template defines do_extract() use it rather than the hooks.
+if declare -f do_extract >/dev/null; then
+    [ ! -d "$wrksrc" ] && mkdir -p "$wrksrc"
+    cd "$wrksrc"
+    run_func do_extract
+else
+    if [ -n "$build_style" ]; then
+        if [ ! -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then
+            msg_error "$pkgver: cannot find build helper $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
+        fi
+        . $XBPS_BUILDSTYLEDIR/${build_style}.sh
+    fi
+    # If the build_style script declares do_extract(), use it rather than hooks.
+    if declare -f do_extract >/dev/null; then
+        run_func do_extract
+    else
+        # Run do-extract hooks
+        run_pkg_hooks "do-extract"
+    fi
+fi
+
+
+[ -d "$wrksrc" ] && cd "$wrksrc"
+
+# If template defines post_extract(), use it.
+if declare -f post_extract >/dev/null; then
+    run_func post_extract
+fi
+
+# Run post-extract hooks
+run_pkg_hooks post-extract
+
+touch -f $XBPS_EXTRACT_DONE
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-dofetch.sh b/common/xbps-src/libexec/xbps-src-dofetch.sh
new file mode 100755
index 0000000..07aef66
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-dofetch.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+# 	$1 - pkgname [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_CROSS_BUILD="$2"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+for f in $XBPS_COMMONDIR/environment/fetch/*.sh; do
+    source_file "$f"
+done
+
+XBPS_FETCH_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_fetch_done"
+
+if [ -f "$XBPS_FETCH_DONE" ]; then
+    exit 0
+fi
+
+# Run pre-fetch hooks.
+run_pkg_hooks pre-fetch
+
+# If template defines pre_fetch(), use it.
+if declare -f pre_fetch >/dev/null; then
+    run_func pre_fetch
+fi
+
+# If template defines do_fetch(), use it rather than the hooks.
+if declare -f do_fetch >/dev/null; then
+    cd ${XBPS_BUILDDIR}
+    [ -n "$build_wrksrc" ] && mkdir -p "$wrksrc"
+    run_func do_fetch
+else
+    # Run do-fetch hooks.
+    run_pkg_hooks "do-fetch"
+fi
+
+cd ${XBPS_BUILDDIR} || msg_error "$pkgver: cannot access wrksrc directory [$wrksrc]\n"
+# if templates defines post_fetch(), use it.
+if declare -f post_fetch >/dev/null; then
+    run_func post_fetch
+fi
+
+# Run post-fetch hooks.
+run_pkg_hooks post-fetch
+
+touch -f $XBPS_FETCH_DONE
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-doinstall.sh b/common/xbps-src/libexec/xbps-src-doinstall.sh
new file mode 100755
index 0000000..fb5d35d
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-doinstall.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#	$1 - pkgname [REQUIRED]
+#   $2 - subpkg mode [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 2 -o $# -gt 3 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname subpkg-mode [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+SUBPKG_MODE="$2"
+XBPS_CROSS_BUILD="$3"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+for f in $XBPS_COMMONDIR/environment/install/*.sh; do
+    source_file "$f"
+done
+
+XBPS_INSTALL_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_install_done"
+
+ch_wrksrc
+
+if [ "$SUBPKG_MODE"  = "no" ]; then
+    if [ ! -f $XBPS_INSTALL_DONE ] || [ -f $XBPS_INSTALL_DONE -a -n "$XBPS_BUILD_FORCEMODE" ]; then
+        mkdir -p $XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/$pkgname-$version
+
+        run_step install "" skip
+
+        touch -f $XBPS_INSTALL_DONE
+    fi
+    exit 0
+fi
+
+XBPS_SUBPKG_INSTALL_DONE="${XBPS_STATEDIR}/${PKGNAME}_${XBPS_CROSS_BUILD}_subpkg_install_done"
+
+# If it's a subpkg execute the pkg_install() function.
+if [ ! -f $XBPS_SUBPKG_INSTALL_DONE ]; then
+    if [ "$sourcepkg" != "$PKGNAME" ]; then
+        # Source all subpkg environment setup snippets.
+        for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
+            source_file "$f"
+        done
+
+        ${PKGNAME}_package
+        pkgname=$PKGNAME
+
+        source_file $XBPS_COMMONDIR/environment/build-style/${build_style}.sh
+
+        install -d $PKGDESTDIR
+        if declare -f pkg_install >/dev/null; then
+            run_pkg_hooks pre-install
+            run_func pkg_install
+        fi
+    fi
+    setup_pkg_depends ${pkgname:=$PKGNAME} || exit 1
+    run_pkg_hooks post-install
+    touch -f $XBPS_SUBPKG_INSTALL_DONE
+fi
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-dopatch.sh b/common/xbps-src/libexec/xbps-src-dopatch.sh
new file mode 100755
index 0000000..c1b3b04
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-dopatch.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#	$1 - pkgname [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_CROSS_BUILD="$2"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+XBPS_PATCH_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_patch_done"
+
+if [ -f $XBPS_PATCH_DONE ]; then
+    exit 0
+fi
+
+for f in $XBPS_COMMONDIR/environment/patch/*.sh; do
+    source_file "$f"
+done
+
+run_step patch optional
+
+touch -f $XBPS_PATCH_DONE
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-dopkg.sh b/common/xbps-src/libexec/xbps-src-dopkg.sh
new file mode 100755
index 0000000..5fec7b9
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-dopkg.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+# 	$1 - pkgname [REQUIRED]
+#	$2 - path to local repository [REQUIRED]
+# 	$3 - cross-target [OPTIONAL]
+
+if [ $# -lt 2 -o $# -gt 3 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname repository [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_REPOSITORY="$2"
+XBPS_CROSS_BUILD="$3"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+for f in $XBPS_COMMONDIR/environment/pkg/*.sh; do
+    source_file "$f"
+done
+
+if [ "$sourcepkg" != "$PKGNAME" ]; then
+    # Source all subpkg environment setup snippets.
+    for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
+        source_file "$f"
+    done
+
+    ${PKGNAME}_package
+    pkgname=$PKGNAME
+fi
+
+if [ -s $XBPS_MASTERDIR/.xbps_chroot_init ]; then
+    export XBPS_ARCH=$(<$XBPS_MASTERDIR/.xbps_chroot_init)
+fi
+
+# Run do-pkg hooks.
+run_pkg_hooks "do-pkg"
+
+# Run post-pkg hooks.
+run_pkg_hooks post-pkg
+
+exit 0
diff --git a/common/xbps-src/libexec/xbps-src-prepkg.sh b/common/xbps-src/libexec/xbps-src-prepkg.sh
new file mode 100755
index 0000000..34f91b3
--- /dev/null
+++ b/common/xbps-src/libexec/xbps-src-prepkg.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# vim: set ts=4 sw=4 et:
+#
+# Passed arguments:
+#	$1 - pkgname [REQUIRED]
+#	$2 - cross target [OPTIONAL]
+
+if [ $# -lt 1 -o $# -gt 2 ]; then
+    echo "${0##*/}: invalid number of arguments: pkgname [cross-target]"
+    exit 1
+fi
+
+PKGNAME="$1"
+XBPS_CROSS_BUILD="$2"
+
+for f in $XBPS_SHUTILSDIR/*.sh; do
+    . $f
+done
+
+setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
+
+for f in $XBPS_COMMONDIR/environment/install/*.sh; do
+    source_file "$f"
+done
+
+
+XBPS_PREPKG_DONE="${XBPS_STATEDIR}/${PKGNAME}_${XBPS_CROSS_BUILD}_prepkg_done"
+
+if [ -z "$XBPS_BUILD_FORCEMODE" -a -f $XBPS_PREPKG_DONE ]; then
+    exit 0
+fi
+
+# If it's a subpkg execute the pkg_install() function.
+if [ "$sourcepkg" != "$PKGNAME" ]; then
+    # Source all subpkg environment setup snippets.
+    for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
+        source_file "$f"
+    done
+
+    ${PKGNAME}_package
+    pkgname=$PKGNAME
+fi
+
+source_file $XBPS_COMMONDIR/environment/build-style/${build_style}.sh
+setup_pkg_depends $pkgname || exit 1
+run_pkg_hooks pre-pkg
+
+touch -f $XBPS_PREPKG_DONE
+
+exit 0
diff --git a/common/xbps-src/shutils/build_dependencies.sh b/common/xbps-src/shutils/build_dependencies.sh
new file mode 100644
index 0000000..e4e2210
--- /dev/null
+++ b/common/xbps-src/shutils/build_dependencies.sh
@@ -0,0 +1,428 @@
+# vim: set ts=4 sw=4 et:
+#
+setup_pkg_depends() {
+    local pkg="$1" out="$2" with_subpkgs="$3" j _rpkgname _depname _pkgname foo _deps collected
+
+    if [[ $pkg ]]; then
+        # subpkg
+        if declare -f ${pkg}_package >/dev/null; then
+            ${pkg}_package
+        fi
+    elif [[ $with_subpkgs ]]; then
+        collected="${depends}"
+        for pkg in $subpackages; do
+            [[ $pkg ]] || continue
+            ${pkg}_package
+            collected+=" ${depends}"
+        done
+        depends="${collected}"
+    fi
+
+    for j in ${depends}; do
+        _rpkgname="${j%\?*}"
+        _depname="${j#*\?}"
+        if [[ ${_rpkgname} == virtual ]]; then
+            _pkgname=$(xbps-uhelper getpkgname $_depname 2>/dev/null)
+            [ -z "$_pkgname" ] && _pkgname="$_depname"
+            if [ -s ${XBPS_DISTDIR}/etc/virtual ]; then
+                foo=$(egrep "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/virtual|cut -d ' ' -f2)
+            elif [ -s ${XBPS_DISTDIR}/etc/defaults.virtual ]; then
+                foo=$(egrep "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/defaults.virtual|cut -d ' ' -f2)
+            fi
+            if [ -z "$foo" ]; then
+                msg_error "$pkgver: failed to resolve virtual dependency for '$j' (missing from etc/virtual)\n"
+            fi
+            [[ $out ]] && echo "$foo"
+        else
+            foo="$($XBPS_UHELPER_CMD getpkgdepname ${_depname} 2>/dev/null)"
+            if [ -z "$foo" ]; then
+                foo="$($XBPS_UHELPER_CMD getpkgname ${_depname} 2>/dev/null)"
+                [ -z "$foo" ] && foo="${_depname}"
+            fi
+            [[ $out ]] && echo "$foo"
+        fi
+        run_depends+="${_depname} "
+    done
+
+    return 0
+}
+
+#
+# Install required package dependencies, like:
+#
+#	xbps-install -Ay <pkgs>
+#
+#       -A automatic mode
+#       -y yes
+#
+# Returns 0 if package already installed or installed successfully.
+# Any other error number otherwise.
+#
+# SUCCESS  (0): package installed successfully.
+# ENOENT   (2): package missing in repositories.
+# ENXIO    (6): package depends on invalid dependencies.
+# EAGAIN  (11): package conflicts.
+# EBUSY   (16): package 'xbps' needs to be updated.
+# EEXIST  (17): file conflicts in transaction (XBPS_FLAG_IGNORE_FILE_CONFLICTS unset)
+# ENODEV  (19): package depends on missing dependencies.
+# ENOTSUP (95): no repositories registered.
+# -1     (255): unexpected error.
+
+install_pkg_from_repos() {
+    local cross="$1" target="$2" rval tmplogf cmd
+    shift 2
+
+    [ $# -eq 0 ] && return 0
+
+    mkdir -p $XBPS_STATEDIR
+    tmplogf=${XBPS_STATEDIR}/xbps_${XBPS_TARGET_MACHINE}_bdep_${pkg}.log
+
+    cmd=$XBPS_INSTALL_CMD
+    [[ $cross ]] && cmd=$XBPS_INSTALL_XCMD
+    $cmd -Ay "$@" >$tmplogf 2>&1
+    rval=$?
+
+    case "$rval" in
+        0) # success, check if there are errors.
+           errortmpf=$(mktemp) || exit 1
+           grep ^ERROR $tmplogf > $errortmpf
+           [ -s $errortmpf ] && cat $errortmpf
+           rm -f $errortmpf
+           ;;
+        *)
+           [ -z "$XBPS_KEEP_ALL" ] && remove_pkg_autodeps
+           msg_red "$pkgver: failed to install $target dependencies! (error $rval)\n"
+           cat $tmplogf
+           rm -f $tmplogf
+           msg_error "Please see above for the real error, exiting...\n"
+           ;;
+    esac
+    rm -f $tmplogf
+    return $rval
+}
+
+#
+# Returns 0 if pkgpattern in $1 is installed and greater than current
+# installed package, otherwise 1.
+#
+check_installed_pkg() {
+    local pkg="$1" cross="$2" uhelper= pkgn= iver=
+
+    [ -z "$pkg" ] && return 2
+
+    pkgn="$($XBPS_UHELPER_CMD getpkgname ${pkg})"
+    [ -z "$pkgn" ] && return 2
+
+    uhelper=$XBPS_UHELPER_CMD
+    [[ $cross ]] && uhelper=$XBPS_UHELPER_XCMD
+    iver="$($uhelper version $pkgn)"
+    if [ $? -eq 0 -a -n "$iver" ]; then
+        $XBPS_CMPVER_CMD "${pkgn}-${iver}" "${pkg}"
+        [ $? -eq 0 -o $? -eq 1 ] && return 0
+    fi
+
+    return 1
+}
+
+#
+# Build all dependencies required to build and run.
+#
+install_pkg_deps() {
+    local pkg="$1" targetpkg="$2" target="$3" cross="$4" cross_prepare="$5"
+    local _vpkg curpkgdepname
+    local i j found style
+    local templates=""
+
+    local -a host_binpkg_deps binpkg_deps
+    local -a host_missing_deps missing_deps missing_rdeps
+
+    [ -z "$pkgname" ] && return 2
+    [ -z "$XBPS_CHECK_PKGS" ] && unset checkdepends
+    [[ $build_style ]] && style=" [$build_style]"
+
+    for s in $build_helper; do
+        style+=" [$s]"
+    done
+
+    if [ "$pkg" != "$targetpkg" ]; then
+        msg_normal "$pkgver: building${style} (dependency of $targetpkg) for $XBPS_TARGET_MACHINE...\n"
+    else
+        msg_normal "$pkgver: building${style} for $XBPS_TARGET_MACHINE...\n"
+    fi
+
+    #
+    # Host build dependencies.
+    #
+    if [[ ${hostmakedepends} ]]; then
+        templates=""
+        # check validity
+        for f in ${hostmakedepends}; do
+            if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
+                templates+=" $f"
+                continue
+            fi
+            local _repourl=$($XBPS_QUERY_CMD -R -prepository "$f" 2>/dev/null)
+            if [ "$_repourl" ]; then
+                echo "   [host] ${f}: found (${_repourl})"
+                host_binpkg_deps+=("$f")
+                continue
+            fi
+            msg_error "$pkgver: host dependency '$f' does not exist!\n"
+        done
+        while read -r _depname _deprepover _depver _subpkg _repourl; do
+            _vpkg=${_subpkg}-${_depver}
+            # binary package found in a repo
+            if [[ ${_depver} == ${_deprepover} ]]; then
+                echo "   [host] ${_vpkg}: found (${_repourl})"
+                host_binpkg_deps+=("${_vpkg}")
+                continue
+            fi
+            # binary package not found
+            if [[ $_depname != $_subpkg ]]; then
+                # subpkg, check if it's a subpkg of itself
+                found=0
+                for f in ${subpackages}; do
+                    if [[ ${_subpkg} == ${f} ]]; then
+                        found=1
+                        break
+                    fi
+                done
+                if [[ $found -eq 1 ]] && [[ -z "$cross" ]]; then
+                    echo "   [host] ${_vpkg}: not found (subpkg, ignored)"
+                else
+                    echo "   [host] ${_vpkg}: not found"
+                    host_missing_deps+=("$_vpkg")
+                fi
+            else
+                echo "   [host] ${_vpkg}: not found"
+                host_missing_deps+=("$_vpkg")
+            fi
+        done < <($XBPS_CHECKVERS_CMD -D $XBPS_DISTDIR -sm $templates)
+    fi
+
+    #
+    # Host check dependencies.
+    #
+    if [[ ${checkdepends} ]] && [[ $XBPS_CHECK_PKGS ]] && [ -z "$XBPS_CROSS_BUILD" ]; then
+        templates=""
+        # check validity
+        for f in ${checkdepends}; do
+            if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
+                templates+=" $f"
+                continue
+            fi
+            local _repourl=$($XBPS_QUERY_CMD -R -prepository "$f" 2>/dev/null)
+            if [ "$_repourl" ]; then
+                echo "   [host] ${f}: found (${_repourl})"
+                host_binpkg_deps+=("$f")
+                continue
+            fi
+            msg_error "$pkgver: check dependency '$f' does not exist!\n"
+        done
+        while read -r _depname _deprepover _depver _subpkg _repourl; do
+            _vpkg=${_subpkg}-${_depver}
+            # binary package found in a repo
+            if [[ ${_depver} == ${_deprepover} ]]; then
+                echo "   [check] ${_vpkg}: found (${_repourl})"
+                host_binpkg_deps+=("${_vpkg}")
+                continue
+            fi
+            # binary package not found
+            if [[ $_depname != $_subpkg ]]; then
+                # subpkg, check if it's a subpkg of itself
+                found=0
+                for f in ${subpackages}; do
+                    if [[ ${_subpkg} == ${f} ]]; then
+                        found=1
+                        break
+                    fi
+                done
+                if [[ $found -eq 1 ]]; then
+                    echo "   [check] ${_vpkg}: not found (subpkg, ignored)"
+                else
+                    echo "   [check] ${_vpkg}: not found"
+                    host_missing_deps+=("$_vpkg")
+                fi
+            else
+                echo "   [check] ${_vpkg}: not found"
+                host_missing_deps+=("$_vpkg")
+            fi
+        done < <($XBPS_CHECKVERS_CMD -D $XBPS_DISTDIR -sm ${templates})
+    fi
+
+    #
+    # Target build dependencies.
+    #
+    if [[ ${makedepends} ]]; then
+        templates=""
+        # check validity
+        for f in ${makedepends}; do
+            if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
+                templates+=" $f"
+                continue
+            fi
+            local _repourl=$($XBPS_QUERY_XCMD -R -prepository "$f" 2>/dev/null)
+            if [ "$_repourl" ]; then
+                echo "   [target] ${f}: found (${_repourl})"
+                binpkg_deps+=("$f")
+                continue
+            fi
+            msg_error "$pkgver: target dependency '$f' does not exist!\n"
+        done
+        while read -r _depname _deprepover _depver _subpkg _repourl; do
+            _vpkg=${_subpkg}-${_depver}
+            # binary package found in a repo
+            if [[ ${_depver} == ${_deprepover} ]]; then
+                echo "   [target] ${_vpkg}: found (${_repourl})"
+                binpkg_deps+=("${_vpkg}")
+                continue
+            fi
+            # binary package not found
+            if [[ $_depname != $_subpkg ]]; then
+                # subpkg, check if it's a subpkg of itself
+                found=0
+                for f in ${subpackages}; do
+                    if [[ ${_subpkg} == ${f} ]]; then
+                        found=1
+                        break
+                    fi
+                done
+                if [[ $found -eq 1 ]]; then
+                    msg_error "[target] ${_vpkg}: target dependency '${_subpkg}' is a subpackage of $pkgname\n"
+                else
+                    echo "   [target] ${_vpkg}: not found"
+                    missing_deps+=("$_vpkg")
+                fi
+            else
+                echo "   [target] ${_vpkg}: not found"
+                missing_deps+=("$_vpkg")
+            fi
+        done < <($XBPS_CHECKVERS_XCMD -D $XBPS_DISTDIR -sm $templates)
+    fi
+
+    #
+    # Target run time dependencies
+    #
+    local _cleandeps=$(setup_pkg_depends "" 1 1) || exit 1
+    if [[ ${_cleandeps} ]]; then
+        templates=""
+        for f in ${_cleandeps}; do
+            if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
+                templates+=" $f"
+                continue
+            fi
+            local _repourl=$($XBPS_QUERY_XCMD -R -prepository "$f" 2>/dev/null)
+            if [ "$_repourl" ]; then
+                echo "   [target] ${f}: found (${_repourl})"
+                continue
+            fi
+            msg_error "$pkgver: target dependency '$f' does not exist!\n"
+        done
+        while read -r _depname _deprepover _depver _subpkg _repourl; do
+            _vpkg=${_subpkg}-${_depver}
+            # binary package found in a repo
+            if [[ ${_depver} == ${_deprepover} ]]; then
+                echo "   [runtime] ${_vpkg}: found (${_repourl})"
+                continue
+            fi
+            # binary package not found
+            if [[ $_depname != $_subpkg ]]; then
+                # subpkg, check if it's a subpkg of itself
+                found=0
+                for f in ${subpackages}; do
+                    if [[ ${_subpkg} == ${f} ]]; then
+                        found=1
+                        break
+                    fi
+                done
+                if [[ $found -eq 1 ]]; then
+                    echo "   [runtime] ${_vpkg}: not found (subpkg, ignored)"
+                else
+                    echo "   [runtime] ${_vpkg}: not found"
+                    missing_rdeps+=("$_vpkg")
+                fi
+            elif [[ ${_depname} == ${pkgname} ]]; then
+                    echo "   [runtime] ${_vpkg}: not found (self, ignored)"
+            else
+                echo "   [runtime] ${_vpkg}: not found"
+                missing_rdeps+=("$_vpkg")
+            fi
+        done < <($XBPS_CHECKVERS_XCMD -D $XBPS_DISTDIR -sm $templates)
+    fi
+
+    if [ -n "$XBPS_BUILD_ONLY_ONE_PKG" ]; then
+           for i in ${host_missing_deps[@]}; do
+                   msg_error "dep ${i} not found: -1 passed: instructed not to build\n"
+           done
+           for i in ${missing_rdeps[@]}; do
+                   msg_error "dep ${i} not found: -1 passed: instructed not to build\n"
+           done
+           for i in ${missing_deps[@]}; do
+                   msg_error "dep ${i} not found: -1 passed: instructed not to build\n"
+           done
+    fi
+
+    # Missing host dependencies, build from srcpkgs.
+    for i in ${host_missing_deps[@]}; do
+        # packages not found in repos, install from source.
+        (
+        curpkgdepname=$($XBPS_UHELPER_CMD getpkgname "$i" 2>/dev/null)
+        setup_pkg $curpkgdepname
+        exec env XBPS_DEPENDENCY=1 XBPS_BINPKG_EXISTS=1 XBPS_DEPENDS_CHAIN="$XBPS_DEPENDS_CHAIN, $sourcepkg(host)" \
+            $XBPS_LIBEXECDIR/build.sh $sourcepkg $pkg $target $cross_prepare || exit $?
+        ) || exit $?
+        host_binpkg_deps+=("$i")
+    done
+
+    # Missing target dependencies, build from srcpkgs.
+    for i in ${missing_deps[@]}; do
+        # packages not found in repos, install from source.
+        (
+
+        curpkgdepname=$($XBPS_UHELPER_CMD getpkgname "$i" 2>/dev/null)
+        setup_pkg $curpkgdepname $cross
+        exec env XBPS_DEPENDENCY=1 XBPS_BINPKG_EXISTS=1 XBPS_DEPENDS_CHAIN="$XBPS_DEPENDS_CHAIN, $sourcepkg(${cross:-host})" \
+            $XBPS_LIBEXECDIR/build.sh $sourcepkg $pkg $target $cross $cross_prepare || exit $?
+        ) || exit $?
+        binpkg_deps+=("$i")
+    done
+
+    # Target runtime missing dependencies, build from srcpkgs.
+    for i in ${missing_rdeps[@]}; do
+        # packages not found in repos, install from source.
+        (
+        curpkgdepname=$($XBPS_UHELPER_CMD getpkgdepname "$i" 2>/dev/null)
+        if [ -z "$curpkgdepname" ]; then
+            curpkgdepname=$($XBPS_UHELPER_CMD getpkgname "$i" 2>/dev/null)
+            if [ -z "$curpkgdepname" ]; then
+                curpkgdepname="$i"
+            fi
+        fi
+        setup_pkg $curpkgdepname $cross
+        exec env XBPS_DEPENDENCY=1 XBPS_BINPKG_EXISTS=1 XBPS_DEPENDS_CHAIN="$XBPS_DEPENDS_CHAIN, $sourcepkg(${cross:-host})" \
+            $XBPS_LIBEXECDIR/build.sh $sourcepkg $pkg $target $cross $cross_prepare || exit $?
+        ) || exit $?
+    done
+
+    if [[ ${host_binpkg_deps} ]]; then
+        if [ -z "$XBPS_QUIET" ]; then
+            # normal messages in bold
+            [[ $NOCOLORS ]] || printf "\033[1m"
+            echo "=> $pkgver: installing host dependencies: ${host_binpkg_deps[@]} ..."
+            [[ $NOCOLORS ]] || printf "\033[m"
+        fi
+        install_pkg_from_repos "" host "${host_binpkg_deps[@]}"
+    fi
+
+    if [[ ${binpkg_deps} ]]; then
+        if [ -z "$XBPS_QUIET" ]; then
+            # normal messages in bold
+            [[ $NOCOLORS ]] || printf "\033[1m"
+            echo "=> $pkgver: installing target dependencies: ${binpkg_deps[@]} ..."
+            [[ $NOCOLORS ]] || printf "\033[m"
+        fi
+        install_pkg_from_repos "$cross" target "${binpkg_deps[@]}"
+    fi
+
+    return 0
+}
diff --git a/common/xbps-src/shutils/bulk.sh b/common/xbps-src/shutils/bulk.sh
new file mode 100644
index 0000000..8eb6e92
--- /dev/null
+++ b/common/xbps-src/shutils/bulk.sh
@@ -0,0 +1,120 @@
+# vim: set ts=4 sw=4 et:
+
+bulk_getlink() {
+    local p="${1##*/}"
+    local target="$(readlink $XBPS_SRCPKGDIR/$p)"
+
+    if [ $? -eq 0 -a -n "$target" ]; then
+        p=$target
+    fi
+    echo $p
+}
+
+bulk_sortdeps() {
+    local _pkgs _pkg pkgs pkg found f x tmpf
+
+    _pkgs="$@"
+    # Iterate over the list and make sure that only real pkgs are
+    # added to our pkglist.
+    for pkg in ${_pkgs}; do
+        found=0
+        f=$(bulk_getlink $pkg)
+        for x in ${pkgs}; do
+            if [ "$x" = "${f}" ]; then
+                found=1
+                break
+            fi
+        done
+        if [ $found -eq 0 ]; then
+            pkgs+="${f} "
+        fi
+    done
+
+    tmpf=$(mktemp) || exit 1
+    # Now make the real dependency graph of all pkgs to build.
+    # Perform a topological sort of all pkgs but only with build dependencies
+    # that are found in previous step.
+    for pkg in ${pkgs}; do
+        _pkgs="$($XBPS_DISTDIR/xbps-src show-build-deps $pkg 2>/dev/null)"
+        found=0
+        for x in ${_pkgs}; do
+            _pkg=$(bulk_getlink $x)
+            for f in ${pkgs}; do
+                if [ "${f}" != "${_pkg}" ]; then
+                    continue
+                fi
+                found=1
+                echo "${pkg} ${f}" >> $tmpf
+            done
+        done
+        [ $found -eq 0 ] && echo "${pkg} ${pkg}" >> $tmpf
+    done
+    tsort $tmpf|tac
+    rm -f $tmpf
+}
+
+bulk_build() {
+    local sys="$1"
+    local NPROCS=$(($(nproc)*2))
+    local NRUNNING=0
+
+    if [ "$XBPS_CROSS_BUILD" ]; then
+        source ${XBPS_COMMONDIR}/cross-profiles/${XBPS_CROSS_BUILD}.sh
+        export XBPS_ARCH=${XBPS_TARGET_MACHINE}
+    fi
+    if ! command -v xbps-checkvers &>/dev/null; then
+        msg_error "xbps-src: cannot find xbps-checkvers(1) command!\n"
+    fi
+
+    # Compare installed pkg versions vs srcpkgs
+    if [[ $sys ]]; then
+        xbps-checkvers -f '%n' -I -D $XBPS_DISTDIR
+        return $?
+    fi
+    # compare repo pkg versions vs srcpkgs
+    for f in $(xbps-checkvers -f '%n' -D $XBPS_DISTDIR); do
+        if [ $NRUNNING -eq $NPROCS ]; then
+            NRUNNING=0
+            wait
+        fi
+        NRUNNING=$((NRUNNING+1))
+        (
+            setup_pkg $f $XBPS_TARGET_MACHINE &>/dev/null
+            if show_avail &>/dev/null; then
+                echo "$f"
+            fi
+        ) &
+    done
+    wait
+    return $?
+}
+
+bulk_update() {
+    local args="$1" pkgs f rval
+
+    pkgs="$(bulk_build ${args})"
+    [[ -z $pkgs ]] && return 0
+
+    msg_normal "xbps-src: the following packages must be rebuilt and updated:\n"
+    for f in ${pkgs}; do
+        echo " $f"
+    done
+    for f in ${pkgs}; do
+        XBPS_TARGET_PKG=$f
+        read_pkg
+        msg_normal "xbps-src: building ${pkgver} ...\n"
+        if [ -n "$CHROOT_READY" -a -z "$IN_CHROOT" ]; then
+            chroot_handler pkg $XBPS_TARGET_PKG
+        else
+            $XBPS_LIBEXECDIR/build.sh $f $f pkg $XBPS_CROSS_BUILD
+        fi
+        if [ $? -eq 1 ]; then
+            msg_error "xbps-src: failed to build $pkgver pkg!\n"
+        fi
+    done
+    if [ -n "$pkgs" -a -n "$args" ]; then
+        echo
+        msg_normal "xbps-src: updating your system, confirm to proceed...\n"
+        ${XBPS_SUCMD} "xbps-install --repository=$XBPS_REPOSITORY --repository=$XBPS_REPOSITORY/nonfree -u ${pkgs//[$'\n']/ }" || return 1
+    fi
+}
diff --git a/common/xbps-src/shutils/chroot.sh b/common/xbps-src/shutils/chroot.sh
new file mode 100644
index 0000000..3083a27
--- /dev/null
+++ b/common/xbps-src/shutils/chroot.sh
@@ -0,0 +1,326 @@
+# vim: set ts=4 sw=4 et:
+
+install_base_chroot() {
+    [ "$CHROOT_READY" ] && return
+    if [ "$1" = "bootstrap" ]; then
+        unset XBPS_TARGET_PKG XBPS_INSTALL_ARGS
+    else
+        XBPS_TARGET_PKG="$1"
+    fi
+    # binary bootstrap
+    msg_normal "xbps-src: installing base-chroot-cereus...\n"
+    # XBPS_TARGET_PKG == arch
+    if [ "$XBPS_TARGET_PKG" ]; then
+        _bootstrap_arch="env XBPS_TARGET_ARCH=$XBPS_TARGET_PKG"
+    fi
+    (export XBPS_MACHINE=$XBPS_TARGET_PKG XBPS_ARCH=$XBPS_TARGET_PKG; chroot_sync_repodata)
+    ${_bootstrap_arch} $XBPS_INSTALL_CMD ${XBPS_INSTALL_ARGS} -y base-chroot-cereus
+    if [ $? -ne 0 ]; then
+        msg_error "xbps-src: failed to install base-chroot-cereus!\n"
+    fi
+    # Reconfigure base-files to create dirs/symlinks.
+    if xbps-query -r $XBPS_MASTERDIR base-files>=2022.07.03 &>/dev/null; then
+        XBPS_ARCH=$XBPS_TARGET_PKG xbps-reconfigure -r $XBPS_MASTERDIR -f base-files>=2022.07.03 &>/dev/null
+    fi
+
+    msg_normal "xbps-src: installed base-chroot-cereus successfully!\n"
+    chroot_prepare $XBPS_TARGET_PKG || msg_error "xbps-src: failed to initialize chroot!\n"
+    chroot_check
+    chroot_handler clean
+}
+
+reconfigure_base_chroot() {
+    local statefile="$XBPS_MASTERDIR/.xbps_chroot_configured"
+    local pkgs="glibc-locales ca-certificates"
+    [ -z "$IN_CHROOT" -o -e $statefile ] && return 0
+    # Reconfigure ca-certificates.
+    msg_normal "xbps-src: reconfiguring base-chroot-cereus...\n"
+    for f in ${pkgs}; do
+        if xbps-query -r $XBPS_MASTERDIR $f &>/dev/null; then
+            xbps-reconfigure -r $XBPS_MASTERDIR -f $f
+        fi
+    done
+    touch -f $statefile
+}
+
+update_base_chroot() {
+    local keep_all_force=$1
+    [ -z "$CHROOT_READY" ] && return
+    msg_normal "xbps-src: updating software in $XBPS_MASTERDIR masterdir...\n"
+    # no need to sync repodata, chroot_sync_repodata() does it for us.
+    if $(${XBPS_INSTALL_CMD} ${XBPS_INSTALL_ARGS} -nu|grep -q xbps); then
+        ${XBPS_INSTALL_CMD} ${XBPS_INSTALL_ARGS} -yu xbps || msg_error "xbps-src: failed to update xbps!\n"
+    fi
+    ${XBPS_INSTALL_CMD} ${XBPS_INSTALL_ARGS} -yu || msg_error "xbps-src: failed to update base-chroot-cereus!\n"
+    msg_normal "xbps-src: cleaning up $XBPS_MASTERDIR masterdir...\n"
+    [ -z "$XBPS_KEEP_ALL" -a -z "$XBPS_SKIP_DEPS" ] && remove_pkg_autodeps
+    [ -z "$XBPS_KEEP_ALL" -a -z "$keep_all_force" ] && rm -rf $XBPS_MASTERDIR/builddir $XBPS_MASTERDIR/destdir
+}
+
+# FIXME: $XBPS_FFLAGS is not set when chroot_init() is run
+# It is set in common/build-profiles/bootstrap.sh but lost somewhere?
+chroot_init() {
+    mkdir -p $XBPS_MASTERDIR/etc/xbps
+
+    : ${XBPS_CONFIG_FILE:=/dev/null}
+    cat > $XBPS_MASTERDIR/etc/xbps/xbps-src.conf <<_EOF
+# Generated configuration file by xbps-src, DO NOT EDIT!
+$(grep -E '^XBPS_.*' "$XBPS_CONFIG_FILE")
+XBPS_MASTERDIR=/
+XBPS_CFLAGS="$XBPS_CFLAGS"
+XBPS_CXXFLAGS="$XBPS_CXXFLAGS"
+XBPS_FFLAGS="$XBPS_FFLAGS"
+XBPS_CPPFLAGS="$XBPS_CPPFLAGS"
+XBPS_LDFLAGS="$XBPS_LDFLAGS"
+XBPS_HOSTDIR=/host
+# End of configuration file.
+_EOF
+
+    # Create custom script to start the chroot bash shell.
+    cat > $XBPS_MASTERDIR/bin/xbps-shell <<_EOF
+#!/bin/sh
+
+XBPS_SRC_VERSION="$XBPS_SRC_VERSION"
+
+. /etc/xbps/xbps-src.conf
+
+PATH=/void-packages:/usr/bin
+
+exec env -i -- SHELL=/bin/sh PATH="\$PATH" DISTCC_HOSTS="\$XBPS_DISTCC_HOSTS" DISTCC_DIR="/host/distcc" \
+    ${XBPS_ARCH+XBPS_ARCH=$XBPS_ARCH} ${XBPS_CHECK_PKGS+XBPS_CHECK_PKGS=$XBPS_CHECK_PKGS} \
+    CCACHE_DIR="/host/ccache" IN_CHROOT=1 LC_COLLATE=C LANG=en_US.UTF-8 TERM=linux HOME="/tmp" \
+    PS1="[\u@$XBPS_MASTERDIR \W]$ " /bin/bash +h
+_EOF
+
+    chmod 755 $XBPS_MASTERDIR/bin/xbps-shell
+    cp -f /etc/resolv.conf $XBPS_MASTERDIR/etc
+    return 0
+}
+
+chroot_prepare() {
+    local f=
+
+    if [ -f $XBPS_MASTERDIR/.xbps_chroot_init ]; then
+        return 0
+    elif [ ! -f $XBPS_MASTERDIR/bin/bash ]; then
+        msg_error "Bootstrap not installed in $XBPS_MASTERDIR, can't continue.\n"
+    fi
+
+    # Some software expects /etc/localtime to be a symbolic link it can read to
+    # determine the name of the time zone, so set up the expected link
+    # structure.
+    ln -sf ../usr/share/zoneinfo/UTC $XBPS_MASTERDIR/etc/localtime
+
+    for f in dev sys tmp proc host boot; do
+        [ ! -d $XBPS_MASTERDIR/$f ] && mkdir -p $XBPS_MASTERDIR/$f
+    done
+
+    # Copy /etc/passwd and /etc/group from base-files
+    cp -f $XBPS_SRCPKGDIR/base-files/files/passwd $XBPS_MASTERDIR/etc
+    echo "$(whoami):x:$(id -u):$(id -g):$(whoami) user:/tmp:/bin/xbps-shell" \
+        >> $XBPS_MASTERDIR/etc/passwd
+    cp -f $XBPS_SRCPKGDIR/base-files/files/group $XBPS_MASTERDIR/etc
+    echo "$(whoami):x:$(id -g):" >> $XBPS_MASTERDIR/etc/group
+
+    # Copy /etc/hosts from base-files
+    cp -f $XBPS_SRCPKGDIR/base-files/files/hosts $XBPS_MASTERDIR/etc
+
+    # Prepare default locale: en_US.UTF-8.
+    if [ -s ${XBPS_MASTERDIR}/etc/default/libc-locales ]; then
+        printf '%s\n' \
+            'C.UTF-8 UTF-8' \
+            'en_US.UTF-8 UTF-8' \
+            >> ${XBPS_MASTERDIR}/etc/default/libc-locales
+    fi
+
+    touch -f $XBPS_MASTERDIR/.xbps_chroot_init
+    [ -n "$1" ] && echo $1 >> $XBPS_MASTERDIR/.xbps_chroot_init
+
+    return 0
+}
+
+chroot_handler() {
+    local action="$1" pkg="$2" rv=0 arg= _envargs=
+
+    [ -z "$action" -a -z "$pkg" ] && return 1
+
+    if [ -n "$IN_CHROOT" -o -z "$CHROOT_READY" ]; then
+        return 0
+    fi
+    if [ ! -d $XBPS_MASTERDIR/void-packages ]; then
+        mkdir -p $XBPS_MASTERDIR/void-packages
+    fi
+
+    case "$action" in
+        fetch|extract|patch|configure|build|check|install|pkg|bootstrap-update|chroot|clean)
+            chroot_prepare || return $?
+            chroot_init || return $?
+            ;;
+    esac
+
+    if [ "$action" = "chroot" ]; then
+        $XBPS_COMMONDIR/chroot-style/${XBPS_CHROOT_CMD:=uunshare}.sh \
+            $XBPS_MASTERDIR $XBPS_DISTDIR "$XBPS_HOSTDIR" "$XBPS_CHROOT_CMD_ARGS" /bin/xbps-shell
+        rv=$?
+    else
+        env -i -- PATH="/usr/bin:$PATH" SHELL=/bin/sh \
+            HOME=/tmp IN_CHROOT=1 LC_COLLATE=C LANG=en_US.UTF-8 \
+            ${HTTP_PROXY:+HTTP_PROXY="${HTTP_PROXY}"} \
+            ${HTTPS_PROXY:+HTTPS_PROXY="${HTTPS_PROXY}"} \
+            ${FTP_PROXY:+FTP_PROXY="${FTP_PROXY}"} \
+            ${SOCKS_PROXY:+SOCKS_PROXY="${SOCKS_PROXY}"} \
+            ${NO_PROXY:+NO_PROXY="${NO_PROXY}"} \
+            ${HTTP_PROXY_AUTH:+HTTP_PROXY_AUTH="${HTTP_PROXY_AUTH}"} \
+            ${FTP_RETRIES:+FTP_RETRIES="${FTP_RETRIES}"} \
+            SOURCE_DATE_EPOCH="$SOURCE_DATE_EPOCH" \
+            XBPS_GIT_REVS="$XBPS_GIT_REVS" \
+            XBPS_ALLOW_CHROOT_BREAKOUT="$XBPS_ALLOW_CHROOT_BREAKOUT" \
+            ${XBPS_ALT_REPOSITORY:+XBPS_ALT_REPOSITORY=$XBPS_ALT_REPOSITORY} \
+            $XBPS_COMMONDIR/chroot-style/${XBPS_CHROOT_CMD:=uunshare}.sh \
+            $XBPS_MASTERDIR $XBPS_DISTDIR "$XBPS_HOSTDIR" "$XBPS_CHROOT_CMD_ARGS" \
+            /void-packages/xbps-src $XBPS_OPTIONS $action $pkg
+        rv=$?
+    fi
+
+    return $rv
+}
+
+chroot_sync_repodata() {
+    local f= hostdir= confdir= crossconfdir=
+
+    # always start with an empty xbps.d
+    confdir=$XBPS_MASTERDIR/etc/xbps.d
+    crossconfdir=$XBPS_MASTERDIR/$XBPS_CROSS_BASE/etc/xbps.d
+
+    [ -d $confdir ] && rm -rf $confdir
+    [ -d $crossconfdir ] && rm -rf $crossconfdir
+
+    if [ -d $XBPS_DISTDIR/etc/xbps.d/custom ]; then
+        mkdir -p $confdir $crossconfdir
+        cp -f $XBPS_DISTDIR/etc/xbps.d/custom/*.conf $confdir
+        cp -f $XBPS_DISTDIR/etc/xbps.d/custom/*.conf $crossconfdir
+    fi
+    if [ "$CHROOT_READY" ]; then
+        hostdir=/host
+    else
+        hostdir=$XBPS_HOSTDIR
+    fi
+
+    # Update xbps alternative repository if set.
+    mkdir -p $confdir
+    if [ -n "$XBPS_ALT_REPOSITORY" ]; then
+        ( \
+            echo "repository=$hostdir/binpkgs/${XBPS_ALT_REPOSITORY}"; \
+            echo "repository=$hostdir/binpkgs/${XBPS_ALT_REPOSITORY}/nonfree"; \
+            echo "repository=$hostdir/binpkgs/${XBPS_ALT_REPOSITORY}/debug"; \
+            ) > $confdir/00-repository-alt-local.conf
+        if [ "$XBPS_MACHINE" = "x86_64" ]; then
+            ( \
+                echo "repository=$hostdir/binpkgs/${XBPS_ALT_REPOSITORY}/multilib"; \
+                echo "repository=$hostdir/binpkgs/${XBPS_ALT_REPOSITORY}/multilib/nonfree"; \
+            ) >> $confdir/00-repository-alt-local.conf
+        fi
+    else
+        rm -f $confdir/00-repository-alt-local.conf
+    fi
+
+    # Disable 00-repository-main.conf from share/xbps.d (part of xbps)
+    ln -s /dev/null $confdir/00-repository-main.conf
+
+    # Generate xbps.d(5) configuration files for repositories
+    sed -e "s,/host,$hostdir,g" ${XBPS_DISTDIR}/etc/xbps.d/repos-local.conf \
+        > $confdir/10-repository-local.conf
+
+    # Install multilib conf for local repos if it exists for the architecture
+    if [ -s "${XBPS_DISTDIR}/etc/xbps.d/repos-local-${XBPS_MACHINE}-multilib.conf" ]; then
+        install -Dm644 ${XBPS_DISTDIR}/etc/xbps.d/repos-local-${XBPS_MACHINE}-multilib.conf \
+            $confdir/12-repository-local-multilib.conf
+    fi
+
+    # mirror_sed is a sed script: nop by default
+    local mirror_sed
+    if [ -n "$XBPS_MIRROR" ]; then
+        # when XBPS_MIRROR is set, mirror_sed rewrites remote repos
+        mirror_sed="s|^repository=http.*/current|repository=${XBPS_MIRROR}|"
+    fi
+
+    if [ "$XBPS_SKIP_REMOTEREPOS" ]; then
+        rm -f $confdir/*remote*
+    else
+        if [ -s "${XBPS_DISTDIR}/etc/xbps.d/repos-remote-${XBPS_MACHINE}.conf" ]; then
+            # If per-architecture base remote repo config exists, use that
+            sed -e "$mirror_sed" ${XBPS_DISTDIR}/etc/xbps.d/repos-remote-${XBPS_MACHINE}.conf \
+                > $confdir/20-repository-remote.conf
+        else
+            # Otherwise use generic base for musl or glibc
+            local suffix=
+            case "$XBPS_MACHINE" in
+                *-musl) suffix="-musl";;
+            esac
+            sed -e "$mirror_sed" ${XBPS_DISTDIR}/etc/xbps.d/repos-remote${suffix}.conf \
+                > $confdir/20-repository-remote.conf
+        fi
+        # Install multilib conf for remote repos if it exists for the architecture
+        if [ -s "${XBPS_DISTDIR}/etc/xbps.d/repos-remote-${XBPS_MACHINE}-multilib.conf" ]; then
+            sed -e "$mirror_sed" ${XBPS_DISTDIR}/etc/xbps.d/repos-remote-${XBPS_MACHINE}-multilib.conf \
+                > $confdir/22-repository-remote-multilib.conf
+        fi
+    fi
+
+    echo "syslog=false" > $confdir/00-xbps-src.conf
+
+    # Copy host repos to the cross root.
+    if [ -n "$XBPS_CROSS_BUILD" ]; then
+        rm -rf $XBPS_MASTERDIR/$XBPS_CROSS_BASE/etc/xbps.d
+        mkdir -p $XBPS_MASTERDIR/$XBPS_CROSS_BASE/etc/xbps.d
+        # Disable 00-repository-main.conf from share/xbps.d (part of xbps)
+        ln -s /dev/null $XBPS_MASTERDIR/$XBPS_CROSS_BASE/etc/xbps.d/00-repository-main.conf
+        # copy xbps.d files from host for local repos
+        cp ${XBPS_MASTERDIR}/etc/xbps.d/*local*.conf \
+            $XBPS_MASTERDIR/$XBPS_CROSS_BASE/etc/xbps.d
+        if [ "$XBPS_SKIP_REMOTEREPOS" ]; then
+            rm -f $crossconfdir/*remote*
+        else
+            # Same general logic as above, just into cross root, and no multilib
+            if [ -s "${XBPS_DISTDIR}/etc/xbps.d/repos-remote-${XBPS_TARGET_MACHINE}.conf" ]; then
+                sed -e "$mirror_sed" ${XBPS_DISTDIR}/etc/xbps.d/repos-remote-${XBPS_TARGET_MACHINE}.conf \
+                    > $crossconfdir/20-repository-remote.conf
+            else
+                local suffix=
+                case "$XBPS_TARGET_MACHINE" in
+                    *-musl) suffix="-musl"
+                esac
+                sed -e "$mirror_sed" ${XBPS_DISTDIR}/etc/xbps.d/repos-remote${suffix}.conf \
+                    > $crossconfdir/20-repository-remote.conf
+            fi
+        fi
+
+        echo "syslog=false" > $crossconfdir/00-xbps-src.conf
+    fi
+
+
+    # Copy xbps repository keys to the masterdir.
+    mkdir -p $XBPS_MASTERDIR/var/db/xbps/keys
+    cp -f $XBPS_COMMONDIR/repo-keys/*.plist $XBPS_MASTERDIR/var/db/xbps/keys
+
+    # Make sure to sync index for remote repositories.
+    if [ -z "$XBPS_SKIP_REMOTEREPOS" ]; then
+        msg_normal "xbps-src: updating repositories for host ($XBPS_MACHINE)...\n"
+        $XBPS_INSTALL_CMD $XBPS_INSTALL_ARGS -S
+    fi
+
+    if [ -n "$XBPS_CROSS_BUILD" ]; then
+        # Copy host keys to the target rootdir.
+        mkdir -p $XBPS_MASTERDIR/$XBPS_CROSS_BASE/var/db/xbps/keys
+        cp $XBPS_MASTERDIR/var/db/xbps/keys/*.plist \
+            $XBPS_MASTERDIR/$XBPS_CROSS_BASE/var/db/xbps/keys
+        # Make sure to sync index for remote repositories.
+        if [ -z "$XBPS_SKIP_REMOTEREPOS" ]; then
+            msg_normal "xbps-src: updating repositories for target ($XBPS_TARGET_MACHINE)...\n"
+            env -- XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE \
+                $XBPS_INSTALL_CMD $XBPS_INSTALL_ARGS -r $XBPS_MASTERDIR/$XBPS_CROSS_BASE -S
+        fi
+    fi
+
+    return 0
+}
diff --git a/common/xbps-src/shutils/common.sh b/common/xbps-src/shutils/common.sh
new file mode 100644
index 0000000..47ff365
--- /dev/null
+++ b/common/xbps-src/shutils/common.sh
@@ -0,0 +1,669 @@
+# vim: set ts=4 sw=4 et:
+
+run_func() {
+    local func="$1" desc="$2" funcname="$3" restoretrap= logpipe= logfile= teepid=
+
+    : ${funcname:=$func}
+
+    logpipe=$(mktemp -u -p ${XBPS_STATEDIR} ${pkgname}_${XBPS_CROSS_BUILD}_XXXXXXXX.logpipe) || exit 1
+    logfile=${XBPS_STATEDIR}/${pkgname}_${XBPS_CROSS_BUILD}_${funcname}.log
+
+    msg_normal "${pkgver:-xbps-src}: running ${desc:-${func}} ...\n"
+
+    set -E
+    restoretrap=$(trap -p ERR)
+    trap 'error_func $funcname $LINENO' ERR
+
+    mkfifo "$logpipe"
+    tee "$logfile" < "$logpipe" &
+    teepid=$!
+
+    $func &>"$logpipe"
+
+    wait $teepid
+    rm "$logpipe"
+
+    eval "$restoretrap"
+    set +E
+}
+
+ch_wrksrc() {
+    cd "$wrksrc" || msg_error "$pkgver: cannot access wrksrc directory [$wrksrc]\n"
+    if [ -n "$build_wrksrc" ]; then
+        cd "$build_wrksrc" || \
+            msg_error "$pkgver: cannot access build_wrksrc directory [$build_wrksrc]\n"
+    fi
+}
+
+# runs {pre,do,post}_X tripplets
+run_step() {
+    local step_name="$1" optional_step="$2" skip_post_hook="$3"
+
+    ch_wrksrc
+    run_pkg_hooks "pre-$step_name"
+
+  # Run pre_* Phase
+  if declare -f "pre_$step_name" >/dev/null; then
+      ch_wrksrc
+      run_func "pre_$step_name"
+  fi
+
+  ch_wrksrc
+  # Run do_* Phase
+  if declare -f "do_$step_name" >/dev/null; then
+      run_func "do_$step_name"
+  elif [ -n "$build_style" ]; then
+      if [ -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then
+          . $XBPS_BUILDSTYLEDIR/${build_style}.sh
+          if declare -f "do_$step_name" >/dev/null; then
+              run_func "do_$step_name"
+          elif [ ! "$optional_step" ]; then
+              msg_error "$pkgver: cannot find do_$step_name() in $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
+          fi
+      else
+          msg_error "$pkgver: cannot find build style $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
+      fi
+  elif [ ! "$optional_step" ]; then
+      msg_error "$pkgver: cannot find do_$step_name()!\n"
+  fi
+
+  # Run do_ phase hooks
+  run_pkg_hooks "do-$step_name"
+
+  # Run post_* Phase
+  if declare -f "post_$step_name" >/dev/null; then
+      ch_wrksrc
+      run_func "post_$step_name"
+  fi
+
+  if ! [ "$skip_post_hook" ]; then
+      ch_wrksrc
+      run_pkg_hooks "post-$step_name"
+  fi
+}
+
+error_func() {
+    local err=$?
+    local src=
+    local i=
+    [ -n "$1" -a -n "$2" ] || exit 1;
+
+    msg_red "$pkgver: $1: '${BASH_COMMAND}' exited with $err\n"
+    for ((i=1;i<${#FUNCNAME[@]};i++)); do
+        src=${BASH_SOURCE[$i]}
+        src=${src#$XBPS_DISTDIR/}
+        msg_red "  in ${FUNCNAME[$i]}() at $src:${BASH_LINENO[$i-1]}\n"
+        [ "${FUNCNAME[$i]}" = "$1" ] && break;
+    done
+    exit 1
+}
+
+exit_and_cleanup() {
+    local rval=$1
+
+    if [ -n "$XBPS_TEMP_MASTERDIR" -a "$XBPS_TEMP_MASTERDIR" != "1" ]; then
+        rm -rf "$XBPS_TEMP_MASTERDIR"
+    fi
+    exit ${rval:=0}
+}
+
+msg_red() {
+    # error messages in bold/red
+    [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
+    printf >&2 "=> ERROR: $@"
+    [ -n "$NOCOLORS" ] || printf >&2 "\033[m"
+}
+
+msg_red_nochroot() {
+    [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
+    printf >&2 "$@"
+    [ -n "$NOCOLORS" ] || printf >&2 "\033[m"
+}
+
+msg_error() {
+    msg_red "$@"
+    [ -n "$XBPS_INFORMATIVE_RUN" ] || exit 1
+}
+
+msg_warn() {
+    # warn messages in bold/yellow
+    [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[33m"
+    printf >&2 "=> WARNING: $@"
+    [ -n "$NOCOLORS" ] || printf >&2  "\033[m"
+}
+
+msg_warn_nochroot() {
+    [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[33m"
+    printf >&2 "=> WARNING: $@"
+    [ -n "$NOCOLORS" ] || printf >&2 "\033[m"
+}
+
+msg_normal() {
+    if [ -z "$XBPS_QUIET" ]; then
+        # normal messages in bold
+        [ -n "$NOCOLORS" ] || printf "\033[1m"
+        printf "=> $@"
+        [ -n "$NOCOLORS" ] || printf "\033[m"
+    fi
+}
+
+msg_normal_append() {
+    [ -n "$NOCOLORS" ] || printf "\033[1m"
+    printf "$@"
+    [ -n "$NOCOLORS" ] || printf "\033[m"
+}
+
+set_build_options() {
+    local f j pkgopts _pkgname
+    local -A options
+
+    if [ -z "$build_options" ]; then
+        return 0
+    fi
+
+    for f in ${build_options}; do
+        # Select build options from conf
+        export XBPS_CURRENT_PKG=${pkgname}
+        pkgopts="$(
+            . $XBPS_CONFIG_FILE 2>/dev/null
+            var="XBPS_PKG_OPTIONS_${XBPS_CURRENT_PKG//[^A-Za-z0-9_]/_}"
+            echo ${!var:-${XBPS_PKG_OPTIONS}}
+        )"
+        unset XBPS_CURRENT_PKG
+
+        # If pkg options were set in config(s), merge them with command line
+        if [ -n "$XBPS_ARG_PKG_OPTIONS" ]; then
+            if [ -n "$pkgopts" ]; then
+                pkgopts+=",$XBPS_ARG_PKG_OPTIONS"
+            else
+                pkgopts="$XBPS_ARG_PKG_OPTIONS"
+            fi
+        fi
+
+        OIFS="$IFS"; IFS=','
+        for j in ${pkgopts}; do
+            case "$j" in
+                "$f") options[$j]=1 ;;
+                "~$f") options[${j#\~}]=0 ;;
+            esac
+        done
+        IFS="$OIFS"
+    done
+
+    for f in ${build_options_default}; do
+        [[ -z "${options[$f]}" ]] && options[$f]=1
+    done
+
+    # Prepare final options.
+    for f in ${build_options}; do
+        if [[ ${options[$f]} -eq 1 ]]; then
+            eval export build_option_${f}=1
+        else
+            eval unset build_option_${f}
+        fi
+    done
+
+    # Re-read pkg template to get conditional vars.
+    if [ -z "$XBPS_BUILD_OPTIONS_PARSED" ]; then
+        source_file $XBPS_SRCPKGDIR/$pkgname/template
+        XBPS_BUILD_OPTIONS_PARSED=1
+        unset PKG_BUILD_OPTIONS
+        set_build_options
+        unset XBPS_BUILD_OPTIONS_PARSED
+        return 0
+    fi
+
+    # Sort pkg build options alphabetically.
+    export PKG_BUILD_OPTIONS=$(
+        for f in ${build_options}; do
+            [[ "${options[$f]}" -eq 1 ]] || printf '~'
+            printf '%s\n' "$f"
+        done | sort | tr -s '\n' ' '
+    )
+}
+
+source_file() {
+    local f="$1"
+
+    if [ ! -f "$f" -o ! -r "$f" ]; then
+        return 0
+    fi
+    if ! source "$f"; then
+        msg_error "xbps-src: failed to read $f!\n"
+    fi
+}
+
+run_pkg_hooks() {
+    local phase="$1" hookn f
+
+    eval unset -f hook
+    for f in ${XBPS_COMMONDIR}/hooks/${phase}/*.sh; do
+        [ ! -r $f ] && continue
+        hookn=${f##*/}
+        hookn=${hookn%.sh}
+        . $f
+        run_func hook "$phase hook: $hookn" ${phase}_${hookn}
+    done
+}
+
+unset_package_funcs() {
+    local f
+
+    for f in $(typeset -F); do
+        case "$f" in
+            *_package)
+                unset -f "$f"
+                ;;
+        esac
+    done
+}
+
+get_endian() {
+    local arch="${1%-*}"
+
+    case "$arch" in
+        aarch64)  echo "le";;
+        armv5tel) echo "le";;
+        armv6l)   echo "le";;
+        armv7l)   echo "le";;
+        i686)     echo "le";;
+        mipsel*)  echo "le";;
+        mips*)    echo "be";;
+        ppc*le)   echo "le";;
+        ppc*)     echo "be";;
+        x86_64)   echo "le";;
+    esac
+}
+
+get_libc() {
+    local arch="${1%-*}"
+
+    if [ "${arch}" = "$1" ]; then
+        echo "glibc"
+    else
+        echo "${1#${arch}-}"
+    fi
+}
+
+get_wordsize() {
+    local arch="${1%-*}"
+
+    case "$arch" in
+        aarch64)  echo "64";;
+        armv5tel) echo "32";;
+        armv6l)   echo "32";;
+        armv7l)   echo "32";;
+        i686)     echo "32";;
+        mipsel*)  echo "32";;
+        mips*)    echo "32";;
+        ppc64*)   echo "64";;
+        ppc*)     echo "32";;
+        x86_64)   echo "64";;
+    esac
+}
+
+get_no_atomic8() {
+    local arch="${1%-*}"
+
+    case "$arch" in
+        armv5tel) echo "yes";;
+        armv6l)   echo "yes";;
+        mips*)    echo "yes";;
+        ppcle)    echo "yes";;
+        ppc)      echo "yes";;
+    esac
+}
+
+get_subpkgs() {
+    local f
+
+    for f in $(typeset -F); do
+        case "$f" in
+            *_package)
+                echo "${f%_package}"
+                ;;
+        esac
+    done
+}
+
+setup_pkg() {
+    local pkg="$1" cross="$2" show_problems="$3"
+    local basepkg val _vars f dbgflags extrarepo
+
+    [ -z "$pkg" ] && return 1
+    basepkg=${pkg%-32bit}
+
+    # Start with a sane environment
+    unset -v PKG_BUILD_OPTIONS XBPS_CROSS_CFLAGS XBPS_CROSS_CXXFLAGS XBPS_CROSS_FFLAGS XBPS_CROSS_CPPFLAGS XBPS_CROSS_LDFLAGS XBPS_TARGET_QEMU_MACHINE
+    unset -v subpackages run_depends build_depends host_build_depends
+
+    unset_package_funcs
+
+    if [ -n "$cross" ]; then
+        source_file $XBPS_CROSSPFDIR/${cross}.sh
+
+        _vars="TARGET_MACHINE CROSS_TRIPLET CROSS_CFLAGS CROSS_CXXFLAGS CROSS_FFLAGS TARGET_QEMU_MACHINE"
+        for f in ${_vars}; do
+            eval val="\$XBPS_$f"
+            if [ -z "$val" ]; then
+                echo "ERROR: XBPS_$f is not defined!"
+                exit 1
+            fi
+        done
+
+        export XBPS_CROSS_BASE=/usr/$XBPS_CROSS_TRIPLET
+        export XBPS_TARGET_QEMU_MACHINE
+
+        XBPS_INSTALL_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_INSTALL_CMD -c /host/repocache-$XBPS_TARGET_MACHINE -r $XBPS_CROSS_BASE"
+        XBPS_QUERY_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_QUERY_CMD -c /host/repocache-$XBPS_TARGET_MACHINE -r $XBPS_CROSS_BASE"
+        XBPS_RECONFIGURE_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_RECONFIGURE_CMD -r $XBPS_CROSS_BASE"
+        XBPS_REMOVE_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_REMOVE_CMD -r $XBPS_CROSS_BASE"
+        XBPS_RINDEX_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_RINDEX_CMD"
+        XBPS_UHELPER_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE xbps-uhelper -r $XBPS_CROSS_BASE"
+        XBPS_CHECKVERS_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE xbps-checkvers -r $XBPS_CROSS_BASE"
+    else
+        export XBPS_TARGET_MACHINE=${XBPS_ARCH:-$XBPS_MACHINE}
+        unset XBPS_CROSS_BASE XBPS_CROSS_LDFLAGS XBPS_CROSS_FFLAGS
+        unset XBPS_CROSS_CFLAGS XBPS_CROSS_CXXFLAGS XBPS_CROSS_CPPFLAGS
+        unset XBPS_CROSS_RUSTFLAGS XBPS_CROSS_RUST_TARGET
+
+        XBPS_INSTALL_XCMD="$XBPS_INSTALL_CMD"
+        XBPS_QUERY_XCMD="$XBPS_QUERY_CMD"
+        XBPS_RECONFIGURE_XCMD="$XBPS_RECONFIGURE_CMD"
+        XBPS_REMOVE_XCMD="$XBPS_REMOVE_CMD"
+        XBPS_RINDEX_XCMD="$XBPS_RINDEX_CMD"
+        XBPS_UHELPER_XCMD="$XBPS_UHELPER_CMD"
+        XBPS_CHECKVERS_XCMD="$XBPS_CHECKVERS_CMD"
+    fi
+
+    export XBPS_ENDIAN=$(get_endian ${XBPS_MACHINE})
+    export XBPS_TARGET_ENDIAN=$(get_endian ${XBPS_TARGET_MACHINE})
+    export XBPS_LIBC=$(get_libc ${XBPS_MACHINE})
+    export XBPS_TARGET_LIBC=$(get_libc ${XBPS_TARGET_MACHINE})
+    export XBPS_WORDSIZE=$(get_wordsize ${XBPS_MACHINE})
+    export XBPS_TARGET_WORDSIZE=$(get_wordsize ${XBPS_TARGET_MACHINE})
+    export XBPS_NO_ATOMIC8=$(get_no_atomic8 ${XBPS_MACHINE})
+    export XBPS_TARGET_NO_ATOMIC8=$(get_no_atomic8 ${XBPS_TARGET_MACHINE})
+
+    export XBPS_INSTALL_XCMD XBPS_QUERY_XCMD XBPS_RECONFIGURE_XCMD \
+        XBPS_REMOVE_XCMD XBPS_RINDEX_XCMD XBPS_UHELPER_XCMD
+
+    # Source all sourcepkg environment setup snippets.
+    # Source all subpkg environment setup snippets.
+    for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
+        source_file "$f"
+    done
+    for f in ${XBPS_COMMONDIR}/environment/setup/*.sh; do
+        source_file "$f"
+    done
+
+    if [ ! -f ${XBPS_SRCPKGDIR}/${basepkg}/template ]; then
+        msg_error "xbps-src: unexistent file: ${XBPS_SRCPKGDIR}/${basepkg}/template\n"
+    fi
+    if [ -n "$cross" ]; then
+        export CROSS_BUILD="$cross"
+        source_file ${XBPS_SRCPKGDIR}/${basepkg}/template
+    else
+        unset CROSS_BUILD
+        source_file ${XBPS_SRCPKGDIR}/${basepkg}/template
+    fi
+
+
+    # Check if required vars weren't set.
+    _vars="pkgname version short_desc revision homepage license"
+    for f in ${_vars}; do
+        eval val="\$$f"
+        if [ -z "$val" -o -z "$f" ]; then
+            msg_error "\"$f\" not set on $pkgname template.\n"
+        fi
+    done
+
+    # Check if version is valid.
+    case "$version" in
+        *-*) msg_error "version contains invalid character: -\n";;
+        *_*) msg_error "version contains invalid character: _\n";;
+    esac
+    case "$version" in
+        *[0-9]*) : good ;;
+        *) msg_error "version must contain at least one digit.\n";;
+    esac
+
+    # Check if base-chroot is already installed.
+    if [ -z "$bootstrap" -a -z "$CHROOT_READY" -a "z$show_problems" != "zignore-problems" ]; then
+        msg_red "${pkg} is not a bootstrap package and cannot be built without it.\n"
+        msg_error "Please install bootstrap packages and try again.\n"
+    fi
+
+    sourcepkg="${pkgname}"
+    if [ -z "$subpackages" ]; then
+        subpackages="$(get_subpkgs)"
+    fi
+
+    if [ -h $XBPS_SRCPKGDIR/$basepkg ]; then
+        # Source all subpkg environment setup snippets.
+        for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
+            source_file "$f"
+        done
+        pkgname=$pkg
+        if ! declare -f ${basepkg}_package >/dev/null; then
+            msg_error "$pkgname: missing ${basepkg}_package() function!\n"
+        fi
+    fi
+
+    pkgver="${pkg}-${version}_${revision}"
+
+    # If build_style() unset, a do_install() function must be defined.
+    if [ -z "$build_style" ]; then
+        # Check that at least do_install() is defined.
+        if ! declare -f do_install >/dev/null; then
+            msg_error "$pkgver: missing do_install() function!\n"
+        fi
+    fi
+
+    FILESDIR=$XBPS_SRCPKGDIR/$sourcepkg/files
+    PATCHESDIR=$XBPS_SRCPKGDIR/$sourcepkg/patches
+    DESTDIR=$XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/${sourcepkg}-${version}
+    PKGDESTDIR=$XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/${pkg}-${version}
+
+    : ${XBPS_MAKEJOBS:=1}
+    export XBPS_ORIG_MAKEJOBS=${XBPS_ORIG_MAKEJOBS:=$XBPS_MAKEJOBS}
+    if [ -n "$disable_parallel_build" ]; then
+        XBPS_MAKEJOBS=1
+    fi
+    makejobs="-j$XBPS_MAKEJOBS"
+    if [ -n "$XBPS_BINPKG_EXISTS" ]; then
+        local _binpkgver="$($XBPS_QUERY_XCMD -R -ppkgver $pkgver 2>/dev/null)"
+        if [ "$_binpkgver" = "$pkgver" ]; then
+            if [ -z "$XBPS_DEPENDENCY" ]; then
+                local _repo="$($XBPS_QUERY_XCMD -R -prepository $pkgver 2>/dev/null)"
+                msg_normal "xbps-src: $pkgver: found ($XBPS_TARGET_MACHINE) ($_repo)\n"
+            fi
+            exit_and_cleanup
+        fi
+    fi
+
+    if [ -z "$XBPS_DEBUG_PKGS" -o "$repository" = "nonfree" ]; then
+        nodebug=yes
+    fi
+    # -g is required to build -dbg packages.
+    if [ -z "$nodebug" ]; then
+        dbgflags="-g"
+    fi
+
+    # build profile is used always in order to expose the host triplet,
+    # but the compiler flags from it are only used when not crossing
+    if [ -z "$CHROOT_READY" ]; then
+        source_file ${XBPS_COMMONDIR}/build-profiles/bootstrap.sh
+    else
+        source_file ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh
+    fi
+
+    set_build_options
+
+    export CFLAGS="$XBPS_CFLAGS $XBPS_CROSS_CFLAGS $CFLAGS $dbgflags"
+    export CXXFLAGS="$XBPS_CXXFLAGS $XBPS_CROSS_CXXFLAGS $CXXFLAGS $dbgflags"
+    export FFLAGS="$XBPS_FFLAGS $XBPS_CROSS_FFLAGS $FFLAGS $dbgflags"
+    export CPPFLAGS="$XBPS_CPPFLAGS $XBPS_CROSS_CPPFLAGS $CPPFLAGS"
+    export LDFLAGS="$XBPS_LDFLAGS $XBPS_CROSS_LDFLAGS $LDFLAGS"
+
+    export BUILD_CC="cc"
+    export BUILD_CXX="c++"
+    export BUILD_CPP="cpp"
+    export BUILD_FC="gfortran"
+    export BUILD_LD="ld"
+    export BUILD_CFLAGS="$XBPS_CFLAGS"
+    export BUILD_CXXFLAGS="$XBPS_CXXFLAGS"
+    export BUILD_CPPFLAGS="$XBPS_CPPFLAGS"
+    export BUILD_LDFLAGS="$XBPS_LDFLAGS"
+    export BUILD_FFLAGS="$XBPS_FFLAGS"
+
+    export CC_FOR_BUILD="cc"
+    export CXX_FOR_BUILD="g++"
+    export CPP_FOR_BUILD="cpp"
+    export FC_FOR_BUILD="gfortran"
+    export LD_FOR_BUILD="ld"
+    export PKG_CONFIG_FOR_BUILD="/usr/bin/pkg-config"
+    export CFLAGS_FOR_BUILD="$XBPS_CFLAGS"
+    export CXXFLAGS_FOR_BUILD="$XBPS_CXXFLAGS"
+    export CPPFLAGS_FOR_BUILD="$XBPS_CPPFLAGS"
+    export LDFLAGS_FOR_BUILD="$XBPS_LDFLAGS"
+    export FFLAGS_FOR_BUILD="$XBPS_FFLAGS"
+
+    if [ -n "$cross" ]; then
+        # Regular tools names
+        export CC="${XBPS_CROSS_TRIPLET}-gcc"
+        export CXX="${XBPS_CROSS_TRIPLET}-c++"
+        export CPP="${XBPS_CROSS_TRIPLET}-cpp"
+        export FC="${XBPS_CROSS_TRIPLET}-gfortran"
+        export GCC="$CC"
+        export LD="${XBPS_CROSS_TRIPLET}-ld"
+        export AR="${XBPS_CROSS_TRIPLET}-ar"
+        export AS="${XBPS_CROSS_TRIPLET}-as"
+        export RANLIB="${XBPS_CROSS_TRIPLET}-ranlib"
+        export STRIP="${XBPS_CROSS_TRIPLET}-strip"
+        export OBJDUMP="${XBPS_CROSS_TRIPLET}-objdump"
+        export OBJCOPY="${XBPS_CROSS_TRIPLET}-objcopy"
+        export NM="${XBPS_CROSS_TRIPLET}-nm"
+        export READELF="${XBPS_CROSS_TRIPLET}-readelf"
+        export PKG_CONFIG="${XBPS_CROSS_TRIPLET}-pkg-config"
+        # Target tools
+        export CC_target="$CC"
+        export CXX_target="$CXX"
+        export CPP_target="$CPP"
+        export GCC_target="$GCC"
+        export FC_target="$FC"
+        export LD_target="$LD"
+        export AR_target="$AR"
+        export AS_target="$AS"
+        export RANLIB_target="$RANLIB"
+        export STRIP_target="$STRIP"
+        export OBJDUMP_target="$OBJDUMP"
+        export OBJCOPY_target="$OBJCOPY"
+        export NM_target="$NM"
+        export READELF_target="$READELF"
+        # Target flags
+        export CFLAGS_target="$CFLAGS"
+        export CXXFLAGS_target="$CXXFLAGS"
+        export CPPFLAGS_target="$CPPFLAGS"
+        export LDFLAGS_target="$LDFLAGS"
+	export FFLAGS_target="$FFLAGS"
+        # Host tools
+        export CC_host="cc"
+        export CXX_host="g++"
+        export CPP_host="cpp"
+        export GCC_host="$CC_host"
+        export FC_host="gfortran"
+        export LD_host="ld"
+        export AR_host="ar"
+        export AS_host="as"
+        export RANLIB_host="ranlib"
+        export STRIP_host="strip"
+        export OBJDUMP_host="objdump"
+        export OBJCOPY_host="objcopy"
+        export NM_host="nm"
+        export READELF_host="readelf"
+        # Host flags
+        export CFLAGS_host="$XBPS_CFLAGS"
+        export CXXFLAGS_host="$XBPS_CXXFLAGS"
+        export CPPFLAGS_host="$XBPS_CPPFLAGS"
+        export LDFLAGS_host="$XBPS_LDFLAGS"
+	export FFLAGS_host="$XBPS_FFLAGS"
+        # Rust flags which are passed to rustc
+        export RUSTFLAGS="$XBPS_CROSS_RUSTFLAGS"
+        # Rust target, which differs from our triplets
+        export RUST_TARGET="$XBPS_CROSS_RUST_TARGET"
+        # Rust build, which is the host system, may also differ
+        export RUST_BUILD="$XBPS_RUST_TARGET"
+    else
+        # Target flags from build-profile
+        export CFLAGS="$XBPS_TARGET_CFLAGS $CFLAGS"
+        export CXXFLAGS="$XBPS_TARGET_CXXFLAGS $CXXFLAGS"
+        export FFLAGS="$XBPS_TARGET_FFLAGS $FFLAGS"
+        export CPPFLAGS="$XBPS_TARGET_CPPFLAGS $CPPFLAGS"
+        export LDFLAGS="$XBPS_TARGET_LDFLAGS $LDFLAGS"
+        # Tools
+        export CC="cc"
+        export CXX="g++"
+        export CPP="cpp"
+        export GCC="$CC"
+        export FC="gfortran"
+        export LD="ld"
+        export AR="ar"
+        export AS="as"
+        export RANLIB="ranlib"
+        export STRIP="strip"
+        export OBJDUMP="objdump"
+        export OBJCOPY="objcopy"
+        export NM="nm"
+        export READELF="readelf"
+        export PKG_CONFIG="pkg-config"
+        export RUST_TARGET="$XBPS_RUST_TARGET"
+        export RUST_BUILD="$XBPS_RUST_TARGET"
+        # Unset cross evironment variables
+        unset CC_target CXX_target CPP_target GCC_target FC_target LD_target AR_target AS_target
+        unset RANLIB_target STRIP_target OBJDUMP_target OBJCOPY_target NM_target READELF_target
+        unset CFLAGS_target CXXFLAGS_target CPPFLAGS_target LDFLAGS_target FFLAGS_target
+        unset CC_host CXX_host CPP_host GCC_host FC_host LD_host AR_host AS_host
+        unset RANLIB_host STRIP_host OBJDUMP_host OBJCOPY_host NM_host READELF_host
+        unset CFLAGS_host CXXFLAGS_host CPPFLAGS_host LDFLAGS_host FFLAGS_host
+        unset RUSTFLAGS
+    fi
+
+    # Setup some specific package vars.
+    if [ -z "$wrksrc" ]; then
+        wrksrc="$XBPS_BUILDDIR/${sourcepkg}-${version}"
+    else
+        wrksrc="$XBPS_BUILDDIR/$wrksrc"
+    fi
+
+    if [ "$cross" -a "$nocross" -a "$show_problems" != "ignore-problems" ]; then
+        msg_red "$pkgver: cannot be cross compiled, exiting...\n"
+        msg_red "$pkgver: $nocross\n"
+        exit 2
+    elif [ "$broken" -a "$show_problems" != "ignore-problems" ]; then
+        msg_red "$pkgver: cannot be built, it's currently broken; see the build log:\n"
+        msg_red "$pkgver: $broken\n"
+        exit 2
+    fi
+
+    if [ -n "$restricted" -a -z "$XBPS_ALLOW_RESTRICTED" -a "$show_problems" != "ignore-problems" ]; then
+        msg_red "$pkgver: does not allow redistribution of sources/binaries (restricted license).\n"
+        msg_red "If you really need this software, run 'echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf'\n"
+        exit 2
+    fi
+
+    export XBPS_STATEDIR="${XBPS_BUILDDIR}/.xbps-${sourcepkg}"
+    export XBPS_WRAPPERDIR="${XBPS_STATEDIR}/wrappers"
+
+    mkdir -p $XBPS_STATEDIR $XBPS_WRAPPERDIR
+
+    source_file $XBPS_COMMONDIR/environment/build-style/${build_style}.sh
+
+    # Source all build-helper files that are defined
+    for f in $build_helper; do
+        if [ ! -r $XBPS_BUILDHELPERDIR/${f}.sh ];  then
+            msg_error "$pkgver: cannot find build helper $XBPS_BUILDHELPERDIR/${f}.sh!\n"
+        fi
+        . $XBPS_BUILDHELPERDIR/${f}.sh
+    done
+}
diff --git a/common/xbps-src/shutils/consistency_check.sh b/common/xbps-src/shutils/consistency_check.sh
new file mode 100644
index 0000000..cd70f4a
--- /dev/null
+++ b/common/xbps-src/shutils/consistency_check.sh
@@ -0,0 +1,81 @@
+# vim: set ts=4 sw=4 et:
+
+consistency_check_existing () {
+    while IFS=" " read -r dep origname deplabel; do
+        [ -f "$XBPS_SRCPKGDIR/$dep/template" ] && continue
+        case "$deplabel" in
+            makedepends|hostmakedepends|checkdepends)
+                msg_warn "unsatisfied $deplabel in $origname: $dep does not exist\n";
+                ;;
+            *) printf "%s %s %s\n" "$dep" "$origname" "$deplabel" ;;
+        esac
+    done
+}
+
+consistency_convert_pkgname () {
+    local origname= pkgname version= revision=
+    while IFS=" " read -r dep origname deplabel; do
+        case "$deplabel" in
+            makedepends|hostmakedepends|checkdepends)
+                printf "%s %s %s\n" "$dep" "$origname" "$deplabel"
+                continue
+                ;;
+        esac
+        case "$dep" in
+            *\<*|*\>*|*=*) 
+                printf "%s %s %s\n" "$dep" "$origname" "$deplabel"
+                continue
+                ;;
+        esac
+        if pkgname=$(xbps-uhelper getpkgname "$dep" 2> /dev/null) && \
+            version=$(xbps-uhelper getpkgversion "$dep" 2> /dev/null) && \
+            revision=$(xbps-uhelper getpkgrevision "$dep" 2> /dev/null); then
+            printf "%s %s %s\n" "${pkgname}>=${version}_${revision}" "$origname" "$deplabel"
+        else
+            printf "%s %s %s\n" "$dep>=0" "$origname" "$deplabel"
+        fi
+    done
+}
+
+consistency_check_smart () {
+    local pkgname= depdef= dep=
+    while IFS=" " read -r depdef origname deplabel; do
+        case "$deplabel" in
+            makedepends|hostmakedepends|checkdepends)
+                printf "%s %s %s\n" "$depdef" "$origname" "$deplabel"
+                continue
+                ;;
+        esac
+
+        dep=$(xbps-uhelper getpkgdepname "$depdef")
+
+        if [ ! -f "$XBPS_SRCPKGDIR/$dep/template" ]; then
+            msg_warn "unsatisfied $deplabel in $origname: $dep does not exist\n";
+            continue
+        fi
+        (
+            XBPS_TARGET_PKG=$dep
+            read_pkg
+            xbps-uhelper pkgmatch "$depdef" "${pkgname}-${version}_${revision}" && return
+            msg_red "unsatisfied $deplabel in $origname: $dep is $version, but required is $depdef\n";
+        )
+    done
+}
+
+consistency_check() {
+    local pkg= pkgname=
+    for pkg in "$XBPS_SRCPKGDIR"/*/template; do
+        pkg=${pkg%/*}
+        XBPS_TARGET_PKG=${pkg##*/}
+        (
+            read_pkg
+            [ "$depends" ] && printf "%s $pkgname depends\n" $depends
+            [ "$conflicts" ] && printf "%s $pkgname conflicts\n" $conflicts
+            [ -L "$XBPS_SRCPKGDIR/$XBPS_TARGET_PKG" ] && return
+            [ "$makedepends" ] && printf "%s $pkgname makedepends\n" $makedepends
+            [ "$hostmakedepends" ] && printf "%s $pkgname hostmakedepends\n" $hostmakedepends
+            [ "$checkdepends" ] && printf "%s $pkgname checkdepends\n" $checkdepends
+        )
+    done | grep -v "^virtual?" | sed "s/^[^ ]*?//" | consistency_check_existing | \
+        consistency_convert_pkgname | consistency_check_smart
+}
diff --git a/common/xbps-src/shutils/cross.sh b/common/xbps-src/shutils/cross.sh
new file mode 100644
index 0000000..5f65f38
--- /dev/null
+++ b/common/xbps-src/shutils/cross.sh
@@ -0,0 +1,136 @@
+# vim: set ts=4 sw=4 et:
+
+remove_pkg_cross_deps() {
+    local rval= tmplogf= prevs=0
+    [ -z "$XBPS_CROSS_BUILD" ] && return 0
+
+    cd $XBPS_MASTERDIR || return 1
+    msg_normal "${pkgver:-xbps-src}: removing autocrossdeps, please wait...\n"
+    tmplogf=$(mktemp) || exit 1
+
+    if [ -z "$XBPS_REMOVE_XCMD" ]; then
+        source_file $XBPS_CROSSPFDIR/${XBPS_CROSS_BUILD}.sh
+        XBPS_REMOVE_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE xbps-remove -r /usr/$XBPS_CROSS_TRIPLET"
+    fi
+
+    $XBPS_REMOVE_XCMD -Ryo > $tmplogf 2>&1
+    rval=$?
+    while [ $rval -eq 0 ]; do
+        local curs=$(stat -c %s $tmplogf)
+        if [ $curs -eq $prevs ]; then
+            break
+        fi
+        prevs=$curs
+        $XBPS_REMOVE_XCMD -Ryo >> $tmplogf 2>&1
+        rval=$?
+    done
+
+    if [ $rval -ne 0 ]; then
+        msg_red "${pkgver:-xbps-src}: failed to remove autocrossdeps:\n"
+        cat $tmplogf && rm -f $tmplogf
+        msg_error "${pkgver:-xbps-src}: cannot continue!\n"
+    fi
+    rm -f $tmplogf
+}
+
+prepare_cross_sysroot() {
+    local cross="$1"
+    local statefile="$XBPS_MASTERDIR/.xbps-${cross}-done"
+
+    [ -z "$cross" -o "$cross" = "" -o -f $statefile ] && return 0
+
+    # Check if the cross pkg is installed in host.
+    check_installed_pkg cross-${XBPS_CROSS_TRIPLET}-0.1_1
+    [ $? -eq 0 ] && return 0
+
+    # Check if the cross compiler pkg is available in repos, otherwise build it.
+    pkg_available cross-${XBPS_CROSS_TRIPLET}
+    rval=$?
+    if [ $rval -eq 0 ]; then
+        $XBPS_LIBEXECDIR/build.sh cross-${XBPS_CROSS_TRIPLET} cross-${XBPS_CROSS_TRIPLET} pkg || return $?
+    fi
+
+    # Check if cross-vpkg-dummy is installed.
+    check_installed_pkg cross-vpkg-dummy-0.30_1 $cross
+    [ $? -eq 0 ] && return 0
+
+    # Check for cross-vpkg-dummy available for the target arch, otherwise build it.
+    pkg_available 'cross-vpkg-dummy>=0.34_1' $cross
+    if [ $? -eq 0 ]; then
+        $XBPS_LIBEXECDIR/build.sh cross-vpkg-dummy bootstrap pkg $cross init || return $?
+    fi
+
+    msg_normal "Installing $cross cross pkg: cross-vpkg-dummy ...\n"
+    errlog=$(mktemp) || exit 1
+    $XBPS_INSTALL_XCMD -Syfd cross-vpkg-dummy &>$errlog
+    rval=$?
+    if [ $rval -ne 0 ]; then
+        msg_red "failed to install cross-vpkg-dummy (error $rval)\n"
+        cat $errlog
+        rm -f $errlog
+        msg_error "cannot continue due to errors above\n"
+    fi
+    rm -f $errlog
+    # Create top level symlinks in sysroot.
+    XBPS_ARCH=$XBPS_TARGET_MACHINE xbps-reconfigure -r $XBPS_CROSS_BASE -f base-files-cereus>=2022.07.03 &>/dev/null
+    # Create a sysroot/include and sysroot/lib symlink just in case.
+    ln -s usr/include ${XBPS_CROSS_BASE}/include
+    ln -s usr/lib ${XBPS_CROSS_BASE}/lib
+
+    touch -f $statefile
+
+    return 0
+}
+
+install_cross_pkg() {
+    local cross="$1" rval errlog
+
+    [ -z "$cross" -o "$cross" = "" ] && return 0
+
+    # Check if installed.
+    check_installed_pkg cross-${XBPS_CROSS_TRIPLET}-0.1_1
+    [ $? -eq 0 ] && return 0
+
+    # Check if the cross compiler pkg is available in repos, otherwise build it.
+    pkg_available cross-${XBPS_CROSS_TRIPLET}
+    rval=$?
+    if [ $rval -eq 0 ]; then
+        $XBPS_LIBEXECDIR/build.sh cross-${XBPS_CROSS_TRIPLET} cross-${XBPS_CROSS_TRIPLET} pkg || return $?
+    fi
+
+    errlog=$(mktemp) || exit 1
+    msg_normal "xbps-src: installing cross compiler: cross-${XBPS_CROSS_TRIPLET} ...\n"
+    $XBPS_INSTALL_CMD -Syfd cross-${XBPS_CROSS_TRIPLET} &>$errlog
+    rval=$?
+    if [ $rval -ne 0 -a $rval -ne 17 ]; then
+        msg_red "failed to install cross-${XBPS_CROSS_TRIPLET} (error $rval)\n"
+        cat $errlog
+        rm -f $errlog
+        msg_error "cannot continue due to errors above\n"
+    fi
+    rm -f $errlog
+
+    return 0
+}
+
+remove_cross_pkg() {
+    local cross="$1" rval
+
+    [ -z "$cross" -o "$cross" = "" ] && return 0
+
+    source_file ${XBPS_CROSSPFDIR}/${cross}.sh
+
+    if [ -z "$CHROOT_READY" ]; then
+        echo "ERROR: chroot mode not activated (install a bootstrap)."
+        exit 1
+    elif [ -z "$IN_CHROOT" ]; then
+        return 0
+    fi
+
+    msg_normal "Removing cross pkg: cross-${XBPS_CROSS_TRIPLET} ...\n"
+    $XBPS_REMOVE_CMD -Ry cross-${XBPS_CROSS_TRIPLET} &>/dev/null
+    rval=$?
+    if [ $rval -ne 0 ]; then
+        msg_error "failed to remove cross-${XBPS_CROSS_TRIPLET} (error $rval)\n"
+    fi
+}
diff --git a/common/xbps-src/shutils/pkgtarget.sh b/common/xbps-src/shutils/pkgtarget.sh
new file mode 100644
index 0000000..06fbcd8
--- /dev/null
+++ b/common/xbps-src/shutils/pkgtarget.sh
@@ -0,0 +1,138 @@
+# vim: set ts=4 sw=4 et:
+
+check_existing_pkg() {
+    local arch= curpkg=
+    if [ -z "$XBPS_PRESERVE_PKGS" ] || [ "$XBPS_BUILD_FORCEMODE" ]; then
+        return
+    fi
+    arch=$XBPS_TARGET_MACHINE
+    curpkg=$XBPS_REPOSITORY/$repository/$pkgver.$arch.xbps
+    if [ -e $curpkg ]; then
+        msg_warn "$pkgver: skipping build due to existing $curpkg\n"
+        exit 0
+    fi
+}
+
+check_pkg_arch() {
+    local cross="$1" _arch f match nonegation
+
+    if [ -n "$archs" ]; then
+        if [ -n "$cross" ]; then
+            _arch="$XBPS_TARGET_MACHINE"
+        elif [ -n "$XBPS_ARCH" ]; then
+            _arch="$XBPS_ARCH"
+        else
+            _arch="$XBPS_MACHINE"
+        fi
+        set -f
+        for f in ${archs}; do
+            set +f
+            nonegation=${f##\~*}
+            f=${f#\~}
+            case "${_arch}" in
+                $f) match=1; break ;;
+            esac
+        done
+        if [ -z "$nonegation" -a -n "$match" ] || [ -n "$nonegation" -a -z "$match" ]; then
+            msg_red "${pkgname}-${version}_${revision}: this package cannot be built for ${_arch}.\n"
+            exit 2
+        fi
+    fi
+}
+
+# Returns 1 if pkg is available in xbps repositories, 0 otherwise.
+pkg_available() {
+    local pkg="$1" cross="$2" pkgver
+
+    if [ -n "$cross" ]; then
+        pkgver=$($XBPS_QUERY_XCMD -R -ppkgver "${pkg}" 2>/dev/null)
+    else
+        pkgver=$($XBPS_QUERY_CMD -R -ppkgver "${pkg}" 2>/dev/null)
+    fi
+
+    if [ -z "$pkgver" ]; then
+        return 0
+    fi
+    return 1
+}
+
+remove_pkg_autodeps() {
+    local rval= tmplogf= errlogf= prevs=
+
+    cd $XBPS_MASTERDIR || return 1
+    msg_normal "${pkgver:-xbps-src}: removing autodeps, please wait...\n"
+    tmplogf=$(mktemp) || exit 1
+    errlogf=$(mktemp) || exit 1
+
+    remove_pkg_cross_deps
+    $XBPS_RECONFIGURE_CMD -a >> $tmplogf 2>&1
+    prevs=$(stat -c %s $tmplogf)
+    echo yes | $XBPS_REMOVE_CMD -Ryod 2>> $errlogf 1>> $tmplogf
+    rval=$?
+    while [ $rval -eq 0 ]; do
+        local curs=$(stat -c %s $tmplogf)
+        if [ $curs -eq $prevs ]; then
+            break
+        fi
+        prevs=$curs
+        echo yes | $XBPS_REMOVE_CMD -Ryod 2>> $errlogf 1>> $tmplogf
+        rval=$?
+    done
+
+    if [ $rval -ne 0 ]; then
+        msg_red "${pkgver:-xbps-src}: failed to remove autodeps: (returned $rval)\n"
+        cat $tmplogf && rm -f $tmplogf
+        cat $errlogf && rm -f $errlogf
+        msg_error "${pkgver:-xbps-src}: cannot continue!\n"
+    fi
+    rm -f $tmplogf
+    rm -f $errlogf
+}
+
+remove_pkg_wrksrc() {
+    if [ -d "$wrksrc" ]; then
+        msg_normal "$pkgver: cleaning build directory...\n"
+        rm -rf "$wrksrc" 2>/dev/null || chmod -R +wX "$wrksrc" # Needed to delete Go Modules
+        rm -rf "$wrksrc"
+    fi
+}
+
+remove_pkg_statedir() {
+    if [ -d "$XBPS_STATEDIR" ]; then
+        rm -rf "$XBPS_STATEDIR"
+    fi
+}
+
+remove_pkg() {
+    local cross="$1" _destdir f
+
+    [ -z $pkgname ] && msg_error "unexistent package, aborting.\n"
+
+    if [ -n "$cross" ]; then
+        _destdir="$XBPS_DESTDIR/$XBPS_CROSS_TRIPLET"
+    else
+        _destdir="$XBPS_DESTDIR"
+    fi
+
+    [ ! -d ${_destdir} ] && return
+
+    for f in ${sourcepkg} ${subpackages}; do
+        if [ -d "${_destdir}/${f}-${version}" ]; then
+            msg_normal "$f: removing files from destdir...\n"
+            rm -rf ${_destdir}/${f}-${version}
+        fi
+        if [ -d "${_destdir}/${f}-dbg-${version}" ]; then
+            msg_normal "$f: removing dbg files from destdir...\n"
+            rm -rf ${_destdir}/${f}-dbg-${version}
+        fi
+        if [ -d "${_destdir}/${f}-32bit-${version}" ]; then
+            msg_normal "$f: removing 32bit files from destdir...\n"
+            rm -rf ${_destdir}/${f}-32bit-${version}
+        fi
+        rm -f ${XBPS_STATEDIR}/${f}_${cross}_subpkg_install_done
+        rm -f ${XBPS_STATEDIR}/${f}_${cross}_prepkg_done
+    done
+    rm -f ${XBPS_STATEDIR}/${sourcepkg}_${cross}_install_done
+    rm -f ${XBPS_STATEDIR}/${sourcepkg}_${cross}_pre_install_done
+    rm -f ${XBPS_STATEDIR}/${sourcepkg}_${cross}_post_install_done
+}
diff --git a/common/xbps-src/shutils/purge_distfiles.sh b/common/xbps-src/shutils/purge_distfiles.sh
new file mode 100644
index 0000000..838ac75
--- /dev/null
+++ b/common/xbps-src/shutils/purge_distfiles.sh
@@ -0,0 +1,85 @@
+# Scan srcpkgs/*/template for hashes and distfiles to determine
+# obsolete sources/by_sha256 files and their corresponding
+# sources/<pkgname>-<version> files that can be purged
+
+
+purge_distfiles() {
+	readonly HASHLEN=64
+	if [ -z "$XBPS_SRCDISTDIR" ]; then
+		msg_error "The variable \$XBPS_SRCDISTDIR is not set."
+		exit 1
+	fi
+	#
+	# Scan all templates for their current distfiles and checksums (hashes)
+	#
+	declare -A my_hashes
+	templates=($(find srcpkgs -mindepth 1 -maxdepth 1 -type d -printf "srcpkgs/%f/template\n"))
+	max=${#templates[@]}
+	cur=0
+	if [ -z "$max" ]; then
+		msg_error "No srcpkgs/*/template files found. Wrong working directory?"
+		exit 1
+	fi
+	percent=-1
+	for template in ${templates[@]}; do
+		pkg=${template#*/}
+		pkg=${pkg%/*}
+		if [ ! -L "srcpkgs/$pkg" ]; then
+			checksum="$(grep -Ehrow [0-9a-f]{$HASHLEN} ${template}|sort|uniq|tr '\n' ' ')"
+			read -a _my_hashes <<< ${checksum}
+			i=0
+			while [ -n "${_my_hashes[$i]}" ]; do
+				hash="${_my_hashes[$i]}"
+				[ -z "${my_hashes[$hash]}" ] && my_hashes[$hash]=$template
+				i=$((i + 1))
+			done
+		fi
+		cur=$((cur + 1))
+		pnew=$((100 * cur / max))
+		if [ $pnew -ne $percent ]; then
+			percent=$pnew
+			printf "\rScanning templates  : %3d%% (%d/%d)" $percent $cur $max
+		fi
+	done
+	echo
+	echo "Number of hashes    : ${#my_hashes[@]}"
+
+	#
+	# Collect inodes of all distfiles in $XBPS_SRCDISTDIR
+	#
+	declare -A inodes
+	distfiles=($XBPS_SRCDISTDIR/*/*)
+	max=${#distfiles[@]}
+	if [ -z "$max" ]; then
+		msg_error "No distfiles files found in '$XBPS_SRCDISTDIR'"
+		exit 1
+	fi
+	cur=0
+	percent=-1
+	for distfile in ${distfiles[@]}; do
+		inode=$(stat "$distfile" --printf "%i")
+		if [ -z "${inodes[$inode]}" ]; then
+			inodes[$inode]="$distfile"
+		else
+			inodes[$inode]+="|$distfile"
+		fi
+		cur=$((cur + 1))
+		pnew=$((100 * cur / max))
+		if [ $pnew -ne $percent ]; then
+			percent=$pnew
+			printf "\rCollecting inodes   : %3d%% (%d/%d)" $percent $cur $max
+		fi
+	done
+	echo
+
+	hashes=($XBPS_SRCDISTDIR/by_sha256/*)
+	for file in ${hashes[@]}; do
+		hash_distfile=${file##*/}
+		hash=${hash_distfile:0:$HASHLEN}
+		[ -n "${my_hashes[$hash]}" ] && continue
+		inode=$(stat "$file" --printf "%i")
+		echo "Obsolete $hash (inode: $inode)"
+		( IFS="|"; for f in ${inodes[$inode]}; do rm -vf "$f"; rmdir "${f%/*}" 2>/dev/null; done )
+	done
+	echo "Done."
+}
diff --git a/common/xbps-src/shutils/show.sh b/common/xbps-src/shutils/show.sh
new file mode 100644
index 0000000..d781d07
--- /dev/null
+++ b/common/xbps-src/shutils/show.sh
@@ -0,0 +1,159 @@
+# vim: set ts=4 sw=4 et:
+
+show_pkg() {
+    local i=
+
+    echo "pkgname:	$pkgname"
+    echo "version:	$version"
+    echo "revision:	$revision"
+    for i in ${distfiles}; do
+        [ -n "$i" ] && echo "distfiles:	$i"
+    done
+    for i in ${checksum}; do
+        [ -n "$i" ] && echo "checksum:	$i"
+    done
+    for i in ${archs}; do
+        [ -n "$i" ] && echo "archs:		$i"
+    done
+    echo "maintainer:	$maintainer"
+    [ -n "$homepage" ] && echo "Upstream URL:	$homepage"
+    [ -n "$license" ] && echo "License(s):	$license"
+    [ -n "$changelog" ] && echo "Changelog:	$changelog"
+    [ -n "$build_style" ] && echo "build_style:	$build_style"
+    for i in $build_helper; do
+        [ -n "$i" ] && echo "build_helper:  $i"
+    done
+    for i in ${configure_args}; do
+        [ -n "$i" ] && echo "configure_args:	$i"
+    done
+    echo "short_desc:	$short_desc"
+    for i in ${subpackages}; do
+        [ -n "$i" ] && echo "subpackages:	$i"
+    done
+    set -f
+    for i in ${conf_files}; do
+        [ -n "$i" ] && echo "conf_files:	$i"
+    done
+    set +f
+    for i in ${replaces}; do
+        [ -n "$i" ] && echo "replaces:	$i"
+    done
+    for i in ${provides}; do
+        [ -n "$i" ] && echo "provides:	$i"
+    done
+    for i in ${conflicts}; do
+        [ -n "$i" ] && echo "conflicts:	$i"
+    done
+    local OIFS="$IFS"
+    IFS=','
+    for var in $1; do
+        IFS=$OIFS
+        if [ ${var} != ${var/'*'} ]
+        then
+            var="${var/'*'}"
+            [ -n "${!var}" ] && echo "$var:	${!var//$'\n'/' '}"
+        else
+            for val in ${!var}; do
+                [ -n "$val" ] && echo "$var:	$val"
+            done
+        fi
+    done
+    IFS="$OIFS"
+
+    return 0
+}
+
+show_pkg_deps() {
+    [ -f "${PKGDESTDIR}/rdeps" ] && cat ${PKGDESTDIR}/rdeps
+}
+
+show_pkg_files() {
+    [ -d ${PKGDESTDIR} ] && find ${PKGDESTDIR} -print
+}
+
+show_avail() {
+    check_pkg_arch "$XBPS_CROSS_BUILD" 2>/dev/null
+}
+
+show_eval_dep() {
+    local f x _pkgname _srcpkg found
+    local _dep="$1"
+    local _host="$2"
+    if [ -z "$CROSS_BUILD" ] || [ -z "$_host" ]; then
+        # ignore dependency on itself
+        [[ $_dep == $sourcepkg ]] && return
+    fi
+    if [ ! -f $XBPS_SRCPKGDIR/$_dep/template ]; then
+        msg_error "$pkgver: dependency '$_dep' does not exist!\n"
+    fi
+    # ignore virtual dependencies
+    [[ ${_dep%\?*} != ${_dep#*\?} ]] && _dep=${_dep#*\?}
+    unset found
+    # check for subpkgs
+    for x in ${subpackages}; do
+        [[ $_dep == $x ]] && found=1 && break
+    done
+    [[ $found ]] && return
+    _pkgname=${_dep/-32bit}
+    _srcpkg=$(readlink -f ${XBPS_SRCPKGDIR}/${_pkgname})
+    _srcpkg=${_srcpkg##*/}
+    echo $_srcpkg
+}
+
+show_pkg_build_depends() {
+    local f result
+    local _deps="$1"
+    local _hostdeps="$2"
+
+    result=$(mktemp) || exit 1
+
+    # build time deps
+    for f in ${_deps}; do
+        show_eval_dep $f "" >> $result
+    done
+    for f in ${_hostdeps}; do
+        show_eval_dep $f "hostdep" >> $result
+    done
+    sort -u $result
+    rm -f $result
+}
+
+show_pkg_build_deps() {
+    show_pkg_build_depends "${makedepends} $(setup_pkg_depends '' 1 1)" "${hostmakedepends}"
+}
+
+show_pkg_hostmakedepends() {
+    show_pkg_build_depends "" "${hostmakedepends}"
+}
+
+show_pkg_makedepends() {
+    show_pkg_build_depends "${makedepends}" ""
+}
+
+show_pkg_build_options() {
+    local f opt desc
+
+    [ -z "$PKG_BUILD_OPTIONS" ] && return 0
+
+    source $XBPS_COMMONDIR/options.description
+    msg_normal "$pkgver: the following build options are set:\n"
+    for f in ${PKG_BUILD_OPTIONS}; do
+        opt="${f#\~}"
+        eval desc="\${desc_option_${opt}}"
+        if [[ ${f:0:1} == '~' ]]; then
+            echo "   $opt: $desc (OFF)"
+        else
+            printf "   "
+            msg_normal_append "$opt: "
+            printf "$desc (ON)\n"
+        fi
+    done
+}
+
+show_pkg_shlib_provides() {
+    [ -f "${PKGDESTDIR}/shlib-provides" ] && cat ${PKGDESTDIR}/shlib-provides
+}
+
+show_pkg_shlib_requires() {
+    [ -f "${PKGDESTDIR}/shlib-requires" ] && cat ${PKGDESTDIR}/shlib-requires
+}
diff --git a/common/xbps-src/shutils/update_check.sh b/common/xbps-src/shutils/update_check.sh
new file mode 100644
index 0000000..0a62427
--- /dev/null
+++ b/common/xbps-src/shutils/update_check.sh
@@ -0,0 +1,210 @@
+# vim: set ts=4 sw=4 et:
+
+update_check() {
+    local i p url pkgurlname rx found_version consider
+    local update_override=$XBPS_SRCPKGDIR/$XBPS_TARGET_PKG/update
+    local original_pkgname=$pkgname
+    local urlpfx urlsfx
+    local -A fetchedurls
+
+    if [ -r $update_override ]; then
+        . $update_override
+        if [ "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
+            echo "using $XBPS_TARGET_PKG/update overrides" 1>&2
+        fi
+    fi
+
+    if ! type curl >/dev/null 2>&1; then
+        echo "ERROR: cannot find \`curl' executable!"
+        return 1
+    fi
+
+    export LC_ALL=C
+
+    if [ -z "$site" ]; then
+        case "$distfiles" in
+            # only consider versions those exist in ftp.gnome.org
+            *ftp.gnome.org*) ;;
+            *)
+                printf '%s\n' "$homepage" ;;
+        esac
+        for i in $distfiles; do
+            printf '%s\n' "${i%/*}/"
+        done
+    else
+        printf '%s\n' "$site"
+    fi |
+    # filter loop: if version are "folder" name based,
+    # substitute original url by every folder based ones (expand)
+    while IFS= read -r url; do
+        # default case: don't rewrite url
+        printf '%s\n' "$url"
+        if [ "$single_directory" ]; then
+            continue
+        fi
+        rx=
+        urlpfx="${url}"
+        urlsfx=
+        dirpfx=
+        case "$url" in
+            *.voidlinux.*|\
+              *sourceforge.net/sourceforge*|\
+              *code.google.com*|*googlecode*|\
+              *launchpad.net*|\
+              *cpan.*|\
+              *pythonhosted.org*|\
+              *github.com*|\
+              *//gitlab.*|\
+              *bitbucket.org*|\
+              *ftp.gnome.org*|\
+              *kernel.org/pub/linux/kernel/*|\
+              *cran.r-project.org/src/contrib*|\
+              *rubygems.org*|\
+              *crates.io*|\
+              *codeberg.org*|\
+              *hg.sr.ht*|\
+              *git.sr.ht*)
+                continue
+                ;;
+            *)
+                vdpfx=${vdprefix:-"|v|\\Q$pkgname\\E"}
+                vdsfx=${vdsuffix:-"|\\.x"}
+                match=$(grep -Po "^[^/]+//[^/]+(/.+)?/($vdpfx)(?=[-_.0-9]*[0-9](?<!\\Q$pkgname\\E)($vdsfx)/)" <<< "$url")
+                if [ "$?" = 0 ]; then
+                    urlpfx="${match%/*}/"
+                    dirpfx="${match##*/}"
+                    urlsfx="${url#$urlpfx}"
+                    urlsfx="${urlsfx#*/}"
+                    rx="href=[\"']?(\\Q$urlpfx\\E)?\\.?/?\\K\\Q$dirpfx\\E[-_.0-9]*[0-9]($vdsfx)[\"'/]"
+                fi
+                ;;
+        esac
+        if [ "$rx" ]; then
+            # substitute url if needed
+            if [ -n "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
+                echo "(folder) fetching $urlpfx and scanning with $rx" 1>&2
+            fi
+            skipdirs=
+            curl -A "xbps-src-update-check/$XBPS_SRC_VERSION" --max-time 10 -Lsk "$urlpfx" |
+                grep -Po -i "$rx" |
+                # sort -V places 1.1/ before 1/, but 1A/ before 1.1A/
+                sed -e 's:$:A:' -e 's:/A$:A/:' | sort -Vru | sed -e 's:A/$:/A:' -e 's:A$::' |
+                while IFS= read -r newver; do
+                    newurl="${urlpfx}${newver}${urlsfx}"
+                    if [ "$newurl" = "$url" ]; then
+                        skipdirs=yes
+                    fi
+                    if [ -z "$skipdirs" ]; then
+                        printf '%s\n' "$newurl"
+                    fi
+                done
+        fi
+    done |
+    while IFS= read -r url; do
+        rx=
+        if [ -z "$site" ]; then
+            case "$url" in
+            *sourceforge.net/sourceforge*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f5)"
+                url="https://sourceforge.net/projects/$pkgurlname/rss?limit=200";;
+            *code.google.com*|*googlecode*)
+                url="http://code.google.com/p/$pkgname/downloads/list";;
+            *launchpad.net*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f4)"
+                url="https://launchpad.net/$pkgurlname/+download";;
+            *cpan.*)
+                pkgname=${pkgname#perl-};;
+            *pythonhosted.org*)
+                pkgname=${pkgname#python-}
+                pkgname=${pkgname#python3-}
+                url="https://pypi.org/simple/$pkgname";;
+            *github.com*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
+                url="https://github.com/$pkgurlname/tags"
+                rx='/archive/refs/tags/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz")';;
+            *//gitlab.*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f1-5)"
+                url="$pkgurlname/tags"
+                rx='/archive/[^/]+/\Q'"$pkgname"'\E-v?\K[\d.]+(?=\.tar\.gz")';;
+            *bitbucket.org*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
+                url="https://bitbucket.org/$pkgurlname/downloads"
+                rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar)';;
+            *ftp.gnome.org*|*download.gnome.org*)
+                : ${pattern="\Q$pkgname\E-\K(0|[13]\.[0-9]*[02468]|[4-9][0-9]+)\.[0-9.]*[0-9](?=)"}
+                url="https://download.gnome.org/sources/$pkgname/cache.json";;
+            *kernel.org/pub/linux/kernel/*)
+                rx=linux-'\K'${version%.*}'[\d.]+(?=\.tar\.xz)';;
+            *cran.r-project.org/src/contrib*)
+                rx='\b\Q'"${pkgname#R-cran-}"'\E_\K\d+(\.\d+)*(-\d+)?(?=\.tar)';;
+            *rubygems.org*)
+                url="https://rubygems.org/gems/${pkgname#ruby-}"
+                rx='href="/gems/'${pkgname#ruby-}'/versions/\K[\d.]*(?=")' ;;
+            *crates.io*)
+                url="https://crates.io/api/v1/crates/${pkgname#rust-}"
+                rx='/crates/'${pkgname#rust-}'/\K[0-9.]*(?=/download)' ;;
+            *codeberg.org*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
+                url="https://codeberg.org/$pkgurlname/releases"
+                rx='/archive/\K[\d.]+(?=\.tar\.gz)' ;;
+            *hg.sr.ht*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
+                url="https://hg.sr.ht/$pkgurlname/tags"
+                rx='/archive/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz")';;
+            *git.sr.ht*)
+                pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
+                url="https://git.sr.ht/$pkgurlname/refs"
+                rx='/archive/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz")';;
+            *pkgs.fedoraproject.org*)
+                url="https://pkgs.fedoraproject.org/repo/pkgs/$pkgname" ;;
+            esac
+        fi
+
+        rx=${pattern:-$rx}
+        rx=${rx:-'(?<!-)\b\Q'"$pkgname"'\E[-_]?((src|source)[-_])?v?\K([^-/_\s]*?\d[^-/_\s]*?)(?=(?:[-_.](?:src|source|orig))?\.(?:[jt]ar|shar|t[bglx]z|tbz2|zip))\b'}
+
+        if [ "${fetchedurls[$url]}" ]; then
+            if [ -n "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
+                echo "already fetched $url" 1>&2
+            fi
+            continue
+        fi
+
+        if [ -n "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
+            echo "fetching $url and scanning with $rx" 1>&2
+        fi
+        curl -H 'Accept: text/html,application/xhtml+xml,application/xml,text/plain,application/rss+xml' -A "xbps-src-update-check/$XBPS_SRC_VERSION" --max-time 10 -Lsk "$url" |
+            grep -Po -i "$rx"
+        fetchedurls[$url]=yes
+    done |
+    tr _ . |
+    sort -Vu |
+    {
+        grep . || echo "NO VERSION found for $original_pkgname" 1>&2
+    } |
+    while IFS= read -r found_version; do
+        if [ -n "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
+            echo "found version $found_version"
+        fi
+        consider=true
+        p="$ignore "
+        while [ -n "$p" ]; do
+            i=${p%% *}
+            p=${p#* }
+            case "$found_version" in
+            $i)
+                consider=false
+                if [ -n "$XBPS_UPDATE_CHECK_VERBOSE" ]; then
+                    echo "ignored $found_version due to $i"
+                fi
+            esac
+        done
+        if $consider; then
+            xbps-uhelper cmpver "$original_pkgname-${version}_1" \
+                "$original_pkgname-$(printf %s "$found_version" | tr - .)_1"
+            if [ $? = 255 ]; then
+                echo "${original_pkgname}-${version} -> ${original_pkgname}-${found_version}"
+            fi
+        fi
+    done
+}
diff --git a/common/xbps-src/shutils/update_hash_cache.sh b/common/xbps-src/shutils/update_hash_cache.sh
new file mode 100644
index 0000000..4fb5d6b
--- /dev/null
+++ b/common/xbps-src/shutils/update_hash_cache.sh
@@ -0,0 +1,12 @@
+# vim: set ts=4 sw=4 et:
+
+update_hash_cache() {
+    local cache="$XBPS_SRCDISTDIR/by_sha256"
+    local distfile curfile
+    mkdir -p "$cache"
+    find "$XBPS_SRCDISTDIR" -type f | grep -v by_sha256 | while read -r distfile; do
+        cksum=$($XBPS_DIGEST_CMD "$distfile")
+        curfile="${distfile##*/}"
+        ln -vf "$distfile" "${cache}/${cksum}_${curfile}"
+    done
+}
diff --git a/etc/defaults.conf b/etc/defaults.conf
new file mode 100644
index 0000000..e3876cd
--- /dev/null
+++ b/etc/defaults.conf
@@ -0,0 +1,160 @@
+# --*-- shell --*--
+#
+# etc/defaults.conf
+#	default configuration of etc/conf
+#
+# DO NOT EDIT THIS FILE DIRECTLY; IT MAY BE REPLACED DURING UPDATES,
+# EDIT etc/conf INSTEAD.
+#
+# To disable an option comment it out, don't set it to another value i.e:
+#    FOO=no 	-> wrong
+#    #FOO=yes	-> correct
+#
+# Please also use ${FOO} style for shell variables because some parsers
+# rely on this to work properly.
+#
+
+# [OPTIONAL]
+# Use an alternative mirror for remote repositories. This is more
+# convenient than modifying etc/xbps.d/repos-remote*.conf.
+#
+#XBPS_MIRROR=https://repo-us.voidlinux.org/current
+
+# [OPTIONAL]
+# Enable optional arguments to xbps-install(1) for the host system.
+# Currently used in the 'binary-bootstrap' and 'bootstrap-update' targets.
+#
+# NOTE: local repositories are handled automatically by xbps-src,
+# and remote repositories can be changed by setting XBPS_MIRROR
+#
+#XBPS_INSTALL_ARGS=""
+
+# [OPTIONAL]
+# Native Compilation/Preprocessor flags for C/C++/Fortran. Additional settings
+# for the target architecture are also declared in common/build-profiles/<arch>.sh.
+#
+XBPS_CFLAGS="-O2 -pipe"
+XBPS_CXXFLAGS="${XBPS_CFLAGS}"
+XBPS_FFLAGS="${XBPS_CFLAGS}"
+
+# [OPTIONAL]
+# Linker flags passed to the compiler.
+#
+#XBPS_LDFLAGS=""
+
+# [REQUIRED]
+# Command to execute to gain root privileges when using the `update-sys`
+# target to update your system.
+#
+XBPS_SUCMD="sudo /bin/sh -c"
+
+# [OPTIONAL]
+# Enable or disable ccache when building packages. The ccache directory
+# is stored in the hostdir, i.e hostdir/ccache. For go builds this enables
+# caching in hostdir/gocache.
+#
+#XBPS_CCACHE=yes
+
+# [OPTIONAL]
+# Enable or disable distcc when building packages. The distcc directory
+# is stored in the hostdir, i.e hostdir/distcc.
+#
+#XBPS_DISTCC=yes
+#XBPS_DISTCC_HOSTS=""
+
+# [OPTIONAL]
+# Number of parallel jobs to execute when building packages that
+# use make(1) or alike commands.
+#
+#XBPS_MAKEJOBS=4
+
+# [OPTIONAL]
+# Enable recording git revisions in final binary packages; enable this
+# if you are sure the package you are building is available in the
+# void-packages git repository.
+#
+#XBPS_USE_GIT_REVS=yes
+
+# [OPTIONAL]
+# Enable running the (optional) do_check() function of a package.
+# When set to 'full', will enable further testing for some packages.
+#
+#XBPS_CHECK_PKGS=yes
+#XBPS_CHECK_PKGS=full
+
+# [OPTIONAL]
+# Enable building -dbg subpackages with debugging symbols. Please note
+# that building with debugging symbols make take a long while in some
+# packages even on computers with a fast CPU; as well as needs lots of
+# RAM to properly build some packages.
+#
+#XBPS_DEBUG_PKGS=yes
+
+# [OPTIONAL]
+# Set the package compression format. See xbps-create(1) for available formats.
+#
+#XBPS_PKG_COMPTYPE=type
+
+# [OPTIONAL]
+# Set the repository compression format. See xbps-rindex(1) for available formats.
+#
+#XBPS_REPO_COMPTYPE=type
+
+# [OPTIONAL]
+# Enable or disable global package build options, these options apply
+# to all packages that support the matching options.
+#
+# To enable an option just define its option name; to disable an option
+# prefix it with ~. Options must be delimited by commas, i.e 'opt,~opt2,opt3,~opt4'
+#
+#XBPS_PKG_OPTIONS=opt,~opt2,opt3,~opt4
+
+# [OPTIONAL]
+# Enable or disable package build options. Note that per package build options
+# override the global options defined above for the matching package.
+#
+#XBPS_PKG_OPTIONS_foo=opt,~opt2,opt3,~opt4
+
+# [OPTIONAL]
+# Enable building package locally that are restricted legally for redistribution.
+# NOTE: you can't distribute the sources or binaries for such kind of packages.
+#
+#XBPS_ALLOW_RESTRICTED=yes
+
+# [OPTIONAL]
+# Set the preferred chroot style. Available styles at common/chroot-style/*.sh:
+#
+# 	- uunshare (uses xbps-uunshare(1), user namespaces)
+# 	- uchroot (uses xbps-uchroot(1), namespaces, setgid)
+# 	- bwrap (uses bwrap, external, does not need special permissions)
+#	- ethereal (uses root, needs no permissions, for disposable containers)
+#
+# The order is already set as shown above, but can be overriden below.
+# Additional arguments to the chroot style can be passed in via XBPS_CHROOT_CMD_ARGS.
+#
+#XBPS_CHROOT_CMD=uchroot
+#XBPS_CHROOT_CMD_ARGS=""
+
+# [OPTIONAL]
+# Enable to use the standard mtime of files. Otherwise it will be rewritten to
+# the HEAD commit time. Requires git when disabled.
+#
+#XBPS_USE_BUILD_MTIME=yes
+
+# [OPTIONAL]
+# Enable continuous integration specific mode of operation. Currently this
+# disables do_check for some packages.
+#
+#XBPS_BUILD_ENVIRONMENT=void-packages-ci
+
+# [OPTIONAL]
+# When using the 'ethereal' chroot-style this switch must be activated, it is
+# meant as safeguard against users casually destroying their systems
+#
+#XBPS_ALLOW_CHROOT_BREAKOUT=yes
+
+# [OPTIONAL]
+# Skip building package if it exists in local repository, emitting warning.
+# When unset, newly build package overwrites the older one.
+#
+#XBPS_PRESERVE_PKGS=yes
diff --git a/etc/defaults.virtual b/etc/defaults.virtual
new file mode 100644
index 0000000..083ab63
--- /dev/null
+++ b/etc/defaults.virtual
@@ -0,0 +1,38 @@
+# --*-- shell --*--
+#
+# etc/defaults.virtual
+#      default configuration of etc/virtual
+#
+# DO NOT EDIT THIS FILE DIRECTLY; IT MAY BE REPLACED DURING UPDATES,
+# EDIT etc/virtual INSTEAD.
+#
+# This file specifies a mapping between virtual packages and real packages
+# available in the source packages collection (srcpkgs).
+#
+# The format uses 2 arguments delimited by a blank: <vpkgname> <realpkgname>
+#
+# When building a package with "xbps-src", those dependencies declared like
+# "virtual?foo" will use the replacement package defined in `etc/virtual`.
+#
+# NOTE: this mapping is only there to be able to build a default package
+#       to resolve the virtual package dependency later on with xbps-install(1).
+#
+# NOTE: Create your own etc/virtual file to override these defaults.
+
+awk gawk
+emacs emacs
+java-environment openjdk8
+java-runtime openjdk8-jre
+libudev eudev-libudev
+nodejs-runtime nodejs
+ntp-daemon chrony
+phonon-backend phonon-backend-gstreamer
+phonon-qt5-backend phonon-qt5-backend-gstreamer
+rkt-stage1 rkt-stage1-coreos
+smtp-server opensmtpd
+tex texlive
+xserver-abi-input xorg-server
+xserver-abi-video xorg-server
+libGL libglvnd
+libEGL libglvnd
+libGLES libglvnd
diff --git a/etc/xbps.d/repos-local-x86_64-multilib.conf b/etc/xbps.d/repos-local-x86_64-multilib.conf
new file mode 100644
index 0000000..3c531e4
--- /dev/null
+++ b/etc/xbps.d/repos-local-x86_64-multilib.conf
@@ -0,0 +1,4 @@
+# DON'T EDIT THIS FILE
+# x86_64/glibc local repositories
+repository=/host/binpkgs/multilib
+repository=/host/binpkgs/multilib/nonfree
diff --git a/etc/xbps.d/repos-local.conf b/etc/xbps.d/repos-local.conf
new file mode 100644
index 0000000..916c3b7
--- /dev/null
+++ b/etc/xbps.d/repos-local.conf
@@ -0,0 +1,5 @@
+# DON'T EDIT THIS FILE
+# Local repositories
+repository=/host/binpkgs
+repository=/host/binpkgs/nonfree
+repository=/host/binpkgs/debug
diff --git a/etc/xbps.d/repos-remote-aarch64-musl.conf b/etc/xbps.d/repos-remote-aarch64-musl.conf
new file mode 100644
index 0000000..4c81aaa
--- /dev/null
+++ b/etc/xbps.d/repos-remote-aarch64-musl.conf
@@ -0,0 +1,4 @@
+# aarch64 voidlinux remote repositories
+repository=https://alpha.de.repo.voidlinux.org/current/aarch64
+repository=https://alpha.de.repo.voidlinux.org/current/aarch64/nonfree
+repository=https://alpha.de.repo.voidlinux.org/current/aarch64/debug
diff --git a/etc/xbps.d/repos-remote-aarch64.conf b/etc/xbps.d/repos-remote-aarch64.conf
new file mode 100644
index 0000000..4c81aaa
--- /dev/null
+++ b/etc/xbps.d/repos-remote-aarch64.conf
@@ -0,0 +1,4 @@
+# aarch64 voidlinux remote repositories
+repository=https://alpha.de.repo.voidlinux.org/current/aarch64
+repository=https://alpha.de.repo.voidlinux.org/current/aarch64/nonfree
+repository=https://alpha.de.repo.voidlinux.org/current/aarch64/debug
diff --git a/etc/xbps.d/repos-remote-musl.conf b/etc/xbps.d/repos-remote-musl.conf
new file mode 100644
index 0000000..5739465
--- /dev/null
+++ b/etc/xbps.d/repos-remote-musl.conf
@@ -0,0 +1,8 @@
+# voidlinux remote repositories (musl)
+repository=https://alpha.de.repo.voidlinux.org/current/musl
+repository=https://alpha.de.repo.voidlinux.org/current/musl/nonfree
+repository=https://alpha.de.repo.voidlinux.org/current/musl/debug
+
+# Cereus Linux remote repositories (musl)
+repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-core/x86_64-musl
+repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-extra/x86_64-musl
diff --git a/etc/xbps.d/repos-remote-x86_64-multilib.conf b/etc/xbps.d/repos-remote-x86_64-multilib.conf
new file mode 100644
index 0000000..e770aa1
--- /dev/null
+++ b/etc/xbps.d/repos-remote-x86_64-multilib.conf
@@ -0,0 +1,3 @@
+# voidlinux remote repositories (x86_64/glibc)
+repository=https://alpha.de.repo.voidlinux.org/current/multilib
+repository=https://alpha.de.repo.voidlinux.org/current/multilib/nonfree
diff --git a/etc/xbps.d/repos-remote.conf b/etc/xbps.d/repos-remote.conf
new file mode 100644
index 0000000..ca460ea
--- /dev/null
+++ b/etc/xbps.d/repos-remote.conf
@@ -0,0 +1,13 @@
+# voidlinux remote repositories (glibc)
+repository=https://alpha.de.repo.voidlinux.org/current
+repository=https://alpha.de.repo.voidlinux.org/current/nonfree
+repository=https://alpha.de.repo.voidlinux.org/current/debug
+
+# Cereus Linux remote repositories (glibc)
+repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-core/x86_64
+repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-extra/x86_64
+
+# Cereus Linux remote repositories (i686)
+repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-core/i686
+repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-extra/i686
+
diff --git a/pkglist b/pkglist
new file mode 100644
index 0000000..c9ce021
--- /dev/null
+++ b/pkglist
@@ -0,0 +1,83 @@
+These are the packages we are maintaining in both Core and Extra repositories.
+The rest of them are from Void team.
+
+Graphite-color-schemes
+Graphite-color-schemes-black
+Graphite-color-schemes-dark
+Graphite-color-schemes-light
+Graphite-color-schemes-nord-dark
+Graphite-color-schemes-nord-light
+Graphite-gtk-theme
+Graphite-gtk-theme-black
+Graphite-gtk-theme-black-compact
+Graphite-gtk-theme-compact
+Graphite-gtk-theme-dark
+Graphite-gtk-theme-dark-compact
+Graphite-gtk-theme-light
+Graphite-gtk-theme-light-compact
+Graphite-gtk-theme-nord-dark
+Graphite-gtk-theme-nord-dark-compact
+Graphite-gtk-theme-nord-light
+Graphite-gtk-theme-nord-light-compact
+Graphite-kvantum-theme
+Graphite-kvantum-theme-Nord-dark
+Graphite-kvantum-theme-Nord-light
+Graphite-kvantum-theme-black
+Graphite-kvantum-theme-dark
+Graphite-kvantum-theme-light
+Mint-Ice-Y-Dark
+Sierra-Dark-Fluxbox
+base-cereus
+base-chroot-cereus
+base-files-cereus
+blesh
+blesh-git
+brave-bin
+budgie-extras
+calamares
+calamares-cereus
+calamares-modules-cereus
+calmsky-icon-theme
+cereus-neofetch
+cereus-repo-core
+cereus-repo-extra
+cereus-wallpapers
+flat-remix-icewm-theme
+flat-remix-icon-theme-black
+flat-remix-icon-theme-blue
+flat-remix-icon-theme-brown
+flat-remix-icon-theme-cyan
+flat-remix-icon-theme-green
+flat-remix-icon-theme-grey
+flat-remix-icon-theme-magenta
+flat-remix-icon-theme-orange
+flat-remix-icon-theme-red
+flat-remix-icon-theme-teal
+flat-remix-icon-theme-violet
+flat-remix-icon-theme-yellow
+graphite-kvantum-theme
+jetbrains-mono-font
+librewolf-bin
+musl-locales
+nerd-fonts-symbols
+octoxbps-git
+picom-ibhagwan
+picom-jonaburg
+pixelitos-icon-theme
+plasma-fluxbox
+plasma-i3
+runit-cereus
+runit-cereus-apparmor
+vibrancy-icon-theme
+vibrancy-icon-theme-colors
+vibrancy-icon-theme-dark
+vibrancy-icon-theme-full-dark
+vibrancy-icon-theme-light
+vibrancy-icon-theme-nonmono-dark
+vibrancy-icon-theme-nonmono-light
+whatsdesk-bin
+whatsdesk-bin-i686
+whatsdesk-git
+xed-xapps
+xed-xapps-devel
+xidlehook
diff --git a/srcpkgs/Graphite-color-schemes-black b/srcpkgs/Graphite-color-schemes-black
new file mode 120000
index 0000000..e8793fb
--- /dev/null
+++ b/srcpkgs/Graphite-color-schemes-black
@@ -0,0 +1 @@
+Graphite-color-schemes
\ No newline at end of file
diff --git a/srcpkgs/Graphite-color-schemes-dark b/srcpkgs/Graphite-color-schemes-dark
new file mode 120000
index 0000000..e8793fb
--- /dev/null
+++ b/srcpkgs/Graphite-color-schemes-dark
@@ -0,0 +1 @@
+Graphite-color-schemes
\ No newline at end of file
diff --git a/srcpkgs/Graphite-color-schemes-light b/srcpkgs/Graphite-color-schemes-light
new file mode 120000
index 0000000..e8793fb
--- /dev/null
+++ b/srcpkgs/Graphite-color-schemes-light
@@ -0,0 +1 @@
+Graphite-color-schemes
\ No newline at end of file
diff --git a/srcpkgs/Graphite-color-schemes-nord-dark b/srcpkgs/Graphite-color-schemes-nord-dark
new file mode 120000
index 0000000..e8793fb
--- /dev/null
+++ b/srcpkgs/Graphite-color-schemes-nord-dark
@@ -0,0 +1 @@
+Graphite-color-schemes
\ No newline at end of file
diff --git a/srcpkgs/Graphite-color-schemes-nord-light b/srcpkgs/Graphite-color-schemes-nord-light
new file mode 120000
index 0000000..e8793fb
--- /dev/null
+++ b/srcpkgs/Graphite-color-schemes-nord-light
@@ -0,0 +1 @@
+Graphite-color-schemes
\ No newline at end of file
diff --git a/srcpkgs/Graphite-color-schemes/Graphite-color-schemes b/srcpkgs/Graphite-color-schemes/Graphite-color-schemes
new file mode 120000
index 0000000..e8793fb
--- /dev/null
+++ b/srcpkgs/Graphite-color-schemes/Graphite-color-schemes
@@ -0,0 +1 @@
+Graphite-color-schemes
\ No newline at end of file
diff --git a/srcpkgs/Graphite-color-schemes/template b/srcpkgs/Graphite-color-schemes/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/Graphite-gtk-theme-black b/srcpkgs/Graphite-gtk-theme-black
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-black
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-black-compact b/srcpkgs/Graphite-gtk-theme-black-compact
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-black-compact
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-compact b/srcpkgs/Graphite-gtk-theme-compact
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-compact
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-dark b/srcpkgs/Graphite-gtk-theme-dark
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-dark
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-dark-compact b/srcpkgs/Graphite-gtk-theme-dark-compact
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-dark-compact
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-light b/srcpkgs/Graphite-gtk-theme-light
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-light
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-light-compact b/srcpkgs/Graphite-gtk-theme-light-compact
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-light-compact
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-nord-dark b/srcpkgs/Graphite-gtk-theme-nord-dark
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-nord-dark
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-nord-dark-compact b/srcpkgs/Graphite-gtk-theme-nord-dark-compact
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-nord-dark-compact
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-nord-light b/srcpkgs/Graphite-gtk-theme-nord-light
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-nord-light
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme-nord-light-compact b/srcpkgs/Graphite-gtk-theme-nord-light-compact
new file mode 120000
index 0000000..9920327
--- /dev/null
+++ b/srcpkgs/Graphite-gtk-theme-nord-light-compact
@@ -0,0 +1 @@
+Graphite-gtk-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-gtk-theme/graphite-gtk-theme/template b/srcpkgs/Graphite-gtk-theme/graphite-gtk-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/Graphite-gtk-theme/template b/srcpkgs/Graphite-gtk-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/Graphite-kvantum-theme-Nord-dark b/srcpkgs/Graphite-kvantum-theme-Nord-dark
new file mode 120000
index 0000000..41ebe45
--- /dev/null
+++ b/srcpkgs/Graphite-kvantum-theme-Nord-dark
@@ -0,0 +1 @@
+Graphite-kvantum-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-kvantum-theme-Nord-light b/srcpkgs/Graphite-kvantum-theme-Nord-light
new file mode 120000
index 0000000..41ebe45
--- /dev/null
+++ b/srcpkgs/Graphite-kvantum-theme-Nord-light
@@ -0,0 +1 @@
+Graphite-kvantum-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-kvantum-theme-black b/srcpkgs/Graphite-kvantum-theme-black
new file mode 120000
index 0000000..41ebe45
--- /dev/null
+++ b/srcpkgs/Graphite-kvantum-theme-black
@@ -0,0 +1 @@
+Graphite-kvantum-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-kvantum-theme-dark b/srcpkgs/Graphite-kvantum-theme-dark
new file mode 120000
index 0000000..41ebe45
--- /dev/null
+++ b/srcpkgs/Graphite-kvantum-theme-dark
@@ -0,0 +1 @@
+Graphite-kvantum-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-kvantum-theme-light b/srcpkgs/Graphite-kvantum-theme-light
new file mode 120000
index 0000000..41ebe45
--- /dev/null
+++ b/srcpkgs/Graphite-kvantum-theme-light
@@ -0,0 +1 @@
+Graphite-kvantum-theme
\ No newline at end of file
diff --git a/srcpkgs/Graphite-kvantum-theme/files/LICENSE b/srcpkgs/Graphite-kvantum-theme/files/LICENSE
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/Graphite-kvantum-theme/template b/srcpkgs/Graphite-kvantum-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/Mint-Ice-Y-Dark/template b/srcpkgs/Mint-Ice-Y-Dark/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/Sierra-Dark-Fluxbox/template b/srcpkgs/Sierra-Dark-Fluxbox/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-cereus/template b/srcpkgs/base-cereus/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-chroot-cereus/template b/srcpkgs/base-chroot-cereus/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/INSTALL b/srcpkgs/base-files-cereus/INSTALL
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/66-kvm.rules b/srcpkgs/base-files-cereus/files/66-kvm.rules
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/DIR_COLORS b/srcpkgs/base-files-cereus/files/DIR_COLORS
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/DIR_COLORS.256color b/srcpkgs/base-files-cereus/files/DIR_COLORS.256color
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/DIR_COLORS.xterm b/srcpkgs/base-files-cereus/files/DIR_COLORS.xterm
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/blacklist.conf b/srcpkgs/base-files-cereus/files/blacklist.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/bpf.conf b/srcpkgs/base-files-cereus/files/bpf.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/colorls.sh b/srcpkgs/base-files-cereus/files/colorls.sh
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/crypttab b/srcpkgs/base-files-cereus/files/crypttab
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/dot_bash_logout b/srcpkgs/base-files-cereus/files/dot_bash_logout
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/dot_bash_profile b/srcpkgs/base-files-cereus/files/dot_bash_profile
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/dot_bashrc b/srcpkgs/base-files-cereus/files/dot_bashrc
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/dot_inputrc b/srcpkgs/base-files-cereus/files/dot_inputrc
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/dracut.conf.d.voidlinux.conf b/srcpkgs/base-files-cereus/files/dracut.conf.d.voidlinux.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/fstab b/srcpkgs/base-files-cereus/files/fstab
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/group b/srcpkgs/base-files-cereus/files/group
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/host.conf b/srcpkgs/base-files-cereus/files/host.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/hosts b/srcpkgs/base-files-cereus/files/hosts
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/inputrc b/srcpkgs/base-files-cereus/files/inputrc
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/issue b/srcpkgs/base-files-cereus/files/issue
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/ld.so.lib32.conf b/srcpkgs/base-files-cereus/files/ld.so.lib32.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/Apache-2.0 b/srcpkgs/base-files-cereus/files/licenses/Apache-2.0
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/Artistic b/srcpkgs/base-files-cereus/files/licenses/Artistic
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/BSD b/srcpkgs/base-files-cereus/files/licenses/BSD
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/GFDL-1.2 b/srcpkgs/base-files-cereus/files/licenses/GFDL-1.2
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/GFDL-1.3 b/srcpkgs/base-files-cereus/files/licenses/GFDL-1.3
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/GPL-1 b/srcpkgs/base-files-cereus/files/licenses/GPL-1
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/GPL-2 b/srcpkgs/base-files-cereus/files/licenses/GPL-2
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/GPL-3 b/srcpkgs/base-files-cereus/files/licenses/GPL-3
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/LGPL-2 b/srcpkgs/base-files-cereus/files/licenses/LGPL-2
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/LGPL-2.1 b/srcpkgs/base-files-cereus/files/licenses/LGPL-2.1
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/LGPL-3 b/srcpkgs/base-files-cereus/files/licenses/LGPL-3
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/MPL-1.1 b/srcpkgs/base-files-cereus/files/licenses/MPL-1.1
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/licenses/OFL-1.1 b/srcpkgs/base-files-cereus/files/licenses/OFL-1.1
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/locale.sh b/srcpkgs/base-files-cereus/files/locale.sh
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/lsb_release b/srcpkgs/base-files-cereus/files/lsb_release
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/mozplugin.sh b/srcpkgs/base-files-cereus/files/mozplugin.sh
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/nsswitch.conf b/srcpkgs/base-files-cereus/files/nsswitch.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/passwd b/srcpkgs/base-files-cereus/files/passwd
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/profile b/srcpkgs/base-files-cereus/files/profile
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/securetty b/srcpkgs/base-files-cereus/files/securetty
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/subgid b/srcpkgs/base-files-cereus/files/subgid
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/subuid b/srcpkgs/base-files-cereus/files/subuid
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/sysctl-user.conf b/srcpkgs/base-files-cereus/files/sysctl-user.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/sysctl.conf b/srcpkgs/base-files-cereus/files/sysctl.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/usb-load-ehci-first b/srcpkgs/base-files-cereus/files/usb-load-ehci-first
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/vkpurge b/srcpkgs/base-files-cereus/files/vkpurge
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/files/vkpurge.8 b/srcpkgs/base-files-cereus/files/vkpurge.8
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/base-files-cereus/template b/srcpkgs/base-files-cereus/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh-git/INSTALL.msg b/srcpkgs/blesh-git/INSTALL.msg
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh-git/REMOVE.msg b/srcpkgs/blesh-git/REMOVE.msg
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh-git/files/LICENSE.md b/srcpkgs/blesh-git/files/LICENSE.md
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh-git/template b/srcpkgs/blesh-git/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh/INSTALL.msg b/srcpkgs/blesh/INSTALL.msg
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh/REMOVE.msg b/srcpkgs/blesh/REMOVE.msg
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh/files/LICENSE.md b/srcpkgs/blesh/files/LICENSE.md
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/blesh/template b/srcpkgs/blesh/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/brave-bin/template b/srcpkgs/brave-bin/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/budgie-extras/template b/srcpkgs/budgie-extras/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares-cereus/template b/srcpkgs/calamares-cereus/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares-modules-cereus/files/LICENSE b/srcpkgs/calamares-modules-cereus/files/LICENSE
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares-modules-cereus/files/modules/postcfg/main.py b/srcpkgs/calamares-modules-cereus/files/modules/postcfg/main.py
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares-modules-cereus/files/modules/postcfg/module.desc b/srcpkgs/calamares-modules-cereus/files/modules/postcfg/module.desc
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares-modules-cereus/template b/srcpkgs/calamares-modules-cereus/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares/files/49-nopasswd-calamares.rules b/srcpkgs/calamares/files/49-nopasswd-calamares.rules
new file mode 100755
index 0000000..e69de29
diff --git a/srcpkgs/calamares/patches/localecfg.patch b/srcpkgs/calamares/patches/localecfg.patch
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares/patches/services-runit.patch b/srcpkgs/calamares/patches/services-runit.patch
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calamares/template b/srcpkgs/calamares/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/calmsky-icon-theme/template b/srcpkgs/calmsky-icon-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/cereus-neofetch/files/neofetch b/srcpkgs/cereus-neofetch/files/neofetch
new file mode 100755
index 0000000..e69de29
diff --git a/srcpkgs/cereus-neofetch/template b/srcpkgs/cereus-neofetch/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/cereus-repo-core/template b/srcpkgs/cereus-repo-core/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/cereus-repo-extra/template b/srcpkgs/cereus-repo-extra/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/cereus-wallpapers/template b/srcpkgs/cereus-wallpapers/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/cereus-welcome/template b/srcpkgs/cereus-welcome/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/flat-remix-icewm-theme/files/LICENSE b/srcpkgs/flat-remix-icewm-theme/files/LICENSE
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/flat-remix-icewm-theme/template b/srcpkgs/flat-remix-icewm-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/flat-remix-icon-theme-black b/srcpkgs/flat-remix-icon-theme-black
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-black
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-blue b/srcpkgs/flat-remix-icon-theme-blue
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-blue
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-brown b/srcpkgs/flat-remix-icon-theme-brown
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-brown
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-cyan b/srcpkgs/flat-remix-icon-theme-cyan
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-cyan
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-green b/srcpkgs/flat-remix-icon-theme-green
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-green
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-grey b/srcpkgs/flat-remix-icon-theme-grey
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-grey
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-magenta b/srcpkgs/flat-remix-icon-theme-magenta
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-magenta
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-orange b/srcpkgs/flat-remix-icon-theme-orange
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-orange
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-red b/srcpkgs/flat-remix-icon-theme-red
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-red
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-teal b/srcpkgs/flat-remix-icon-theme-teal
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-teal
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-violet b/srcpkgs/flat-remix-icon-theme-violet
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-violet
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme-yellow b/srcpkgs/flat-remix-icon-theme-yellow
new file mode 120000
index 0000000..52b47a7
--- /dev/null
+++ b/srcpkgs/flat-remix-icon-theme-yellow
@@ -0,0 +1 @@
+flat-remix-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/flat-remix-icon-theme/.goutputstream-GG2CI1 b/srcpkgs/flat-remix-icon-theme/.goutputstream-GG2CI1
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/flat-remix-icon-theme/template b/srcpkgs/flat-remix-icon-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/graphite-kvantum-theme/template b/srcpkgs/graphite-kvantum-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/jetbrains-mono-font/template b/srcpkgs/jetbrains-mono-font/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/librewolf-bin/files/librewolf.desktop b/srcpkgs/librewolf-bin/files/librewolf.desktop
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/librewolf-bin/files/librewolf.svg b/srcpkgs/librewolf-bin/files/librewolf.svg
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/librewolf-bin/template b/srcpkgs/librewolf-bin/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/musl-locales/files/musl-locales b/srcpkgs/musl-locales/files/musl-locales
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/musl-locales/template b/srcpkgs/musl-locales/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/nerd-fonts-symbols/template b/srcpkgs/nerd-fonts-symbols/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/octoxbps-git/template b/srcpkgs/octoxbps-git/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/picom-ibhagwan/template b/srcpkgs/picom-ibhagwan/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/picom-jonaburg/template b/srcpkgs/picom-jonaburg/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/pixelitos-icon-theme/files/LICENSE b/srcpkgs/pixelitos-icon-theme/files/LICENSE
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/pixelitos-icon-theme/template b/srcpkgs/pixelitos-icon-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/plasma-fluxbox/files/plasma-fluxbox.desktop b/srcpkgs/plasma-fluxbox/files/plasma-fluxbox.desktop
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/plasma-fluxbox/template b/srcpkgs/plasma-fluxbox/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/plasma-i3/files/plasma-i3.desktop b/srcpkgs/plasma-i3/files/plasma-i3.desktop
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/plasma-i3/template b/srcpkgs/plasma-i3/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus-apparmor b/srcpkgs/runit-cereus-apparmor
new file mode 120000
index 0000000..6318d66
--- /dev/null
+++ b/srcpkgs/runit-cereus-apparmor
@@ -0,0 +1 @@
+runit-cereus
\ No newline at end of file
diff --git a/srcpkgs/runit-cereus/INSTALL b/srcpkgs/runit-cereus/INSTALL
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus/files/09-apparmor.sh b/srcpkgs/runit-cereus/files/09-apparmor.sh
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus/files/apparmor b/srcpkgs/runit-cereus/files/apparmor
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus/files/hostname b/srcpkgs/runit-cereus/files/hostname
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus/files/locale.conf b/srcpkgs/runit-cereus/files/locale.conf
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus/files/os-release b/srcpkgs/runit-cereus/files/os-release
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus/runit-void-apparmor.INSTALL b/srcpkgs/runit-cereus/runit-void-apparmor.INSTALL
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/runit-cereus/template b/srcpkgs/runit-cereus/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/urxvt-tabbedex/template b/srcpkgs/urxvt-tabbedex/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/vibrancy-icon-theme-colors b/srcpkgs/vibrancy-icon-theme-colors
new file mode 120000
index 0000000..6086aac
--- /dev/null
+++ b/srcpkgs/vibrancy-icon-theme-colors
@@ -0,0 +1 @@
+vibrancy-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/vibrancy-icon-theme-dark b/srcpkgs/vibrancy-icon-theme-dark
new file mode 120000
index 0000000..6086aac
--- /dev/null
+++ b/srcpkgs/vibrancy-icon-theme-dark
@@ -0,0 +1 @@
+vibrancy-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/vibrancy-icon-theme-full-dark b/srcpkgs/vibrancy-icon-theme-full-dark
new file mode 120000
index 0000000..6086aac
--- /dev/null
+++ b/srcpkgs/vibrancy-icon-theme-full-dark
@@ -0,0 +1 @@
+vibrancy-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/vibrancy-icon-theme-light b/srcpkgs/vibrancy-icon-theme-light
new file mode 120000
index 0000000..6086aac
--- /dev/null
+++ b/srcpkgs/vibrancy-icon-theme-light
@@ -0,0 +1 @@
+vibrancy-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/vibrancy-icon-theme-nonmono-dark b/srcpkgs/vibrancy-icon-theme-nonmono-dark
new file mode 120000
index 0000000..6086aac
--- /dev/null
+++ b/srcpkgs/vibrancy-icon-theme-nonmono-dark
@@ -0,0 +1 @@
+vibrancy-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/vibrancy-icon-theme-nonmono-light b/srcpkgs/vibrancy-icon-theme-nonmono-light
new file mode 120000
index 0000000..6086aac
--- /dev/null
+++ b/srcpkgs/vibrancy-icon-theme-nonmono-light
@@ -0,0 +1 @@
+vibrancy-icon-theme
\ No newline at end of file
diff --git a/srcpkgs/vibrancy-icon-theme/files/LICENSE-CC-BY-SA-3.0 b/srcpkgs/vibrancy-icon-theme/files/LICENSE-CC-BY-SA-3.0
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/vibrancy-icon-theme/files/LICENSE-GPL-2.0 b/srcpkgs/vibrancy-icon-theme/files/LICENSE-GPL-2.0
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/vibrancy-icon-theme/template b/srcpkgs/vibrancy-icon-theme/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/whatsdesk-bin-i686/template b/srcpkgs/whatsdesk-bin-i686/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/whatsdesk-bin/template b/srcpkgs/whatsdesk-bin/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/whatsdesk-git/files/whatsdesk.desktop b/srcpkgs/whatsdesk-git/files/whatsdesk.desktop
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/whatsdesk-git/template b/srcpkgs/whatsdesk-git/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/xed-xapps-devel b/srcpkgs/xed-xapps-devel
new file mode 120000
index 0000000..c6b1235
--- /dev/null
+++ b/srcpkgs/xed-xapps-devel
@@ -0,0 +1 @@
+xed-xapps
\ No newline at end of file
diff --git a/srcpkgs/xed-xapps/template b/srcpkgs/xed-xapps/template
new file mode 100644
index 0000000..e69de29
diff --git a/srcpkgs/xidlehook/template b/srcpkgs/xidlehook/template
new file mode 100644
index 0000000..e69de29
diff --git a/xbps-src b/xbps-src
new file mode 100755
index 0000000..ff24901
--- /dev/null
+++ b/xbps-src
@@ -0,0 +1,982 @@
+#!/bin/bash
+# vim: set ts=4 sw=4 et:
+
+print_cross_targets() {
+    local f
+    for f in common/cross-profiles/*.sh; do
+        f=${f%.sh}; f=${f##*/}; printf "\t$f\n"
+    done
+}
+
+usage() {
+    cat << _EOF
+$PROGNAME: [options] <target> [arguments]
+
+Targets: (only one may be specified)
+
+binary-bootstrap [arch]
+    Install bootstrap packages from host repositories into <masterdir>.
+    If the optional 'arch' argument is set, it will install bootstrap packages
+    from this architecture, and its required xbps utilities. The <masterdir>
+    will be initialized for chroot operations.
+
+bootstrap
+    Build and install from source the bootstrap packages into <masterdir>.
+
+bootstrap-update
+    Updates bootstrap packages with latest versions available from registered
+    repositories in the XBPS configuration file.
+
+consistency-check
+    Runs a consistency check on all packages
+
+chroot
+    Enter to the chroot in <masterdir>.
+
+clean-repocache
+    Removes obsolete packages from <hostdir>/repocache.
+
+fetch <pkgname>
+    Download package source distribution file(s).
+
+extract <pkgname>
+    Extract package source distribution file(s) into the build directory.
+    By default set to <masterdir>/builddir.
+
+patch <pkgname>
+    Patch the package sources and perform other operations required to
+    prepare a package for configuring and building
+
+configure <pkgname>
+    Configure a package (fetch + extract + patch + configure).
+
+build <pkgname>
+    Build package source (fetch + extract + patch + configure + build).
+
+check <pkgname>
+    Run the package check(s) after building the package source.
+
+install <pkgname>
+    Install target package into <destdir> but not building the binary package
+    and not removing build directory for inspection purposes.
+
+pkg <pkgname>
+    Build binary package for <pkgname> and all required dependencies.
+
+clean [pkgname]
+    Removes auto dependencies, cleans up <masterdir>/builddir and <masterdir>/destdir.
+    If <pkgname> argument is specified, package files from <masterdir>/destdir and its
+    build directory in <masterdir>/buiddir are removed.
+
+list
+    Lists installed packages in <masterdir>.
+
+remove <pkgname>
+    Remove target package from <destdir>. If <pkgname>-<version> is not matched
+    from build template nothing is removed.
+
+remove-autodeps
+    Removes all package dependencies that were installed automatically.
+
+purge-distfiles
+    Removes all obsolete distfiles in <hostdir>/sources.
+
+show <pkgname>
+    Show information for the specified package.
+
+show-avail <pkgname>
+    Returns 0 if package can be built for the given architecture,
+    any other error otherwise.
+
+show-build-deps <pkgname>
+    Show required build dependencies for <pkgname>.
+
+show-deps <pkgname>
+    Show required run-time dependencies for <pkgname>. Package must be
+    installed into destdir.
+
+show-files <pkgname>
+    Show files installed by <pkgname>. Package must be installed into destdir.
+
+show-hostmakedepends <pkgname>
+    Show required host build dependencies for <pkgname>.
+
+show-makedepends <pkgname>
+    Show required target build dependencies for <pkgname>.
+
+show-options <pkgname>
+    Show available build options by <pkgname>.
+
+show-shlib-provides <pkgname>
+    Show list of provided shlibs for <pkgname>. Package must be installed into destdir.
+
+show-shlib-requires <pkgname>
+    Show list of required shlibs for <pkgname>. Package must be installed into destdir.
+
+show-var <var>
+    Prints the value of <var> if it's defined in xbps-src.
+
+show-repo-updates
+    Prints the list of outdated packages in XBPS repositories.
+
+show-sys-updates
+    Prints the list of outdated packages in your system.
+
+sort-dependencies <pkg> <pkgN+1> ...
+    Given a list of packages specified as additional arguments, a sorted dependency
+    list will be returned to stdout.
+
+update-bulk
+    Rebuilds all packages in the system repositories that are outdated.
+
+update-sys
+    Rebuilds all packages in your system that are outdated and updates them.
+
+update-check <pkgname>
+    Check upstream site of <pkgname> for new releases.
+
+update-hash-cache
+    Update the hash cache with existing source distfiles.
+
+zap
+    Removes a masterdir but preserving ccache, distcc and host directories.
+
+Options:
+
+-1  If dependencies of target package are missing, fail instead of building them.
+
+-a  <target>
+    Cross compile packages for this target machine. Supported targets:
+
+$(print_cross_targets)
+
+-c  <configuration>
+    If specified, etc/conf.<configuration> will be used as the primary config
+    file name; etc/conf will only be attempted if that does not exist.
+
+-C  Do not remove build directory, automatic dependencies and
+    package destdir after successful install.
+
+-E  If a binary package exists in a local repository for the target package,
+    do not try to build it, exit immediately.
+
+-f  Force running the specified stage (configure/build/install/pkg)
+    even if it ran successfully.
+
+-G  Enable XBPS_USE_GIT_REVS (see etc/defaults.conf for more information).
+
+-g  Enable building -dbg packages with debugging symbols.
+
+-H  <hostdir>
+    Absolute path to a directory to be bind mounted at <masterdir>/host.
+    The host directory stores binary packages, sources and package dependencies
+    downloaded from remote repositories.
+    If unset defaults to void-packages/hostdir.
+
+-h  Usage output.
+
+-I  Ignore required dependencies, useful for extracting/fetching sources.
+
+-i  Make xbps-src internal errors non-fatal.
+
+-j  Number of parallel build jobs to use when building packages.
+
+-L  Disable ASCII colors.
+
+-m  <masterdir>
+    Absolute path to a directory to be used as masterdir.
+    The masterdir is the main directory to build/store/compile packages.
+    If unset defaults to void-packages/masterdir.
+
+-N  Disable use of remote repositories to resolve dependencies.
+
+-o  <opt,~opt2,...>
+    Enable or disable (prefixed with ~) package build options. If 'etc/conf'
+    already specifies some, it is merged. Keep in mind that these options
+    apply to all packages within the build, as in if a dependency needs to
+    be built, it will inherit these options.
+
+    Supported options can be shown with the 'show-options' target.
+
+-p  <variable,variable2,...>
+    For show target, show specified variables in addition to default ones.
+    Variable is split and each word is printed in separate line by default.
+    In order to print the whole value in one line, append asterisk to variable name.
+
+-Q  Enable running the check stage.
+
+-K  Enable running the check stage with longer tests.
+
+-q  Suppress informational output of xbps-src (build output is still printed).
+
+-r  <repo>
+    Use an alternative local repository to store generated binary packages.
+    If unset defaults to <hostdir>/binpkgs. If set the binpkgs will
+    be stored into <hostdir>/binpkgs/<repo>.
+    This alternative repository will also be used to resolve dependencies
+    with highest priority order than others.
+
+-t  Create a temporary masterdir to not pollute the current one. Note that
+    the existing masterdir must be fully populated with binary-bootstrap first.
+    Once the target has finished, this temporary masterdir will be removed.
+    This flag requires xbps-uchroot(1), and won't work on filesystems that don't
+    support overlayfs.
+
+-V  Print version of xbps, then exit.
+
+_EOF
+}
+
+check_reqhost_utils() {
+    local broken
+
+    [ "$IN_CHROOT" ] && return 0
+
+    for f in ${REQHOST_UTILS}; do
+        if ! command -v ${f} &>/dev/null; then
+            echo "${f} is missing in your system, can't continue!" 1>&2
+            broken=1
+        fi
+    done
+    [ "$broken" ] && exit 1
+    [ -z "$1" ] && return 0
+
+    for f in ${REQHOST_UTILS_BOOTSTRAP}; do
+        if ! command -v ${f} &>/dev/null; then
+            echo "${f} is missing in your system, can't continue!" 1>&2
+            broken=1
+        fi
+    done
+    [ "$broken" ] && exit 1
+}
+
+check_build_requirements() {
+    local found
+
+    case "$XBPS_TARGET" in
+        *bootstrap*) found=1;;
+        *) ;;
+    esac
+    if [ -z "$found" ]; then
+        xbps-uhelper cmpver "$XBPS_VERSION" "$XBPS_VERSION_REQ"
+        if [ $? -eq 255 ]; then
+            echo "ERROR: requires xbps>=${XBPS_VERSION_REQ}" 1>&2
+            echo "Bootstrap packages must be updated with 'xbps-src bootstrap-update'" 1>&2
+            exit 1
+        fi
+    fi
+}
+
+chroot_check() {
+    if [ -f $XBPS_MASTERDIR/.xbps_chroot_init -o "$XBPS_CHROOT_CMD" = "ethereal" ]; then
+        export CHROOT_READY=1
+    fi
+}
+
+check_native_arch() {
+    if [ "$CHROOT_READY" ]; then
+        if [ -s $XBPS_MASTERDIR/.xbps_chroot_init ]; then
+            export XBPS_ARCH=$(<$XBPS_MASTERDIR/.xbps_chroot_init)
+        else
+            export XBPS_ARCH=$(xbps-uhelper arch)
+        fi
+    else
+        LDD=$(ldd --version 2>&1|head -1)
+        if [[ $LDD == *musl* ]]; then
+            export XBPS_ARCH=${XBPS_MACHINE%-musl}-musl
+        else
+            # XBPS_ARCH == $(uname -m)
+            export XBPS_ARCH=$(uname -m)
+        fi
+    fi
+}
+
+masterdir_zap() {
+    rm -rf "$XBPS_MASTERDIR"
+    mkdir -p "$XBPS_MASTERDIR"
+    msg_normal "xbps-src: $XBPS_MASTERDIR masterdir cleaned up.\n"
+}
+
+exit_func() {
+    wait
+    if [ "$sourcepkg" ]; then
+        remove_pkg $XBPS_CROSS_BUILD
+    fi
+    if [ -z "$IN_CHROOT" ]; then
+        msg_red "xbps-src: a failure has occurred! exiting...\n"
+    fi
+    exit 2
+}
+
+read_pkg() {
+    if [ -z "${XBPS_TARGET_PKG}" ]; then
+        [ ! -r ./template ] && msg_error "xbps-src: missing build template in $(pwd).\n"
+        XBPS_TARGET_PKG=${PWD##*/}
+    fi
+    setup_pkg "$XBPS_TARGET_PKG" "$XBPS_CROSS_BUILD" "$1"
+}
+
+setup_distfiles_mirror() {
+    local mirror scheme path
+
+    # Scheme file:// mirror locations only work with uchroot
+    for mirror in $XBPS_DISTFILES_MIRROR; do
+        scheme="file"
+        if [[ "$mirror" == *://* ]]; then
+            scheme="${mirror%%://*}"
+            path="${mirror#${scheme}://}"
+        else
+            path="$mirror"
+        fi
+        [ "$scheme" != "file" ] && continue
+        if [ "$XBPS_CHROOT_CMD" == "uchroot" ]; then
+            if [ ! -d "$path" ]; then
+                msg_warn "xbps-src: Invalid path in XBPS_DISTFILES_MIRROR ($mirror)\n"
+                continue
+            fi
+            mkdir -p "$XBPS_MASTERDIR/$path"
+            XBPS_CHROOT_CMD_ARGS+=" -b $path:$path"
+        else
+            case "$XBPS_TARGET" in
+                fetch|extract|patch|configure|build|check|install|pkg|bootstrap|bootstrap-update|update-sys)
+                    msg_warn "xbps-src: File URLs ($mirror) don't work with '$XBPS_CHROOT_CMD'\n"
+            esac
+        fi
+    done
+}
+
+#
+# main()
+#
+readonly PROGNAME="${0##*/}"
+readonly XBPS_VERSION_REQ="0.55"
+XBPS_VERSION=$(xbps-uhelper -V)
+XBPS_VERSION=${XBPS_VERSION%%API*}
+XBPS_VERSION=${XBPS_VERSION##*:}
+readonly XBPS_SRC_VERSION="113"
+export XBPS_MACHINE=$(xbps-uhelper -C /dev/null arch)
+
+XBPS_OPTIONS=
+XBPS_OPTSTRING="1a:c:CEfgGhH:iIj:Lm:No:p:qQKr:tV"
+
+# Preprocess arguments in order to allow options before and after XBPS_TARGET.
+eval set -- $(getopt "$XBPS_OPTSTRING" "$@");
+
+# Options are saved as XBPS_ARG_FOO instead of XBPS_FOO for now; this is
+# because configuration files may override those and we want arguments to
+# take precedence over configuration files
+while getopts "$XBPS_OPTSTRING" opt; do
+    case $opt in
+        1) XBPS_ARG_BUILD_ONLY_ONE_PKG=yes; XBPS_OPTIONS+=" -1";;
+        a) XBPS_ARG_CROSS_BUILD="$OPTARG"; XBPS_OPTIONS+=" -a $OPTARG";;
+        c) XBPS_ARG_CONFIG="$OPTARG"; XBPS_OPTIONS+=" -c $OPTARG";;
+        C) XBPS_ARG_KEEP_ALL=1; XBPS_OPTIONS+=" -C";;
+        E) XBPS_ARG_BINPKG_EXISTS=1; XBPS_OPTIONS+=" -E";;
+        f) XBPS_ARG_BUILD_FORCEMODE=1; XBPS_OPTIONS+=" -f";;
+        G) XBPS_ARG_USE_GIT_REVS=1; XBPS_OPTIONS+=" -G";;
+        g) XBPS_ARG_DEBUG_PKGS=1; XBPS_OPTIONS+=" -g";;
+        H) XBPS_ARG_HOSTDIR="$OPTARG"; XBPS_OPTIONS+=" -H $OPTARG";;
+        h) usage && exit 0;;
+        i) XBPS_ARG_INFORMATIVE_RUN=1; XBPS_OPTIONS+=" -i";;
+        I) XBPS_ARG_SKIP_DEPS=1; XBPS_SKIP_REMOTEREPOS=1; XBPS_OPTIONS+=" -I -N";;
+        j) XBPS_ARG_MAKEJOBS="$OPTARG"; XBPS_OPTIONS+=" -j $OPTARG";;
+        L) export NOCOLORS=1; XBPS_OPTIONS+=" -L";;
+        m) XBPS_ARG_MASTERDIR="$OPTARG"; XBPS_OPTIONS+=" -m $OPTARG";;
+        N) XBPS_ARG_SKIP_REMOTEREPOS=1; XBPS_OPTIONS+=" -N";;
+        o) XBPS_ARG_PKG_OPTIONS="$OPTARG"; XBPS_OPTIONS+=" -o $OPTARG";;
+        p) XBPS_ARG_PRINT_VARIABLES="$OPTARG"; XBPS_OPTIONS+=" -p $OPTARG";;
+        q) XBPS_ARG_QUIET=1; XBPS_OPTIONS+=" -q";;
+        Q) XBPS_ARG_CHECK_PKGS=yes; XBPS_OPTIONS+=" -Q";;
+        K) XBPS_ARG_CHECK_PKGS=full; XBPS_OPTIONS+=" -K";;
+        r) XBPS_ARG_ALT_REPOSITORY="$OPTARG"; XBPS_OPTIONS+=" -r $OPTARG";;
+        t) XBPS_ARG_TEMP_MASTERDIR=1; XBPS_OPTIONS+=" -t -C";;
+        V) echo "xbps-src-$XBPS_SRC_VERSION $(xbps-uhelper -V)" && exit 0;;
+        --) shift; break;;
+    esac
+done
+shift $(($OPTIND - 1))
+
+[ $# -eq 0 ] && usage && exit 1
+
+# Check if stdout is a tty; if false disable colors.
+test -t 1 || export NOCOLORS=1
+# http://no-color.org
+if [ "${NO_COLOR+x}" ]; then
+    export NOCOLORS=1
+fi
+
+# sane umask
+umask 022
+
+#
+# Check for required utilities in host system.
+#
+# Required utilities in host system for the bootstrap target.
+readonly REQHOST_UTILS_BOOTSTRAP="file objdump find make gawk bash sed gcc g++ gnat \
+    perl bsdtar gzip patch flock pkg-config"
+
+# Required utilities in host.
+readonly REQHOST_UTILS="xbps-install xbps-query xbps-rindex xbps-uhelper \
+    xbps-reconfigure xbps-remove xbps-create xbps-uchroot xbps-uunshare"
+
+check_reqhost_utils
+
+#
+# Set XBPS_CONFIG_FILE, XBPS_DISTDIR, XBPS_MASTERDIR
+# and XBPS_HOSTDIR.
+#
+if [ "$IN_CHROOT" ]; then
+    readonly XBPS_CONFIG_FILE=/etc/xbps/xbps-src.conf
+    readonly XBPS_DISTDIR=/void-packages
+    readonly XBPS_MASTERDIR=/
+    readonly XBPS_HOSTDIR=/host
+else
+    _distdir="$(readlink -f ${0%/*})"
+    if [ "${_distdir}" = "." ]; then
+        readonly XBPS_DISTDIR="$(pwd -P)"
+    else
+        readonly XBPS_DISTDIR="${_distdir}"
+    fi
+    # Read defaults and then the local configuration file
+    if [ -f $XBPS_DISTDIR/etc/defaults.conf ]; then
+        . $XBPS_DISTDIR/etc/defaults.conf
+    fi
+    if [ -n "$XBPS_ARG_CONFIG" -a -s $XBPS_DISTDIR/etc/conf.$XBPS_ARG_CONFIG ]; then
+        # If specified, read custom user configuration...
+        readonly XBPS_CONFIG_FILE=$XBPS_DISTDIR/etc/conf.$XBPS_ARG_CONFIG
+    elif [ -s $XBPS_DISTDIR/etc/conf ]; then
+        # ... otherwise read generic user configuration...
+        readonly XBPS_CONFIG_FILE=$XBPS_DISTDIR/etc/conf
+    elif [ -s ${XDG_CONFIG_HOME:-$HOME/.config}/xbps-src.conf ]; then
+        readonly XBPS_CONFIG_FILE=${XDG_CONFIG_HOME:-$HOME/.config}/xbps-src.conf
+    elif [ -s $HOME/.xbps-src.conf ]; then
+        # ... fallback to ~/.xbps-src.conf otherwise.
+        readonly XBPS_CONFIG_FILE=$HOME/.xbps-src.conf
+    fi
+fi
+# Read settings from config file
+[ -s "$XBPS_CONFIG_FILE" ] && . $XBPS_CONFIG_FILE &>/dev/null
+
+# Set options passed on command line, after configuration files have been read
+[ -n "$XBPS_ARG_BUILD_ONLY_ONE_PKG" ] && XBPS_BUILD_ONLY_ONE_PKG=yes
+[ -n "$XBPS_ARG_SKIP_REMOTEREPOS" ] && XBPS_SKIP_REMOTEREPOS=1
+[ -n "$XBPS_ARG_BUILD_FORCEMODE" ] && XBPS_BUILD_FORCEMODE=1
+[ -n "$XBPS_ARG_INFORMATIVE_RUN" ] && XBPS_INFORMATIVE_RUN=1
+[ -n "$XBPS_ARG_TEMP_MASTERDIR" ] && XBPS_TEMP_MASTERDIR=1
+[ -n "$XBPS_ARG_BINPKG_EXISTS" ] && XBPS_BINPKG_EXISTS=1
+[ -n "$XBPS_ARG_USE_GIT_REVS" ] && XBPS_USE_GIT_REVS=1
+[ -n "$XBPS_ARG_DEBUG_PKGS" ] && XBPS_DEBUG_PKGS=1
+[ -n "$XBPS_ARG_SKIP_DEPS" ] && XBPS_SKIP_DEPS=1
+[ -n "$XBPS_ARG_KEEP_ALL" ] && XBPS_KEEP_ALL=1
+[ -n "$XBPS_ARG_QUIET" ] && XBPS_QUIET=1
+[ -n "$XBPS_ARG_PRINT_VARIABLES" ] && XBPS_PRINT_VARIABLES="$XBPS_ARG_PRINT_VARIABLES"
+[ -n "$XBPS_ARG_ALT_REPOSITORY" ] && XBPS_ALT_REPOSITORY="$XBPS_ARG_ALT_REPOSITORY"
+[ -n "$XBPS_ARG_CROSS_BUILD" ] && XBPS_CROSS_BUILD="$XBPS_ARG_CROSS_BUILD"
+[ -n "$XBPS_ARG_CHECK_PKGS" ] && XBPS_CHECK_PKGS="$XBPS_ARG_CHECK_PKGS"
+[ -n "$XBPS_ARG_MAKEJOBS" ] && XBPS_MAKEJOBS="$XBPS_ARG_MAKEJOBS"
+
+export XBPS_BUILD_ONLY_ONE_PKG XBPS_SKIP_REMOTEREPOS XBPS_BUILD_FORCEMODE \
+       XBPS_INFORMATIVE_RUN XBPS_TEMP_MASTERDIR XBPS_BINPKG_EXISTS \
+       XBPS_USE_GIT_REVS XBPS_CHECK_PKGS XBPS_DEBUG_PKGS XBPS_SKIP_DEPS \
+       XBPS_KEEP_ALL XBPS_QUIET XBPS_ALT_REPOSITORY XBPS_CROSS_BUILD \
+       XBPS_MAKEJOBS XBPS_PRINT_VARIABLES
+
+# The masterdir/hostdir variables are forced and readonly in chroot
+if [ -z "$IN_CHROOT" ]; then
+    [ -n "$XBPS_ARG_MASTERDIR" ] && XBPS_MASTERDIR="$XBPS_ARG_MASTERDIR"
+    [ -n "$XBPS_ARG_HOSTDIR" ] && XBPS_HOSTDIR="$XBPS_ARG_HOSTDIR"
+
+    # Sanitize masterdir/hostdir once set for real (resolve links)
+    export XBPS_MASTERDIR="$(readlink -f $XBPS_MASTERDIR 2>/dev/null)"
+    export XBPS_HOSTDIR="$(readlink -f $XBPS_HOSTDIR 2>/dev/null)"
+fi
+
+# Forbid root unless XBPS_ALLOW_CHROOT_BREAKOUT is set
+# (for CI).
+if [ -z "$IN_CHROOT" -a "$UID" -eq 0 -a -z "$XBPS_ALLOW_CHROOT_BREAKOUT" ]; then
+    echo "ERROR: xbps-src cannot be used as root." 1>&2
+    exit 1
+fi
+
+# if XBPS_MASTERDIR unset, defaults to $XBPS_DISTDIR/masterdir.
+: ${XBPS_MASTERDIR:=$XBPS_DISTDIR/masterdir}
+[ ! -d $XBPS_MASTERDIR ] &&  mkdir -p $XBPS_MASTERDIR
+
+# if XBPS_HOSTDIR unset, defaults to $XBPS_DISTDIR/hostdir.
+: ${XBPS_HOSTDIR:=$XBPS_DISTDIR/hostdir}
+[ ! -d $XBPS_HOSTDIR ] && mkdir -p $XBPS_HOSTDIR
+
+if [ -d "$XBPS_MASTERDIR" -a ! -w "$XBPS_MASTERDIR" ]; then
+    echo "ERROR: can't write to masterdir $XBPS_MASTERDIR." 1>&2
+    exit 1
+fi
+
+# Try using chroot-git then git from the host system
+if command -v chroot-git &>/dev/null; then
+    export XBPS_GIT_CMD=$(command -v chroot-git)
+elif command -v git &>/dev/null; then
+    export XBPS_GIT_CMD=$(command -v git)
+elif [ -z "$XBPS_USE_BUILD_MTIME" ] || [ "$XBPS_USE_GIT_REVS" ]; then
+    echo "neither chroot-git or git are available in your system!" 1>&2
+    exit 1
+fi
+
+if [ -n "$XBPS_HOSTDIR" ]; then
+    export XBPS_REPOSITORY=$XBPS_HOSTDIR/binpkgs
+    readonly XBPS_SRCDISTDIR=$XBPS_HOSTDIR/sources
+else
+    export XBPS_REPOSITORY=$XBPS_MASTERDIR/host/binpkgs
+    readonly XBPS_SRCDISTDIR=$XBPS_MASTERDIR/host/sources
+fi
+
+# Set XBPS_REPOSITORY to our current branch.
+if [ -z "$XBPS_ALT_REPOSITORY" ]; then
+    pushd "$PWD" &>/dev/null
+    cd $XBPS_DISTDIR
+    _gitbranch="$($XBPS_GIT_CMD symbolic-ref --short HEAD 2>/dev/null)"
+    if [ "${_gitbranch}" -a "${_gitbranch}" != "master" ]; then
+        export XBPS_ALT_REPOSITORY="${_gitbranch}"
+        export XBPS_REPOSITORY="${XBPS_REPOSITORY}/${_gitbranch}"
+     fi
+     popd &>/dev/null
+else
+    export XBPS_REPOSITORY="${XBPS_REPOSITORY}/${XBPS_ALT_REPOSITORY}"
+fi
+
+readonly XBPS_SRCPKGDIR=$XBPS_DISTDIR/srcpkgs
+readonly XBPS_COMMONDIR=$XBPS_DISTDIR/common
+readonly XBPS_SHUTILSDIR=$XBPS_COMMONDIR/xbps-src/shutils
+readonly XBPS_TRIGGERSDIR=$XBPS_SRCPKGDIR/xbps-triggers/files
+readonly XBPS_CROSSPFDIR=$XBPS_COMMONDIR/cross-profiles
+readonly XBPS_BUILDSTYLEDIR=$XBPS_COMMONDIR/build-style
+readonly XBPS_LIBEXECDIR=$XBPS_COMMONDIR/xbps-src/libexec
+readonly XBPS_BUILDHELPERDIR=$XBPS_COMMONDIR/build-helper
+
+readonly XBPS_TARGET="$1"
+if [ "$2" ]; then
+    XBPS_TARGET_PKG="${2##*/}"
+fi
+
+# Check for CHROOT_READY and set up XBPS_ARCH environment var for xbps.
+chroot_check
+check_native_arch
+
+# test if to use linux32 for 32-bit masterdirs in 64-bit environments
+# x86_64, ppc64 (BE) and aarch64 are capable of this, others are not
+linux32_check() {
+    local hostarch="$1"
+    local tgtarch="$2"
+    case "$hostarch" in
+        x86_64*) if [[ "$tgtarch" == i686* ]]; then return 0; fi ;;
+        ppc64le*) if [[ "$tgtarch" == ppcle* ]]; then return 0; fi ;;
+        ppc64*)
+            case "$tgtarch" in
+                ppc64*) return 1 ;;
+                ppc*) return 0 ;;
+            esac
+            ;;
+        aarch64*) if [[ "$tgtarch" == armv* ]]; then return 0; fi ;;
+    esac
+    return 1
+}
+
+# Reconfigure pkgs for 32bit on 64-bit systems and reexec itself.
+if [ -z "$XBPS_REINIT" -a -s $XBPS_MASTERDIR/.xbps_chroot_init ]; then
+    export XBPS_ARCH=${XBPS_ARCH:-$(<$XBPS_MASTERDIR/.xbps_chroot_init)}
+    if linux32_check "$XBPS_MACHINE" "$XBPS_ARCH"; then
+        # reconfigure pkgs via linux32
+        linux32 xbps-reconfigure -r ${XBPS_MASTERDIR} -a &>/dev/null
+        # reexec itself via linux32
+        export XBPS_REINIT=1
+        exec linux32 $0 ${XBPS_OPTIONS} $@
+    fi
+fi
+if [ "$XBPS_ARCH" ]; then
+    export XBPS_MACHINE=$XBPS_ARCH
+fi
+# At this point if XBPS_TARGET_MACHINE isn't defined we assume
+# it's a native build.
+if [ -z "$XBPS_TARGET_MACHINE" ]; then
+        export XBPS_TARGET_MACHINE=$XBPS_MACHINE
+fi
+
+if [ "$IN_CHROOT" ]; then
+    readonly XBPS_UHELPER_CMD="xbps-uhelper"
+    readonly XBPS_INSTALL_CMD="xbps-install -c /host/repocache-$XBPS_MACHINE"
+    readonly XBPS_QUERY_CMD="xbps-query -c /host/repocache-$XBPS_MACHINE"
+    readonly XBPS_RECONFIGURE_CMD="xbps-reconfigure"
+    readonly XBPS_REMOVE_CMD="xbps-remove"
+    readonly XBPS_CHECKVERS_CMD="xbps-checkvers"
+    readonly XBPS_DESTDIR=/destdir
+    readonly XBPS_BUILDDIR=/builddir
+else
+    readonly XBPS_UHELPER_CMD="xbps-uhelper -r $XBPS_MASTERDIR"
+    readonly XBPS_INSTALL_CMD="xbps-install -c $XBPS_HOSTDIR/repocache-$XBPS_MACHINE -r $XBPS_MASTERDIR -C etc/xbps.d"
+    readonly XBPS_QUERY_CMD="xbps-query -c $XBPS_HOSTDIR/repocache-$XBPS_MACHINE -r $XBPS_MASTERDIR -C etc/xbps.d"
+    readonly XBPS_RECONFIGURE_CMD="xbps-reconfigure -r $XBPS_MASTERDIR"
+    readonly XBPS_REMOVE_CMD="xbps-remove -r $XBPS_MASTERDIR"
+    readonly XBPS_CHECKVERS_CMD="xbps-checkvers -r $XBPS_MASTERDIR"
+    readonly XBPS_DESTDIR=$XBPS_MASTERDIR/destdir
+    readonly XBPS_BUILDDIR=$XBPS_MASTERDIR/builddir
+fi
+readonly XBPS_RINDEX_CMD="xbps-rindex"
+readonly XBPS_FETCH_CMD="xbps-fetch"
+readonly XBPS_DIGEST_CMD="xbps-digest"
+readonly XBPS_CMPVER_CMD="xbps-uhelper cmpver"
+
+export XBPS_SHUTILSDIR XBPS_CROSSPFDIR XBPS_TRIGGERSDIR \
+    XBPS_SRCPKGDIR XBPS_COMMONDIR XBPS_BUILDDIR \
+    XBPS_REPOSITORY XBPS_ALT_REPOSITORY XBPS_SRCDISTDIR XBPS_DIGEST_CMD \
+    XBPS_UHELPER_CMD XBPS_INSTALL_CMD XBPS_QUERY_CMD XBPS_BUILD_ONLY_ONE_PKG \
+    XBPS_RINDEX_CMD XBPS_RECONFIGURE_CMD XBPS_REMOVE_CMD XBPS_CHECKVERS_CMD \
+    XBPS_CMPVER_CMD XBPS_FETCH_CMD XBPS_VERSION XBPS_BUILDSTYLEDIR \
+    XBPS_CPPFLAGS XBPS_CFLAGS XBPS_CXXFLAGS XBPS_FFLAGS XBPS_LDFLAGS \
+    XBPS_MAKEJOBS XBPS_BUILD_FORCEMODE XBPS_USE_GIT_REVS XBPS_DEBUG_PKGS \
+    XBPS_CHECK_PKGS XBPS_CCACHE XBPS_DISTCC XBPS_DISTCC_HOSTS XBPS_SKIP_DEPS \
+    XBPS_SKIP_REMOTEREPOS XBPS_CROSS_BUILD XBPS_ARG_PKG_OPTIONS XBPS_CONFIG_FILE \
+    XBPS_KEEP_ALL XBPS_HOSTDIR XBPS_MASTERDIR XBPS_SRC_VERSION \
+    XBPS_DESTDIR XBPS_MACHINE XBPS_TEMP_MASTERDIR XBPS_BINPKG_EXISTS \
+    XBPS_LIBEXECDIR XBPS_DISTDIR XBPS_DISTFILES_MIRROR XBPS_ALLOW_RESTRICTED \
+    XBPS_USE_GIT_COMMIT_DATE XBPS_PKG_COMPTYPE XBPS_REPO_COMPTYPE \
+    XBPS_BUILDHELPERDIR XBPS_USE_BUILD_MTIME XBPS_BUILD_ENVIRONMENT \
+    XBPS_PRESERVE_PKGS
+
+for i in REPOSITORY DESTDIR BUILDDIR SRCDISTDIR; do
+    eval val="\$XBPS_$i"
+    if [ ! -d "$val" ]; then
+        mkdir -p $val
+    fi
+    unset val
+done
+
+# A temporary masterdir requires xbps-uchroot(1) and -O to use overlayfs
+# on tmpfs (available with xbps-0.45).
+if [ -z "$IN_CHROOT" -a -n "$XBPS_TEMP_MASTERDIR" ]; then
+    export XBPS_CHROOT_CMD="uchroot"
+    export XBPS_CHROOT_CMD_ARGS+=" -O"
+fi
+#
+# Sanitize PATH.
+#
+if [ -z "$IN_CHROOT" ]; then
+    # In non chroot case always prefer host tools.
+    export PATH="$PATH:$XBPS_MASTERDIR/usr/bin"
+fi
+
+#
+# Set up ccache
+#
+if [ "$XBPS_CCACHE" ]; then
+    export CCACHEPATH="/usr/lib/ccache/bin"
+    export CCACHE_DIR="$XBPS_HOSTDIR/ccache"
+    # Avoid not using cached files just due to compiler mtime
+    # changes when e.g. bootstrapping
+    export CCACHE_COMPILERCHECK=content CCACHE_COMPRESS=1
+    export PATH="$CCACHEPATH:$PATH"
+    mkdir -p $CCACHE_DIR
+fi
+
+#
+# Set up distcc
+#
+if [ "$XBPS_DISTCC" ]; then
+    if [ "$XBPS_CCACHE" ]; then
+        export CCACHE_PREFIX="/usr/bin/distcc"
+    else
+        DISTCCPATH="/usr/lib/distcc/bin"
+        export PATH="$DISTCCPATH:$PATH"
+    fi
+    export DISTCC_DIR="$XBPS_HOSTDIR/distcc-${XBPS_CROSS_BUILD:-${XBPS_MACHINE}}"
+    export DISTCC_HOSTS="$XBPS_DISTCC_HOSTS"
+    mkdir -p $DISTCC_DIR
+fi
+
+check_build_requirements
+
+#
+# Read funcs from helpers
+#
+for f in ${XBPS_SHUTILSDIR}/*.sh; do
+    [ -r "$f" ] && . $f
+done
+
+if [ -z "$IN_CHROOT" ]; then
+    trap 'exit_func' INT TERM
+    if [ -n "$XBPS_DISTFILES_MIRROR" ]; then
+        setup_distfiles_mirror
+    fi
+fi
+
+reconfigure_base_chroot
+
+#
+# Main switch.
+#
+case "$XBPS_TARGET" in
+    binary-bootstrap)
+        install_base_chroot ${XBPS_TARGET_PKG:=$XBPS_MACHINE}
+        ;;
+    bootstrap)
+        if [ -n "$XBPS_CHECK_PKGS" ]; then
+            msg_error "xbps-src: disable tests for bootstrap\n"
+            exit 1
+        fi
+        # base-chroot building on host
+        # check for required host utils
+        check_reqhost_utils bootstrap
+        (
+            export XBPS_ARCH=$XBPS_MACHINE
+            export XBPS_SKIP_REMOTEREPOS=1
+            chroot_sync_repodata
+            $XBPS_LIBEXECDIR/build.sh \
+                base-chroot base-chroot $XBPS_TARGET || exit 1
+        ) || exit 1
+        [ -d $XBPS_MASTERDIR ] && rm -rf $XBPS_MASTERDIR
+        install_base_chroot ${XBPS_TARGET_PKG:=$XBPS_MACHINE}
+        ;;
+    bootstrap-update)
+        if [ -n "$CHROOT_READY" -a -z "$IN_CHROOT" ]; then
+            chroot_handler bootstrap-update
+        else
+            chroot_sync_repodata
+            update_base_chroot
+        fi
+        ;;
+    chroot)
+        chroot_sync_repodata
+        chroot_handler chroot dummy
+        ;;
+    clean)
+        if [ -z "$XBPS_TARGET_PKG" ]; then
+            if [ -n "$CHROOT_READY" -a -z "$IN_CHROOT" ]; then
+                chroot_handler remove-autodeps
+            else
+                remove_pkg_autodeps
+            fi
+            msg_normal "xbps-src: cleaning up masterdir...\n"
+            # Needed to remove Go Modules
+            [ -d "$XBPS_BUILDDIR" ] && chmod -R +wX $XBPS_BUILDDIR
+            rm -rf \
+                $XBPS_BUILDDIR \
+                $XBPS_DESTDIR
+            rm -rf $XBPS_MASTERDIR/tmp
+            mkdir -p $XBPS_MASTERDIR/tmp
+        else
+            read_pkg
+            if [ -n "$CHROOT_READY" -a -z "$IN_CHROOT" ]; then
+                chroot_handler $XBPS_TARGET $XBPS_TARGET_PKG || exit $?
+            else
+                if declare -f do_clean >/dev/null; then
+                    run_func do_clean
+                fi
+                remove_pkg_wrksrc
+                remove_pkg_statedir
+            fi
+            remove_pkg $XBPS_CROSS_BUILD
+        fi
+        ;;
+    clean-repocache)
+        export XBPS_TARGET_ARCH="${XBPS_CROSS_BUILD:-$XBPS_TARGET_MACHINE}"
+        $XBPS_REMOVE_CMD -C /dev/null -c $XBPS_HOSTDIR/repocache-${XBPS_TARGET_ARCH} -O
+        ;;
+    consistency-check)
+        consistency_check
+        ;;
+    remove-autodeps)
+        if [ -n "$CHROOT_READY" -a -z "$IN_CHROOT" ]; then
+            chroot_handler remove-autodeps
+        else
+            remove_pkg_autodeps
+        fi
+        ;;
+    fetch|extract|patch|configure|build|check|install|pkg)
+        if [ "$XBPS_TARGET" = "check" ] && [ -z "$XBPS_CHECK_PKGS" ]; then
+            export XBPS_CHECK_PKGS=full
+        fi
+        read_pkg
+        if [ -n "$CHROOT_READY" -a -z "$IN_CHROOT" ]; then
+            chroot_handler $XBPS_TARGET $XBPS_TARGET_PKG
+        else
+            chroot_sync_repodata
+            # prevent update_base_chroot from removing the builddir/destdir
+            update_base_chroot keep-all-force
+            $XBPS_LIBEXECDIR/build.sh $XBPS_TARGET_PKG $XBPS_TARGET_PKG \
+                $XBPS_TARGET $XBPS_CROSS_BUILD || exit $?
+        fi
+        ;;
+    remove|remove-destdir)
+        read_pkg
+        remove_pkg $XBPS_CROSS_BUILD
+        ;;
+    list)
+        $XBPS_QUERY_CMD -l
+        ;;
+    purge-distfiles)
+        purge_distfiles
+        ;;
+    show)
+        read_pkg ignore-problems
+        show_pkg $XBPS_PRINT_VARIABLES
+        ;;
+    show-avail)
+        read_pkg &>/dev/null
+        show_avail
+        ;;
+    show-files)
+        read_pkg ignore-problems
+        show_pkg_files
+        ;;
+    show-deps)
+        read_pkg ignore-problems
+        show_pkg_deps
+        ;;
+    show-build-deps)
+        read_pkg ignore-problems
+        show_pkg_build_deps
+        ;;
+    show-hostmakedepends)
+        read_pkg ignore-problems
+        show_pkg_hostmakedepends
+        ;;
+    show-makedepends)
+        read_pkg ignore-problems
+        show_pkg_makedepends
+        ;;
+    show-pkg-var-dump)
+        read_pkg ignore-problems
+        for sub_name in $subpackages; do
+            if [ $sub_name = $XBPS_TARGET_PKG ]; then
+                . ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
+                ${sub_name}_package
+            fi
+        done
+        printf "archs: %s\n\n" "$archs"
+        printf "bootstrap: %s\n\n" "$bootstrap"
+        printf "broken: %s\n\n" "$broken"
+        printf "depends: %s\n\n" "$depends"
+        printf "hostmakedepends: %s\n\n" "$hostmakedepends"
+        printf "makedepends: %s\n\n" "$makedepends"
+        printf "nocross: %s\n\n" "$nocross"
+        printf "pkgname: %s\n\n" "$pkgname"
+        printf "restricted: %s\n\n" "$restricted"
+        printf "revision: %s\n\n" "$revision"
+        printf "subpackages: %s\n\n" "$subpackages"
+        printf "version: %s\n\n" "$version"
+        printf "provides: %s\n\n" "$provides"
+        printf "lib32disabled: %s\n\n" "$lib32disabled"
+        printf "nodebug: %s\n\n" "$nodebug"
+        ;;
+    show-pkg-var)
+        read_pkg ignore-problems
+        for sub_name in $subpackages; do
+            if [ $sub_name = $XBPS_TARGET_PKG ]; then
+                . ${XBPS_COMMONDIR}/environment/setup-subpkg/subpkg.sh
+                ${sub_name}_package
+            fi
+        done
+        while IFS= read -r pkg_var; do
+                print_var=
+                case "${pkg_var}" in
+                    archs) print_var="$archs ";;
+                    bootstrap) print_var="$bootstrap ";;
+                    broken) print_var="$broken ";;
+                    depends) print_var="$depends ";;
+                    hostmakedepends) print_var="$hostmakedepends ";;
+                    makedepends) print_var="$makedepends ";;
+                    nocross) print_var="$nocross ";;
+                    pkgname) print_var="$pkgname ";;
+                    restricted) print_var="$restricted ";;
+                    revision) print_var="$revision ";;
+                    subpackages) print_var="$subpackages ";;
+                    version) print_var="$version ";;
+                    provides) print_var="$provides ";;
+                    lib32disabled) print_var="$lib32disabled ";;
+                    nodebug) print_var="$nodebug ";;
+                esac # the space at the end of each is essential for unset vars
+                if [ -n "$print_var" ]; then
+                        printf "%s\n" "$(printf "${print_var% }" | tr -t '\n\r' ' ')"
+                fi # The trailing space gets stripped before printing anyway
+        done
+        ;;
+    dbulk-dump)
+        read_pkg
+        check_pkg_arch "$XBPS_CROSS_BUILD"
+        for x in pkgname version revision; do
+            printf '%s: %s\n' "$x" "${!x}"
+        done
+        for x in bootstrap; do
+            [[ ${!x} ]] && printf '%s: %s\n' "$x" "${!x}"
+        done
+        for x in hostmakedepends makedepends; do
+            arr=(${!x})
+            if [[ ${#arr} -gt 0 ]]; then
+                printf '%s:\n' "$x"
+                printf ' %s\n' "${arr[@]}"
+            fi
+        done
+        _cleandeps=$(setup_pkg_depends "" 1 1 | { grep -vF "$(printf "%s\n" $pkgname $subpackages)" || :; } | sort -u) || exit 1
+        if [[ $_cleandeps ]]; then
+                printf 'depends:\n'
+                printf ' %s\n' $_cleandeps
+        fi
+        if [[ $subpackages ]]; then
+            printf 'subpackages:\n'
+            printf ' %s\n' $subpackages
+        fi
+        ;;
+    show-options)
+        read_pkg ignore-problems
+        show_pkg_build_options
+        ;;
+    show-shlib-provides)
+        read_pkg ignore-problems
+        show_pkg_shlib_provides
+        ;;
+    show-shlib-requires)
+        read_pkg ignore-problems
+        show_pkg_shlib_requires
+        ;;
+    show-var)
+        for f in ${XBPS_COMMONDIR}/environment/setup/*.sh; do
+            source $f
+        done
+        if [ "$XBPS_CROSS_BUILD" ]; then
+            source ${XBPS_COMMONDIR}/cross-profiles/${XBPS_CROSS_BUILD}.sh
+        else
+            source ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh
+        fi
+        eval value="\${$XBPS_TARGET_PKG}"
+        echo $value
+        ;;
+    show-repo-updates)
+        bulk_build
+        ;;
+    show-sys-updates)
+        bulk_build -I
+        ;;
+    sort-dependencies)
+        bulk_sortdeps ${@/$XBPS_TARGET/}
+        ;;
+    update-bulk)
+        bulk_update
+        ;;
+    update-sys)
+        bulk_update -I
+        ;;
+    update-check)
+        read_pkg ignore-problems
+        update_check
+        ;;
+    update-hash-cache)
+        update_hash_cache
+        ;;
+    zap)
+        masterdir_zap
+        ;;
+    *)
+        msg_red "xbps-src: invalid target $XBPS_TARGET.\n"
+        usage && exit 1
+        ;;
+esac
+
+exit_and_cleanup $?