package: Introduce $(2)_INFRA_EXTRA_DEPENDENCIES
PATCH 1/1 package: Introduce $(2)_INFRA_EXTRA_DEPENDENCIES
Instead of repeating the filter-out function to remove the host-package that we don't want as dependencies in each infra, handle it it pkg-generic through a generic variable, which is specified by each infra.
The $(2)_INFRA_EXTRA_DEPENDENCIES contains the specific host package that we want to filter from the package's dependencies.
--- package/pkg-autotools.mk | 12 ++++-------- package/pkg-cmake.mk | 7 ------- package/pkg-generic.mk | 3 ++- package/pkg-python.mk | 17 +++-------------- package/pkg-rebar.mk | 16 +++++++--------- package/pkg-virtual.mk | 7 ------- 6 files changed, 16 insertions(+), 46 deletions(-)
package/pkg-autotools.mk +4 -8
@@ -159,14 +159,10 @@ $(2)_INSTALL_OPTS ?= install $(2)_INSTALL_STAGING_OPTS ?= DESTDIR=$$(STAGING_DIR) install $(2)_INSTALL_TARGET_OPTS ?= DESTDIR=$$(TARGET_DIR) install -# This must be repeated from inner-generic-package, otherwise we get an empty -# _DEPENDENCIES if _AUTORECONF is YES. Also filter the result of _AUTORECONF -# and _GETTEXTIZE away from the non-host rule -ifeq ($(4),host) -$(2)_DEPENDENCIES ?= $$(filter-out host-automake host-autoconf host-libtool \ - host-gettext host-skeleton host-toolchain $(1),\ - $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) -endif +# Specifiy the packages that needs to be excluded and are specific to this +# package infrastructure. +$(2)_INFRA_EXTRA_DEPENDENCIES = host-automake host-autoconf host-libtool \ + host-gettext # # Configure step. Only define it if not already defined by the package
package/pkg-cmake.mk +0 -7
@@ -143,13 +143,6 @@ endef endif endif -# This must be repeated from inner-generic-package, otherwise we only get -# host-cmake in _DEPENDENCIES because of the following line -ifeq ($(4),host) -$(2)_DEPENDENCIES ?= $$(filter-out host-skeleton host-toolchain $(1),\ - $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) -endif - $(2)_DEPENDENCIES += host-cmake #
package/pkg-generic.mk +2 -1
@@ -405,7 +405,8 @@ $(2)_REDISTRIBUTE ?= YES $(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES ifeq ($(4),host) -$(2)_DEPENDENCIES ?= $$(filter-out host-skeleton host-toolchain $(1),\ +$(2)_DEPENDENCIES ?= $$(filter-out \ + host-skeleton host-toolchain $$($(2)_INFRA_EXTRA_DEPENDENCIES) $(1),\ $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) endif ifeq ($(4),target)
package/pkg-python.mk +3 -14
@@ -138,20 +138,9 @@ else $$(error "Invalid $(2)_SETUP_TYPE. Valid options are 'distutils' or 'setuptools'") endif -# The below statement intends to calculate the dependencies of host -# packages by derivating them from the dependencies of the -# corresponding target package, after adding the 'host-' prefix in -# front of the dependencies. -# -# However it must be repeated from inner-generic-package, as we need -# to exclude the python, host-python and host-python-setuptools -# packages, which are added below in the list of dependencies -# depending on the package characteristics, and shouldn't be derived -# automatically from the dependencies of the corresponding target -# package. -ifeq ($(4),host) -$(2)_DEPENDENCIES ?= $$(filter-out host-python host-python3 host-python-setuptools host-skeleton host-toolchain $(1),$$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) -endif +# Specifiy the packages that needs to be excluded and are specific to this +# package infrastructure. +$(2)_INFRA_EXTRA_DEPENDENCIES = host-python host-python3 host-python-setuptools # Target packages need both the python interpreter on the target (for # runtime) and the python interpreter on the host (for
package/pkg-rebar.mk +7 -9
@@ -187,17 +187,15 @@ endif else # !target ifeq ($$($(2)_USE_AUTOCONF),YES) -# This must be repeated from inner-autotools-package, otherwise we get -# an empty _DEPENDENCIES if _AUTORECONF is YES or _USE_BUNDLED_REBAR -# is NO. Also filter the result of _AUTORECONF and _GETTEXTIZE away -# from the non-host rule -$(2)_DEPENDENCIES ?= $$(filter-out host-automake host-autoconf host-libtool \ - host-gettext host-skeleton host-toolchain host-erlang-rebar $(1),\ - $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) +# Specifiy the packages that needs to be excluded and are specific to this +# package infrastructure. +# if _AUTORECONF is YES or _USE_BUNDLED_REBAR is NO. Also filter the result of +#_AUTORECONF and _GETTEXTIZE away from the non-host rule +$(2)_INFRA_EXTRA_DEPENDENCIES = host-automake host-autoconf host-libtool \ + host-gettext host-erlang-rebar else # Same deal, if _USE_BUNDLED_REBAR is NO. -$(2)_DEPENDENCIES ?= $$(filter-out host-skeleton host-toolchain host-erlang-rebar $(1),\ - $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) +$(2)_INFRA_EXTRA_DEPENDENCIES = host-erlang-rebar endif # Host packages need the erlang interpreter on the host
package/pkg-virtual.mk +0 -7
@@ -47,13 +47,6 @@ $(2)_SOURCE = # Fake a version string, so it looks nicer in the build log $(2)_VERSION = virtual -# This must be repeated from inner-generic-package, otherwise we get an empty -# _DEPENDENCIES -ifeq ($(4),host) -$(2)_DEPENDENCIES ?= $$(filter-out host-skeleton host-toolchain $(1),\ - $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) -endif - # Add dependency against the provider $(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2)))
Signature · 1 line
2.1.4
PATCH 1/1 package: Introduce $(2)_INFRA_EXTRA_DEPENDENCIES
Quoted 7 lines · Maxime Hadjinlian
Instead of repeating the filter-out function to remove the host-package that we don't want as dependencies in each infra, handle it it pkg-generic through a generic variable, which is specified by each infra.
The $(2)_INFRA_EXTRA_DEPENDENCIES contains the specific host package that we want to filter from the package's dependencies.
I love it!
However, it doesn't work AFAICS...
[snip]
package/pkg-virtual.mk $(2)_SOURCE = · line 51
Quoted 9 lines
package/pkg-virtual.mk +0
-7-# This must be repeated from inner-generic-package, otherwise we get an empty -# _DEPENDENCIES -ifeq ($(4),host) -$(2)_DEPENDENCIES ?= $$(filter-out host-skeleton host-toolchain $(1),\ - $$(patsubst host-host-%,host-%,$$(addprefix host-,$$($(3)_DEPENDENCIES)))) -endif - # Add dependency against the provider $(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2)))
Since we add to _DEPENDENCIES here, _DEPENDENCIES is not empty, and the ?= in
inner-generic-package does not trigger. That was the original reason why the rule had to be repeated in each infra, not because we want to exclude additional dependencies.
So instead, what we need is a real $(2)_INFRA_EXTRA_DEPENDENCIES, which we can
safely append to because it will not be used by the package.mk file itself. Or as mentioned on IRC, as an extra argument.
Regards,
Arnout
Quoted 2 lines
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH 1/1 package: Introduce $(2)_INFRA_EXTRA_DEPENDENCIES
In reply to Maxime HadjinlianDear Maxime Hadjinlian,
Quoted 9 lines · Maxime Hadjinlian
Instead of repeating the filter-out function to remove the host-package that we don't want as dependencies in each infra, handle it it pkg-generic through a generic variable, which is specified by each infra.
The $(2)_INFRA_EXTRA_DEPENDENCIES contains the specific host package that we want to filter from the package's dependencies.
Signed-off-by Maxime Hadjinlian <[email protected]>
Quoted 8 lines
--- package/pkg-autotools.mk | 12 ++++-------- package/pkg-cmake.mk | 7 ------- package/pkg-generic.mk | 3 ++- package/pkg-python.mk | 17 +++-------------- package/pkg-rebar.mk | 16 +++++++--------- package/pkg-virtual.mk | 7 ------- 6 files changed, 16 insertions(+), 46 deletions(-)
This patch has received some comments. Could you please handle them, and resubmit an updated version?
In the mean time, patch marked as Changes Requested.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com