[elbe-devel] [PATCH v3 32/52] Nuke ASCIIDocLog from hdimg
dion at linutronix.de
dion at linutronix.de
Thu Jun 27 14:44:46 CEST 2019
From: Olivier Dion <dion at linutronix.de>
Signed-off-by: Olivier Dion <dion at linutronix.de>
---
elbepack/efilesystem.py | 12 +-
elbepack/hdimg.py | 349 ++++++++++++++++++++----------------------------
2 files changed, 148 insertions(+), 213 deletions(-)
diff --git a/elbepack/efilesystem.py b/elbepack/efilesystem.py
index 1f6428e0..3d2e3d6d 100644
--- a/elbepack/efilesystem.py
+++ b/elbepack/efilesystem.py
@@ -307,13 +307,11 @@ class TargetFs(ChRootFilesystem):
def part_target(self, targetdir, grub_version, grub_fw_type=None):
# create target images and copy the rfs into them
- self.images = do_hdimg(
- self.log,
- self.xml,
- targetdir,
- self,
- grub_version,
- grub_fw_type)
+ self.images = do_hdimg(self.xml,
+ targetdir,
+ self,
+ grub_version,
+ grub_fw_type)
for i in self.images:
self.image_packers[i] = default_packer
diff --git a/elbepack/hdimg.py b/elbepack/hdimg.py
index 771c9a35..92414421 100644
--- a/elbepack/hdimg.py
+++ b/elbepack/hdimg.py
@@ -15,11 +15,11 @@ import parted
import _ped
from elbepack.fstab import fstabentry, mountpoint_dict
-from elbepack.asciidoclog import CommandError
from elbepack.filesystem import size_to_int
+from elbepack.shellhelper import do, CommandError, chroot
-def mkfs_mtd(outf, mtd, fslabel, target):
+def mkfs_mtd(mtd, fslabel, target):
# generated files
img_files = []
@@ -43,13 +43,15 @@ def mkfs_mtd(outf, mtd, fslabel, target):
continue
try:
- outf.do("mkfs.ubifs -r %s -o %s.ubifs -m %s -e %s -c %s %s" % (
+ cmd = "mkfs.ubifs -r %s -o %s.ubifs -m %s -e %s -c %s %s" % (
os.path.join(target, "filesystems", fslabel[label].id),
os.path.join(target, label),
ubivg.text("miniosize"),
ubivg.text("logicaleraseblocksize"),
ubivg.text("maxlogicaleraseblockcount"),
- fslabel[label].mkfsopt))
+ fslabel[label].mkfsopt
+ )
+ do(cmd)
# only append the ubifs file if creation didn't fail
img_files.append("%s.ubifs" % label)
except CommandError:
@@ -59,7 +61,7 @@ def mkfs_mtd(outf, mtd, fslabel, target):
return img_files
-def build_image_mtd(outf, mtd, target):
+def build_image_mtd(mtd, target):
# pylint: disable=too-many-branches
@@ -87,9 +89,8 @@ def build_image_mtd(outf, mtd, target):
# copy from project directory
else:
tmp = target + "/" + vol.text("binary")
- outf.do(
- "cp %s %s/%s.ubibin" %
- (tmp, target, vol.text("label")))
+ do("cp %s %s/%s.ubibin" %
+ (tmp, target, vol.text("label")))
img_files.append(vol.text("label") + ".ubibin")
fp.write(
"image=%s.ubibin\n" %
@@ -125,7 +126,7 @@ def build_image_mtd(outf, mtd, target):
subp = ""
try:
- outf.do("ubinize %s -o %s -p %s -m %s %s/%s_%s.cfg" % (
+ do("ubinize %s -o %s -p %s -m %s %s/%s_%s.cfg" % (
subp,
os.path.join(target, mtd.text("name")),
ubivg.text("physicaleraseblocksize"),
@@ -144,8 +145,7 @@ def build_image_mtd(outf, mtd, target):
class grubinstaller_base(object):
- def __init__(self, outf, fw_type=None):
- self.outf = outf
+ def __init__(self, fw_type=None):
self.root = None
self.boot = None
self.boot_efi = None
@@ -173,99 +173,72 @@ class grubinstaller202(grubinstaller_base):
imagemnt = os.path.join(target, "imagemnt")
try:
- self.outf.do('cp -a /dev/loop0 /dev/poop0')
-
- self.outf.do('losetup /dev/poop0 "%s"' % self.root.filename)
- self.outf.do('kpartx -as /dev/poop0')
- self.outf.do(
- 'mount /dev/mapper/poop0p%d %s' %
- (self.root.partnum, imagemnt))
+ do('cp -a /dev/loop0 /dev/poop0')
+ do('losetup /dev/poop0 "%s"' % self.root.filename)
+ do('kpartx -as /dev/poop0')
+ do('mount /dev/mapper/poop0p%d %s' %
+ (self.root.partnum, imagemnt))
if self.boot:
- self.outf.do(
- 'mount /dev/mapper/poop0p%d %s' %
- (self.boot.partnum, os.path.join(
- imagemnt, "boot")))
+ do('mount /dev/mapper/poop0p%d %s' %
+ (self.boot.partnum, os.path.join(imagemnt, "boot")))
if self.boot_efi:
- self.outf.do(
- 'mount /dev/mapper/poop0p%d %s' %
- (self.boot_efi.partnum, os.path.join(
- imagemnt, "boot/efi")))
-
- self.outf.do(
- "mount --bind /dev %s" %
- os.path.join(
- imagemnt,
- "dev"))
- self.outf.do(
- "mount --bind /proc %s" %
- os.path.join(
- imagemnt,
- "proc"))
- self.outf.do(
- "mount --bind /sys %s" %
- os.path.join(
- imagemnt,
- "sys"))
-
- self.outf.do('mkdir -p "%s"' % os.path.join(imagemnt, "boot/grub"))
+ do('mount /dev/mapper/poop0p%d %s' %
+ (self.boot_efi.partnum, os.path.join(imagemnt, "boot/efi")))
+
+ do("mount --bind /dev %s" %
+ os.path.join(imagemnt, "dev"))
+
+ do("mount --bind /proc %s" %
+ os.path.join(imagemnt, "proc"))
+
+ do("mount --bind /sys %s" %
+ os.path.join(imagemnt, "sys"))
+
+ do('mkdir -p "%s"' %
+ os.path.join(imagemnt, "boot/grub"))
devmap = open(os.path.join(imagemnt, "boot/grub/device.map"), "w")
devmap.write("(hd0) /dev/poop0\n")
devmap.close()
- self.outf.do("chroot %s update-initramfs -u -k all" % imagemnt)
- self.outf.do("chroot %s update-grub2" % imagemnt)
+ chroot(imagemnt, "update-initramfs -u -k all")
+ chroot(imagemnt, "update-grub2")
if self.fw_type == "efi" or self.fw_type == "hybrid":
- self.outf.do(
- "chroot %s grub-install --target=x86_64-efi --removable "
- "--no-floppy /dev/poop0" %
- (imagemnt))
+ chroot(imagemnt, "grub-install --target=x86_64-efi --removable "
+ "--no-floppy /dev/poop0")
+
if self.fw_type == "hybrid" or self.fw_type is None:
# when we are in hybrid mode, install grub also into MBR
- self.outf.do(
- "chroot %s grub-install --no-floppy /dev/poop0" %
- (imagemnt))
+ chroot(imagemnt, "grub-install --no-floppy /dev/poop0")
finally:
os.unlink(os.path.join(imagemnt, "boot/grub/device.map"))
- self.outf.do(
- "umount %s" %
- os.path.join(
- imagemnt,
- "dev"),
- allow_fail=True)
- self.outf.do(
- "umount %s" %
- os.path.join(
- imagemnt,
- "proc"),
- allow_fail=True)
- self.outf.do(
- "umount %s" %
- os.path.join(
- imagemnt,
- "sys"),
- allow_fail=True)
+
+ do("umount %s" % os.path.join(imagemnt, "dev"),
+ allow_fail=True)
+
+ do("umount %s" % os.path.join(imagemnt, "proc"),
+ allow_fail=True)
+
+ do("umount %s" % os.path.join(imagemnt, "sys"),
+ allow_fail=True)
if self.boot_efi:
- self.outf.do(
- 'umount /dev/mapper/poop0p%d' %
- self.boot_efi.partnum, allow_fail=True)
+ do('umount /dev/mapper/poop0p%d' %
+ self.boot_efi.partnum, allow_fail=True)
if self.boot:
- self.outf.do(
- 'umount /dev/mapper/poop0p%d' %
- self.boot.partnum, allow_fail=True)
+ do('umount /dev/mapper/poop0p%d' %
+ self.boot.partnum, allow_fail=True)
- self.outf.do(
- 'umount /dev/mapper/poop0p%d' %
- self.root.partnum, allow_fail=True)
+ do('umount /dev/mapper/poop0p%d' % self.root.partnum,
+ allow_fail=True)
- self.outf.do('kpartx -d /dev/poop0', allow_fail=True)
- self.outf.do("losetup -d /dev/poop0", allow_fail=True)
+ do('kpartx -d /dev/poop0', allow_fail=True)
+ do("losetup -d /dev/poop0", allow_fail=True)
class grubinstaller199(grubinstaller_base):
@@ -276,17 +249,17 @@ class grubinstaller199(grubinstaller_base):
imagemnt = os.path.join(target, "imagemnt")
try:
- self.outf.do('cp -a /dev/loop0 /dev/poop0')
- self.outf.do('cp -a /dev/loop1 /dev/poop1')
- self.outf.do('cp -a /dev/loop2 /dev/poop2')
+ do('cp -a /dev/loop0 /dev/poop0')
+ do('cp -a /dev/loop1 /dev/poop1')
+ do('cp -a /dev/loop2 /dev/poop2')
- self.outf.do('losetup /dev/poop0 "%s"' % self.root.filename)
- self.root.losetup(self.outf, "poop1")
- self.outf.do('mount /dev/poop1 %s' % imagemnt)
+ do('losetup /dev/poop0 "%s"' % self.root.filename)
+ self.root.losetup("poop1")
+ do('mount /dev/poop1 %s' % imagemnt)
if self.boot:
- self.boot.losetup(self.outf, "poop2")
- self.outf.do('mount /dev/poop2 %s' %
+ self.boot.losetup("poop2")
+ do('mount /dev/poop2 %s' %
(os.path.join(imagemnt, "boot")))
devmap = open(os.path.join(imagemnt, "boot/grub/device.map"), "w")
@@ -297,59 +270,33 @@ class grubinstaller199(grubinstaller_base):
devmap.close()
- self.outf.do(
- "mount --bind /dev %s" %
- os.path.join(
- imagemnt,
- "dev"))
- self.outf.do(
- "mount --bind /proc %s" %
- os.path.join(
- imagemnt,
- "proc"))
- self.outf.do(
- "mount --bind /sys %s" %
- os.path.join(
- imagemnt,
- "sys"))
-
- self.outf.do("chroot %s update-initramfs -u -k all" % imagemnt)
- self.outf.do("chroot %s update-grub2" % imagemnt)
-
- self.outf.do(
- "chroot %s grub-install --no-floppy /dev/loop0" %
- imagemnt)
+ do("mount --bind /dev %s" % os.path.join(imagemnt, "dev"))
+ do("mount --bind /proc %s" % os.path.join(imagemnt, "proc"))
+ do("mount --bind /sys %s" % os.path.join(imagemnt, "sys"))
+ chroot(imagemnt, "update-initramfs -u -k all")
+ chroot(imagemnt, "update-grub2")
+ chroot(imagemnt, "grub-install --no-floppy /dev/loop0")
finally:
os.unlink(os.path.join(imagemnt, "boot/grub/device.map"))
- self.outf.do(
- "umount -l %s" %
- os.path.join(
- imagemnt,
- "dev"),
- allow_fail=True)
- self.outf.do(
- "umount -l %s" %
- os.path.join(
- imagemnt,
- "proc"),
- allow_fail=True)
- self.outf.do(
- "umount -l %s" %
- os.path.join(
- imagemnt,
- "sys"),
- allow_fail=True)
-
- self.outf.do("losetup -d /dev/poop0", allow_fail=True)
+ do("umount -l %s" % os.path.join(imagemnt, "dev"),
+ allow_fail=True)
+
+ do("umount -l %s" % os.path.join(imagemnt, "proc"),
+ allow_fail=True)
+
+ do("umount -l %s" % os.path.join(imagemnt, "sys"),
+ allow_fail=True)
+
+ do("losetup -d /dev/poop0", allow_fail=True)
if self.boot:
- self.outf.do('umount /dev/poop2', allow_fail=True)
- self.outf.do('losetup -d /dev/poop2', allow_fail=True)
+ do('umount /dev/poop2', allow_fail=True)
+ do('losetup -d /dev/poop2', allow_fail=True)
- self.outf.do('umount /dev/poop1', allow_fail=True)
- self.outf.do('losetup -d /dev/poop1', allow_fail=True)
+ do('umount /dev/poop1', allow_fail=True)
+ do('losetup -d /dev/poop1', allow_fail=True)
class simple_fstype(object):
@@ -399,7 +346,7 @@ def create_partition(
return ppart
-def create_label(outf, disk, part, ppart, fslabel, target, grub):
+def create_label(disk, part, ppart, fslabel, target, grub):
# pylint: disable=too-many-arguments
@@ -413,33 +360,30 @@ def create_label(outf, disk, part, ppart, fslabel, target, grub):
elif entry.mountpoint == "/boot/efi":
grub.set_boot_efi_entry(entry)
- entry.losetup(outf, "loop0")
- outf.do(
- 'mkfs.%s %s %s /dev/loop0' %
- (entry.fstype,
- entry.mkfsopt,
- entry.get_label_opt()))
-
- outf.do('mount /dev/loop0 %s' % os.path.join(target, "imagemnt"))
- outf.do(
- 'cp -a "%s/." "%s/"' %
- (os.path.join(
- target, "filesystems", entry.id), os.path.join(
- target, "imagemnt")), allow_fail=True)
- outf.do('umount /dev/loop0')
- outf.do('losetup -d /dev/loop0')
+ entry.losetup("loop0")
+
+ do('mkfs.%s %s %s /dev/loop0' %
+ (entry.fstype,
+ entry.mkfsopt,
+ entry.get_label_opt()))
+
+ do('mount /dev/loop0 %s' % os.path.join(target, "imagemnt"))
+ do('cp -a "%s/." "%s/"' %
+ (os.path.join(target, "filesystems", entry.id),
+ os.path.join(target, "imagemnt")),
+ allow_fail=True)
+ do('umount /dev/loop0')
+ do('losetup -d /dev/loop0')
return ppart
-def create_logical_partitions(
- outf,
- disk,
- extended,
- epart,
- fslabel,
- target,
- grub):
+def create_logical_partitions(disk,
+ extended,
+ epart,
+ fslabel,
+ target,
+ grub):
# pylint: disable=too-many-arguments
@@ -459,12 +403,12 @@ def create_logical_partitions(
size_in_sectors,
current_sector)
if logical.has("label") and logical.text("label") in fslabel:
- create_label(outf, disk, logical, lpart, fslabel, target, grub)
+ create_label(disk, logical, lpart, fslabel, target, grub)
current_sector += lpart.getLength()
-def do_image_hd(outf, hd, fslabel, target, grub_version, grub_fw_type=None):
+def do_image_hd(hd, fslabel, target, grub_version, grub_fw_type=None):
# pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
@@ -475,7 +419,7 @@ def do_image_hd(outf, hd, fslabel, target, grub_version, grub_fw_type=None):
size_in_sectors = s / sector_size
imagename = os.path.join(target, hd.text("name"))
- outf.do('rm -f "%s"' % imagename, allow_fail=True)
+ do('rm -f "%s"' % imagename, allow_fail=True)
f = open(imagename, "wb")
f.truncate(size_in_sectors * sector_size)
f.close()
@@ -487,15 +431,15 @@ def do_image_hd(outf, hd, fslabel, target, grub_version, grub_fw_type=None):
disk = parted.freshDisk(imag, "msdos")
if grub_version == 199:
- grub = grubinstaller199(outf)
+ grub = grubinstaller199()
elif grub_version == 202 and grub_fw_type == "efi":
- grub = grubinstaller202(outf, "efi")
+ grub = grubinstaller202("efi")
elif grub_version == 202 and grub_fw_type == "hybrid":
- grub = grubinstaller202(outf, "hybrid")
+ grub = grubinstaller202("hybrid")
elif grub_version == 202:
- grub = grubinstaller202(outf)
+ grub = grubinstaller202()
else:
- grub = grubinstaller_base(outf)
+ grub = grubinstaller_base()
current_sector = 2048
for part in hd:
@@ -509,7 +453,7 @@ def do_image_hd(outf, hd, fslabel, target, grub_version, grub_fw_type=None):
size_in_sectors,
current_sector)
if part.text("label") in fslabel:
- create_label(outf, disk, part, ppart, fslabel, target, grub)
+ create_label(disk, part, ppart, fslabel, target, grub)
elif part.tag == "extended":
ppart = create_partition(
disk,
@@ -518,8 +462,8 @@ def do_image_hd(outf, hd, fslabel, target, grub_version, grub_fw_type=None):
fslabel,
size_in_sectors,
current_sector)
- create_logical_partitions(
- outf, disk, part, ppart, fslabel, target, grub)
+ create_logical_partitions(disk, part, ppart,
+ fslabel, target, grub)
else:
continue
@@ -533,7 +477,7 @@ def do_image_hd(outf, hd, fslabel, target, grub_version, grub_fw_type=None):
return hd.text("name")
-def add_binary_blob(outf, hd, target):
+def add_binary_blob(hd, target):
imagename = os.path.join(target, hd.text("name"))
@@ -559,14 +503,11 @@ def add_binary_blob(outf, hd, target):
# use file from /var/cache/elbe/<uuid> project dir
bf = os.path.join(target, binary.et.text)
- outf.do('dd if="%s" of="%s" seek="%s" bs="%s" conv=notrunc' % (
- bf,
- imagename,
- offset,
- bs))
+ do('dd if="%s" of="%s" seek="%s" bs="%s" conv=notrunc' %
+ (bf, imagename, offset, bs))
-def do_hdimg(outf, xml, target, rfs, grub_version, grub_fw_type=None):
+def do_hdimg(xml, target, rfs, grub_version, grub_fw_type=None):
# pylint: disable=too-many-arguments
# pylint: disable=too-many-locals
@@ -602,67 +543,63 @@ def do_hdimg(outf, xml, target, rfs, grub_version, grub_fw_type=None):
# create directories, where we want our
# filesystems later
fspath = os.path.join(target, "filesystems")
- outf.do('mkdir -p %s' % fspath)
+ do('mkdir -p %s' % fspath)
imagemnt = os.path.join(target, "imagemnt")
- outf.do('mkdir -p %s' % imagemnt)
+ do('mkdir -p %s' % imagemnt)
# now move all mountpoints into own directories
# begin from deepest mountpoints
for l in reversed(fslist):
- outf.do('mkdir -p "%s"' % os.path.join(fspath, l.id))
- outf.do('mkdir -p "%s"' % rfs.fname('') + l.mountpoint)
+ do('mkdir -p "%s"' % os.path.join(fspath, l.id))
+ do('mkdir -p "%s"' % rfs.fname('') + l.mountpoint)
if rfs.listdir(l.mountpoint):
- outf.do('mv "%s"/* "%s"' % (rfs.fname(l.mountpoint), os.path.join(
- fspath, l.id)), allow_fail=True)
+ do('mv "%s"/* "%s"' %
+ (rfs.fname(l.mountpoint),
+ os.path.join(fspath, l.id)),
+ allow_fail=True)
try:
# Now iterate over all images and create filesystems and partitions
for i in xml.tgt.node("images"):
if i.tag == "msdoshd":
- img = do_image_hd(
- outf,
- i,
- fslabel,
- target,
- grub_version,
- grub_fw_type)
+ img = do_image_hd(i,
+ fslabel,
+ target,
+ grub_version,
+ grub_fw_type)
img_files.append(img)
if i.tag == "gpthd":
- img = do_image_hd(
- outf,
- i,
- fslabel,
- target,
- grub_version,
- grub_fw_type)
+ img = do_image_hd(i,
+ fslabel,
+ target,
+ grub_version,
+ grub_fw_type)
img_files.append(img)
if i.tag == "mtd":
- imgs = mkfs_mtd(outf, i, fslabel, target)
+ imgs = mkfs_mtd(i, fslabel, target)
img_files.extend(imgs)
finally:
# Put back the filesystems into /target
# most shallow fs first...
for i in fslist:
if len(os.listdir(os.path.join(fspath, i.id))) > 0:
- outf.do(
- 'mv "%s"/* "%s"' %
- (os.path.join(
- fspath, i.id), rfs.fname(
- i.mountpoint)), allow_fail=True)
+ do('mv "%s"/* "%s"' %
+ (os.path.join(fspath, i.id), rfs.fname(i.mountpoint)),
+ allow_fail=True)
# Files are now moved back. ubinize needs files in place, so we run it now.
for i in xml.tgt.node("images"):
if i.tag == "mtd":
- imgs = build_image_mtd(outf, i, target)
+ imgs = build_image_mtd(i, target)
img_files.extend(imgs)
# dd binary blobs onto images
for i in xml.tgt.node("images"):
if (i.tag == "msdoshd") or (i.tag == "gpthd"):
- add_binary_blob(outf, i, target)
+ add_binary_blob(i, target)
# use set() to remove duplicates, but
# return a list
--
2.11.0
More information about the elbe-devel
mailing list