public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [PATCH 1/3] wic: use part_name when defined
@ 2023-04-06  8:44 dit.kozmaj
  2023-04-06  8:44 ` [PATCH 2/3] selftest: wic: Add test for --part-name argument dit.kozmaj
  2023-04-06  8:44 ` [PATCH 3/3] kickstart: Expand label and part-name doc dit.kozmaj
  0 siblings, 2 replies; 3+ messages in thread
From: dit.kozmaj @ 2023-04-06  8:44 UTC (permalink / raw)
  To: openembedded-core; +Cc: Dit Kozmaj, Diego Rondini

From: Dit Kozmaj <dit.kozmaj@kynetics.com>

So far part.label has been used to define GPT partition label even if
part.part_name was defined.
Fix the code to use part.part_name whenever available, as it makes sense
to have a GPT partition label which is different from the contained
filesystem label.

Signed-off-by: Dit Kozmaj <dit.kozmaj@kynetics.com>
Signed-off-by: Diego Rondini <diego.rondini@kynetics.com>
---
 scripts/lib/wic/plugins/imager/direct.py | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py
index dfaa901567..7315d8f073 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -571,11 +571,12 @@ class PartitionedImage():
             self._create_partition(self.path, part.type,
                                    parted_fs_type, part.start, part.size_sec)
 
-            if part.part_name:
+            if self.ptable_format == "gpt" and (part.part_name or part.label):
+                partition_label = part.part_name if part.part_name else part.label
                 logger.debug("partition %d: set name to %s",
-                             part.num, part.part_name)
+                             part.num, partition_label)
                 exec_native_cmd("sgdisk --change-name=%d:%s %s" % \
-                                         (part.num, part.part_name,
+                                         (part.num, partition_label,
                                           self.path), self.native_sysroot)
 
             if part.part_type:
@@ -592,13 +593,6 @@ class PartitionedImage():
                                 (part.num, part.uuid, self.path),
                                 self.native_sysroot)
 
-            if part.label and self.ptable_format == "gpt":
-                logger.debug("partition %d: set name to %s",
-                             part.num, part.label)
-                exec_native_cmd("parted -s %s name %d %s" % \
-                                (self.path, part.num, part.label),
-                                self.native_sysroot)
-
             if part.active:
                 flag_name = "legacy_boot" if self.ptable_format == 'gpt' else "boot"
                 logger.debug("Set '%s' flag for partition '%s' on disk '%s'",
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/3] selftest: wic: Add test for --part-name argument
  2023-04-06  8:44 [PATCH 1/3] wic: use part_name when defined dit.kozmaj
@ 2023-04-06  8:44 ` dit.kozmaj
  2023-04-06  8:44 ` [PATCH 3/3] kickstart: Expand label and part-name doc dit.kozmaj
  1 sibling, 0 replies; 3+ messages in thread
From: dit.kozmaj @ 2023-04-06  8:44 UTC (permalink / raw)
  To: openembedded-core; +Cc: Dit Kozmaj

From: Dit Kozmaj <dit.kozmaj@kynetics.com>

Add test for wic --part-name argument in .wks file.
Test three different cases:
- Set only the --part-name argument.
- Set only the --label argument. In this case the GPT partition label
  is set to the value of --label for compatibility reasons.
- Set both. In this case the code has been changed to set the GPT
  partition label to the --part-name value.

The test uses a test_gpt_partition_name.wks file created for this
purpose.

Signed-off-by: Dit Kozmaj <dit.kozmaj@kynetics.com>
---
 meta-selftest/wic/test_gpt_partition_name.wks |  7 ++++++
 meta/lib/oeqa/selftest/cases/wic.py           | 23 +++++++++++++++++++
 2 files changed, 30 insertions(+)
 create mode 100644 meta-selftest/wic/test_gpt_partition_name.wks

