diff mbox

[1/1] Avoid toolchain download when it is preinstalled

Message ID 527A1C86.8030909@gezedo.com
State Superseded
Headers show

Commit Message

Laurent GONZALEZ Nov. 6, 2013, 10:40 a.m. UTC
For configurations using a toolchain that is preinstalled on
the host, <pkg>_SITE and <pkg>_SOURCE variables must be kept
empty to avoid downloading any toolchain package.

Signed-off-by: GONZALEZ Laurent <br2@gezedo.com>
---
 toolchain/toolchain-external/toolchain-external.mk |    2 ++
 1 file changed, 2 insertions(+)

Comments

Thomas De Schampheleire Nov. 6, 2013, 2:35 p.m. UTC | #1
Hi Laurent,

On Wed, Nov 6, 2013 at 11:40 AM, Laurent GONZALEZ <br2@gezedo.com> wrote:
> For configurations using a toolchain that is preinstalled on
> the host, <pkg>_SITE and <pkg>_SOURCE variables must be kept
> empty to avoid downloading any toolchain package.
>
> Signed-off-by: GONZALEZ Laurent <br2@gezedo.com>
> ---
>  toolchain/toolchain-external/toolchain-external.mk |    2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
> index 2722600..6f4feb5 100644
> --- a/toolchain/toolchain-external/toolchain-external.mk
> +++ b/toolchain/toolchain-external/toolchain-external.mk
> @@ -236,6 +236,7 @@ define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
>         ln -sf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
>  endef
>
> +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
>  ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
>  TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
>  TOOLCHAIN_EXTERNAL_SOURCE = arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
> @@ -347,6 +348,7 @@ else
>  TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>  TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>  endif
> +endif
>
>  TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
>

Can you be a bit more specific about the configuration you see this
problem with?
Although I can confirm that there is an attempted download when you
configure a pre-installed codesourcery toolchain, I can't fix the
problem completely with your patch:

$ make toolchain
>>> toolchain undefined Extracting
>>> toolchain undefined Patching toolchain//toolchain
>>> toolchain-external undefined Downloading
/toolchain-external-undefined.tar.gz: Scheme missing.
--2013-11-06 15:33:31--
http://sources.buildroot.net//toolchain-external-undefined.tar.gz

Thanks,
Thomas
Thomas Petazzoni Nov. 6, 2013, 3:19 p.m. UTC | #2
Dear Laurent GONZALEZ,

On Wed, 06 Nov 2013 11:40:06 +0100, Laurent GONZALEZ wrote:
> For configurations using a toolchain that is preinstalled on
> the host, <pkg>_SITE and <pkg>_SOURCE variables must be kept
> empty to avoid downloading any toolchain package.
> 
> Signed-off-by: GONZALEZ Laurent <br2@gezedo.com>
> ---
>  toolchain/toolchain-external/toolchain-external.mk |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
> index 2722600..6f4feb5 100644
> --- a/toolchain/toolchain-external/toolchain-external.mk
> +++ b/toolchain/toolchain-external/toolchain-external.mk
> @@ -236,6 +236,7 @@ define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
>  	ln -sf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
>  endef
>  
> +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
>  ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
>  TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
>  TOOLCHAIN_EXTERNAL_SOURCE = arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
> @@ -347,6 +348,7 @@ else
>  TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>  TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>  endif
> +endif
>  
>  TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
>  

I think the right fix would be something like:

ifeq ($(...codesourcery..),y)
...
else ifeq ($(...some other toolchain),y)
....
- else
+ else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
# Custom toolchain
TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
- endif
+ else
TOOLCHAIN_EXTERNAL_SOURCE =
endif

So that TOOLCHAIN_EXTERNAL_SOURCE is empty when the external toolchain
is locally installed. Having an empty <pkg>_SOURCE is what tells the
package infrastructure to not download the thing.

Of course, approach above completely untested.

Best regards,

Thomas
Laurent GONZALEZ Nov. 6, 2013, 3:30 p.m. UTC | #3
On 06/11/2013 15:35, Thomas De Schampheleire wrote:
> Hi Laurent,
> 
> On Wed, Nov 6, 2013 at 11:40 AM, Laurent GONZALEZ <br2@gezedo.com> wrote:
>> For configurations using a toolchain that is preinstalled on
>> the host, <pkg>_SITE and <pkg>_SOURCE variables must be kept
>> empty to avoid downloading any toolchain package.
>>
>> Signed-off-by: GONZALEZ Laurent <br2@gezedo.com>
>> ---
>>  toolchain/toolchain-external/toolchain-external.mk |    2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
>> index 2722600..6f4feb5 100644
>> --- a/toolchain/toolchain-external/toolchain-external.mk
>> +++ b/toolchain/toolchain-external/toolchain-external.mk
>> @@ -236,6 +236,7 @@ define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
>>         ln -sf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
>>  endef
>>
>> +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
>>  ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
>>  TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
>>  TOOLCHAIN_EXTERNAL_SOURCE = arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
>> @@ -347,6 +348,7 @@ else
>>  TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>>  TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>>  endif
>> +endif
>>
>>  TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
>>
> 
> Can you be a bit more specific about the configuration you see this
> problem with?
> Although I can confirm that there is an attempted download when you
> configure a pre-installed codesourcery toolchain, I can't fix the
> problem completely with your patch:
> 
> $ make toolchain
>>>> toolchain undefined Extracting
>>>> toolchain undefined Patching toolchain//toolchain
>>>> toolchain-external undefined Downloading
> /toolchain-external-undefined.tar.gz: Scheme missing.
> --2013-11-06 15:33:31--
> http://sources.buildroot.net//toolchain-external-undefined.tar.gz
> 

