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()
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()
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()
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()