All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2] dbus-python: add host package
@ 2018-10-17 21:42 Brent Generous
  2018-10-18  9:02 ` Thomas Petazzoni
  0 siblings, 1 reply; 2+ messages in thread
From: Brent Generous @ 2018-10-17 21:42 UTC (permalink / raw)
  To: buildroot

This can be useful for Python scripts running on a host machine that
need to connect to a bus on a remote device, e.g. test scripts.

The target dbus-python depends on dbus instead of selecting it because
dbus has dependencies that check that it is supported. Using 'select'
would override those dependencies. For host-dbus, there are no such
checks -- it's assumed the host has the features neeeded to run dbus, so
it is okay to just depend on host-dbus.

The pyexpat dependency is not needed, as it is forced on for
host-python.

Signed-off-by: Brent Generous <bgenerous@impinj.com>
---
 package/dbus-python/dbus-python.mk | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/package/dbus-python/dbus-python.mk b/package/dbus-python/dbus-python.mk
index da04b7404f..6021b63060 100644
--- a/package/dbus-python/dbus-python.mk
+++ b/package/dbus-python/dbus-python.mk
@@ -12,6 +12,10 @@ DBUS_PYTHON_LICENSE_FILES = COPYING
 DBUS_PYTHON_DEPENDENCIES = dbus-glib
 DBUS_PYTHON_CONF_OPTS = --disable-html-docs --disable-api-docs
 
+HOST_DBUS_PYTHON_DEPENDENCIES = host-dbus host-dbus-glib \
+				$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python)
+HOST_DBUS_PYTHON_CONF_OPTS = $(DBUS_PYTHON_CONF_OPTS)
+
 ifeq ($(BR2_PACKAGE_PYTHON),y)
 DBUS_PYTHON_DEPENDENCIES += python host-python
 
@@ -19,6 +23,11 @@ DBUS_PYTHON_CONF_ENV += \
 	PYTHON=$(HOST_DIR)/bin/python2 \
 	PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python2-config --includes`" \
 	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python2-config --ldflags`"
+
+HOST_DBUS_PYTHON_CONF_ENV += \
+	PYTHON=$(HOST_DIR)/bin/python2 \
+	PYTHON_INCLUDES="`$(HOST_DIR)/usr/bin/python2-config --includes`" \
+	PYTHON_LIBS="`$(HOST_DIR)/usr/bin/python2-config --ldflags`"
 else
 DBUS_PYTHON_DEPENDENCIES += python3 host-python3
 
@@ -26,6 +35,12 @@ DBUS_PYTHON_CONF_ENV += \
 	PYTHON=$(HOST_DIR)/bin/python3 \
 	PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \
 	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`"
+
+HOST_DBUS_PYTHON_CONF_ENV += \
+	PYTHON=$(HOST_DIR)/bin/python3 \
+	PYTHON_INCLUDES="`$(HOST_DIR)/usr/bin/python3-config --includes`" \
+	PYTHON_LIBS="`$(HOST_DIR)/usr/bin/python3-config --ldflags`"
 endif
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
-- 
2.14.4

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

* [Buildroot] [PATCH v2] dbus-python: add host package
  2018-10-17 21:42 [Buildroot] [PATCH v2] dbus-python: add host package Brent Generous
@ 2018-10-18  9:02 ` Thomas Petazzoni
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Petazzoni @ 2018-10-18  9:02 UTC (permalink / raw)
  To: buildroot

Hello Brent,

Thanks for this contribution.

On Wed, 17 Oct 2018 21:42:41 +0000, Brent Generous wrote:
> This can be useful for Python scripts running on a host machine that
> need to connect to a bus on a remote device, e.g. test scripts.
> 
> The target dbus-python depends on dbus instead of selecting it because
> dbus has dependencies that check that it is supported. Using 'select'
> would override those dependencies. For host-dbus, there are no such
> checks -- it's assumed the host has the features neeeded to run dbus, so
> it is okay to just depend on host-dbus.

