diff options
author | Daan De Meyer <daan.j.demeyer@gmail.com> | 2024-05-30 16:24:42 +0200 |
---|---|---|
committer | Daan De Meyer <daan.j.demeyer@gmail.com> | 2024-05-30 19:31:32 +0200 |
commit | ba592dc715eed67b0c939ded94b4c31bc5ba1070 (patch) | |
tree | 7fa9be09baec776b3e3c0be6d75fab4c4b1311f4 | |
parent | Merge pull request #33101 from DaanDeMeyer/revert (diff) | |
download | systemd-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.yml | 5 | ||||
-rw-r--r-- | .gitmodules | 20 | ||||
-rw-r--r-- | docs/HACKING.md | 9 | ||||
-rw-r--r-- | mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf | 5 | ||||
-rw-r--r-- | mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf | 5 | ||||
-rw-r--r-- | mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf | 5 | ||||
-rw-r--r-- | mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf | 5 | ||||
-rw-r--r-- | mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf | 5 | ||||
-rwxr-xr-x | mkosi.images/system/mkosi.sync | 21 | ||||
m--------- | pkg/arch | 0 | ||||
m--------- | pkg/centos | 0 | ||||
m--------- | pkg/debian | 0 | ||||
m--------- | pkg/fedora | 0 | ||||
m--------- | pkg/opensuse | 0 | ||||
-rwxr-xr-x | tools/git-setup.sh | 18 | ||||
-rwxr-xr-x | tools/git-submodule-update-hook.sh | 4 |
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 |