From a36ad55338890560d55d628ecf055f7061d16cf4 Mon Sep 17 00:00:00 2001 From: bill-auger Date: Sat, 23 Apr 2022 00:25:45 -0400 Subject: [pacman]: upgrade to v6.0.1 also: * added keyring update openrc service file * add dummy.conf empty.conf and the remaining changes were mainly to minimize the diff against arch --- ...pkg-Treat-pkgrel-more-similarly-to-pkgver.patch | 91 --------------- ...pkg-Treat-pkgrel-more-similarly-to-pkgver.patch | 91 +++++++++++++++ libre/pacman/PKGBUILD | 127 +++++++++++++-------- libre/pacman/add-flto-to-LDFLAGS-for-clang.patch | 24 ++++ libre/pacman/dummy.conf | 1 + ...add-extra-buildflags-only-when-buildflags.patch | 41 +++++++ ...link-time-optimization-flags-configurable.patch | 108 ++++++++++++++++++ ...-ffile-prefix-map-instead-of-fdebug-prefi.patch | 40 +++++++ libre/pacman/pacman-keyring | 8 -- libre/pacman/pacman-keyring.initd | 26 +++++ libre/pacman/pacman.conf.armv7h | 2 +- libre/pacman/pacman.conf.i686 | 2 +- libre/pacman/pacman.conf.x86_64 | 2 +- 13 files changed, 413 insertions(+), 150 deletions(-) delete mode 100644 libre/pacman/0004-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch create mode 100644 libre/pacman/9001-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch create mode 100644 libre/pacman/add-flto-to-LDFLAGS-for-clang.patch create mode 100644 libre/pacman/dummy.conf create mode 100644 libre/pacman/libmakepkg-add-extra-buildflags-only-when-buildflags.patch create mode 100644 libre/pacman/make-link-time-optimization-flags-configurable.patch create mode 100644 libre/pacman/makepkg-use-ffile-prefix-map-instead-of-fdebug-prefi.patch delete mode 100644 libre/pacman/pacman-keyring create mode 100644 libre/pacman/pacman-keyring.initd (limited to 'libre/pacman') diff --git a/libre/pacman/0004-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch b/libre/pacman/0004-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch deleted file mode 100644 index eff801b55..000000000 --- a/libre/pacman/0004-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch +++ /dev/null @@ -1,91 +0,0 @@ -From e72212e314f98a0cf9a082dfa1293baa019fbc90 Mon Sep 17 00:00:00 2001 -From: Luke Shumaker -Date: Thu, 14 Apr 2016 17:06:07 -0400 -Subject: [PATCH 4/4] makepkg: Treat pkgrel more similarly to pkgver - -This is perfectly fine with libalpm; it was only makepkg that was more -strict with pkgrel than pkgver. - -Further, the former error message about invalid pkgrel formats claimed that -pkgrel was a "decimal", which would mean that `1.1 == 1.10`. This is not -the case; alpm parses pkgrel as a version, not as a decimal. In that -light, enforcing /[0-9]+(\.([0-9]+)?/ on a version spec seems silly. ---- - doc/PKGBUILD.5.asciidoc | 5 ++-- - scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in | 4 ++-- - test/util/vercmptest.sh | 23 ++++++++++++++++++- - 3 files changed, 26 insertions(+), 6 deletions(-) - -diff --git a/doc/PKGBUILD.5.asciidoc b/doc/PKGBUILD.5.asciidoc -index f12effde..1ad8de37 100644 ---- a/doc/PKGBUILD.5.asciidoc -+++ b/doc/PKGBUILD.5.asciidoc -@@ -60,9 +60,8 @@ systems (see below). - allows package maintainers to make updates to the package's configure - flags, for example. This is typically set to '1' for each new upstream - software release and incremented for intermediate PKGBUILD updates. The -- variable is a positive integer, with an optional subrelease level -- specified by adding another positive integer separated by a period -- (i.e. in the form x.y). -+ variable is not allowed to contain colons, forward slashes, hyphens or -+ whitespace. - - *epoch*:: - Used to force the package to be seen as newer than any previous versions -diff --git a/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in b/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in -index 30fa6d71..0888e0b1 100644 ---- a/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in -+++ b/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in -@@ -36,8 +36,8 @@ check_pkgrel() { - return 1 - fi - -- if [[ $rel != +([0-9])?(.+([0-9])) ]]; then -- error "$(gettext "%s must be of the form 'integer[.integer]', not %s.")" "pkgrel${type:+ in $type}" "$rel" -+ if [[ $rel = *[[:space:]/:-]* ]]; then -+ error "$(gettext "%s is not allowed to contain colons, forward slashes, hyphens or whitespace; got %s.")" "pkgrel${type:+ in $type}" "$rel" - return 1 - fi - } -diff --git a/test/util/vercmptest.sh b/test/util/vercmptest.sh -index 1541e7ae..f41a0d1e 100755 ---- a/test/util/vercmptest.sh -+++ b/test/util/vercmptest.sh -@@ -39,7 +39,7 @@ tap_runtest() { - tap_is_str "$($bin "$ver2" "$ver1")" "$exp" "$ver2 $ver1" - } - --tap_plan 92 -+tap_plan 124 - - # all similar length, no pkgrel - tap_runtest 1.5.0 1.5.0 0 -@@ -113,4 +113,25 @@ tap_runtest 1:1.0 1.0 1 - tap_runtest 1:1.0 1.1 1 - tap_runtest 1:1.1 1.1 1 - -+# complex pkgrel values -+tap_runtest 1-1.5.0 1-1.5.0 0 -+tap_runtest 1-1.5.1 1-1.5.0 1 -+tap_runtest 1-1.5.1 1-1.5 1 -+tap_runtest 1-1.5b 1-1.5 -1 -+tap_runtest 1-1.5b 1-1.5.1 -1 -+# based on "from the manpage" -+tap_runtest 1-1.0a 1-1.0alpha -1 -+tap_runtest 1-1.0alpha 1-1.0b -1 -+tap_runtest 1-1.0b 1-1.0beta -1 -+tap_runtest 1-1.0beta 1-1.0rc -1 -+tap_runtest 1-1.0rc 1-1.0 -1 -+# based on "going crazy? alpha-dotted versions" -+tap_runtest 1-1.5.a 1-1.5 1 -+tap_runtest 1-1.5.b 1-1.5.a 1 -+tap_runtest 1-1.5.1 1-1.5.b 1 -+# based on Parabola usage -+tap_runtest 1-1 1-2.par1 -1 -+tap_runtest 1-2 1-2.par1 -1 -+tap_runtest 1-3 1-2.par1 1 -+ - tap_finish --- -2.18.0 - diff --git a/libre/pacman/9001-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch b/libre/pacman/9001-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch new file mode 100644 index 000000000..eff801b55 --- /dev/null +++ b/libre/pacman/9001-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch @@ -0,0 +1,91 @@ +From e72212e314f98a0cf9a082dfa1293baa019fbc90 Mon Sep 17 00:00:00 2001 +From: Luke Shumaker +Date: Thu, 14 Apr 2016 17:06:07 -0400 +Subject: [PATCH 4/4] makepkg: Treat pkgrel more similarly to pkgver + +This is perfectly fine with libalpm; it was only makepkg that was more +strict with pkgrel than pkgver. + +Further, the former error message about invalid pkgrel formats claimed that +pkgrel was a "decimal", which would mean that `1.1 == 1.10`. This is not +the case; alpm parses pkgrel as a version, not as a decimal. In that +light, enforcing /[0-9]+(\.([0-9]+)?/ on a version spec seems silly. +--- + doc/PKGBUILD.5.asciidoc | 5 ++-- + scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in | 4 ++-- + test/util/vercmptest.sh | 23 ++++++++++++++++++- + 3 files changed, 26 insertions(+), 6 deletions(-) + +diff --git a/doc/PKGBUILD.5.asciidoc b/doc/PKGBUILD.5.asciidoc +index f12effde..1ad8de37 100644 +--- a/doc/PKGBUILD.5.asciidoc ++++ b/doc/PKGBUILD.5.asciidoc +@@ -60,9 +60,8 @@ systems (see below). + allows package maintainers to make updates to the package's configure + flags, for example. This is typically set to '1' for each new upstream + software release and incremented for intermediate PKGBUILD updates. The +- variable is a positive integer, with an optional subrelease level +- specified by adding another positive integer separated by a period +- (i.e. in the form x.y). ++ variable is not allowed to contain colons, forward slashes, hyphens or ++ whitespace. + + *epoch*:: + Used to force the package to be seen as newer than any previous versions +diff --git a/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in b/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in +index 30fa6d71..0888e0b1 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in +@@ -36,8 +36,8 @@ check_pkgrel() { + return 1 + fi + +- if [[ $rel != +([0-9])?(.+([0-9])) ]]; then +- error "$(gettext "%s must be of the form 'integer[.integer]', not %s.")" "pkgrel${type:+ in $type}" "$rel" ++ if [[ $rel = *[[:space:]/:-]* ]]; then ++ error "$(gettext "%s is not allowed to contain colons, forward slashes, hyphens or whitespace; got %s.")" "pkgrel${type:+ in $type}" "$rel" + return 1 + fi + } +diff --git a/test/util/vercmptest.sh b/test/util/vercmptest.sh +index 1541e7ae..f41a0d1e 100755 +--- a/test/util/vercmptest.sh ++++ b/test/util/vercmptest.sh +@@ -39,7 +39,7 @@ tap_runtest() { + tap_is_str "$($bin "$ver2" "$ver1")" "$exp" "$ver2 $ver1" + } + +-tap_plan 92 ++tap_plan 124 + + # all similar length, no pkgrel + tap_runtest 1.5.0 1.5.0 0 +@@ -113,4 +113,25 @@ tap_runtest 1:1.0 1.0 1 + tap_runtest 1:1.0 1.1 1 + tap_runtest 1:1.1 1.1 1 + ++# complex pkgrel values ++tap_runtest 1-1.5.0 1-1.5.0 0 ++tap_runtest 1-1.5.1 1-1.5.0 1 ++tap_runtest 1-1.5.1 1-1.5 1 ++tap_runtest 1-1.5b 1-1.5 -1 ++tap_runtest 1-1.5b 1-1.5.1 -1 ++# based on "from the manpage" ++tap_runtest 1-1.0a 1-1.0alpha -1 ++tap_runtest 1-1.0alpha 1-1.0b -1 ++tap_runtest 1-1.0b 1-1.0beta -1 ++tap_runtest 1-1.0beta 1-1.0rc -1 ++tap_runtest 1-1.0rc 1-1.0 -1 ++# based on "going crazy? alpha-dotted versions" ++tap_runtest 1-1.5.a 1-1.5 1 ++tap_runtest 1-1.5.b 1-1.5.a 1 ++tap_runtest 1-1.5.1 1-1.5.b 1 ++# based on Parabola usage ++tap_runtest 1-1 1-2.par1 -1 ++tap_runtest 1-2 1-2.par1 -1 ++tap_runtest 1-3 1-2.par1 1 ++ + tap_finish +-- +2.18.0 + diff --git a/libre/pacman/PKGBUILD b/libre/pacman/PKGBUILD index 17eb6e44c..ae5d4e909 100644 --- a/libre/pacman/PKGBUILD +++ b/libre/pacman/PKGBUILD @@ -7,13 +7,20 @@ # 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.0 -pkgrel=3 +pkgver=6.0.1 +pkgrel=4 pkgrel+=.parabola2 pkgdesc="A library-based package manager with dependency support" arch=('x86_64') -arch+=('i686' 'armv7h') +arch+=('armv7h' 'i686') url="https://www.archlinux.org/pacman/" license=('GPL') groups=('base-devel') @@ -32,36 +39,47 @@ options=('strip' 'debug') validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD' # Allan McRae 'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) source=(https://sources.archlinux.org/other/pacman/$pkgname-$pkgver.tar.xz{,.sig} - pacman-6.0.0-fix-404-download.patch::https://git.archlinux.org/pacman.git/patch/?id=3401f9e142ac4c701cd98c52618cb13164f2146b - pacman-6.0.0-fix-key-import-double-free.patch::https://git.archlinux.org/pacman.git/patch/?id=542910d684191eb7f25ddc5d3d8fe3060028a267 - "${arch[@]/#/pacman.conf.}" - makepkg.conf.in - pacman-keyring.service - pacman-keyring.timer - 0004-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch) + 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=('004448085a7747bdc7a0a4dd5d1fb7556c6b890111a06e029ab088f9905d4808' +sha256sums=('0db61456e56aa49e260e891c0b025be210319e62b15521f29d3e93b00d3bf731' 'SKIP' - 'fe7e037e1b84bfa5bc401650d148c2a2e87d827705a6ec18a596ff5eea3cc0fd' - 'a51b57dd47818d97e29ac0b8604b4b409916bbe6029adfbb03ac7e7c2b2a0819' - 'c974c1cc256f77238be31562344170e1ed2ee715d7beb0ce309d6adccda8de85' - '04e4ab5d45444f405d94aeb5dc65037e40b1e934ce0aa34b5f92b698805dd85a' - '003c557bda471e6b567f58e6509a3df26b7f408a29117ccac172e64a4965102b' - '20e9de1b612c3f24736e76a753cd38b7ea0f80160185012a538a77297acfb31f' - '220f1b25a64727041dc6fa3fd486b0a043f735a3f6cecedc4e2f7c47ec6ce66d' - '2a857061f032ff5485f5c75ab74e6f6532621e08963ef48640a792cca16cacd6' - '9ccc7ef5bd27a68d8788f10c6e5b36495c5d9038d4eb160f9ea4dc9901b622d8') + '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 -p1 -i "$srcdir"/pacman-6.0.0-fix-404-download.patch - patch -p1 -i "$srcdir"/pacman-6.0.0-fix-key-import-double-free.patch + 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 @@ -71,21 +89,7 @@ prepare() { fi # From Parabola - patch -p1 -i ../0004-makepkg-Treat-pkgrel-more-similarly-to-pkgver.patch -} - -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 + 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 @@ -124,6 +128,20 @@ build() { 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" @@ -135,23 +153,36 @@ package() { DESTDIR="$pkgdir" meson install -C build - # install distro-specific stuff - install -dm755 "$pkgdir"/etc/{makepkg,pacman}.d + # 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" - echo '# There must be at least 1 file matching /etc/pacman.d/*.conf' > "$pkgdir/etc/pacman.d/empty.conf" - install -dm755 "$pkgdir/usr/share/pacman/defaults" + ## 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 - # Parabola's pacman began shipping a weekly job for this back in - # 2014. Why is it nescessary for Parabola installs, but it - # seemingly isn't for Arch installs? - install -Dm644 "$srcdir/pacman-keyring.service" "$pkgdir/usr/lib/systemd/system/pacman-keyring.service" - install -Dm644 "$srcdir/pacman-keyring.timer" "$pkgdir/usr/lib/systemd/system/pacman-keyring.timer" - install -Dm644 /dev/stdin "$pkgdir/usr/lib/systemd/system-preset/90-pacman.preset" <<<"enable pacman-keyring.timer" + # 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" } diff --git a/libre/pacman/add-flto-to-LDFLAGS-for-clang.patch b/libre/pacman/add-flto-to-LDFLAGS-for-clang.patch new file mode 100644 index 000000000..b3c139de4 --- /dev/null +++ b/libre/pacman/add-flto-to-LDFLAGS-for-clang.patch @@ -0,0 +1,24 @@ +From 26ee6ff6adbcd8560ec3a65cf219d2ab98edb804 Mon Sep 17 00:00:00 2001 +From: Allan McRae +Date: Fri, 24 Dec 2021 17:59:32 +1000 +Subject: [PATCH] LTO: Add -flto to LDFLAGS for clang + +GCC automatically detects when it is linking LTO objects, but clang does +not. Add -flto to LDFLAGS to make this work for clang too. + +Signed-off-by: Allan McRae +--- + scripts/libmakepkg/buildenv/lto.sh.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/scripts/libmakepkg/buildenv/lto.sh.in b/scripts/libmakepkg/buildenv/lto.sh.in +index 1f1ca53f..c3bd0fa4 100644 +--- a/scripts/libmakepkg/buildenv/lto.sh.in ++++ b/scripts/libmakepkg/buildenv/lto.sh.in +@@ -33,5 +33,6 @@ buildenv_lto() { + if check_option "lto" "y"; then + CFLAGS+=" -flto" + CXXFLAGS+=" -flto" ++ LDFLAGS+=" -flto" + fi + } diff --git a/libre/pacman/dummy.conf b/libre/pacman/dummy.conf new file mode 100644 index 000000000..8d7df06d6 --- /dev/null +++ b/libre/pacman/dummy.conf @@ -0,0 +1 @@ +# parabola's pacman.conf expects at least 1 file matching /etc/pacman.d/*.conf diff --git a/libre/pacman/libmakepkg-add-extra-buildflags-only-when-buildflags.patch b/libre/pacman/libmakepkg-add-extra-buildflags-only-when-buildflags.patch new file mode 100644 index 000000000..365993571 --- /dev/null +++ b/libre/pacman/libmakepkg-add-extra-buildflags-only-when-buildflags.patch @@ -0,0 +1,41 @@ +From 42fe4864a0c8e2846007ffee532fe0cf4b321cdd Mon Sep 17 00:00:00 2001 +From: Allan McRae +Date: Sun, 9 Jan 2022 12:45:58 +1000 +Subject: [PATCH] libmakepkg: add extra buildflags only when buildflags is not + disabled + +This means options=('!buildflags') will disable the addition of CFLAG +etc for LTO and debug building. + +Signed-off-by: Allan McRae +--- + scripts/libmakepkg/buildenv/debugflags.sh.in | 2 +- + scripts/libmakepkg/buildenv/lto.sh.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/scripts/libmakepkg/buildenv/debugflags.sh.in b/scripts/libmakepkg/buildenv/debugflags.sh.in +index 84ca7b71..1cb58613 100644 +--- a/scripts/libmakepkg/buildenv/debugflags.sh.in ++++ b/scripts/libmakepkg/buildenv/debugflags.sh.in +@@ -29,7 +29,7 @@ source "$LIBRARY/util/option.sh" + buildenv_functions+=('buildenv_debugflags') + + buildenv_debugflags() { +- if check_option "debug" "y"; then ++ if check_option "debug" "y" && ! check_option "buildflags" "n"; then + DEBUG_CFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" + DEBUG_CXXFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" + DEBUG_RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}" +diff --git a/scripts/libmakepkg/buildenv/lto.sh.in b/scripts/libmakepkg/buildenv/lto.sh.in +index 081d5648..6e500eab 100644 +--- a/scripts/libmakepkg/buildenv/lto.sh.in ++++ b/scripts/libmakepkg/buildenv/lto.sh.in +@@ -30,7 +30,7 @@ build_options+=('lto') + buildenv_functions+=('buildenv_lto') + + buildenv_lto() { +- if check_option "lto" "y"; then ++ if check_option "lto" "y" && ! check_option "buildflags" "n"; then + CFLAGS+=" -flto" + CXXFLAGS+=" -flto" + LDFLAGS+=" -flto" diff --git a/libre/pacman/make-link-time-optimization-flags-configurable.patch b/libre/pacman/make-link-time-optimization-flags-configurable.patch new file mode 100644 index 000000000..1406b7b49 --- /dev/null +++ b/libre/pacman/make-link-time-optimization-flags-configurable.patch @@ -0,0 +1,108 @@ +From e1ce2351f5c00dd90104e0f4ce3bf176da28af08 Mon Sep 17 00:00:00 2001 +From: Evangelos Foutras +Date: Thu, 10 Feb 2022 05:15:01 +0200 +Subject: [PATCH] Make link time optimization flags configurable + +We want to use -flto=auto in Arch Linux to speed up building, but we +can't hardcode it in buildenv/lto.sh because other downstreams might +have clang < 13.0.0 which did not recognize -flto=auto as equivalent +to -flto=full. + +Introducing an LTOFLAGS variable to makepkg.conf seems the way to go. + +Signed-off-by: Allan McRae +--- + doc/makepkg.conf.5.asciidoc | 10 ++++++++-- + etc/makepkg.conf.in | 1 + + scripts/libmakepkg/buildenv/buildflags.sh.in | 2 +- + scripts/libmakepkg/buildenv/lto.sh.in | 6 +++--- + scripts/libmakepkg/lint_config/variable.sh.in | 8 ++++---- + 5 files changed, 17 insertions(+), 10 deletions(-) + +diff --git a/doc/makepkg.conf.5.asciidoc b/doc/makepkg.conf.5.asciidoc +index 39c5c808..a0d9a6d4 100644 +--- a/doc/makepkg.conf.5.asciidoc ++++ b/doc/makepkg.conf.5.asciidoc +@@ -81,6 +81,11 @@ Options + usage resembling ``-Wl,--hash-style=gnu''. Read ld(1) for more details on + available linker flags. + ++**LTOFLAGS=**"ltoflags":: ++ Additional compiler and linker flags appended to `CFLAGS`, `CXXFLAGS` ++ and `LDFLAGS` when building with link time optimization. If empty, ++ ``-flto'' is used. ++ + **MAKEFLAGS=**"makeflags":: + This is often used to set the number of jobs used; for example, `-j2`. + Other flags that make accepts can also be passed. +@@ -190,8 +195,9 @@ Options + package containing the debug symbols when used with `strip'. + + *lto*;; +- Enable building packages using link time optimization. Adds '-flto' +- to both CFLAGS and CXXFLAGS. ++ Enable building packages using link time optimization. Adds the ++ flags specified in LTOFLAGS to CFLAGS, CXXFLAGS and LDFLAGS (or ++ ``-flto'' if LTOFLAGS is empty). + + *autodep*;; + Enable the automatic addition of libraries to the depends and +diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in +index 0c911cce..edc5f442 100644 +--- a/etc/makepkg.conf.in ++++ b/etc/makepkg.conf.in +@@ -41,6 +41,7 @@ CHOST="@CHOST@" + #CFLAGS="-O2 -pipe" + #CXXFLAGS="-O2 -pipe" + #LDFLAGS="" ++#LTOFLAGS="-flto" + #RUSTFLAGS="-C opt-level=2" + #-- Make Flags: change this for DistCC/SMP systems + #MAKEFLAGS="-j2" +diff --git a/scripts/libmakepkg/buildenv/buildflags.sh.in b/scripts/libmakepkg/buildenv/buildflags.sh.in +index 74f91988..07b4a730 100644 +--- a/scripts/libmakepkg/buildenv/buildflags.sh.in ++++ b/scripts/libmakepkg/buildenv/buildflags.sh.in +@@ -30,6 +30,6 @@ buildenv_functions+=('buildenv_buildflags') + + buildenv_buildflags() { + if check_option "buildflags" "n"; then +- unset CPPFLAGS CFLAGS DEBUG_CFLAGS CXXFLAGS DEBUG_CXXFLAGS LDFLAGS RUSTFLAGS DEBUG_RUSTFLAGS ++ unset CPPFLAGS CFLAGS DEBUG_CFLAGS CXXFLAGS DEBUG_CXXFLAGS LDFLAGS LTOFLAGS RUSTFLAGS DEBUG_RUSTFLAGS + fi + } +diff --git a/scripts/libmakepkg/buildenv/lto.sh.in b/scripts/libmakepkg/buildenv/lto.sh.in +index 6e500eab..6492def7 100644 +--- a/scripts/libmakepkg/buildenv/lto.sh.in ++++ b/scripts/libmakepkg/buildenv/lto.sh.in +@@ -31,8 +31,8 @@ buildenv_functions+=('buildenv_lto') + + buildenv_lto() { + if check_option "lto" "y" && ! check_option "buildflags" "n"; then +- CFLAGS+=" -flto" +- CXXFLAGS+=" -flto" +- LDFLAGS+=" -flto" ++ CFLAGS+=" ${LTOFLAGS:--flto}" ++ CXXFLAGS+=" ${LTOFLAGS:--flto}" ++ LDFLAGS+=" ${LTOFLAGS:--flto}" + fi + } +diff --git a/scripts/libmakepkg/lint_config/variable.sh.in b/scripts/libmakepkg/lint_config/variable.sh.in +index 8327b0a5..03a67ee2 100644 +--- a/scripts/libmakepkg/lint_config/variable.sh.in ++++ b/scripts/libmakepkg/lint_config/variable.sh.in +@@ -32,10 +32,10 @@ lint_config_variables() { + local array=(DLAGENTS VCSCLIENTS BUILDENV OPTIONS INTEGRITY_CHECK MAN_DIRS + DOC_DIRS PURGE_TARGETS COMPRESSGZ COMPRESSBZ2 COMPRESSXZ + COMPRESSLRZ COMPRESSLZO COMPRESSZ) +- local string=(CARCH CHOST CPPFLAGS CFLAGS CXXFLAGS RUSTFLAGS LDFLAGS DEBUG_CFLAGS +- DEBUG_CXXFLAGS DEBUG_RUSTFLAGS DISTCC_HOSTS BUILDDIR STRIP_BINARIES +- STRIP_SHARED STRIP_STATIC PKGDEST SRCDEST SRCPKGDEST LOGDEST PACKAGER +- GPGKEY PKGEXT SRCEXT) ++ local string=(CARCH CHOST CPPFLAGS CFLAGS CXXFLAGS RUSTFLAGS LDFLAGS LTOFLAGS ++ DEBUG_CFLAGS DEBUG_CXXFLAGS DEBUG_RUSTFLAGS DISTCC_HOSTS BUILDDIR ++ STRIP_BINARIES STRIP_SHARED STRIP_STATIC PKGDEST SRCDEST SRCPKGDEST ++ LOGDEST PACKAGER GPGKEY PKGEXT SRCEXT) + + local i keys ret=0 + diff --git a/libre/pacman/makepkg-use-ffile-prefix-map-instead-of-fdebug-prefi.patch b/libre/pacman/makepkg-use-ffile-prefix-map-instead-of-fdebug-prefi.patch new file mode 100644 index 000000000..ca667d88f --- /dev/null +++ b/libre/pacman/makepkg-use-ffile-prefix-map-instead-of-fdebug-prefi.patch @@ -0,0 +1,40 @@ +From e37f7d8b6b4d2f9accf97eb96d0eacbddf2a1345 Mon Sep 17 00:00:00 2001 +From: Xiretza +Date: Sat, 1 Jan 2022 14:40:24 +0100 +Subject: [PATCH] makepkg: use -ffile-prefix-map instead of -fdebug-prefix-map + +>From gcc(1): + +-ffile-prefix-map=old=new + [...] Specifying this option is equivalent to specifying all the + individual -f*-prefix-map options. This can be used to make reproducible + builds that are location independent. + +Specifically, this additionally enables -fmacro-prefix-map=, which causes +prefix mapping to be applied to expansions of __FILE__ and similar macros. + +Without this option, if source files are compiled by passing the +absolute file path to the compiler (as done by e.g. cmake), any +expansions of __FILE__ (e.g. from uses of assert()) will contain +$srcdir. + +Signed-off-by: Allan McRae +--- + scripts/libmakepkg/buildenv/debugflags.sh.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/scripts/libmakepkg/buildenv/debugflags.sh.in b/scripts/libmakepkg/buildenv/debugflags.sh.in +index e0a1ed00..84ca7b71 100644 +--- a/scripts/libmakepkg/buildenv/debugflags.sh.in ++++ b/scripts/libmakepkg/buildenv/debugflags.sh.in +@@ -30,8 +30,8 @@ buildenv_functions+=('buildenv_debugflags') + + buildenv_debugflags() { + if check_option "debug" "y"; then +- DEBUG_CFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" +- DEBUG_CXXFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" ++ DEBUG_CFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" ++ DEBUG_CXXFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" + DEBUG_RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}" + CFLAGS+=" $DEBUG_CFLAGS" + CXXFLAGS+=" $DEBUG_CXXFLAGS" diff --git a/libre/pacman/pacman-keyring b/libre/pacman/pacman-keyring deleted file mode 100644 index b3558d563..000000000 --- a/libre/pacman/pacman-keyring +++ /dev/null @@ -1,8 +0,0 @@ -#!/sbin/openrc-run - -command=/usr/bin/pacman-key -command_args="--refresh-keys" -pidfile= - -name="pacman-keyring" -description="Refresh pacman keyring" diff --git a/libre/pacman/pacman-keyring.initd b/libre/pacman/pacman-keyring.initd new file mode 100644 index 000000000..1945af58b --- /dev/null +++ b/libre/pacman/pacman-keyring.initd @@ -0,0 +1,26 @@ +#!/sbin/openrc-run + +# This is not a daemon; but a short-lived process, +# which only needs to run occasionally. +# Running it as a pseudo-service, +# simplifies the install (rather than requiring a cron deamon). +# Users must only add it to the 'default' runlevel. + + +name="pacman-keyring" +description="Refresh pacman keyring" + + +depend() { + need net + after logger +} + +# Custom start() function with wrapper, to always exit "success" status. +# The command will exit non-zero upon any failed key retrieval; +# which is common if not likely, due to the large number of keys it fetches. +start() { + ebegin "Starting ${RC_SVCNAME}" + start-stop-daemon --start --exec /usr/bin/bash -- -c '/usr/bin/pacman-key --refresh-keys || :' + eend $? +} diff --git a/libre/pacman/pacman.conf.armv7h b/libre/pacman/pacman.conf.armv7h index 737357ab9..b8c90dee4 100644 --- a/libre/pacman/pacman.conf.armv7h +++ b/libre/pacman/pacman.conf.armv7h @@ -62,7 +62,7 @@ LocalFileSigLevel = Optional # Include = IncludePath # # The header [repo-name] is crucial - it must be present and -# un-commented to enable the repo. +# uncommented to enable the repo. # # Some repositories are disabled by default. To enable them, un-comment the # repo name header (e.g. '[nonprism]') and the following 'Include' line. diff --git a/libre/pacman/pacman.conf.i686 b/libre/pacman/pacman.conf.i686 index c8a23cbc2..5025e92e1 100644 --- a/libre/pacman/pacman.conf.i686 +++ b/libre/pacman/pacman.conf.i686 @@ -62,7 +62,7 @@ LocalFileSigLevel = Optional # Include = IncludePath # # The header [repo-name] is crucial - it must be present and -# un-commented to enable the repo. +# uncommented to enable the repo. # # Some repositories are disabled by default. To enable them, un-comment the # repo name header (e.g. '[nonprism]') and the following 'Include' line. diff --git a/libre/pacman/pacman.conf.x86_64 b/libre/pacman/pacman.conf.x86_64 index 56130460b..ff5d6385c 100644 --- a/libre/pacman/pacman.conf.x86_64 +++ b/libre/pacman/pacman.conf.x86_64 @@ -62,7 +62,7 @@ LocalFileSigLevel = Optional # Include = IncludePath # # The header [repo-name] is crucial - it must be present and -# un-commented to enable the repo. +# uncommented to enable the repo. # # Some repositories are disabled by default. To enable them, un-comment the # repo name header (e.g. '[nonprism]') and the following 'Include' line. -- cgit v1.2.3