Merge pull request #1038 from SUSE/metadata_no_rpm
Fixed creation of image metadata files
This commit is contained in:
commit
d679e12cc7
@ -38,6 +38,7 @@ from kiwi.path import Path
|
||||
from kiwi.archive.tar import ArchiveTar
|
||||
from kiwi.utils.compress import Compress
|
||||
from kiwi.utils.command_capabilities import CommandCapabilities
|
||||
from kiwi.utils.rpm_database import RpmDataBase
|
||||
|
||||
from kiwi.exceptions import (
|
||||
KiwiImportDescriptionError,
|
||||
@ -959,11 +960,9 @@ class SystemSetup(object):
|
||||
|
||||
def _export_rpm_package_list(self, filename):
|
||||
log.info('Export rpm packages metadata')
|
||||
dbpath = self._get_rpm_database_location()
|
||||
if dbpath:
|
||||
dbpath_option = ['--dbpath', dbpath]
|
||||
else:
|
||||
dbpath_option = []
|
||||
dbpath_option = [
|
||||
'--dbpath', self._get_rpm_database_location()
|
||||
]
|
||||
query_call = Command.run(
|
||||
[
|
||||
'rpm', '--root', self.root_dir, '-qa', '--qf',
|
||||
@ -976,7 +975,9 @@ class SystemSetup(object):
|
||||
] + dbpath_option
|
||||
)
|
||||
with open(filename, 'w') as packages:
|
||||
packages.write(os.linesep.join(sorted(query_call.output.splitlines())))
|
||||
packages.write(
|
||||
os.linesep.join(sorted(query_call.output.splitlines()))
|
||||
)
|
||||
packages.write(os.linesep)
|
||||
|
||||
def _export_deb_package_list(self, filename):
|
||||
@ -994,16 +995,16 @@ class SystemSetup(object):
|
||||
]
|
||||
)
|
||||
with open(filename, 'w') as packages:
|
||||
packages.write(os.linesep.join(sorted(query_call.output.splitlines())))
|
||||
packages.write(
|
||||
os.linesep.join(sorted(query_call.output.splitlines()))
|
||||
)
|
||||
packages.write(os.linesep)
|
||||
|
||||
def _export_rpm_package_verification(self, filename):
|
||||
log.info('Export rpm verification metadata')
|
||||
dbpath = self._get_rpm_database_location()
|
||||
if dbpath:
|
||||
dbpath_option = ['--dbpath', dbpath]
|
||||
else:
|
||||
dbpath_option = []
|
||||
dbpath_option = [
|
||||
'--dbpath', self._get_rpm_database_location()
|
||||
]
|
||||
query_call = Command.run(
|
||||
command=['rpm', '--root', self.root_dir, '-Va'] + dbpath_option,
|
||||
raise_on_error=False
|
||||
@ -1024,9 +1025,7 @@ class SystemSetup(object):
|
||||
verified.write(query_call.output)
|
||||
|
||||
def _get_rpm_database_location(self):
|
||||
try:
|
||||
return Command.run(
|
||||
['chroot', self.root_dir, 'rpm', '-E', '%_dbpath']
|
||||
).output.rstrip('\r\n')
|
||||
except Exception:
|
||||
return None
|
||||
rpmdb = RpmDataBase(self.root_dir)
|
||||
if rpmdb.has_rpm():
|
||||
return rpmdb.rpmdb_image.expand_query('%_dbpath')
|
||||
return rpmdb.rpmdb_host.expand_query('%_dbpath')
|
||||
|
||||
@ -12,8 +12,7 @@ from kiwi.xml_description import XMLDescription
|
||||
from kiwi.xml_state import XMLState
|
||||
from kiwi.exceptions import (
|
||||
KiwiScriptFailed,
|
||||
KiwiImportDescriptionError,
|
||||
KiwiCommandError
|
||||
KiwiImportDescriptionError
|
||||
)
|
||||
from kiwi.defaults import Defaults
|
||||
|
||||
@ -619,7 +618,8 @@ class TestSystemSetup(object):
|
||||
)
|
||||
mock_command.assert_called_once_with([
|
||||
'bash', '-c',
|
||||
'cd root_dir && bash --norc /root_dir/image/edit_boot_config.sh ext4 1'
|
||||
'cd root_dir && bash --norc /root_dir/image/edit_boot_config.sh '
|
||||
'ext4 1'
|
||||
])
|
||||
|
||||
@patch('kiwi.command.Command.call')
|
||||
@ -644,7 +644,8 @@ class TestSystemSetup(object):
|
||||
)
|
||||
mock_command.assert_called_once_with([
|
||||
'bash', '-c',
|
||||
'cd root_dir && bash --norc /root_dir/image/edit_boot_install.sh my_image.raw /dev/mapper/loop0p1'
|
||||
'cd root_dir && bash --norc /root_dir/image/edit_boot_install.sh '
|
||||
'my_image.raw /dev/mapper/loop0p1'
|
||||
])
|
||||
|
||||
@raises(KiwiScriptFailed)
|
||||
@ -822,26 +823,44 @@ class TestSystemSetup(object):
|
||||
)
|
||||
|
||||
@patch('kiwi.system.setup.Command.run')
|
||||
@patch('kiwi.system.setup.RpmDataBase')
|
||||
@patch_open
|
||||
def test_export_package_list_rpm(
|
||||
self, mock_open, mock_command
|
||||
self, mock_open, mock_RpmDataBase, mock_command
|
||||
):
|
||||
rpmdb = mock.Mock()
|
||||
rpmdb.rpmdb_image.expand_query.return_value = 'image_dbpath'
|
||||
rpmdb.rpmdb_host.expand_query.return_value = 'host_dbpath'
|
||||
rpmdb.has_rpm.return_value = True
|
||||
mock_RpmDataBase.return_value = rpmdb
|
||||
command = mock.Mock()
|
||||
command.output = 'packages_data'
|
||||
mock_command.return_value = command
|
||||
result = self.setup.export_package_list('target_dir')
|
||||
assert result == 'target_dir/some-image.x86_64-1.2.3.packages'
|
||||
mock_command.assert_has_calls([
|
||||
call(['chroot', 'root_dir', 'rpm', '-E', '%_dbpath']),
|
||||
call([
|
||||
mock_command.assert_called_once_with(
|
||||
[
|
||||
'rpm', '--root', 'root_dir', '-qa', '--qf',
|
||||
'%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|%{DISTURL}|%{LICENSE}\\n',
|
||||
'--dbpath', 'packages_data'
|
||||
])
|
||||
])
|
||||
'%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|'
|
||||
'%{DISTURL}|%{LICENSE}\\n',
|
||||
'--dbpath', 'image_dbpath'
|
||||
]
|
||||
)
|
||||
mock_open.assert_called_once_with(
|
||||
'target_dir/some-image.x86_64-1.2.3.packages', 'w'
|
||||
)
|
||||
rpmdb.has_rpm.return_value = False
|
||||
mock_command.reset_mock()
|
||||
result = self.setup.export_package_list('target_dir')
|
||||
assert result == 'target_dir/some-image.x86_64-1.2.3.packages'
|
||||
mock_command.assert_called_once_with(
|
||||
[
|
||||
'rpm', '--root', 'root_dir', '-qa', '--qf',
|
||||
'%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|'
|
||||
'%{DISTURL}|%{LICENSE}\\n',
|
||||
'--dbpath', 'host_dbpath'
|
||||
]
|
||||
)
|
||||
|
||||
@patch_open
|
||||
def test_setup_machine_id(self, mock_open):
|
||||
@ -865,34 +884,6 @@ class TestSystemSetup(object):
|
||||
self.setup.setup_permissions()
|
||||
mock_log_warn.assert_called_once()
|
||||
|
||||
@patch('kiwi.system.setup.Command.run')
|
||||
@patch_open
|
||||
def test_export_package_list_rpm_no_dbpath(
|
||||
self, mock_open, mock_command
|
||||
):
|
||||
cmd = mock.Mock()
|
||||
cmd.output = 'packages_data'
|
||||
|
||||
def dbpath_check_fails(command):
|
||||
if '%_dbpath' in command:
|
||||
raise KiwiCommandError()
|
||||
else:
|
||||
return cmd
|
||||
|
||||
mock_command.side_effect = dbpath_check_fails
|
||||
result = self.setup.export_package_list('target_dir')
|
||||
assert result == 'target_dir/some-image.x86_64-1.2.3.packages'
|
||||
mock_command.assert_has_calls([
|
||||
call(['chroot', 'root_dir', 'rpm', '-E', '%_dbpath']),
|
||||
call([
|
||||
'rpm', '--root', 'root_dir', '-qa', '--qf',
|
||||
'%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|%{DISTURL}|%{LICENSE}\\n'
|
||||
])
|
||||
])
|
||||
mock_open.assert_called_once_with(
|
||||
'target_dir/some-image.x86_64-1.2.3.packages', 'w'
|
||||
)
|
||||
|
||||
@patch('kiwi.system.setup.Command.run')
|
||||
@patch_open
|
||||
def test_export_package_list_dpkg(
|
||||
@ -915,52 +906,39 @@ class TestSystemSetup(object):
|
||||
)
|
||||
|
||||
@patch('kiwi.system.setup.Command.run')
|
||||
@patch('kiwi.system.setup.RpmDataBase')
|
||||
@patch_open
|
||||
def test_export_package_verification(
|
||||
self, mock_open, mock_command
|
||||
self, mock_open, mock_RpmDataBase, mock_command
|
||||
):
|
||||
rpmdb = mock.Mock()
|
||||
rpmdb.rpmdb_image.expand_query.return_value = 'image_dbpath'
|
||||
rpmdb.rpmdb_host.expand_query.return_value = 'host_dbpath'
|
||||
rpmdb.has_rpm.return_value = True
|
||||
mock_RpmDataBase.return_value = rpmdb
|
||||
command = mock.Mock()
|
||||
command.output = 'verification_data'
|
||||
mock_command.return_value = command
|
||||
result = self.setup.export_package_verification('target_dir')
|
||||
assert result == 'target_dir/some-image.x86_64-1.2.3.verified'
|
||||
mock_command.assert_has_calls([
|
||||
call(['chroot', 'root_dir', 'rpm', '-E', '%_dbpath']),
|
||||
call(command=[
|
||||
mock_command.assert_called_once_with(
|
||||
command=[
|
||||
'rpm', '--root', 'root_dir', '-Va',
|
||||
'--dbpath', 'verification_data'
|
||||
], raise_on_error=False)
|
||||
])
|
||||
'--dbpath', 'image_dbpath'
|
||||
], raise_on_error=False
|
||||
)
|
||||
mock_open.assert_called_once_with(
|
||||
'target_dir/some-image.x86_64-1.2.3.verified', 'w'
|
||||
)
|
||||
|
||||
@patch('kiwi.system.setup.Command.run')
|
||||
@patch_open
|
||||
def test_export_package_verification_no_dbpath(
|
||||
self, mock_open, mock_command
|
||||
):
|
||||
cmd = mock.Mock()
|
||||
cmd.output = 'verification_data'
|
||||
|
||||
def dbpath_check_fails(command, raise_on_error):
|
||||
if '%_dbpath' in command:
|
||||
raise KiwiCommandError()
|
||||
else:
|
||||
return cmd
|
||||
|
||||
mock_command.side_effect = dbpath_check_fails
|
||||
rpmdb.has_rpm.return_value = False
|
||||
mock_command.reset_mock()
|
||||
result = self.setup.export_package_verification('target_dir')
|
||||
assert result == 'target_dir/some-image.x86_64-1.2.3.verified'
|
||||
mock_command.assert_has_calls([
|
||||
call(['chroot', 'root_dir', 'rpm', '-E', '%_dbpath']),
|
||||
call(
|
||||
command=['rpm', '--root', 'root_dir', '-Va'],
|
||||
raise_on_error=False
|
||||
)
|
||||
])
|
||||
mock_open.assert_called_once_with(
|
||||
'target_dir/some-image.x86_64-1.2.3.verified', 'w'
|
||||
mock_command.assert_called_once_with(
|
||||
command=[
|
||||
'rpm', '--root', 'root_dir', '-Va',
|
||||
'--dbpath', 'host_dbpath'
|
||||
], raise_on_error=False
|
||||
)
|
||||
|
||||
@patch('kiwi.system.setup.Command.run')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user