[oe,meta-oe] libgpiod: Enable python3 in default packageconfig

Message ID 20190828011436.24057-1-raj.khem@gmail.com
State New
Headers show
Series
  • [oe,meta-oe] libgpiod: Enable python3 in default packageconfig
Related show

Commit Message

Khem Raj Aug. 28, 2019, 1:14 a.m.
this recipe inherits python3native class conditionally, this condition
depends on a given packageconfig, however inherit ${VAR} syntax requires
VAR to be evaluated before inheriting it, therefore if someone appends
python3 to packageconfig via a bbappend, then the packageconfig will
become effective and add --enable-bindings-python to configure but
inherit wont evaluate correctly since the expression adding to
packageconfig

PACKAGECONFIG_append = " python3"

will be coming _after_ the inherit, and the builds will fail e.g.

| ../../../libgpiod-1.3/bindings/python/gpiodmodule.c:8:10: fatal error: Python.h: No such file or directory
|  #include <Python.h>

This patch inverts the logic, meaning if someone has to disable python3
bindings should write a bbappend e.g.

PACKAGECONFIG_remove = "python3"

This will still mean that python3native will be inherited but the
effective configure option will be --disable-bindings-python and that
will do the right thing

See. https://github.com/openembedded/meta-openembedded/issues/140

Signed-off-by: Khem Raj <raj.khem@gmail.com>

---
 meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.23.0

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

Comments

Adrian Bunk Aug. 28, 2019, 5:22 a.m. | #1
On Tue, Aug 27, 2019 at 06:14:36PM -0700, Khem Raj wrote:
> this recipe inherits python3native class conditionally, this condition

> depends on a given packageconfig, however inherit ${VAR} syntax requires

> VAR to be evaluated before inheriting it, therefore if someone appends

> python3 to packageconfig via a bbappend, then the packageconfig will

> become effective and add --enable-bindings-python to configure but

> inherit wont evaluate correctly since the expression adding to

> packageconfig

> 

> PACKAGECONFIG_append = " python3"

> 

> will be coming _after_ the inherit, and the builds will fail e.g.

> 

> | ../../../libgpiod-1.3/bindings/python/gpiodmodule.c:8:10: fatal error: Python.h: No such file or directory

> |  #include <Python.h>

> 

> This patch inverts the logic, meaning if someone has to disable python3

> bindings should write a bbappend e.g.

> 

> PACKAGECONFIG_remove = "python3"

> 

> This will still mean that python3native will be inherited but the

> effective configure option will be --disable-bindings-python and that

> will do the right thing

>...

>  # enable tools and cxx bindings

> -PACKAGECONFIG ?= "cxx tools"

> +PACKAGECONFIG ?= "cxx tools python3"

>...


It looks very fragile to me when a PACKAGECONFIG has this kind of 
unexpected side effects.

If I understand it correctly, for solving the problem you want 
python3native always inherited. And the simple way to do this would
be to make the inherit unconditionally without touching PACKAGECONFIG.

Anything I miss here?

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

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

Patch

diff --git a/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb b/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb
index 756b143ef7..ea1e49129b 100644
--- a/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb
+++ b/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb
@@ -6,7 +6,7 @@  SRC_URI[md5sum] = "585b4bb431f99c4ba9b3ee58b9d494c1"
 SRC_URI[sha256sum] = "21ae8fd1f8dafc2eb2ba50e652390cf533d21351419a7426255895cb52e21b1c"
 
 # enable tools and cxx bindings
-PACKAGECONFIG ?= "cxx tools"
+PACKAGECONFIG ?= "cxx tools python3"
 
 PACKAGECONFIG[cxx] = "--enable-bindings-cxx,--disable-bindings-cxx"
 PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev"