diff options
author | Daan De Meyer <daan.j.demeyer@gmail.com> | 2024-10-28 21:12:19 +0100 |
---|---|---|
committer | Daan De Meyer <daan.j.demeyer@gmail.com> | 2024-10-29 11:28:47 +0100 |
commit | 7aea1c9e80f20a9bde573b88125a884b9a0ec79f (patch) | |
tree | 430ed21049c283f1b88212f3b93cc6f8796f98b4 | |
parent | Merge pull request #34391 from poettering/dns-long-label-fix (diff) | |
download | systemd-7aea1c9e80f20a9bde573b88125a884b9a0ec79f.tar.xz systemd-7aea1c9e80f20a9bde573b88125a884b9a0ec79f.zip |
mkosi: Move copying packages to the output directory to the postinst script
Now that we have the mkosi.clangd script to run clangd from the mkosi
build script, it becomes clear that doing cleanup with mkosi.clean has
a big gap in that we always run the mkosi.clean script and thus we also
run it when we run the mkosi.clangd script, causing the previously built
packages to be removed when we run clangd without producing new ones.
In mkosi we're improving the situation by only running clean scripts when we
clean up the output directory and disallowing writing to the output directory
from build scripts.
Let's adapt systemd to these changes by moving the copying of packages to the
output directory to the postinst script.
-rw-r--r-- | mkosi.functions | 2 | ||||
-rwxr-xr-x | mkosi.images/build/mkosi.conf.d/arch/mkosi.build.chroot | 15 | ||||
-rwxr-xr-x | mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.build.chroot | 15 | ||||
-rwxr-xr-x | mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.build.chroot | 2 | ||||
-rwxr-xr-x | mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot | 15 | ||||
-rwxr-xr-x | mkosi.postinst.chroot | 2 |
6 files changed, 24 insertions, 27 deletions
diff --git a/mkosi.functions b/mkosi.functions index 993f2e8a39..c1a4a1dee5 100644 --- a/mkosi.functions +++ b/mkosi.functions @@ -52,6 +52,4 @@ EOF --copy-source="$1" \ --pretty=no \ "$BUILDDIR"/systemd.raw - - cp "$BUILDDIR"/systemd.raw "$OUTPUTDIR" } diff --git a/mkosi.images/build/mkosi.conf.d/arch/mkosi.build.chroot b/mkosi.images/build/mkosi.conf.d/arch/mkosi.build.chroot index 1e3a74f953..0267b3c876 100755 --- a/mkosi.images/build/mkosi.conf.d/arch/mkosi.build.chroot +++ b/mkosi.images/build/mkosi.conf.d/arch/mkosi.build.chroot @@ -68,6 +68,11 @@ sed --in-place "pkg/$PKG_SUBDIR/PKGBUILD" \ --expression "s/^_tag=.*/_tag=$(cat meson.version)/" \ --expression "s/^pkgrel=.*/pkgrel=$(date "+%Y%m%d%H%M%S" --date "@$TS")/" +( + shopt -s nullglob + rm -f "$BUILDDIR"/*.pkg.tar +) + # We get around makepkg's root check by setting EUID to something else. # Linting the PKGBUILD takes multiple seconds every build so avoid that by nuking all the linting functions. # shellcheck disable=SC2046 @@ -82,14 +87,8 @@ env --chdir="pkg/$PKG_SUBDIR" \ _systemd_UPSTREAM=1 \ _systemd_QUIET=$( ((MESON_VERBOSE)); echo $? ) \ BUILDDIR="$PWD/pkg/$PKG_SUBDIR" \ - PKGDEST="$OUTPUTDIR" \ + PKGDEST="$BUILDDIR" \ PKGEXT=".pkg.tar" \ MESON_EXTRA_CONFIGURE_OPTIONS="$MKOSI_MESON_OPTIONS $MESON_OPTIONS" -( - shopt -s nullglob - rm -f "$BUILDDIR"/*.pkg.tar -) - -cp "$OUTPUTDIR"/*.pkg.tar "$PACKAGEDIR" -cp "$OUTPUTDIR"/*.pkg.tar "$BUILDDIR" +cp "$BUILDDIR"/*.pkg.tar "$PACKAGEDIR" diff --git a/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.build.chroot b/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.build.chroot index fa2672d2a2..8ad3f328c4 100755 --- a/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.build.chroot +++ b/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.build.chroot @@ -53,6 +53,11 @@ if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe" fi +( + shopt -s nullglob + rm -f "$BUILDDIR"/*.rpm +) + IFS= # TODO: Replace meson_build and meson_install overrides with "--undefine __meson_verbose" once # https://github.com/mesonbuild/meson/pull/12835 is available. @@ -73,7 +78,7 @@ CXX_LD="$( ((LLVM)) && echo lld)" \ $( ((WITH_DOCS)) || echo "--without=docs") \ --define "_topdir /var/tmp" \ --define "_sourcedir $PWD/pkg/$PKG_SUBDIR" \ - --define "_rpmdir $OUTPUTDIR" \ + --define "_rpmdir $BUILDDIR" \ ${BUILDDIR:+"--define=_vpath_builddir $BUILDDIR"} \ --define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \ --define "_binary_payload w.ufdio" \ @@ -101,12 +106,6 @@ CXX_LD="$( ((LLVM)) && echo lld)" \ --noclean \ "pkg/$PKG_SUBDIR/systemd.spec" -( - shopt -s nullglob - rm -f "$BUILDDIR"/*.rpm -) - -cp "$OUTPUTDIR"/*.rpm "$PACKAGEDIR" -cp "$OUTPUTDIR"/*.rpm "$BUILDDIR" +cp "$BUILDDIR"/*.rpm "$PACKAGEDIR" make_sysext_unsigned /var/tmp/BUILD/*/BUILDROOT diff --git a/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.build.chroot b/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.build.chroot index 0d33b10d6f..fe8a49748a 100755 --- a/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.build.chroot +++ b/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.build.chroot @@ -133,8 +133,8 @@ fi rm -f "$BUILDDIR"/*.deb "$BUILDDIR"/*.ddeb cp ../*.deb ../*.ddeb "$PACKAGEDIR" - cp ../*.deb ../*.ddeb "$OUTPUTDIR" cp ../*.deb ../*.ddeb "$BUILDDIR" + # These conflict with the packages that we actually want to install, so remove them rm -f "$BUILDDIR"/systemd-standalone-*.deb "$BUILDDIR"/systemd-standalone-*.ddeb ) diff --git a/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot b/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot index 0a5b47b031..9043ef6746 100755 --- a/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot +++ b/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot @@ -75,7 +75,7 @@ build() { $( ((WITH_TESTS)) || echo "--nocheck") \ --define "_topdir /var/tmp" \ --define "_sourcedir $PWD/pkg/$PKG_SUBDIR" \ - --define "_rpmdir $OUTPUTDIR" \ + --define "_rpmdir $BUILDDIR" \ ${BUILDDIR:+"--define=_vpath_builddir $BUILDDIR"} \ --define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \ --define "_binary_payload w.ufdio" \ @@ -106,6 +106,11 @@ build() { return $EXIT_STATUS } +( + shopt -s nullglob + rm -f "$BUILDDIR"/*.rpm +) + if ! build; then if [[ ! -s /tmp/unpackaged-files ]]; then exit 1 @@ -119,12 +124,6 @@ if ! build; then build --noprep --nocheck fi -( - shopt -s nullglob - rm -f "$BUILDDIR"/*.rpm -) - -cp "$OUTPUTDIR"/*.rpm "$PACKAGEDIR" -cp "$OUTPUTDIR"/*.rpm "$BUILDDIR" +cp "$BUILDDIR"/*.rpm "$PACKAGEDIR" make_sysext_unsigned /var/tmp/BUILD/*/BUILDROOT diff --git a/mkosi.postinst.chroot b/mkosi.postinst.chroot index 0d0eab93d2..a35f824176 100755 --- a/mkosi.postinst.chroot +++ b/mkosi.postinst.chroot @@ -3,6 +3,8 @@ set -e set -o nounset +find "$BUILDDIR" \( -name "*.rpm" -o -name "*.deb" -o -name "*.pkg.tar" -o -name systemd.raw \) -exec cp -t "$OUTPUTDIR" {} \; + useradd \ --uid 4711 \ --user-group \ |