void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

commit 8025f6ea3dbe127caf38801dabaa435e06c0ab2e
parent 2eb48b3b811dc2e53849d8c316da819abad1ee78
Author: Dash Eclipse <dash@ezup.dev>
Date:   Wed, 15 Jul 2020 11:55:56 +0000

st: add patches st-nordtheme and st-scrollback

st: change font to Fira Code Medium

Diffstat:
A.gitattributes | 2++
A.github/issue_template.md | 14++++++++++++++
A.github/workflows/notify-issue.yaml | 32++++++++++++++++++++++++++++++++
A.github/workflows/notify-pr.yaml | 32++++++++++++++++++++++++++++++++
A.github/workflows/notify-push.yaml | 30++++++++++++++++++++++++++++++
A.gitignore | 12++++++++++++
A.mailmap | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
A.travis.yml | 41+++++++++++++++++++++++++++++++++++++++++
ACONTRIBUTING.md | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ACOPYING | 23+++++++++++++++++++++++
AManual.md | 2009+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AREADME.md | 521+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-helper/gir.sh | 42++++++++++++++++++++++++++++++++++++++++++
Acommon/build-helper/numpy.sh | 36++++++++++++++++++++++++++++++++++++
Acommon/build-helper/qemu.sh | 6++++++
Acommon/build-helper/qmake.sh | 48++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-helper/rust.sh | 40++++++++++++++++++++++++++++++++++++++++
Acommon/build-profiles/README | 15+++++++++++++++
Acommon/build-profiles/aarch64-musl.sh | 5+++++
Acommon/build-profiles/aarch64.sh | 5+++++
Acommon/build-profiles/armv6l-musl.sh | 5+++++
Acommon/build-profiles/armv6l.sh | 5+++++
Acommon/build-profiles/armv7l-musl.sh | 5+++++
Acommon/build-profiles/armv7l.sh | 5+++++
Acommon/build-profiles/bootstrap.sh | 3+++
Acommon/build-profiles/i686-musl.sh | 5+++++
Acommon/build-profiles/i686.sh | 5+++++
Acommon/build-profiles/ppc-musl.sh | 5+++++
Acommon/build-profiles/ppc.sh | 5+++++
Acommon/build-profiles/ppc64-musl.sh | 5+++++
Acommon/build-profiles/ppc64.sh | 5+++++
Acommon/build-profiles/ppc64le-musl.sh | 5+++++
Acommon/build-profiles/ppc64le.sh | 5+++++
Acommon/build-profiles/x86_64-musl.sh | 5+++++
Acommon/build-profiles/x86_64.sh | 5+++++
Acommon/build-style/R-cran.sh | 7+++++++
Acommon/build-style/README | 12++++++++++++
Acommon/build-style/cargo.sh | 27+++++++++++++++++++++++++++
Acommon/build-style/cmake.sh | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/configure.sh | 40++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/fetch.sh | 12++++++++++++
Acommon/build-style/gem.sh | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/gemspec.sh | 190+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/gnu-configure.sh | 39+++++++++++++++++++++++++++++++++++++++
Acommon/build-style/gnu-makefile.sh | 41+++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/go.sh | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/haskell-stack.sh | 37+++++++++++++++++++++++++++++++++++++
Acommon/build-style/meson.sh | 139+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/meta.sh | 9+++++++++
Acommon/build-style/perl-ModuleBuild.sh | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/perl-module.sh | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/python-module.sh | 96+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/python2-module.sh | 34++++++++++++++++++++++++++++++++++
Acommon/build-style/python3-module.sh | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/qmake.sh | 144+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/raku-dist.sh | 16++++++++++++++++
Acommon/build-style/ruby-module.sh | 9+++++++++
Acommon/build-style/scons.sh | 26++++++++++++++++++++++++++
Acommon/build-style/slashpackage.sh | 35+++++++++++++++++++++++++++++++++++
Acommon/build-style/texmf.sh | 44++++++++++++++++++++++++++++++++++++++++++++
Acommon/build-style/waf.sh | 20++++++++++++++++++++
Acommon/build-style/waf3.sh | 20++++++++++++++++++++
Acommon/chroot-style/README | 13+++++++++++++
Acommon/chroot-style/bwrap.sh | 23+++++++++++++++++++++++
Acommon/chroot-style/ethereal.sh | 135+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/chroot-style/proot.sh | 30++++++++++++++++++++++++++++++
Acommon/chroot-style/uchroot.sh | 21+++++++++++++++++++++
Acommon/chroot-style/uunshare.sh | 21+++++++++++++++++++++
Acommon/cross-profiles/README | 17+++++++++++++++++
Acommon/cross-profiles/aarch64-musl.sh | 10++++++++++
Acommon/cross-profiles/aarch64.sh | 12++++++++++++
Acommon/cross-profiles/armv5te-musl.sh | 2++
Acommon/cross-profiles/armv5te.sh | 2++
Acommon/cross-profiles/armv5tel-musl.sh | 10++++++++++
Acommon/cross-profiles/armv5tel.sh | 10++++++++++
Acommon/cross-profiles/armv6hf-musl.sh | 2++
Acommon/cross-profiles/armv6hf.sh | 2++
Acommon/cross-profiles/armv6l-musl.sh | 10++++++++++
Acommon/cross-profiles/armv6l.sh | 10++++++++++
Acommon/cross-profiles/armv7hf-musl.sh | 2++
Acommon/cross-profiles/armv7hf.sh | 2++
Acommon/cross-profiles/armv7l-musl.sh | 10++++++++++
Acommon/cross-profiles/armv7l.sh | 10++++++++++
Acommon/cross-profiles/i686-musl.sh | 10++++++++++
Acommon/cross-profiles/i686.sh | 10++++++++++
Acommon/cross-profiles/mips-musl.sh | 10++++++++++
Acommon/cross-profiles/mipsel-musl.sh | 10++++++++++
Acommon/cross-profiles/mipselhf-musl.sh | 10++++++++++
Acommon/cross-profiles/mipshf-musl.sh | 10++++++++++
Acommon/cross-profiles/ppc-musl.sh | 10++++++++++
Acommon/cross-profiles/ppc.sh | 10++++++++++
Acommon/cross-profiles/ppc64-musl.sh | 10++++++++++
Acommon/cross-profiles/ppc64.sh | 10++++++++++
Acommon/cross-profiles/ppc64le-musl.sh | 10++++++++++
Acommon/cross-profiles/ppc64le.sh | 10++++++++++
Acommon/cross-profiles/x86_64-musl.sh | 10++++++++++
Acommon/cross-profiles/x86_64.sh | 10++++++++++
Acommon/environment/README | 28++++++++++++++++++++++++++++
Acommon/environment/build-style/.empty | 0
Acommon/environment/build-style/R-cran.sh | 4++++
Acommon/environment/build-style/cargo.sh | 7+++++++
Acommon/environment/build-style/cmake.sh | 1+
Acommon/environment/build-style/gem.sh | 9+++++++++
Acommon/environment/build-style/gemspec.sh | 3+++
Acommon/environment/build-style/go.sh | 41+++++++++++++++++++++++++++++++++++++++++
Acommon/environment/build-style/haskell-stack.sh | 1+
Acommon/environment/build-style/meson.sh | 1+
Acommon/environment/build-style/perl-ModuleBuild.sh | 3+++
Acommon/environment/build-style/perl-module.sh | 1+
Acommon/environment/build-style/python-module.sh | 2++
Acommon/environment/build-style/python2-module.sh | 2++
Acommon/environment/build-style/python3-module.sh | 2++
Acommon/environment/build-style/raku-dist.sh | 3+++
Acommon/environment/build-style/ruby-module.sh | 1+
Acommon/environment/build-style/scons.sh | 1+
Acommon/environment/build-style/texmf.sh | 5+++++
Acommon/environment/build-style/texmf/ownership.txt | 209+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/build-style/waf.sh | 1+
Acommon/environment/build-style/waf3.sh | 1+
Acommon/environment/build/.empty | 0
Acommon/environment/build/bootstrap.sh | 2++
Acommon/environment/build/ccache.sh | 2++
Acommon/environment/build/cross.sh | 2++
Acommon/environment/build/hardening.sh | 2++
Acommon/environment/build/pkg-config.sh | 2++
Acommon/environment/check/bootstrap.sh | 2++
Acommon/environment/check/ccache.sh | 2++
Acommon/environment/check/cross.sh | 2++
Acommon/environment/check/hardening.sh | 2++
Acommon/environment/check/pkg-config.sh | 2++
Acommon/environment/configure/.empty | 0
Acommon/environment/configure/autoconf_cache/aarch64-linux | 147+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/arm-common | 232+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/arm-linux | 157+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/common-glibc | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/common-linux | 172+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/endian-big | 8++++++++
Acommon/environment/configure/autoconf_cache/endian-little | 8++++++++
Acommon/environment/configure/autoconf_cache/ix86-common | 268+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/mips-common | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/mips-linux | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/mipsel-linux | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/musl-linux | 183+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/powerpc-common | 14++++++++++++++
Acommon/environment/configure/autoconf_cache/powerpc-linux | 16++++++++++++++++
Acommon/environment/configure/autoconf_cache/powerpc32-linux | 272+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/powerpc64-linux | 46++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/autoconf_cache/x86_64-linux | 170+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/automake/config.guess | 1476+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/automake/config.sub | 1801+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/bootstrap.sh | 4++++
Acommon/environment/configure/ccache.sh | 1+
Acommon/environment/configure/cross.sh | 5+++++
Acommon/environment/configure/gccspecs/hardened-cc1 | 5+++++
Acommon/environment/configure/gccspecs/hardened-ld | 5+++++
Acommon/environment/configure/gccspecs/hardened-mips-cc1 | 8++++++++
Acommon/environment/configure/gnu-configure-args.sh | 123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/configure/hardening.sh | 28++++++++++++++++++++++++++++
Acommon/environment/configure/pkg-config.sh | 5+++++
Acommon/environment/extract/.empty | 0
Acommon/environment/fetch/.empty | 0
Acommon/environment/fetch/fetch_cmd.sh | 4++++
Acommon/environment/fetch/misc.sh | 2++
Acommon/environment/install/.empty | 0
Acommon/environment/install/ccache.sh | 2++
Acommon/environment/install/cross.sh | 2++
Acommon/environment/install/extglob.sh | 18++++++++++++++++++
Acommon/environment/install/hardening.sh | 2++
Acommon/environment/install/pkg-config.sh | 2++
Acommon/environment/patch/bootstrap.sh | 2++
Acommon/environment/patch/ccache.sh | 2++
Acommon/environment/patch/cross.sh | 2++
Acommon/environment/patch/gnu-configure-args.sh | 2++
Acommon/environment/patch/hardening.sh | 2++
Acommon/environment/patch/pkg-config.sh | 2++
Acommon/environment/pkg/extglob.sh | 2++
Acommon/environment/setup-subpkg/.empty | 0
Acommon/environment/setup-subpkg/subpkg.sh | 45+++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/setup/.empty | 0
Acommon/environment/setup/git.sh | 32++++++++++++++++++++++++++++++++
Acommon/environment/setup/install.sh | 260+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/environment/setup/misc.sh | 21+++++++++++++++++++++
Acommon/environment/setup/options.sh | 40++++++++++++++++++++++++++++++++++++++++
Acommon/environment/setup/python.sh | 14++++++++++++++
Acommon/environment/setup/replace-interpreter.sh | 41+++++++++++++++++++++++++++++++++++++++++
Acommon/environment/setup/sourcepkg.sh | 39+++++++++++++++++++++++++++++++++++++++
Acommon/environment/setup/vsed.sh | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/README | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/do-build/.empty | 0
Acommon/hooks/do-check/.empty | 0
Acommon/hooks/do-configure/.empty | 0
Acommon/hooks/do-extract/.empty | 0
Acommon/hooks/do-extract/00-distfiles.sh | 172+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/do-fetch/.empty | 0
Acommon/hooks/do-fetch/00-distfiles.sh | 298+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/do-install/.empty | 0
Acommon/hooks/do-patch/.empty | 0
Acommon/hooks/do-patch/00-patches.sh | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/do-pkg/.empty | 0
Acommon/hooks/do-pkg/00-gen-pkg.sh | 171+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/post-build/.empty | 0
Acommon/hooks/post-check/.empty | 0
Acommon/hooks/post-configure/.empty | 0
Acommon/hooks/post-extract/.empty | 0
Acommon/hooks/post-fetch/.empty | 0
Acommon/hooks/post-install/.empty | 0
Acommon/hooks/post-install/00-compress-info-files.sh | 43+++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/post-install/00-lib32.sh | 8++++++++
Acommon/hooks/post-install/00-uncompress-manpages.sh | 21+++++++++++++++++++++
Acommon/hooks/post-install/01-remove-localized-manpages.sh | 20++++++++++++++++++++
Acommon/hooks/post-install/01-remove-misc.sh | 11+++++++++++
Acommon/hooks/post-install/02-remove-libtool-archives.sh | 7+++++++
Acommon/hooks/post-install/02-remove-perl-files.sh | 8++++++++
Acommon/hooks/post-install/02-remove-python-bytecode-files.sh | 7+++++++
Acommon/hooks/post-install/03-remove-empty-dirs.sh | 10++++++++++
Acommon/hooks/post-install/04-create-xbps-metadata-scripts.sh | 406+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/post-install/05-generate-gitrevs.sh | 23+++++++++++++++++++++++
Acommon/hooks/post-install/06-strip-and-debug-pkgs.sh | 149+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/post-install/10-pkglint-devel-paths.sh | 84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/post-install/11-pkglint-elf-in-usrshare.sh | 34++++++++++++++++++++++++++++++++++
Acommon/hooks/post-install/12-rename-python3-c-bindings.sh | 16++++++++++++++++
Acommon/hooks/post-install/13-pkg-config-clean-xbps-cross-base-ref.sh | 22++++++++++++++++++++++
Acommon/hooks/post-install/99-pkglint-warn-cross-cruft.sh | 21+++++++++++++++++++++
Acommon/hooks/post-patch/.empty | 0
Acommon/hooks/post-pkg/.empty | 0
Acommon/hooks/post-pkg/00-register-pkg.sh | 60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-build/.empty | 0
Acommon/hooks/pre-build/02-script-wrapper.sh | 2++
Acommon/hooks/pre-check/.empty | 0
Acommon/hooks/pre-configure/.empty | 0
Acommon/hooks/pre-configure/00-gnu-configure-asneeded.sh | 13+++++++++++++
Acommon/hooks/pre-configure/01-override-config.sh | 14++++++++++++++
Acommon/hooks/pre-configure/02-script-wrapper.sh | 215+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-extract/.empty | 0
Acommon/hooks/pre-fetch/.empty | 0
Acommon/hooks/pre-install/.empty | 0
Acommon/hooks/pre-install/00-lib32.sh | 9+++++++++
Acommon/hooks/pre-install/02-script-wrapper.sh | 2++
Acommon/hooks/pre-install/98-fixup-gir-path.sh | 12++++++++++++
Acommon/hooks/pre-patch/.empty | 0
Acommon/hooks/pre-pkg/.empty | 0
Acommon/hooks/pre-pkg/03-rewrite-python-shebang.sh | 40++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-pkg/04-generate-runtime-deps.sh | 172+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-pkg/05-prepare-32bit.sh | 172+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-pkg/06-shlib-provides.sh | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-pkg/90-set-timestamps.sh | 10++++++++++
Acommon/hooks/pre-pkg/99-pkglint-subpkgs.sh | 44++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-pkg/99-pkglint.sh | 183+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/hooks/pre-pkg/999-collected-rdeps.sh | 7+++++++
Acommon/options.description | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/repo-keys/3d:b9:c0:50:41:a7:68:4c:2e:2c:a9:a2:5a:04:b7:3f.plist | 12++++++++++++
Acommon/repo-keys/60:ae:0c:d6:f0:95:17:80:bc:93:46:7a:89:af:a3:2d.plist | 12++++++++++++
Acommon/shlibs | 3983+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/travis/build.sh | 23+++++++++++++++++++++++
Acommon/travis/changed_templates.sh | 17+++++++++++++++++
Acommon/travis/docker.sh | 18++++++++++++++++++
Acommon/travis/fetch-xtools.sh | 10++++++++++
Acommon/travis/fetch_upstream.sh | 12++++++++++++
Acommon/travis/license.lst | 447+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/travis/prepare.sh | 15+++++++++++++++
Acommon/travis/set_mirror.sh | 15+++++++++++++++
Acommon/travis/show_files.sh | 14++++++++++++++
Acommon/travis/xlint.sh | 12++++++++++++
Acommon/wrappers/cross-cc | 37+++++++++++++++++++++++++++++++++++++
Acommon/wrappers/date.sh | 6++++++
Acommon/wrappers/install.sh | 44++++++++++++++++++++++++++++++++++++++++++++
Acommon/wrappers/ldconfig.sh | 8++++++++
Acommon/wrappers/strip.sh | 4++++
Acommon/wrappers/uname.sh | 13+++++++++++++
Acommon/xbps-src/libexec/build.sh | 138+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-dobuild.sh | 38++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-docheck.sh | 43+++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-doconfigure.sh | 38++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-doextract.sh | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-dofetch.sh | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-doinstall.sh | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-dopatch.sh | 37+++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-dopkg.sh | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/libexec/xbps-src-prepkg.sh | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/build_dependencies.sh | 429+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/bulk.sh | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/chroot.sh | 314+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/common.sh | 659+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/consistency_check.sh | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/cross.sh | 136+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/pkgtarget.sh | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/purge_distfiles.sh | 85+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/show.sh | 149+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/update_check.sh | 193+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/xbps-src/shutils/update_hash_cache.sh | 12++++++++++++
Aetc/defaults.conf | 141+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aetc/defaults.virtual | 38++++++++++++++++++++++++++++++++++++++
Aetc/xbps.d/repos-local-x86_64-multilib.conf | 4++++
Aetc/xbps.d/repos-local.conf | 5+++++
Aetc/xbps.d/repos-remote-aarch64-musl.conf | 4++++
Aetc/xbps.d/repos-remote-aarch64.conf | 4++++
Aetc/xbps.d/repos-remote-musl.conf | 4++++
Aetc/xbps.d/repos-remote-x86_64-multilib.conf | 3+++
Aetc/xbps.d/repos-remote.conf | 4++++
Asrcpkgs/st/patches/st-nordtheme-0.8.2.diff | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrcpkgs/st/patches/st-scrollback-20200419-72e3f6c.diff | 351+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrcpkgs/st/st-terminfo.INSTALL | 5+++++
Asrcpkgs/st/st-terminfo.REMOVE | 8++++++++
Asrcpkgs/st/template | 38++++++++++++++++++++++++++++++++++++++
Axbps-src | 945+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
305 files changed, 23503 insertions(+), 0 deletions(-)

