mirror of
https://github.com/systemd/systemd.git
synced 2025-01-10 05:18:17 +03:00
Merge pull request #31673 from DaanDeMeyer/mkosi
mkosi: Introduce packaging sources as submodules
This commit is contained in:
commit
e307bebc03
5
.github/dependabot.yml
vendored
5
.github/dependabot.yml
vendored
@ -17,3 +17,8 @@ updates:
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
open-pull-requests-limit: 2
|
||||
- package-ecosystem: "gitsubmodule"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
open-pull-requests-limit: 2
|
||||
|
20
.gitmodules
vendored
Normal file
20
.gitmodules
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
[submodule "pkg/fedora"]
|
||||
path = pkg/fedora
|
||||
url = https://src.fedoraproject.org/rpms/systemd
|
||||
branch = rawhide
|
||||
[submodule "pkg/opensuse"]
|
||||
path = pkg/opensuse
|
||||
url = https://code.opensuse.org/package/systemd
|
||||
branch = master
|
||||
[submodule "pkg/debian"]
|
||||
path = pkg/debian
|
||||
url = https://salsa.debian.org/systemd-team/systemd
|
||||
branch = debian/master
|
||||
[submodule "pkg/centos"]
|
||||
path = pkg/centos
|
||||
url = https://git.centos.org/rpms/systemd
|
||||
branch = c9s-sig-hyperscale
|
||||
[submodule "pkg/arch"]
|
||||
path = pkg/arch
|
||||
url = https://gitlab.archlinux.org/daandemeyer/systemd
|
||||
branch = strip
|
@ -2,17 +2,17 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -ex
|
||||
|
||||
if [ ! -f "pkg/$DISTRIBUTION/PKGBUILD" ]; then
|
||||
echo "PKGBUILD not found at pkg/$DISTRIBUTION/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2
|
||||
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
|
||||
|
||||
# We can't configure the source or build directory so we use bind mounts instead to make sure they are in the
|
||||
# expected locations.
|
||||
mount --mkdir --bind "$SRCDIR" "pkg/$DISTRIBUTION/systemd-stable/"
|
||||
mount --mkdir --bind "$BUILDDIR" "pkg/$DISTRIBUTION/build/"
|
||||
mount --mkdir --bind "$SRCDIR" "pkg/$PKG_SUBDIR/systemd-stable/"
|
||||
mount --mkdir --bind "$BUILDDIR" "pkg/$PKG_SUBDIR/build/"
|
||||
# Because we run with --noextract we are responsible for making sure the source files appear in src/.
|
||||
mount --mkdir --rbind "$PWD/pkg/$DISTRIBUTION" "pkg/$DISTRIBUTION/src/"
|
||||
mount --mkdir --rbind "$PWD/pkg/$PKG_SUBDIR" "pkg/$PKG_SUBDIR/src/"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. /etc/makepkg.conf
|
||||
@ -37,7 +37,7 @@ fi
|
||||
|
||||
# We get around makepkg's root check by setting EUID to something else.
|
||||
# shellcheck disable=SC2046
|
||||
env --chdir="pkg/$DISTRIBUTION" \
|
||||
env --chdir="pkg/$PKG_SUBDIR" \
|
||||
EUID=123 \
|
||||
makepkg \
|
||||
--noextract \
|
||||
@ -45,7 +45,7 @@ env --chdir="pkg/$DISTRIBUTION" \
|
||||
--force \
|
||||
UPSTREAM=1 \
|
||||
QUIET=1 \
|
||||
BUILDDIR="$PWD/pkg/$DISTRIBUTION" \
|
||||
BUILDDIR="$PWD/pkg/$PKG_SUBDIR" \
|
||||
PKGDEST="$PACKAGEDIR" \
|
||||
PKGEXT=".pkg.tar" \
|
||||
PKGVER="$(cat meson.version)" \
|
||||
|
@ -10,8 +10,7 @@ InitrdInclude=initrd/
|
||||
# https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/merge_requests/8 is merged.
|
||||
[Content]
|
||||
Environment=
|
||||
PKG_URL="https://gitlab.archlinux.org/daandemeyer/systemd"
|
||||
PKG_BRANCH="strip"
|
||||
PKG_SUBDIR="arch"
|
||||
SYSTEMD_PACKAGES="systemd systemd-ukify systemd-sysvcompat systemd-resolvconf"
|
||||
|
||||
Packages=
|
||||
|
@ -2,14 +2,14 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -e
|
||||
|
||||
if [ ! -f "pkg/$DISTRIBUTION/PKGBUILD" ]; then
|
||||
echo "PKGBUILD not found at pkg/$DISTRIBUTION/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2
|
||||
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/$DISTRIBUTION/.SRCINFO" |
|
||||
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
|
||||
@ -17,7 +17,7 @@ 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/$DISTRIBUTION/PKGBUILD"
|
||||
UPSTREAM=1 . "pkg/$PKG_SUBDIR/PKGBUILD"
|
||||
|
||||
# shellcheck disable=SC2154
|
||||
mkosi-install "${makedepends[@]}"
|
||||
|
@ -1,9 +1,9 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
if [ ! -f "pkg/$DISTRIBUTION/systemd.spec" ]; then
|
||||
echo "spec not found at pkg/$DISTRIBUTION/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2
|
||||
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
|
||||
|
||||
@ -22,7 +22,7 @@ rpmbuild \
|
||||
--with upstream \
|
||||
$( ((WITH_TESTS)) || echo --nocheck) \
|
||||
--define "_topdir /var/tmp" \
|
||||
--define "_sourcedir pkg/$DISTRIBUTION" \
|
||||
--define "_sourcedir pkg/$PKG_SUBDIR" \
|
||||
--define "_rpmdir $PACKAGEDIR" \
|
||||
${BUILDDIR:+--define} \
|
||||
${BUILDDIR:+"_vpath_builddir $BUILDDIR"} \
|
||||
@ -44,4 +44,4 @@ rpmbuild \
|
||||
--define "__elf_exclude_path ^/usr/lib/systemd/tests/unit-tests/.*$" \
|
||||
--define "__script_requires %{nil}" \
|
||||
--undefine _lto_cflags \
|
||||
"pkg/$DISTRIBUTION/systemd.spec"
|
||||
"pkg/$PKG_SUBDIR/systemd.spec"
|
||||
|
@ -1,9 +1,9 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
if [ ! -f "pkg/$DISTRIBUTION/systemd.spec" ]; then
|
||||
echo "spec not found at pkg/$DISTRIBUTION/systemd.spec, run mkosi with -ff to make sure the spec is cloned" >&2
|
||||
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
|
||||
|
||||
@ -19,8 +19,8 @@ mkosi-chroot \
|
||||
--query \
|
||||
"$DEPS" \
|
||||
--define "_topdir /var/tmp" \
|
||||
--define "_sourcedir pkg/$DISTRIBUTION" \
|
||||
"pkg/$DISTRIBUTION/systemd.spec" |
|
||||
--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 |
|
||||
@ -33,7 +33,7 @@ fi
|
||||
# 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.
|
||||
# TODO: Use -bd instead of -br and get rid of this once we don't need to build on CentOS Stream 9 anymore.
|
||||
sed '/Source0/d' --in-place "pkg/$DISTRIBUTION/systemd.spec"
|
||||
sed '/Source0/d' --in-place "pkg/$PKG_SUBDIR/systemd.spec"
|
||||
|
||||
until mkosi-chroot \
|
||||
rpmbuild \
|
||||
@ -41,9 +41,9 @@ until mkosi-chroot \
|
||||
--build-in-place \
|
||||
--with upstream \
|
||||
--define "_topdir /var/tmp" \
|
||||
--define "_sourcedir pkg/$DISTRIBUTION" \
|
||||
--define "_sourcedir pkg/$PKG_SUBDIR" \
|
||||
--define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \
|
||||
"pkg/$DISTRIBUTION/systemd.spec"
|
||||
"pkg/$PKG_SUBDIR/systemd.spec"
|
||||
do
|
||||
EXIT_STATUS=$?
|
||||
if [ $EXIT_STATUS -ne 11 ]; then
|
||||
|
@ -5,8 +5,7 @@ Distribution=centos
|
||||
|
||||
[Content]
|
||||
Environment=
|
||||
PKG_URL="https://git.centos.org/rpms/systemd"
|
||||
PKG_BRANCH="c9s-sig-hyperscale"
|
||||
PKG_SUBDIR="centos"
|
||||
|
||||
Packages=
|
||||
kernel-modules # For squashfs support
|
||||
|
@ -2,13 +2,13 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -e
|
||||
|
||||
if [ ! -d "pkg/$DISTRIBUTION/debian" ]; then
|
||||
echo "deb rules not found at pkg/$DISTRIBUTION/debian, run mkosi once with -ff to make sure the rules are cloned" >&2
|
||||
if [ ! -d "pkg/$PKG_SUBDIR/debian" ]; then
|
||||
echo "deb rules not found at pkg/$PKG_SUBDIR/debian, run mkosi once with -ff to make sure the rules are cloned" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We transplant the debian/ folder from the deb package sources into the upstream sources.
|
||||
mount --mkdir --bind "$SRCDIR/pkg/$DISTRIBUTION/debian" "$SRCDIR"/debian
|
||||
mount --mkdir --bind "$SRCDIR/pkg/$PKG_SUBDIR/debian" "$SRCDIR"/debian
|
||||
|
||||
# We hide the patches/ directory by mounting an empty directory on top so they don't get applied.
|
||||
TMP=$(mktemp -d)
|
||||
|
@ -9,8 +9,7 @@ InitrdInclude=initrd/
|
||||
|
||||
[Content]
|
||||
Environment=
|
||||
PKG_URL="https://salsa.debian.org/systemd-team/systemd"
|
||||
PKG_BRANCH="debian/master"
|
||||
PKG_SUBDIR="debian"
|
||||
SYSTEMD_PACKAGES="systemd
|
||||
systemd-userdbd
|
||||
systemd-oomd
|
||||
|
@ -6,10 +6,10 @@ if [ "$1" = "final" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -d "pkg/$DISTRIBUTION/debian" ]; then
|
||||
echo "deb rules not found at pkg/$DISTRIBUTION/debian, run mkosi once with -ff to make sure the rules are cloned" >&2
|
||||
if [ ! -d "pkg/$PKG_SUBDIR/debian" ]; then
|
||||
echo "deb rules not found at pkg/$PKG_SUBDIR/debian, run mkosi once with -ff to make sure the rules are cloned" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "pkg/$DISTRIBUTION"
|
||||
cd "pkg/$PKG_SUBDIR"
|
||||
DEB_BUILD_PROFILES="pkg.systemd.upstream" apt-get build-dep .
|
||||
|
@ -5,8 +5,7 @@ Distribution=fedora
|
||||
|
||||
[Content]
|
||||
Environment=
|
||||
PKG_URL="https://src.fedoraproject.org/rpms/systemd"
|
||||
PKG_BRANCH="rawhide"
|
||||
PKG_SUBDIR="fedora"
|
||||
|
||||
Packages=
|
||||
btrfs-progs
|
||||
|
@ -1,9 +1,9 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
if [ ! -f "pkg/$DISTRIBUTION/systemd.spec" ]; then
|
||||
echo "spec not found at pkg/$DISTRIBUTION/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2
|
||||
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
|
||||
|
||||
@ -16,7 +16,7 @@ fi
|
||||
# The openSUSE filelists hardcode the manpage compression extension. This causes rpmbuild errors since we
|
||||
# disable manpage compression as the files cannot be found. Fix the issue by removing the compression
|
||||
# extension.
|
||||
find "pkg/$DISTRIBUTION" -name "files.*" -exec sed --in-place 's/\.gz$//' {} \;
|
||||
find "pkg/$PKG_SUBDIR" -name "files.*" -exec sed --in-place 's/\.gz$//' {} \;
|
||||
|
||||
build() {
|
||||
# TODO: Replace meson_build and meson_install overrides with "--undefine __meson_verbose" once
|
||||
@ -28,7 +28,7 @@ build() {
|
||||
--with upstream \
|
||||
$( ((WITH_TESTS)) || echo --nocheck) \
|
||||
--define "_topdir /var/tmp" \
|
||||
--define "_sourcedir pkg/$DISTRIBUTION" \
|
||||
--define "_sourcedir pkg/$PKG_SUBDIR" \
|
||||
--define "_rpmdir $PACKAGEDIR" \
|
||||
${BUILDDIR:+--define} \
|
||||
${BUILDDIR:+"_vpath_builddir $BUILDDIR"} \
|
||||
@ -46,7 +46,7 @@ build() {
|
||||
--define "__elf_exclude_path ^/usr/lib/systemd/tests/unit-tests/.*$" \
|
||||
--define "__script_requires %{nil}" \
|
||||
"$@" \
|
||||
"pkg/$DISTRIBUTION/systemd.spec"
|
||||
"pkg/$PKG_SUBDIR/systemd.spec"
|
||||
}
|
||||
|
||||
if ! build; then
|
||||
@ -58,6 +58,6 @@ if ! build; then
|
||||
# warnings.
|
||||
rm systemd.lang
|
||||
|
||||
cat /tmp/unpackaged-files >>"pkg/$DISTRIBUTION/files.systemd"
|
||||
cat /tmp/unpackaged-files >>"pkg/$PKG_SUBDIR/files.systemd"
|
||||
build --noprep --nocheck
|
||||
fi
|
||||
|
@ -8,8 +8,7 @@ InitrdInclude=initrd/
|
||||
|
||||
[Content]
|
||||
Environment=
|
||||
PKG_URL="https://code.opensuse.org/package/systemd"
|
||||
PKG_BRANCH="master"
|
||||
PKG_SUBDIR="opensuse"
|
||||
SYSTEMD_PACKAGES="systemd
|
||||
udev
|
||||
systemd-experimental
|
||||
|
@ -2,8 +2,8 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -e
|
||||
|
||||
if [ ! -f "pkg/$DISTRIBUTION/systemd.spec" ]; then
|
||||
echo "spec not found at pkg/$DISTRIBUTION/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2
|
||||
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
|
||||
|
||||
@ -19,8 +19,8 @@ mkosi-chroot \
|
||||
--query \
|
||||
"$DEPS" \
|
||||
--define "_topdir /var/tmp" \
|
||||
--define "_sourcedir pkg/$DISTRIBUTION" \
|
||||
"pkg/$DISTRIBUTION/systemd.spec" |
|
||||
--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 |
|
||||
@ -36,9 +36,9 @@ until mkosi-chroot \
|
||||
--build-in-place \
|
||||
--with upstream \
|
||||
--define "_topdir /var/tmp" \
|
||||
--define "_sourcedir pkg/$DISTRIBUTION" \
|
||||
--define "_sourcedir pkg/$PKG_SUBDIR" \
|
||||
--define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \
|
||||
"pkg/$DISTRIBUTION/systemd.spec"
|
||||
"pkg/$PKG_SUBDIR/systemd.spec"
|
||||
do
|
||||
EXIT_STATUS=$?
|
||||
if [ $EXIT_STATUS -ne 11 ]; then
|
||||
|
@ -2,12 +2,7 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -e
|
||||
|
||||
if ((CACHED)); then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$(ls --almost-all "pkg/$DISTRIBUTION")" ]; then
|
||||
git clone "$PKG_URL" --branch "$PKG_BRANCH" "pkg/$DISTRIBUTION"
|
||||
elif [ -d "pkg/$DISTRIBUTION/.git" ] && [ "$(git -C "pkg/$DISTRIBUTION" rev-parse --abbrev-ref HEAD)" = "$PKG_BRANCH" ]; then
|
||||
git -C "pkg/$DISTRIBUTION" pull
|
||||
if [ -z "$(ls --almost-all "pkg/$PKG_SUBDIR")" ] || [ -f "pkg/$PKG_SUBDIR/.git" ]; then
|
||||
git submodule sync "pkg/$PKG_SUBDIR"
|
||||
git submodule update --init "pkg/$PKG_SUBDIR"
|
||||
fi
|
||||
|
1
pkg/arch
Submodule
1
pkg/arch
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 733045c8f6b0acf2f0cfaac207500483a678f4d2
|
1
pkg/centos
Submodule
1
pkg/centos
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 3cf45106c8bc5a050901851be6b2ac85b6f5c571
|
1
pkg/debian
Submodule
1
pkg/debian
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 49132a870dfe281e1973a8c44acffb87a1db5336
|
1
pkg/fedora
Submodule
1
pkg/fedora
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 2822a03dded26b9453bddbba7c6a152de8204aec
|
1
pkg/opensuse
Submodule
1
pkg/opensuse
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 37aca188c2ef606319217b30ff8b0c66df6c60f1
|
Loading…
Reference in New Issue
Block a user