diff mbox series

testimage: get real os-release file

Message ID 20250512155835.9159-1-peter.marko@siemens.com
State Accepted, archived
Commit ed43f9ccb3c08845259e24440912631afd780d12
Headers show
Series testimage: get real os-release file | expand

Commit Message

Marko, Peter May 12, 2025, 3:58 p.m. UTC
From: Peter Marko <peter.marko@siemens.com>

/etc/os-release is a symlink to /usr/lib.
Symlink is retrieved as a dead link which points to nowhere if also the
original file is not accompanying it.
Fetch the real file instead of this link.

Alternative could be to use "tar -h" (supported also by busybox tar),
however that could lose some important information if links are relevant
for failure analysis.

Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
 meta/classes-recipe/testimage.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Richard Purdie May 12, 2025, 10:21 p.m. UTC | #1
On Mon, 2025-05-12 at 17:58 +0200, Peter Marko via lists.openembedded.org wrote:
> From: Peter Marko <peter.marko@siemens.com>
> 
> /etc/os-release is a symlink to /usr/lib.
> Symlink is retrieved as a dead link which points to nowhere if also the
> original file is not accompanying it.
> Fetch the real file instead of this link.
> 
> Alternative could be to use "tar -h" (supported also by busybox tar),
> however that could lose some important information if links are relevant
> for failure analysis.
> 
> Signed-off-by: Peter Marko <peter.marko@siemens.com>
> ---
>  meta/classes-recipe/testimage.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
> index e090b1ef4b..862f3e53a3 100644
> --- a/meta/classes-recipe/testimage.bbclass
> +++ b/meta/classes-recipe/testimage.bbclass
> @@ -26,7 +26,7 @@ TESTIMAGE_FAILED_QA_ARTIFACTS = "\
>      ${localstatedir}/log \
>      ${localstatedir}/volatile/log \
>      ${sysconfdir}/version \
> -    ${sysconfdir}/os-release"
> +    ${nonarch_libdir}/os-release"
>  
>  # If some ptests are run and fail, retrieve corresponding directories
>  TESTIMAGE_FAILED_QA_ARTIFACTS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/*/ptest', '', d)}"

The definitive location for this is ${sysconfdir} as far as I know and
I'm nervous about replacing that. We could list both? For this file,
resolving the symlink is the right thing to do but that might not be
the case for all files listed in the variable which does make this
trickier to solve...

Cheers,

RIchard
Marko, Peter May 13, 2025, 7:41 a.m. UTC | #2
> -----Original Message-----
> From: Richard Purdie <richard.purdie@linuxfoundation.org>
> Sent: Tuesday, May 13, 2025 0:21
> To: Marko, Peter (FT D EU SK BFS1) <Peter.Marko@siemens.com>;
> openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core] [PATCH] testimage: get real os-release file
> 
> On Mon, 2025-05-12 at 17:58 +0200, Peter Marko via lists.openembedded.org
> wrote:
> > From: Peter Marko <peter.marko@siemens.com>
> >
> > /etc/os-release is a symlink to /usr/lib.
> > Symlink is retrieved as a dead link which points to nowhere if also the
> > original file is not accompanying it.
> > Fetch the real file instead of this link.
> >
> > Alternative could be to use "tar -h" (supported also by busybox tar),
> > however that could lose some important information if links are relevant
> > for failure analysis.
> >
> > Signed-off-by: Peter Marko <peter.marko@siemens.com>
> > ---
> >  meta/classes-recipe/testimage.bbclass | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-
> recipe/testimage.bbclass
> > index e090b1ef4b..862f3e53a3 100644
> > --- a/meta/classes-recipe/testimage.bbclass
> > +++ b/meta/classes-recipe/testimage.bbclass
> > @@ -26,7 +26,7 @@ TESTIMAGE_FAILED_QA_ARTIFACTS = "\
> >      ${localstatedir}/log \
> >      ${localstatedir}/volatile/log \
> >      ${sysconfdir}/version \
> > -    ${sysconfdir}/os-release"
> > +    ${nonarch_libdir}/os-release"
> >
> >  # If some ptests are run and fail, retrieve corresponding directories
> >  TESTIMAGE_FAILED_QA_ARTIFACTS +=
> "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/*/ptest', '', d)}"
> 
> The definitive location for this is ${sysconfdir} as far as I know and
> I'm nervous about replacing that. We could list both? For this file,
> resolving the symlink is the right thing to do but that might not be
> the case for all files listed in the variable which does make this
> trickier to solve...
> 
> Cheers,
> 
> Richard

OK, I'm sending a v2 to fetch both files.
I have also tested that the3 code works when a requested file does not exist.
If someone changes where the link points to, this variable will need to be adapted in such layer, too.

Peter
diff mbox series

Patch

diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
index e090b1ef4b..862f3e53a3 100644
--- a/meta/classes-recipe/testimage.bbclass
+++ b/meta/classes-recipe/testimage.bbclass
@@ -26,7 +26,7 @@  TESTIMAGE_FAILED_QA_ARTIFACTS = "\
     ${localstatedir}/log \
     ${localstatedir}/volatile/log \
     ${sysconfdir}/version \
-    ${sysconfdir}/os-release"
+    ${nonarch_libdir}/os-release"
 
 # If some ptests are run and fail, retrieve corresponding directories
 TESTIMAGE_FAILED_QA_ARTIFACTS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/*/ptest', '', d)}"