diff mbox series

base: improve do_unpack[cleandirs] logic

Message ID 20180425135818.23345-1-ross.burton@intel.com
State Superseded
Headers show
Series base: improve do_unpack[cleandirs] logic | expand

Commit Message

Ross Burton April 25, 2018, 1:58 p.m. UTC
If a recipe sets S to ${WORKDIR}/ then the S != WORKDIR test doesn't work as
expected.  Use os.path.samefile() instead of string comparisons to do the right
thing.

Signed-off-by: Ross Burton <ross.burton@intel.com>

---
 meta/classes/base.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.11.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Ross Burton April 26, 2018, 10:45 a.m. UTC | #1
Retracting this, doesn't work on a clean build dir.

Ross

On 25 April 2018 at 14:58, Ross Burton <ross.burton@intel.com> wrote:
> If a recipe sets S to ${WORKDIR}/ then the S != WORKDIR test doesn't work as

> expected.  Use os.path.samefile() instead of string comparisons to do the right

> thing.

>

> Signed-off-by: Ross Burton <ross.burton@intel.com>

> ---

>  meta/classes/base.bbclass | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass

> index bb1f4b75336..7ddf70414a1 100644

> --- a/meta/classes/base.bbclass

> +++ b/meta/classes/base.bbclass

> @@ -152,7 +152,7 @@ python base_do_fetch() {

>  addtask unpack after do_fetch

>  do_unpack[dirs] = "${WORKDIR}"

>

> -do_unpack[cleandirs] = "${@d.getVar('S') if d.getVar('S') != d.getVar('WORKDIR') else os.path.join('${S}', 'patches')}"

> +do_unpack[cleandirs] = "${@os.path.join('${S}', 'patches') if os.path.samefile(d.getVar('S'), d.getVar('WORKDIR')) else d.getVar('S')}"

>

>  python base_do_unpack() {

>      src_uri = (d.getVar('SRC_URI') or "").split()

> --

> 2.11.0

>

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Peter Kjellerstedt April 27, 2018, 4:34 p.m. UTC | #2
> -----Original Message-----

> From: openembedded-core-bounces@lists.openembedded.org

> [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of

> Burton, Ross

> Sent: den 26 april 2018 12:46

> To: OE-core <openembedded-core@lists.openembedded.org>

> Subject: Re: [OE-core] [PATCH] base: improve do_unpack[cleandirs] logic

> 

> Retracting this, doesn't work on a clean build dir.

> 

> Ross

> 

> On 25 April 2018 at 14:58, Ross Burton <ross.burton@intel.com> wrote:

> > If a recipe sets S to ${WORKDIR}/ then the S != WORKDIR test doesn't

> work as

> > expected.  Use os.path.samefile() instead of string comparisons to do

> the right

> > thing.

> >

> > Signed-off-by: Ross Burton <ross.burton@intel.com>

> > ---

> >  meta/classes/base.bbclass | 2 +-

> >  1 file changed, 1 insertion(+), 1 deletion(-)

> >

> > diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass

> > index bb1f4b75336..7ddf70414a1 100644

> > --- a/meta/classes/base.bbclass

> > +++ b/meta/classes/base.bbclass

> > @@ -152,7 +152,7 @@ python base_do_fetch() {

> >  addtask unpack after do_fetch

> >  do_unpack[dirs] = "${WORKDIR}"

> >

> > -do_unpack[cleandirs] = "${@d.getVar('S') if d.getVar('S') != d.getVar('WORKDIR') else os.path.join('${S}', 'patches')}"


This should work even if the paths don't exist:

do_unpack[cleandirs] = "${@d.getVar('S') if os.path.realpath(d.getVar('S')) != os.path.realpath(d.getVar('WORKDIR')) else os.path.join('${S}', 'patches')}"

> > +do_unpack[cleandirs] = "${@os.path.join('${S}', 'patches') if os.path.samefile(d.getVar('S'), d.getVar('WORKDIR')) else d.getVar('S')}"

> >

> >  python base_do_unpack() {

> >      src_uri = (d.getVar('SRC_URI') or "").split()

> > --

> > 2.11.0


//Peter

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Ross Burton April 27, 2018, 6:45 p.m. UTC | #3
I thought I sent a V2 using normpath() which works a lot better.
Looks like I forgot...

On 27 April 2018 at 17:34, Peter Kjellerstedt
<peter.kjellerstedt@axis.com> wrote:
>> -----Original Message-----

>> From: openembedded-core-bounces@lists.openembedded.org

>> [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of

>> Burton, Ross

>> Sent: den 26 april 2018 12:46

>> To: OE-core <openembedded-core@lists.openembedded.org>

>> Subject: Re: [OE-core] [PATCH] base: improve do_unpack[cleandirs] logic

>>

>> Retracting this, doesn't work on a clean build dir.

>>

>> Ross

>>

>> On 25 April 2018 at 14:58, Ross Burton <ross.burton@intel.com> wrote:

>> > If a recipe sets S to ${WORKDIR}/ then the S != WORKDIR test doesn't

>> work as

>> > expected.  Use os.path.samefile() instead of string comparisons to do

>> the right

>> > thing.

>> >

>> > Signed-off-by: Ross Burton <ross.burton@intel.com>

>> > ---

>> >  meta/classes/base.bbclass | 2 +-

>> >  1 file changed, 1 insertion(+), 1 deletion(-)

>> >

>> > diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass

>> > index bb1f4b75336..7ddf70414a1 100644

>> > --- a/meta/classes/base.bbclass

>> > +++ b/meta/classes/base.bbclass

>> > @@ -152,7 +152,7 @@ python base_do_fetch() {

>> >  addtask unpack after do_fetch

>> >  do_unpack[dirs] = "${WORKDIR}"

>> >

>> > -do_unpack[cleandirs] = "${@d.getVar('S') if d.getVar('S') != d.getVar('WORKDIR') else os.path.join('${S}', 'patches')}"

>

> This should work even if the paths don't exist:

>

> do_unpack[cleandirs] = "${@d.getVar('S') if os.path.realpath(d.getVar('S')) != os.path.realpath(d.getVar('WORKDIR')) else os.path.join('${S}', 'patches')}"

>

>> > +do_unpack[cleandirs] = "${@os.path.join('${S}', 'patches') if os.path.samefile(d.getVar('S'), d.getVar('WORKDIR')) else d.getVar('S')}"

>> >

>> >  python base_do_unpack() {

>> >      src_uri = (d.getVar('SRC_URI') or "").split()

>> > --

>> > 2.11.0

>

> //Peter

>

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
diff mbox series

Patch

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index bb1f4b75336..7ddf70414a1 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -152,7 +152,7 @@  python base_do_fetch() {
 addtask unpack after do_fetch
 do_unpack[dirs] = "${WORKDIR}"
 
-do_unpack[cleandirs] = "${@d.getVar('S') if d.getVar('S') != d.getVar('WORKDIR') else os.path.join('${S}', 'patches')}"
+do_unpack[cleandirs] = "${@os.path.join('${S}', 'patches') if os.path.samefile(d.getVar('S'), d.getVar('WORKDIR')) else d.getVar('S')}"
 
 python base_do_unpack() {
     src_uri = (d.getVar('SRC_URI') or "").split()