diff --git a/.gitattributes b/.gitattributes @@ -0,0 +1,2 @@ +template linguist-language=bash +common/shlibs merge=union diff --git a/.github/issue_template.md 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/workflows/notify-issue.yaml b/.github/workflows/notify-issue.yaml @@ -0,0 +1,32 @@ +name: "Issue Notification" +on: + issues: + types: [opened, closed] + +jobs: + ircnotify: + runs-on: ubuntu-latest + timeout-minutes: 3 + steps: + - name: Shorten URL + id: shortener + if: github.repository == 'void-linux/void-packages' + uses: Gottox/url-shortener-action@master + with: + url: "${{ github.event.issue.html_url }}" + - name: "Issue Notification" + uses: Gottox/irc-message-action@master + continue-on-error: true + if: github.repository == 'void-linux/void-packages' + with: + notice: true + channel: "#xbps" + nickname: void-packages + sasl_password: ${{ secrets.freenode_password_void_packages }} + tls: true + message: >- + ${{ github.actor }} + ${{ github.event.action }} issue + #${{ github.event.issue.number }} + “${{ github.event.issue.title }}” + ${{ steps.shortener.outputs.short_url }} diff --git a/.github/workflows/notify-pr.yaml b/.github/workflows/notify-pr.yaml @@ -0,0 +1,32 @@ +name: "Pull Request Notification" +on: + pull_request: + types: [opened, closed] + +jobs: + ircnotify: + runs-on: ubuntu-latest + timeout-minutes: 3 + steps: + - name: Shorten URL + id: shortener + if: github.repository == 'void-linux/void-packages' + uses: Gottox/url-shortener-action@master + with: + url: "${{ github.event.pull_request.html_url }}" + - name: "Pull Request Notification" + uses: Gottox/irc-message-action@master + continue-on-error: true + if: github.repository == 'void-linux/void-packages' + with: + notice: true + channel: "#xbps" + nickname: void-packages + sasl_password: ${{ secrets.freenode_password_void_packages }} + tls: true + message: >- + ${{ github.actor }} + ${{ github.event.action }} pull request + #${{ github.event.pull_request.number }} + “${{ github.event.pull_request.title }}” + ${{ steps.shortener.outputs.short_url }} diff --git a/.github/workflows/notify-push.yaml b/.github/workflows/notify-push.yaml @@ -0,0 +1,30 @@ +name: "Push Notification" +on: + push: + branches: [master] + +jobs: + ircnotify: + runs-on: ubuntu-latest + timeout-minutes: 3 + steps: + - name: Shorten URL + id: shortener + if: github.repository == 'void-linux/void-packages' + uses: Gottox/url-shortener-action@master + with: + url: "${{ github.event.compare }}" + - name: "Push Notification" + uses: Gottox/irc-message-action@master + continue-on-error: true + if: github.repository == 'void-linux/void-packages' + with: + notice: true + channel: "#xbps" + nickname: void-packages + sasl_password: ${{ secrets.freenode_password_void_packages }} + tls: true + message: >- + ${{ github.actor }} + pushed + ${{ steps.shortener.outputs.short_url }} diff --git a/.gitignore b/.gitignore @@ -0,0 +1,12 @@ +*.swo +*.swp +*~ +\#*# +*.o +masterdir* +hostdir* +etc/conf +etc/conf.* +etc/virtual +etc/xbps.d/custom +.xbps-checkvers*.plist diff --git a/.mailmap b/.mailmap @@ -0,0 +1,51 @@ +# 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> +xo <oh@rotce.de> teldra <teldra@rotce.de> + +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> diff --git a/.travis.yml b/.travis.yml @@ -0,0 +1,41 @@ +language: bash +dist: bionic + +git: + depth: 200 + +env: + global: + - PATH=$PATH:/tmp/bin + - DOCKER_BASE=voidlinux/masterdir + - TAG=20200607RC01 + + matrix: + - XLINT=1 LICENSE_LIST=common/travis/license.lst + - ARCH=x86_64 BOOTSTRAP=x86_64 + - ARCH=i686 BOOTSTRAP=i686 + - ARCH=aarch64 BOOTSTRAP=x86_64 + - ARCH=armv7l BOOTSTRAP=x86_64 + - ARCH=x86_64-musl BOOTSTRAP=x86_64-musl + - ARCH=armv6l-musl BOOTSTRAP=x86_64-musl + - ARCH=aarch64-musl BOOTSTRAP=x86_64-musl + +install: + - common/travis/docker.sh + +before_script: + - common/travis/set_mirror.sh + - common/travis/prepare.sh + - common/travis/fetch_upstream.sh + - common/travis/changed_templates.sh + - common/travis/fetch-xtools.sh + - common/travis/xlint.sh + +script: + - if [ -z "$XLINT" ]; then docker exec -t void hostrepo/common/travis/build.sh $BOOTSTRAP $ARCH; fi + +after_script: + - if [ -z "$XLINT" ]; then docker exec -t void hostrepo/common/travis/show_files.sh $BOOTSTRAP $ARCH; fi + +notifications: + email: false diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md @@ -0,0 +1,117 @@ +# 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). + +Please note that we do not accept any packages containing non-release versions, such as specific git- or svn-revisions anymore. + +### 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 built your template file or files, the commit message should have one of the following forms: + +* 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)). + +Pull requests are automatically submitted for Continuous Integration (CI) testing to ensure packages build on various combinations of libc and architecture. +Packages that take longer than 50 minutes to build (for example, Firefox or the Linux kernel) will fail CI and should include `[ci skip]` in the last line of the last commit message in the PR 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. + +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. + +For further information, please consult the [manual](https://github.com/void-linux/void-packages/blob/master/Manual.md). + +`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> + +For further details, see the output of `./xbps-src -h`. + +### Starting a pull request + +Once you have successfully built the package, you can start a pull request. + +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, overwriting any old commits. Closing and opening your pull requests repeatedly spams the Void maintainers. + +#### Travis + +Once you have started a pull request, you will get instant feedback from Travis. It will 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 happen that Travis reports errors about places you haven't touched. Please feel free to fix those errors too. + +#### Review + +Most of the time your pull request will contain mistakes. It's nothing bad, it just happens. + +Reviewers will comment on your pull request and point out which changes are needed before the template can be included. + +We recommend having only a single commit for pull request, so if you need to make changes in commits but already have a pull request, use the following commands: + + $ git add <file> + $ git commit --amend + $ git push -f + +#### 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 @@ -0,0 +1,23 @@ + Copyright (c) 2008-2020 Juan Romero Pardines and contributors + Copyright (c) 2017-2020 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 @@ -0,0 +1,2009 @@ +# 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](#namingconvention) + * [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) + * [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) + * [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) + * [Notes](#notes) + * [Contributing via git](#contributing) +* [Help](#help) + +<a id="Introduction"></a> +## Introduction + +The `void-packages` repository contains all `source` packages that are the +recipes to download, compile and build binary packages for `Void`. +Those `source` package files are called `templates`. + +The `template files` are `GNU bash` shell scripts that must define some required/optional +`variables` and `functions` that are processed by `xbps-src` (the package builder) +to generate the resulting binary packages. + +By convention, all templates start with a comment briefly explaining what they +are. In addition, pkgname and version can't have any characters in them that +would require them to be quoted, so they are not quoted. + +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. + +<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 for example by running `make -k check`. + +- `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. + +> 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. + +- `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` -> `aarch64-unknown-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` A string 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 + which thus have and require no license, should have set + `license="BSD-2-Clause"`. + + 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. + +<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` 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 | + +- `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 target 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 (`all` target). + +- `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 target 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 `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 `-p0` format. By default set to `-Np0`. + +- `disable_parallel_build` If set the package won't be built in parallel +and `XBPS_MAKEJOBS` has no effect. + +- `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. + +- `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. + +- `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 travis +buildlog 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 travis +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. + +- `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. + +- `archs` Whitespace separated list of architectures that a package can be +built for, available architectures can be found under `common/cross-profiles` +alongside the `noarch` value for packages that do not contain any machine code. +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="*" + # Packages that do not depend on architecture-specific objects + archs=noarch + ``` + +<a id="explain_depends"></a> +#### About the many types of `depends` variable. + +So far we have listed four types of `depends`, there are `hostmakedepends`, +`makedepends`, `checkdepends` and plain old `depends`.To understand the difference +between them, understand this: Void Linux cross compiles for many arches. +Sometimes in a build process, certain programs must be run, for example `yacc`, or the +compiler itself for a C program. Those programs get put in `hostmakedepends`. +When the build runs, those will be installed on the host to help the build +complete. + +Then there are those things for which a package either links against or +includes header files. These are `makedepends`, and regardless of the +architecture of the build machine, the architecture of the target machine must +be used. Typically the `makedepends` will be the only one of the three types of +`depends` to include `-devel` packages, and typically only `-devel` packages. + +Then there are those things that are required for a package to run its testsuite +`dejagnu` or libraries it must link to when building test binaries like `cmocka`. +These are `checkdepends` and they are installed like they are part of `makedepends`. +the difference is that they are only installed when `XBPS_CHECK_PKGS` is defined. + +The final variable, `depends`, is for those things the package needs at +runtime and without which is unusable, and that xbps can't auto-detect. +These are not all the packages the package needs at runtime, but only those +that are not linked against. This variable is most useful for non-compiled +programs. + +Finally, as a general rule, if something compiles the exact same way whether or +not you add a particular package to `makedepends` or `hostmakedepends`, it +shouldn't be added. + +<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 `-Np0`. 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. If + the variable `go_get` is set to `yes`, the package will be + downloaded with `go get`. Otherwise (the default) it's expected that + the distfile contains the package. In both cases, 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`. `archs` is set to `noarch` unconditionally +and `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` + +For packages that use the Python module build method (`setup.py`), 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 + +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` + +- `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. + +<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_install()` Actions to execute after `post_build()`. + +- `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, pre_patch, do_patch, post_patch: `wrksrc`. + +- For pre_configure 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 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). Data subpackages are almost always `archs=noarch`. +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. + +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_get`: If set to yes, the package specified via `go_import_path` + will be downloaded with `go get`. Otherwise, a distfile has to be + provided. This option should only be used with `-git` (or similar) + packages; using a versioned distfile is preferred. +- `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: + +- `archs=noarch`: Font packages don't install arch specific files. +- `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_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. +- 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_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="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 + +Fork the voidlinux `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 you can submit +a github pull request; see https://help.github.com/articles/fork-a-repo for more information. + +To keep your forked repository always up to date, setup the `upstream` remote +to pull in new changes: + + $ git remote add upstream git://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.freenode.net`. diff --git a/README.md b/README.md @@ -0,0 +1,521 @@ +## 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 +- curl(1) - required by `xbps-src update-check` +- flock(1) - util-linux +- bsdtar or GNU tar (in that order of preference) +- install(1) - GNU coreutils +- objcopy(1), objdump(1), strip(1): binutils +- other common POSIX utilities included by default in almost all UNIX systems. + +`xbps-src` requires a utility to chroot 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: + + - `bwrap` - bubblewrap, see https://github.com/projectatomic/bubblewrap. + - `ethereal` - only useful for one-shot containers, i.e docker (used with travis). + - `xbps-uunshare(1)` - XBPS utility that uses `user_namespaces(7)` (part of xbps, default). + - `xbps-uchroot(1)` - XBPS utility that uses `namespaces` and must be `setgid` (part of xbps). + - `proot(1)` - utility that implements chroot/bind mounts in user space, see https://proot-me.github.io/. + +> NOTE: `xbps-src` does not allow building as root anymore. Use one of the chroot +methods shown above. + +<a name="quick-start"></a> +### Quick start + +Clone the `void-packages` git repository and install the bootstrap packages: + +``` +$ git clone git://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) + +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) + +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. + +#### proot(1) + +The `proot(1)` utility implements chroot and bind mounts support completely in user space, +and can be used if your Linux kernel does not have support for namespaces. See https://proot-me.github.io/. +for more information. + +To enable it: + + $ cd void-packages + $ echo XBPS_CHROOT_CMD=proot >> etc/conf + +<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 + +If for whatever reason a package has been built and it is available in your local repository +and you have to rebuild it without bumping its `version` or `revision` fields, it is possible +to accomplish this task easily with `xbps-src`: + + $ ./xbps-src -f pkg xbps + +Reinstalling this package in your target `rootdir` can be easily done too: + + $ xbps-install --repository=/path/to/local/repo -yff xbps-0.25_1 + +> 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 `proot` or `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>.tar.xz -C ~/XBPS + $ export PATH=~/XBPS/usr/bin:$PATH + +If your system does not support `user namespaces`, a privileged group is required to be able to use +`xbps-uchroot(1)` with xbps-src, by default it's set to the `xbuilder` group, change this to your desired group: + + # chown root:<group> ~/XBPS/usr/bin/xbps-uchroot.static + # chmod 4750 ~/XBPS/usr/bin/xbps-uchroot.static + +Clone the `void-packages` git repository: + + $ git clone git://github.com/void-linux/void-packages + +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: + + - cross compilation mode + - native mode with a 32bit masterdir + +The first mode (cross compilation) is as easy as: + + $ ./xbps-src -a i686 pkg ... + +The second 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 + +A native build environment is required to be able to cross compile the bootstrap packages for the musl C library; this is accomplished by installing them via `binary-bootstrap`: + + $ ./xbps-src binary-bootstrap + +Now cross compile `base-chroot-musl` for your native architecture: + + $ ./xbps-src -a x86_64-musl pkg base-chroot-musl + +Wait until all packages are built and when ready, 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. Try: + + $ ./xbps-src -m masterdir-x86_64-musl chroot + $ ldd + +To see if the musl C dynamic linker is working as expected. + +<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/gir.sh 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 python-gobject-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 @@ -0,0 +1,36 @@ +# +# 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; + # addding 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" + + # 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 @@ -0,0 +1,6 @@ +if [ "$CROSS_BUILD" ]; then + export QEMU_LD_PREFIX=${XBPS_CROSS_BASE} + if [[ $hostmakedepends != *"qemu-user-static"* ]]; then + hostmakedepends+=" qemu-user-static" + fi +fi diff --git a/common/build-helper/qmake.sh b/common/build-helper/qmake.sh @@ -0,0 +1,48 @@ +# 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 + 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=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 + cat > "${XBPS_WRAPPERDIR}/qmake" <<_EOF +#!/bin/sh +exec /usr/lib/qt5/bin/qmake "\$@" \ + QMAKE_CC=$CC QMAKE_CXX=$CXX QMAKE_LINK=$CXX QMAKE_LINK_C=$CC \ + QMAKE_CFLAGS+="${CFLAGS}" QMAKE_CXXFLAGS+="${CXXFLAGS}" \ + QMAKE_LFLAGS+="${LDFLAGS}" \ + -qtconf "${XBPS_WRAPPERDIR}/qt.conf" +_EOF + + chmod 755 ${XBPS_WRAPPERDIR}/qmake + cp -p ${XBPS_WRAPPERDIR}/qmake{,-qt5} +fi diff --git a/common/build-helper/rust.sh b/common/build-helper/rust.sh @@ -0,0 +1,40 @@ +# 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" +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" + +# openssl-sys +export OPENSSL_NO_VENDOR=1 diff --git a/common/build-profiles/README b/common/build-profiles/README @@ -0,0 +1,15 @@ +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) + +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 @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-march=armv8-a" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="aarch64-unknown-linux-musl" +XBPS_RUST_TARGET="$XBPS_TRIPLET" diff --git a/common/build-profiles/aarch64.sh b/common/build-profiles/aarch64.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-march=armv8-a" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="aarch64-unknown-linux-gnu" +XBPS_RUST_TARGET="$XBPS_TRIPLET" diff --git a/common/build-profiles/armv6l-musl.sh b/common/build-profiles/armv6l-musl.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="armv6l-linux-musleabihf" +XBPS_RUST_TARGET="arm-unknown-linux-musleabihf" diff --git a/common/build-profiles/armv6l.sh b/common/build-profiles/armv6l.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-march=armv6 -mfpu=vfp -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="armv6l-unknown-linux-gnueabihf" +XBPS_RUST_TARGET="arm-unknown-linux-gnueabihf" diff --git a/common/build-profiles/armv7l-musl.sh b/common/build-profiles/armv7l-musl.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_CXXFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="armv7l-linux-musleabihf" +XBPS_RUST_TARGET="armv7-unknown-linux-musleabihf" diff --git a/common/build-profiles/armv7l.sh b/common/build-profiles/armv7l.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="armv7l-unknown-linux-gnueabihf" +XBPS_RUST_TARGET="armv7-unknown-linux-gnueabihf" diff --git a/common/build-profiles/bootstrap.sh 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 @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mtune=i686" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="i686-pc-linux-musl" +XBPS_RUST_TARGET="i686-unknown-linux-musl" diff --git a/common/build-profiles/i686.sh b/common/build-profiles/i686.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mtune=i686" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="i686-pc-linux-gnu" +XBPS_RUST_TARGET="i686-unknown-linux-gnu" diff --git a/common/build-profiles/ppc-musl.sh b/common/build-profiles/ppc-musl.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mcpu=powerpc -mno-altivec -mtune=G4 -mlong-double-64" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="powerpc-linux-musl" +XBPS_RUST_TARGET="powerpc-unknown-linux-musl" diff --git a/common/build-profiles/ppc.sh b/common/build-profiles/ppc.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mcpu=powerpc -mno-altivec -mtune=G4" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="powerpc-linux-gnu" +XBPS_RUST_TARGET="powerpc-unknown-linux-gnu" diff --git a/common/build-profiles/ppc64-musl.sh b/common/build-profiles/ppc64-musl.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mcpu=970 -mtune=power9 -maltivec -mlong-double-64 -mabi=elfv2" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="powerpc64-unknown-linux-musl" +XBPS_RUST_TARGET="$XBPS_TRIPLET" diff --git a/common/build-profiles/ppc64.sh b/common/build-profiles/ppc64.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mcpu=970 -mtune=power9 -maltivec -mabi=elfv2" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="powerpc64-unknown-linux-gnu" +XBPS_RUST_TARGET="$XBPS_TRIPLET" diff --git a/common/build-profiles/ppc64le-musl.sh b/common/build-profiles/ppc64le-musl.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mcpu=powerpc64le -mtune=power9 -maltivec -mlong-double-64 -mabi=elfv2" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="powerpc64le-unknown-linux-musl" +XBPS_RUST_TARGET="$XBPS_TRIPLET" diff --git a/common/build-profiles/ppc64le.sh b/common/build-profiles/ppc64le.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mcpu=powerpc64le -mtune=power9 -maltivec -mabi=elfv2" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="powerpc64le-unknown-linux-gnu" +XBPS_RUST_TARGET="$XBPS_TRIPLET" diff --git a/common/build-profiles/x86_64-musl.sh b/common/build-profiles/x86_64-musl.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mtune=generic" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="x86_64-unknown-linux-musl" +XBPS_RUST_TARGET="${XBPS_TRIPLET}" diff --git a/common/build-profiles/x86_64.sh b/common/build-profiles/x86_64.sh @@ -0,0 +1,5 @@ +XBPS_TARGET_CFLAGS="-mtune=generic" +XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" +XBPS_TARGET_FFLAGS="" +XBPS_TRIPLET="x86_64-unknown-linux-gnu" +XBPS_RUST_TARGET="${XBPS_TRIPLET}" diff --git a/common/build-style/R-cran.sh 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 @@ -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 @@ -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 @@ -0,0 +1,103 @@ +# +# This helper is for templates using cmake. +# +do_configure() { + local cmake_args= + [ ! -d ${cmake_builddir:=build} ] && mkdir -p ${cmake_builddir} + cd ${cmake_builddir} + + if [ "$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 + if [ -x "${XBPS_CROSS_BASE}/usr/bin/wx-config-gtk3" ]; then + wx_config=wx-config-gtk3 + fi + 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}) + +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +SET(wxWidgets_CONFIG_EXECUTABLE ${XBPS_WRAPPERDIR}/${wx_config:=wx-config}) +_EOF + cmake_args+=" -DCMAKE_TOOLCHAIN_FILE=cross_${XBPS_CROSS_TRIPLET}.cmake" + fi + cmake_args+=" -DCMAKE_INSTALL_PREFIX=/usr" + cmake_args+=" -DCMAKE_BUILD_TYPE=Release" + + if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then + cmake_args+=" -DCMAKE_INSTALL_LIBDIR=lib32" + else + cmake_args+=" -DCMAKE_INSTALL_LIBDIR=lib" + fi + + 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" + + # Override flags: https://gitlab.kitware.com/cmake/cmake/issues/19590 + CFLAGS="${CFLAGS/ -pipe / }" CXXFLAGS="${CXXFLAGS/ -pipe / }" \ + cmake ${cmake_args} ${configure_args} $(echo ${cmake_builddir}|sed \ + -e 's|[^/]$|/|' -e 's|[^/]*||g' -e 's|/|../|g') + + # Replace -isystem with -I for Qt4 and Qt5 packages + find -name flags.make -exec sed -i "{}" -e"s;-isystem;-I;g" \; +} + +do_build() { + : ${make_cmd:=make} + + cd ${cmake_builddir:=build} + ${make_cmd} ${makejobs} ${make_build_args} ${make_build_target} +} + +do_check() { + cd ${cmake_builddir:=build} + + if [ -z "$make_cmd" ] && [ -z "$make_check_target" ]; then + 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 + fi + + : ${make_cmd:=make} + : ${make_check_target:=test} + + CTEST_OUTPUT_ON_FAILURE=TRUE ${make_cmd} ${make_check_args} ${make_check_target} +} + +do_install() { + : ${make_cmd:=make} + : ${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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1,39 @@ +# +# This helper is for templates using GNU configure scripts. +# +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/gnu-makefile.sh 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" OBJDUMP="$OBJDUMP" \ + CFLAGS="$CFLAGS" 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 @@ -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" + elif [ "${go_get}" != "yes" ]; then + 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 @@ -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 @@ -0,0 +1,139 @@ +# +# 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' +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 +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 + + ${meson_cmd} \ + --prefix=/usr \ + --libdir=/usr/lib \ + --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=enabled \ + --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 @@ -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 @@ -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 @@ -0,0 +1,88 @@ +# +# 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, one can use (relative to $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}/Makefile.PL ]; then + sed -i "s,/usr/include,${XBPS_CROSS_BASE}/usr/include,g" ${wrksrc}/Makefile.PL + fi + + if [ -z "$perl_configure_dirs" ]; then + perlmkf="$wrksrc/Makefile.PL" + if [ ! -f $perlmkf ]; then + msg_error "*** ERROR couldn't find $perlmkf, aborting ***\n" + fi + + cd $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 Makefile.PL ${configure_args} INSTALLDIRS=vendor + fi + + for i in ${perl_configure_dirs}; do + perlmkf="$wrksrc/$i/Makefile.PL" + if [ -f $perlmkf ]; then + cd $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 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 @@ -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 @@ -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 @@ -0,0 +1,58 @@ +# +# 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 [ -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} +} + +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/qmake.sh b/common/build-style/qmake.sh @@ -0,0 +1,144 @@ +# +# 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 hostdepends?\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;; + esac + mkdir -p "${wrksrc}/.target-spec/linux-g++" + cat > "${wrksrc}/.target-spec/linux-g++/qmake.conf" <<_EOF +MAKEFILE_GENERATOR = UNIX +CONFIG += incremental +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} +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 +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}" \ + ${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 @@ -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 @@ -0,0 +1,9 @@ +# +# This helper is for templates installing ruby modules. +# + +do_install() { + local _vendorlibdir=$(ruby -e 'puts RbConfig::CONFIG["vendorlibdir"]') + + 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 @@ -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/slashpackage.sh 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 @@ -0,0 +1,44 @@ +do_build() { + local f p + 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/" + if [ -d "texmf-dist" ] ; then + rsync -ar texmf-dist/ ./ + rm -rf texmf-dist/ + fi + rm -f LICENSE* + while IFS=' ' read -r f p ; do + if [ "$p" = "$pkgname" ] && ! [ -e "$f" ]; then + msg_error "$pkgver: missing file $f\n" + elif [ "$p" != "$pkgname" ] && [ -e "$f" ]; then + echo "removed $f" + 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() { + local f p exitcode=0 + cd build + while read p; do + if [[ ${p%-*} =~ .*-bin$ ]] || [ "${p%-*}" = "$pkgname" ]; then + 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/waf.sh b/common/build-style/waf.sh @@ -0,0 +1,20 @@ +# +# 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 ${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 @@ -0,0 +1,20 @@ +# +# This helper is for templates using WAF with python3 to build/install. +# +do_configure() { + : ${configure_script:=waf} + + PYTHON=/usr/bin/python3 python3 ${configure_script} configure --prefix=/usr --libdir=/usr/lib ${configure_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/chroot-style/README 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 @@ -0,0 +1,23 @@ +#!/bin/sh +# +# This chroot script uses bubblewrap (see https://github.com/projectatomic/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 + +bwrap --dev-bind "$MASTERDIR" / --dev-bind "$DISTDIR" /void-packages \ + --dev /dev --tmpfs /tmp --proc /proc \ + ${HOSTDIR:+--dev-bind "$HOSTDIR" /host} $EXTRA_ARGS "$@" diff --git a/common/chroot-style/ethereal.sh 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/proot.sh b/common/chroot-style/proot.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# +# This chroot script uses proot (see http://proot.me) +# +readonly MASTERDIR="$1" +readonly DISTDIR="$2" +readonly HOSTDIR="$3" +readonly EXTRA_ARGS="$4" +shift 4 + +if ! command -v proot >/dev/null 2>&1; then + exit 1 +fi + +if [ -z "$MASTERDIR" -o -z "$DISTDIR" ]; then + echo "$0 MASTERDIR/DISTDIR not set" + exit 1 +fi + +# proot does not properly return the resultcode. Workaround this +RESULT=$(mktemp) || exit 1 + +PROOT_NO_SECCOMP=1 proot -r $MASTERDIR -w / -b "$RESULT:/.result" -b $DISTDIR:/void-packages \ + ${HOSTDIR:+-b $HOSTDIR:/host} -b /proc:/proc -b /dev:/dev \ + -b /sys:/sys $EXTRA_ARGS /bin/sh -c '$@; echo $? > /.result' $0 $@ + +rv=$(cat "$RESULT") +rm "$RESULT" + +exit $rv diff --git a/common/chroot-style/uchroot.sh b/common/chroot-style/uchroot.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# +# This chroot script uses xbps-uchroot(8). +# +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 @@ -0,0 +1,21 @@ +#!/bin/sh +# +# This chroot script uses xbps-uunshare(8) 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 @@ -0,0 +1,17 @@ +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) + +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 @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="aarch64-unknown-linux-musl" diff --git a/common/cross-profiles/aarch64.sh 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_CFLAGS="-O2 -pipe" # XXX not yet supported: -fstack-protector-strong +XBPS_CXXFLAGS="$XBPS_CFLAGS" +XBPS_CROSS_CFLAGS="-march=armv8-a" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" +XBPS_CROSS_FFLAGS="" +XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="aarch64-unknown-linux-gnu" diff --git a/common/cross-profiles/armv5te-musl.sh 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 @@ -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 @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="arm-unknown-linux-musleabi" diff --git a/common/cross-profiles/armv5tel.sh b/common/cross-profiles/armv5tel.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="arm-unknown-linux-gnueabi" diff --git a/common/cross-profiles/armv6hf-musl.sh 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 @@ -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 @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="arm-unknown-linux-musleabihf" diff --git a/common/cross-profiles/armv6l.sh b/common/cross-profiles/armv6l.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="arm-unknown-linux-gnueabihf" diff --git a/common/cross-profiles/armv7hf-musl.sh 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 @@ -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 @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="armv7-unknown-linux-musleabihf" diff --git a/common/cross-profiles/armv7l.sh b/common/cross-profiles/armv7l.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="armv7-unknown-linux-gnueabihf" diff --git a/common/cross-profiles/i686-musl.sh b/common/cross-profiles/i686-musl.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="i686-unknown-linux-musl" diff --git a/common/cross-profiles/i686.sh b/common/cross-profiles/i686.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="i686-unknown-linux-gnu" diff --git a/common/cross-profiles/mips-musl.sh b/common/cross-profiles/mips-musl.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="mips-unknown-linux-musl" diff --git a/common/cross-profiles/mipsel-musl.sh b/common/cross-profiles/mipsel-musl.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="mipsel-unknown-linux-musl" diff --git a/common/cross-profiles/mipselhf-musl.sh b/common/cross-profiles/mipselhf-musl.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="mipsel-unknown-linux-musl" diff --git a/common/cross-profiles/mipshf-musl.sh b/common/cross-profiles/mipshf-musl.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="mips-unknown-linux-musl" diff --git a/common/cross-profiles/ppc-musl.sh b/common/cross-profiles/ppc-musl.sh @@ -0,0 +1,10 @@ +# Cross build profile for PowerPC. + +XBPS_TARGET_MACHINE="ppc-musl" +XBPS_TARGET_QEMU_MACHINE="ppc" +XBPS_CROSS_TRIPLET="powerpc-linux-musl" +XBPS_CROSS_CFLAGS="-mcpu=powerpc -mno-altivec -mtune=G4 -mlong-double-64" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" +XBPS_CROSS_FFLAGS="" +XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="powerpc-unknown-linux-musl" diff --git a/common/cross-profiles/ppc.sh b/common/cross-profiles/ppc.sh @@ -0,0 +1,10 @@ +# Cross build profile for PowerPC. + +XBPS_TARGET_MACHINE="ppc" +XBPS_TARGET_QEMU_MACHINE="ppc" +XBPS_CROSS_TRIPLET="powerpc-linux-gnu" +XBPS_CROSS_CFLAGS="-mcpu=powerpc -mno-altivec -mtune=G4" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" +XBPS_CROSS_FFLAGS="" +XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="powerpc-unknown-linux-gnu" diff --git a/common/cross-profiles/ppc64-musl.sh b/common/cross-profiles/ppc64-musl.sh @@ -0,0 +1,10 @@ +# 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 -maltivec -mlong-double-64 -mabi=elfv2" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" +XBPS_CROSS_FFLAGS="" +XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="powerpc64-unknown-linux-musl" diff --git a/common/cross-profiles/ppc64.sh b/common/cross-profiles/ppc64.sh @@ -0,0 +1,10 @@ +# 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 -maltivec -mabi=elfv2" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" +XBPS_CROSS_FFLAGS="" +XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="powerpc64-unknown-linux-gnu" diff --git a/common/cross-profiles/ppc64le-musl.sh b/common/cross-profiles/ppc64le-musl.sh @@ -0,0 +1,10 @@ +# 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="-mcpu=powerpc64le -mtune=power9 -maltivec -mlong-double-64 -mabi=elfv2" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" +XBPS_CROSS_FFLAGS="" +XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="powerpc64le-unknown-linux-musl" diff --git a/common/cross-profiles/ppc64le.sh b/common/cross-profiles/ppc64le.sh @@ -0,0 +1,10 @@ +# 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="-mcpu=powerpc64le -mtune=power9 -maltivec -mabi=elfv2" +XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" +XBPS_CROSS_FFLAGS="" +XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="powerpc64le-unknown-linux-gnu" diff --git a/common/cross-profiles/x86_64-musl.sh b/common/cross-profiles/x86_64-musl.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="x86_64-unknown-linux-musl" diff --git a/common/cross-profiles/x86_64.sh b/common/cross-profiles/x86_64.sh @@ -0,0 +1,10 @@ +# 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_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" +XBPS_CROSS_RUST_TARGET="x86_64-unknown-linux-gnu" diff --git a/common/environment/README 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 diff --git a/common/environment/build-style/R-cran.sh b/common/environment/build-style/R-cran.sh @@ -0,0 +1,4 @@ +makedepends+=" R" +depends+=" R" +distfiles="https://cran.r-project.org/src/contrib/${pkgname#R-cran-}_${version//r/-}.tar.gz" +wrksrc="${XBPS_BUILDDIR}/${pkgname#R-cran-}" diff --git a/common/environment/build-style/cargo.sh 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 @@ -0,0 +1 @@ +hostmakedepends+=" cmake" diff --git a/common/environment/build-style/gem.sh b/common/environment/build-style/gem.sh @@ -0,0 +1,9 @@ +lib32disabled=yes +hostmakedepends+=" ruby" +depends+=" ruby" +archs=noarch + +# 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 @@ -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 @@ -0,0 +1,41 @@ +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 [ "$CROSS_BUILD" ]; then + # target compiler to use; otherwise it'll just call gccgo + export GCCGO="${XBPS_CROSS_TRIPLET}-gccgo" + fi +fi +nostrip=yes + +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 +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 @@ -0,0 +1 @@ +hostmakedepends+=" ghc stack" diff --git a/common/environment/build-style/meson.sh 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 @@ -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 @@ -0,0 +1 @@ +lib32disabled=yes diff --git a/common/environment/build-style/python-module.sh 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 @@ -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 @@ -0,0 +1,2 @@ +lib32disabled=yes +makedepends+=" python3" diff --git a/common/environment/build-style/raku-dist.sh 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 @@ -0,0 +1 @@ +lib32disabled=yes diff --git a/common/environment/build-style/scons.sh 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 @@ -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 @@ -0,0 +1,209 @@ +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/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/glossaries/makeglossaries-lite.lua texlive +scripts/glossaries/makeglossaries 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/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/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/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/waf.sh 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 @@ -0,0 +1 @@ +hostmakedepends+=" python3" diff --git a/common/environment/build/.empty b/common/environment/build/.empty diff --git a/common/environment/build/bootstrap.sh 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 @@ -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 @@ -0,0 +1 @@ +../configure/cross.sh+ \ No newline at end of file diff --git a/common/environment/build/hardening.sh 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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1 @@ +../configure/cross.sh+ \ No newline at end of file diff --git a/common/environment/check/hardening.sh b/common/environment/check/hardening.sh @@ -0,0 +1 @@ +../configure/hardening.sh+ \ No newline at end of file diff --git a/common/environment/check/pkg-config.sh 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 diff --git a/common/environment/configure/autoconf_cache/aarch64-linux 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 @@ -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 @@ -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 @@ -0,0 +1,78 @@ +# general +ac_cv_have_decl_sys_siglist=${ac_cv_have_decl_sys_siglist=yes} + +# bash +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=yes} +bash_cv_sys_siglist=${bash_cv_sys_siglist=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} + +# 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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=1 +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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1,1476 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-03-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"). +# +# 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-2018 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 + +trap 'exit 1' 1 2 15 + +# 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. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { 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) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; 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 ; set_cc_for_build= ;' + +# 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) >/dev/null 2>&1 ; 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 + + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" + #include <features.h> + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +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) + eval "$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 ;; + 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 ;; + *: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.*:*) + eval "$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 [ "$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) + eval "$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 [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$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 [ -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 + eval "$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 [ -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 [ -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 [ "$HP_ARCH" = "" ]; then + eval "$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 [ "$HP_ARCH" = hppa2.0w ] + then + eval "$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:*:*) + eval "$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 [ -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 ;; + *: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-unknown-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 ;; + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-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` 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:*:*) + eval "$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:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; 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:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + 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 [ -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 ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval "$set_cc_for_build" + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$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 + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + 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. + 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 ;; +esac + +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 + +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 + +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 @@ -0,0 +1,1801 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-03-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-2018 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" + 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 + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo "$1" | sed 's/-[^-]*$//'` + if [ "$basic_machine" != "$1" ] + then os=`echo "$1" | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -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*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | 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 \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # 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) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | 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-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-pc + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2*) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + x64) + basic_machine=x86_64-pc + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + none) + basic_machine=none-none + os=-none + ;; + +# 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) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +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 + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + -es1800*) + os=-ose + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -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* | -superux* | -rtmk* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ + | -midnightbsd*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -xray | -os68k* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -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 + ;; + -nsk*) + os=-nsk + ;; + # 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 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=-eabi + ;; + *) + os=-elf + ;; + esac + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; +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. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + 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 + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $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 + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + 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 + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` + ;; +esac + +echo "$basic_machine$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 @@ -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 @@ -0,0 +1 @@ +export CCACHE_BASEDIR="$wrksrc/$build_wrksrc" diff --git a/common/environment/configure/cross.sh 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/gccspecs/hardened-cc1 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 @@ -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 @@ -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 @@ -0,0 +1,123 @@ +# This file sets up configure_args with common settings. + +if [ -n "$build_style" -a "$build_style" != "gnu-configure" ]; then + return 0 +fi + +export configure_args="--prefix=/usr --sysconfdir=/etc --sbindir=/usr/bin --bindir=/usr/bin + --mandir=/usr/share/man --infodir=/usr/share/info --localstatedir=/var ${configure_args}" + +. ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh +export configure_args+=" --host=$XBPS_TRIPLET --build=$XBPS_TRIPLET" + +if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then + # on x86 use /usr/lib32 as libdir, but just as fake directory, + # because /usr/lib32 is a symlink to /usr/lib in void. + export configure_args+=" --libdir=/usr/lib32" +fi + +_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 + set +a + return 0 +fi + +export configure_args+=" --host=$XBPS_CROSS_TRIPLET --with-sysroot=$XBPS_CROSS_BASE --with-libtool-sysroot=$XBPS_CROSS_BASE " + +# 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 @@ -0,0 +1,28 @@ +# 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}" + LDFLAGS="-Wl,-z,relro -Wl,-z,now ${LDFLAGS}" + fi +else + CFLAGS="-fno-PIE ${CFLAGS}" + CXXFLAGS="-fno-PIE ${CFLAGS}" + LDFLAGS="-no-pie ${LDFLAGS}" +fi diff --git a/common/environment/configure/pkg-config.sh 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 diff --git a/common/environment/fetch/.empty b/common/environment/fetch/.empty diff --git a/common/environment/fetch/fetch_cmd.sh 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 @@ -0,0 +1 @@ +../setup/misc.sh+ \ No newline at end of file diff --git a/common/environment/install/.empty b/common/environment/install/.empty diff --git a/common/environment/install/ccache.sh 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 @@ -0,0 +1 @@ +../configure/cross.sh+ \ No newline at end of file diff --git a/common/environment/install/extglob.sh 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1 @@ +../configure/cross.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 @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/common/environment/setup-subpkg/subpkg.sh b/common/environment/setup-subpkg/subpkg.sh @@ -0,0 +1,45 @@ +# 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/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 diff --git a/common/environment/setup/git.sh b/common/environment/setup/git.sh @@ -0,0 +1,32 @@ +# 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 + msg_error "BUG: environment/setup: XBPS_GIT_CMD is not set\n" +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} log --pretty='%ct' -n1 HEAD)" + 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 @@ -0,0 +1,260 @@ +# -*-* 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 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" + + 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 + chmod 755 ${PKGDESTDIR}/etc/sv/${service}/run + if [ -r ${PKGDESTDIR}/etc/sv/${service}/finish ]; then + chmod 755 ${PKGDESTDIR}/etc/sv/${service}/finish + fi + ln ${LN_OPTS} /run/runit/supervise.${service} ${PKGDESTDIR}/etc/sv/${service}/supervise + if [ -r ${PKGDESTDIR}/etc/sv/${service}/log/run ]; then + chmod 755 ${PKGDESTDIR}/etc/sv/${service}/log/run + ln ${LN_OPTS} /run/runit/supervise.${service}-log ${PKGDESTDIR}/etc/sv/${service}/log/supervise + 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" + local _destdir= + + if [ -z "$DESTDIR" ]; then + msg_red "$pkgver: vinstall: DESTDIR 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 [ -n "$XBPS_PKGDESTDIR" ]; then + _destdir="$PKGDESTDIR" + else + _destdir="$DESTDIR" + fi + + if [ -z "$targetfile" ]; then + install -Dm${mode} "${file}" "${_destdir}/${targetdir}/${file##*/}" + else + install -Dm${mode} "${file}" "${_destdir}/${targetdir}/${targetfile##*/}" + fi +} + +_vcopy() { + local files="$1" targetdir="$2" _destdir + + if [ -z "$DESTDIR" ]; then + msg_red "$pkgver: vcopy: DESTDIR 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 + + if [ -n "$XBPS_PKGDESTDIR" ]; then + _destdir="$PKGDESTDIR" + else + _destdir="$DESTDIR" + fi + + cp -a $files ${_destdir}/${targetdir} +} + +_vmove() { + local f files="$1" _destdir _pkgdestdir _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 + 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 [ -n "$XBPS_PKGDESTDIR" ]; then + _pkgdestdir="$PKGDESTDIR" + _destdir="$DESTDIR" + else + _pkgdestdir="$DESTDIR" + _destdir="$DESTDIR" + fi + + 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" _destdir + + if [ -z "$DESTDIR" ]; then + msg_red "$pkgver: vmkdir: DESTDIR unset, can't continue...\n" + return 1 + fi + + if [ -z "$dir" ]; then + msg_red "vmkdir: directory argument unset.\n" + return 1 + fi + + if [ -n "$XBPS_PKGDESTDIR" ]; then + _destdir="$PKGDESTDIR" + else + _destdir="$DESTDIR" + fi + + if [ -z "$mode" ]; then + install -d ${_destdir}/${dir} + else + install -dm${mode} ${_destdir}/${dir} + fi +} diff --git a/common/environment/setup/misc.sh b/common/environment/setup/misc.sh @@ -0,0 +1,21 @@ +# +# 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://ftp.gnome.org/pub/GNOME/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" + +set +a diff --git a/common/environment/setup/options.sh b/common/environment/setup/options.sh @@ -0,0 +1,40 @@ +# 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" + if [ "$#" -lt "2" ]; then + msg_error "vopt_bool <build_option> <property>: missing values\n" + elif [ "$#" -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 @@ -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.8" +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 @@ -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 @@ -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 @@ -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 @@ -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 diff --git a/common/hooks/do-check/.empty b/common/hooks/do-check/.empty diff --git a/common/hooks/do-configure/.empty b/common/hooks/do-configure/.empty diff --git a/common/hooks/do-extract/.empty b/common/hooks/do-extract/.empty diff --git a/common/hooks/do-extract/00-distfiles.sh 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 diff --git a/common/hooks/do-fetch/00-distfiles.sh 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 diff --git a/common/hooks/do-patch/.empty b/common/hooks/do-patch/.empty diff --git a/common/hooks/do-patch/00-patches.sh 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="-Np0" + _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 -sl ${_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 diff --git a/common/hooks/do-pkg/00-gen-pkg.sh b/common/hooks/do-pkg/00-gen-pkg.sh @@ -0,0 +1,171 @@ +# 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 + + if [ ! -d "${PKGDESTDIR}" ]; then + msg_warn "$pkgver: cannot find pkg destdir... skipping!\n" + return 0 + fi + + [ ! -d $pkgdir ] && mkdir -p $pkgdir + + while [ -f $pkgdir/${binpkg}.lock ]; 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 [ -f $pkgdir/$binpkg -a -z "$XBPS_BUILD_FORCEMODE" ]; then + msg_normal "${pkgver}: skipping existing $binpkg pkg...\n" + return 0 + fi + + touch -f $pkgdir/${binpkg}.lock + + 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=$? + + rm -f $pkgdir/${binpkg}.lock + + 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= + + if [ "${archs// /}" = "noarch" ]; then + arch=noarch + elif [ -n "$XBPS_TARGET_MACHINE" ]; then + arch=$XBPS_TARGET_MACHINE + else + arch=$XBPS_MACHINE + fi + if [ "${archs// /}" != "noarch" -a -z "$XBPS_CROSS_BUILD" -a -n "$XBPS_ARCH" -a "$XBPS_ARCH" != "$XBPS_TARGET_MACHINE" ]; then + arch=${XBPS_ARCH} + fi + + 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 diff --git a/common/hooks/post-check/.empty b/common/hooks/post-check/.empty diff --git a/common/hooks/post-configure/.empty b/common/hooks/post-configure/.empty diff --git a/common/hooks/post-extract/.empty b/common/hooks/post-extract/.empty diff --git a/common/hooks/post-fetch/.empty b/common/hooks/post-fetch/.empty diff --git a/common/hooks/post-install/.empty b/common/hooks/post-install/.empty diff --git a/common/hooks/post-install/00-compress-info-files.sh 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-lib32.sh b/common/hooks/post-install/00-lib32.sh @@ -0,0 +1,8 @@ +# This hook removes the /usr/lib32 symlink on 32-bit systems. + +hook() { + if [ "$XBPS_TARGET_WORDSIZE" = "32" ] && \ + [ "${pkgname}" != "base-files" ]; then + rm -f ${PKGDESTDIR}/usr/lib32 + fi +} diff --git a/common/hooks/post-install/00-uncompress-manpages.sh 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-localized-manpages.sh b/common/hooks/post-install/01-remove-localized-manpages.sh @@ -0,0 +1,20 @@ +# This hook removes localized man(1) files + +hook() { + local section mandir=${PKGDESTDIR}/usr/share/man + + for section in ${mandir}/*; do + if ! [ -d ${section} ]; then + continue + fi + + case ${section} in + ${mandir}/man[0-9n]|${mandir}/man[013][fp]) + continue;; + ${mandir}/cat[0-9n]|${mandir}/cat[013][fp]) + continue;; + esac + + rm -rf ${section} + done +} diff --git a/common/hooks/post-install/01-remove-misc.sh 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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(3). +# + +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 @@ -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 @@ -0,0 +1,149 @@ +# 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" -o "${archs// /}" = "noarch" ]; 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 + + if [[ $(file -b "$f") =~ "no machine" ]]; then + continue + fi + + fname=${f##*/} + for x in ${nostrip_files}; do + if [ "$x" = "$fname" ]; 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 + $STRIPCMD "$f" + if [ $? -ne 0 ]; then + msg_red "$pkgver: failed to strip ${f#$PKGDESTDIR}\n" + return 1 + fi + echo " Stripped static executable: ${f#$PKGDESTDIR}" + else + make_debug "$f" + $STRIPCMD "$f" + if [ $? -ne 0 ]; 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*) + chmod +w "$f" + # shared library + make_debug "$f" + $STRIPCMD --strip-unneeded "$f" + if [ $? -ne 0 ]; then + msg_red "$pkgver: failed to strip ${f#$PKGDESTDIR}\n" + return 1 + fi + if [[ $(file $f) =~ "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" + $STRIPCMD --strip-debug "$f" + if [ $? -ne 0 ]; 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 @@ -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 @@ -0,0 +1,34 @@ +# 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 + +hook() { + local matches mime file + + if [ ! -d ${PKGDESTDIR}/usr/share ]; then + return 0 + fi + + # Find all binaries in /usr/share and add them to the pool + while read -r f; do + mime="${f##*:}" + mime="${mime// /}" + file="${f%:*}" + case "${mime}" in + # Note application/x-executable is missing which is present in most Electron apps + application/x-sharedlib*|application/x-pie-executable*) + matches+=" ${file#$PKGDESTDIR}" ;; + esac + done < <(find $PKGDESTDIR/usr/share -type f | file --mime-type --files-from -) + + 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 @@ -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 @@ -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/99-pkglint-warn-cross-cruft.sh 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 diff --git a/common/hooks/post-pkg/.empty b/common/hooks/post-pkg/.empty diff --git a/common/hooks/post-pkg/00-register-pkg.sh b/common/hooks/post-pkg/00-register-pkg.sh @@ -0,0 +1,60 @@ +# 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 [ "${archs// /}" = "noarch" ]; then + arch=noarch + elif [ -n "$XBPS_TARGET_MACHINE" ]; then + arch=$XBPS_TARGET_MACHINE + else + arch=$XBPS_MACHINE + fi + if [ "${archs// /}" != "noarch" -a -z "$XBPS_CROSS_BUILD" -a -n "$XBPS_ARCH" -a "$XBPS_ARCH" != "$XBPS_TARGET_MACHINE" ]; then + arch=${XBPS_ARCH} + fi + if [ -n "$repository" ]; then + pkgdir=$XBPS_REPOSITORY/$repository + else + pkgdir=$XBPS_REPOSITORY + fi + 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 diff --git a/common/hooks/pre-build/02-script-wrapper.sh 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 diff --git a/common/hooks/pre-configure/.empty b/common/hooks/pre-configure/.empty diff --git a/common/hooks/pre-configure/00-gnu-configure-asneeded.sh 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 @@ -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 @@ -0,0 +1,215 @@ +# 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() { + if [ ! -x /usr/bin/vapigen ]; then + return 0 + fi + [ -x ${XBPS_WRAPPERDIR}/vapigen ] && return 0 + 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-0.42/vapi \\ + --girdir=${XBPS_CROSS_BASE}/usr/share/gir-1.0 "\$@" +_EOF + chmod 755 ${XBPS_WRAPPERDIR}/vapigen + ln -sf vapigen ${XBPS_WRAPPERDIR}/vapigen-0.42 +} + +valac_wrapper() { + if [ ! -x /usr/bin/valac ]; then + return 0 + fi + [ -x ${XBPS_WRAPPERDIR}/valac ] && return 0 + 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-0.42/vapi \\ + --girdir=${XBPS_CROSS_BASE}/usr/share/gir-1.0 "\$@" +_EOF + chmod 755 ${XBPS_WRAPPERDIR}/valac + ln -sf valac ${XBPS_WRAPPERDIR}/valac-0.42 +} + +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 +} + +hook() { + export PATH="$XBPS_WRAPPERDIR:$PATH" + + install_wrappers + + [ -z "$CROSS_BUILD" ] && return 0 + + install_cross_wrappers + pkgconfig_wrapper + vapigen_wrapper + valac_wrapper + generic_wrapper icu-config + generic_wrapper libgcrypt-config + generic_wrapper freetype-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.8 + 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 diff --git a/common/hooks/pre-fetch/.empty b/common/hooks/pre-fetch/.empty diff --git a/common/hooks/pre-install/.empty b/common/hooks/pre-install/.empty diff --git a/common/hooks/pre-install/00-lib32.sh b/common/hooks/pre-install/00-lib32.sh @@ -0,0 +1,9 @@ +# This hook creates the /usr/lib32 symlink for 32-bit systems. + +hook() { + if [ "$XBPS_TARGET_WORDSIZE" = "32" ] && \ + [ "${pkgname}" != "base-files" ]; then + vmkdir usr/lib + ln -sf lib ${PKGDESTDIR}/usr/lib32 + fi +} diff --git a/common/hooks/pre-install/02-script-wrapper.sh 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 @@ -0,0 +1,12 @@ +# 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 + if [ -d "${DESTDIR}/usr/${XBPS_CROSS_TRIPLET}/usr" ]; then + cp -a "${DESTDIR}"/usr/{${XBPS_CROSS_TRIPLET}/usr/*,} + rm -rf "${DESTDIR}"/usr/${XBPS_CROSS_TRIPLET}/usr + fi +} diff --git a/common/hooks/pre-patch/.empty b/common/hooks/pre-patch/.empty diff --git a/common/hooks/pre-pkg/.empty b/common/hooks/pre-pkg/.empty diff --git a/common/hooks/pre-pkg/03-rewrite-python-shebang.sh 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 + + find "${PKGDESTDIR}" -type f -print0 | \ + 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 @@ -0,0 +1,172 @@ +# 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 + + # 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 [ "${archs// /}" = "noarch" -o -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 + case "$(file -bi "$f")" in + application/x-*executable*|application/x-sharedlib*) + for nlib in $($OBJDUMP -p "$f"|grep NEEDED|awk '{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 + ;; + esac + 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 @@ -0,0 +1,172 @@ +# 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 + # Ignore noarch pkgs. + if [ "${archs// /}" = "noarch" ]; 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... + if [ ! -d ${PKGDESTDIR}/usr/lib ]; then + return + fi + mkdir -p ${destdir32}/usr/lib32 + cp -a ${PKGDESTDIR}/usr/lib/* ${destdir32}/usr/lib32 + + # 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 [ ! -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 _arch _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 is noarch do not change it to 32bit. + _arch=$($XBPS_QUERY_CMD -R --property=architecture "$f") + if [ "${_arch}" = "noarch" ]; then + echo " RDEP: $f -> ${pkgn}${pkgv} (noarch)" + printf "${pkgn}${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 [[ $pkgname =~ '-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 @@ -0,0 +1,56 @@ +# This hook executes the following tasks: +# - generates shlib-provides file for xbps-create(8) + +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 [ -z "$shlib_provides" -a "${archs// /}" = "noarch" -o -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 @@ -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 @@ -0,0 +1,44 @@ +# 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) + + subpackages="${subpackages// /$'\n'}" + + # 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 + + # XXX: Make the sed call work when subpackages has multiple lines + # this can be done with grep with perl regexp (-P) but chroot-grep + # is compiled without it + matches="$(sed -n 's/subpackages.*"\(.*\)"[^"]*$/\1/p' $XBPS_SRCPKGDIR/$pkgname/template \ + | tr " " "\n" | sort)" + + for s in $subpkgs; do + grep -q "^$s$" <<< "$matches" || + msg_warn "${s}_package() defined but will never be built.\n" + done + + grep -q "^$pkgname$" <<< "$matches" && + msg_warn "$pkgname is sourcepkg but is in subpackages=.\n" || : +} diff --git a/common/hooks/pre-pkg/99-pkglint.sh b/common/hooks/pre-pkg/99-pkglint.sh @@ -0,0 +1,183 @@ +# 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 + if [ "$build_style" != meta -a "$emptypkg" != no ]; 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 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 @@ -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 @@ -0,0 +1,101 @@ +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_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_gnutls="Enable support for SSL with gnutls" +desc_option_gssapi="Enable support for GSSAPI" +desc_option_gstreamer="Enable support for GStreamer" +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_notify="Enable support for desktop notifications (libnotify)" +desc_option_nvenc="Enable support for NVENC codecs" +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_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_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/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 @@ -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 @@ -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/shlibs b/common/shlibs @@ -0,0 +1,3983 @@ +# --*-- 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.21_1 +libc.so.6 glibc-2.29_1 +libm.so.6 glibc-2.29_1 +libpthread.so.0 glibc-2.29_1 +librt.so.1 glibc-2.29_1 +libdl.so.2 glibc-2.29_1 +ld-linux-x86-64.so.2 glibc-2.29_1 x86_64 +ld-linux.so.2 glibc-2.29_1 i686 +ld-linux.so.3 glibc-2.29_1 armv5tel +ld-linux-aarch64.so.1 glibc-2.29_1 aarch64 +ld64.so.2 glibc-2.29_1 ppc64 +ld.so.1 glibc-2.29_1 mips +ld.so.1 glibc-2.29_1 ppc +ld-linux-armhf.so.3 glibc-2.29_1 +libresolv.so.2 glibc-2.29_1 +libanl.so.1 glibc-2.29_1 +libthread_db.so.1 glibc-2.29_1 +libutil.so.1 glibc-2.29_1 +libnsl.so.1 glibc-2.29_1 +libnss_db.so.2 glibc-2.29_1 +libnss_files.so.2 glibc-2.29_1 +libnss_compat.so.2 glibc-2.29_1 +libnss_dns.so.2 glibc-2.29_1 +libnss_hesiod.so.2 glibc-2.29_1 +libnss_nisplus.so.2 glibc-2.29_1 +libnss_nis.so.2 glibc-2.29_1 +libcrypt.so.1 glibc-2.29_1 +libBrokenLocale.so.1 glibc-2.29_1 +libmemusage.so glibc-2.29_1 +libSegFault.so glibc-2.29_1 +libpcprofile.so glibc-2.29_1 +libcidn.so.1 glibc-2.29_1 +libmvec.so.1 glibc-2.29_1 +libz.so.1 zlib-1.2.3_1 +libbz2.so.1 bzip2-1.0.5_1 +libarchive.so.13 libarchive-3.3.3_5 +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.14 libgo-9.1.0_1 +libmpx.so.2 libmpx-6.2.1_1 +libmpxwrappers.so.2 libmpx-6.2.1_1 +libperl.so.5.30 perl-5.30.0_1 +libgmp.so.10 gmp-5.0.1_1 +libgmpxx.so.4 gmpxx-6.0.0_2 +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 +libncurses.so.6 ncurses-libs-6.0_1 ignore +libncurses.so.5 ncurses-libs-6.0_1 ignore +libncursesw.so.6 ncurses-libs-5.8_1 ignore +libncursesw.so.5 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.5 ncurses-libs-5.9_13 ignore +libformw.so.6 ncurses-libs-5.8_1 ignore +libpanelw.so.5 ncurses-libs-5.9_13 ignore +libpanelw.so.6 ncurses-libs-5.8_1 ignore +libmenuw.so.5 ncurses-libs-5.9_13 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.25 gpsd-3.20_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.18.0_1 +libglib-2.0.so.0 glib-2.18.0_1 +libgmodule-2.0.so.0 glib-2.18.0_1 +libgio-2.0.so.0 glib-2.18.0_1 +libgobject-2.0.so.0 glib-2.18.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 +libpangox-1.0.so.0 pangox-compat-0.0.2_1 +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 atom-1.41.0_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 riot-desktop-0.17.9_2 +libGLESv2.so wire-desktop-3.6.2885_1 +libGLESv2.so vscode-1.36.1_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 +libwayland-egl.so.1 wayland-1.15.0_4 +libnvidia-ml.so.1 nvidia-libs-346.47_1 ignore +libnvidia-ml.so.1 nvidia304-libs-304.00_1 ignore +libnvidia-ml.so.1 nvidia340-libs-340.46_1 ignore +libnvidia-ml.so.1 nvidia390-libs-390.87_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.346.47 nvidia340-libs-340.46_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-glsi.so.340.107 nvidia340-libs-340.107_7 ignore +libnvidia-fatbinaryloader.so.390.138 nvidia390-libs-390.138_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.0 libxlsxwriter-0.7.7_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 +libgnuintl.so.8 gettext-libs-0.19.2_1 +libgettextlib-0.20.2.so gettext-libs-0.20.2_1 +libgettextsrc-0.20.2.so gettext-libs-0.20.2_1 +libgettextpo.so.0 gettext-libs-0.17_1 +libtextstyle.so.0 gettext-libs-0.20.1_1 +libattr.so.1 attr-2.4.43_1 +libacl.so.1 acl-2.2.47_1 +libpython2.7.so.1.0 python-2.7_1 +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 +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.28 gnutls-3.2.13_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 +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 +libvte.so.9 vte-0.20.1_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 +libsexy.so.2 libsexy-0.1.11_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.7 libmagick-7.0.9.1_1 +libMagickWand-7.Q16HDRI.so.7 libmagick-7.0.9.1_1 +libMagick++-7.Q16HDRI.so.4 libmagick-7.0.9.1_1 +libMagickCore-6.Q16.so.6 libmagick6-6.9.10.11_1 +libMagickWand-6.Q16.so.6 libmagick6-6.9.10.11_1 +libMagick++-6.Q16.so.8 libmagick6-6.9.10.11_1 +libltdl.so.7 libltdl-2.2.6_1 +libpoppler.so.90 libpoppler89-0.80.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.31.1_3 +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.19_1 +libcurl-gnutls.so.4 libcurl-7.19_1 +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 +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.3.1 mtxclient-0.3.1_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.25 gpsd-qt-3.20_1 +libQtAssistantClient.so qt-4.5.3_1 +libQtXmlPatterns.so.4 qt-4.5.3_1 +libQtScriptTools.so.4 qt-4.5.3_1 +libQtCLucene.so.4 qt-4.5.3_1 +libQtMultimedia.so.4 qt-4.5.3_1 +libQtGui.so.4 qt-4.5.3_1 +libQtDBus.so.4 qt-4.5.3_1 +libQtNetwork.so.4 qt-4.5.3_1 +libQtOpenGL.so.4 qt-4.5.3_1 +libQtXml.so.4 qt-4.5.3_1 +libQtTest.so.4 qt-4.5.3_1 +libQt3Support.so.4 qt-4.5.3_1 +libQtSvg.so.4 qt-4.5.3_1 +libQtScript.so.4 qt-4.5.3_1 +libQtHelp.so.4 qt-4.5.3_1 +libQtCore.so.4 qt-4.5.3_1 +libQtSql.so.4 qt-4.5.3_1 +libQtDeclarative.so.4 qt-4.5.3_1 +libQtDesignerComponents.so.4 qt-designer-libs-4.7.8_13 +libQtDesigner.so.4 qt-designer-libs-4.7.8_13 +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.88 ntfs-3g-2017.3.23_1 +libruby.so.2.7 ruby-2.7.1_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 +libKWaylandServer.so.5 kwayland-server-5.18.90_1 +libxenctrl.so.4.10 xen-libs-4.10.0_1 +libxenguest.so.4.10 xen-libs-4.10.0_1 +libxlutil.so.4.10 xen-libs-4.10.0_1 +libxenlight.so.4.10 xen-libs-4.10.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.10 xen-libs-4.10.0_1 +libfsimage.so.1.0 xen-libs-4.10.0_1 +libxenstat.so.0 xen-libs-4.10.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 +libKF5FollowupReminder.so.5 kdepim-apps-libs-17.12.3_1 +libKF5KaddressbookGrantlee.so.5 kdepim-apps-libs-17.12.3_1 +libKF5KdepimDBusInterfaces.so.5 kdepim-apps-libs-17.12.3_1 +libKF5SendLater.so.5 kdepim-apps-libs-17.12.3_1 +libKF5KaddressbookImportExport.so.5 kdepim-apps-libs-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 +libkColorPicker.so.0.1.4 kColorPicker-0.1.4_1 +libkImageAnnotator.so.0.3.1 kImageAnnotator-0.3.1_1 +libbabl-0.1.so.0 babl-0.1.16_1 +libbamf3.so.2 bamf-0.5.1_1 +libicuio.so.67 icu-libs-67.1_1 +libicui18n.so.67 icu-libs-67.1_1 +libicudata.so.67 icu-libs-67.1_1 +libicutu.so.67 icu-libs-67.1_1 +libicuuc.so.67 icu-libs-67.1_1 +libicutest.so.67 icu-libs-67.1_1 +libaspell.so.15 aspell-0.60_1 +libpspell.so.15 aspell-0.60_1 +libenchant.so.1 enchant-1.4.2_1 +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-gnome-2.4.so.1 libsoup-gnome-2.34.0_1 +libpanel-applet.so.3 gnome-panel-3.30.0_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.2 pulseaudio-qt-1.1.0_1 +libReviewboardHelpers.so.5 purpose-5.48.0_1 +libecpg_compat.so.3 postgresql-libs-8.4.2_1 +libecpg.so.6 postgresql-libs-8.4.2_1 +libpgtypes.so.3 postgresql-libs-8.4.2_1 +libpq.so.5 postgresql-libs-8.4.2_1 +libmypaint-1.5.so.1 libmypaint-1.5.1_1 +libmysqlclient_r.so.18 libmysqlclient-5.5.27_1 +libmysqlclient.so.18 libmysqlclient-5.5.27_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.11 mit-krb5-libs-1.15.1_1 +libkadm5clnt.so mit-krb5-libs-1.8_1 +libkadm5srv_mit.so.11 mit-krb5-libs-1.15.1_1 +libkadm5srv.so mit-krb5-libs-1.8_1 +libkdb5.so.9 mit-krb5-libs-1.16_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.60.1_1 +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.62 evolution-data-server-3.30.0_1 +libedataserver-1.2.so.24 evolution-data-server-3.32.0_1 +libebackend-1.2.so.10 evolution-data-server-3.17.90_1 +libedataserverui-1.2.so.2 evolution-data-server-3.28.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-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_math_tr1.so.1.72.0 libboost_math_tr11.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_math_c99.so.1.72.0 libboost_math_c991.72-1.72.0_1 +libboost_wave.so.1.72.0 libboost_wave1.72-1.72.0_1 +libboost_math_tr1.so.1.72.0 libboost_math_tr11.72-1.72.0_1 +libboost_atomic.so.1.72.0 libboost_atomic1.72-1.72.0_1 +libboost_math_c99.so.1.72.0 libboost_math_c991.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_python38.so.1.72.0 boost-python3-1.72-1.72.0_1 +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.14 libcpuid-0.4.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 +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 +libcairomm-1.0.so.1 cairomm-1.8.4_1 +libpangomm-1.4.so.1 pangomm-2.26.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 +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.3.9_1 +libnetpgp.so.0 libnetpgp-20100313_1 +libmj.so.0 libmj-20140211_1 +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 +libgtksourceview-3.0.so.1 gtksourceview-3.8.0_1 +libtalloc.so.2 talloc-2.0.1_1 +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.1 glew-2.1.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-1.0_1 +libpulse-mainloop-glib.so.0 libpulseaudio-1.0_1 +libpulse-simple.so.0 libpulseaudio-1.0_1 +libpulsecommon-13.0.so libpulseaudio-13.0_1 +libpulsecore-13.0.so libpulseaudio-13.0_1 +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.6 libgladeui3-3.10.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 +libsmbclient.so.0 libsmbclient-3.5.6_1 +libsmbios.so.2 libsmbios-2.2.28_1 +libsmbios_c.so.2 libsmbios-2.2.28_1 +libwbclient.so.0 libsmbclient-3.5.6_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_8 +libneon.so.27 neon-0.29.5_1 +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.6.4_1 +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 +libdmr.so.0.1 deepin-movie-reborn-3.2.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.25 folks-0.9.5_1 +libfolks-telepathy.so.25 folks-0.9.5_1 +libfolks-eds.so.25 folks-0.9.5_1 +libnice.so.10 libnice-0.1.0_1 +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.52.2_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_1 +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.25 gsl-2.6_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 +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-9.so libada-9.1.0_1 +libgnat-9.so libada-9.1.0_1 +libmozjs185.so.1.0 js-1.8.5_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.2.0_1 +libva.so.2 libva-2.2.0_1 +libva-glx.so.2 libva-glx-2.2.0_1 +libva-drm.so.2 libva-2.2.0_1 +libva-wayland.so.2 libva-2.2.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 +libnm-gtk.so.0 libnm-gtk-0.9.1.95_1 +libcaribou.so.0 caribou-0.4.0_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 +libxnoise.so.0 libxnoise-0.1.29_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.19 libraw-0.19.0_1 +libraw_r.so.19 libraw-0.19.0_1 +libkritaversion.so.19 krita-4.3.0_1 +libkritaglobal.so.19 krita-4.3.0_1 +libkritaplugin.so.19 krita-4.3.0_1 +libkritawidgetutils.so.19 krita-4.3.0_1 +libkritawidgets.so.19 krita-4.3.0_1 +libkritastore.so.19 krita-4.3.0_1 +libkritaodf.so.19 krita-4.3.0_1 +libkritaflake.so.19 krita-4.3.0_1 +libkritabasicflakes.so.19 krita-4.3.0_1 +libkritapigment.so.19 krita-4.3.0_1 +libkritacommand.so.19 krita-4.3.0_1 +libkritalibbrush.so.19 krita-4.3.0_1 +libkritapsd.so.19 krita-4.3.0_1 +libkritacolor.so.19 krita-4.3.0_1 +libkritacolord.so.19 krita-4.3.0_1 +libkritaimage.so.19 krita-4.3.0_1 +libkritaui.so.19 krita-4.3.0_1 +libkritavectorimage.so.18 krita-4.2.0_1 +libkritaimpex.so.19 krita-4.3.0_1 +libkritalibkis.so.19 krita-4.3.0_1 +libkritaqml.so.19 krita-4.3.0_1 +libkritatextlayout.so.19 krita-4.3.0_1 +libkritatext.so.19 krita-4.3.0_1 +libkritalibkra.so.19 krita-4.3.0_1 +libkritalibpaintop.so.19 krita-4.3.0_1 +libkritametadata.so.19 krita-4.3.0_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.2 libfluidsynth-2.1.1_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.2 jitterentropy-2.2.0_1 +libkdecorations2.so.5 kdecoration-5.8.4_1 +libkdecorations2private.so.7 kdecoration-5.18.0_1 +libGlacier2.so.35 libIce-3.5.0_1 +libIce.so.35 libIce-3.5.0_1 +libIceSSL.so.35 libIce-3.5.0_1 +libIceUtil.so.35 libIce-3.5.0_1 +libIceStormService.so.35 libIce-3.5.0_1 +libIceStorm.so.35 libIce-3.5.0_1 +libFreeze.so.35 libIce-3.5.0_1 +libSlice.so.35 libIce-3.5.0_1 +libIceBox.so.35 libIce-3.5.0_1 +libIceGrid.so.35 libIce-3.5.0_1 +libIcePatch2.so.35 libIce-3.5.0_1 +libIceDB.so.35 libIce-3.5.0_1 +libIceXML.so.35 libIce-3.5.0_1 +libvdpau.so.1 libvdpau-0.4.1_1 +libgtkhtml-4.0.so.0 libgtkhtml-4.2.1_1 +libgtkhtml-editor-4.0.so.0 libgtkhtml-4.2.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.20_1 +libgvnc-1.0.so.0 gtk-vnc-0.4.4_1 +libgtk-vnc-2.0.so.0 gtk-vnc-0.4.4_1 +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.10 lldb-10.0.0_1 +libclang.so.10 libclang-10.0.0_3 +libclang-cpp.so.10 libclang-cpp-10.0.0_3 +libLLVM-10.so libllvm10-10.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 +libkeybinder.so.0 libkeybinder2-0.3.0_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 +librpcsecgss.so.3 librpcsecgss-0.19_1 +libnfsidmap.so.1 libnfsidmap-2.4.3_2 +libbind9.so.1600 bind-libs-9.16.2_1 +libdns.so.1603 bind-libs-9.16.3_1 +libirs.so.1601 bind-libs-9.16.3_1 +libisc.so.1603 bind-libs-9.16.3_1 +libisccc.so.1600 bind-libs-9.16.2_1 +libisccfg.so.1600 bind-libs-9.16.2_1 +libns.so.1603 bind-libs-9.16.3_1 +libplist.so.3 libplist-1.12_1 +libplist++.so.3 libplist++-1.12_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.0.0_1 +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.4.1_1 +libvirt-glib-1.0.so.0 libvirt-glib-0.0.8_1 +libsnmp.so.35 libnet-snmp-5.8_1 +libnetsnmp.so.35 libnet-snmp-5.8_1 +libnetsnmpagent.so.35 libnet-snmp-5.8_1 +libnetsnmpmibs.so.35 libnet-snmp-5.8_1 +libnetsnmptrapd.so.35 libnet-snmp-5.8_1 +libnetsnmphelpers.so.35 libnet-snmp-5.8_1 +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 +libisl.so.10 isl-0.10_1 +libisl.so.19 isl15-0.19_1 +libcloog-isl.so.4 cloog-0.18.1_1 +librtmp.so.1 librtmp-2.4.20161210_1 +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 +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_1 +libvdemgmt.so.0 libvde2-2.3.2_1 +libvdehist.so.0 libvde2-2.3.2_1 +libvdesnmp.so.0 libvde2-2.3.2_1 +libsbc.so.1 sbc-1.0_1 +libecryptfs.so.1 libecryptfs-104_1 +libnuma.so.1 libnuma-2.0.7_1 +libxar.so.1 xar-1.5.2_1 +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.0.0_1 +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.0.0_1 +libgstsignalprocessor-1.0.so.0 gst-plugins-bad1-1.0.0_1 +libgstbasevideo-1.0.so.0 gst-plugins-bad1-1.0.0_1 +libgstbasecamerabinsrc-1.0.so.0 gst-plugins-bad1-1.0.0_1 +libgstcodecparsers-1.0.so.0 gst-plugins-bad1-1.0.0_1 +libgstplayer-1.0.so.0 gst-plugins-bad1-1.0.0_1 +libgstgl-1.0.so.0 gst-plugins-base1-1.14.0_1 +libgnome-desktop-3.so.18 gnome-desktop-3.34.0_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 +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 +libosinfo-1.0.so.0 libosinfo-0.2.0_1 +libspice-client-gtk-3.0.so.5 spice-gtk-0.33_1 +libspice-client-glib-2.0.so.8 spice-gtk-0.14_1 +libspice-controller.so.0 spice-gtk-0.14_1 +libvirt-gconfig-1.0.so.0 libvirt-glib-0.1.2_1 +libvirt-gobject-1.0.so.0 libvirt-glib-0.1.2_1 +libvirt-glib-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 +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 +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.2_1 +libopusurl.so.0 opusfile-0.6_1 +libopusenc.so.0 libopusenc-0.2_1 +libgtk-vnc-1.0.so.0 gtk2-vnc-0.4.4_2 +libgranite.so.5 granite-0.5.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.7 tinyxml2-7.0.0_1 +libbluray.so.2 libbluray-1.0.0_1 +libnfs.so.13 libnfs-4.0.0_1 +libzip.so.5 libzip-1.2_1 +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.4 libcec-4.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.19 jsoncpp-1.8.3_1 +libesmtp.so.6 libesmtp-1.0.6_4 +libcaca.so.0 libcaca-0.99.beta18_3 +libcaca++.so.0 libcaca-0.99.beta18_3 +libunwind.so.8 libunwind-1.1_1 +libunwind-ptrace.so.0 libunwind-1.1_1 +libunwind-x86_64.so.8 libunwind-1.1_1 +libunwind-x86.so.8 libunwind-1.1_1 +libunwind-arm.so.8 libunwind-1.1_4 +libunwind-mips.so.8 libunwind-1.1_4 +libunwind-aarch64.so.8 libunwind-1.2rc1_1 +libunwind-ppc32.so.8 libunwind-1.2.1_1 +libunwind-ppc64.so.8 libunwind-1.2.1_1 +libunwind-setjmp.so.0 libunwind-1.4_1 +libmicrohttpd.so.12 libmicrohttpd-0.9.48_1 +libmicrodns.so.0 libmicrodns-0.1.0_1 +libgit2.so.1.0 libgit2-1.0.0_1 +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++-820_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 +libqca.so.2 qca-2.0.3_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.5.4_1 +libqjson.so.0 qjson-0.8.1_1 +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 +libKF5Torrent.so.6 libktorrent-2.1_1 +libvncserver.so.1 libvncserver-0.9.11_1 +libvncclient.so.1 libvncserver-0.9.11_1 +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.1.2_1 +libgda-report-5.0.so.4 libgda-5.1.2_1 +libgda-ui-5.0.so.4 libgda-5.1.2_1 +libgda-xslt-5.0.so.4 libgda-5.1.2_1 +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.0.so.22 libguile-2.0.9_3 +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.6_1 +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.11 libgpaste-3.28.2_1 +libthreadutil.so.6 libupnp-1.6.18_1 +libixml.so.2 libupnp-1.6.18_1 +libupnp.so.6 libupnp-1.6.18_1 +libupnpp.so.9 libupnpp-0.18.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-3.8.0_1 +libgfdb.so.0 libglusterfs-3.8.0_1 +libgfchangelog.so.0 libglusterfs-3.8.0_1 +libgfrpc.so.0 libglusterfs-3.8.0_1 +libgfxdr.so.0 libglusterfs-3.8.0_1 +libgfapi.so.0 libglusterfs-3.8.0_1 +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 +libbtrfsutil.so.1 libbtrfsutil-5.4_1 +libecore_audio.so.1 efl-1.12.0_1 +libecore_con.so.1 efl-1.12.0_1 +libecore_evas.so.1 efl-1.12.0_1 +libecore_file.so.1 efl-1.12.0_1 +libecore_imf_evas.so.1 efl-1.12.0_1 +libecore_imf.so.1 efl-1.12.0_1 +libecore_input_evas.so.1 efl-1.12.0_1 +libecore_input.so.1 efl-1.12.0_1 +libecore_ipc.so.1 efl-1.12.0_1 +libecore.so.1 efl-1.12.0_1 +libecore_x.so.1 efl-1.12.0_1 +libecore_wl2.so.1 efl-1.24.2_1 +libecore_drm2.so.1 efl-1.24.2_1 +libedje.so.1 efl-1.12.0_1 +libeet.so.1 efl-1.12.0_1 +libeeze.so.1 efl-1.12.0_1 +libefreet_mime.so.1 efl-1.12.0_1 +libefreet.so.1 efl-1.12.0_1 +libefreet_trash.so.1 efl-1.12.0_1 +libeina.so.1 efl-1.12.0_1 +libeio.so.1 efl-1.12.0_1 +libeldbus.so.1 efl-1.12.0_1 +libelput.so.1 efl-1.24.2_1 +libembryo.so.1 efl-1.12.0_1 +libemotion.so.1 efl-1.12.0_1 +libeo.so.1 efl-1.12.0_1 +libethumb_client.so.1 efl-1.12.0_1 +libethumb.so.1 efl-1.12.0_1 +libevas.so.1 efl-1.12.0_1 +libefl.so.1 efl-1.12.0_1 +libefl_canvas_wl.so.1 efl-1.24.2_1 +libelua.so.1 efl-1.13.0_1 +libelocation.so.1 efl-1.13.0_1 +libelementary.so.1 efl-1.18.0_1 +libector.so.1 efl-1.18.1_1 +libemile.so.1 efl-1.18.1_1 +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.1.0_1 +libgwengui-gtk2.so.79 gwenhywfar-gtk-5.3.0_1 +libgwengui-gtk3.so.79 gwenhywfar-gtk3-5.3.0_1 +libgwengui-cpp.so.79 gwenhywfar-5.3.0_1 +libgwengui-qt5.so.79 gwenhywfar-qt5-5.3.0_1 +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.19_1 +libxmlsec1-nss.so.1 xmlsec1-1.2.28_2 +libxmlsec1-openssl.so.1 xmlsec1-1.2.30_1 +libcheck.so.0 check-0.9.12_1 +liblxc.so.1 liblxc-1.0.0_1 +libtcmalloc.so.4 gperftools-2.1_1 +libaio.so.1 libaio-0.3.109_1 +libofx.so.7 libofx-0.9.11_1 +libsigsegv.so.2 libsigsegv-2.10_2 +libfprint.so.0 libfprint-0.5.1_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 +libmozjs-24.so mozjs24-24.2.0_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.2.11_2 +libdovecot-login.so.0 dovecot-2.2.11_2 +libdovecot-compression.so.0 dovecot-2.2.11_2 +libdovecot-sql.so.0 dovecot-2.2.11_2 +libdovecot-storage.so.0 dovecot-2.2.11_2 +libdovecot-lda.so.0 dovecot-2.2.11_2 +libnetapi.so.0 samba-3.6.23_1 +libsmbsharemodes.so.0 samba-3.6.23_1 +libmysqld.so.18 libmariadbclient-5.5.36_1 +libwiretap.so.10 libwireshark-3.2.0_1 +libwireshark.so.13 libwireshark-3.2.0_1 +libwsutil.so.11 libwireshark-3.2.0_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 +libfreerdp-client2.so.2 libfreerdp-2.0.0rc1_1 +libfreerdp2.so.2 libfreerdp-2.0.0rc1_1 +libwinpr2.so.2 libfreerdp-2.0.0rc1_1 +libwinpr-tools2.so.2 libfreerdp-2.0.0rc1_1 +libfreerdp-core.so.1.0 libfreerdp-1.0.2_2 +libfreerdp-channels.so.1.0 libfreerdp-1.0.2_2 +libfreerdp-rail.so.1.0 libfreerdp-1.0.2_2 +libfreerdp-kbd.so.1.0 libfreerdp-1.0.2_2 +libfreerdp-utils.so.1.0 libfreerdp-1.0.2_2 +libfreerdp-codec.so.1.0 libfreerdp-1.0.2_2 +libfreerdp-gdi.so.1.0 libfreerdp-1.0.2_2 +libfreerdp-cache.so.1.0 libfreerdp-1.0.2_2 +libcppunit-1.14.so.0 libcppunit-1.14.0_1 +libcalc.so.2.12.7.1 libcalc-2.12.7.1_1 +libcustcalc.so.2.12.7.1 libcalc-2.12.7.1_1 +libOgreRTShaderSystem.so.1.10.11 libogre-1.10.11_2 +libOgreTerrain.so.1.10.11 libogre-1.10.11_2 +libOgrePaging.so.1.10.11 libogre-1.10.11_2 +libOgreProperty.so.1.10.11 libogre-1.10.11_2 +libOgreHLMS.so.1.10.11 libogre-1.10.11_2 +libOgreMeshLodGenerator.so.1.10.11 libogre-1.10.11_2 +libOgreVolume.so.1.10.11 libogre-1.10.11_2 +libOgreBites.so.1.10.11 libogre-1.10.11_2 +libOgreMain.so.1.10.11 libogre-1.10.11_2 +libOgreOverlay.so.1.10.11 libogre-1.10.11_2 +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 +libshiboken-python2.7.so.1.2 libshiboken-python-1.2.2_2 +libshiboken-python3.6.so.1.2 libshiboken-python3-1.2.2_4 +libshiboken2.so.5.14 libshiboken2-5.14.0_1 +libpyside-python2.7.so.1.2 libpyside-python-1.2.2_2 +libpyside-python3.6.so.1.2 libpyside-python3-1.2.2_6 +libpyside2.so.5.14 libpyside2-python3-5.14.0_1 +libupsclient.so.4 libnetwork-ups-tools-2.7.2_1 +libnutclient.so.0 libnetwork-ups-tools-2.7.2_1 +libnutscan.so.1 libnetwork-ups-tools-2.7.3_3 +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.5 libsanitizer-8.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.2.89 bullet-2.89_1 +libBulletCollision.so.2.89 bullet-2.89_1 +libLinearMath.so.2.89 bullet-2.89_1 +libBulletSoftBody.so.2.89 bullet-2.89_1 +libinotifytools.so.0 libinotify-tools-3.14_2 +libfswatch.so.11 libfswatch-1.13.0_1 +libopensc.so.6 libopensc-0.18.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.2 lesstif-0.95.2_1 +libMrm.so.2 lesstif-0.95.2_1 +libUil.so.2 lesstif-0.95.2_1 +libgtest.so gtest-1.7.0_1 +libgtest_main.so gtest-1.7.0_1 +libxmlsec1-gcrypt.so.1 xmlsec1-1.2.20_2 +libxmlsec1-gnutls.so.1 xmlsec1-1.2.20_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.6.2_1 +libdar.so.5000 libdar-2.4.14_1 +libpython3.6m.so.1.0 python3-3.6.2_1 +libpython3.so python3-3.8.0_1 +libpython3.8.so.1.0 python3-3.8.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.25.28_1 +libxmlrpc++.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc_server.so.3 xmlrpc-c-1.25.28_1 +libxmlrpc_packetsocket.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc.so.3 xmlrpc-c-1.25.28_1 +libxmlrpc_util.so.3 xmlrpc-c-1.25.28_1 +libxmlrpc_abyss.so.3 xmlrpc-c-1.25.28_1 +libxmlrpc_server_abyss++.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc_cpp.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc_client++.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc_server++.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc_server_cgi++.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc_server_pstream++.so.8 xmlrpc-c-1.39.07_1 +libxmlrpc_client.so.3 xmlrpc-c-1.25.28_1 +libxmlrpc_util++.so.8 xmlrpc-c-1.39.11_1 +libxmlrpc_abyss++.so.8 xmlrpc-c-1.39.11_1 +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-devel-1.4_1 +libcrypto.so.43 libcrypto43-2.7.2_1 +libssl.so.45 libssl45-2.7.2_1 +libtls.so.17 libtls17-2.7.2_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 dumb-2.0.3_1 +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.8.6_1 +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 +libucl.so.5 libucl-0.8.1_1 +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.11.2_2 +libecore_avahi.so.1 efl-1.11.2_2 +libephysics.so.1 efl-1.11.2_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.0_1 +libQt53DAnimation.so.5 qt5-3d-5.15.0_1 +libQt53DCore.so.5 qt5-3d-5.15.0_1 +libQt53DInput.so.5 qt5-3d-5.15.0_1 +libQt53DLogic.so.5 qt5-3d-5.15.0_1 +libQt53DRender.so.5 qt5-3d-5.15.0_1 +libQt53DQuick.so.5 qt5-3d-5.15.0_1 +libQt53DQuickInput.so.5 qt5-3d-5.15.0_1 +libQt53DQuickRender.so.5 qt5-3d-5.15.0_1 +libQt53DQuickScene2D.so.5 qt5-3d-5.15.0_1 +libQt53DExtras.so.5 qt5-3d-5.15.0_1 +libQt53DQuickExtras.so.5 qt5-3d-5.15.0_1 +libQt53DQuickAnimation.so.5 qt5-3d-5.15.0_1 +libQt53DQuickInput.so.5 qt5-3d-5.15.0_1 +libQt5Charts.so.5 qt5-charts-5.15.0_1 +libQt5DataVisualization.so.5 qt5-datavis3d-5.15.0_1 +libQt5Gamepad.so.5 qt5-gamepad-5.15.0_1 +libQt5Nfc.so.5 qt5-connectivity-5.15.0_1 +libQt5WebView.so.5 qt5-webview-5.15.0_1 +libQt5Qml.so.5 qt5-declarative-5.15.0_1 +libQt5QmlDevTools.so.5 qt5-declarative-5.15.0_1 +libQt5Quick.so.5 qt5-declarative-5.15.0_1 +libQt5QuickTest.so.5 qt5-declarative-5.15.0_1 +libQt5QuickWidgets.so.5 qt5-declarative-5.15.0_1 +libQt5QuickParticles.so.5 qt5-declarative-5.15.0_1 +libQt5QuickShapes.so.5 qt5-declarative-5.15.0_1 +libQt5QmlModels.so.5 qt5-declarative-5.15.0_1 +libQt5QmlWorkerScript.so.5 qt5-declarative-5.15.0_1 +libQt5QuickControls2.so.5 qt5-quickcontrols2-5.15.0_1 +libQt5QuickTemplates2.so.5 qt5-quickcontrols2-5.15.0_1 +libQt5Positioning.so.5 qt5-location-5.15.0_1 +libQt5Location.so.5 qt5-location-5.15.0_1 +libQt5PositioningQuick.so.5 qt5-location-5.15.0_1 +libQt5VirtualKeyboard.so.5 qt5-virtualkeyboard-5.15.0_1 +libQt5Multimedia.so.5 qt5-multimedia-5.15.0_1 +libQt5MultimediaGstTools.so.5 qt5-multimedia-5.15.0_1 +libQt5MultimediaQuick.so.5 qt5-multimedia-5.15.0_1 +libQt5MultimediaQuick_p.so.5 qt5-multimedia-5.15.0_1 +libQt5MultimediaWidgets.so.5 qt5-multimedia-5.15.0_1 +libQt5NetworkAuth.so.5 qt5-networkauth-5.15.0_1 +libQt5Purchasing.so.5 qt5-purchasing-5.15.0_1 +libQt5RemoteObjects.so.5 qt5-remoteobjects-5.15.0_1 +libqgsttools_p.so.1 qt5-multimedia-5.15.0_1 +libQt5LabsTemplates.so.5 qt5-quickcontrols2-5.15.0_1 +libQt5Scxml.so.5 qt5-scxml-5.15.0_1 +libQt5Script.so.5 qt5-script-5.15.0_1 +libQt5ScriptTools.so.5 qt5-script-5.15.0_1 +libQt5Sensors.so.5 qt5-sensors-5.15.0_1 +libQt5SerialBus.so.5 qt5-serialbus-5.15.0_1 +libQt5SerialPort.so.5 qt5-serialport-5.15.0_1 +libQt5Svg.so.5 qt5-svg-5.15.0_1 +libQt5CLucene.so.5 qt5-tools-5.15.0_1 +libQt5Help.so.5 qt5-tools-5.15.0_1 +libQt5Designer.so.5 qt5-tools-5.15.0_1 +libQt5DesignerComponents.so.5 qt5-tools-5.15.0_1 +libQt5WaylandClient.so.5 qt5-wayland-5.15.0_1 +libQt5WaylandCompositor.so.5 qt5-wayland-5.15.0_1 +libQt5WebChannel.so.5 qt5-webchannel-5.15.0_1 +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.0_1 +libQt5X11Extras.so.5 qt5-x11extras-5.15.0_1 +libQt5XmlPatterns.so.5 qt5-xmlpatterns-5.15.0_1 +libQt5Core.so.5 qt5-core-5.15.0_1 +libQt5EglFSDeviceIntegration.so.5 qt5-gui-5.15.0_1 +libQt5Network.so.5 qt5-network-5.15.0_1 +libQt5Sql.so.5 qt5-sql-5.15.0_1 +libQt5Xml.so.5 qt5-xml-5.15.0_1 +libQt5Gui.so.5 qt5-gui-5.15.0_1 +libQt5Widgets.so.5 qt5-widgets-5.15.0_1 +libQt5Test.so.5 qt5-test-5.15.0_1 +libQt5DBus.so.5 qt5-dbus-5.15.0_1 +libQt5Concurrent.so.5 qt5-concurrent-5.15.0_1 +libQt5OpenGL.so.5 qt5-opengl-5.15.0_1 +libQt5PrintSupport.so.5 qt5-printsupport-5.15.0_1 +libQt5XcbQpa.so.5 qt5-gui-5.15.0_1 +libQt5EglDeviceIntegration.so.5 qt5-gui-5.15.0_1 +libQt5EglFsKmsSupport.so.5 qt5-gui-5.15.0_1 +libQt5TextToSpeech.so.5 qt5-speech-5.15.0_1 +libQt5Bodymovin.so.5 qt5-lottie-5.15.0_1 +libQt5WebKit.so.5 qt5-webkit-5.6.0_1 +libQt5WebKitWidgets.so.5 qt5-webkit-5.6.0_1 +libx265.so.192 x265-3.4_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.7 libfm-qt-0.15.0_1 +libqtermwidget5.so.0 qtermwidget-0.6.0_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.so.6 libusbmuxd-1.0.10_1 +libimobiledevice.so.6 libimobiledevice-1.2.0_1 +libstfl.so.0 stfl-0.23_1 +libCDApplet.so cairo-dock-plugins-3.4.0_1 +libldns.so.3 libldns-1.7.1_1 +libopenjpeg.so.5 libopenjpeg-1.5.2_1 +liboping.so.0 liboping-1.8.0_1 +libloudmouth-1.so.0 loudmouth-1.4.3_1 +libtorrent-rasterbar.so.10 libtorrent-rasterbar-1.2.2_1 +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.3 libopencv4-4.3.0_1 +libopencv_reg.so.4.3 libopencv4-4.3.0_1 +libopencv_surface_matching.so.4.3 libopencv4-4.3.0_1 +libopencv_xphoto.so.4.3 libopencv4-4.3.0_1 +libopencv_freetype.so.4.3 libopencv4-4.3.0_1 +libopencv_fuzzy.so.4.3 libopencv4-4.3.0_1 +libopencv_hfs.so.4.3 libopencv4-4.3.0_1 +libopencv_img_hash.so.4.3 libopencv4-4.3.0_1 +libopencv_line_descriptor.so.4.3 libopencv4-4.3.0_1 +libopencv_saliency.so.4.3 libopencv4-4.3.0_1 +libopencv_structured_light.so.4.3 libopencv4-4.3.0_1 +libopencv_aruco.so.4.3 libopencv4-4.3.0_1 +libopencv_bgsegm.so.4.3 libopencv4-4.3.0_1 +libopencv_bioinspired.so.4.3 libopencv4-4.3.0_1 +libopencv_ccalib.so.4.3 libopencv4-4.3.0_1 +libopencv_face.so.4.3 libopencv4-4.3.0_1 +libopencv_tracking.so.4.3 libopencv4-4.3.0_1 +libopencv_xfeatures2d.so.4.3 libopencv4-4.3.0_1 +libopencv_optflow.so.4.3 libopencv4-4.3.0_1 +libopencv_ximgproc.so.4.3 libopencv4-4.3.0_1 +libopencv_plot.so.4.3 libopencv4-4.3.0_1 +libopencv_text.so.4.3 libopencv4-4.3.0_1 +libopencv_ml.so.4.3 libopencv4-4.3.0_1 +libopencv_objdetect.so.4.3 libopencv4-4.3.0_1 +libopencv_dnn.so.4.3 libopencv4-4.3.0_1 +libopencv_shape.so.4.3 libopencv4-4.3.0_1 +libopencv_stitching.so.4.3 libopencv4-4.3.0_1 +libopencv_photo.so.4.3 libopencv4-4.3.0_1 +libopencv_video.so.4.3 libopencv4-4.3.0_1 +libopencv_calib3d.so.4.3 libopencv4-4.3.0_1 +libopencv_features2d.so.4.3 libopencv4-4.3.0_1 +libopencv_flann.so.4.3 libopencv4-4.3.0_1 +libopencv_highgui.so.4.3 libopencv4-4.3.0_1 +libopencv_videoio.so.4.3 libopencv4-4.3.0_1 +libopencv_imgcodecs.so.4.3 libopencv4-4.3.0_1 +libopencv_imgproc.so.4.3 libopencv4-4.3.0_1 +libopencv_core.so.4.3 libopencv4-4.3.0_1 +libopencv_superres.so.4.3 libopencv4-4.3.0_1 +libopencv_videostab.so.4.3 libopencv4-4.3.0_1 +libopencv_gapi.so.4.3 libopencv4-4.3.0_1 +libopencv_xobjdetect.so.4.3 libopencv4-4.3.0_1 +libopencv_datasets.so.4.3 libopencv4-4.3.0_1 +libopencv_dnn_objdetect.so.4.3 libopencv4-4.3.0_1 +libopencv_dnn_superres.so.4.3 libopencv4-4.3.0_1 +libopencv_dpm.so.4.3 libopencv4-4.3.0_1 +libopencv_phase_unwrapping.so.4.3 libopencv4-4.3.0_1 +libopencv_stereo.so.4.3 libopencv4-4.3.0_1 +libopencv_rapid.so.4.3 libopencv4-4.3.0_1 +libopencv_intensity_transform.so.4.3 libopencv4-4.3.0_1 +libopencv_alphamat.so.4.3 libopencv4-4.3.0_1 +libcgmanager.so.0 libcgmanager-0.33_1 +libuniconf.so.4.6 wvstreams-4.6.1_2 +libwvbase.so.4.6 wvstreams-4.6.1_1 +libwvutils.so.4.6 wvstreams-4.6.1_1 +libwvstreams.so.4.6 wvstreams-4.6.1_1 +libespeak.so.1 libespeak-1.48.04_1 +libKF5Plotting.so.5 kplotting-5.26.0_1 +libpgf.so.6 libpgf-6.14.12_1 +libqhull_p.so.7 libqhull-2015.2_1 +libqhull_r.so.7 libqhull-2015.2_1 +libqhull.so.7 libqhull-2015.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 +libfcitx-qt.so.0 libfcitx-qt-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 +liblastfm.so.1 liblastfm-1.0.9_1 +liblastfm_fingerprint.so.1 liblastfm-1.0.9_1 +libdruntime-ldc-debug-shared.so.91 ldc-runtime-1.21.0_1 +libdruntime-ldc-shared.so.91 ldc-runtime-1.21.0_1 +libphobos2-ldc-shared.so.91 ldc-runtime-1.21.0_1 +libphobos2-ldc-debug-shared.so.91 ldc-runtime-1.21.0_1 +libldc-jit.so.91 ldc-runtime-1.21.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 +libechonest.so.2.3 libechonest-2.3.1_1 +libuecc.so.0 libuecc-5_1 +libKF5WindowSystem.so.5 kwindowsystem-5.6.0_1 +libKF5GuiAddons.so.5 kguiaddons-5.6.0_1 +liblxqt.so.0 liblxqt-0.9.0_1 +liblxqt-globalkeys.so.0 lxqt-globalkeys-0.9.0_1 +liblxqt-globalkeys-ui.so.0 lxqt-globalkeys-0.9.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.4_1 +libmosquittopp.so.1 libmosquittopp-1.4_1 +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.0 libsndio-1.4.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.7.2_1 +libxmp.so.4 libxmp-4.3.7_1 +libKF5ThreadWeaver.so.5 threadweaver-5.26.0_1 +libOpenImageIO_Util.so.1.8 openimageio-1.8.12_1 +libOpenImageIO.so.1.8 openimageio-1.8.12_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.48.21_1 +libhttrack.so.2 httrack-3.48.21_1 +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.0_1 +libnfc.so.0 libnfc-1.7.1_1 +libfuzzy.so.2 libfuzzy-2.12_1 +libSDL_gfx.so.15 SDL_gfx-2.0.25_2 +libgdkglextmm-x11-1.2.so.0 gtkglextmm-1.2.0_1 +libgtkglextmm-x11-1.2.so.0 gtkglextmm-1.2.0_1 +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.101.0_1 +libclamunrar.so.9 clamav-0.101.0_1 +libclamunrar_iface.so.9 clamav-0.101.0_1 +libfreshclam.so.2 clamav-0.102.0_1 +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.0.2_1 +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 +libplayerctl-1.0.so.0 playerctl-0.4.2_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.46 geda-1.10.0_1 +libclutter-gst-3.0.so.0 clutter-gst3-3.0.4_1 +libgsound.so.0 gsound-1.0.1_1 +libgegl-0.3.so.0 gegl3-0.3.0_1 +libgegl-npd-0.3.so gegl3-0.3.0_1 +libgegl-sc-0.3.so gegl3-0.3.0_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.9 skalibs-2.9.0.0_1 +libKF5BalooWidgets.so.5 baloo-widgets5-17.04.3_1 +libtidy.so.5 libtidy5-5.1.25_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.0.14 hiredis-0.14.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.0 anthy-9100h_1 +libanthydic.so.0 anthy-9100h_1 +libanthyinput.so.0 anthy-9100h_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 +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.so.3 goocanvas1-1.0.0_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.7 brltty-6.0_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 +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 +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_1 +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.5.0_1 +libpinktrace_0.9.so.9 pinktrace-0.9.1_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 +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 +libucontext.so.0 libucontext-0.1.1_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.6.2_1 +libboinc_api.so.7 boinc-7.6.2_1 +libboinc_graphics2.so.7 boinc-7.6.2_1 +libboinc_opencl.so.7 boinc-nox-7.6.2_1 +libboinc_api.so.7 boinc-nox-7.6.2_1 +libboinc_graphics2.so.7 boinc-nox-7.6.2_1 +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.0.0_1 +libu2f-server.so.0 libu2f-server-1.0.1_2 +libsqlcipher.so.0 sqlcipher-3.3.1_1 +libgta.so.1 libgta-1.2.0_1 +libgdal.so.26 libgdal-3.0.0_1 +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 +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 +libkqueue.so.0 libkqueue-2.0.3_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.4.5_1 +libilbccodec.so.2 pjproject-2.4.5_1 +libpj.so.2 pjproject-2.4.5_1 +libpjlib-util.so.2 pjproject-2.4.5_1 +libpjmedia-audiodev.so.2 pjproject-2.4.5_1 +libpjmedia-codec.so.2 pjproject-2.4.5_1 +libpjmedia-videodev.so.2 pjproject-2.4.5_1 +libpjmedia.so.2 pjproject-2.4.5_1 +libpjnath.so.2 pjproject-2.4.5_1 +libpjsip-simple.so.2 pjproject-2.4.5_1 +libpjsip-ua.so.2 pjproject-2.4.5_1 +libpjsip.so.2 pjproject-2.4.5_1 +libpjsua.so.2 pjproject-2.4.5_1 +libpjsua2.so.2 pjproject-2.4.5_1 +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.13_1 +libflickcurl.so.0 flickcurl-1.26_1 +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.11_1 +libmgba.so.0.8 libmgba-0.8.1_1 +libglabels-3.0.so.8 libglabels30-3.2.1_1 +libglbarcode-3.0.so.0 libglabels30-3.2.1_1 +libjim.so.0.79 jimtcl-0.79_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.7 libopenshot-audio-0.2.0_1 +libopenshot.so.19 libopenshot-0.2.5_3 +libpqxx-6.3.so libpqxx-6.3.3_1 +libndpi.so.1 ndpi-1.6_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-5.0.4_1 +libpodofo.so.0.9.6 libpodofo-0.9.6_1 +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.7 libfilezilla-0.22.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-2.0_1 +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.15.so.0 libixion-0.15.0_2 +liborcus-parser-0.15.so.0 liborcus-0.15.3_1 +liborcus-mso-0.15.so.0 liborcus-0.15.3_1 +liborcus-0.15.so.0 liborcus-0.15.3_1 +liborcus-spreadsheet-model-0.15.so.0 liborcus-0.15.3_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.1 leatherman-1.12.1_1 +leatherman_locale.so.1.12.1 leatherman-1.12.1_1 +leatherman_logging.so.1.12.1 leatherman-1.12.1_1 +leatherman_json_container.so.1.12.1 leatherman-1.12.1_1 +leatherman_file_util.so.1.12.1 leatherman-1.12.1_1 +leatherman_curl.so.1.12.1 leatherman-1.12.1_1 +leatherman_dynamic_library.so.1.12.1 leatherman-1.12.1_1 +leatherman_execution.so.1.12.1 leatherman-1.12.1_1 +leatherman_ruby.so.1.12.1 leatherman-1.12.1_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.0.0_1 +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.33 kdevelop-5.5.0_1 +libKDevClangPrivate.so.33 kdevelop-5.5.0_1 +libKDevCompileAnalyzerCommon.so.33 kdevelop-5.5.0_1 +libKDevPlatformDebugger.so.55 kdevelop-5.5.0_1 +libKDevPlatformDocumentation.so.55 kdevelop-5.5.0_1 +libKDevPlatformInterfaces.so.55 kdevelop-5.5.0_1 +libKDevPlatformLanguage.so.55 kdevelop-5.5.0_1 +libKDevPlatformOutputView.so.55 kdevelop-5.5.0_1 +libKDevPlatformProject.so.55 kdevelop-5.5.0_1 +libKDevPlatformSerialization.so.55 kdevelop-5.5.0_1 +libKDevPlatformShell.so.55 kdevelop-5.5.0_1 +libKDevPlatformSublime.so.55 kdevelop-5.5.0_1 +libKDevPlatformTests.so.55 kdevelop-5.5.0_1 +libKDevPlatformUtil.so.55 kdevelop-5.5.0_1 +libKDevPlatformVcs.so.55 kdevelop-5.5.0_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.1 libxls-1.4.0_1 +libR.so R-3.3.0_2 +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.2 libuev-2.0.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.60 coin3-3.1.3_1 +libgl2ps.so.1 gl2ps-1.3.9_1 +libFWOSPlugin.so.11 oce-0.18_1 +libPTKernel.so.11 oce-0.18_1 +libTKBO.so.11 oce-0.18_1 +libTKBRep.so.11 oce-0.18_1 +libTKBin.so.11 oce-0.18_1 +libTKBinL.so.11 oce-0.18_1 +libTKBinTObj.so.11 oce-0.18_1 +libTKBinXCAF.so.11 oce-0.18_1 +libTKBool.so.11 oce-0.18_1 +libTKCAF.so.11 oce-0.18_1 +libTKCDF.so.11 oce-0.18_1 +libTKDCAF.so.11 oce-0.18_1 +libTKDraw.so.11 oce-0.18_1 +libTKFeat.so.11 oce-0.18_1 +libTKFillet.so.11 oce-0.18_1 +libTKG2d.so.11 oce-0.18_1 +libTKG3d.so.11 oce-0.18_1 +libTKGeomAlgo.so.11 oce-0.18_1 +libTKGeomBase.so.11 oce-0.18_1 +libTKHLR.so.11 oce-0.18_1 +libTKIGES.so.11 oce-0.18_1 +libTKLCAF.so.11 oce-0.18_1 +libTKMath.so.11 oce-0.18_1 +libTKMesh.so.11 oce-0.18_1 +libTKMeshVS.so.11 oce-0.18_1 +libTKNIS.so.11 oce-0.18_1 +libTKOffset.so.11 oce-0.18_1 +libTKOpenGl.so.11 oce-0.18_1 +libTKPCAF.so.11 oce-0.18_1 +libTKPLCAF.so.11 oce-0.18_1 +libTKPShape.so.11 oce-0.18_1 +libTKPrim.so.11 oce-0.18_1 +libTKSTEP.so.11 oce-0.18_1 +libTKSTEP209.so.11 oce-0.18_1 +libTKSTEPAttr.so.11 oce-0.18_1 +libTKSTEPBase.so.11 oce-0.18_1 +libTKSTL.so.11 oce-0.18_1 +libTKService.so.11 oce-0.18_1 +libTKShHealing.so.11 oce-0.18_1 +libTKShapeSchema.so.11 oce-0.18_1 +libTKStdLSchema.so.11 oce-0.18_1 +libTKStdSchema.so.11 oce-0.18_1 +libTKTObj.so.11 oce-0.18_1 +libTKTObjDRAW.so.11 oce-0.18_1 +libTKTopAlgo.so.11 oce-0.18_1 +libTKTopTest.so.11 oce-0.18_1 +libTKV3d.so.11 oce-0.18_1 +libTKVRML.so.11 oce-0.18_1 +libTKViewerTest.so.11 oce-0.18_1 +libTKVoxel.so.11 oce-0.18_1 +libTKXCAF.so.11 oce-0.18_1 +libTKXCAFSchema.so.11 oce-0.18_1 +libTKXDEDRAW.so.11 oce-0.18_1 +libTKXDEIGES.so.11 oce-0.18_1 +libTKXDESTEP.so.11 oce-0.18_1 +libTKXMesh.so.11 oce-0.18_1 +libTKXSBase.so.11 oce-0.18_1 +libTKXSDRAW.so.11 oce-0.18_1 +libTKXml.so.11 oce-0.18_1 +libTKXmlL.so.11 oce-0.18_1 +libTKXmlTObj.so.11 oce-0.18_1 +libTKXmlXCAF.so.11 oce-0.18_1 +libTKernel.so.11 oce-0.18_1 +libKF5CoreAddons.so.5 kcoreaddons-5.26.0_1 +librpmatch.so.0 musl-rpmatch-1.0_1 +libply.so.4 plymouth-0.9.2_1 +libply-splash-core.so.4 plymouth-0.9.2_1 +libply-splash-graphics.so.4 plymouth-0.9.2_1 +libply-boot-client.so.4 plymouth-0.9.2_1 +libmilter.so.1.0.2 libmilter-1.0.2_1 +libopendkim.so.10 opendkim-2.10.3_1 +libtevent.so.0 tevent-0.9.28_1 +libldb.so.1 ldb-1.1.26_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-1.13.4_1 +libsss_idmap.so.0 sssd-1.13.4_1 +libsss_sudo.so sssd-1.13.4_1 +libnss_sss.so.2 sssd-1.13.4_1 +libwbclient.so.0 sssd-1.13.4_1 +libsss_nss_idmap.so.0 sssd-1.13.4_1 +libsss_simpleifp.so.0 sssd-1.13.4_1 +libsss_util.so sssd-2.0.0_1 +libsss_crypt.so sssd-2.0.0_1 +libsss_debug.so sssd-2.0.0_1 +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 +libavogadro.so.1 avogadro-1.2.0_1 +libavogadro_OpenQube.so.0 avogadro-1.2.0_1 +libcourier-unicode.so.4 courier-unicode-2.0_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.96_1 +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.13 botan-2.14.0_1 +libswipl.so.8 swi-prolog-8.0.0_1 +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.2 libpcre2-10.30_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.7.0.so capnproto-0.7.0_1 +libcapnp-json-0.7.0.so capnproto-0.7.0_1 +libcapnp-rpc-0.7.0.so capnproto-0.7.0_1 +libcapnp-0.7.0.so capnproto-0.7.0_1 +libkj-http-0.7.0.so capnproto-0.7.0_1 +libkj-async-0.7.0.so capnproto-0.7.0_1 +libkj-test-0.7.0.so capnproto-0.7.0_1 +libkj-0.7.0.so capnproto-0.7.0_1 +libkea-asiodns.so.1 libkea-1.7.0_1 +libkea-asiolink.so.6 libkea-1.7.1_1 +libkea-cc.so.8 libkea-1.6.0_1 +libkea-cfgclient.so.9 libkea-1.7.5_1 +libkea-cryptolink.so.5 libkea-1.7.0_1 +libkea-database.so.4 libkea-1.7.2_1 +libkea-dhcp++.so.17 libkea-1.7.8_1 +libkea-dhcp_ddns.so.2 libkea-1.7.0_1 +libkea-dhcpsrv.so.25 libkea-1.7.9_1 +libkea-dns++.so.4 libkea-1.7.9_1 +libkea-eval.so.12 libkea-1.7.0_1 +libkea-exceptions.so.0 libkea-1.1.0_1 +libkea-hooks.so.14 libkea-1.7.9_1 +libkea-http.so.6 libkea-1.7.2_1 +libkea-log.so.6 libkea-1.7.9_1 +libkea-pgsql.so.1 libkea-1.7.9_1 +libkea-process.so.9 libkea-1.7.7_1 +libkea-stats.so.5 libkea-1.7.7_1 +libkea-util-io.so.0 libkea-1.1.0_1 +libkea-util.so.14 libkea-1.7.9_1 +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 +libsidplayfp.so.5 libsidplayfp-2.0.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 +libnma.so.0 libnm-gtk-1.4.0_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.6 dotherside-0.6.5_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 uim-1.8.6_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-5.so.0 mutter-3.34.1_1 +libmutter-clutter-5.so mutter-3.34.1_1 +libmutter-clutter-5.so.0 mutter-3.34.1_1 +libmutter-cogl-path-5.so mutter-3.34.1_1 +libmutter-cogl-path-5.so.0 mutter-3.34.1_1 +libmutter-cogl-5.so mutter-3.34.1_1 +libmutter-cogl-5.so.0 mutter-3.34.1_1 +libmutter-cogl-pango-5.so mutter-3.34.1_1 +libmutter-cogl-pango-5.so.0 mutter-3.34.1_1 +libgeoclue-2.so.0 geoclue2-2.4.4_1 +libgepub.so.0 libgepub-0.4_1 +libslopy.so.7.5 slop-7.5_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-0.10_1 +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.1 double-conversion-2.0.1_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.21 libqalculate-3.0.0_1 +libweston-8.so.0 weston-8.0.0_1 +libostree-1.so.1 libostree-2017.3_1 +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_1 +libPocoMongoDB.so.64 poco-1.9.4_1 +libPocoZip.so.64 poco-1.9.4_1 +libPocoData.so.64 poco-1.9.4_1 +libPocoNet.so.64 poco-1.9.4_1 +libPocoDataSQLite.so.64 poco-1.9.4_1 +libPocoFoundation.so.64 poco-1.9.4_1 +libPocoXML.so.64 poco-1.9.4_1 +libPocoUtil.so.64 poco-1.9.4_1 +libPocoRedis.so.64 poco-1.9.4_1 +libPocoEncodings.so.64 poco-1.9.4_1 +libPocoNetSSL.so.64 poco-1.9.4_1 +libPocoCrypto.so.64 poco-1.9.4_1 +libopenblas.so.0 openblas-0.2.19_1 +librtmidi.so.5 rtmidi-4.0.0_1 +libbiblesync.so.2.0.1 biblesync-2.0.1_1 +libbac-9.4.2.so bacula-common-9.4.2_1 +libbaccfg-9.4.2.so bacula-common-9.4.2_1 +libbacfind-9.4.2.so bacula-common-9.4.2_1 +libbacsql-9.4.2.so bacula-common-9.4.2_1 +libbaccats-9.4.2.so bacula-common-9.4.2_1 +libbacsd-9.4.2.so bacula-common-9.4.2_1 +libbaccats-sqlite3-9.4.2.so bacula-common-9.4.2_1 +libbaccats-postgresql-9.4.2.so bacula-common-postgresql-9.4.2_1 +libbaccats-mysql-9.4.2.so bacula-common-mariadb-9.4.2_1 +bpipe-fd.so bacula-fd-9.0.4_1 +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.4 libyara-4.0.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 +libliveMedia.so.79 live555-2020.04.12_1 +libgroupsock.so.8 live555-2018.12.14_1 +libUsageEnvironment.so.3 live555-2018.12.14_1 +libBasicUsageEnvironment.so.1 live555-2018.12.14_1 +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.0 libmygui-3.4.0_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.204 duktape-2.4.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 +libmupdf.so.1.13.0 libmupdf-1.13.0_1 +libmupdfthird.so.1.13.0 libmupdf-1.13.0_1 +libmuthreads.so.1.13.0 libmupdf-1.13.0_1 +libmupkcs7.so.1.13.0 libmupdf-1.13.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.23 libprotobuf23-lite-3.12.1_1 +libprotoc.so.23 libprotoc23-3.12.1_1 +libprotobuf.so.23 libprotobuf23-3.12.1_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 +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.10.0_2 +libmirage.so.11 libmirage-3.1.0_1 +libwkhtmltox.so.0 libwkhtmltopdf-0.12.5_1 +libixml.so.10 libupnp1.8-1.8.2_1 +libupnp.so.13 libupnp1.8-1.8.4_1 +libsysprof-3.so sysprof-3.34.0_1 +libsysprof-ui-3.so sysprof-3.34.0_1 +libmozjs-52.so mozjs52-52.3.0_1 +libmozjs-52.so.0 mozjs52-52.3.0_1 +libvala-0.46.so.0 libvala-0.46.0_1 +libvaladoc-0.46.so.0 libvaladoc-0.46.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 +libtracker-miner-2.0.so.0 libtracker-2.0.1_1 +libtacacs.so.1 tacacs-4.0.4.28_1 +libffms2.so.4 libffms2-2.23.1_1 +libddcutil.so.2 ddcutil-0.9.8_1 +liblsmash.so.2 liblsmash-2.9.1_1 +libgiac.so.0 libgiac-1.4.9r17_1 +libgnustep-base.so.1.27 gnustep-base-1.27.0_1 +libtermbox.so.1 termbox-1.1.0_1 +libmysofa.so.0 libmysofa-0.6_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.30602 MEGAsdk-3.6.2a_1 +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.2 opencc-1.0.5_1 +librime.so.1 librime-1.2.9_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.33.1_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.1 kdeconnect-1.2_1 +libkdeconnectinterfaces.so.1 kdeconnect-1.2_1 +libkdeconnectcore.so.1 kdeconnect-1.2_1 +libkpmcore.so.9 kpmcore-4.1.0_1 +libpkcs11-helper.so.1 pkcs11-helper-1.22_1 +libr_core.so radare2-2.2.0_1 +libr_config.so radare2-2.2.0_1 +libr_cons.so radare2-2.2.0_1 +libr_util.so radare2-2.2.0_1 +libr_flag.so radare2-2.2.0_1 +libr_asm.so radare2-2.2.0_1 +libr_bin.so radare2-2.2.0_1 +libr_anal.so radare2-2.2.0_1 +libr_lang.so radare2-2.2.0_1 +libr_debug.so radare2-2.2.0_1 +libr_egg.so radare2-2.2.0_1 +libr_bp.so radare2-2.2.0_1 +libr_search.so radare2-2.2.0_1 +libr_io.so radare2-2.2.0_1 +libr_hash.so radare2-2.2.0_1 +libr_socket.so radare2-2.2.0_1 +libr_parse.so radare2-2.2.0_1 +libr_syscall.so radare2-2.2.0_1 +libr_crypto.so radare2-2.2.0_1 +libr_fs.so radare2-2.2.0_1 +libr_magic.so radare2-2.2.0_1 +libr_reg.so radare2-2.2.0_1 +libykpiv.so.1 libykpiv-1.5.0_1 +libykcs11.so.1 libykcs11-1.5.0_1 +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-27_2 +libvulkan.so.1 vulkan-loader-1.0.57.0_1 +libembb_mtapi_cpp.so embb-devel-1.0.0_1 +libembb_mtapi_c.so embb-devel-1.0.0_1 +libembb_mtapi_network_c.so embb-devel-1.0.0_1 +libembb_base_cpp.so embb-devel-1.0.0_1 +libembb_base_c.so embb-devel-1.0.0_1 +libhpdf.so Haru-devel-2.3.0_1 +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 +libzuluplay.so.1.1 zuluplay-1.1_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.11 arcan-0.5.4.3_1 +libarcan_shmif_ext.so.0.11 arcan-0.5.4.3_1 +libarcan_shmif_server.so.0.11 arcan-0.5.4.3_1 +libarcan_tui.so.0.11 arcan-0.5.4.3_1 +liblwipv6.so.2 lwipv6-1.5a_1 +libpipewire-0.3.so.0 libpipewire-0.3.6_1 +libvolk.so.2.2.1 volk-2.2.1_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-8.2.so.1 vtk-8.2.0_1 +libvtkCommonColor-8.2.so.1 vtk-8.2.0_1 +libvtkCommonComputationalGeometry-8.2.so.1 vtk-8.2.0_1 +libvtkCommonCore-8.2.so.1 vtk-8.2.0_1 +libvtkCommonDataModel-8.2.so.1 vtk-8.2.0_1 +libvtkCommonExecutionModel-8.2.so.1 vtk-8.2.0_1 +libvtkCommonMath-8.2.so.1 vtk-8.2.0_1 +libvtkCommonMisc-8.2.so.1 vtk-8.2.0_1 +libvtkCommonSystem-8.2.so.1 vtk-8.2.0_1 +libvtkCommonTransforms-8.2.so.1 vtk-8.2.0_1 +libvtkDICOMParser-8.2.so.1 vtk-8.2.0_1 +libvtkDomainsChemistry-8.2.so.1 vtk-8.2.0_1 +libvtkDomainsChemistryOpenGL2-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersAMR-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersCore-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersExtraction-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersFlowPaths-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersGeneral-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersGeneric-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersGeometry-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersHybrid-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersHyperTree-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersImaging-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersModeling-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersParallel-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersParallelImaging-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersPoints-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersProgrammable-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersSMP-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersSelection-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersSources-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersStatistics-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersTexture-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersTopology-8.2.so.1 vtk-8.2.0_1 +libvtkFiltersVerdict-8.2.so.1 vtk-8.2.0_1 +libvtkGeovisCore-8.2.so.1 vtk-8.2.0_1 +libvtkIOAMR-8.2.so.1 vtk-8.2.0_1 +libvtkIOAsynchronous-8.2.so.1 vtk-8.2.0_1 +libvtkIOCityGML-8.2.so.1 vtk-8.2.0_1 +libvtkIOCore-8.2.so.1 vtk-8.2.0_1 +libvtkIOEnSight-8.2.so.1 vtk-8.2.0_1 +libvtkIOExodus-8.2.so.1 vtk-8.2.0_1 +libvtkIOExport-8.2.so.1 vtk-8.2.0_1 +libvtkIOExportOpenGL2-8.2.so.1 vtk-8.2.0_1 +libvtkIOExportPDF-8.2.so.1 vtk-8.2.0_1 +libvtkIOGeometry-8.2.so.1 vtk-8.2.0_1 +libvtkIOImage-8.2.so.1 vtk-8.2.0_1 +libvtkIOImport-8.2.so.1 vtk-8.2.0_1 +libvtkIOInfovis-8.2.so.1 vtk-8.2.0_1 +libvtkIOLSDyna-8.2.so.1 vtk-8.2.0_1 +libvtkIOLegacy-8.2.so.1 vtk-8.2.0_1 +libvtkIOMINC-8.2.so.1 vtk-8.2.0_1 +libvtkIOMPIParallel-8.2.so.1 vtk-8.2.0_1 +libvtkIOMovie-8.2.so.1 vtk-8.2.0_1 +libvtkIONetCDF-8.2.so.1 vtk-8.2.0_1 +libvtkIOPLY-8.2.so.1 vtk-8.2.0_1 +libvtkIOParallel-8.2.so.1 vtk-8.2.0_1 +libvtkIOParallelXML-8.2.so.1 vtk-8.2.0_1 +libvtkIOSQL-8.2.so.1 vtk-8.2.0_1 +libvtkIOSegY-8.2.so.1 vtk-8.2.0_1 +libvtkIOTecplotTable-8.2.so.1 vtk-8.2.0_1 +libvtkIOVeraOut-8.2.so.1 vtk-8.2.0_1 +libvtkIOVideo-8.2.so.1 vtk-8.2.0_1 +libvtkIOXML-8.2.so.1 vtk-8.2.0_1 +libvtkIOXMLParser-8.2.so.1 vtk-8.2.0_1 +libvtkImagingColor-8.2.so.1 vtk-8.2.0_1 +libvtkImagingCore-8.2.so.1 vtk-8.2.0_1 +libvtkImagingFourier-8.2.so.1 vtk-8.2.0_1 +libvtkImagingGeneral-8.2.so.1 vtk-8.2.0_1 +libvtkImagingHybrid-8.2.so.1 vtk-8.2.0_1 +libvtkImagingMath-8.2.so.1 vtk-8.2.0_1 +libvtkImagingMorphological-8.2.so.1 vtk-8.2.0_1 +libvtkImagingSources-8.2.so.1 vtk-8.2.0_1 +libvtkImagingStatistics-8.2.so.1 vtk-8.2.0_1 +libvtkImagingStencil-8.2.so.1 vtk-8.2.0_1 +libvtkInfovisCore-8.2.so.1 vtk-8.2.0_1 +libvtkInfovisLayout-8.2.so.1 vtk-8.2.0_1 +libvtkInteractionImage-8.2.so.1 vtk-8.2.0_1 +libvtkInteractionStyle-8.2.so.1 vtk-8.2.0_1 +libvtkInteractionWidgets-8.2.so.1 vtk-8.2.0_1 +libvtkParallelCore-8.2.so.1 vtk-8.2.0_1 +libvtkParallelMPI-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingAnnotation-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingContext2D-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingContextOpenGL2-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingCore-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingFreeType-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingGL2PSOpenGL2-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingImage-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingLOD-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingLabel-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingOpenGL2-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingVolume-8.2.so.1 vtk-8.2.0_1 +libvtkRenderingVolumeOpenGL2-8.2.so.1 vtk-8.2.0_1 +libvtkViewsContext2D-8.2.so.1 vtk-8.2.0_1 +libvtkViewsCore-8.2.so.1 vtk-8.2.0_1 +libvtkViewsInfovis-8.2.so.1 vtk-8.2.0_1 +libvtkexodusII-8.2.so.1 vtk-8.2.0_1 +libvtkgl2ps-8.2.so.1 vtk-8.2.0_1 +libvtklibharu-8.2.so.1 vtk-8.2.0_1 +libvtkmetaio-8.2.so.1 vtk-8.2.0_1 +libvtkpugixml-8.2.so.1 vtk-8.2.0_1 +libvtksys-8.2.so.1 vtk-8.2.0_1 +libvtkverdict-8.2.so.1 vtk-8.2.0_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 +libfwup.so.1 libfwup-11_1 +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.7.0.so geos-3.7.0_1 +libgeos_c.so.1 geos-3.6.2_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 +libkid3-core.so.3.8.3 kid3-3.8.3_1 +libkid3-gui.so.3.8.3 kid3-3.8.3_1 +libcfitsio.so.9 cfitsio-3.480_1 +libapparmor.so.1 libapparmor-2.12.0_1 +libgsettings-qt.so.1 gsettings-qt-0.1+17.10.20170824_1 +libplacebo.so.72 libplacebo-2.72.0_1 +libw2xc.so waifu2x-converter-cpp-5.2_1 +libnova-0.15.so.0 libnova-0.15.0_1 +libdtkcore.so.2 dtkcore-2.0.6_1 +libdframeworkdbus.so.2 dde-qt-dbus-factory-1.0.1_1 +libdtkwidget.so.2 dtkwidget-2.0.6.1_1 +libcue.so.2 libcue-2.2.0_1 +libdtkwm.so.2 dtkwm-2.0.6_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.0 libaom-1.0.0_1 +libre.so re-0.5.8_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 +libspa-bluez5.so libspa-bluetooth-0.3.6_1 +libspa-ffmpeg.so libspa-ffmpeg-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-18.04.3_1 +libKF5IncidenceEditor.so.5 incidenceeditor-18.04.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 +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-60.so.0 mozjs60-60.0.2_1 +libmozjs-68.so.0 mozjs68-68.8.0_1 +libebur128.so.1 libebur128-1.2.4_1 +libgtksourceview-4.so.0 gtksourceview4-4.0.2_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-4.so.0 tepl-4.2.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 +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.4 libio.elementary.files-4.1.4_1 +libpantheon-files-widgets.so.4 libio.elementary.files-4.1.4_1 +libwlroots.so.5 wlroots-0.10.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-0.14.so.0 retro-gtk-0.16.0_1 +libmanette-0.2.so.0 libmanette-0.2.1_1 +libfmt.so.6 fmt-5.2.1_1 +libelementary-calendar.so.0 libio.elementary.calendar-4.2.3_1 +libolm.so.3 olm-3.0.0_1 +libcrypto.so.44 libcrypto44-2.8.2_1 +libtls.so.18 libtls18-2.8.2_1 +libssl.so.46 libssl46-2.8.2_1 +libcrypto.so.45 libcrypto45-2.9.2_1 +libtls.so.19 libtls19-2.9.2_1 +libssl.so.47 libssl47-2.9.2_1 +libcrypto.so.46 libcrypto46-3.1.1_1 +libtls.so.20 libtls20-3.1.1_1 +libssl.so.48 libssl48-3.1.1_1 +libxmlb.so.1 libxmlb-0.1.3_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.2 hamlib-3.3_1 +libhamlib++.so.2 hamlib-3.3_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.4 libdav1d4-0.6.0_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.1 libkdegames-19.12.3_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.0_1 +libgetdns_ext_event.so.10 getdns-1.5.0_1 +libgetdns_ext_ev.so.10 getdns-1.5.0_1 +libgetdns_ext_uv.so.10 getdns-1.5.0_1 +libzck.so.1 zchunk-1.0.2_2 +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.0 bro-2.6.1_1 +libcaf_core.so.0.16.2 bro-2.6.1_1 +libcaf_openssl.so.0.16.2 bro-2.6.1_1 +libllhttp.so.1 llhttp-1.0.1_1 +libpinyin.so.13 libpinyin-2.2.1_1 +libuhd.so.3.15.0 uhd-3.15.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.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.0_1 +libkodiplatform.so.18.0 kodi-platform-17.1.0_1 +libQMatrixClient.so.0.5.3 libqmatrixclient-0.5.3.2_1 +libipset.so.13 libipset-7.1_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.0 wf-config-0.3_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.1 kaccounts-integration-18.12.2_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-3.36.so gedit-3.36.1_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.0 oblibs-0.0.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.9 grpc-1.26.0_1 +libgpr.so.9 grpc-1.26.0_1 +libgrpc++.so.1 grpc-1.19.1_1 +libgrpc++_cronet.so.1 grpc-1.19.1_1 +libgrpc++_error_details.so.1 grpc-1.19.1_1 +libgrpc++_reflection.so.1 grpc-1.19.1_1 +libgrpc++_unsecure.so.1 grpc-1.19.1_1 +libgrpc.so.9 grpc-1.26.0_1 +libgrpc_cronet.so.9 grpc-1.26.0_1 +libgrpc_unsecure.so.9 grpc-1.26.0_1 +libgrpcpp_channelz.so.1 grpc-1.19.1_1 +libupb.so.9 grpc-1.26.0_1 +libircclient.so.1 libircclient-1.10_1 +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.1 ceres-solver-1.14.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 +libgtk-4.so.0.9400.0 gtk4-3.94.0_1 +libmodule.so.5 libmodule-5.0.0_1 +libgnustep-gui.so.0.28 gnustep-gui-0.28.0_1 +libmhash.so.2 mhash-0.9.9.9_1 +librlottie.so.0 rlottie-0.0.20160709_1 +libfstrm.so.0 fstrm-0.5.0_1 +libfreecell-solver.so.0 libfreecell-solver-5.10.0_1 +libknot.so.10 libknot-2.9.0_1 +libdnssec.so.7 libknot-2.8.2_1 +libzscanner.so.3 libknot-2.8.2_1 +libkres.so.9 knot-resolver-4.0.0_1 +libnsl.so.2 libnsl-1.2.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_1 +liblog4cpp.so.5 log4cpp-1.1.3_1 +libnuspell.so.3 libnuspell-3.0.0_1 +liblog4c.so.3 log4c-1.2.4_1 +libqb.so.0 libqb-1.0.5_1 +libusbguard.so.0 usbguard-0.7.5_1 +libknet.so.1 libknet1-1.11_1 +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_2 +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.9.0_1 +libuInputPlus.so.0 libuInputPlus-0.1.3_1 +libevdevPlus.so.0 libevdevPlus-0.1.0_1 +librte_lpm.so.2 dpdk-19.08_1 +librte_sched.so.3 dpdk-19.08_1 +librte_eal.so.11 dpdk-19.08_1 +librte_pci.so.1 dpdk-19.08_1 +librte_gro.so.1 dpdk-19.08_1 +librte_jobstats.so.1 dpdk-19.08_1 +librte_bpf.so.1 dpdk-19.08_1 +librte_ip_frag.so.1 dpdk-19.08_1 +librte_port.so.3 dpdk-19.08_1 +librte_latencystats.so.1 dpdk-19.08_1 +librte_pipeline.so.3 dpdk-19.08_1 +librte_distributor.so.1 dpdk-19.08_1 +librte_pmd_vmxnet3.so.1 dpdk-19.08_1 +librte_pmd_dpaa_sec.so.1 dpdk-19.08_1 +librte_common_octeontx.so.1 dpdk-19.08_1 +librte_pmd_iavf.so.1 dpdk-19.08_1 +librte_pmd_octeontx_event.so.1 dpdk-19.08_1 +librte_pmd_ring.so.2 dpdk-19.08_1 +librte_rawdev_skeleton.so.1 dpdk-19.08_1 +librte_pmd_qat.so.1 dpdk-19.08_1 +librte_pmd_hinic.so.1 dpdk-19.08_1 +librte_bus_vmbus.so.2 dpdk-19.08_1 +librte_pmd_null.so.2 dpdk-19.08_1 +librte_pmd_bbdev_null.so.1 dpdk-19.08_1 +librte_common_dpaax.so.1 dpdk-19.08_1 +librte_pmd_dpaa2_event.so.2 dpdk-19.08_1 +librte_pmd_bnxt.so.2 dpdk-19.08_1 +librte_bus_ifpga.so.2 dpdk-19.08_1 +librte_pmd_pcap.so.1 dpdk-19.08_1 +librte_pmd_kni.so.1 dpdk-19.08_1 +librte_pmd_enetc.so.1 dpdk-19.08_1 +librte_pmd_atlantic.so.1 dpdk-19.08_1 +librte_mempool_stack.so.1 dpdk-19.08_1 +librte_pmd_opdl_event.so.1 dpdk-19.08_1 +librte_rawdev_dpaa2_cmdif.so.2 dpdk-19.08_1 +librte_pmd_avp.so.1 dpdk-19.08_1 +librte_pmd_cxgbe.so.1 dpdk-19.08_1 +librte_pmd_crypto_scheduler.so.1 dpdk-19.08_1 +librte_pmd_openssl.so.1 dpdk-19.08_1 +librte_pmd_octeontx2_event.so.1 dpdk-19.08_1 +librte_pmd_sfc.so.1 dpdk-19.08_1 +librte_pmd_i40e.so.2 dpdk-19.08_1 +librte_pmd_e1000.so.1 dpdk-19.08_1 +librte_rawdev_octeontx2_dma.so.1 dpdk-19.08_1 +librte_rawdev_ioat.so.1 dpdk-19.08_1 +librte_pmd_dpaa2.so.2 dpdk-19.08_1 +librte_pmd_sw_event.so.1 dpdk-19.08_1 +librte_mempool_octeontx2.so.1 dpdk-19.08_1 +librte_pmd_bbdev_fpga_lte_fec.so.1 dpdk-19.08_1 +librte_rawdev_ntb.so.1 dpdk-19.08_1 +librte_pmd_memif.so.1 dpdk-19.08_1 +librte_pmd_dpaa2_sec.so.2 dpdk-19.08_1 +librte_pmd_failsafe.so.1 dpdk-19.08_1 +librte_pmd_thunderx.so.1 dpdk-19.08_1 +librte_pmd_octeontx.so.1 dpdk-19.08_1 +librte_pmd_dpaa.so.1 dpdk-19.08_1 +librte_pmd_caam_jr.so.1 dpdk-19.08_1 +librte_pmd_virtio.so.1 dpdk-19.08_1 +librte_pmd_octeontx_compress.so.1 dpdk-19.08_1 +librte_pmd_zlib.so.1 dpdk-19.08_1 +librte_bus_pci.so.2 dpdk-19.08_1 +librte_pmd_bond.so.2 dpdk-19.08_1 +librte_pmd_ice.so.1 dpdk-19.08_1 +librte_pmd_skeleton_event.so.1 dpdk-19.08_1 +librte_mempool_ring.so.1 dpdk-19.08_1 +librte_pmd_octeontx2.so.1 dpdk-19.08_1 +librte_mempool_octeontx.so.1 dpdk-19.08_1 +librte_pmd_ark.so.1 dpdk-19.08_1 +librte_pmd_null_crypto.so.1 dpdk-19.08_1 +librte_pmd_ena.so.1 dpdk-19.08_1 +librte_pmd_axgbe.so.1 dpdk-19.08_1 +librte_common_cpt.so.1 dpdk-19.08_1 +librte_pmd_af_packet.so.1 dpdk-19.08_1 +librte_pmd_vhost.so.2 dpdk-19.08_1 +librte_pmd_softnic.so.1 dpdk-19.08_1 +librte_pmd_nfp.so.1 dpdk-19.08_1 +librte_bus_fslmc.so.2 dpdk-19.08_1 +librte_bus_dpaa.so.2 dpdk-19.08_1 +librte_pmd_fm10k.so.1 dpdk-19.08_1 +librte_pmd_bbdev_turbo_sw.so.1 dpdk-19.08_1 +librte_mempool_dpaa2.so.2 dpdk-19.08_1 +librte_pmd_ipn3ke.so.1 dpdk-19.08_1 +librte_pmd_vdev_netvsc.so.1 dpdk-19.08_1 +librte_mempool_dpaa.so.1 dpdk-19.08_1 +librte_pmd_bnx2x.so.1 dpdk-19.08_1 +librte_pmd_enic.so.1 dpdk-19.08_1 +librte_pmd_ixgbe.so.2 dpdk-19.08_1 +librte_common_octeontx2.so.1 dpdk-19.08_1 +librte_pmd_liquidio.so.1 dpdk-19.08_1 +librte_pmd_netvsc.so.2 dpdk-19.08_1 +librte_mempool_bucket.so.1 dpdk-19.08_1 +librte_pmd_virtio_crypto.so.1 dpdk-19.08_1 +librte_pmd_ccp.so.1 dpdk-19.08_1 +librte_bus_vdev.so.2 dpdk-19.08_1 +librte_pmd_tap.so.1 dpdk-19.08_1 +librte_pmd_octeontx_crypto.so.1 dpdk-19.08_1 +librte_rawdev_dpaa2_qdma.so.2 dpdk-19.08_1 +librte_pmd_dsw_event.so.1 dpdk-19.08_1 +librte_pmd_dpaa_event.so.1 dpdk-19.08_1 +librte_pmd_ifc.so.1 dpdk-19.08_1 +librte_stack.so.1 dpdk-19.08_1 +librte_kvargs.so.1 dpdk-19.08_1 +librte_security.so.2 dpdk-19.08_1 +librte_bitratestats.so.2 dpdk-19.08_1 +librte_rcu.so.1 dpdk-19.08_1 +librte_gso.so.1 dpdk-19.08_1 +librte_efd.so.1 dpdk-19.08_1 +librte_cmdline.so.2 dpdk-19.08_1 +librte_telemetry.so.1 dpdk-19.08_1 +librte_pdump.so.3 dpdk-19.08_1 +librte_eventdev.so.7 dpdk-19.08_1 +librte_vhost.so.4 dpdk-19.08_1 +librte_net.so.1 dpdk-19.08_1 +librte_meter.so.3 dpdk-19.08_1 +librte_acl.so.2 dpdk-19.08_1 +librte_mempool.so.5 dpdk-19.08_1 +librte_table.so.3 dpdk-19.08_1 +librte_power.so.1 dpdk-19.08_1 +librte_reorder.so.1 dpdk-19.08_1 +librte_ring.so.2 dpdk-19.08_1 +librte_ethdev.so.12 dpdk-19.08_1 +librte_bbdev.so.1 dpdk-19.08_1 +librte_ipsec.so.1 dpdk-19.08_1 +librte_timer.so.1 dpdk-19.08_1 +librte_cfgfile.so.2 dpdk-19.08_1 +librte_member.so.1 dpdk-19.08_1 +librte_compressdev.so.1 dpdk-19.08_1 +librte_mbuf.so.5 dpdk-19.08_1 +librte_hash.so.2 dpdk-19.08_1 +librte_flow_classify.so.1 dpdk-19.08_1 +librte_metrics.so.1 dpdk-19.08_1 +librte_cryptodev.so.8 dpdk-19.08_1 +librte_rawdev.so.1 dpdk-19.08_1 +librte_kni.so.2 dpdk-19.08_1 +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.0 tpm2-tss-2.3.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 +libzfs.so.2 zfs-0.8.2_1 +libnvpair.so.1 zfs-0.8.2_1 +libzfs_core.so.1 zfs-0.8.3_1 +libzpool.so.2 zfs-0.8.3_1 +libuutil.so.1 zfs-0.8.3_1 +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-19.4.1_1 +libgtk-layer-shell.so.0 gtk-layer-shell-0.1.0_1 +librdkafka.so.1 librdkafka-1.3.0_1 +librdkafka++.so.1 librdkafka-1.3.0_1 +libco.so.0 libco-20_1 +libraft.so.0 raft-0.9.16_1 +libmdnsd.so.1 libmdnsd-0.9_1 +libPtex.so ptex-2.3.2_1 +libosdGPU.so.3.4.0 OpenSubdiv-3.4.0_1 +libosdCPU.so.3.4.0 OpenSubdiv-3.4.0_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.7 libcbor-0.7.0_1 +libfido2.so.1 libfido2-1.3.0_1 +libjanet.so.1.10 janet-1.10.0_1 +libOpenImageDenoise.so.0 openimagedenoise-1.2.0_1 +libcbang0.so cbang-1.3.3_1 +libblosc.so.1 c-blosc-1.17.1_1 +libopenvdb.so.7.0 openvdb-7.0.0_1 +libAlembic.so.1.7 alembic-1.7.12_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.9 tagparser-9.1.2_1 +libqtutilities.so.6 qtutilities-6.0.4_1 +libkdsoap.so.1.9.0 KDSoap-1.9.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 +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 +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 +libdolphinvcs.so.5 dolphin-plugins-20.04.2_1 diff --git a/common/travis/build.sh b/common/travis/build.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# +# build.sh + +if [ "$1" != "$2" ]; then + arch="-a $2" +fi + +PKGS=$(/hostrepo/xbps-src sort-dependencies $(cat /tmp/templates)) + +NPROCS=1 +if [ -r /proc/cpuinfo ]; then + NPROCS=$(grep ^proc /proc/cpuinfo|wc -l) +fi + +export FTP_RETRIES=10 + +for pkg in ${PKGS}; do + /hostrepo/xbps-src -j$NPROCS -H "$HOME"/hostdir $arch pkg "$pkg" + [ $? -eq 1 ] && exit 1 +done + +exit 0 diff --git a/common/travis/changed_templates.sh b/common/travis/changed_templates.sh @@ -0,0 +1,17 @@ +#!/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[32mChanged packages:\x1b[0m' +$GIT_CMD diff-tree -r --no-renames --name-only --diff-filter=AM \ + "$(git merge-base FETCH_HEAD HEAD)" HEAD \ + -- 'srcpkgs/*/template' | + cut -d/ -f 2 | + tee /tmp/templates | + sed "s/^/ /" >&2 diff --git a/common/travis/docker.sh b/common/travis/docker.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# +# docker.sh + +[ "$XLINT" ] && exit 0 + +DOCKER_NAME=${DOCKER_NAME:-void} + +/bin/echo -e "\x1b[32mPulling docker image $DOCKER_BASE-$BOOTSTRAP:$TAG...\x1b[0m" +docker pull $DOCKER_BASE-$BOOTSTRAP:$TAG +docker run -d \ + --name $DOCKER_NAME \ + -v "$(pwd)":/hostrepo \ + -v /tmp:/tmp \ + -e XLINT="$XLINT" \ + -e PATH="$PATH" \ + $DOCKER_BASE-$BOOTSTRAP:$TAG \ + /bin/sh -c 'sleep inf' diff --git a/common/travis/fetch-xtools.sh b/common/travis/fetch-xtools.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# +# fetch-xtools.sh + +mkdir -p /tmp/bin + +/bin/echo -e '\x1b[32mInstalling xtools...\x1b[0m' +wget -q -O - https://github.com/leahneukirchen/xtools/archive/master.tar.gz | \ + gunzip | tar x -C /tmp/bin --wildcards "xtools-master/x*" \ + --strip-components=1 || exit 1 diff --git a/common/travis/fetch_upstream.sh 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 git://github.com/void-linux/void-packages.git master diff --git a/common/travis/license.lst b/common/travis/license.lst @@ -0,0 +1,447 @@ +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 +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 +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-FreeBSD +BSD-2-Clause-NetBSD +BSD-2-Clause-Patent +BSD-2-Clause +BSD-3-Clause-Attribution +BSD-3-Clause-Clear +BSD-3-Clause-LBNL +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-UC +BSD-4-Clause +BSD-Protection +BSD-Source-Code +BSL-1.0 +Bahyph +Barr +Beerware +Bison-exception-2.2 +BitTorrent-1.0 +BitTorrent-1.1 +BlueOak-1.0.0 +Bootloader-exception +Borceux +CATOSL-1.1 +CC-BY-1.0 +CC-BY-2.0 +CC-BY-2.5 +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 +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 +CC-BY-NC-ND-4.0 +CC-BY-NC-SA-1.0 +CC-BY-NC-SA-2.0 +CC-BY-NC-SA-2.5 +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 +CC-BY-ND-4.0 +CC-BY-SA-1.0 +CC-BY-SA-2.0 +CC-BY-SA-2.5 +CC-BY-SA-3.0 +CC-BY-SA-4.0 +CC-PDDC +CC0-1.0 +CDDL-1.0 +CDDL-1.1 +CDLA-Permissive-1.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 +CLISP-exception-2.0 +CNRI-Jython +CNRI-Python-GPL-Compatible +CNRI-Python +CPAL-1.0 +CPL-1.0 +CPOL-1.02 +CUA-OPL-1.0 +Caldera +ClArtistic +Classpath-exception-2.0 +Condor-1.1 +Crossword +CrystalStacker +Cube +D-FSL-1.0 +DOC +DSDP +DigiRule-FOSS-exception +Dotseqn +ECL-1.0 +ECL-2.0 +EFL-1.0 +EFL-2.0 +EPL-1.0 +EPL-2.0 +EUDatagrid +EUPL-1.0 +EUPL-1.1 +EUPL-1.2 +Entessa +ErlPL-1.1 +Eurosym +FLTK-exception +FSFAP +FSFUL +FSFULLR +FTL +Fair +Fawkes-Runtime-exception +Font-exception-2.0 +Frameworx-1.0 +FreeImage +GCC-exception-2.0 +GCC-exception-3.1 +GFDL-1.1-only +GFDL-1.1-or-later +GFDL-1.2-only +GFDL-1.2-or-later +GFDL-1.3-only +GFDL-1.3-or-later +GL2PS +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 +HaskellReport +IBM-pibs +ICU +IJG +IPA +IPL-1.0 +ISC +ImageMagick +Imlib2 +Info-ZIP +Intel-ACPI +Intel +Interbase-1.0 +JPNIC +JSON +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-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-syscall-note +MIT-0 +MIT-CMU +MIT-advertising +MIT-enna +MIT-feh +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 +Multics +Mup +NASA-1.3 +NBPL-1.0 +NCSA +NGPL +NLOD-1.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 +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 +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 +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 +Plexus +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 +SISSL-1.2 +SISSL +SMLNJ +SMPPL +SNIA +SPL-1.0 +SSH-OpenSSH +SSH-short +SSPL-1.0 +SWL +Saxpath +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 +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.5 +bzip2-1.0.6 +copyleft-next-0.3.0 +copyleft-next-0.3.1 +curl +deprecated_AGPL-1.0 +deprecated_AGPL-3.0 +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_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 @@ -0,0 +1,15 @@ +#!/bin/sh +# +# prepare.sh + +[ "$XLINT" ] && exit 0 + +/bin/echo -e '\x1b[32mUpdating etc/conf...\x1b[0m' +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 @@ -0,0 +1,15 @@ +#!/bin/sh + +TRAVIS_PROTO=http +TRAVIS_MIRROR=alpha.us.repo.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 @@ -0,0 +1,14 @@ +#!/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 \ + -f "$subpkg" + done +done < /tmp/templates diff --git a/common/travis/xlint.sh b/common/travis/xlint.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# +# xlint.sh + +[ "$XLINT" ] || exit 0 + +EXITCODE=0 +for t in $(awk '{ print "srcpkgs/" $0 "/template" }' /tmp/templates); do + /bin/echo -e "\x1b[32mLinting $t...\x1b[0m" + xlint "$t" || EXITCODE=$? +done +exit $EXITCODE diff --git a/common/wrappers/cross-cc b/common/wrappers/cross-cc @@ -0,0 +1,37 @@ +#!/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 + if [ "$arg" = "/usr/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" ]; 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1,13 @@ +#!/bin/sh + +uname=$(/usr/bin/uname $@) +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} +rv=$? +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 @@ -0,0 +1,138 @@ +#!/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" + +show_pkg_build_options +check_pkg_arch $XBPS_CROSS_BUILD + +if [ -z "$XBPS_CROSS_PREPARE" ]; then + prepare_cross_sysroot $XBPS_CROSS_BUILD || exit $? +fi +if [ -z "$XBPS_DEPENDENCY" -a -z "$XBPS_TEMP_MASTERDIR" -a -n "$XBPS_KEEP_ALL" -a "$XBPS_CHROOT_CMD" = "proot" ]; then + remove_pkg_autodeps +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 [ -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} ${XBPS_BUILD_FORCEMODE:+-f} -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} \ + ${XBPS_BUILD_FORCEMODE:+-f} -a ${paths} + else + $XBPS_RINDEX_CMD ${XBPS_REPO_COMPTYPE:+--compression $XBPS_REPO_COMPTYPE} \ + ${XBPS_BUILD_FORCEMODE:+-f} -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 @@ -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 @@ -0,0 +1,43 @@ +#!/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 + +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 @@ -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 @@ -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 @@ -0,0 +1,61 @@ +#!/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 + +# 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 @@ -0,0 +1,71 @@ +#!/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 + export XBPS_PKGDESTDIR=1 + 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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1,429 @@ +# 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 + _deps+="$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 + _deps+="$foo " + fi + run_depends+="${_depname} " + done + + [[ $out && $_deps ]] && echo "$_deps" + 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" rval tmplogf cmd + shift + + [ $# -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 '$1' dependency! (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_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" "${binpkg_deps[@]}" + fi + + return 0 +} diff --git a/common/xbps-src/shutils/bulk.sh 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_CMD $XBPS_INSTALL_ARGS -u ${pkgs//[$'\n']/ }" || return 1 + fi +} diff --git a/common/xbps-src/shutils/chroot.sh b/common/xbps-src/shutils/chroot.sh @@ -0,0 +1,314 @@ +# 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...\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 + if [ $? -ne 0 ]; then + msg_error "xbps-src: failed to install base-chroot!\n" + fi + # Reconfigure base-files to create dirs/symlinks. + if xbps-query -r $XBPS_MASTERDIR base-files &>/dev/null; then + XBPS_ARCH=$XBPS_TARGET_PKG xbps-reconfigure -r $XBPS_MASTERDIR -f base-files &>/dev/null + fi + + msg_normal "xbps-src: installed base-chroot 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...\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!\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="-fPIC -pipe" +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 + + # Create some required files. + if [ -f /etc/localtime ]; then + cp -f /etc/localtime $XBPS_MASTERDIR/etc + elif [ -f /usr/share/zoneinfo/UTC ]; then + cp -f /usr/share/zoneinfo/UTC $XBPS_MASTERDIR/etc/localtime + fi + + for f in dev sys 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 + + mkdir -p $XBPS_MASTERDIR/etc/xbps.d + echo "syslog=false" >> $XBPS_MASTERDIR/etc/xbps.d/00-xbps-src.conf + + # Prepare default locale: en_US.UTF-8. + if [ -s ${XBPS_MASTERDIR}/etc/default/libc-locales ]; then + echo '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_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 + + 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 + install -Dm644 ${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 + install -Dm644 ${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 + install -Dm644 ${XBPS_DISTDIR}/etc/xbps.d/repos-remote-${XBPS_MACHINE}-multilib.conf \ + $confdir/22-repository-remote-multilib.conf + fi + fi + + # 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 + # 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 + install -Dm644 ${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 + install -Dm644 ${XBPS_DISTDIR}/etc/xbps.d/repos-remote${suffix}.conf \ + $crossconfdir/20-repository-remote.conf + fi + fi + 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 @@ -0,0 +1,659 @@ +# 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 + _pkgname=${pkgname//[^A-Za-z0-9_]/_} + eval pkgopts="\$XBPS_PKG_OPTIONS_${_pkgname}" + if [ -z "$pkgopts" -o "$pkgopts" = "" ]; then + pkgopts=${XBPS_PKG_OPTIONS} + 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 ${!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 arch 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 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} + + if [ -n "$disable_parallel_build" -o -z "$XBPS_MAKEJOBS" ]; then + XBPS_MAKEJOBS=1 + fi + makejobs="-j$XBPS_MAKEJOBS" + + # strip whitespaces to make " noarch " valid too. + if [ "${archs// /}" = "noarch" ]; then + arch="noarch" + else + arch="$XBPS_TARGET_MACHINE" + fi + 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" + 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" + # 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" + # 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 + 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 + 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 @@ -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 @@ -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 &>/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 @@ -0,0 +1,125 @@ +# vim: set ts=4 sw=4 et: + +check_pkg_arch() { + local cross="$1" _arch f match nonegation + + if [ -n "$archs" -a "${archs// /}" != "noarch" ]; 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: 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" + 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 @@ -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 @@ -0,0 +1,149 @@ +# 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" + [ -n "$long_desc" ] && echo "long_desc: $long_desc" + + 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_pkg_build_depends() { + local f x _pkgname _srcpkg found result + local _deps="$1" + + result=$(mktemp) || exit 1 + + # build time deps + for f in ${_deps}; do + if [ -z "$CROSS_BUILD" ]; then + # ignore dependency on itself + [[ $f == $sourcepkg ]] && continue + fi + if [ ! -f $XBPS_SRCPKGDIR/$f/template ]; then + msg_error "$pkgver: dependency '$f' does not exist!\n" + fi + # ignore virtual dependencies + [[ ${f%\?*} != ${f#*\?} ]] && f=${f#*\?} + unset found + # check for subpkgs + for x in ${subpackages}; do + [[ $f == $x ]] && found=1 && break + done + [[ $found ]] && continue + _pkgname=${f/-32bit} + _srcpkg=$(readlink -f ${XBPS_SRCPKGDIR}/${_pkgname}) + _srcpkg=${_srcpkg##*/} + echo "${_srcpkg}" >> $result + done + sort -u $result + rm -f $result +} + +show_pkg_build_deps() { + show_pkg_build_depends "${hostmakedepends} ${makedepends} $(setup_pkg_depends '' 1 1)" +} + +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 @@ -0,0 +1,193 @@ +# vim: set ts=4 sw=4 et: + +update_check() { + local i p url sfname lpname bbname githubname 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 + printf '%s\n' "$homepage" + 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*|\ + *hg.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" 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*) + sfname="$(printf %s "$url" | cut -d/ -f5)" + url="https://sourceforge.net/projects/$sfname/rss?limit=200";; + *code.google.com*|*googlecode*) + url="http://code.google.com/p/$pkgname/downloads/list";; + *launchpad.net*) + lpname="$(printf %s "$url" | cut -d/ -f4)" + url="https://launchpad.net/$lpname/+download";; + *cpan.*) + pkgname=${pkgname#perl-};; + *pythonhosted.org*) + pkgname=${pkgname#python-} + pkgname=${pkgname#python3-} + url="https://pypi.org/simple/$pkgname";; + *github.com*) + githubname="$(printf %s "$url" | cut -d/ -f4,5)" + url="https://github.com/$githubname/tags" + rx='/archive/(v?|\Q'"$pkgname"'\E-)?\K[\d\.]+(?=\.tar\.gz")';; + *//gitlab.*) + gitlaburl="$(printf %s "$url" | cut -d/ -f1-5)" + url="$gitlaburl/tags" + rx='/archive/[^/]+/\Q'"$pkgname"'\E-v?\K[\d\.]+(?=\.tar\.gz")';; + *bitbucket.org*) + bbname="$(printf %s "$url" | cut -d/ -f4,5)" + url="https://bitbucket.org/$bbname/downloads" + rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d\.]+(?=\.tar)';; + *ftp.gnome.org*) + : ${pattern="\Q$pkgname\E-\K[0-9]+\.[0-9]*[02468]\.[0-9.]*[0-9](?=)"} + url="http://ftp.gnome.org/pub/GNOME/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)' ;; + *hg.sr.ht*) + hgsrhtname="$(printf %s "$url" | cut -d/ -f4,5)" + url="https://hg.sr.ht/$hgsrhtname/tags" + rx='/archive/(v?|\Q'"$pkgname"'\E-)?\K[\d\.]+(?=\.tar\.gz")';; + 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" 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 @@ -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 @@ -0,0 +1,141 @@ +# --*-- 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] +# 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, +# but you can modify the default remote repositories at +# 'etc/xbps.d/repos-remote*.conf' +# +#XBPS_INSTALL_ARGS="" + +# [OPTIONAL] +# Native Compilation/Preprocessor flags for C and C++. Additional settings +# for the target architecture are also declared in common/build-profiles/<arch>.sh. +# +XBPS_CFLAGS="-O2 -pipe" +XBPS_CXXFLAGS="${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. +# +#XBPS_CHECK_PKGS=yes + +# [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) +# - proot (uses proot, external, does not need special permissions) +# - 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=proot +#XBPS_CHROOT_CMD_ARGS="" + +# [OPTIONAL] +# Enable to use the standard mtime of files. Otherwise it will be rewritten to +# the HEAD commit time. +# +#XBPS_USE_BUILD_MTIME=yes + +# [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 diff --git a/etc/defaults.virtual 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1,4 @@ +# 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 diff --git a/etc/xbps.d/repos-remote-x86_64-multilib.conf 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 @@ -0,0 +1,4 @@ +# 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 diff --git a/srcpkgs/st/patches/st-nordtheme-0.8.2.diff b/srcpkgs/st/patches/st-nordtheme-0.8.2.diff @@ -0,0 +1,100 @@ +From 3e8f83d40c6fdd89653ef547aa16cffe1f3c1793 Mon Sep 17 00:00:00 2001 +From: aleks <aleks.stier@icloud.com> +Date: Sun, 4 Aug 2019 13:23:10 +0200 +Subject: [PATCH] Apply nord-theme + +*"Inspired by the beauty of the arctic, the colors reflect the cold, yet +harmonious world of ice and the colorfulness of the Aurora Borealis."* - [Nord +Theme](https://www.nordtheme.com/) + +There are also many [ports](https://www.nordtheme.com/ports) for other programs +like [vim](https://www.nordtheme.com/ports/vim) and +[tmux](https://www.nordtheme.com/ports/tmux) to make the overall appearance +coherent. I would recommend to use it in combination with the arc-theme for gtk +(fits perfectly). + +The default behaviour of st is to reverse the fore- and background colors of +each selected cell. If you want that the selection-colors are not reveresed but +instead have fixed fore- and background colors apply on top of this patch the +[selectioncolors](../selectioncolors/)-patch. Then set the following settings +in your config.h: + +static unsigned int defaultcs = 257; +static unsigned int defaultrcs = 257; +unsigned int selectionfg = 257; +unsigned int selectionbg = 0; +--- + config.def.h | 44 ++++++++++++++++++++++---------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 0e01717..fb504d4 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -85,30 +85,30 @@ unsigned int tabspaces = 8; + /* Terminal colors (16 first used in escape sequence) */ + static const char *colorname[] = { + /* 8 normal colors */ +- "black", +- "red3", +- "green3", +- "yellow3", +- "blue2", +- "magenta3", +- "cyan3", +- "gray90", ++ "#3b4252", /* black */ ++ "#bf616a", /* red */ ++ "#a3be8c", /* green */ ++ "#ebcb8b", /* yellow */ ++ "#81a1c1", /* blue */ ++ "#b48ead", /* magenta */ ++ "#88c0d0", /* cyan */ ++ "#e5e9f0", /* white */ + + /* 8 bright colors */ +- "gray50", +- "red", +- "green", +- "yellow", +- "#5c5cff", +- "magenta", +- "cyan", +- "white", ++ "#4c566a", /* black */ ++ "#bf616a", /* red */ ++ "#a3be8c", /* green */ ++ "#ebcb8b", /* yellow */ ++ "#81a1c1", /* blue */ ++ "#b48ead", /* magenta */ ++ "#8fbcbb", /* cyan */ ++ "#eceff4", /* white */ + + [255] = 0, + + /* more colors can be added after 255 to use with DefaultXX */ +- "#cccccc", +- "#555555", ++ "#2e3440", /* background */ ++ "#d8dee9", /* foreground */ + }; + + +@@ -116,10 +116,10 @@ static const char *colorname[] = { + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +-unsigned int defaultfg = 7; +-unsigned int defaultbg = 0; +-static unsigned int defaultcs = 256; +-static unsigned int defaultrcs = 257; ++unsigned int defaultfg = 257; ++unsigned int defaultbg = 256; ++static unsigned int defaultcs = 257; ++static unsigned int defaultrcs = 256; + + /* + * Default shape of cursor +-- +2.22.0 + diff --git a/srcpkgs/st/patches/st-scrollback-20200419-72e3f6c.diff b/srcpkgs/st/patches/st-scrollback-20200419-72e3f6c.diff @@ -0,0 +1,351 @@ +diff --git a/config.def.h b/config.def.h +index 0895a1f..eef24df 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -188,6 +188,8 @@ static Shortcut shortcuts[] = { + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, ++ { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} }, ++ { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} }, + }; + + /* +diff --git a/st.c b/st.c +index 0ce6ac2..641edc0 100644 +--- a/st.c ++++ b/st.c +@@ -35,6 +35,7 @@ + #define ESC_ARG_SIZ 16 + #define STR_BUF_SIZ ESC_BUF_SIZ + #define STR_ARG_SIZ ESC_ARG_SIZ ++#define HISTSIZE 2000 + + /* macros */ + #define IS_SET(flag) ((term.mode & (flag)) != 0) +@@ -42,6 +43,9 @@ + #define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f)) + #define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c)) + #define ISDELIM(u) (u && wcschr(worddelimiters, u)) ++#define TLINE(y) ((y) < term.scr ? term.hist[((y) + term.histi - \ ++ term.scr + HISTSIZE + 1) % HISTSIZE] : \ ++ term.line[(y) - term.scr]) + + enum term_mode { + MODE_WRAP = 1 << 0, +@@ -117,6 +121,9 @@ typedef struct { + int col; /* nb col */ + Line *line; /* screen */ + Line *alt; /* alternate screen */ ++ Line hist[HISTSIZE]; /* history buffer */ ++ int histi; /* history index */ ++ int scr; /* scroll back */ + int *dirty; /* dirtyness of lines */ + TCursor c; /* cursor */ + int ocx; /* old cursor col */ +@@ -185,8 +192,8 @@ static void tnewline(int); + static void tputtab(int); + static void tputc(Rune); + static void treset(void); +-static void tscrollup(int, int); +-static void tscrolldown(int, int); ++static void tscrollup(int, int, int); ++static void tscrolldown(int, int, int); + static void tsetattr(int *, int); + static void tsetchar(Rune, Glyph *, int, int); + static void tsetdirt(int, int); +@@ -415,10 +422,10 @@ tlinelen(int y) + { + int i = term.col; + +- if (term.line[y][i - 1].mode & ATTR_WRAP) ++ if (TLINE(y)[i - 1].mode & ATTR_WRAP) + return i; + +- while (i > 0 && term.line[y][i - 1].u == ' ') ++ while (i > 0 && TLINE(y)[i - 1].u == ' ') + --i; + + return i; +@@ -527,7 +534,7 @@ selsnap(int *x, int *y, int direction) + * Snap around if the word wraps around at the end or + * beginning of a line. + */ +- prevgp = &term.line[*y][*x]; ++ prevgp = &TLINE(*y)[*x]; + prevdelim = ISDELIM(prevgp->u); + for (;;) { + newx = *x + direction; +@@ -542,14 +549,14 @@ selsnap(int *x, int *y, int direction) + yt = *y, xt = *x; + else + yt = newy, xt = newx; +- if (!(term.line[yt][xt].mode & ATTR_WRAP)) ++ if (!(TLINE(yt)[xt].mode & ATTR_WRAP)) + break; + } + + if (newx >= tlinelen(newy)) + break; + +- gp = &term.line[newy][newx]; ++ gp = &TLINE(newy)[newx]; + delim = ISDELIM(gp->u); + if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim + || (delim && gp->u != prevgp->u))) +@@ -570,14 +577,14 @@ selsnap(int *x, int *y, int direction) + *x = (direction < 0) ? 0 : term.col - 1; + if (direction < 0) { + for (; *y > 0; *y += direction) { +- if (!(term.line[*y-1][term.col-1].mode ++ if (!(TLINE(*y-1)[term.col-1].mode + & ATTR_WRAP)) { + break; + } + } + } else if (direction > 0) { + for (; *y < term.row-1; *y += direction) { +- if (!(term.line[*y][term.col-1].mode ++ if (!(TLINE(*y)[term.col-1].mode + & ATTR_WRAP)) { + break; + } +@@ -608,13 +615,13 @@ getsel(void) + } + + if (sel.type == SEL_RECTANGULAR) { +- gp = &term.line[y][sel.nb.x]; ++ gp = &TLINE(y)[sel.nb.x]; + lastx = sel.ne.x; + } else { +- gp = &term.line[y][sel.nb.y == y ? sel.nb.x : 0]; ++ gp = &TLINE(y)[sel.nb.y == y ? sel.nb.x : 0]; + lastx = (sel.ne.y == y) ? sel.ne.x : term.col-1; + } +- last = &term.line[y][MIN(lastx, linelen-1)]; ++ last = &TLINE(y)[MIN(lastx, linelen-1)]; + while (last >= gp && last->u == ' ') + --last; + +@@ -849,6 +856,9 @@ void + ttywrite(const char *s, size_t n, int may_echo) + { + const char *next; ++ Arg arg = (Arg) { .i = term.scr }; ++ ++ kscrolldown(&arg); + + if (may_echo && IS_SET(MODE_ECHO)) + twrite(s, n, 1); +@@ -1060,13 +1070,53 @@ tswapscreen(void) + } + + void +-tscrolldown(int orig, int n) ++kscrolldown(const Arg* a) ++{ ++ int n = a->i; ++ ++ if (n < 0) ++ n = term.row + n; ++ ++ if (n > term.scr) ++ n = term.scr; ++ ++ if (term.scr > 0) { ++ term.scr -= n; ++ selscroll(0, -n); ++ tfulldirt(); ++ } ++} ++ ++void ++kscrollup(const Arg* a) ++{ ++ int n = a->i; ++ ++ if (n < 0) ++ n = term.row + n; ++ ++ if (term.scr <= HISTSIZE-n) { ++ term.scr += n; ++ selscroll(0, n); ++ tfulldirt(); ++ } ++} ++ ++void ++tscrolldown(int orig, int n, int copyhist) + { + int i; + Line temp; + + LIMIT(n, 0, term.bot-orig+1); + ++ if (copyhist) { ++ term.histi = (term.histi - 1 + HISTSIZE) % HISTSIZE; ++ temp = term.hist[term.histi]; ++ term.hist[term.histi] = term.line[term.bot]; ++ term.line[term.bot] = temp; ++ } ++ + tsetdirt(orig, term.bot-n); + tclearregion(0, term.bot-n+1, term.col-1, term.bot); + +@@ -1076,17 +1126,28 @@ tscrolldown(int orig, int n) + term.line[i-n] = temp; + } + +- selscroll(orig, n); ++ if (term.scr == 0) ++ selscroll(orig, n); + } + + void +-tscrollup(int orig, int n) ++tscrollup(int orig, int n, int copyhist) + { + int i; + Line temp; + + LIMIT(n, 0, term.bot-orig+1); + ++ if (copyhist) { ++ term.histi = (term.histi + 1) % HISTSIZE; ++ temp = term.hist[term.histi]; ++ term.hist[term.histi] = term.line[orig]; ++ term.line[orig] = temp; ++ } ++ ++ if (term.scr > 0 && term.scr < HISTSIZE) ++ term.scr = MIN(term.scr + n, HISTSIZE-1); ++ + tclearregion(0, orig, term.col-1, orig+n-1); + tsetdirt(orig+n, term.bot); + +@@ -1096,7 +1157,8 @@ tscrollup(int orig, int n) + term.line[i+n] = temp; + } + +- selscroll(orig, -n); ++ if (term.scr == 0) ++ selscroll(orig, -n); + } + + void +@@ -1135,7 +1197,7 @@ tnewline(int first_col) + int y = term.c.y; + + if (y == term.bot) { +- tscrollup(term.top, 1); ++ tscrollup(term.top, 1, 1); + } else { + y++; + } +@@ -1300,14 +1362,14 @@ void + tinsertblankline(int n) + { + if (BETWEEN(term.c.y, term.top, term.bot)) +- tscrolldown(term.c.y, n); ++ tscrolldown(term.c.y, n, 0); + } + + void + tdeleteline(int n) + { + if (BETWEEN(term.c.y, term.top, term.bot)) +- tscrollup(term.c.y, n); ++ tscrollup(term.c.y, n, 0); + } + + int32_t +@@ -1738,11 +1800,11 @@ csihandle(void) + break; + case 'S': /* SU -- Scroll <n> line up */ + DEFAULT(csiescseq.arg[0], 1); +- tscrollup(term.top, csiescseq.arg[0]); ++ tscrollup(term.top, csiescseq.arg[0], 0); + break; + case 'T': /* SD -- Scroll <n> line down */ + DEFAULT(csiescseq.arg[0], 1); +- tscrolldown(term.top, csiescseq.arg[0]); ++ tscrolldown(term.top, csiescseq.arg[0], 0); + break; + case 'L': /* IL -- Insert <n> blank lines */ + DEFAULT(csiescseq.arg[0], 1); +@@ -2248,7 +2310,7 @@ eschandle(uchar ascii) + return 0; + case 'D': /* IND -- Linefeed */ + if (term.c.y == term.bot) { +- tscrollup(term.top, 1); ++ tscrollup(term.top, 1, 1); + } else { + tmoveto(term.c.x, term.c.y+1); + } +@@ -2261,7 +2323,7 @@ eschandle(uchar ascii) + break; + case 'M': /* RI -- Reverse index */ + if (term.c.y == term.top) { +- tscrolldown(term.top, 1); ++ tscrolldown(term.top, 1, 1); + } else { + tmoveto(term.c.x, term.c.y-1); + } +@@ -2482,7 +2544,7 @@ twrite(const char *buf, int buflen, int show_ctrl) + void + tresize(int col, int row) + { +- int i; ++ int i, j; + int minrow = MIN(row, term.row); + int mincol = MIN(col, term.col); + int *bp; +@@ -2519,6 +2581,14 @@ tresize(int col, int row) + term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty)); + term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs)); + ++ for (i = 0; i < HISTSIZE; i++) { ++ term.hist[i] = xrealloc(term.hist[i], col * sizeof(Glyph)); ++ for (j = mincol; j < col; j++) { ++ term.hist[i][j] = term.c.attr; ++ term.hist[i][j].u = ' '; ++ } ++ } ++ + /* resize each row to new width, zero-pad if needed */ + for (i = 0; i < minrow; i++) { + term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph)); +@@ -2577,7 +2647,7 @@ drawregion(int x1, int y1, int x2, int y2) + continue; + + term.dirty[y] = 0; +- xdrawline(term.line[y], x1, y, x2); ++ xdrawline(TLINE(y), x1, y, x2); + } + } + +@@ -2598,8 +2668,9 @@ draw(void) + cx--; + + drawregion(0, 0, term.col, term.row); +- xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], +- term.ocx, term.ocy, term.line[term.ocy][term.ocx]); ++ if (term.scr == 0) ++ xdrawcursor(cx, term.c.y, term.line[term.c.y][cx], ++ term.ocx, term.ocy, term.line[term.ocy][term.ocx]); + term.ocx = cx; + term.ocy = term.c.y; + xfinishdraw(); +diff --git a/st.h b/st.h +index d978458..b9a4eeb 100644 +--- a/st.h ++++ b/st.h +@@ -81,6 +81,8 @@ void die(const char *, ...); + void redraw(void); + void draw(void); + ++void kscrolldown(const Arg *); ++void kscrollup(const Arg *); + void printscreen(const Arg *); + void printsel(const Arg *); + void sendbreak(const Arg *); diff --git a/srcpkgs/st/st-terminfo.INSTALL b/srcpkgs/st/st-terminfo.INSTALL @@ -0,0 +1,5 @@ +case "${ACTION}" in +post) + tic -sx usr/share/terminfo/s/st.terminfo + ;; +esac diff --git a/srcpkgs/st/st-terminfo.REMOVE b/srcpkgs/st/st-terminfo.REMOVE @@ -0,0 +1,8 @@ +case "${ACTION}" in +pre) + rm usr/share/terminfo/s/st + rm usr/share/terminfo/s/st-meta + rm usr/share/terminfo/s/st-meta-256color + rm usr/share/terminfo/s/st-256color + ;; +esac diff --git a/srcpkgs/st/template b/srcpkgs/st/template @@ -0,0 +1,38 @@ +# Template file for 'st' +pkgname=st +version=0.8.4 +revision=2 +patch_args="-Np1" +build_style=gnu-makefile +make_use_env=compliant +hostmakedepends="pkg-config" +makedepends="fontconfig-devel libX11-devel libXft-devel" +depends="font-firacode ncurses st-terminfo-${version}_${revision}" +short_desc="Simple terminal implementation for X" +maintainer="Dash Eclipse <dash@ezup.dev>" +license="MIT" +homepage="https://st.suckless.org" +distfiles="https://dl.suckless.org/${pkgname}/${pkgname}-${version}.tar.gz" +checksum=d42d3ceceb4d6a65e32e90a5336e3d446db612c3fbd9ebc1780bc6c9a03346a6 + +pre_build() { + sed -i 's|Liberation Mono|Fira Code Medium|g' config.def.h + sed -i 's|pixelsize=12|pixelsize=11|g' config.def.h + [ -e ${FILESDIR}/config.h ] && cp ${FILESDIR}/config.h config.h + # We will use tic after install. See INSTALL. + sed -i '/tic/d' Makefile +} + +post_install() { + vinstall st.info 644 usr/share/terminfo/s st.terminfo + vdoc README + vlicense LICENSE +} + +st-terminfo_package() { + short_desc+=" - terminfo data" + archs=noarch + pkg_install() { + vmove usr/share/terminfo + } +} diff --git a/xbps-src b/xbps-src @@ -0,0 +1,945 @@ +#!/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. + +-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). + +-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 or proot + 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" -o "$XBPS_CHROOT_CMD" == "proot" ]; 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 + msg_warn "xbps-src: File URLs ($mirror) don't work with '$XBPS_CHROOT_CMD'\n" + 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:qQr: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_OPTIONS+=" -I";; + 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=1; XBPS_OPTIONS+=" -Q";; + 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_CHECK_PKGS" ] && XBPS_CHECK_PKGS=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_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 + +# If pkg options were set in config(s), merge them with command line +if [ -n "$XBPS_ARG_PKG_OPTIONS" ]; then + if [ -n "$XBPS_PKG_OPTIONS" ]; then + export XBPS_PKG_OPTIONS+=",$XBPS_ARG_PKG_OPTIONS" + else + export XBPS_PKG_OPTIONS="$XBPS_ARG_PKG_OPTIONS" + fi +fi + +# Forbid root unless XBPS_ALLOW_CHROOT_BREAKOUT is set +# (for travis 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) +else + 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" + readonly XBPS_QUERY_CMD="xbps-query -c $XBPS_HOSTDIR/repocache-$XBPS_MACHINE -r $XBPS_MASTERDIR" + 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_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 + +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 + +if [ -z "$IN_CHROOT" ]; then + trap 'exit_func' INT TERM + if [ -n "$XBPS_DISTFILES_MIRROR" ]; then + setup_distfiles_mirror + fi +fi +# +# Read funcs from helpers +# +for f in ${XBPS_SHUTILSDIR}/*.sh; do + [ -r "$f" ] && . $f +done + +reconfigure_base_chroot + +# +# Main switch. +# +case "$XBPS_TARGET" in + binary-bootstrap) + install_base_chroot ${XBPS_TARGET_PKG:=$XBPS_MACHINE} + ;; + bootstrap) + # 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 + remove_pkg_wrksrc $wrksrc + remove_pkg_statedir + if declare -f do_clean >/dev/null; then + run_func do_clean + fi + 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" ]; then + export XBPS_CHECK_PKGS=1 + 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 + ${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 + ${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 + ;; + 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 + source ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh + 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 $?