diff --git a/meta-selftest/wic/test_gpt_partition_name.wks b/meta-selftest/wic/test_gpt_partition_name.wks
new file mode 100644
index 0000000000..7db6da9aee
--- /dev/null
+++ b/meta-selftest/wic/test_gpt_partition_name.wks
@@ -0,0 +1,7 @@
+# short-description: image to test part-name in GPT partitions
+
+part --fstype=ext4 --part-name boot-A --label boot --size 1M --align 1024
+part / --source rootfs --fstype=ext4 --part-name root-A --align 1024
+part --fstype=ext4 --label ext-space --size 1M --align 1024
+
+bootloader --ptable gpt
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py
index b26b649c3a..0b0ca90c1e 100644
--- a/meta/lib/oeqa/selftest/cases/wic.py
+++ b/meta/lib/oeqa/selftest/cases/wic.py
@@ -1348,6 +1348,29 @@ class Wic2(WicTestCase):
             if os.path.exists(image_path + '.bak'):
                 os.rename(image_path + '.bak', image_path)
 
+    def test_gpt_partition_name(self):
+        """Test --part-name argument to set partition name in GPT table"""
+        config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "test_gpt_partition_name.wks"\n'
+        self.append_config(config)
+        bitbake('core-image-minimal')
+        self.remove_config(config)
+        deploy_dir = get_bb_var('DEPLOY_DIR_IMAGE')
+        machine = self.td['MACHINE']
+
+        image_path = os.path.join(deploy_dir, 'core-image-minimal-%s.wic' % machine)
+        # Image is created
+        self.assertTrue(os.path.exists(image_path))
+
+        # Check the names of the three partitions
+        # as listed in test_gpt_partition_name.wks
+        result = runCmd("sfdisk --part-label %s 1" % image_path)
+        self.assertEqual('boot-A', result.output)
+        result = runCmd("sfdisk --part-label %s 2" % image_path)
+        self.assertEqual('root-A', result.output)
+        # When the --part-name is not defined, the partition name is equal to the --label
+        result = runCmd("sfdisk --part-label %s 3" % image_path)
+        self.assertEqual('ext-space', result.output)
+
 class ModifyTests(WicTestCase):
     def test_wic_ls(self):
         """Test listing image content using 'wic ls'"""
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 3/3] kickstart: Expand label and part-name doc
  2023-04-06  8:44 [PATCH 1/3] wic: use part_name when defined dit.kozmaj
  2023-04-06  8:44 ` [PATCH 2/3] selftest: wic: Add test for --part-name argument dit.kozmaj
@ 2023-04-06  8:44 ` dit.kozmaj
  1 sibling, 0 replies; 3+ messages in thread
From: dit.kozmaj @ 2023-04-06  8:44 UTC (permalink / raw)
  To: openembedded-core; +Cc: Dit Kozmaj

From: Dit Kozmaj <dit.kozmaj@kynetics.com>

Update --label and --part-name documentation to reflect the
behaviour with GPT partition format.

Signed-off-by: Dit Kozmaj <dit.kozmaj@kynetics.com>
---
 documentation/ref-manual/kickstart.rst | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/documentation/ref-manual/kickstart.rst b/documentation/ref-manual/kickstart.rst
index 297887805c..a01f035cd2 100644
--- a/documentation/ref-manual/kickstart.rst
+++ b/documentation/ref-manual/kickstart.rst
@@ -135,6 +135,8 @@ the ``part`` and ``partition`` commands:
 -  ``--label label``: Specifies the label to give to the filesystem to
    be made on the partition. If the given label is already in use by
    another filesystem, a new label is created for the partition.
+   If the partition table format is GPT and the ``--part-name`` is not
+   defined the partition name is set as the value of  ``--label``.
 
 -  ``--active``: Marks the partition as active.
 
@@ -172,7 +174,9 @@ the ``part`` and ``partition`` commands:
    "1.3".
 
 -  ``--part-name``: This option is a Wic-specific option that
-   specifies a name for GPT partitions.
+   specifies a name for GPT partitions. If both ``--part-name`` and
+   ``--label`` are defined, the partition name is set to the value of
+   ``--part-name``.
 
 -  ``--part-type``: This option is a Wic-specific option that
    specifies the partition type globally unique identifier (GUID) for
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-04-06  8:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-06  8:44 [PATCH 1/3] wic: use part_name when defined dit.kozmaj
2023-04-06  8:44 ` [PATCH 2/3] selftest: wic: Add test for --part-name argument dit.kozmaj
2023-04-06  8:44 ` [PATCH 3/3] kickstart: Expand label and part-name doc dit.kozmaj

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox