Merge pull request #32141 from DaanDeMeyer/mkosi

Install build dependencies into final image
This commit is contained in:
Daan De Meyer 2024-04-08 11:59:16 +02:00 committed by GitHub
commit bbecef795b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 59 additions and 69 deletions

View file

@ -20,8 +20,10 @@ Packages=
cryptsetup
dbus-broker
dbus-broker-units
debugedit
dhcp
f2fs-tools
fakeroot
git
gnutls
iproute
@ -31,6 +33,7 @@ Packages=
openssh
openssl
pacman
pkgconf
polkit
quota-tools
sbsigntools
@ -41,8 +44,3 @@ Packages=
InitrdPackages=
btrfs-progs
tpm2-tools
BuildPackages=
fakeroot
pkgconf
debugedit

View file

@ -2,23 +2,25 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ "$1" = "build" ]; then
exit 0
fi
if [ ! -f "pkg/$PKG_SUBDIR/PKGBUILD" ]; then
echo "PKGBUILD not found at pkg/$PKG_SUBDIR/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2
exit 1
fi
if [ "$1" = "final" ]; then
# We get depends and optdepends from .SRCINFO as getting them from the PKGBUILD is rather complex.
sed --expression 's/^[ \t]*//' "pkg/$PKG_SUBDIR/.SRCINFO" |
grep --regexp '^depends =' --regexp '^optdepends =' |
sed --expression 's/^depends = //' --expression 's/^optdepends = //' --expression 's/:.*//' |
xargs --delimiter '\n' mkosi-install
else
# We get makedepends from the PKGBUILD as .SRCINFO can't encode conditional dependencies depending on
# whether some environment variable is set or not.
# shellcheck source=/dev/null
UPSTREAM=1 . "pkg/$PKG_SUBDIR/PKGBUILD"
# We get depends and optdepends from .SRCINFO as getting them from the PKGBUILD is rather complex.
sed --expression 's/^[ \t]*//' "pkg/$PKG_SUBDIR/.SRCINFO" |
grep --regexp '^depends =' --regexp '^optdepends =' |
sed --expression 's/^depends = //' --expression 's/^optdepends = //' --expression 's/:.*//' |
xargs --delimiter '\n' mkosi-install
# shellcheck disable=SC2154
mkosi-install "${makedepends[@]}"
fi
# We get makedepends from the PKGBUILD as .SRCINFO can't encode conditional dependencies depending on
# whether some environment variable is set or not.
# shellcheck source=/dev/null
_systemd_UPSTREAM=1 . "pkg/$PKG_SUBDIR/PKGBUILD"
# shellcheck disable=SC2154
mkosi-install "${makedepends[@]}"

View file

@ -2,33 +2,29 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ "$1" = "build" ]; then
exit 0
fi
if [ ! -f "pkg/$PKG_SUBDIR/systemd.spec" ]; then
echo "spec not found at pkg/$PKG_SUBDIR/systemd.spec, run mkosi with -ff to make sure the spec is cloned" >&2
exit 1
fi
if [ "$1" = "final" ]; then
DEPS="--requires"
else
DEPS="--buildrequires"
fi
mkosi-chroot \
rpmspec \
--with upstream \
--query \
"$DEPS" \
--define "_topdir /var/tmp" \
--define "_sourcedir pkg/$PKG_SUBDIR" \
"pkg/$PKG_SUBDIR/systemd.spec" |
grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev |
sort --unique |
tee /tmp/buildrequires |
xargs --delimiter '\n' mkosi-install
if [ "$1" = "final" ]; then
exit 0
fi
for DEPS in --requires --buildrequires; do
mkosi-chroot \
rpmspec \
--with upstream \
--query \
"$DEPS" \
--define "_topdir /var/tmp" \
--define "_sourcedir pkg/$PKG_SUBDIR" \
"pkg/$PKG_SUBDIR/systemd.spec" |
grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev |
sort --unique |
tee /tmp/buildrequires |
xargs --delimiter '\n' mkosi-install
done
# rpmbuild -br tries to build a source package which means all source files have to exist which isn't the
# case when using --build-in-place so we get rid of the source file that doesn't exist to make it happy.

View file

@ -36,6 +36,7 @@ Packages=
dbus-broker
dbus-user-session
dmsetup
dpkg-dev
f2fs-tools
fdisk
git-core
@ -59,6 +60,3 @@ Packages=
InitrdPackages=
btrfs-progs
tpm2-tools
BuildPackages=
dpkg-dev

View file

@ -2,7 +2,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ "$1" = "final" ]; then
if [ "$1" = "build" ]; then
exit 0
fi

View file

@ -2,33 +2,29 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ "$1" = "build" ]; then
exit 0
fi
if [ ! -f "pkg/$PKG_SUBDIR/systemd.spec" ]; then
echo "spec not found at pkg/$PKG_SUBDIR/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2
exit 1
fi
if [ "$1" = "final" ]; then
DEPS="--requires"
else
DEPS="--buildrequires"
fi
mkosi-chroot \
rpmspec \
--with upstream \
--query \
"$DEPS" \
--define "_topdir /var/tmp" \
--define "_sourcedir pkg/$PKG_SUBDIR" \
"pkg/$PKG_SUBDIR/systemd.spec" |
grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev |
sort --unique |
tee /tmp/buildrequires |
xargs --delimiter '\n' mkosi-install
if [ "$1" = "final" ]; then
exit 0
fi
for DEPS in --requires --buildrequires; do
mkosi-chroot \
rpmspec \
--with upstream \
--query \
"$DEPS" \
--define "_topdir /var/tmp" \
--define "_sourcedir pkg/$PKG_SUBDIR" \
"pkg/$PKG_SUBDIR/systemd.spec" |
grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev |
sort --unique |
tee /tmp/buildrequires |
xargs --delimiter '\n' mkosi-install
done
until mkosi-chroot \
rpmbuild \

@ -1 +1 @@
Subproject commit eef64f0d4ddca0f151a9680660a9ba97604e0e88
Subproject commit 282d1f30a64204630e96bcf048597f6afbe4a8bf

@ -1 +1 @@
Subproject commit 976e1b0a6828cdc1ec6f3d227009dff5edfa744b
Subproject commit 2822a03dded26b9453bddbba7c6a152de8204aec