summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaan De Meyer <daan.j.demeyer@gmail.com>2024-05-30 16:24:42 +0200
committerDaan De Meyer <daan.j.demeyer@gmail.com>2024-05-30 19:31:32 +0200
commitba592dc715eed67b0c939ded94b4c31bc5ba1070 (patch)
tree7fa9be09baec776b3e3c0be6d75fab4c4b1311f4
parentMerge pull request #33101 from DaanDeMeyer/revert (diff)
downloadsystemd-ba592dc715eed67b0c939ded94b4c31bc5ba1070.tar.xz
systemd-ba592dc715eed67b0c939ded94b4c31bc5ba1070.zip
mkosi: Replace submodules with our own thing
Unfortunately, git submodules break in all sorts of ways: - Various github workflows (dependabot, github pages) try to do a shallow clone of git submodules which does not work at all when the git repository is hosted on pagure (https://pagure.io/pagure/issue/5453, https://github.com/dependabot/dependabot-core/issues/9391). - If the git forge hosting the git repository uses SHA256, then it breaks our usage of it as a submodule as SHA256 repositories cannot be used as submodules in SHA1 repositories (src.opensuse.org moved to SHA256 which broke our usage of opensuse's systemd spec as a submodule). - git submodules completely break usage of git worktrees. - ... Let's avoid all these issues by just doing our own home grown implementation of git submodules. We lose the automatic dependabot updates this way but since dependabot fails to run more often that not with submodules we don't really lose anything.
-rw-r--r--.github/dependabot.yml5
-rw-r--r--.gitmodules20
-rw-r--r--docs/HACKING.md9
-rw-r--r--mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf5
-rw-r--r--mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf5
-rw-r--r--mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf5
-rw-r--r--mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf5
-rw-r--r--mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf5
-rwxr-xr-xmkosi.images/system/mkosi.sync21
m---------pkg/arch0
m---------pkg/centos0
m---------pkg/debian0
m---------pkg/fedora0
m---------pkg/opensuse0
-rwxr-xr-xtools/git-setup.sh18
-rwxr-xr-xtools/git-submodule-update-hook.sh4
16 files changed, 42 insertions, 60 deletions
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 54593c50f7..3e067c176f 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -17,8 +17,3 @@ updates:
schedule:
interval: "monthly"
open-pull-requests-limit: 2
- - package-ecosystem: "gitsubmodule"
- directory: "/"
- schedule:
- interval: "daily"
- open-pull-requests-limit: 2
diff --git a/.gitmodules b/.gitmodules
index 7ae6ace680..e69de29bb2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,20 +0,0 @@
-[submodule "pkg/fedora"]
- path = pkg/fedora
- url = https://src.fedoraproject.org/rpms/systemd.git
- branch = rawhide
-[submodule "pkg/opensuse"]
- path = pkg/opensuse
- url = https://code.opensuse.org/package/systemd.git
- branch = master
-[submodule "pkg/debian"]
- path = pkg/debian
- url = https://salsa.debian.org/systemd-team/systemd.git
- branch = debian/master
-[submodule "pkg/centos"]
- path = pkg/centos
- url = https://git.centos.org/rpms/systemd.git
- branch = c9s-sig-hyperscale
-[submodule "pkg/arch"]
- path = pkg/arch
- url = https://gitlab.archlinux.org/archlinux/packaging/packages/systemd.git
- branch = main
diff --git a/docs/HACKING.md b/docs/HACKING.md
index 980a45929e..51499d7f79 100644
--- a/docs/HACKING.md
+++ b/docs/HACKING.md
@@ -22,15 +22,6 @@ If adding a new source file, consider adding a matching test executable.
For features at a higher level, tests in `src/test/` are very strongly recommended.
If that is not possible, integration tests in `test/` are encouraged.
-```shell
-$ git config submodule.recurse true
-$ git config fetch.recurseSubmodules on-demand
-$ git config push.recurseSubmodules no
-$ cp .git/hooks/pre-commit.sample .git/hooks/pre-commit
-$ cp tools/git-submodule-update-hook.sh .git/hooks/post-rewrite
-$ cp tools/git-submodule-update-hook.sh .git/hooks/post-checkout
-```
-
Please always test your work before submitting a PR.
For many of the components of systemd testing is straightforward as you can simply compile systemd and run the relevant tool from the build directory.
diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf
index 942db4cb96..9c7d09d656 100644
--- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf
+++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf
@@ -4,6 +4,11 @@
Distribution=arch
[Content]
+Environment=
+ GIT_URL=https://gitlab.archlinux.org/archlinux/packaging/packages/systemd.git
+ GIT_BRANCH=main
+ GIT_COMMIT=dc6c099e0785753c1c88b4adcbcbfc209a8d12e3
+
VolatilePackages=
systemd
systemd-libs
diff --git a/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf
index 15f888168d..395a22b56a 100644
--- a/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf
+++ b/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf
@@ -4,6 +4,11 @@
Distribution=centos
[Content]
+Environment=
+ GIT_URL=https://git.centos.org/rpms/systemd.git
+ GIT_BRANCH=c9s-sig-hyperscale
+ GIT_COMMIT=8cf2aed0181920611421384f7374720db269d6c7
+
Packages=
kernel-modules # For squashfs
rpmautospec-rpm-macros
diff --git a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf
index 7e870ace87..047dbc1dc3 100644
--- a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf
+++ b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf
@@ -5,6 +5,11 @@ Distribution=|debian
Distribution=|ubuntu
[Content]
+Environment=
+ GIT_URL=https://salsa.debian.org/systemd-team/systemd.git
+ GIT_BRANCH=debian/master
+ GIT_COMMIT=18201fa98d74172fa1a17242326e3275995cde13
+
VolatilePackages=
libnss-myhostname
libnss-mymachines
diff --git a/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf
index 3acec1092c..7b122e3c69 100644
--- a/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf
+++ b/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf
@@ -4,6 +4,11 @@
Distribution=fedora
[Content]
+Environment=
+ GIT_URL=https://src.fedoraproject.org/rpms/systemd.git
+ GIT_BRANCH=rawhide
+ GIT_COMMIT=74810c5bc4fe7d872e54c253447ffd61bbc8839f
+
Packages=
btrfs-progs
compsize
diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf
index b3172bfc14..90844d4db4 100644
--- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf
+++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf
@@ -7,6 +7,11 @@ Distribution=opensuse
InitrdInclude=initrd/
[Content]
+Environment=
+ GIT_URL=https://src.opensuse.org/rpm/systemd
+ GIT_BRANCH=factory
+ GIT_COMMIT=28c9bef337dd47c88adc1d948cedfdc79c788e2955f17a534bd76da6419722dd
+
VolatilePackages=
systemd
systemd-boot
diff --git a/mkosi.images/system/mkosi.sync b/mkosi.images/system/mkosi.sync
index 3e42a09b2c..a4f0ab94ec 100755
--- a/mkosi.images/system/mkosi.sync
+++ b/mkosi.images/system/mkosi.sync
@@ -2,8 +2,21 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
-if [ -z "$(ls --almost-all "pkg/$DISTRIBUTION")" ] || [ -f "pkg/$DISTRIBUTION/.git" ]; then
- PKG_SUBDIR="$(realpath "pkg/$DISTRIBUTION" --relative-to "$PWD")"
- git submodule sync "$PKG_SUBDIR"
- git submodule update --init "$PKG_SUBDIR"
+if ((NO_SYNC)); then
+ exit 0
fi
+
+PKG_SUBDIR="$(realpath --canonicalize-missing "pkg/$DISTRIBUTION" --relative-to "$PWD")"
+
+if [[ -d "$PKG_SUBDIR/.git" ]] && [[ "$(git -C "$PKG_SUBDIR" rev-parse HEAD)" == "$GIT_COMMIT" ]]; then
+ exit 0
+fi
+
+if [[ ! -e "$PKG_SUBDIR" ]] || [[ -z "$(ls --almost-all "$PKG_SUBDIR")" ]]; then
+ git clone "$GIT_URL" --branch "$GIT_BRANCH" "$PKG_SUBDIR"
+else
+ git -C "$PKG_SUBDIR" remote set-url origin "$GIT_URL"
+ git -C "$PKG_SUBDIR" fetch origin "$GIT_BRANCH"
+fi
+
+git -C "$PKG_SUBDIR" -c advice.detachedHead=false checkout "$GIT_COMMIT"
diff --git a/pkg/arch b/pkg/arch
deleted file mode 160000
-Subproject b578e90bb68deaae28300300c57b6a99c916b20
diff --git a/pkg/centos b/pkg/centos
deleted file mode 160000
-Subproject 61bb5f47014707a927bc033a21e8dbf685c5d2c
diff --git a/pkg/debian b/pkg/debian
deleted file mode 160000
-Subproject 824c52fafc3afda4c8ad3892596e8243c3b45c9
diff --git a/pkg/fedora b/pkg/fedora
deleted file mode 160000
-Subproject 8fe1f037d21c9d68d96728843f22e5036d76952
diff --git a/pkg/opensuse b/pkg/opensuse
deleted file mode 160000
-Subproject c3399411ac70a440ca9080d6df391eb897bba4e
diff --git a/tools/git-setup.sh b/tools/git-setup.sh
index 8cc1bfdfc2..b5903b4ca1 100755
--- a/tools/git-setup.sh
+++ b/tools/git-setup.sh
@@ -4,12 +4,6 @@ set -eu
cd "${MESON_SOURCE_ROOT:?}"
-if [ -e .git ]; then
- git config submodule.recurse true
- git config fetch.recurseSubmodules on-demand
- git config push.recurseSubmodules no
-fi
-
ret=2
if [ -f .git/hooks/pre-commit.sample ] && [ ! -f .git/hooks/pre-commit ]; then
@@ -19,16 +13,4 @@ if [ -f .git/hooks/pre-commit.sample ] && [ ! -f .git/hooks/pre-commit ]; then
ret=0
fi
-if [ ! -f .git/hooks/post-rewrite ]; then
- cp -p tools/git-submodule-update-hook.sh .git/hooks/post-rewrite
- echo 'Activated post-rewrite hook'
- ret=0
-fi
-
-if [ ! -f .git/hooks/post-checkout ]; then
- cp -p tools/git-submodule-update-hook.sh .git/hooks/post-checkout
- echo 'Activated post-checkout hook'
- ret=0
-fi
-
exit $ret
diff --git a/tools/git-submodule-update-hook.sh b/tools/git-submodule-update-hook.sh
deleted file mode 100755
index 78feb9dbba..0000000000
--- a/tools/git-submodule-update-hook.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-exec git submodule update