Пример #1
0
def build(script, source, target=None):
    filesystem = os.path.exists(os.path.join(source, 'knoppix'))
    minirt = os.path.exists(os.path.join(source, 'minirt'))
    
    if target is None:
        target = os.path.join(source, 'remaster.iso')
    
    @progress
    def prepare(progress):
        remove = [('remaster.iso',)]
        if filesystem:
            remove.append(('master', 'KNOPPIX', 'KNOPPIX'))
        if minirt:
            remove.append(('master', 'boot', 'isolinux', 'minirt.gz'))
            remove.append(('master', 'boot', 'isolinux', 'minirt'))
        for path in remove:
            path = os.path.join(source, *path)
            if os.path.exists(path):
                os.remove(path)
                
    @progress
    def minirt_files(progress):
        with open(os.path.join(source, 'minirt.files'), 'wb') as files:
            minirt = os.path.join(source, 'minirt')
            for root, dirnames, filenames in os.walk(os.path.join(source, 'minirt')):
                root = root.replace(minirt, '.')
                files.write(root + '\n')
                for file in filenames:
                    files.write(os.path.join(root, file) + '\n')
    
    @progress
    def cleanup(progress):
        for path in ['knoppix.iso', 'minirt.files']:
            path = os.path.join(source, path)
            if os.path.exists(path):
                os.remove(path)
                    
    yield 'prepare', prepare()
    if filesystem:
        yield 'filesystem_image', commands.mkisofs('-R', '-U', '-V', 'KNOPPIX.net filesystem', '-publisher', 'KNOPPIX', '-hide-rr-moved', '-cache-inodes', '-no-bak', '-pad', '-o', os.path.join(source, 'knoppix.iso'), os.path.join(source, 'knoppix'))
        yield 'filesystem_compress', cloop.create_compressed_fs(os.path.join(source, 'knoppix.iso'), os.path.join(source, 'master', 'KNOPPIX', 'KNOPPIX'))
    if minirt:
        yield 'minirt_files', minirt_files()
        yield 'minirt_image', commands.cpio('-oH' 'newc', stdin=open(os.path.join(source, 'minirt.files')), stdout=open(os.path.join(source, 'master', 'boot', 'isolinux', 'minirt'), 'wb'), cwd=os.path.join(source, 'minirt'))
        yield 'minirt_compress', commands.gzip(os.path.join(source, 'master', 'boot', 'isolinux', 'minirt'))
    yield 'iso_image', commands.mkisofs('-pad', '-l', '-r', '-J', '-v', '-V', 'KNOPPIX', '-no-emul-boot', '-boot-load-size', '4', '-boot-info-table', '-b', 'boot/isolinux/isolinux.bin', '-c', 'boot/isolinux/boot.cat', '-hide-rr-moved', '-o', target, os.path.join(source, 'master'))
    yield 'cleanup', cleanup()
Пример #2
0
def create(script, source, target, name='Unknown', filesystem=True, minirt=True, squashfs=False, base_compression='cloop', base_version='Unknown'):
    @progress
    def create_directories(progress):
        paths = ['']
        if filesystem:
            paths.append('knoppix-mount')
        if minirt:
            paths.append('minirt')
        for path in paths:
            path = os.path.join(target, path)
            if not os.path.exists(path):
                os.mkdir(path)
                    
    @progress
    def write_settings(progress):
        with open(os.path.join(target, 'master', 'KNOPPIX', 'remaster.info'), 'wb') as output:
            json.dump({'name': name, 'base': base_version, 'squashfs': False}, output)
                
    @progress
    def cleanup(progress):
        if os.path.exists(os.path.join(target, 'knoppix-mount')):
            os.rmdir(os.path.join(target, 'knoppix-mount'))
        if os.path.exists(os.path.join(target, 'knoppix.iso')):
            os.remove(os.path.join(target, 'knoppix.iso'))
    
    yield 'create_directories', create_directories()
    yield 'copy_master', commands.copy('-rp', source, os.path.join(target, 'master'))
    yield 'write_settings', write_settings()
    if filesystem:
        yield 'filesystem_decompress', cloop.extract_compressed_fs(os.path.join(target, 'master', 'KNOPPIX', 'KNOPPIX'), os.path.join(target, 'knoppix.iso'))
        yield 'filesystem_mount', commands.mount('-r', '-o', 'loop', os.path.join(target, 'knoppix.iso'), os.path.join(target, 'knoppix-mount'))
        yield 'filesystem_copy', commands.copy('-rp', os.path.join(target, 'knoppix-mount'), os.path.join(target, 'knoppix'))
        yield 'filesystem_umount', commands.umount(os.path.join(target, 'knoppix-mount'))
    if minirt:
        yield 'minirt_decompress', commands.gunzip(os.path.join(target, 'master', 'boot', 'isolinux', 'minirt.gz'))
        yield 'minirt_unpack', commands.cpio('-imd', '--no-absolute-filenames', stdin=open(os.path.join(target, 'master', 'boot', 'isolinux', 'minirt'), 'rb'), cwd=os.path.join(target, 'minirt'))
    yield 'cleanup', cleanup()
