Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
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

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox