]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mkosi: Move copying packages to the output directory to the postinst script
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 28 Oct 2024 20:12:19 +0000 (21:12 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 29 Oct 2024 10:28:47 +0000 (11:28 +0100)
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.

mkosi.functions
mkosi.images/build/mkosi.conf.d/arch/mkosi.build.chroot
mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.build.chroot
mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.build.chroot
mkosi.images/build/mkosi.conf.d/opensuse/mkosi.build.chroot
mkosi.postinst.chroot

index 993f2e8a394fbc3209c10fceeb418c52a5355f0d..c1a4a1dee536a8e75cc313938c89c5e13f631c7d 100644 (file)
@@ -52,6 +52,4 @@ EOF
         --copy-source="$1" \
         --pretty=no \
         "$BUILDDIR"/systemd.raw
-
-    cp "$BUILDDIR"/systemd.raw "$OUTPUTDIR"
 }
index 1e3a74f9533818d23a2f1273d52232075c8faf38..0267b3c876a3f2edd623062507b27d0882b71656 100755 (executable)
@@ -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"
index fa2672d2a285065695f6fbd2d0e64c48f5d0804a..8ad3f328c473499bc81319386314938c4e72a604 100755 (executable)
@@ -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
index 0d33b10d6f05c4d45447c9deb48cda61b8f1aeea..fe8a49748ade7612452d9aa5b82a9050f710058a 100755 (executable)
@@ -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
 )
index 0a5b47b0315d69c455fcd05427cac661a623ab32..9043ef6746c839a52f4e2b41fd16facbfd240605 100755 (executable)
@@ -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
index 0d0eab93d25fcdd6e0ec67af076aa731344e9767..a35f824176be55c38d23b66cf7fd49d1a51d9c8d 100755 (executable)
@@ -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 \