Correct.

> The pyexpat dependency is not needed, as it is forced on for
> host-python.
> 
> Signed-off-by: Brent Generous <bgenerous@impinj.com>

One thing that I'd like to see is this package added to
package/Config.in.host, and a package/dbus-python/Config.in.host.
Indeed, I continue to dislike "orphan" host packages, i.e host packages
that are neither a build dependency of some package in Buildroot, and
neither available through the menuconfig Host packages menu.

> diff --git a/package/dbus-python/dbus-python.mk b/package/dbus-python/dbus-python.mk
> index da04b7404f..6021b63060 100644
> --- a/package/dbus-python/dbus-python.mk
> +++ b/package/dbus-python/dbus-python.mk
> @@ -12,6 +12,10 @@ DBUS_PYTHON_LICENSE_FILES = COPYING
>  DBUS_PYTHON_DEPENDENCIES = dbus-glib
>  DBUS_PYTHON_CONF_OPTS = --disable-html-docs --disable-api-docs
>  
> +HOST_DBUS_PYTHON_DEPENDENCIES = host-dbus host-dbus-glib \

Why do you need host-dbus here? We don't have a dependency on "dbus"
for the target dbus-python package, so there's no reason to have a
dependency on host-dbus in the host-dbus-python package.

Just like dbus-glib has a dependency on dbus, host-dbus-glib has a
dependency on host-dbus. So it's not great to list host-dbus in
host-dbus-python dependencies, as it makes the dependencies not very
consistent between host and target.

> +				$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python)

Nit: just one tab for the indentation, don't try to align

> +HOST_DBUS_PYTHON_CONF_OPTS = $(DBUS_PYTHON_CONF_OPTS)

Please repeat --disable-html-docs --disable-api-docs here. It's pretty
dangerous to set host config options equal to target config options. We
can easily add more things to the target config options, without
realizing it's going to affect the host build as well.

>  ifeq ($(BR2_PACKAGE_PYTHON),y)
>  DBUS_PYTHON_DEPENDENCIES += python host-python
>  
> @@ -19,6 +23,11 @@ DBUS_PYTHON_CONF_ENV += \
>  	PYTHON=$(HOST_DIR)/bin/python2 \
>  	PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python2-config --includes`" \
>  	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python2-config --ldflags`"
> +
> +HOST_DBUS_PYTHON_CONF_ENV += \
> +	PYTHON=$(HOST_DIR)/bin/python2 \
> +	PYTHON_INCLUDES="`$(HOST_DIR)/usr/bin/python2-config --includes`" \
> +	PYTHON_LIBS="`$(HOST_DIR)/usr/bin/python2-config --ldflags`"
>  else
>  DBUS_PYTHON_DEPENDENCIES += python3 host-python3
>  
> @@ -26,6 +35,12 @@ DBUS_PYTHON_CONF_ENV += \
>  	PYTHON=$(HOST_DIR)/bin/python3 \
>  	PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \
>  	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`"
> +
> +HOST_DBUS_PYTHON_CONF_ENV += \
> +	PYTHON=$(HOST_DIR)/bin/python3 \
> +	PYTHON_INCLUDES="`$(HOST_DIR)/usr/bin/python3-config --includes`" \
> +	PYTHON_LIBS="`$(HOST_DIR)/usr/bin/python3-config --ldflags`"
>  endif
>  
>  $(eval $(autotools-package))
> +$(eval $(host-autotools-package))

I think there is an issue here. If you have neither
BR2_PACKAGE_PYTHON=y nor BR2_PACKAGE_PYTHON3=y, then:

	$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python)

will make you use host-python to build dbus-python.

But then the

ifeq ($(BR2_PACKAGE_PYTHON),y)
... use host python 2.x
else
... use host python 3.x
endif

will make you use python 3.x.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

end of thread, other threads:[~2018-10-18  9:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-17 21:42 [Buildroot] [PATCH v2] dbus-python: add host package Brent Generous
2018-10-18  9:02 ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.