diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml index 2614ee84d9..2f13079252 100644 --- a/.github/workflows/mkosi.yml +++ b/.github/workflows/mkosi.yml @@ -191,10 +191,14 @@ jobs: - name: Configure meson run: | + # /usr/sbin/bpftool is completely broken inside containers on Ubuntu which makes meson blow up so + # disable the bpf-framework stuff to avoid the issue. + # TODO: Drop when we move off Ubuntu Noble as this will be fixed in the next Ubuntu LTS release. sudo mkosi sandbox -- \ meson setup \ --buildtype=debugoptimized \ -Dintegration-tests=true \ + -Dbpf-framework=disabled \ build - name: Build image diff --git a/.packit.yml b/.packit.yml index d5d2ef3636..75d5f6557a 100644 --- a/.packit.yml +++ b/.packit.yml @@ -19,7 +19,7 @@ actions: post-upstream-clone: # Use the Fedora Rawhide specfile - git clone https://src.fedoraproject.org/rpms/systemd .packit_rpm - - bash -c 'git -C .packit_rpm checkout "$(grep GIT_COMMIT= mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.conf | cut -d= -f2)"' + - bash -c 'git -C .packit_rpm checkout "$(grep GIT_COMMIT= mkosi.conf.d/10-centos-fedora/mkosi.conf | cut -d= -f2)"' - bash -c 'echo "%bcond upstream 1" > .packit_rpm/systemd.spec.new' - bash -c 'echo "%define meson_extra_configure_options --werror" >> .packit_rpm/systemd.spec.new' - bash -c 'cat .packit_rpm/systemd.spec >> .packit_rpm/systemd.spec.new' diff --git a/docs/HACKING.md b/docs/HACKING.md index 5a6e57da53..6baa3ae393 100644 --- a/docs/HACKING.md +++ b/docs/HACKING.md @@ -39,7 +39,7 @@ chance that your distribution's packaged version of mkosi will be too old. Then, you can build, run and test systemd executables as follows: ```sh -$ mkosi -f sandbox -- meson setup build +$ mkosi -f sandbox -- meson setup -Dbpf-framework=disabled build # bpftool detection inside mkosi sandbox is broken on Ubuntu Noble and older $ mkosi -f sandbox -- meson compile -C build $ mkosi -f sandbox -- build/systemctl --version $ mkosi -f sandbox -- meson test -C build # Run the unit tests diff --git a/mkosi.conf b/mkosi.conf index fc2b12bda2..033b92d591 100644 --- a/mkosi.conf +++ b/mkosi.conf @@ -11,7 +11,6 @@ Dependencies= PassEnvironment= NO_BUILD - NO_SYNC WIPE SANITIZERS CFLAGS @@ -24,6 +23,11 @@ PassEnvironment= ASAN_OPTIONS COVERAGE VCS_TAG + GIT_URL + GIT_SUBDIR + GIT_BRANCH + GIT_COMMIT + PKG_SUBDIR [Output] RepartDirectories=mkosi.repart diff --git a/mkosi.conf.d/05-tools/mkosi.conf b/mkosi.conf.d/05-tools/mkosi.conf index 6656cee287..adbbf98ebf 100644 --- a/mkosi.conf.d/05-tools/mkosi.conf +++ b/mkosi.conf.d/05-tools/mkosi.conf @@ -1,11 +1,8 @@ # SPDX-License-Identifier: LGPL-2.1-or-later [Build] +ToolsTreeSyncScripts=%D/mkosi.sync ToolsTreePackages= - gcc gdb - gperf llvm - meson - pkgconf - rsync + meson # Also needed in the NO_BUILD case so we list it explicitly. diff --git a/mkosi.conf.d/05-tools/mkosi.conf.d/arch.conf b/mkosi.conf.d/05-tools/mkosi.conf.d/arch.conf index fdb147a1c7..4de8b2bd58 100644 --- a/mkosi.conf.d/05-tools/mkosi.conf.d/arch.conf +++ b/mkosi.conf.d/05-tools/mkosi.conf.d/arch.conf @@ -4,19 +4,11 @@ ToolsTreeDistribution=arch [Build] +ToolsTreePrepareScripts=%D/mkosi.images/build/mkosi.conf.d/arch/mkosi.prepare ToolsTreePackages= - cryptsetup + base-devel github-cli lcov - libcap - libmicrohttpd - libxslt mypy - perl-json-xs - python-jinja - python-lxml - python-pytest ruff shellcheck - tpm2-tss - util-linux-libs diff --git a/mkosi.conf.d/05-tools/mkosi.conf.d/centos-fedora.conf b/mkosi.conf.d/05-tools/mkosi.conf.d/centos-fedora.conf index 5dc5662115..2645e6df5d 100644 --- a/mkosi.conf.d/05-tools/mkosi.conf.d/centos-fedora.conf +++ b/mkosi.conf.d/05-tools/mkosi.conf.d/centos-fedora.conf @@ -5,18 +5,7 @@ ToolsTreeDistribution=|fedora ToolsTreeDistribution=|centos [Build] +ToolsTreePrepareScripts=%D/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.prepare ToolsTreePackages= - pkgconfig(blkid) - pkgconfig(libcap) - pkgconfig(libcryptsetup) - pkgconfig(libcurl) - pkgconfig(fdisk) - pkgconfig(libmicrohttpd) - pkgconfig(mount) - tpm2-tss-devel - python3-jinja2 - python3-lxml python3-mypy - python3-pytest - libxslt - docbook-style-xsl + rpm-build diff --git a/mkosi.conf.d/05-tools/mkosi.conf.d/debian-ubuntu.conf b/mkosi.conf.d/05-tools/mkosi.conf.d/debian-ubuntu.conf index c060e57e82..b6715b5c50 100644 --- a/mkosi.conf.d/05-tools/mkosi.conf.d/debian-ubuntu.conf +++ b/mkosi.conf.d/05-tools/mkosi.conf.d/debian-ubuntu.conf @@ -5,20 +5,9 @@ ToolsTreeDistribution=|debian ToolsTreeDistribution=|ubuntu [Build] +ToolsTreePrepareScripts=%D/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare ToolsTreePackages= gh lcov - libblkid-dev - libcap-dev - libcryptsetup-dev - libcurl4-openssl-dev - libfdisk-dev - libmicrohttpd-dev - libmount-dev - libtss2-dev mypy - python3-jinja2 - python3-lxml - python3-pytest shellcheck - xsltproc diff --git a/mkosi.conf.d/05-tools/mkosi.conf.d/opensuse.conf b/mkosi.conf.d/05-tools/mkosi.conf.d/opensuse.conf index aeaa325d06..b7af141964 100644 --- a/mkosi.conf.d/05-tools/mkosi.conf.d/opensuse.conf +++ b/mkosi.conf.d/05-tools/mkosi.conf.d/opensuse.conf @@ -4,23 +4,11 @@ ToolsTreeDistribution=opensuse [Build] +ToolsTreePrepareScripts=%D/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.prepare ToolsTreePackages= - lcov - libz1 gh + lcov mypy - pkgconfig(blkid) - pkgconfig(libcap) - pkgconfig(libcryptsetup) - pkgconfig(libcurl) - pkgconfig(fdisk) - pkgconfig(libmicrohttpd) - pkgconfig(mount) - pkgconfig(libopenssl) python3-ruff - tpm2-0-tss-devel - python3-jinja2 - python3-lxml - python3-pytest - xsltproc + rpm-build ShellCheck diff --git a/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf b/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf new file mode 100644 index 0000000000..3078782ae3 --- /dev/null +++ b/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +[Match] +ToolsTreeDistribution=ubuntu diff --git a/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf.d/non-x86.conf b/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf.d/non-x86.conf new file mode 100644 index 0000000000..bbddf8e25f --- /dev/null +++ b/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf.d/non-x86.conf @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# The ports Ubuntu archive is for non i386/amd64 repositories + +[Match] +Architecture=!x86-64 +Architecture=!x86 +ToolsTreeRelease=noble + +[Build] +ToolsTreeSandboxTrees=%D/mkosi.conf.d/10-ubuntu/noble-backports-ports.sources:/etc/apt/sources.list.d/noble-backports-ports.sources diff --git a/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf.d/x86.conf b/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf.d/x86.conf new file mode 100644 index 0000000000..9a6aa05cfb --- /dev/null +++ b/mkosi.conf.d/05-tools/mkosi.conf.d/ubuntu/mkosi.conf.d/x86.conf @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# The main Ubuntu archive is only for i386/amd64 repositories + +[Match] +Architecture=|x86-64 +Architecture=|x86 +ToolsTreeRelease=noble + +[Build] +ToolsTreeSandboxTrees=%D/mkosi.conf.d/10-ubuntu/noble-backports.sources:/etc/apt/sources.list.d/noble-backports.sources diff --git a/mkosi.conf.d/10-arch/mkosi.conf b/mkosi.conf.d/10-arch/mkosi.conf index f897d7d31c..79c189bf03 100644 --- a/mkosi.conf.d/10-arch/mkosi.conf +++ b/mkosi.conf.d/10-arch/mkosi.conf @@ -3,6 +3,13 @@ [Match] Distribution=arch +[Build] +Environment= + GIT_URL=https://gitlab.archlinux.org/archlinux/packaging/packages/systemd.git + GIT_BRANCH=main + GIT_COMMIT=1b4994657df1c7495607f0c2f20db73550b94f34 + PKG_SUBDIR=arch + [Content] VolatilePackages= systemd diff --git a/mkosi.conf.d/10-centos-fedora/mkosi.conf b/mkosi.conf.d/10-centos-fedora/mkosi.conf index 7c941046f7..6f996fd578 100644 --- a/mkosi.conf.d/10-centos-fedora/mkosi.conf +++ b/mkosi.conf.d/10-centos-fedora/mkosi.conf @@ -4,6 +4,13 @@ Distribution=|centos Distribution=|fedora +[Build] +Environment= + GIT_URL=https://src.fedoraproject.org/rpms/systemd.git + GIT_BRANCH=rawhide + GIT_COMMIT=617952132de4ed882b9b00ceeed077f843130f91 + PKG_SUBDIR=fedora + [Content] VolatilePackages= systemd diff --git a/mkosi.conf.d/10-debian-ubuntu/mkosi.conf b/mkosi.conf.d/10-debian-ubuntu/mkosi.conf index 30138c00fb..3b85be300b 100644 --- a/mkosi.conf.d/10-debian-ubuntu/mkosi.conf +++ b/mkosi.conf.d/10-debian-ubuntu/mkosi.conf @@ -4,6 +4,14 @@ Distribution=|debian Distribution=|ubuntu +[Build] +Environment= + GIT_URL=https://salsa.debian.org/systemd-team/systemd.git + GIT_SUBDIR=debian + GIT_BRANCH=debian/master + GIT_COMMIT=d8c7f8f7f461b1edc3bf5040509e697ea574c990 + PKG_SUBDIR=debian + [Content] VolatilePackages= libnss-myhostname diff --git a/mkosi.conf.d/10-opensuse/mkosi.conf b/mkosi.conf.d/10-opensuse/mkosi.conf index 32ff446fec..6509ea4f16 100644 --- a/mkosi.conf.d/10-opensuse/mkosi.conf +++ b/mkosi.conf.d/10-opensuse/mkosi.conf @@ -9,6 +9,12 @@ Repositories=non-oss [Build] SandboxTrees=macros.db_backend:/etc/rpm/macros.db_backend +Environment= + GIT_URL=https://github.com/bmwiedemann/openSUSE + GIT_SUBDIR=packages/s/systemd + GIT_BRANCH=master + GIT_COMMIT=9002a773f0ab185908dc8fb6c831c1cd9fdf11f0 + PKG_SUBDIR=opensuse [Content] VolatilePackages= diff --git a/mkosi.images/build/mkosi.conf.d/arch/mkosi.conf b/mkosi.images/build/mkosi.conf.d/arch/mkosi.conf index e239f71294..d7a79d11c1 100644 --- a/mkosi.images/build/mkosi.conf.d/arch/mkosi.conf +++ b/mkosi.images/build/mkosi.conf.d/arch/mkosi.conf @@ -3,13 +3,6 @@ [Match] Distribution=arch -[Build] -Environment= - GIT_URL=https://gitlab.archlinux.org/archlinux/packaging/packages/systemd.git - GIT_BRANCH=main - GIT_COMMIT=1b4994657df1c7495607f0c2f20db73550b94f34 - PKG_SUBDIR=arch - [Content] Packages= base diff --git a/mkosi.images/build/mkosi.conf.d/arch/mkosi.prepare b/mkosi.images/build/mkosi.conf.d/arch/mkosi.prepare index d9e3221d31..500928279a 100755 --- a/mkosi.images/build/mkosi.conf.d/arch/mkosi.prepare +++ b/mkosi.images/build/mkosi.conf.d/arch/mkosi.prepare @@ -2,7 +2,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [[ "$1" == "build" ]]; then +if [[ "$1" == "build" ]] || ((NO_BUILD)); then exit 0 fi diff --git a/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.conf b/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.conf index 5a846ae085..4d0ca8917d 100644 --- a/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.conf +++ b/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.conf @@ -4,13 +4,6 @@ Distribution=|centos Distribution=|fedora -[Build] -Environment= - GIT_URL=https://src.fedoraproject.org/rpms/systemd.git - GIT_BRANCH=rawhide - GIT_COMMIT=617952132de4ed882b9b00ceeed077f843130f91 - PKG_SUBDIR=fedora - [Content] Packages= clang-devel diff --git a/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.prepare b/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.prepare index 3b7a470733..4118e2e59f 100755 --- a/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.prepare +++ b/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.prepare @@ -2,7 +2,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [[ "$1" == "build" ]]; then +if [[ "$1" == "build" ]] || ((NO_BUILD)); then exit 0 fi diff --git a/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.conf b/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.conf index e83cb6e73e..81c79a2c21 100644 --- a/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.conf +++ b/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.conf @@ -4,14 +4,6 @@ Distribution=|debian Distribution=|ubuntu -[Build] -Environment= - GIT_URL=https://salsa.debian.org/systemd-team/systemd.git - GIT_SUBDIR=debian - GIT_BRANCH=debian/master - GIT_COMMIT=d8c7f8f7f461b1edc3bf5040509e697ea574c990 - PKG_SUBDIR=debian - [Content] Packages= apt diff --git a/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare b/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare index cec81ec1d5..86852a588a 100755 --- a/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare +++ b/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare @@ -2,7 +2,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [[ "$1" == "build" ]]; then +if [[ "$1" == "build" ]] || ((NO_BUILD)); then exit 0 fi diff --git a/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.conf b/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.conf index cd852ed883..70a1b31b64 100644 --- a/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.conf +++ b/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.conf @@ -3,14 +3,6 @@ [Match] Distribution=opensuse -[Build] -Environment= - GIT_URL=https://github.com/bmwiedemann/openSUSE - GIT_SUBDIR=packages/s/systemd - GIT_BRANCH=master - GIT_COMMIT=9002a773f0ab185908dc8fb6c831c1cd9fdf11f0 - PKG_SUBDIR=opensuse - [Content] Packages= clang diff --git a/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.prepare b/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.prepare index ab2a42d8b4..1090f4818f 100755 --- a/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.prepare +++ b/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.prepare @@ -2,7 +2,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [[ "$1" == "build" ]]; then +if [[ "$1" == "build" ]] || ((NO_BUILD)); then exit 0 fi diff --git a/mkosi.images/build/mkosi.sync b/mkosi.sync similarity index 100% rename from mkosi.images/build/mkosi.sync rename to mkosi.sync diff --git a/tools/fetch-distro.py b/tools/fetch-distro.py index b91833a68f..77c46d45a2 100755 --- a/tools/fetch-distro.py +++ b/tools/fetch-distro.py @@ -126,7 +126,7 @@ def update_distro(args, distro: str, config: dict): print(f"+ {shlex.join(cmd)}") changes = subprocess.check_output(cmd, text=True).strip() - conf_dir = Path('mkosi.images/build/mkosi.conf.d') + conf_dir = Path('mkosi.conf.d') files = conf_dir.glob('*/*.conf') for file in files: s = file.read_text()