# Maintainer (arch): # Contributor: André Silva # Contributor: Márcio Silva # Maintainer: Luke Shumaker # Contributor: Omar Vega Ramos # Contributor: Nicolás Reynolds # Contributor: Daniel Milewski # Contributor: bill-auger # parabola changes and rationale: # - adapt config files to support multiple arches # - install keyring updater service files # - allow pacstrap to create cross-arch chroots pkgname=pacman pkgver=6.0.1 pkgrel=4 pkgrel+=.parabola2 pkgdesc="A library-based package manager with dependency support" arch=('x86_64') arch+=('armv7h' 'i686') url="https://www.archlinux.org/pacman/" license=('GPL') groups=('base-devel') depends=('bash' 'glibc' 'libarchive' 'curl' 'gpgme' 'pacman-mirrorlist' 'archlinux-keyring') _upstream_keyring=$(case ${CARCH} in armv7h) echo 'archlinuxarm-keyring' ;; \ i686 ) echo 'archlinux32-keyring' ;; esac) depends+=('parabola-keyring' ${_upstream_keyring} ) makedepends=('meson' 'asciidoc' 'doxygen') checkdepends=('python' 'fakechroot') optdepends=('perl-locale-gettext: translation support in makepkg-template') provides=('libalpm.so') backup=(etc/pacman.conf etc/makepkg.conf) options=('strip' 'debug') validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD' # Allan McRae 'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) source=(https://sources.archlinux.org/other/pacman/$pkgname-$pkgver.tar.xz{,.sig} add-flto-to-LDFLAGS-for-clang.patch makepkg-use-ffile-prefix-map-instead-of-fdebug-prefi.patch libmakepkg-add-extra-buildflags-only-when-buildflags.patch make-link-time-optimization-flags-configurable.patch pacman.conf makepkg.conf) source=( ${source[*]/pacman.conf/} $(printf "pacman.conf.%s\n" "${arch[@]}" | sort) ) # pacman.conf.{armv7h,i686,x86_64} source=( ${source[*]/makepkg.conf/makepkg.conf.in} ) # makepkg.conf.in source+=(dummy.conf pacman-keyring.service pacman-keyring.timer pacman-keyring.initd 9001-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch) source_armv7h=(0001-Sychronize-filesystem.patch 0002-Revert-close-stdin-before-running-install-scripts.patch 0003-Revert-alpm_run_chroot-always-connect-parent2child-p.patch) sha256sums=('0db61456e56aa49e260e891c0b025be210319e62b15521f29d3e93b00d3bf731' 'SKIP' '82ff91b85f4c6ceba19f9330437e2a22aabc966c2b9e2a20a53857f98a42c223' 'b940e6c0c05a185dce1dbb9da0dcbebf742fca7a63f3e3308d49205afe5a6582' '7d0aee976c9c71fcf7c96ef1d99aa76efe47d8c1f4451842d6d159ec7deb4278' '5b43e26a76be3ed10a69d4bfb2be48db8cce359baf46583411c7f124737ebe6a' '20e9de1b612c3f24736e76a753cd38b7ea0f80160185012a538a77297acfb31f' # makepkg.conf.in '655a1e9a198ccd93313d26327fd20c4d7e4a630840c6e5615143953d2418c3d6' # pacman.conf.armv7h 'f8069c81ddcba59fce6884002f5f40374859dd60610bae1ff99f93827b796e80' # pacman.conf.i686 '748310c1c63dd9d4da2c452938757f82345a0bc0da520968c30048105bbe9b46') # pacman.conf.x86_64 sha256sums+=('ab10d0156ef1f7cd67c5e7365687f754020ae3b4ab79a23a1882cd78ede15fb3' '220f1b25a64727041dc6fa3fd486b0a043f735a3f6cecedc4e2f7c47ec6ce66d' '2a857061f032ff5485f5c75ab74e6f6532621e08963ef48640a792cca16cacd6' '3a0115c5441e565eab0f72e4154440e640be6317cfa13dee0f36b058f63e1774' '9ccc7ef5bd27a68d8788f10c6e5b36495c5d9038d4eb160f9ea4dc9901b622d8') sha256sums_armv7h=('8d70fb5094f58aad98b601bbc42be354c2014b9fe734a1ee0b1e14bb041cc9cc' '0e771370da68c855bfb4eaad4c2ae137883a474886a049b934dac2e775574cb9' '2f586f72c34150330389854575a21be1d3ef3637c4f94bec2e948c2717a5aecb') prepare() { cd "$pkgname-$pkgver" patch -Np1 -i ../add-flto-to-LDFLAGS-for-clang.patch patch -Np1 -i ../makepkg-use-ffile-prefix-map-instead-of-fdebug-prefi.patch patch -Np1 -i ../libmakepkg-add-extra-buildflags-only-when-buildflags.patch patch -Np1 -i ../make-link-time-optimization-flags-configurable.patch # From Arch ARM if [ "${CARCH}" = "armv7h" ]; then patch -p1 -i ../0001-Sychronize-filesystem.patch patch -p1 -i ../0002-Revert-close-stdin-before-running-install-scripts.patch patch -p1 -i ../0003-Revert-alpm_run_chroot-always-connect-parent2child-p.patch fi # From Parabola patch -p1 -i ../9001-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch # Generate the architecture-specific makepkg.conf files local carch mycarch mychost myflags myldflags for carch in "${arch[@]}"; do case $carch in i686) mycarch="i686" mychost="i686-pc-linux-gnu" myflags="-march=i686 -mtune=generic -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection" ;; x86_64) mycarch="x86_64" mychost="x86_64-pc-linux-gnu" myflags="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection" ;; armv7h) mycarch="armv7h" mychost="armv7l-unknown-linux-gnueabihf" myflags="-march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection" ;; esac myldflags="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" # set things correctly in the default conf file sed < "$srcdir/makepkg.conf.in" > "$srcdir/makepkg.conf.$carch" \ -e "s|@CARCH[@]|$mycarch|g" \ -e "s|@CHOST[@]|$mychost|g" \ -e "s|@CARCHFLAGS[@]|$myflags|g" \ -e "s|@LDFLAGS[@]|$myldflags|g" done } build() { cd "$pkgname-$pkgver" meson --prefix=/usr \ --buildtype=plain \ -Ddoc=enabled \ -Ddoxygen=enabled \ -Dscriptlet-shell=/usr/bin/bash \ -Dldconfig=/usr/bin/ldconfig \ build meson compile -C build } check() { cd "$pkgname-$pkgver" meson test -C build } package() { cd "$pkgname-$pkgver" DESTDIR="$pkgdir" meson install -C build # install Arch specific stuff install -dm755 "$pkgdir/etc" install -m644 "$srcdir/pacman.conf.$CARCH" "$pkgdir/etc/pacman.conf" install -m644 "$srcdir/makepkg.conf.$CARCH" "$pkgdir/etc/makepkg.conf" ## install Parabola specific stuff ## # pacman.d/dummy.conf install -dm755 "$pkgdir/etc/pacman.d" install -m644 "$srcdir/dummy.conf" "$pkgdir/etc/pacman.d/" # per-arch pacman.conf(s) and makepkg.conf(s) local carch install -dm755 "$pkgdir/usr/share/pacman/defaults" for carch in "${arch[@]}"; do install -m644 "$srcdir/pacman.conf.$carch" "$pkgdir/usr/share/pacman/defaults/" install -m644 "$srcdir/makepkg.conf.$carch" "$pkgdir/usr/share/pacman/defaults/" done # systemd service install -dm755 "$pkgdir/usr/lib/systemd/system" install -dm755 "$pkgdir/usr/lib/systemd/system-preset" install -m644 "$srcdir/pacman-keyring.service" "$pkgdir/usr/lib/systemd/system/" install -m644 "$srcdir/pacman-keyring.timer" "$pkgdir/usr/lib/systemd/system/" install -m644 /dev/stdin "$pkgdir/usr/lib/systemd/system-preset/90-pacman.preset" \ <<<"enable pacman-keyring.timer" # openrc service install -dm755 "$pkgdir/etc/init.d" install -dm755 "$pkgdir/etc/runlevels/default" install -m755 "$srcdir/pacman-keyring.initd" "$pkgdir/etc/init.d/pacman-keyring" ln -s /etc/init.d/pacman-keyring "$pkgdir/etc/runlevels/default/pacman-keyring" }