Example #1
0
 def __init__(self, xml_state, target_dir, root_dir):
     self.label = None
     self.root_uuid = None
     self.root_dir = root_dir
     self.target_dir = target_dir
     self.requested_image_type = xml_state.get_build_type_name()
     if self.requested_image_type == 'pxe':
         self.requested_filesystem = xml_state.build_type.get_filesystem()
     else:
         self.requested_filesystem = self.requested_image_type
     if not self.requested_filesystem:
         raise KiwiFileSystemSetupError(
             'No filesystem configured in %s type' %
             self.requested_image_type)
     self.filesystem_custom_parameters = {
         'mount_options': xml_state.get_fs_mount_option_list(),
         'create_options': xml_state.get_fs_create_option_list()
     }
     self.system_setup = SystemSetup(xml_state=xml_state,
                                     root_dir=self.root_dir)
     self.filename = ''.join([
         target_dir, '/',
         xml_state.xml_data.get_name(), '.' + platform.machine(),
         '-' + xml_state.get_image_version(), '.', self.requested_filesystem
     ])
     self.blocksize = xml_state.build_type.get_target_blocksize()
     self.filesystem_setup = FileSystemSetup(xml_state, root_dir)
     self.filesystems_no_device_node = ['squashfs']
     self.result = Result(xml_state)
     self.runtime_config = RuntimeConfig()
Example #2
0
    def create(self):
        """
        Build a mountable filesystem image

        Image types which triggers this builder are:

        * image="ext2"
        * image="ext3"
        * image="ext4"
        * image="btrfs"
        * image="xfs"

        :return: result

        :rtype: instance of :class:`Result`
        """
        log.info(
            'Creating %s filesystem', self.requested_filesystem
        )
        supported_filesystems = Defaults.get_filesystem_image_types()
        if self.requested_filesystem not in supported_filesystems:
            raise KiwiFileSystemSetupError(
                'Unknown filesystem: %s' % self.requested_filesystem
            )
        if self.requested_filesystem not in self.filesystems_no_device_node:
            self._operate_on_loop()
        else:
            self._operate_on_file()
        self.result.verify_image_size(
            self.runtime_config.get_max_size_constraint(),
            self.filename
        )
        self.result.add(
            key='filesystem_image',
            filename=self.filename,
            use_for_bundle=True,
            compress=self.runtime_config.get_bundle_compression(
                default=True
            ),
            shasum=True
        )
        self.result.add(
            key='image_packages',
            filename=self.system_setup.export_package_list(
                self.target_dir
            ),
            use_for_bundle=True,
            compress=False,
            shasum=False
        )
        self.result.add(
            key='image_verified',
            filename=self.system_setup.export_package_verification(
                self.target_dir
            ),
            use_for_bundle=True,
            compress=False,
            shasum=False
        )
        return self.result
Example #3
0
 def new(
     name: str, device_provider: object,
     root_dir: str=None, custom_args: Dict=None  # noqa: E252
 ):
     name_map = {
         'ext2': 'Ext2',
         'ext3': 'Ext3',
         'ext4': 'Ext4',
         'btrfs': 'Btrfs',
         'xfs': 'Xfs',
         'fat16': 'Fat16',
         'fat32': 'Fat32',
         'squashfs': 'SquashFs',
         'clicfs': 'ClicFs',
         'swap': 'Swap'
     }
     try:
         filesystem = importlib.import_module(
             'kiwi.filesystem.{0}'.format(name)
         )
         return filesystem.__dict__['FileSystem{0}'.format(name_map[name])](
             device_provider, root_dir, custom_args
         )
     except Exception as issue:
         raise KiwiFileSystemSetupError(
             'Support for {0} filesystem not implemented: {1}'.format(
                 name, issue
             )
         )
Example #4
0
    def __init__(
        self, xml_state: XMLState, target_dir: str,
        root_dir: str, custom_args: Dict = None
    ):
        self.label = None
        self.root_uuid = ''
        self.root_dir = root_dir
        self.target_dir = target_dir
        self.bundle_format = xml_state.get_build_type_bundle_format()
        self.requested_image_type = xml_state.get_build_type_name()
        if self.requested_image_type in Defaults.get_kis_image_types():
            self.requested_filesystem = xml_state.build_type.get_filesystem()
        else:
            self.requested_filesystem = self.requested_image_type
        if not self.requested_filesystem:
            raise KiwiFileSystemSetupError(
                'No filesystem configured in %s type' %
                self.requested_image_type
            )
        self.filesystem_custom_parameters = {
            'mount_options': xml_state.get_fs_mount_option_list(),
            'create_options': xml_state.get_fs_create_option_list()
        }
        if self.requested_filesystem == 'squashfs':
            self.filesystem_custom_parameters['compression'] = \
                xml_state.build_type.get_squashfscompression()

        self.system_setup = SystemSetup(
            xml_state=xml_state, root_dir=self.root_dir
        )
        self.filename = ''.join(
            [
                target_dir, '/',
                xml_state.xml_data.get_name(),
                '.' + Defaults.get_platform_name(),
                '-' + xml_state.get_image_version(),
                '.', self.requested_filesystem
            ]
        )
        self.blocksize = xml_state.build_type.get_target_blocksize()
        self.filesystem_setup = FileSystemSetup(xml_state, root_dir)
        self.filesystems_no_device_node = [
            'squashfs'
        ]
        self.result = Result(xml_state)
        self.runtime_config = RuntimeConfig()
Example #5
0
 def __new__(self, name, device_provider, root_dir=None, custom_args=None):
     if name == 'ext2':
         return FileSystemExt2(device_provider, root_dir, custom_args)
     elif name == 'ext3':
         return FileSystemExt3(device_provider, root_dir, custom_args)
     elif name == 'ext4':
         return FileSystemExt4(device_provider, root_dir, custom_args)
     elif name == 'btrfs':
         return FileSystemBtrfs(device_provider, root_dir, custom_args)
     elif name == 'xfs':
         return FileSystemXfs(device_provider, root_dir, custom_args)
     elif name == 'fat16':
         return FileSystemFat16(device_provider, root_dir, custom_args)
     elif name == 'fat32':
         return FileSystemFat32(device_provider, root_dir, custom_args)
     elif name == 'squashfs':
         return FileSystemSquashFs(device_provider, root_dir, custom_args)
     elif name == 'clicfs':
         return FileSystemClicFs(device_provider, root_dir, custom_args)
     elif name == 'swap':
         return FileSystemSwap(device_provider, root_dir, custom_args)
     else:
         raise KiwiFileSystemSetupError(
             'Support for %s filesystem not implemented' % name)