Skip to content

Commit c7d37f8

Browse files
authored
Merge pull request #2867 from AdamWill/solver-fixes
Log metalink URI when resolve fails, handle zstd-compressed repo metadata
2 parents 6f350bf + 894459e commit c7d37f8

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

kiwi/solver/repository/base.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,9 +311,10 @@ def _create_solvables(self, metadata_dir, tool):
311311
if tool == 'deb2solv':
312312
tool_options.append('-r')
313313
for source in glob.iglob('/'.join([metadata_dir, '*'])):
314-
bash_command = [
315-
'gzip', '-cd', '--force', source, '|', tool
316-
] + tool_options + [
314+
bash_command = ['gzip', '-cd', '--force']
315+
if source.endswith('.zst'):
316+
bash_command = ['zstd', '-dcf']
317+
bash_command += [source, '|', tool] + tool_options + [
317318
'>', self._get_random_solvable_name()
318319
]
319320
Command.run(['bash', '-c', ' '.join(bash_command)])

kiwi/system/uri.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ def _resolve_metalink_uri(self, uri: str) -> str:
362362
start_preference = preference
363363
except Exception as issue:
364364
raise KiwiUriOpenError(
365-
f'Failed to resolve metalink URI: {issue}'
365+
f'Failed to resolve metalink URI {uri}: {issue}'
366366
)
367367
selected_repo_source = selected_repo_source.replace(
368368
'repodata/repomd.xml', ''

test/unit/solver/repository/base_test.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,22 +299,32 @@ def test__create_solvables_rpms2_solv(
299299
def test__create_solvables_rpmmd2_solv(
300300
self, mock_glob, mock_command, mock_rand, mock_Temporary
301301
):
302-
mock_glob.return_value = ['some-solv-data-file']
302+
mock_glob.return_value = ['some-solv-data-file', 'some-solv-data-file.zst']
303303
mock_rand.return_value = 0xfe
304304
self.solver.repository_metadata_dirs = ['metadata_dir.XXXX']
305305
mock_Temporary.return_value.new_dir.return_value.name = 'solv_dir.XX'
306306
self.solver._create_solvables('meta_dir.XX', 'rpmmd2solv')
307307
mock_glob.assert_called_once_with('meta_dir.XX/*')
308-
mock_command.assert_called_once_with(
309-
[
310-
'bash', '-c',
308+
assert mock_command.mock_calls == [
309+
call([
310+
'bash',
311+
'-c',
311312
' '.join([
312313
'gzip -cd --force some-solv-data-file',
313314
'|',
314315
'rpmmd2solv > solv_dir.XX/solvable-fefefefe'
315316
])
316-
]
317-
)
317+
]),
318+
call([
319+
'bash',
320+
'-c',
321+
' '.join([
322+
'zstd -dcf some-solv-data-file.zst',
323+
'|',
324+
'rpmmd2solv > solv_dir.XX/solvable-fefefefe'
325+
])
326+
])
327+
]
318328

319329
@patch('kiwi.solver.repository.base.Temporary')
320330
@patch('kiwi.solver.repository.base.random.randrange')

0 commit comments

Comments
 (0)