mirror of
https://github.com/systemd/systemd.git
synced 2025-09-10 22:52:49 +02:00
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.
This commit is contained in:
5
.github/dependabot.yml
vendored
5
.github/dependabot.yml
vendored
@@ -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
|
||||
|
||||
20
.gitmodules
vendored
20
.gitmodules
vendored
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
1
pkg/arch
1
pkg/arch
Submodule pkg/arch deleted from b578e90bb6
Submodule pkg/centos deleted from 61bb5f4701
Submodule pkg/debian deleted from 824c52fafc
Submodule pkg/fedora deleted from 8fe1f037d2
Submodule pkg/opensuse deleted from c3399411ac
@@ -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
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
exec git submodule update
|
||||
Reference in New Issue
Block a user