[Buildroot] [PATCH v2] dbus-python: add host package

Thomas Petazzoni thomas.petazzoni at bootlin.com
Thu Oct 18 09:02:40 UTC 2018


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 at 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



More information about the buildroot mailing list