[master,kirkstone,v2] rootfs-postcommands: fix symlinks where link and output path are equal

Message ID 20220503095627.12752-1-davide.gardenal@huawei.com
State Accepted, archived
Commit bed63756c56f296ff3d5a7eef66e978bd19f1008
Headers show
Series [master,kirkstone,v2] rootfs-postcommands: fix symlinks where link and output path are equal | expand

Commit Message

Davide Gardenal May 3, 2022, 9:56 a.m. UTC
When creating the manifest and the testdata.json links, if the link
name is equal to the output name the link is not created, otherwise
it is. This prevents a link-to-self in the first case.

Signed-off-by: Davide Gardenal <davide.gardenal@huawei.com>
---
Updates:
    - v2: change tabs into spaces
---
 meta/classes/rootfs-postcommands.bbclass | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

Comments

Luca Ceresoli May 4, 2022, 8:26 a.m. UTC | #1
Hi Davide,

Il giorno Tue,  3 May 2022 11:56:27 +0200
"Davide Gardenal" <davidegarde2000@gmail.com> ha scritto:

> When creating the manifest and the testdata.json links, if the link
> name is equal to the output name the link is not created, otherwise
> it is. This prevents a link-to-self in the first case.
> 
> Signed-off-by: Davide Gardenal <davide.gardenal@huawei.com>
> ---
> Updates:
>     - v2: change tabs into spaces
> ---
>  meta/classes/rootfs-postcommands.bbclass | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/classes/rootfs-postcommands.bbclass
> b/meta/classes/rootfs-postcommands.bbclass index
> 7b92df69c5..2fa388ba95 100644 ---
> a/meta/classes/rootfs-postcommands.bbclass +++
> b/meta/classes/rootfs-postcommands.bbclass @@ -267,9 +267,10 @@
> python write_image_manifest () { 
>      if os.path.exists(manifest_name) and link_name:
>          manifest_link = deploy_dir + "/" + link_name + ".manifest"
> -        if os.path.lexists(manifest_link):
> -            os.remove(manifest_link)
> -        os.symlink(os.path.basename(manifest_name), manifest_link)
> +        if manifest_link != manifest_name

A missing ':' here causes parsing failures:

https://autobuilder.yoctoproject.org/typhoon/#/builders/83/builds/3616/steps/13/logs/stdio

At least some testing should be done on any patch before being sent. It
looks like either this didn't happen or the patch got mangled before it
was sent. Did you use 'git send-email' to send it?

Best regards.

Patch

diff --git a/meta/classes/rootfs-postcommands.bbclass b/meta/classes/rootfs-postcommands.bbclass
index 7b92df69c5..2fa388ba95 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -267,9 +267,10 @@  python write_image_manifest () {
 
     if os.path.exists(manifest_name) and link_name:
         manifest_link = deploy_dir + "/" + link_name + ".manifest"
-        if os.path.lexists(manifest_link):
-            os.remove(manifest_link)
-        os.symlink(os.path.basename(manifest_name), manifest_link)
+        if manifest_link != manifest_name
+            if os.path.lexists(manifest_link):
+                os.remove(manifest_link)
+            os.symlink(os.path.basename(manifest_name), manifest_link)
 }
 
 # Can be used to create /etc/timestamp during image construction to give a reasonably
@@ -339,9 +340,10 @@  python write_image_test_data() {
 
     if os.path.exists(testdata_name) and link_name:
         testdata_link = os.path.join(deploy_dir, "%s.testdata.json" % link_name)
-        if os.path.lexists(testdata_link):
-            os.remove(testdata_link)
-        os.symlink(os.path.basename(testdata_name), testdata_link)
+        if testdata_link != testdata_name:
+            if os.path.lexists(testdata_link):
+                os.remove(testdata_link)
+            os.symlink(os.path.basename(testdata_name), testdata_link)
 }
 write_image_test_data[vardepsexclude] += "TOPDIR"