Message ID | 1392068935-25510-1-git-send-email-arnout@mind.be |
---|---|
State | Accepted |
Headers | show |
Arnout, All, On 2014-02-10 22:48 +0100, Arnout Vandecappelle (Essensium/Mind) spake thusly: > The legacy support for the old BUILDROOT_DL_DIR and BUILDROOT_CONFIG > breaks down when make is invoked recursively - which is done in a few > cases, e.g. silentoldconfig, external-defs, ... These targets always > give a legacy error. > > For BUILDROOT_DL_DIR, this is fixed by making sure that the original > value of BR2_DL_DIR taken from the environment is also exported again. > > For BUILDROOT_CONFIG, this is fixed with an additional comparison of > the environment variable's value with the fake value that we introduce > ourselves. > > Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Fixes (at least): make graph-depends make PKG-graph-depends Regards, Yann E. MORIN.
Arnout, All, On 2014-02-10 22:48 +0100, Arnout Vandecappelle (Essensium/Mind) spake thusly: > The legacy support for the old BUILDROOT_DL_DIR and BUILDROOT_CONFIG > breaks down when make is invoked recursively - which is done in a few > cases, e.g. silentoldconfig, external-defs, ... These targets always > give a legacy error. > > For BUILDROOT_DL_DIR, this is fixed by making sure that the original > value of BR2_DL_DIR taken from the environment is also exported again. > > For BUILDROOT_CONFIG, this is fixed with an additional comparison of > the environment variable's value with the fake value that we introduce > ourselves. > > Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> I gave my Tested-by earlier (and I am *not* withdrawing it) since I think this is a valid stop-gap fix which should go before -rc1 is cut. However, I wonder how appropriate this implementation is. I am not really convinced by this hack (although I can't see a better alternative). Another solution (which I do not like much, either) would be to enclose these checks in: ifeq ($(ALREADY_IN_BUILDROOT),) blabla legacy stuff blabla endif and at the end of the main Makefile, add: export ALREADY_IN_BUILDROOT=y But, this is hacky too, and I'm not fond of it either. Regards, Yann E. MORIN.
On 02/10/14 23:09, Yann E. MORIN wrote: > Arnout, All, > > On 2014-02-10 22:48 +0100, Arnout Vandecappelle (Essensium/Mind) spake thusly: >> The legacy support for the old BUILDROOT_DL_DIR and BUILDROOT_CONFIG >> breaks down when make is invoked recursively - which is done in a few >> cases, e.g. silentoldconfig, external-defs, ... These targets always >> give a legacy error. >> >> For BUILDROOT_DL_DIR, this is fixed by making sure that the original >> value of BR2_DL_DIR taken from the environment is also exported again. >> >> For BUILDROOT_CONFIG, this is fixed with an additional comparison of >> the environment variable's value with the fake value that we introduce >> ourselves. >> >> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> > > I gave my Tested-by earlier (and I am *not* withdrawing it) since I > think this is a valid stop-gap fix which should go before -rc1 is cut. > > However, I wonder how appropriate this implementation is. I am not really > convinced by this hack (although I can't see a better alternative). > > Another solution (which I do not like much, either) would be to enclose > these checks in: > > ifeq ($(ALREADY_IN_BUILDROOT),) > blabla legacy stuff blabla > endif > > and at the end of the main Makefile, add: > > export ALREADY_IN_BUILDROOT=y > > But, this is hacky too, and I'm not fond of it either. Yeah, it's not really an improvement. We could also just throw away those legacy checks. Regards, Arnout > > Regards, > Yann E. MORIN. >
>>>>> "Arnout" == Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> writes: > The legacy support for the old BUILDROOT_DL_DIR and BUILDROOT_CONFIG > breaks down when make is invoked recursively - which is done in a few > cases, e.g. silentoldconfig, external-defs, ... These targets always > give a legacy error. > For BUILDROOT_DL_DIR, this is fixed by making sure that the original > value of BR2_DL_DIR taken from the environment is also exported again. > For BUILDROOT_CONFIG, this is fixed with an additional comparison of > the environment variable's value with the fake value that we introduce > ourselves. > Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Committed, thanks.
diff --git a/Makefile.legacy b/Makefile.legacy index ea18bc6..764cfcd 100644 --- a/Makefile.legacy +++ b/Makefile.legacy @@ -28,16 +28,20 @@ $(error "The BUILDROOT_DL_DIR environment variable was renamed to BR2_DL_DIR.") endif endif +# If a script is using the deprecated BUILDROOT_CONFIG, make sure it fails. +# Add some directories in front just in case someone used dirname on it. +BUILDROOT_CONFIG_FAKE = /tmp/deprecated/The-BUILDROOT_CONFIG-environment-variable-was-renamed-to-BR2_CONFIG + # Similar to above for BUILDROOT_CONFIG, but here we have no .config equivalent. ifneq ($(BUILDROOT_CONFIG),) ifneq ($(BUILDROOT_CONFIG),$(BR2_CONFIG)) +ifneq ($(BUILDROOT_CONFIG),$(BUILDROOT_CONFIG_FAKE)) $(error "The BUILDROOT_CONFIG environment variable was renamed to BR2_CONFIG.") endif endif +endif -# If a script is using the deprecated BUILDROOT_CONFIG, make sure it fails. -# Add some directories in front just in case someone used dirname on it. -BUILDROOT_CONFIG = /tmp/deprecated/The-BUILDROOT_CONFIG-environment-variable-was-renamed-to-BR2_CONFIG +BUILDROOT_CONFIG = $(BUILDROOT_CONFIG_FAKE) export BUILDROOT_CONFIG # diff --git a/package/pkg-download.mk b/package/pkg-download.mk index 84598d5..6d4cbcd 100644 --- a/package/pkg-download.mk +++ b/package/pkg-download.mk @@ -24,10 +24,15 @@ LOCALFILES := $(call qstrip,$(BR2_LOCALFILES)) DL_MODE=DOWNLOAD # DL_DIR may have been set already from the environment +ifeq ($(origin DL_DIR),undefined) DL_DIR ?= $(call qstrip,$(BR2_DL_DIR)) ifeq ($(DL_DIR),) DL_DIR := $(TOPDIR)/dl endif +else +# Restore the BR2_DL_DIR that was overridden by the .config file +BR2_DL_DIR = $(DL_DIR) +endif # ensure it exists and a absolute path DL_DIR := $(shell mkdir -p $(DL_DIR) && cd $(DL_DIR) >/dev/null && pwd)
The legacy support for the old BUILDROOT_DL_DIR and BUILDROOT_CONFIG breaks down when make is invoked recursively - which is done in a few cases, e.g. silentoldconfig, external-defs, ... These targets always give a legacy error. For BUILDROOT_DL_DIR, this is fixed by making sure that the original value of BR2_DL_DIR taken from the environment is also exported again. For BUILDROOT_CONFIG, this is fixed with an additional comparison of the environment variable's value with the fake value that we introduce ourselves. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> --- Makefile.legacy | 10 +++++++--- package/pkg-download.mk | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-)