You're right, the commit message stats that variables must be empty, but my patch does not define them at all. I have probably been fooled by a dirty configuration in my testing sandbox.
I will resubmit ASAP.
Laurent GONZALEZ Nov. 6, 2013, 3:33 p.m. UTC | #4
On 06/11/2013 16:19, Thomas Petazzoni wrote:
> Dear Laurent GONZALEZ,
> 
> On Wed, 06 Nov 2013 11:40:06 +0100, Laurent GONZALEZ wrote:
>> For configurations using a toolchain that is preinstalled on
>> the host, <pkg>_SITE and <pkg>_SOURCE variables must be kept
>> empty to avoid downloading any toolchain package.
>>
>> Signed-off-by: GONZALEZ Laurent <br2@gezedo.com>
>> ---
>>  toolchain/toolchain-external/toolchain-external.mk |    2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
>> index 2722600..6f4feb5 100644
>> --- a/toolchain/toolchain-external/toolchain-external.mk
>> +++ b/toolchain/toolchain-external/toolchain-external.mk
>> @@ -236,6 +236,7 @@ define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
>>  	ln -sf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
>>  endef
>>  
>> +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
>>  ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
>>  TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
>>  TOOLCHAIN_EXTERNAL_SOURCE = arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
>> @@ -347,6 +348,7 @@ else
>>  TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>>  TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
>>  endif
>> +endif
>>  
>>  TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
>>  
> 
> I think the right fix would be something like:
> 
> ifeq ($(...codesourcery..),y)
> ...
> else ifeq ($(...some other toolchain),y)
> ....
> - else
> + else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
> # Custom toolchain
> TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
> TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
> - endif
> + else
> TOOLCHAIN_EXTERNAL_SOURCE =
> endif
> 
> So that TOOLCHAIN_EXTERNAL_SOURCE is empty when the external toolchain
> is locally installed. Having an empty <pkg>_SOURCE is what tells the
> package infrastructure to not download the thing.
> 

I am afraid this won't work, because I really want to choose some 'codesourcery' toolchain *and* avoid download. Preinstalled toolchain has larger scope than custom toolchain.
By the way my patch had another issue, that i will fix and resubmit soon.
Thomas Petazzoni Nov. 6, 2013, 6:08 p.m. UTC | #5
Dear Laurent GONZALEZ,

(Please fix your e-mail client to wrap lines at around 80 columns,
except of course when you send patches!).

On Wed, 06 Nov 2013 16:33:22 +0100, Laurent GONZALEZ wrote:

> > So that TOOLCHAIN_EXTERNAL_SOURCE is empty when the external toolchain
> > is locally installed. Having an empty <pkg>_SOURCE is what tells the
> > package infrastructure to not download the thing.
> > 
> 
> I am afraid this won't work, because I really want to choose some 'codesourcery' toolchain *and* avoid download. Preinstalled toolchain has larger scope than custom toolchain.
> By the way my patch had another issue, that i will fix and resubmit soon.

Aaah, yes, indeed. In this case, I think I'd prefer to have something
like:

ifeq ($(codesourcery...),y)
...
else ifeq ($(someothertoolchain...),y)
...
else
... custom toolchain origin
endif

# In fact, we don't need to download the toolchain, since it is already
# available on the system, so force the site and source to be empty so
# that nothing will be downloaded/extracted.
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y)
TOOLCHAIN_EXTERNAL_SITE =
TOOLCHAIN_EXTERNAL_SOURCE =
endif

It's just that I find the big enclosing ifeq
($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) condition a little bit difficult
to follow.

Best regards,

Thomas
diff mbox

Patch

diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index 2722600..6f4feb5 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -236,6 +236,7 @@  define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
 	ln -sf . $(TARGET_DIR)/usr/lib/arm-linux-gnueabihf
 endef
 
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
 ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
 TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
 TOOLCHAIN_EXTERNAL_SOURCE = arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
@@ -347,6 +348,7 @@  else
 TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
 TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
 endif
+endif
 
 TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES