WIP: log all calls to external processes
authorŁukasz Stelmach <l.stelmach@samsung.com>
Mon, 2 Oct 2023 09:12:44 +0000 (11:12 +0200)
committerŁukasz Stelmach <l.stelmach@samsung.com>
Mon, 2 Oct 2023 09:12:44 +0000 (11:12 +0200)
Change-Id: I56145d2a247bc417a4623b150eaed42713f8dcec
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
scripts/tizen/sd_fusing.py

index 2a79df0..c527e13 100755 (executable)
@@ -117,12 +117,16 @@ class RpiInitParams:
                 n = i + 1;
         d = "/dev/" + get_partition_device(self.device, n)
 
-        subprocess.run(['tune2fs', '-O', '^metadata_csum', d],
+        argv = ['tune2fs', '-O', '^metadata_csum', d]
+        logging.debug(" ".join(argv))
+        subprocess.run(argv,
                        stdin=subprocess.DEVNULL,
                        stdout=None, stderr=None)
 
         with tempfile.TemporaryDirectory() as mnt:
-            proc = subprocess.run(['mount', '-t', 'ext4', d, mnt],
+            argv = ['mount', '-t', 'ext4', d, mnt]
+            logging.debug(" ".join(argv))
+            proc = subprocess.run(argv,
                                   stdin=subprocess.DEVNULL,
                                   stdout=None, stderr=None)
             if proc.returncode != 0:
@@ -131,7 +135,9 @@ class RpiInitParams:
             for param, value in self.params:
                 with open(os.path.join(mnt, param), 'w') as f:
                     f.write(value + '\n')
-            subprocess.run(['umount', d],
+            argv = ['umount', d]
+            logging.debug(" ".join(argv))
+            subprocess.run(argv,
                            stdin=subprocess.DEVNULL,
                            stdout=None, stderr=None)
 
@@ -335,8 +341,10 @@ TARGETS = {
 }
 
 def device_size(device):
-    proc = subprocess.run(["sfdisk", "-s", device],
-                            stdout=subprocess.PIPE)
+    argv = ["sfdisk", "-s", device]
+    logging.debug(" ".join(argv))
+    proc = subprocess.run(argv,
+                          stdout=subprocess.PIPE)
     size = int(proc.stdout.decode('utf-8').strip()) >> 10
     logging.debug(f"{device} size {size}MiB")
     return size
@@ -367,15 +375,21 @@ def mkpart(args, target):
 
     #TODO: unmount target devices
     if support_delete:
-        logging.debug("Removing old partitions")
-        subprocess.run(['sfdisk', '--delete', Device])
+        logging.info("Removing old partitions")
+        argv = ['sfdisk', '--delete', Device]
+        logging.debug(" ".join(argv))
+        subprocess.run(argv)
     else:
-        logging.debug("Removing old partition table")
-        subprocess.run(['dd', 'if=/dev/zero', 'of=' + Device,
-                        'bs=512', 'count=32', 'conv=notrunc'])
+        logging.info("Removing old partition table")
+        argv = ['dd', 'if=/dev/zero', 'of=' + Device,
+                'bs=512', 'count=32', 'conv=notrunc']
+        logging.debug(" ".join(argv))
+        subprocess.run(argv)
 
     logging.debug("New partition table:\n" + str(target.label))
-    proc = subprocess.run(['sfdisk', Device],
+    argv = ['sfdisk', Device]
+    logging.debug(" ".join(argv))
+    proc = subprocess.run(argv,
                           stdout=None,
                           stderr=None,
                           input=str(target.label).encode())
@@ -391,14 +405,18 @@ def mkpart(args, target):
             continue
         logging.debug(f"Formatting {d} as {part['fstype']}")
         if part['fstype'] == 'vfat':
-            proc = subprocess.run(['mkfs.vfat', '-F', '16', '-n', part['name'], d],
+            argv = ['mkfs.vfat', '-F', '16', '-n', part['name'], d]
+            logging.debug(" ".join(argv))
+            proc = subprocess.run(argv,
                                   stdin=subprocess.DEVNULL,
                                   stdout=None, stderr=None)
             if proc.returncode != 0:
                 log.error(f"Failed to create FAT filesystem on {d}")
                 sys.exit(1)
         elif part['fstype'] == 'ext4':
-            proc = subprocess.run(['mkfs.ext4', '-q', '-L', part['name'], d],
+            argv = ['mkfs.ext4', '-q', '-L', part['name'], d]
+            logging.debug(" ".join(argv))
+            proc = subprocess.run(argv,
                                   stdin=subprocess.DEVNULL,
                                   stdout=None, stderr=None)
             if proc.returncode != 0:
@@ -435,9 +453,10 @@ def check_device(args):
             logging.error(f"Failed to create '{Device}', the file alread exists")
             sys.exit(1)
         else:
-            logging.debug(f"dd if=/dev/zero of={Device} conv=sparse bs=1M count={args.size}")
-            rc = subprocess.run(["dd", "if=/dev/zero", f"of={Device}",
-                                 "conv=sparse", "bs=1M", f"count={args.size}"])
+            argv = ["dd", "if=/dev/zero", f"of={Device}",
+                    "conv=sparse", "bs=1M", f"count={args.size}"]
+            logging.debug(" ".join(argv))
+            rc = subprocess.run(argv)
             if rc.returncode != 0:
                 logging.error("Failed to create the backing file")
                 sys.exit(1)
@@ -445,12 +464,11 @@ def check_device(args):
     if os.path.isfile(Device):
         global File
         File = Device
-        logging.debug(f"losetup --show --partscan --find {File}")
-
 
-        proc = subprocess.run(["losetup", "--show", "--partscan",
-                                 "--find", f"{File}"],
-                                stdout=subprocess.PIPE)
+        argv = ["losetup", "--show", "--partscan", "--find", f"{File}"]
+        logging.debug(" ".join(argv))
+        proc = subprocess.run(argv,
+                              stdout=subprocess.PIPE)
         Device = proc.stdout.decode('utf-8').strip()
         if proc.returncode != 0:
             logging.error(f"Failed to attach {File} to a loopback device")
@@ -493,7 +511,9 @@ def check_ddversion():
     return True
 
 def get_partition_device(device, idx):
-    proc = subprocess.run(['lsblk', device, '-o', 'TYPE,KNAME'],
+    argv = ['lsblk', device, '-o', 'TYPE,KNAME']
+    logging.debug(" ".join(argv))
+    proc = subprocess.run(argv,
                           stdout=subprocess.PIPE)
     for l in proc.stdout.decode('utf-8').splitlines():
         match = re.search(f"^part\s+(.*[^0-9]{idx})", l)
@@ -507,11 +527,13 @@ def do_fuse_file(f, name, target):
         logging.info(f"No partition defined for {name}, skipping.")
         return
     pdevice = "/dev/" + get_partition_device(Device, idx)
-    proc_dd = subprocess.Popen(['dd', 'bs=4M',
-                                'oflag=direct',
-                                'iflag=fullblock',
-                                'conv=nocreat',
-                                f"of={pdevice}"],
+    argv = ['dd', 'bs=4M',
+            'oflag=direct',
+            'iflag=fullblock',
+            'conv=nocreat',
+            f"of={pdevice}"]
+    logging.debug(" ".join(argv))
+    proc_dd = subprocess.Popen(argv,
                                bufsize=(4 << 20),
                                stdin=subprocess.PIPE,
                                stdout=None, stderr=None)
@@ -553,21 +575,23 @@ def do_fuse_image_super(tmpd, target):
     group_size = hal_aligned_size + rootfs_aligned_size
     super_size = metadata_aligned_size + 2 * group_size
 
-    proc = subprocess.run(["lpmake", "-F",
-                           f"-o={super_path}",
-                           f"--device-size={super_size}",
-                           f"--metadata-size={metadata_size}",
-                           f"--metadata-slots={metadata_slots}",
-                           "-g", f"tizen_a:{group_size}",
-                           "-p", f"rootfs_a:none:{rootfs_aligned_size}:tizen_a",
-                           "-p", f"hal_a:none:{hal_aligned_size}:tizen_a",
-                           "-g", f"tizen_b:{group_size}",
-                           "-p", f"rootfs_b:none:{rootfs_aligned_size}:tizen_b",
-                           "-p", f"hal_b:none:{hal_aligned_size}:tizen_b",
-                           "-i", "rootfs_a={root_path}",
-                           "-i", "rootfs_b={root_path}",
-                           "-i", "hal_a={hal_path}",
-                           "-i", "hal_b={hal_path}"],
+    argv = ["lpmake", "-F",
+            f"-o={super_path}",
+            f"--device-size={super_size}",
+            f"--metadata-size={metadata_size}",
+            f"--metadata-slots={metadata_slots}",
+            "-g", f"tizen_a:{group_size}",
+            "-p", f"rootfs_a:none:{rootfs_aligned_size}:tizen_a",
+            "-p", f"hal_a:none:{hal_aligned_size}:tizen_a",
+            "-g", f"tizen_b:{group_size}",
+            "-p", f"rootfs_b:none:{rootfs_aligned_size}:tizen_b",
+            "-p", f"hal_b:none:{hal_aligned_size}:tizen_b",
+            "-i", f"rootfs_a={rootfs_path}",
+            "-i", f"rootfs_b={rootfs_path}",
+            "-i", f"hal_a={hal_path}",
+            "-i", f"hal_b={hal_path}"]
+    logging.debug(" ".join(argv))
+    proc = subprocess.run(argv,
                           stdin=subprocess.DEVNULL,
                           stdout=None, stderr=None)