PR#1677: Fix devel module dependencies

Merges #1677
https://pagure.io/fm-orchestrator/pull-request/1677

Fixes #1676
Fix devel module dependencies
https://pagure.io/fm-orchestrator/issue/1676
This commit is contained in:
Mike McLean
2021-02-19 12:47:05 -05:00
5 changed files with 25 additions and 17 deletions

View File

@@ -687,11 +687,12 @@ class KojiContentGenerator(object):
mmd = self._sanitize_mmd(self.module.mmd())
if self.devel:
# Set the new name
mmd = mmd.copy(mmd.get_module_name() + "-devel")
orig_name = mmd.get_module_name()
mmd = mmd.copy(orig_name + "-devel")
# Depend on the actual module
for dep in mmd.get_dependencies():
dep.add_runtime_stream(mmd.get_module_name(), mmd.get_stream_name())
dep.add_runtime_stream(orig_name, mmd.get_stream_name())
# Delete API and profiles
for rpm in mmd.get_rpm_api():

View File

@@ -24,6 +24,11 @@ data:
A module for the tests of module build service
# Module and content licenses in the Fedora license identifier
# format, required
dependencies:
buildrequires:
platform: f33
requires:
platform: f33
license:
# Module license, required
# This list covers licenses used for the module metadata, SPEC

View File

@@ -193,20 +193,20 @@ class TestBuild:
""" Test preparation of directory with output files """
dir_path = self.cg._prepare_file_directory()
with io.open(path.join(dir_path, "modulemd.txt"), encoding="utf-8") as mmd:
assert len(mmd.read()) == 1160
assert len(mmd.read()) == 1271
def test_prepare_file_directory_per_arch_mmds(self):
""" Test preparation of directory with output files """
self.cg.arches = ["x86_64", "i686"]
dir_path = self.cg._prepare_file_directory()
with io.open(path.join(dir_path, "modulemd.txt"), encoding="utf-8") as mmd:
assert len(mmd.read()) == 1160
assert len(mmd.read()) == 1271
with io.open(path.join(dir_path, "modulemd.x86_64.txt"), encoding="utf-8") as mmd:
assert len(mmd.read()) == 256
assert len(mmd.read()) == 349
with io.open(path.join(dir_path, "modulemd.i686.txt"), encoding="utf-8") as mmd:
assert len(mmd.read()) == 254
assert len(mmd.read()) == 347
@patch("koji.ClientSession")
def test_tag_cg_build(self, ClientSession):
@@ -275,12 +275,12 @@ class TestBuild:
assert ret == {
"arch": "x86_64",
"buildroot_id": 1,
"checksum": "aed2e2774c82cbc19fe9555f70cafd79",
"checksum": "16c5bd74a1d8564293e3b73188acaae6",
"checksum_type": "md5",
"components": [],
"extra": {"typeinfo": {"module": {}}},
"filename": "modulemd.x86_64.txt",
"filesize": 1162,
"filesize": 1273,
"type": "file",
}
@@ -318,7 +318,7 @@ class TestBuild:
assert ret == {
"arch": "x86_64",
"buildroot_id": 1,
"checksum": "5fbad2ef9b6c5496bdce4368ca3182d6",
"checksum": "580e1f880e0872bed58591c55eeb6e7e",
"checksum_type": "md5",
"components": [
{
@@ -333,7 +333,7 @@ class TestBuild:
],
"extra": {"typeinfo": {"module": {}}},
"filename": "modulemd.x86_64.txt",
"filesize": 316,
"filesize": 409,
"type": "file",
}
@@ -958,7 +958,9 @@ class TestBuild:
assert new_mmd.get_module_name().endswith("-devel")
# Check that -devel requires non-devel.
for dep in new_mmd.get_dependencies():
dependencies = new_mmd.get_dependencies()
assert dependencies # test data must have deps for this to be valid
for dep in dependencies:
requires = []
for name in dep.get_runtime_modules():
for stream in dep.get_runtime_streams(name):

View File

@@ -625,8 +625,8 @@
}
],
"arch": "noarch",
"filesize": 1162,
"checksum": "aed2e2774c82cbc19fe9555f70cafd79",
"filesize": 1273,
"checksum": "16c5bd74a1d8564293e3b73188acaae6",
"checksum_type": "md5",
"type": "file",
"extra": {
@@ -652,7 +652,7 @@
"version": "2",
"module_build_service_id": 2,
"content_koji_tag": "module-nginx-1.2",
"modulemd_str": "# Document type identifier\ndocument: modulemd\n# Module metadata format version\nversion: 1\ndata:\n # Module name, optional\n # Typically filled in by the buildsystem, using the VCS repository\n # name as the name of the module.\n name: nginx\n # Module update stream, optional\n # Typically filled in by the buildsystem, using the VCS branch name\n # as the name of the stream.\n stream: 1\n # Module version, integer, optional, cannot be negative\n # Typically filled in by the buildsystem, using the VCS commit\n # timestamp. Module version defines upgrade path for the particular\n # update stream.\n version: 2\n context: '00000000'\n # A short summary describing the module, required\n summary: An example nginx module\n # A verbose description of the module, required\n description: >\n A module for the tests of module build service \n # Module and content licenses in the Fedora license identifier\n # format, required\n license:\n # Module license, required\n # This list covers licenses used for the module metadata, SPEC\n # files or extra patches\n module:\n - MIT\n"
"modulemd_str": "# Document type identifier\ndocument: modulemd\n# Module metadata format version\nversion: 1\ndata:\n # Module name, optional\n # Typically filled in by the buildsystem, using the VCS repository\n # name as the name of the module.\n name: nginx\n # Module update stream, optional\n # Typically filled in by the buildsystem, using the VCS branch name\n # as the name of the stream.\n stream: 1\n # Module version, integer, optional, cannot be negative\n # Typically filled in by the buildsystem, using the VCS commit\n # timestamp. Module version defines upgrade path for the particular\n # update stream.\n version: 2\n context: '00000000'\n # A short summary describing the module, required\n summary: An example nginx module\n # A verbose description of the module, required\n description: >\n A module for the tests of module build service \n # Module and content licenses in the Fedora license identifier\n # format, required\n dependencies:\n buildrequires:\n platform: f33\n requires:\n platform: f33\n license:\n # Module license, required\n # This list covers licenses used for the module metadata, SPEC\n # files or extra patches\n module:\n - MIT\n"
}
}
},

