Skip to contentSkip to conversation

wic: support filesystem label for rawcopy

PATCH In review Martin Hundebøll 1 participant 2 messages Dec 11, 2017 – Jan 2, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 wic: support filesystem label for rawcopy

The '--label' argument should work for '--source rawcopy' as it does for '--source rootfs', so add a method in RawCopyPlugin to update the label on the temporary filesystem images.

---

Hi Armin,

Please consider this for Rocko.

Thanks

 scripts/lib/wic/plugins/source/rawcopy.py | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
scripts/lib/wic/plugins/source/rawcopy.py +22 -0
index 424ed26ed6..e86398ac8f 100644
@@ -32,6 +32,25 @@ class RawCopyPlugin(SourcePlugin):
 
     name = 'rawcopy'
 
+    @staticmethod
+    def do_image_label(fstype, dst, label):
+        if fstype.startswith('ext'):
+            cmd = 'tune2fs -L %s %s' % (label, dst)
+        elif fstype in ('msdos', 'vfat'):
+            cmd = 'dosfslabel %s %s' % (dst, label)
+        elif fstype == 'btrfs':
+            cmd = 'btrfs filesystem label %s %s' % (dst, label)
+        elif fstype == 'swap':
+            cmd = 'mkswap -L %s %s' % (label, dst)
+        elif fstype == 'squashfs':
+            raise WicError("It's not possible to update a squashfs "
+                           "filesystem label '%s'" % (label))
+        else:
+            raise WicError("Cannot update filesystem label: "
+                           "Unknown fstype: '%s'" % (fstype))
+
+        exec_cmd(cmd)
+
     @classmethod
     def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
                              oe_builddir, bootimg_dir, kernel_dir,
@@ -66,4 +85,7 @@ class RawCopyPlugin(SourcePlugin):
         if filesize > part.size:
             part.size = filesize
 
+        if part.label:
+            RawCopyPlugin.do_image_label(part.fstype, dst, part.label)
+
         part.source_file = dst
Signature · 1 line
2.15.1
#1 lore raw

Hi Armin,

Any idea about when this will land in the rocko branch?

Thanks,
Martin

Quoted 56 lines · Martin Hundebøll

The '--label' argument should work for '--source rawcopy' as it does for '--source rootfs', so add a method in RawCopyPlugin to update the label on the temporary filesystem images.

---

Hi Armin,

Please consider this for Rocko.

Thanks

  scripts/lib/wic/plugins/source/rawcopy.py | 22 ++++++++++++++++++++++
  1 file changed, 22 insertions(+)
scripts/lib/wic/plugins/source/rawcopy.py +22 -0
index 424ed26ed6..e86398ac8f 100644
@@ -32,6 +32,25 @@ class RawCopyPlugin(SourcePlugin):
 
      name = 'rawcopy'
 
+    @staticmethod
+    def do_image_label(fstype, dst, label):
+        if fstype.startswith('ext'):
+            cmd = 'tune2fs -L %s %s' % (label, dst)
+        elif fstype in ('msdos', 'vfat'):
+            cmd = 'dosfslabel %s %s' % (dst, label)
+        elif fstype == 'btrfs':
+            cmd = 'btrfs filesystem label %s %s' % (dst, label)
+        elif fstype == 'swap':
+            cmd = 'mkswap -L %s %s' % (label, dst)
+        elif fstype == 'squashfs':
+            raise WicError("It's not possible to update a squashfs "
+                           "filesystem label '%s'" % (label))
+        else:
+            raise WicError("Cannot update filesystem label: "
+                           "Unknown fstype: '%s'" % (fstype))
+
+        exec_cmd(cmd)
+
      @classmethod
      def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
                               oe_builddir, bootimg_dir, kernel_dir,
@@ -66,4 +85,7 @@ class RawCopyPlugin(SourcePlugin):
          if filesize > part.size:
              part.size = filesize
 
+        if part.label:
+            RawCopyPlugin.do_image_label(part.fstype, dst, part.label)
+
          part.source_file = dst