Пример #3
0
def create(script,
           source,
           target,
           name='Unknown',
           filesystem=True,
           minirt=True,
           squashfs=False,
           base_compression='cloop',
           base_version='Unknown'):
    @progress
    def create_directories(progress):
        paths = ['']
        if filesystem:
            paths.append('knoppix-mount')
        if minirt:
            paths.append('minirt')
        for path in paths:
            path = os.path.join(target, path)
            if not os.path.exists(path):
                os.mkdir(path)

    @progress
    def write_settings(progress):
        with open(os.path.join(target, 'master', 'KNOPPIX', 'remaster.info'),
                  'wb') as output:
            json.dump({
                'name': name,
                'base': base_version,
                'squashfs': False
            }, output)

    @progress
    def cleanup(progress):
        if os.path.exists(os.path.join(target, 'knoppix-mount')):
            os.rmdir(os.path.join(target, 'knoppix-mount'))
        if os.path.exists(os.path.join(target, 'knoppix.iso')):
            os.remove(os.path.join(target, 'knoppix.iso'))

    yield 'create_directories', create_directories()
    yield 'copy_master', commands.copy('-rp', source,
                                       os.path.join(target, 'master'))
    yield 'write_settings', write_settings()
    if filesystem:
        yield 'filesystem_decompress', cloop.extract_compressed_fs(
            os.path.join(target, 'master', 'KNOPPIX', 'KNOPPIX'),
            os.path.join(target, 'knoppix.iso'))
        yield 'filesystem_mount', commands.mount(
            '-r', '-o', 'loop', os.path.join(target, 'knoppix.iso'),
            os.path.join(target, 'knoppix-mount'))
        yield 'filesystem_copy', commands.copy(
            '-rp', os.path.join(target, 'knoppix-mount'),
            os.path.join(target, 'knoppix'))
        yield 'filesystem_umount', commands.umount(
            os.path.join(target, 'knoppix-mount'))
    if minirt:
        yield 'minirt_decompress', commands.gunzip(
            os.path.join(target, 'master', 'boot', 'isolinux', 'minirt.gz'))
        yield 'minirt_unpack', commands.cpio(
            '-imd',
            '--no-absolute-filenames',
            stdin=open(
                os.path.join(target, 'master', 'boot', 'isolinux', 'minirt'),
                'rb'),
            cwd=os.path.join(target, 'minirt'))
    yield 'cleanup', cleanup()
Пример #4
0
def build(script, source, target=None):
    filesystem = os.path.exists(os.path.join(source, 'knoppix'))
    minirt = os.path.exists(os.path.join(source, 'minirt'))

    if target is None:
        target = os.path.join(source, 'remaster.iso')

    @progress
    def prepare(progress):
        remove = [('remaster.iso', )]
        if filesystem:
            remove.append(('master', 'KNOPPIX', 'KNOPPIX'))
        if minirt:
            remove.append(('master', 'boot', 'isolinux', 'minirt.gz'))
            remove.append(('master', 'boot', 'isolinux', 'minirt'))
        for path in remove:
            path = os.path.join(source, *path)
            if os.path.exists(path):
                os.remove(path)

    @progress
    def minirt_files(progress):
        with open(os.path.join(source, 'minirt.files'), 'wb') as files:
            minirt = os.path.join(source, 'minirt')
            for root, dirnames, filenames in os.walk(
                    os.path.join(source, 'minirt')):
                root = root.replace(minirt, '.')
                files.write(root + '\n')
                for file in filenames:
                    files.write(os.path.join(root, file) + '\n')

    @progress
    def cleanup(progress):
        for path in ['knoppix.iso', 'minirt.files']:
            path = os.path.join(source, path)
            if os.path.exists(path):
                os.remove(path)

    yield 'prepare', prepare()
    if filesystem:
        yield 'filesystem_image', commands.mkisofs(
            '-R', '-U', '-V', 'KNOPPIX.net filesystem', '-publisher',
            'KNOPPIX', '-hide-rr-moved', '-cache-inodes', '-no-bak', '-pad',
            '-o', os.path.join(source, 'knoppix.iso'),
            os.path.join(source, 'knoppix'))
        yield 'filesystem_compress', cloop.create_compressed_fs(
            os.path.join(source, 'knoppix.iso'),
            os.path.join(source, 'master', 'KNOPPIX', 'KNOPPIX'))
    if minirt:
        yield 'minirt_files', minirt_files()
        yield 'minirt_image', commands.cpio(
            '-oH'
            'newc',
            stdin=open(os.path.join(source, 'minirt.files')),
            stdout=open(
                os.path.join(source, 'master', 'boot', 'isolinux', 'minirt'),
                'wb'),
            cwd=os.path.join(source, 'minirt'))
        yield 'minirt_compress', commands.gzip(
            os.path.join(source, 'master', 'boot', 'isolinux', 'minirt'))
    yield 'iso_image', commands.mkisofs(
        '-pad', '-l', '-r', '-J', '-v', '-V', 'KNOPPIX', '-no-emul-boot',
        '-boot-load-size', '4', '-boot-info-table', '-b',
        'boot/isolinux/isolinux.bin', '-c', 'boot/isolinux/boot.cat',
        '-hide-rr-moved', '-o', target, os.path.join(source, 'master'))
    yield 'cleanup', cleanup()