View File

@@ -625,8 +625,8 @@
}
],
"arch": "noarch",
"filesize": 1162,
"checksum": "aed2e2774c82cbc19fe9555f70cafd79",
"filesize": 1273,
"checksum": "16c5bd74a1d8564293e3b73188acaae6",
"checksum_type": "md5",
"type": "file",
"extra": {
@@ -661,7 +661,7 @@
"version": "2",
"module_build_service_id": 2,
"content_koji_tag": "module-nginx-1.2",
"modulemd_str": "# Document type identifier\ndocument: modulemd\n# Module metadata format version\nversion: 1\ndata:\n # Module name, optional\n # Typically filled in by the buildsystem, using the VCS repository\n # name as the name of the module.\n name: nginx\n # Module update stream, optional\n # Typically filled in by the buildsystem, using the VCS branch name\n # as the name of the stream.\n stream: 1\n # Module version, integer, optional, cannot be negative\n # Typically filled in by the buildsystem, using the VCS commit\n # timestamp. Module version defines upgrade path for the particular\n # update stream.\n version: 2\n context: '00000000'\n # A short summary describing the module, required\n summary: An example nginx module\n # A verbose description of the module, required\n description: >\n A module for the tests of module build service \n # Module and content licenses in the Fedora license identifier\n # format, required\n license:\n # Module license, required\n # This list covers licenses used for the module metadata, SPEC\n # files or extra patches\n module:\n - MIT\n"
"modulemd_str": "# Document type identifier\ndocument: modulemd\n# Module metadata format version\nversion: 1\ndata:\n # Module name, optional\n # Typically filled in by the buildsystem, using the VCS repository\n # name as the name of the module.\n name: nginx\n # Module update stream, optional\n # Typically filled in by the buildsystem, using the VCS branch name\n # as the name of the stream.\n stream: 1\n # Module version, integer, optional, cannot be negative\n # Typically filled in by the buildsystem, using the VCS commit\n # timestamp. Module version defines upgrade path for the particular\n # update stream.\n version: 2\n context: '00000000'\n # A short summary describing the module, required\n summary: An example nginx module\n # A verbose description of the module, required\n description: >\n A module for the tests of module build service \n # Module and content licenses in the Fedora license identifier\n # format, required\n dependencies:\n buildrequires:\n platform: f33\n requires:\n platform: f33\n license:\n # Module license, required\n # This list covers licenses used for the module metadata, SPEC\n # files or extra patches\n module:\n - MIT\n"
}
}
},