* [Buildroot] [PATCH v2 0/2] Include makefiles from GLOBAL_PATCH_DIR @ 2019-11-09 18:55 Jérémy Rosen 2019-11-09 18:55 ` [Buildroot] [PATCH v2 1/2] allow .smk files as includes in packages Jérémy Rosen ` (2 more replies) 0 siblings, 3 replies; 5+ messages in thread From: Jérémy Rosen @ 2019-11-09 18:55 UTC (permalink / raw) To: buildroot V2: * fix includes happening multiple times on host+target packages * change name of included makefiles from .mk to .smk (see commit for details) Note that the first patch might be usefull independently of the (more controversial) second patch. I am opened to changing the .smk to any pattern you suggest I am not sure where to fit this in the documentation. suggestions welcomed J?r?my Rosen (2): allow .smk files as includes in packages Include makefiles from GLOBAL_PATCH_DIR package/pkg-autotools.mk | 1 + package/pkg-cmake.mk | 1 + package/pkg-generic.mk | 8 ++++++-- package/pkg-golang.mk | 1 + package/pkg-kconfig.mk | 1 + package/pkg-kernel-module.mk | 1 + package/pkg-luarocks.mk | 1 + package/pkg-meson.mk | 1 + package/pkg-perl.mk | 1 + package/pkg-python.mk | 1 + package/pkg-rebar.mk | 1 + package/pkg-utils.mk | 21 ++++++++++++++++++++- package/pkg-virtual.mk | 1 + package/pkg-waf.mk | 1 + 14 files changed, 38 insertions(+), 3 deletions(-) -- 2.24.0.rc1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH v2 1/2] allow .smk files as includes in packages 2019-11-09 18:55 [Buildroot] [PATCH v2 0/2] Include makefiles from GLOBAL_PATCH_DIR Jérémy Rosen @ 2019-11-09 18:55 ` Jérémy Rosen 2019-11-09 18:55 ` [Buildroot] [PATCH v2 2/2] Include makefiles from GLOBAL_PATCH_DIR Jérémy Rosen 2020-09-05 20:32 ` [Buildroot] [PATCH v2 0/2] " Yann E. MORIN 2 siblings, 0 replies; 5+ messages in thread From: Jérémy Rosen @ 2019-11-09 18:55 UTC (permalink / raw) To: buildroot Currently, when using the include directive in a package's .mk, buildroot will create a new package. It is impossible to include a makefile for the normal inclusion purpose This is hardwired in many places, both in buildroot-core and in the way makefiles are included in BR2_EXTERNAL. This can't be changed without breaking external code Instead, use a different extension for "normal" includes and filter them out in pkgdir Signed-off-by: J?r?my Rosen <jeremy.rosen@smile.fr> --- package/pkg-utils.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk index 63b19e812b..ebab55a0fd 100644 --- a/package/pkg-utils.mk +++ b/package/pkg-utils.mk @@ -30,7 +30,7 @@ endef # directory from its makefile directory, using the $(MAKEFILE_LIST) # variable provided by make. This is used by the *-package macros to # automagically find where the package is located. -pkgdir = $(dir $(lastword $(MAKEFILE_LIST))) +pkgdir = $(dir $(lastword $(filter-out %.smk,$(MAKEFILE_LIST)))) pkgname = $(lastword $(subst /, ,$(pkgdir))) # Define extractors for different archive suffixes -- 2.24.0.rc1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH v2 2/2] Include makefiles from GLOBAL_PATCH_DIR 2019-11-09 18:55 [Buildroot] [PATCH v2 0/2] Include makefiles from GLOBAL_PATCH_DIR Jérémy Rosen 2019-11-09 18:55 ` [Buildroot] [PATCH v2 1/2] allow .smk files as includes in packages Jérémy Rosen @ 2019-11-09 18:55 ` Jérémy Rosen 2020-09-05 20:32 ` [Buildroot] [PATCH v2 0/2] " Yann E. MORIN 2 siblings, 0 replies; 5+ messages in thread From: Jérémy Rosen @ 2019-11-09 18:55 UTC (permalink / raw) To: buildroot Including a file named <pkgname>.mk from the GLOBAL_PATCH_DIR allows a user to tweak a package provided by buildroot to his own need. * add a function to pkg-utils.mk to include makefiles from GLOBAL_PATCH_DIR * modify all pkg-* to use it as their first action Signed-off-by: J?r?my Rosen <jeremy.rosen@smile.fr> --- package/pkg-autotools.mk | 1 + package/pkg-cmake.mk | 1 + package/pkg-generic.mk | 8 ++++++-- package/pkg-golang.mk | 1 + package/pkg-kconfig.mk | 1 + package/pkg-kernel-module.mk | 1 + package/pkg-luarocks.mk | 1 + package/pkg-meson.mk | 1 + package/pkg-perl.mk | 1 + package/pkg-python.mk | 1 + package/pkg-rebar.mk | 1 + package/pkg-utils.mk | 19 +++++++++++++++++++ package/pkg-virtual.mk | 1 + package/pkg-waf.mk | 1 + 14 files changed, 37 insertions(+), 2 deletions(-) diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk index daa688dab6..b18ee4edf5 100644 --- a/package/pkg-autotools.mk +++ b/package/pkg-autotools.mk @@ -119,6 +119,7 @@ endef ################################################################################ define inner-autotools-package +$(call global-patchdir-include,$(1),$(2)) ifndef $(2)_LIBTOOL_PATCH ifdef $(3)_LIBTOOL_PATCH diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk index 57bfea9be5..beb4af0b67 100644 --- a/package/pkg-cmake.mk +++ b/package/pkg-cmake.mk @@ -50,6 +50,7 @@ endif ################################################################################ define inner-cmake-package +$(call global-patchdir-include,$(1),$(2)) $(2)_CONF_ENV ?= $(2)_CONF_OPTS ?= diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 7d6fa08418..3de939f087 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -414,6 +414,10 @@ endef # undesired behavior occurs with respect to these variables and functions. # ################################################################################ +define intermediate-generic-package +$(call global-patchdir-include,$(1),$(2)) +$(call inner-generic-package,$(1),$(2),$(3),$(4)) +endef define inner-generic-package @@ -1126,8 +1130,8 @@ endef # inner-generic-package ################################################################################ # In the case of target packages, keep the package name "pkg" -generic-package = $(call inner-generic-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +generic-package = $(call intermediate-generic-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) # In the case of host packages, turn the package name "pkg" into "host-pkg" -host-generic-package = $(call inner-generic-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) +host-generic-package = $(call intermediate-generic-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) # :mode=makefile: diff --git a/package/pkg-golang.mk b/package/pkg-golang.mk index e47de17aba..916645c52d 100644 --- a/package/pkg-golang.mk +++ b/package/pkg-golang.mk @@ -55,6 +55,7 @@ GO_HOST_ENV = \ ################################################################################ define inner-golang-package +$(call global-patchdir-include,$(1),$(2)) $(2)_WORKSPACE ?= _gopath diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk index 86d7c14fdb..5e06adaa0d 100644 --- a/package/pkg-kconfig.mk +++ b/package/pkg-kconfig.mk @@ -77,6 +77,7 @@ endef ################################################################################ define inner-kconfig-package +$(call global-patchdir-include,$(1),$(2)) # Register the kconfig dependencies as regular dependencies, so that # they are also accounted for in the generated graphs. diff --git a/package/pkg-kernel-module.mk b/package/pkg-kernel-module.mk index fcd6b8bc29..b9e211aac1 100644 --- a/package/pkg-kernel-module.mk +++ b/package/pkg-kernel-module.mk @@ -43,6 +43,7 @@ ################################################################################ define inner-kernel-module +$(call global-patchdir-include,$(1),$(2)) # If the package is enabled, ensure the kernel will support modules ifeq ($$(BR2_PACKAGE_$(2)),y) diff --git a/package/pkg-luarocks.mk b/package/pkg-luarocks.mk index 78d6c325f8..9a2b508532 100644 --- a/package/pkg-luarocks.mk +++ b/package/pkg-luarocks.mk @@ -32,6 +32,7 @@ ################################################################################ define inner-luarocks-package +$(call global-patchdir-include,$(1),$(2)) $(2)_BUILD_OPTS ?= $(2)_NAME_UPSTREAM ?= $(1) diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk index e7eea2aa58..a6fe8ec71a 100644 --- a/package/pkg-meson.mk +++ b/package/pkg-meson.mk @@ -44,6 +44,7 @@ NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) ################################################################################ define inner-meson-package +$(call global-patchdir-include,$(1),$(2)) $(2)_CONF_ENV ?= $(2)_CONF_OPTS ?= diff --git a/package/pkg-perl.mk b/package/pkg-perl.mk index 1ecf31eff9..88cc00c5f6 100644 --- a/package/pkg-perl.mk +++ b/package/pkg-perl.mk @@ -38,6 +38,7 @@ PERL_RUN = PERL5LIB= PERL_USE_UNSAFE_INC=1 $(HOST_DIR)/bin/perl ################################################################################ define inner-perl-package +$(call global-patchdir-include,$(1),$(2)) # Target packages need both the perl interpreter on the target (for # runtime) and the perl interpreter on the host (for diff --git a/package/pkg-python.mk b/package/pkg-python.mk index be1ce071df..26391e09ba 100644 --- a/package/pkg-python.mk +++ b/package/pkg-python.mk @@ -104,6 +104,7 @@ HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS = \ ################################################################################ define inner-python-package +$(call global-patchdir-include,$(1),$(2)) $(2)_ENV ?= $(2)_BUILD_OPTS ?= diff --git a/package/pkg-rebar.mk b/package/pkg-rebar.mk index e4e3f3bb6c..282f7e600f 100644 --- a/package/pkg-rebar.mk +++ b/package/pkg-rebar.mk @@ -118,6 +118,7 @@ endef ################################################################################ define inner-rebar-package +$(call global-patchdir-include,$(1),$(2)) # Extract just the raw package name, lowercase without the leading # erlang- or host- prefix, as this is used by rebar to find the diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk index ebab55a0fd..16128b40a9 100644 --- a/package/pkg-utils.mk +++ b/package/pkg-utils.mk @@ -175,3 +175,22 @@ legal-deps = \ $(filter-out $(if $(1:host-%=),host-%),\ $(call non-virtual-deps,\ $($(call UPPERCASE,$(1))_FINAL_RECURSIVE_DEPENDENCIES))),$(p) [$($(call UPPERCASE,$(p))_LICENSE)]) +# Include a makefile from GLOBAL_PATCH_DIR +# This follows the namind and directory layout of GLOBAL_PATCH_DIR +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +define global-patchdir-include +$(if $($(patsubst host-%,%,$(1))_EXTRA_PATCH_INCLUDED),,\ +$(foreach dir,$(addsuffix /$(patsubst host-%,%,$(1)),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))),\ + $(if $(wildcard $(dir)/$($(2)_VERSION)/$(1).smk),\ + include $(dir)/$($(2)_VERSION)/$(1).smk \ + ,$(if $(wildcard $(dir)/$(1).smk),\ + $(info avant $(pkgdir)) + include $(dir)/$(1).smk \ + $(info apres $(pkgdir)) + ))\ +) +$(eval $(patsubst host-%,%,$(1))_EXTRA_PATCH_INCLUDED = true) \ +) +endef diff --git a/package/pkg-virtual.mk b/package/pkg-virtual.mk index 05bd63eb18..c34834c884 100644 --- a/package/pkg-virtual.mk +++ b/package/pkg-virtual.mk @@ -33,6 +33,7 @@ # so it is not evaluated now, but as part of the generated make code. define inner-virtual-package +$(call global-patchdir-include,$(1),$(2)) # Ensure the virtual package has an implementation defined. ifeq ($$(BR2_PACKAGE_HAS_$(2)),y) diff --git a/package/pkg-waf.mk b/package/pkg-waf.mk index a32d5dab33..05bd90e463 100644 --- a/package/pkg-waf.mk +++ b/package/pkg-waf.mk @@ -35,6 +35,7 @@ ################################################################################ define inner-waf-package +$(call global-patchdir-include,$(1),$(2)) # We need host-python to run waf $(2)_DEPENDENCIES += host-python -- 2.24.0.rc1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH v2 0/2] Include makefiles from GLOBAL_PATCH_DIR 2019-11-09 18:55 [Buildroot] [PATCH v2 0/2] Include makefiles from GLOBAL_PATCH_DIR Jérémy Rosen 2019-11-09 18:55 ` [Buildroot] [PATCH v2 1/2] allow .smk files as includes in packages Jérémy Rosen 2019-11-09 18:55 ` [Buildroot] [PATCH v2 2/2] Include makefiles from GLOBAL_PATCH_DIR Jérémy Rosen @ 2020-09-05 20:32 ` Yann E. MORIN 2020-09-07 7:17 ` Jérémy ROSEN 2 siblings, 1 reply; 5+ messages in thread From: Yann E. MORIN @ 2020-09-05 20:32 UTC (permalink / raw) To: buildroot J?r?my, All, On 2019-11-09 19:55 +0100, J?r?my Rosen spake thusly: > V2: > * fix includes happening multiple times on host+target packages > * change name of included makefiles from .mk to .smk (see commit for > details) > > Note that the first patch might be usefull independently of the (more > controversial) second patch. > > I am opened to changing the .smk to any pattern you suggest > I am not sure where to fit this in the documentation. suggestions > welcomed As was discussed when we met in Lyon, and elsewhere on the list (sorry, I can't dig the thread now), we already outlined a better solution, which is to provide a generic way for a package to be extended or even completely overriden from a br2-external tree. I know it's been quite a long time, but I hope you do remember that discussion, and hopefully you can also dig the thread on the list... I've now marked that series as rejected. Thanks. > J?r?my Rosen (2): > allow .smk files as includes in packages > Include makefiles from GLOBAL_PATCH_DIR > > package/pkg-autotools.mk | 1 + > package/pkg-cmake.mk | 1 + > package/pkg-generic.mk | 8 ++++++-- > package/pkg-golang.mk | 1 + > package/pkg-kconfig.mk | 1 + > package/pkg-kernel-module.mk | 1 + > package/pkg-luarocks.mk | 1 + > package/pkg-meson.mk | 1 + > package/pkg-perl.mk | 1 + > package/pkg-python.mk | 1 + > package/pkg-rebar.mk | 1 + > package/pkg-utils.mk | 21 ++++++++++++++++++++- > package/pkg-virtual.mk | 1 + > package/pkg-waf.mk | 1 + > 14 files changed, 38 insertions(+), 3 deletions(-) > > -- > 2.24.0.rc1 > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH v2 0/2] Include makefiles from GLOBAL_PATCH_DIR 2020-09-05 20:32 ` [Buildroot] [PATCH v2 0/2] " Yann E. MORIN @ 2020-09-07 7:17 ` Jérémy ROSEN 0 siblings, 0 replies; 5+ messages in thread From: Jérémy ROSEN @ 2020-09-07 7:17 UTC (permalink / raw) To: buildroot No worries, I'm fine with that. As long as the problem is solved, I'm ok if my solution is not the one that gets in Cheers Jeremy Le sam. 5 sept. 2020 ? 22:32, Yann E. MORIN <yann.morin.1998@free.fr> a ?crit : > J?r?my, All, > > On 2019-11-09 19:55 +0100, J?r?my Rosen spake thusly: > > V2: > > * fix includes happening multiple times on host+target packages > > * change name of included makefiles from .mk to .smk (see commit for > > details) > > > > Note that the first patch might be usefull independently of the (more > > controversial) second patch. > > > > I am opened to changing the .smk to any pattern you suggest > > I am not sure where to fit this in the documentation. suggestions > > welcomed > > As was discussed when we met in Lyon, and elsewhere on the list (sorry, > I can't dig the thread now), we already outlined a better solution, > which is to provide a generic way for a package to be extended or even > completely overriden from a br2-external tree. > > I know it's been quite a long time, but I hope you do remember that > discussion, and hopefully you can also dig the thread on the list... > > I've now marked that series as rejected. > > Thanks. > > > J?r?my Rosen (2): > > allow .smk files as includes in packages > > Include makefiles from GLOBAL_PATCH_DIR > > > > package/pkg-autotools.mk | 1 + > > package/pkg-cmake.mk | 1 + > > package/pkg-generic.mk | 8 ++++++-- > > package/pkg-golang.mk | 1 + > > package/pkg-kconfig.mk | 1 + > > package/pkg-kernel-module.mk | 1 + > > package/pkg-luarocks.mk | 1 + > > package/pkg-meson.mk | 1 + > > package/pkg-perl.mk | 1 + > > package/pkg-python.mk | 1 + > > package/pkg-rebar.mk | 1 + > > package/pkg-utils.mk | 21 ++++++++++++++++++++- > > package/pkg-virtual.mk | 1 + > > package/pkg-waf.mk | 1 + > > 14 files changed, 38 insertions(+), 3 deletions(-) > > > > -- > > 2.24.0.rc1 > > > > _______________________________________________ > > buildroot mailing list > > buildroot at busybox.net > > http://lists.busybox.net/mailman/listinfo/buildroot > > -- > > .-----------------.--------------------.------------------.--------------------. > | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' > conspiracy: | > | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ > | > | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is > no | > | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v > conspiracy. | > > '------------------------------^-------^------------------^--------------------' > -- [image: SMILE] <http://www.smile.eu/> 20 rue des Jardins 92600 Asni?res-sur-Seine *J?r?my ROSEN* Architecte technique [image: email] jeremy.rosen at smile.fr [image: phone] +33 6 88 25 87 42 [image: url] http://www.smile.eu [image: Twitter] <https://twitter.com/GroupeSmile> [image: Facebook] <https://www.facebook.com/smileopensource> [image: LinkedIn] <https://www.linkedin.com/company/smile> [image: Github] <https://github.com/Smile-SA> [image: D?couvrez l?univers Smile, rendez-vous sur smile.eu] <https://www.smile.eu/fr/publications/livres-blancs/yocto?utm_source=signature&utm_medium=email&utm_campaign=signature> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20200907/61482015/attachment.html> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-09-07 7:17 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-11-09 18:55 [Buildroot] [PATCH v2 0/2] Include makefiles from GLOBAL_PATCH_DIR Jérémy Rosen 2019-11-09 18:55 ` [Buildroot] [PATCH v2 1/2] allow .smk files as includes in packages Jérémy Rosen 2019-11-09 18:55 ` [Buildroot] [PATCH v2 2/2] Include makefiles from GLOBAL_PATCH_DIR Jérémy Rosen 2020-09-05 20:32 ` [Buildroot] [PATCH v2 0/2] " Yann E. MORIN 2020-09-07 7:17 ` Jérémy ROSEN
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.