Skip to content

Commit 3d497a2

Browse files
committed
configs: update openEuler 24.03 LTS chroot to SP4 and fix source metalink
Bump the openEuler 24.03 LTS template from SP3 to SP4 (releasever, description, bootstrap_image). module_platform_id stays platform:oe2403. SP4 is now registered in the metalink (mirrormanager) endpoint the chroot relies on: repo=24.03LTS_SP4/OS returns 5 mirrors, the docker tag 24.03-lts-sp4 is published on Docker Hub. Also fix the source and update-source metalink repositories across all openEuler templates (20.03, 22.03, 24.03): the path= metalink form does not translate the $releasever dnf variable into the full mirror directory name (only the repo= form does), so path=openeuler/$releasever resolved to a non-existent path and silently broke mock --sources. Use the literal openEuler-<version> directory name instead. Add an offline test (test_openeuler_configs.py) that loads the shipped configs and asserts no path= metalink depends on $releasever. Assisted-By: pi
1 parent ac3064b commit 3d497a2

6 files changed

Lines changed: 67 additions & 9 deletions

File tree

mock-core-configs/etc/mock/templates/openeuler-20.03.tpl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,12 @@ enabled=0
5454
gpgcheck=1
5555
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker
5656
57+
# metalink path= form does NOT translate $releasever to the full mirror
58+
# directory name (only the repo= form does), so source repos must use the
59+
# literal openEuler-<version> directory.
5760
[source]
5861
name=source
59-
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/$releasever/source/repodata/repomd.xml
62+
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/openEuler-20.03-LTS-SP4/source/repodata/repomd.xml
6063
enabled=0
6164
gpgcheck=1
6265
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker

mock-core-configs/etc/mock/templates/openeuler-22.03.tpl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,12 @@ enabled=0
5757
gpgcheck=1
5858
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker
5959
60+
# metalink path= form does NOT translate $releasever to the full mirror
61+
# directory name (only the repo= form does), so source repos must use the
62+
# literal openEuler-<version> directory.
6063
[source]
6164
name=source
62-
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/$releasever/source/repodata/repomd.xml
65+
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/openEuler-22.03-LTS-SP4/source/repodata/repomd.xml
6366
enabled=0
6467
gpgcheck=1
6568
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker
@@ -73,7 +76,7 @@ gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-E
7376
7477
[update-source]
7578
name=update-source
76-
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/$releasever/update/source/repodata/repomd.xml
79+
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/openEuler-22.03-LTS-SP4/update/source/repodata/repomd.xml
7780
enabled=0
7881
gpgcheck=1
7982
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker

mock-core-configs/etc/mock/templates/openeuler-24.03.tpl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
config_opts['chroot_setup_cmd'] = 'install tar gcc-c++ openEuler-rpm-config openEuler-release which xz sed make bzip2 gzip gcc coreutils unzip diffutils cpio bash gawk rpm-build info patch util-linux findutils grep'
22
config_opts['dist'] = 'oe2403' # only useful for --resultdir variable subst
3-
config_opts['releasever'] = '24.03LTS_SP3'
3+
config_opts['releasever'] = '24.03LTS_SP4'
44
config_opts['package_manager'] = 'dnf'
5-
config_opts['description'] = 'openEuler 24.03 LTS SP3'
5+
config_opts['description'] = 'openEuler 24.03 LTS SP4'
66
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
7-
config_opts['bootstrap_image'] = 'docker.io/openeuler/openeuler:24.03-lts-sp3'
7+
config_opts['bootstrap_image'] = 'docker.io/openeuler/openeuler:24.03-lts-sp4'
88

99
config_opts['dnf.conf'] = """
1010
[main]
@@ -57,9 +57,12 @@ enabled=0
5757
gpgcheck=1
5858
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker
5959
60+
# metalink path= form does NOT translate $releasever to the full mirror
61+
# directory name (only the repo= form does), so source repos must use the
62+
# literal openEuler-<version> directory.
6063
[source]
6164
name=source
62-
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/$releasever/source/repodata/repomd.xml
65+
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/openEuler-24.03-LTS-SP4/source/repodata/repomd.xml
6366
enabled=0
6467
gpgcheck=1
6568
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker
@@ -73,7 +76,7 @@ gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-E
7376
7477
[update-source]
7578
name=update-source
76-
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/$releasever/update/source/repodata/repomd.xml
79+
metalink=https://mirrors.openeuler.org/metalink?path=openeuler/openEuler-24.03-LTS-SP4/update/source/repodata/repomd.xml
7780
enabled=0
7881
gpgcheck=1
7982
gpgkey=file:///usr/share/distribution-gpg-keys/openeuler/RPM-GPG-KEY-openEuler-EulerMaker
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
"""
2+
Tests for the openEuler chroot configs shipped in mock-core-configs.
3+
4+
The openEuler metalink service exposes source repos only via the
5+
``path=openeuler/<dir>/...`` form. Unlike the ``repo=`` form, ``path=`` does
6+
*not* translate the ``$releasever`` dnf variable into the full mirror
7+
directory name (e.g. ``24.03LTS_SP4`` -> ``openEuler-24.03-LTS-SP4``), so a
8+
source metalink that relies on ``$releasever`` resolves to a non-existent path
9+
and silently breaks ``mock --sources``.
10+
11+
These tests load the real shipped configs (no network) and assert that no
12+
``path=`` metalink depends on ``$releasever``.
13+
"""
14+
15+
import os
16+
17+
import pytest
18+
from mockbuild.config import simple_load_config
19+
20+
REPO_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
21+
CONFIG_DIR = os.path.join(REPO_ROOT, "mock-core-configs", "etc", "mock")
22+
23+
OPENEULER_CHROOTS = [
24+
f[:-len(".cfg")] for f in os.listdir(CONFIG_DIR)
25+
if f.startswith("openeuler-") and f.endswith(".cfg")
26+
]
27+
28+
29+
@pytest.mark.parametrize("chroot", [pytest.param(c, id=c) for c in OPENEULER_CHROOTS])
30+
def test_path_metalink_does_not_use_releasever(chroot):
31+
"""``path=`` metalinks must not depend on ``$releasever``.
32+
33+
The metalink ``path=`` form is taken literally and is never translated,
34+
so a ``$releasever`` in it would point at a path that does not exist.
35+
"""
36+
dnf_conf = simple_load_config(chroot, CONFIG_DIR)["dnf.conf"]
37+
for line in dnf_conf.splitlines():
38+
stripped = line.strip()
39+
if not stripped.startswith("metalink=") or "path=" not in stripped:
40+
continue
41+
assert "$releasever" not in line, (
42+
f"{chroot}: source metalink uses the untranslated $releasever in "
43+
f"a path= form, which the metalink service does not translate:\n"
44+
f" {line.strip()}"
45+
)

releng/release-notes-next/openeuler-2403-sp3.config

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Update openEuler 24.03 LTS chroot to SP4 and fix the source and
2+
update-source metalink repositories across all openEuler templates
3+
(20.03, 22.03, 24.03): the `path=` metalink form does not translate the
4+
`$releasever` dnf variable into the full mirror directory name, so it
5+
resolved to a non-existent path and silently broke `mock --sources`.

0 commit comments

Comments
 (0)