diff --git a/9480ca3266d69c7cacb34d8488a846352b938d16.patch b/9480ca3266d69c7cacb34d8488a846352b938d16.patch
new file mode 100644
index 0000000000000000000000000000000000000000..4f2e018c54f4f3525fd9ee04b974691f5fe9e3bf
--- /dev/null
+++ b/9480ca3266d69c7cacb34d8488a846352b938d16.patch
@@ -0,0 +1,647 @@
+diff --git a/kiwi/builder/disk.py b/kiwi/builder/disk.py
+index c274679fb5..98c171b1c0 100644
+--- a/kiwi/builder/disk.py
++++ b/kiwi/builder/disk.py
+@@ -573,7 +573,7 @@ def append_unpartitioned_space(self):
+ firmware = FirmWare(self.xml_state)
+ loop_provider = LoopDevice(disk_format.diskname)
+ loop_provider.create(overwrite=False)
+- partitioner = Partitioner(
++ partitioner = Partitioner.new(
+ firmware.get_partition_table_type(), loop_provider
+ )
+ partitioner.resize_table()
+diff --git a/kiwi/partitioner/__init__.py b/kiwi/partitioner/__init__.py
+index 0e536c500c..b06cf9af5d 100644
+--- a/kiwi/partitioner/__init__.py
++++ b/kiwi/partitioner/__init__.py
+@@ -15,22 +15,20 @@
+ # You should have received a copy of the GNU General Public License
+ # along with kiwi. If not, see
+ #
++import importlib
++from abc import (
++ ABCMeta,
++ abstractmethod
++)
+ import logging
+
+ # project
+-from kiwi.defaults import Defaults
+-from kiwi.partitioner.gpt import PartitionerGpt
+-from kiwi.partitioner.msdos import PartitionerMsDos
+-from kiwi.partitioner.dasd import PartitionerDasd
+-
+-from kiwi.exceptions import (
+- KiwiPartitionerSetupError
+-)
++from kiwi.exceptions import KiwiPartitionerSetupError
+
+ log = logging.getLogger('kiwi')
+
+
+-class Partitioner:
++class Partitioner(metaclass=ABCMeta):
+ """
+ **Partitioner factory**
+
+@@ -38,42 +36,36 @@ class Partitioner:
+ :param object storage_provider: Instance of class based on DeviceProvider
+ :param int start_sector: sector number
+ """
+- def __new__(self, table_type, storage_provider, start_sector=None):
+- host_architecture = Defaults.get_platform_name()
+- if host_architecture == 'x86_64':
+- if table_type == 'gpt':
+- return PartitionerGpt(storage_provider, start_sector)
+- elif table_type == 'msdos':
+- return PartitionerMsDos(storage_provider, start_sector)
+-
+- elif host_architecture == 'ix86':
+- if table_type == 'msdos':
+- return PartitionerMsDos(storage_provider, start_sector)
+-
+- elif 'ppc64' in host_architecture:
+- if table_type == 'gpt':
+- return PartitionerGpt(storage_provider, start_sector)
+- elif table_type == 'msdos':
+- return PartitionerMsDos(storage_provider, start_sector)
+-
+- elif 's390' in host_architecture:
+- if table_type == 'dasd':
+- if start_sector:
+- log.warning(
+- 'disk_start_sector value is ignored '
+- 'for dasd partitions'
+- )
+- return PartitionerDasd(storage_provider)
+- elif table_type == 'msdos':
+- return PartitionerMsDos(storage_provider, start_sector)
+-
+- elif 'arm' in host_architecture or host_architecture == 'aarch64':
+- if table_type == 'gpt':
+- return PartitionerGpt(storage_provider, start_sector)
+- elif table_type == 'msdos':
+- return PartitionerMsDos(storage_provider, start_sector)
++ @abstractmethod
++ def __init__(self) -> None:
++ return None # pragma: no cover
+
+- raise KiwiPartitionerSetupError(
+- 'Support for partitioner on %s architecture not implemented' %
+- host_architecture
+- )
++ @staticmethod
++ def new(
++ table_type: str, storage_provider: object,
++ start_sector: int=None # noqa: E252
++ ):
++ name_map = {
++ 'msdos': 'MsDos',
++ 'gpt': 'Gpt',
++ 'dasd': 'Dasd'
++ }
++ try:
++ partitioner = importlib.import_module(
++ 'kiwi.partitioner.{0}'.format(table_type)
++ )
++ module_name = 'Partitioner{0}'.format(name_map[table_type])
++ if table_type == 'dasd' and start_sector:
++ log.warning(
++ 'disk start_sector value is ignored for dasd partitions'
++ )
++ start_sector = None
++ return partitioner.__dict__[module_name](
++ storage_provider, start_sector
++ )
++ except Exception as issue:
++ raise KiwiPartitionerSetupError(
++ 'Support for {0} partitioner not implemented: {1}'.format(
++ table_type, issue
++ )
++ )
+diff --git a/kiwi/repository/__init__.py b/kiwi/repository/__init__.py
+index bdff94f2fc..0fcd6692e9 100644
+--- a/kiwi/repository/__init__.py
++++ b/kiwi/repository/__init__.py
+@@ -15,18 +15,18 @@
+ # You should have received a copy of the GNU General Public License
+ # along with kiwi. If not, see
+ #
+-# project
+-from kiwi.repository.zypper import RepositoryZypper
+-from kiwi.repository.apt import RepositoryApt
+-from kiwi.repository.dnf import RepositoryDnf
+-from kiwi.repository.pacman import RepositoryPacman
+-
+-from kiwi.exceptions import (
+- KiwiRepositorySetupError
++import importlib
++from typing import List
++from abc import (
++ ABCMeta,
++ abstractmethod
+ )
+
++# project
++from kiwi.exceptions import KiwiRepositorySetupError
++
+
+-class Repository:
++class Repository(metaclass=ABCMeta):
+ """
+ **Repository factory**
+
+@@ -37,17 +37,34 @@ class Repository:
+
+ :raises KiwiRepositorySetupError: if package_manager is not supported
+ """
+- def __new__(self, root_bind, package_manager, custom_args=None):
+- if package_manager == 'zypper':
+- return RepositoryZypper(root_bind, custom_args)
+- elif package_manager == 'dnf' or package_manager == 'yum' or package_manager == 'microdnf':
+- return RepositoryDnf(root_bind, custom_args)
+- elif package_manager == 'apt-get':
+- return RepositoryApt(root_bind, custom_args)
+- elif package_manager == 'pacman':
+- return RepositoryPacman(root_bind, custom_args)
+- else:
++ @abstractmethod
++ def __init__(self) -> None:
++ return None # pragma: no cover
++
++ @staticmethod
++ def new(
++ root_bind: object, package_manager: str,
++ custom_args: List=None # noqa: E252
++ ):
++ name_map = {
++ 'zypper': ['zypper', 'Zypper'],
++ 'dnf': ['dnf', 'Dnf'],
++ 'yum': ['dnf', 'Dnf'],
++ 'microdnf': ['dnf', 'Dnf'],
++ 'apt-get': ['apt', 'Apt'],
++ 'pacman': ['pacman', 'Pacman']
++ }
++ try:
++ repository = importlib.import_module(
++ 'kiwi.repository.{0}'.format(name_map[package_manager][0])
++ )
++ module_name = 'Repository{0}'.format(name_map[package_manager][1])
++ return repository.__dict__[module_name](
++ root_bind, custom_args
++ )
++ except Exception as issue:
+ raise KiwiRepositorySetupError(
+- 'Support for %s repository manager not implemented' %
+- package_manager
++ 'Support for {0} repository not implemented: {1}'.format(
++ package_manager, issue
++ )
+ )
+diff --git a/kiwi/storage/disk.py b/kiwi/storage/disk.py
+index ad463a3dab..549db27880 100644
+--- a/kiwi/storage/disk.py
++++ b/kiwi/storage/disk.py
+@@ -48,7 +48,7 @@ def __init__(self, table_type, storage_provider, start_sector=None):
+ self.partition_id_map = {}
+ self.is_mapped = False
+
+- self.partitioner = Partitioner(
++ self.partitioner = Partitioner.new(
+ table_type, storage_provider, start_sector
+ )
+
+diff --git a/kiwi/system/prepare.py b/kiwi/system/prepare.py
+index fab99520d8..710f7deb8c 100644
+--- a/kiwi/system/prepare.py
++++ b/kiwi/system/prepare.py
+@@ -122,7 +122,7 @@ def setup_repositories(self, clear_cache=False, signing_keys=None):
+ repository_options.append(
+ '_install_langs%{0}'.format(':'.join(rpm_locale_list))
+ )
+- repo = Repository(
++ repo = Repository.new(
+ self.root_bind, package_manager, repository_options
+ )
+ repo.setup_package_database_configuration()
+@@ -341,7 +341,7 @@ def pinch_system(self, manager=None, force=False):
+ if manager is None:
+ package_manager = self.xml_state.get_package_manager()
+ manager = PackageManager.new(
+- Repository(self.root_bind, package_manager),
++ Repository.new(self.root_bind, package_manager),
+ package_manager
+ )
+ self.delete_packages(
+@@ -460,7 +460,7 @@ def clean_package_manager_leftovers(self):
+ """
+ package_manager = self.xml_state.get_package_manager()
+ manager = PackageManager.new(
+- Repository(self.root_bind, package_manager),
++ Repository.new(self.root_bind, package_manager),
+ package_manager
+ )
+ manager.clean_leftovers()
+diff --git a/kiwi/system/setup.py b/kiwi/system/setup.py
+index e00530c650..a3e1b07424 100644
+--- a/kiwi/system/setup.py
++++ b/kiwi/system/setup.py
+@@ -137,7 +137,7 @@ def import_repositories_marked_as_imageinclude(self):
+ root = RootInit(
+ root_dir=self.root_dir, allow_existing=True
+ )
+- repo = Repository(
++ repo = Repository.new(
+ RootBind(root), self.xml_state.get_package_manager()
+ )
+ repo.use_default_location()
+diff --git a/kiwi/tasks/image_resize.py b/kiwi/tasks/image_resize.py
+index bddb3b26a7..de113a3960 100644
+--- a/kiwi/tasks/image_resize.py
++++ b/kiwi/tasks/image_resize.py
+@@ -122,7 +122,7 @@ def process(self):
+ firmware = FirmWare(self.xml_state)
+ loop_provider = LoopDevice(image_format.diskname)
+ loop_provider.create(overwrite=False)
+- partitioner = Partitioner(
++ partitioner = Partitioner.new(
+ firmware.get_partition_table_type(), loop_provider
+ )
+ partitioner.resize_table()
+diff --git a/test/unit/builder/disk_test.py b/test/unit/builder/disk_test.py
+index 85d370ec87..e5203be330 100644
+--- a/test/unit/builder/disk_test.py
++++ b/test/unit/builder/disk_test.py
+@@ -870,7 +870,7 @@ def test_create_disk_spare_part_requested(
+ )
+
+ @patch('kiwi.builder.disk.LoopDevice')
+- @patch('kiwi.builder.disk.Partitioner')
++ @patch('kiwi.builder.disk.Partitioner.new')
+ @patch('kiwi.builder.disk.DiskFormat.new')
+ def test_append_unpartitioned_space(
+ self, mock_diskformat, mock_partitioner, mock_loopdevice
+diff --git a/test/unit/partitioner/init_test.py b/test/unit/partitioner/init_test.py
+index 018270e2d5..289ac20cd3 100644
+--- a/test/unit/partitioner/init_test.py
++++ b/test/unit/partitioner/init_test.py
+@@ -16,105 +16,35 @@ class TestPartitioner:
+ def inject_fixtures(self, caplog):
+ self._caplog = caplog
+
+- @patch('platform.machine')
+- def test_partitioner_not_implemented(self, mock_machine):
+- mock_machine.return_value = 'x86_64'
++ def test_partitioner_not_implemented(self):
+ with raises(KiwiPartitionerSetupError):
+- Partitioner('foo', Mock())
++ Partitioner.new('foo', Mock())
+
+- @patch('platform.machine')
+- def test_partitioner_for_arch_not_implemented(self, mock_machine):
+- mock_machine.return_value = 'some-arch'
++ def test_partitioner_for_arch_not_implemented(self):
+ with raises(KiwiPartitionerSetupError):
+- Partitioner('foo', Mock())
++ Partitioner.new('foo', Mock())
+
+- @patch('kiwi.partitioner.PartitionerGpt')
+- @patch('platform.machine')
+- def test_partitioner_x86_64_gpt(self, mock_machine, mock_gpt):
+- mock_machine.return_value = 'x86_64'
++ @patch('kiwi.partitioner.gpt.PartitionerGpt')
++ def test_partitioner_gpt(self, mock_gpt):
+ storage_provider = Mock()
+- Partitioner('gpt', storage_provider)
++ Partitioner.new('gpt', storage_provider)
+ mock_gpt.assert_called_once_with(storage_provider, None)
+
+- @patch('kiwi.partitioner.PartitionerMsDos')
+- @patch('platform.machine')
+- def test_partitioner_x86_64_msdos(self, mock_machine, mock_dos):
+- mock_machine.return_value = 'x86_64'
++ @patch('kiwi.partitioner.msdos.PartitionerMsDos')
++ def test_partitioner_msdos(self, mock_dos):
+ storage_provider = Mock()
+- Partitioner('msdos', storage_provider)
++ Partitioner.new('msdos', storage_provider)
+ mock_dos.assert_called_once_with(storage_provider, None)
+
+- @patch('kiwi.partitioner.PartitionerMsDos')
+- @patch('platform.machine')
+- def test_partitioner_i686_msdos(self, mock_machine, mock_dos):
+- mock_machine.return_value = 'i686'
++ @patch('kiwi.partitioner.dasd.PartitionerDasd')
++ def test_partitioner_dasd(self, mock_dasd):
+ storage_provider = Mock()
+- Partitioner('msdos', storage_provider)
+- mock_dos.assert_called_once_with(storage_provider, None)
+-
+- @patch('kiwi.partitioner.PartitionerMsDos')
+- @patch('platform.machine')
+- def test_partitioner_i586_msdos(self, mock_machine, mock_dos):
+- mock_machine.return_value = 'i586'
+- storage_provider = Mock()
+- Partitioner('msdos', storage_provider)
+- mock_dos.assert_called_once_with(storage_provider, None)
+-
+- @patch('kiwi.partitioner.PartitionerDasd')
+- @patch('platform.machine')
+- def test_partitioner_s390_dasd(self, mock_machine, mock_dasd):
+- mock_machine.return_value = 's390'
+- storage_provider = Mock()
+- Partitioner('dasd', storage_provider)
+- mock_dasd.assert_called_once_with(storage_provider)
++ Partitioner.new('dasd', storage_provider)
++ mock_dasd.assert_called_once_with(storage_provider, None)
+
+- @patch('kiwi.partitioner.PartitionerDasd')
+- @patch('platform.machine')
+- def test_partitioner_s390_dasd_with_custom_start_sector(
+- self, mock_machine, mock_dasd
+- ):
+- mock_machine.return_value = 's390'
++ @patch('kiwi.partitioner.dasd.PartitionerDasd')
++ def test_partitioner_dasd_with_custom_start_sector(self, mock_dasd):
+ storage_provider = Mock()
+ with self._caplog.at_level(logging.WARNING):
+- Partitioner('dasd', storage_provider, 4096)
+- mock_dasd.assert_called_once_with(storage_provider)
+-
+- @patch('kiwi.partitioner.PartitionerMsDos')
+- @patch('platform.machine')
+- def test_partitioner_s390_msdos(self, mock_machine, mock_dos):
+- mock_machine.return_value = 's390'
+- storage_provider = Mock()
+- Partitioner('msdos', storage_provider)
+- mock_dos.assert_called_once_with(storage_provider, None)
+-
+- @patch('kiwi.partitioner.PartitionerMsDos')
+- @patch('platform.machine')
+- def test_partitioner_ppc_msdos(self, mock_machine, mock_dos):
+- mock_machine.return_value = 'ppc64'
+- storage_provider = Mock()
+- Partitioner('msdos', storage_provider)
+- mock_dos.assert_called_once_with(storage_provider, None)
+-
+- @patch('kiwi.partitioner.PartitionerGpt')
+- @patch('platform.machine')
+- def test_partitioner_ppc_gpt(self, mock_machine, mock_gpt):
+- mock_machine.return_value = 'ppc64'
+- storage_provider = Mock()
+- Partitioner('gpt', storage_provider)
+- mock_gpt.assert_called_once_with(storage_provider, None)
+-
+- @patch('kiwi.partitioner.PartitionerGpt')
+- @patch('platform.machine')
+- def test_partitioner_arm_gpt(self, mock_machine, mock_gpt):
+- mock_machine.return_value = 'aarch64'
+- storage_provider = Mock()
+- Partitioner('gpt', storage_provider)
+- mock_gpt.assert_called_once_with(storage_provider, None)
+-
+- @patch('kiwi.partitioner.PartitionerMsDos')
+- @patch('platform.machine')
+- def test_partitioner_arm_msdos(self, mock_machine, mock_dos):
+- mock_machine.return_value = 'armv7l'
+- storage_provider = Mock()
+- Partitioner('msdos', storage_provider)
+- mock_dos.assert_called_once_with(storage_provider, None)
++ Partitioner.new('dasd', storage_provider, 4096)
++ mock_dasd.assert_called_once_with(storage_provider, None)
+diff --git a/test/unit/repository/init_test.py b/test/unit/repository/init_test.py
+index 8299fa0109..36098d13f1 100644
+--- a/test/unit/repository/init_test.py
++++ b/test/unit/repository/init_test.py
+@@ -9,34 +9,40 @@
+ class TestRepository:
+ def test_repository_manager_not_implemented(self):
+ with raises(KiwiRepositorySetupError):
+- Repository('root_bind', 'ms-manager')
++ Repository.new('root_bind', 'ms-manager')
+
+- @patch('kiwi.repository.RepositoryZypper')
++ @patch('kiwi.repository.zypper.RepositoryZypper')
+ def test_repository_zypper(self, mock_manager):
+ root_bind = mock.Mock()
+- Repository(root_bind, 'zypper')
++ Repository.new(root_bind, 'zypper')
+ mock_manager.assert_called_once_with(root_bind, None)
+
+- @patch('kiwi.repository.RepositoryDnf')
++ @patch('kiwi.repository.dnf.RepositoryDnf')
+ def test_repository_dnf(self, mock_manager):
+ root_bind = mock.Mock()
+- Repository(root_bind, 'dnf')
++ Repository.new(root_bind, 'dnf')
+ mock_manager.assert_called_once_with(root_bind, None)
+
+- @patch('kiwi.repository.RepositoryDnf')
++ @patch('kiwi.repository.dnf.RepositoryDnf')
++ def test_repository_microdnf(self, mock_manager):
++ root_bind = mock.Mock()
++ Repository.new(root_bind, 'microdnf')
++ mock_manager.assert_called_once_with(root_bind, None)
++
++ @patch('kiwi.repository.dnf.RepositoryDnf')
+ def test_repository_yum(self, mock_manager):
+ root_bind = mock.Mock()
+- Repository(root_bind, 'yum')
++ Repository.new(root_bind, 'yum')
+ mock_manager.assert_called_once_with(root_bind, None)
+
+- @patch('kiwi.repository.RepositoryApt')
++ @patch('kiwi.repository.apt.RepositoryApt')
+ def test_repository_apt(self, mock_manager):
+ root_bind = mock.Mock()
+- Repository(root_bind, 'apt-get')
++ Repository.new(root_bind, 'apt-get')
+ mock_manager.assert_called_once_with(root_bind, None)
+
+- @patch('kiwi.repository.RepositoryPacman')
++ @patch('kiwi.repository.pacman.RepositoryPacman')
+ def test_repository_pacman(self, mock_manager):
+ root_bind = mock.Mock()
+- Repository(root_bind, 'pacman')
++ Repository.new(root_bind, 'pacman')
+ mock_manager.assert_called_once_with(root_bind, None)
+diff --git a/test/unit/storage/disk_test.py b/test/unit/storage/disk_test.py
+index 9880a056e8..9b75b831b9 100644
+--- a/test/unit/storage/disk_test.py
++++ b/test/unit/storage/disk_test.py
+@@ -14,7 +14,7 @@ class TestDisk:
+ def inject_fixtures(self, caplog):
+ self._caplog = caplog
+
+- @patch('kiwi.storage.disk.Partitioner')
++ @patch('kiwi.storage.disk.Partitioner.new')
+ def setup(self, mock_partitioner):
+ self.tempfile = mock.Mock()
+ self.tempfile.name = 'tempfile'
+diff --git a/test/unit/system/prepare_test.py b/test/unit/system/prepare_test.py
+index 390f49f611..5d04d7ef87 100644
+--- a/test/unit/system/prepare_test.py
++++ b/test/unit/system/prepare_test.py
+@@ -164,7 +164,7 @@ def test_delete_packages_raises(self, mock_poll):
+ with raises(KiwiSystemDeletePackagesFailed):
+ self.system.delete_packages(self.manager, ['package'])
+
+- @patch('kiwi.system.prepare.Repository')
++ @patch('kiwi.system.prepare.Repository.new')
+ @patch('kiwi.system.prepare.Uri')
+ @patch('kiwi.system.prepare.PackageManager')
+ @patch('kiwi.xml_state.XMLState.get_package_manager')
+@@ -235,7 +235,7 @@ def test_setup_repositories(
+ ['key-file-a.asc', 'key-file-b.asc']
+ )
+
+- @patch('kiwi.system.prepare.Repository')
++ @patch('kiwi.system.prepare.Repository.new')
+ @patch('kiwi.system.prepare.Uri')
+ @patch('kiwi.system.prepare.PackageManager')
+ @patch('kiwi.xml_state.XMLState.get_package_manager')
+@@ -376,7 +376,7 @@ def test_pinch_system_raises(self, mock_poll):
+ self.manager.process_delete_requests.assert_called_once_with(False)
+
+ @patch('kiwi.package_manager.zypper.PackageManagerZypper.process_delete_requests')
+- @patch('kiwi.system.prepare.Repository')
++ @patch('kiwi.system.prepare.Repository.new')
+ @patch('kiwi.system.prepare.CommandProcess.poll_show_progress')
+ def test_pinch_system_without_manager(
+ self, mock_poll, mock_repo, mock_requests
+@@ -394,11 +394,11 @@ def test_destructor(self):
+ self.system.__del__()
+ self.system.root_bind.cleanup.assert_called_once_with()
+
+- @patch('kiwi.system.prepare.Repository')
+- @patch('kiwi.system.prepare.PackageManager')
++ @patch('kiwi.system.prepare.Repository.new')
++ @patch('kiwi.system.prepare.PackageManager.new')
+ def test_clean_package_manager_leftovers(self, mock_manager, mock_repo):
+ manager = Mock()
+- mock_manager.new.return_value = manager
++ mock_manager.return_value = manager
+ self.system.clean_package_manager_leftovers()
+ manager.clean_leftovers.assert_called_once_with()
+
+diff --git a/test/unit/system/setup_test.py b/test/unit/system/setup_test.py
+index 210fd6c8df..19589bc175 100644
+--- a/test/unit/system/setup_test.py
++++ b/test/unit/system/setup_test.py
+@@ -1231,7 +1231,7 @@ def test_set_selinux_file_contexts(self, mock_command):
+ ]
+ )
+
+- @patch('kiwi.system.setup.Repository')
++ @patch('kiwi.system.setup.Repository.new')
+ @patch('kiwi.system.setup.Uri')
+ def test_import_repositories_marked_as_imageinclude(
+ self, mock_uri, mock_repo
+diff --git a/test/unit/tasks/image_resize_test.py b/test/unit/tasks/image_resize_test.py
+index 4f6b14c1a1..95f204dfca 100644
+--- a/test/unit/tasks/image_resize_test.py
++++ b/test/unit/tasks/image_resize_test.py
+@@ -41,7 +41,6 @@ def setup(self):
+ self.firmware.get_partition_table_type = Mock(
+ return_value='gpt'
+ )
+- self.partitioner = Mock()
+ self.loop_provider = Mock()
+ kiwi.tasks.image_resize.FirmWare = Mock(
+ return_value=self.firmware
+@@ -49,9 +48,6 @@ def setup(self):
+ kiwi.tasks.image_resize.LoopDevice = Mock(
+ return_value=self.loop_provider
+ )
+- kiwi.tasks.image_resize.Partitioner = Mock(
+- return_value=self.partitioner
+- )
+
+ self.task = ImageResizeTask()
+
+@@ -93,7 +89,10 @@ def test_process_unsupported_size_format(self, mock_DiskFormat):
+ self.task.process()
+
+ @patch('kiwi.tasks.image_resize.DiskFormat.new')
+- def test_process_image_resize_gb(self, mock_DiskFormat):
++ @patch('kiwi.tasks.image_resize.Partitioner.new')
++ def test_process_image_resize_gb(self, mock_Partitioner, mock_DiskFormat):
++ partitioner = Mock()
++ mock_Partitioner.return_value = partitioner
+ image_format = Mock()
+ image_format.resize_raw_disk.return_value = True
+ mock_DiskFormat.return_value = image_format
+@@ -101,14 +100,17 @@ def test_process_image_resize_gb(self, mock_DiskFormat):
+ self.task.command_args['resize'] = True
+ self.task.process()
+ self.loop_provider.create.assert_called_once_with(overwrite=False)
+- self.partitioner.resize_table.assert_called_once_with()
++ partitioner.resize_table.assert_called_once_with()
+ image_format.resize_raw_disk.assert_called_once_with(
+ 42 * 1024 * 1024 * 1024
+ )
+ image_format.create_image_format.assert_called_once_with()
+
+ @patch('kiwi.tasks.image_resize.DiskFormat.new')
+- def test_process_image_resize_mb(self, mock_DiskFormat):
++ @patch('kiwi.tasks.image_resize.Partitioner.new')
++ def test_process_image_resize_mb(self, mock_Partitioner, mock_DiskFormat):
++ partitioner = Mock()
++ mock_Partitioner.return_value = partitioner
+ image_format = Mock()
+ image_format.resize_raw_disk.return_value = True
+ mock_DiskFormat.return_value = image_format
+@@ -117,14 +119,19 @@ def test_process_image_resize_mb(self, mock_DiskFormat):
+ self.task.command_args['--size'] = '42m'
+ self.task.process()
+ self.loop_provider.create.assert_called_once_with(overwrite=False)
+- self.partitioner.resize_table.assert_called_once_with()
++ partitioner.resize_table.assert_called_once_with()
+ image_format.resize_raw_disk.assert_called_once_with(
+ 42 * 1024 * 1024
+ )
+ image_format.create_image_format.assert_called_once_with()
+
+ @patch('kiwi.tasks.image_resize.DiskFormat.new')
+- def test_process_image_resize_bytes(self, mock_DiskFormat):
++ @patch('kiwi.tasks.image_resize.Partitioner.new')
++ def test_process_image_resize_bytes(
++ self, mock_Partitioner, mock_DiskFormat
++ ):
++ partitioner = Mock()
++ mock_Partitioner.return_value = partitioner
+ image_format = Mock()
+ image_format.resize_raw_disk.return_value = True
+ mock_DiskFormat.return_value = image_format
+@@ -133,14 +140,19 @@ def test_process_image_resize_bytes(self, mock_DiskFormat):
+ self.task.command_args['--size'] = '42'
+ self.task.process()
+ self.loop_provider.create.assert_called_once_with(overwrite=False)
+- self.partitioner.resize_table.assert_called_once_with()
++ partitioner.resize_table.assert_called_once_with()
+ image_format.resize_raw_disk.assert_called_once_with(
+ 42
+ )
+ image_format.create_image_format.assert_called_once_with()
+
+ @patch('kiwi.tasks.image_resize.DiskFormat.new')
+- def test_process_image_resize_not_needed(self, mock_DiskFormat):
++ @patch('kiwi.tasks.image_resize.Partitioner.new')
++ def test_process_image_resize_not_needed(
++ self, mock_Partitioner, mock_DiskFormat
++ ):
++ partitioner = Mock()
++ mock_Partitioner.return_value = partitioner
+ image_format = Mock()
+ image_format.resize_raw_disk.return_value = False
+ mock_DiskFormat.return_value = image_format
+@@ -150,7 +162,7 @@ def test_process_image_resize_not_needed(self, mock_DiskFormat):
+ with self._caplog.at_level(logging.INFO):
+ self.task.process()
+ self.loop_provider.create.assert_called_once_with(overwrite=False)
+- self.partitioner.resize_table.assert_called_once_with()
++ partitioner.resize_table.assert_called_once_with()
+ image_format.resize_raw_disk.assert_called_once_with(
+ 42
+ )
diff --git a/kiwi.spec b/kiwi.spec
index e59772ea8362d71e3616a30ce27bb204a27f4290..0d7136d056f8c0bf6380077996c15c1e5552f4f5 100644
--- a/kiwi.spec
+++ b/kiwi.spec
@@ -2,12 +2,13 @@
Name: kiwi
Version: 9.21.5
-Release: 1
+Release: 2
License: GPLv3+
Summary: Flexible operating system image builder
URL: http://osinside.github.io/kiwi/
Source0: https://files.pythonhosted.org/packages/source/k/%{name}/%{name}-%{version}.tar.gz
+Patch6000: 9480ca3266d69c7cacb34d8488a846352b938d16.patch
BuildRequires: bash-completion dracut fdupes gcc make
BuildRequires: python3-devel python3-setuptools shadow-utils
@@ -189,6 +190,9 @@ done
%{_mandir}/man8/%{name}*
%changelog
+* 20201126193007659888 patch-tracking 9.21.5-2
+- append patch file of upstream repository from <9480ca3266d69c7cacb34d8488a846352b938d16> to <9480ca3266d69c7cacb34d8488a846352b938d16>
+
* Tue Jul 28 2020 xinghe - 9.21.5-1
- update version to 9.21.5
@@ -208,4 +212,4 @@ done
- Remove python2 dependency
* Sat Sep 21 2019 openEuler Buildteam - 9.16.12-2
-- Package init
+- Package init
\ No newline at end of file