From 110ba695201c4590adf35c31b2c81d4ce5f25bb1 Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Fri, 10 Jan 2025 18:57:39 +0100 Subject: [PATCH] extra-repos/systemd/abuild: new aport Copy abuild to extra-repos/systemd as workaround for now. Related: issue 3452 --- .../0001-abuild-add-systemd-splitfunc.patch | 66 +++++++++++ ...ng-in-systemd-split-func-about-non-u.patch | 28 +++++ extra-repos/systemd/abuild/APKBUILD | 110 ++++++++++++++++++ extra-repos/systemd/abuild/abuild.pre-install | 5 + extra-repos/systemd/abuild/abuild.pre-upgrade | 1 + temp/abuild/APKBUILD | 3 + 6 files changed, 213 insertions(+) create mode 100644 extra-repos/systemd/abuild/0001-abuild-add-systemd-splitfunc.patch create mode 100644 extra-repos/systemd/abuild/0002-abuild-add-warning-in-systemd-split-func-about-non-u.patch create mode 100644 extra-repos/systemd/abuild/APKBUILD create mode 100644 extra-repos/systemd/abuild/abuild.pre-install create mode 120000 extra-repos/systemd/abuild/abuild.pre-upgrade diff --git a/extra-repos/systemd/abuild/0001-abuild-add-systemd-splitfunc.patch b/extra-repos/systemd/abuild/0001-abuild-add-systemd-splitfunc.patch new file mode 100644 index 000000000..2c8958029 --- /dev/null +++ b/extra-repos/systemd/abuild/0001-abuild-add-systemd-splitfunc.patch @@ -0,0 +1,66 @@ +From 0bda547b2d7694ab40e0237ea6ae8a25a237ee50 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pablo=20Correa=20G=C3=B3mez?= +Date: Thu, 11 Apr 2024 13:57:26 +0200 +Subject: [PATCH 1/2] abuild: add systemd splitfunc + +Co-authored-by: Caleb Connolly +--- + abuild.in | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/abuild.in b/abuild.in +index 36317d6..74e47f1 100644 +--- a/abuild.in ++++ b/abuild.in +@@ -815,6 +815,11 @@ postcheck() { + && ! is_openrc_pkg "$name"; then + warning "Found OpenRC directory (/etc/conf.d or /etc/init.d) but name doesn't end with -openrc" + fi ++ # look for /usr/lib/systemd ++ if [ -e "$dir"/usr/lib/systemd ] \ ++ && ! is_systemd_pkg "$name"; then ++ warning "Found systemd directory (/usr/lib/systemd) but it's not in a systemd package" ++ fi + # look for /usr/share/doc + if [ -e "$dir"/usr/share/doc ] \ + && ! is_doc_pkg "$name"; then +@@ -1371,6 +1376,11 @@ is_openrc_pkg() { + test "${1%-openrc}" != "$1" + } + ++# returns true if this is the -systemd package ++is_systemd_pkg() { ++ test "${1%-systemd}" != "$1" || test "systemd" == "$1" ++} ++ + # returns true if this is the -bash-completion package + is_bashcomp_pkg() { + test "${1%-bash-completion}" != "$1" +@@ -2143,6 +2153,24 @@ openrc() { + default_openrc + } + ++# predefined splitfunc systemd ++default_systemd() { ++ depends="$depends_systemd" ++ pkgdesc="$pkgdesc (systemd files)" ++ install_if="systemd ${subpkgname%-systemd}=$pkgver-r$pkgrel" ++ ++ if [ -d lib/systemd ]; then ++ error "Detected /lib/systemd dir, should be installed to /usr/lib/systemd" ++ return 1 ++ fi ++ ++ amove usr/lib/systemd ++} ++ ++systemd() { ++ default_systemd ++} ++ + default_devhelp() { + depends="" + pkgdesc="$pkgname - devhelp files" +-- +2.45.2 + diff --git a/extra-repos/systemd/abuild/0002-abuild-add-warning-in-systemd-split-func-about-non-u.patch b/extra-repos/systemd/abuild/0002-abuild-add-warning-in-systemd-split-func-about-non-u.patch new file mode 100644 index 000000000..29c70baaa --- /dev/null +++ b/extra-repos/systemd/abuild/0002-abuild-add-warning-in-systemd-split-func-about-non-u.patch @@ -0,0 +1,28 @@ +From d27596cd67928e4795dc99dbc139b231354c3381 Mon Sep 17 00:00:00 2001 +From: Clayton Craft +Date: Fri, 5 Jul 2024 10:38:50 -0700 +Subject: [PATCH 2/2] abuild: add warning in -systemd split func about + non-usr-merged birs + +--- + abuild.in | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/abuild.in b/abuild.in +index 74e47f1..e5f9be0 100644 +--- a/abuild.in ++++ b/abuild.in +@@ -2165,6 +2165,10 @@ default_systemd() { + fi + + amove usr/lib/systemd ++ ++ if [ -d bin ] || [ -d lib ] || [ -d usr/sbin ]; then ++ warning "Files should be installed to /usr/bin or /usr/lib, not /bin, /lib, or /usr/sbin" ++ fi + } + + systemd() { +-- +2.45.2 + diff --git a/extra-repos/systemd/abuild/APKBUILD b/extra-repos/systemd/abuild/APKBUILD new file mode 100644 index 000000000..d72e2f7d4 --- /dev/null +++ b/extra-repos/systemd/abuild/APKBUILD @@ -0,0 +1,110 @@ +# Forked from Alpine to add systemd-service support +# HACK: pma#3452: this is now in temp/abuild AND extra-repos/systemd/abuild for +# initial systemd bringup. Until this is resolved, make changes to both +# APKBUILDs at once. + +pkgname=abuild +pkgver=99993.12.0 +_pkgver=3.12.0 +pkgrel=4 +pkgdesc="Script to build Alpine Packages" +url="https://git.alpinelinux.org/cgit/abuild/" +arch="all" +license="GPL-2.0-only" +depends="fakeroot scanelf openssl>3 apk-tools>=2.0.7-r1 libc-utils + attr tar pkgconf patch lzip curl libcap-getcap" +makedepends="openssl-dev>3 zlib-dev pkgconfig scdoc" +checkdepends="kyua git" +install="$pkgname.pre-install $pkgname.pre-upgrade" +subpackages=" + apkbuild-cpan:cpan:noarch + apkbuild-gem-resolver:gems:noarch + apkbuild-pypi:pypi:noarch + abuild-rootbld:_rootbld:noarch + $pkgname-doc + " +options="suid !check" # tests are SLOW in qemu +pkggroups="abuild" +source=" + https://gitlab.alpinelinux.org/alpine/abuild/-/archive/$_pkgver/abuild-$_pkgver.tar.gz + 0001-abuild-add-systemd-splitfunc.patch + 0002-abuild-add-warning-in-systemd-split-func-about-non-u.patch + " +builddir="$srcdir/$pkgname-$_pkgver" + +build() { + make VERSION="$_pkgver-r$pkgrel" +} + +check() { + make check +} + +package() { + make install VERSION="$_pkgver-r$pkgrel" DESTDIR="$pkgdir" + + install -m 644 abuild.conf "$pkgdir"/etc/abuild.conf + + case "$CARCH" in + x86*|ppc64le) + # binutils only supports it here + cat >>"$pkgdir"/usr/share/abuild/default.conf <<-EOF + + # binutils ld.bfd supports this on this architecture; default to it + export RUSTFLAGS="\$RUSTFLAGS -Clink-arg=-Wl,-z,pack-relative-relocs" + export LDFLAGS="\$LDFLAGS -Wl,-z,pack-relative-relocs" + EOF + esac + + case "$CARCH" in + x86_64) + # https://lists.alpinelinux.org/~alpine/devel/%3C1628515011.zujvcn248v.none%40localhost%3E + # note that this is x86-exclusive. on other architectures, this is pretty much always bad + # https://github.com/rust-lang/rust/pull/106380 + cat >>"$pkgdir"/usr/share/abuild/default.conf <<-EOF + + # -fno-plt has very slight improvements to general code size and speed on x86-only, + # for the common system dynamic linking case + export CFLAGS="\$CFLAGS -fno-plt" + export CXXFLAGS="\$CXXFLAGS -fno-plt" + EOF + ;; + esac + + install -d -m 775 -g abuild "$pkgdir"/var/cache/distfiles +} + +cpan() { + pkgdesc="Script to generate perl APKBUILD from CPAN" + depends="perl perl-libwww perl-json perl-module-build perl-module-build-tiny + perl-lwp-protocol-https" + + amove usr/bin/apkbuild-cpan +} + +gems() { + pkgdesc="APKBUILD dependency resolver for RubyGems" + depends="ruby ruby-augeas" + + amove usr/bin/apkbuild-gem-resolver +} + +pypi() { + pkgdesc="Script to generate python3 APKBUILD from PYPI" + depends="perl perl-libwww perl-json perl-module-build-tiny perl-lwp-protocol-https + perl-ipc-system-simple" + + amove usr/bin/apkbuild-pypi +} + +_rootbld() { + pkgdesc="Build packages in chroot" + depends="abuild bubblewrap cmd:envsubst git" + mkdir -p "$subpkgdir" +} + +sha512sums=" +00fac67aa96a83f33406dde60bd9526bfa5fdff690b84dbe867b6ed197f147b2afafcdfbda900c005e00a64a42bcb98ca425ffc8bf2158b9540cbb67d935577d abuild-3.12.0.tar.gz +52cc5857b3c93bd4595de1d06c3c600b88871c68f7a1ea51e10d720ddd9c8fb7f0f63cd2f4fe280c0d9adaf607de8b858f4add3e46b1a5a28cc6c711359f6c60 0001-abuild-add-systemd-splitfunc.patch +3782341dac814ecbcb7d2b4242d85f03ca2e4bf9eeb3b1e9524b2c434b05c864f5a4b5b8abc4031085e7e943e90780fe07b1e99d4cfadf0695340ad321647cac 0002-abuild-add-warning-in-systemd-split-func-about-non-u.patch +" diff --git a/extra-repos/systemd/abuild/abuild.pre-install b/extra-repos/systemd/abuild/abuild.pre-install new file mode 100644 index 000000000..fd3d39a36 --- /dev/null +++ b/extra-repos/systemd/abuild/abuild.pre-install @@ -0,0 +1,5 @@ +#!/bin/sh + +addgroup -S abuild 2>/dev/null + +exit 0 diff --git a/extra-repos/systemd/abuild/abuild.pre-upgrade b/extra-repos/systemd/abuild/abuild.pre-upgrade new file mode 120000 index 000000000..99e4a2144 --- /dev/null +++ b/extra-repos/systemd/abuild/abuild.pre-upgrade @@ -0,0 +1 @@ +abuild.pre-install \ No newline at end of file diff --git a/temp/abuild/APKBUILD b/temp/abuild/APKBUILD index 4000aaeb2..d72e2f7d4 100644 --- a/temp/abuild/APKBUILD +++ b/temp/abuild/APKBUILD @@ -1,4 +1,7 @@ # Forked from Alpine to add systemd-service support +# HACK: pma#3452: this is now in temp/abuild AND extra-repos/systemd/abuild for +# initial systemd bringup. Until this is resolved, make changes to both +# APKBUILDs at once. pkgname=abuild pkgver=99993.12.0