From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 01/21 v2] core: do not accept multiple definitions of a package
Date: Thu, 22 Oct 2015 23:01:57 +0200 [thread overview]
Message-ID: <56294EC5.8070909@mind.be> (raw)
In-Reply-To: <1996959fcee1f7bf71e9e8539fa2471fce6b1308.1445545973.git.yann.morin.1998@free.fr>
On 22-10-15 22:33, Yann E. MORIN wrote:
> One of the selling points for br2-external is to provide a mean to add
> new packages. However, it is not supported that a package be defined by
> Buildroot and then redefined in a br2-external tree.
>
> This situation may occur without the user noticing or even willing to
> redefine the package, for example:
> - br2-external is first created against a version of Buildroot
> - a package (missing in Buildroot) is added to that br2-external tree
> - upstream Buildroot adds this package
> - user updates to the new Buildroot
>
> In this case, the result in undefined, and we can't make any guarantee
> on the result (working or not).
>
> Add a sanity check so that a package redefinition gets caught.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Peter Korsgaard <jacmet@uclibc.org>
> Cc: Arnout Vandecappelle <arnout@mind.be>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
For you multi-br2-external haters: please commit independently of be multi-
feature :-)
But see below.
> ---
> Makefile | 1 +
> package/pkg-generic.mk | 9 +++++++++
> 2 files changed, 10 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index dd8959f..da78f18 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -336,6 +336,7 @@ unexport O
> GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
>
> PACKAGES :=
> +PACKAGES_ALL :=
>
> # silent mode requested?
> QUIET := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),-q)
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index ffef4d3..7f0c2ab 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -341,6 +341,14 @@ endef
>
> define inner-generic-package
>
> +# Ensure the package is only declared once, i.e. do not accept that a
> +# package be re-defined by a br2-external tree
> +ifneq ($(call strip,$(filter $(1),$(PACKAGES_ALL))),)
> +$$(error Package '$(1)' defined a second time in '$(pkgdir)'; \
> + previous definition was in '$$($(2)_PKGDIR)')
> +endif
> +PACKAGES_ALL += $(1)
> +
> # Define default values for various package-related variables, if not
> # already defined. For some variables (version, source, site and
> # subdir), if they are undefined, we try to see if a variable without
> @@ -351,6 +359,7 @@ define inner-generic-package
> $(2)_TYPE = $(4)
> $(2)_NAME = $(1)
> $(2)_RAWNAME = $$(patsubst host-%,%,$(1))
> +$(2)_PKGDIR = $(pkgdir)
Now we have this variable, it would be nice to replace all occurences of
$(PKGDIR) with $($(PKG)_PKGDIR) and remove the (IMHO ugly)
$$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir)
(obviously in a follow-up patch, which I might produce myself if I feel like it).
Regards,
Arnout
>
> # Keep the package version that may contain forward slashes in the _DL_VERSION
> # variable, then replace all forward slashes ('/') by underscores ('_') to
>
--
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
next prev parent reply other threads:[~2015-10-22 21:01 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-22 20:34 [Buildroot] [PATCH 0/21 v2] br2-external: support multiple trees at once (branch yem/multi-br2-external-5) Yann E. MORIN
2015-10-22 20:33 ` [Buildroot] [PATCH 01/21 v2] core: do not accept multiple definitions of a package Yann E. MORIN
2015-10-22 21:01 ` Arnout Vandecappelle [this message]
2015-10-22 21:09 ` Yann E. MORIN
2015-10-22 21:14 ` Arnout Vandecappelle
2015-10-23 19:39 ` Samuel Martin
2015-10-23 20:22 ` Yann E. MORIN
2015-11-03 22:41 ` Thomas Petazzoni
2015-10-22 20:33 ` [Buildroot] [PATCH 02/21 v2] docs/manual: document $(FOO_PKGDIR) Yann E. MORIN
2015-10-23 19:39 ` Samuel Martin
2015-10-23 20:25 ` Yann E. MORIN
2015-10-22 20:33 ` [Buildroot] [PATCH 03/21 v2] core: move pkg-utils.mk to support/ Yann E. MORIN
2015-10-22 21:10 ` Arnout Vandecappelle
2015-10-22 21:20 ` Yann E. MORIN
2015-10-26 20:12 ` Arnout Vandecappelle
2015-10-22 20:33 ` [Buildroot] [PATCH 04/21 v2] core: commonalise the bundled and br2-external %_defconfig rules Yann E. MORIN
2015-10-26 20:27 ` Arnout Vandecappelle
2015-10-26 20:56 ` Yann E. MORIN
2015-10-26 21:20 ` Arnout Vandecappelle
2015-10-22 20:34 ` [Buildroot] [PATCH 05/21 v2] core: remove .br-external on distclean Yann E. MORIN
2015-10-26 20:44 ` Arnout Vandecappelle
2015-11-03 22:42 ` Thomas Petazzoni
2015-10-22 20:34 ` [Buildroot] [PATCH 06/21 v2] docs/manual: do not override BR2_EXTERNAL Yann E. MORIN
2015-10-26 21:12 ` Arnout Vandecappelle
2015-11-03 22:42 ` Thomas Petazzoni
2015-10-22 20:34 ` [Buildroot] [PATCH 07/21 v2] doc/asciidoc: add possibility to define document dependencies Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 08/21 v2] core: introduce an intermediate rule before the configurators Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 09/21 v2] core: move rule to create basic directories Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 10/21 v2] core: introduce a generated kconfig snippet Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 11/21 v2] docs/manual: prepare-config can be used as a dependency of documents Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 12/21 v2] core: do not hard-code inclusion of br2-external in Kconfig Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 13/21 v2] core: get rid of our dummy br2-external tree Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 14/21 v2] core: introduce per br2-external ID Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 15/21 v2] core: handle .br-external in a make rule Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 16/21 v2] core: add support for multiple br2-external trees Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 17/21 v2] core: br2-external trees without ID can't be used with other trees Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 18/21 v2] support/scripts: teach gen-manual-lists about BR2_EXTERNAL Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 19/21 v2] docs/manual: include packages from BR2_EXTERNAL if set Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 20/21 v2] docs/manual: document the br2-external ID Yann E. MORIN
2015-10-23 7:40 ` Jeremy Rosen
2015-10-23 15:23 ` Yann E. MORIN
2015-10-22 20:34 ` [Buildroot] [PATCH 21/21 v2] docs/manual: document multi br2-external Yann E. MORIN
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56294EC5.8070909@mind.be \
--to=arnout@mind.be \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.