All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
@ 2015-09-23 19:47 Stephen Warren
  2015-10-01 22:59 ` Simon Glass
  0 siblings, 1 reply; 11+ messages in thread
From: Stephen Warren @ 2015-09-23 19:47 UTC (permalink / raw)
  To: u-boot

Simon,

I have 3 different ARM toolchains installed into /usr/bin via distro 
packages. How do I tell buildman which of those to use?

I had originally thought that ~/.buildman's [toolchain] section 
contained CROSS_COMPILE-like values, so I tried:

> [toolchain]
> root: /
> arm0-not-installed: arm-none-gnueabi-
> arm1: arm-none-eabi-
> arm2: arm-linux-gnueabihf-
> arm3: arm-linux-gnueabi-
> arch64: aarch64-linux-gnu-
>
> [toolchain-alias]
> arm: arm1
> aarch64: aarch64

(I intended to change the "arm: arm1" line to point at arm1/2/3 based on 
which I wanted to use at a particular time).

However, running "buildman --list-toolchains" and re-reading the docs 
shows me that the [toolchain] values are absolute directories that 
buildman searches for files named *-gcc:

>    - scanning path 'arm-none-gnueabi-'
>       - looking in 'arm-none-gnueabi-/.'
>       - looking in 'arm-none-gnueabi-/bin'
>       - looking in 'arm-none-gnueabi-/usr/bin'

If buildman finds multiple toolchains, there doesn't seem to be a way to 
tell it which one to use. Am I missing something?

I suppose a solution wouuld be to move the compiler binaries into 
different separate directories, and only list one of those directories 
in ~/.buildman. However, I can't do that for distro-packaged toolchains 
(well, I suppose I could manually mv everything all over the place, but 
that's really fragile since it'd break any time the package got upgraded 
or removed and re-installed).

I think it makes sense to add new syntax into ~/.buildman to specify 
"don't do automagical searching, just use this CROSS_COMPILE value that 
I say". Does that sound reasonable? Automagic stuff makes for great 
defaults, but if it can't be overridden, it sucks when you actually know 
what you want.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-09-23 19:47 [U-Boot] How do I tell buildman to use a /specific/ toolchain? Stephen Warren
@ 2015-10-01 22:59 ` Simon Glass
  2015-10-01 23:27   ` Stephen Warren
  0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2015-10-01 22:59 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org> wrote:
>
> Simon,
>
> I have 3 different ARM toolchains installed into /usr/bin via distro packages. How do I tell buildman which of those to use?
>
> I had originally thought that ~/.buildman's [toolchain] section contained CROSS_COMPILE-like values, so I tried:
>
>> [toolchain]
>> root: /
>> arm0-not-installed: arm-none-gnueabi-
>> arm1: arm-none-eabi-
>> arm2: arm-linux-gnueabihf-
>> arm3: arm-linux-gnueabi-
>> arch64: aarch64-linux-gnu-
>>
>> [toolchain-alias]
>> arm: arm1
>> aarch64: aarch64
>
>
> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on which I wanted to use at a particular time).
>
> However, running "buildman --list-toolchains" and re-reading the docs shows me that the [toolchain] values are absolute directories that buildman searches for files named *-gcc:
>
>>    - scanning path 'arm-none-gnueabi-'
>>       - looking in 'arm-none-gnueabi-/.'
>>       - looking in 'arm-none-gnueabi-/bin'
>>       - looking in 'arm-none-gnueabi-/usr/bin'
>
>
> If buildman finds multiple toolchains, there doesn't seem to be a way to tell it which one to use. Am I missing something?
>
> I suppose a solution wouuld be to move the compiler binaries into different separate directories, and only list one of those directories in ~/.buildman. However, I can't do that for distro-packaged toolchains (well, I suppose I could manually mv everything all over the place, but that's really fragile since it'd break any time the package got upgraded or removed and re-installed).
>
> I think it makes sense to add new syntax into ~/.buildman to specify "don't do automagical searching, just use this CROSS_COMPILE value that I say". Does that sound reasonable? Automagic stuff makes for great defaults, but if it can't be overridden, it sucks when you actually know what you want.


Yes I think it would be fine to add an option to use CROSS_COMPILE (of
course it would fail if you tried to build the board with the wrong
arch).

The option other option at present is -G which lets you use multiple
.buildman files. You could have one of these for each toolchain.

Regards,
Simon

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-01 22:59 ` Simon Glass
@ 2015-10-01 23:27   ` Stephen Warren
  2015-10-03 14:30     ` Simon Glass
  0 siblings, 1 reply; 11+ messages in thread
From: Stephen Warren @ 2015-10-01 23:27 UTC (permalink / raw)
  To: u-boot

On 10/01/2015 04:59 PM, Simon Glass wrote:
> Hi Stephen,
>
> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>
>> Simon,
>>
>> I have 3 different ARM toolchains installed into /usr/bin via distro packages. How do I tell buildman which of those to use?
>>
>> I had originally thought that ~/.buildman's [toolchain] section contained CROSS_COMPILE-like values, so I tried:
>>
>>> [toolchain]
>>> root: /
>>> arm0-not-installed: arm-none-gnueabi-
>>> arm1: arm-none-eabi-
>>> arm2: arm-linux-gnueabihf-
>>> arm3: arm-linux-gnueabi-
>>> arch64: aarch64-linux-gnu-
>>>
>>> [toolchain-alias]
>>> arm: arm1
>>> aarch64: aarch64
>>
>>
>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on which I wanted to use at a particular time).
>>
>> However, running "buildman --list-toolchains" and re-reading the docs shows me that the [toolchain] values are absolute directories that buildman searches for files named *-gcc:
>>
>>>     - scanning path 'arm-none-gnueabi-'
>>>        - looking in 'arm-none-gnueabi-/.'
>>>        - looking in 'arm-none-gnueabi-/bin'
>>>        - looking in 'arm-none-gnueabi-/usr/bin'
>>
>>
>> If buildman finds multiple toolchains, there doesn't seem to be a way to tell it which one to use. Am I missing something?
>>
>> I suppose a solution wouuld be to move the compiler binaries into different separate directories, and only list one of those directories in ~/.buildman. However, I can't do that for distro-packaged toolchains (well, I suppose I could manually mv everything all over the place, but that's really fragile since it'd break any time the package got upgraded or removed and re-installed).
>>
>> I think it makes sense to add new syntax into ~/.buildman to specify "don't do automagical searching, just use this CROSS_COMPILE value that I say". Does that sound reasonable? Automagic stuff makes for great defaults, but if it can't be overridden, it sucks when you actually know what you want.
>
> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
> course it would fail if you tried to build the board with the wrong
> arch).

I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE 
environment variable, although that would be a simple solution for 
single-arch builds at least. My mention of CROSS_COMPILE immediately 
above was re: using values that are formatted in the same way as the 
CROSS_COMPILE environment variable would be, rather than directory 
names, in the config file. In other words, the example content I showed 
above.

> The option other option at present is -G which lets you use multiple
> .buildman files. You could have one of these for each toolchain.

I don't think that gets me what I want. As far as I can tell, the 
buildman config file contains a list directories to search within, yet 
if I have 3 toolchains in a single directory, there's no way to select 
which one I want to use, is there?

In other words, a config file that contains:

[toolchain]
distro-packages: /usr/bin

... finds the following toolchains:

[swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
	--list-tool-chains
Scanning for tool chains
    - scanning path '/usr/bin'
       - looking in '/usr/bin/.'
          - found '/usr/bin/./arm-linux-gnueabi-gcc'
          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
          - found '/usr/bin/./arm-none-eabi-gcc'
(That's 3 AArch32 toolchains found)
          - found '/usr/bin/./winegcc'
          - found '/usr/bin/./aarch64-linux-gnu-gcc'
          - found '/usr/bin/./gcc'
          - found '/usr/bin/./c89-gcc'
          - found '/usr/bin/./x86_64-linux-gnu-gcc'
          - found '/usr/bin/./i586-mingw32msvc-gcc'
          - found '/usr/bin/./c99-gcc'
       - looking in '/usr/bin/bin'
       - looking in '/usr/bin/usr/bin'
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
Tool chain test:  OK
List of available toolchains (7):
aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
arm       : /usr/bin/./arm-linux-gnueabi-gcc
(Buildman chose that one, and I think I have no control over that?)
c89       : /usr/bin/./c89-gcc
c99       : /usr/bin/./c99-gcc
i586      : /usr/bin/./i586-mingw32msvc-gcc
sandbox   : /usr/bin/./winegcc
x86_64    : /usr/bin/./x86_64-linux-gnu-gcc

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-01 23:27   ` Stephen Warren
@ 2015-10-03 14:30     ` Simon Glass
  2015-10-03 19:20       ` Stephen Warren
  0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2015-10-03 14:30 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 10/01/2015 04:59 PM, Simon Glass wrote:
>>
>> Hi Stephen,
>>
>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
>> wrote:
>>>
>>>
>>> Simon,
>>>
>>> I have 3 different ARM toolchains installed into /usr/bin via distro
>>> packages. How do I tell buildman which of those to use?
>>>
>>> I had originally thought that ~/.buildman's [toolchain] section contained
>>> CROSS_COMPILE-like values, so I tried:
>>>
>>>> [toolchain]
>>>> root: /
>>>> arm0-not-installed: arm-none-gnueabi-
>>>> arm1: arm-none-eabi-
>>>> arm2: arm-linux-gnueabihf-
>>>> arm3: arm-linux-gnueabi-
>>>> arch64: aarch64-linux-gnu-
>>>>
>>>> [toolchain-alias]
>>>> arm: arm1
>>>> aarch64: aarch64
>>>
>>>
>>>
>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
>>> which I wanted to use at a particular time).
>>>
>>> However, running "buildman --list-toolchains" and re-reading the docs
>>> shows me that the [toolchain] values are absolute directories that buildman
>>> searches for files named *-gcc:
>>>
>>>>     - scanning path 'arm-none-gnueabi-'
>>>>        - looking in 'arm-none-gnueabi-/.'
>>>>        - looking in 'arm-none-gnueabi-/bin'
>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
>>>
>>>
>>>
>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
>>> tell it which one to use. Am I missing something?
>>>
>>> I suppose a solution wouuld be to move the compiler binaries into
>>> different separate directories, and only list one of those directories in
>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
>>> I suppose I could manually mv everything all over the place, but that's
>>> really fragile since it'd break any time the package got upgraded or removed
>>> and re-installed).
>>>
>>> I think it makes sense to add new syntax into ~/.buildman to specify
>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
>>> but if it can't be overridden, it sucks when you actually know what you
>>> want.
>>
>>
>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
>> course it would fail if you tried to build the board with the wrong
>> arch).
>
>
> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
> environment variable, although that would be a simple solution for
> single-arch builds at least. My mention of CROSS_COMPILE immediately above
> was re: using values that are formatted in the same way as the CROSS_COMPILE
> environment variable would be, rather than directory names, in the config
> file. In other words, the example content I showed above.
>
>> The option other option at present is -G which lets you use multiple
>> .buildman files. You could have one of these for each toolchain.
>
>
> I don't think that gets me what I want. As far as I can tell, the buildman
> config file contains a list directories to search within, yet if I have 3
> toolchains in a single directory, there's no way to select which one I want
> to use, is there?
>
> In other words, a config file that contains:
>
> [toolchain]
> distro-packages: /usr/bin
>
> ... finds the following toolchains:
>
> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
>         --list-tool-chains
> Scanning for tool chains
>    - scanning path '/usr/bin'
>       - looking in '/usr/bin/.'
>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
>          - found '/usr/bin/./arm-none-eabi-gcc'
> (That's 3 AArch32 toolchains found)
>          - found '/usr/bin/./winegcc'
>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
>          - found '/usr/bin/./gcc'
>          - found '/usr/bin/./c89-gcc'
>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
>          - found '/usr/bin/./i586-mingw32msvc-gcc'
>          - found '/usr/bin/./c99-gcc'
>       - looking in '/usr/bin/bin'
>       - looking in '/usr/bin/usr/bin'
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> Tool chain test:  OK
> List of available toolchains (7):
> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
> arm       : /usr/bin/./arm-linux-gnueabi-gcc
> (Buildman chose that one, and I think I have no control over that?)
> c89       : /usr/bin/./c89-gcc
> c99       : /usr/bin/./c99-gcc
> i586      : /usr/bin/./i586-mingw32msvc-gcc
> sandbox   : /usr/bin/./winegcc
> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc

I wonder if we need an option to specify the full path and avoid the search?

Maybe [toolchain-prefix] ?

Regards,
Simon

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-03 14:30     ` Simon Glass
@ 2015-10-03 19:20       ` Stephen Warren
  2015-10-04 16:38         ` Simon Glass
  0 siblings, 1 reply; 11+ messages in thread
From: Stephen Warren @ 2015-10-03 19:20 UTC (permalink / raw)
  To: u-boot

On 10/03/2015 08:30 AM, Simon Glass wrote:
> Hi Stephen,
> 
> On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 10/01/2015 04:59 PM, Simon Glass wrote:
>>>
>>> Hi Stephen,
>>>
>>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
>>> wrote:
>>>>
>>>>
>>>> Simon,
>>>>
>>>> I have 3 different ARM toolchains installed into /usr/bin via distro
>>>> packages. How do I tell buildman which of those to use?
>>>>
>>>> I had originally thought that ~/.buildman's [toolchain] section contained
>>>> CROSS_COMPILE-like values, so I tried:
>>>>
>>>>> [toolchain]
>>>>> root: /
>>>>> arm0-not-installed: arm-none-gnueabi-
>>>>> arm1: arm-none-eabi-
>>>>> arm2: arm-linux-gnueabihf-
>>>>> arm3: arm-linux-gnueabi-
>>>>> arch64: aarch64-linux-gnu-
>>>>>
>>>>> [toolchain-alias]
>>>>> arm: arm1
>>>>> aarch64: aarch64
>>>>
>>>>
>>>>
>>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
>>>> which I wanted to use at a particular time).
>>>>
>>>> However, running "buildman --list-toolchains" and re-reading the docs
>>>> shows me that the [toolchain] values are absolute directories that buildman
>>>> searches for files named *-gcc:
>>>>
>>>>>     - scanning path 'arm-none-gnueabi-'
>>>>>        - looking in 'arm-none-gnueabi-/.'
>>>>>        - looking in 'arm-none-gnueabi-/bin'
>>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
>>>>
>>>>
>>>>
>>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
>>>> tell it which one to use. Am I missing something?
>>>>
>>>> I suppose a solution wouuld be to move the compiler binaries into
>>>> different separate directories, and only list one of those directories in
>>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
>>>> I suppose I could manually mv everything all over the place, but that's
>>>> really fragile since it'd break any time the package got upgraded or removed
>>>> and re-installed).
>>>>
>>>> I think it makes sense to add new syntax into ~/.buildman to specify
>>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
>>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
>>>> but if it can't be overridden, it sucks when you actually know what you
>>>> want.
>>>
>>>
>>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
>>> course it would fail if you tried to build the board with the wrong
>>> arch).
>>
>>
>> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
>> environment variable, although that would be a simple solution for
>> single-arch builds at least. My mention of CROSS_COMPILE immediately above
>> was re: using values that are formatted in the same way as the CROSS_COMPILE
>> environment variable would be, rather than directory names, in the config
>> file. In other words, the example content I showed above.
>>
>>> The option other option at present is -G which lets you use multiple
>>> .buildman files. You could have one of these for each toolchain.
>>
>>
>> I don't think that gets me what I want. As far as I can tell, the buildman
>> config file contains a list directories to search within, yet if I have 3
>> toolchains in a single directory, there's no way to select which one I want
>> to use, is there?
>>
>> In other words, a config file that contains:
>>
>> [toolchain]
>> distro-packages: /usr/bin
>>
>> ... finds the following toolchains:
>>
>> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
>>         --list-tool-chains
>> Scanning for tool chains
>>    - scanning path '/usr/bin'
>>       - looking in '/usr/bin/.'
>>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
>>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
>>          - found '/usr/bin/./arm-none-eabi-gcc'
>> (That's 3 AArch32 toolchains found)
>>          - found '/usr/bin/./winegcc'
>>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
>>          - found '/usr/bin/./gcc'
>>          - found '/usr/bin/./c89-gcc'
>>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
>>          - found '/usr/bin/./i586-mingw32msvc-gcc'
>>          - found '/usr/bin/./c99-gcc'
>>       - looking in '/usr/bin/bin'
>>       - looking in '/usr/bin/usr/bin'
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> Tool chain test:  OK
>> List of available toolchains (7):
>> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
>> arm       : /usr/bin/./arm-linux-gnueabi-gcc
>> (Buildman chose that one, and I think I have no control over that?)
>> c89       : /usr/bin/./c89-gcc
>> c99       : /usr/bin/./c99-gcc
>> i586      : /usr/bin/./i586-mingw32msvc-gcc
>> sandbox   : /usr/bin/./winegcc
>> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc
> 
> I wonder if we need an option to specify the full path and avoid the search?
> 
> Maybe [toolchain-prefix] ?

Yes, that sounds like exactly what I was hoping for.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-03 19:20       ` Stephen Warren
@ 2015-10-04 16:38         ` Simon Glass
  2015-10-05  1:19           ` Stephen Warren
  2015-10-20 15:21           ` Tom Rini
  0 siblings, 2 replies; 11+ messages in thread
From: Simon Glass @ 2015-10-04 16:38 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On 3 October 2015 at 20:20, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 10/03/2015 08:30 AM, Simon Glass wrote:
>> Hi Stephen,
>>
>> On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>> On 10/01/2015 04:59 PM, Simon Glass wrote:
>>>>
>>>> Hi Stephen,
>>>>
>>>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
>>>> wrote:
>>>>>
>>>>>
>>>>> Simon,
>>>>>
>>>>> I have 3 different ARM toolchains installed into /usr/bin via distro
>>>>> packages. How do I tell buildman which of those to use?
>>>>>
>>>>> I had originally thought that ~/.buildman's [toolchain] section contained
>>>>> CROSS_COMPILE-like values, so I tried:
>>>>>
>>>>>> [toolchain]
>>>>>> root: /
>>>>>> arm0-not-installed: arm-none-gnueabi-
>>>>>> arm1: arm-none-eabi-
>>>>>> arm2: arm-linux-gnueabihf-
>>>>>> arm3: arm-linux-gnueabi-
>>>>>> arch64: aarch64-linux-gnu-
>>>>>>
>>>>>> [toolchain-alias]
>>>>>> arm: arm1
>>>>>> aarch64: aarch64
>>>>>
>>>>>
>>>>>
>>>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
>>>>> which I wanted to use at a particular time).
>>>>>
>>>>> However, running "buildman --list-toolchains" and re-reading the docs
>>>>> shows me that the [toolchain] values are absolute directories that buildman
>>>>> searches for files named *-gcc:
>>>>>
>>>>>>     - scanning path 'arm-none-gnueabi-'
>>>>>>        - looking in 'arm-none-gnueabi-/.'
>>>>>>        - looking in 'arm-none-gnueabi-/bin'
>>>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
>>>>>
>>>>>
>>>>>
>>>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
>>>>> tell it which one to use. Am I missing something?
>>>>>
>>>>> I suppose a solution wouuld be to move the compiler binaries into
>>>>> different separate directories, and only list one of those directories in
>>>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
>>>>> I suppose I could manually mv everything all over the place, but that's
>>>>> really fragile since it'd break any time the package got upgraded or removed
>>>>> and re-installed).
>>>>>
>>>>> I think it makes sense to add new syntax into ~/.buildman to specify
>>>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
>>>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
>>>>> but if it can't be overridden, it sucks when you actually know what you
>>>>> want.
>>>>
>>>>
>>>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
>>>> course it would fail if you tried to build the board with the wrong
>>>> arch).
>>>
>>>
>>> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
>>> environment variable, although that would be a simple solution for
>>> single-arch builds at least. My mention of CROSS_COMPILE immediately above
>>> was re: using values that are formatted in the same way as the CROSS_COMPILE
>>> environment variable would be, rather than directory names, in the config
>>> file. In other words, the example content I showed above.
>>>
>>>> The option other option at present is -G which lets you use multiple
>>>> .buildman files. You could have one of these for each toolchain.
>>>
>>>
>>> I don't think that gets me what I want. As far as I can tell, the buildman
>>> config file contains a list directories to search within, yet if I have 3
>>> toolchains in a single directory, there's no way to select which one I want
>>> to use, is there?
>>>
>>> In other words, a config file that contains:
>>>
>>> [toolchain]
>>> distro-packages: /usr/bin
>>>
>>> ... finds the following toolchains:
>>>
>>> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
>>>         --list-tool-chains
>>> Scanning for tool chains
>>>    - scanning path '/usr/bin'
>>>       - looking in '/usr/bin/.'
>>>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
>>>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
>>>          - found '/usr/bin/./arm-none-eabi-gcc'
>>> (That's 3 AArch32 toolchains found)
>>>          - found '/usr/bin/./winegcc'
>>>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
>>>          - found '/usr/bin/./gcc'
>>>          - found '/usr/bin/./c89-gcc'
>>>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
>>>          - found '/usr/bin/./i586-mingw32msvc-gcc'
>>>          - found '/usr/bin/./c99-gcc'
>>>       - looking in '/usr/bin/bin'
>>>       - looking in '/usr/bin/usr/bin'
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> Tool chain test:  OK
>>> List of available toolchains (7):
>>> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
>>> arm       : /usr/bin/./arm-linux-gnueabi-gcc
>>> (Buildman chose that one, and I think I have no control over that?)
>>> c89       : /usr/bin/./c89-gcc
>>> c99       : /usr/bin/./c99-gcc
>>> i586      : /usr/bin/./i586-mingw32msvc-gcc
>>> sandbox   : /usr/bin/./winegcc
>>> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc
>>
>> I wonder if we need an option to specify the full path and avoid the search?
>>
>> Maybe [toolchain-prefix] ?
>
> Yes, that sounds like exactly what I was hoping for.

OK - would you like to do a patch?

Regards,
Simon

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-04 16:38         ` Simon Glass
@ 2015-10-05  1:19           ` Stephen Warren
  2016-03-07  2:39             ` Simon Glass
  2015-10-20 15:21           ` Tom Rini
  1 sibling, 1 reply; 11+ messages in thread
From: Stephen Warren @ 2015-10-05  1:19 UTC (permalink / raw)
  To: u-boot

On 10/04/2015 10:38 AM, Simon Glass wrote:
> Hi Stephen,
> 
> On 3 October 2015 at 20:20, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 10/03/2015 08:30 AM, Simon Glass wrote:
>>> Hi Stephen,
>>>
>>> On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>>> On 10/01/2015 04:59 PM, Simon Glass wrote:
>>>>>
>>>>> Hi Stephen,
>>>>>
>>>>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>> Simon,
>>>>>>
>>>>>> I have 3 different ARM toolchains installed into /usr/bin via distro
>>>>>> packages. How do I tell buildman which of those to use?
>>>>>>
>>>>>> I had originally thought that ~/.buildman's [toolchain] section contained
>>>>>> CROSS_COMPILE-like values, so I tried:
>>>>>>
>>>>>>> [toolchain]
>>>>>>> root: /
>>>>>>> arm0-not-installed: arm-none-gnueabi-
>>>>>>> arm1: arm-none-eabi-
>>>>>>> arm2: arm-linux-gnueabihf-
>>>>>>> arm3: arm-linux-gnueabi-
>>>>>>> arch64: aarch64-linux-gnu-
>>>>>>>
>>>>>>> [toolchain-alias]
>>>>>>> arm: arm1
>>>>>>> aarch64: aarch64
>>>>>>
>>>>>>
>>>>>>
>>>>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
>>>>>> which I wanted to use at a particular time).
>>>>>>
>>>>>> However, running "buildman --list-toolchains" and re-reading the docs
>>>>>> shows me that the [toolchain] values are absolute directories that buildman
>>>>>> searches for files named *-gcc:
>>>>>>
>>>>>>>     - scanning path 'arm-none-gnueabi-'
>>>>>>>        - looking in 'arm-none-gnueabi-/.'
>>>>>>>        - looking in 'arm-none-gnueabi-/bin'
>>>>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
>>>>>>
>>>>>>
>>>>>>
>>>>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
>>>>>> tell it which one to use. Am I missing something?
>>>>>>
>>>>>> I suppose a solution wouuld be to move the compiler binaries into
>>>>>> different separate directories, and only list one of those directories in
>>>>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
>>>>>> I suppose I could manually mv everything all over the place, but that's
>>>>>> really fragile since it'd break any time the package got upgraded or removed
>>>>>> and re-installed).
>>>>>>
>>>>>> I think it makes sense to add new syntax into ~/.buildman to specify
>>>>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
>>>>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
>>>>>> but if it can't be overridden, it sucks when you actually know what you
>>>>>> want.
>>>>>
>>>>>
>>>>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
>>>>> course it would fail if you tried to build the board with the wrong
>>>>> arch).
>>>>
>>>>
>>>> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
>>>> environment variable, although that would be a simple solution for
>>>> single-arch builds at least. My mention of CROSS_COMPILE immediately above
>>>> was re: using values that are formatted in the same way as the CROSS_COMPILE
>>>> environment variable would be, rather than directory names, in the config
>>>> file. In other words, the example content I showed above.
>>>>
>>>>> The option other option at present is -G which lets you use multiple
>>>>> .buildman files. You could have one of these for each toolchain.
>>>>
>>>>
>>>> I don't think that gets me what I want. As far as I can tell, the buildman
>>>> config file contains a list directories to search within, yet if I have 3
>>>> toolchains in a single directory, there's no way to select which one I want
>>>> to use, is there?
>>>>
>>>> In other words, a config file that contains:
>>>>
>>>> [toolchain]
>>>> distro-packages: /usr/bin
>>>>
>>>> ... finds the following toolchains:
>>>>
>>>> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
>>>>         --list-tool-chains
>>>> Scanning for tool chains
>>>>    - scanning path '/usr/bin'
>>>>       - looking in '/usr/bin/.'
>>>>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
>>>>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
>>>>          - found '/usr/bin/./arm-none-eabi-gcc'
>>>> (That's 3 AArch32 toolchains found)
>>>>          - found '/usr/bin/./winegcc'
>>>>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
>>>>          - found '/usr/bin/./gcc'
>>>>          - found '/usr/bin/./c89-gcc'
>>>>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
>>>>          - found '/usr/bin/./i586-mingw32msvc-gcc'
>>>>          - found '/usr/bin/./c99-gcc'
>>>>       - looking in '/usr/bin/bin'
>>>>       - looking in '/usr/bin/usr/bin'
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> Tool chain test:  OK
>>>> List of available toolchains (7):
>>>> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
>>>> arm       : /usr/bin/./arm-linux-gnueabi-gcc
>>>> (Buildman chose that one, and I think I have no control over that?)
>>>> c89       : /usr/bin/./c89-gcc
>>>> c99       : /usr/bin/./c99-gcc
>>>> i586      : /usr/bin/./i586-mingw32msvc-gcc
>>>> sandbox   : /usr/bin/./winegcc
>>>> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc
>>>
>>> I wonder if we need an option to specify the full path and avoid the search?
>>>
>>> Maybe [toolchain-prefix] ?
>>
>> Yes, that sounds like exactly what I was hoping for.
> 
> OK - would you like to do a patch?

I was hoping you could; I had looked into the toolchain selection
algorithms in buildroot quite a while back and wasn't able to work out
how to implement a feature like that.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-04 16:38         ` Simon Glass
  2015-10-05  1:19           ` Stephen Warren
@ 2015-10-20 15:21           ` Tom Rini
  2015-10-20 17:23             ` Simon Glass
  1 sibling, 1 reply; 11+ messages in thread
From: Tom Rini @ 2015-10-20 15:21 UTC (permalink / raw)
  To: u-boot

On Sun, Oct 04, 2015 at 05:38:41PM +0100, Simon Glass wrote:
> Hi Stephen,
> 
> On 3 October 2015 at 20:20, Stephen Warren <swarren@wwwdotorg.org> wrote:
> > On 10/03/2015 08:30 AM, Simon Glass wrote:
> >> Hi Stephen,
> >>
> >> On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
> >>> On 10/01/2015 04:59 PM, Simon Glass wrote:
> >>>>
> >>>> Hi Stephen,
> >>>>
> >>>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
> >>>> wrote:
> >>>>>
> >>>>>
> >>>>> Simon,
> >>>>>
> >>>>> I have 3 different ARM toolchains installed into /usr/bin via distro
> >>>>> packages. How do I tell buildman which of those to use?
> >>>>>
> >>>>> I had originally thought that ~/.buildman's [toolchain] section contained
> >>>>> CROSS_COMPILE-like values, so I tried:
> >>>>>
> >>>>>> [toolchain]
> >>>>>> root: /
> >>>>>> arm0-not-installed: arm-none-gnueabi-
> >>>>>> arm1: arm-none-eabi-
> >>>>>> arm2: arm-linux-gnueabihf-
> >>>>>> arm3: arm-linux-gnueabi-
> >>>>>> arch64: aarch64-linux-gnu-
> >>>>>>
> >>>>>> [toolchain-alias]
> >>>>>> arm: arm1
> >>>>>> aarch64: aarch64
> >>>>>
> >>>>>
> >>>>>
> >>>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
> >>>>> which I wanted to use at a particular time).
> >>>>>
> >>>>> However, running "buildman --list-toolchains" and re-reading the docs
> >>>>> shows me that the [toolchain] values are absolute directories that buildman
> >>>>> searches for files named *-gcc:
> >>>>>
> >>>>>>     - scanning path 'arm-none-gnueabi-'
> >>>>>>        - looking in 'arm-none-gnueabi-/.'
> >>>>>>        - looking in 'arm-none-gnueabi-/bin'
> >>>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
> >>>>>
> >>>>>
> >>>>>
> >>>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
> >>>>> tell it which one to use. Am I missing something?
> >>>>>
> >>>>> I suppose a solution wouuld be to move the compiler binaries into
> >>>>> different separate directories, and only list one of those directories in
> >>>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
> >>>>> I suppose I could manually mv everything all over the place, but that's
> >>>>> really fragile since it'd break any time the package got upgraded or removed
> >>>>> and re-installed).
> >>>>>
> >>>>> I think it makes sense to add new syntax into ~/.buildman to specify
> >>>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
> >>>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
> >>>>> but if it can't be overridden, it sucks when you actually know what you
> >>>>> want.
> >>>>
> >>>>
> >>>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
> >>>> course it would fail if you tried to build the board with the wrong
> >>>> arch).
> >>>
> >>>
> >>> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
> >>> environment variable, although that would be a simple solution for
> >>> single-arch builds at least. My mention of CROSS_COMPILE immediately above
> >>> was re: using values that are formatted in the same way as the CROSS_COMPILE
> >>> environment variable would be, rather than directory names, in the config
> >>> file. In other words, the example content I showed above.
> >>>
> >>>> The option other option at present is -G which lets you use multiple
> >>>> .buildman files. You could have one of these for each toolchain.
> >>>
> >>>
> >>> I don't think that gets me what I want. As far as I can tell, the buildman
> >>> config file contains a list directories to search within, yet if I have 3
> >>> toolchains in a single directory, there's no way to select which one I want
> >>> to use, is there?
> >>>
> >>> In other words, a config file that contains:
> >>>
> >>> [toolchain]
> >>> distro-packages: /usr/bin
> >>>
> >>> ... finds the following toolchains:
> >>>
> >>> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
> >>>         --list-tool-chains
> >>> Scanning for tool chains
> >>>    - scanning path '/usr/bin'
> >>>       - looking in '/usr/bin/.'
> >>>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
> >>>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
> >>>          - found '/usr/bin/./arm-none-eabi-gcc'
> >>> (That's 3 AArch32 toolchains found)
> >>>          - found '/usr/bin/./winegcc'
> >>>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
> >>>          - found '/usr/bin/./gcc'
> >>>          - found '/usr/bin/./c89-gcc'
> >>>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
> >>>          - found '/usr/bin/./i586-mingw32msvc-gcc'
> >>>          - found '/usr/bin/./c99-gcc'
> >>>       - looking in '/usr/bin/bin'
> >>>       - looking in '/usr/bin/usr/bin'
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> Tool chain test:  OK
> >>> List of available toolchains (7):
> >>> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
> >>> arm       : /usr/bin/./arm-linux-gnueabi-gcc
> >>> (Buildman chose that one, and I think I have no control over that?)
> >>> c89       : /usr/bin/./c89-gcc
> >>> c99       : /usr/bin/./c99-gcc
> >>> i586      : /usr/bin/./i586-mingw32msvc-gcc
> >>> sandbox   : /usr/bin/./winegcc
> >>> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc
> >>
> >> I wonder if we need an option to specify the full path and avoid the search?
> >>
> >> Maybe [toolchain-prefix] ?
> >
> > Yes, that sounds like exactly what I was hoping for.
> 
> OK - would you like to do a patch?

Please note that I think this feature is what we need to be able to drop
MAKEALL support, it's the only use case I can find right now where we
can do something in MAKEALL but not buildman.  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151020/508897c0/attachment.sig>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-20 15:21           ` Tom Rini
@ 2015-10-20 17:23             ` Simon Glass
  2016-03-07 18:30               ` Simon Glass
  0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2015-10-20 17:23 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 20 October 2015 at 09:21, Tom Rini <trini@konsulko.com> wrote:
>
> On Sun, Oct 04, 2015 at 05:38:41PM +0100, Simon Glass wrote:
> > Hi Stephen,
> >
> > On 3 October 2015 at 20:20, Stephen Warren <swarren@wwwdotorg.org> wrote:
> > > On 10/03/2015 08:30 AM, Simon Glass wrote:
> > >> Hi Stephen,
> > >>
> > >> On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
> > >>> On 10/01/2015 04:59 PM, Simon Glass wrote:
> > >>>>
> > >>>> Hi Stephen,
> > >>>>
> > >>>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
> > >>>> wrote:
> > >>>>>
> > >>>>>
> > >>>>> Simon,
> > >>>>>
> > >>>>> I have 3 different ARM toolchains installed into /usr/bin via distro
> > >>>>> packages. How do I tell buildman which of those to use?
> > >>>>>
> > >>>>> I had originally thought that ~/.buildman's [toolchain] section contained
> > >>>>> CROSS_COMPILE-like values, so I tried:
> > >>>>>
> > >>>>>> [toolchain]
> > >>>>>> root: /
> > >>>>>> arm0-not-installed: arm-none-gnueabi-
> > >>>>>> arm1: arm-none-eabi-
> > >>>>>> arm2: arm-linux-gnueabihf-
> > >>>>>> arm3: arm-linux-gnueabi-
> > >>>>>> arch64: aarch64-linux-gnu-
> > >>>>>>
> > >>>>>> [toolchain-alias]
> > >>>>>> arm: arm1
> > >>>>>> aarch64: aarch64
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
> > >>>>> which I wanted to use at a particular time).
> > >>>>>
> > >>>>> However, running "buildman --list-toolchains" and re-reading the docs
> > >>>>> shows me that the [toolchain] values are absolute directories that buildman
> > >>>>> searches for files named *-gcc:
> > >>>>>
> > >>>>>>     - scanning path 'arm-none-gnueabi-'
> > >>>>>>        - looking in 'arm-none-gnueabi-/.'
> > >>>>>>        - looking in 'arm-none-gnueabi-/bin'
> > >>>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
> > >>>>> tell it which one to use. Am I missing something?
> > >>>>>
> > >>>>> I suppose a solution wouuld be to move the compiler binaries into
> > >>>>> different separate directories, and only list one of those directories in
> > >>>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
> > >>>>> I suppose I could manually mv everything all over the place, but that's
> > >>>>> really fragile since it'd break any time the package got upgraded or removed
> > >>>>> and re-installed).
> > >>>>>
> > >>>>> I think it makes sense to add new syntax into ~/.buildman to specify
> > >>>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
> > >>>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
> > >>>>> but if it can't be overridden, it sucks when you actually know what you
> > >>>>> want.
> > >>>>
> > >>>>
> > >>>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
> > >>>> course it would fail if you tried to build the board with the wrong
> > >>>> arch).
> > >>>
> > >>>
> > >>> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
> > >>> environment variable, although that would be a simple solution for
> > >>> single-arch builds at least. My mention of CROSS_COMPILE immediately above
> > >>> was re: using values that are formatted in the same way as the CROSS_COMPILE
> > >>> environment variable would be, rather than directory names, in the config
> > >>> file. In other words, the example content I showed above.
> > >>>
> > >>>> The option other option at present is -G which lets you use multiple
> > >>>> .buildman files. You could have one of these for each toolchain.
> > >>>
> > >>>
> > >>> I don't think that gets me what I want. As far as I can tell, the buildman
> > >>> config file contains a list directories to search within, yet if I have 3
> > >>> toolchains in a single directory, there's no way to select which one I want
> > >>> to use, is there?
> > >>>
> > >>> In other words, a config file that contains:
> > >>>
> > >>> [toolchain]
> > >>> distro-packages: /usr/bin
> > >>>
> > >>> ... finds the following toolchains:
> > >>>
> > >>> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
> > >>>         --list-tool-chains
> > >>> Scanning for tool chains
> > >>>    - scanning path '/usr/bin'
> > >>>       - looking in '/usr/bin/.'
> > >>>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
> > >>>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
> > >>>          - found '/usr/bin/./arm-none-eabi-gcc'
> > >>> (That's 3 AArch32 toolchains found)
> > >>>          - found '/usr/bin/./winegcc'
> > >>>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
> > >>>          - found '/usr/bin/./gcc'
> > >>>          - found '/usr/bin/./c89-gcc'
> > >>>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
> > >>>          - found '/usr/bin/./i586-mingw32msvc-gcc'
> > >>>          - found '/usr/bin/./c99-gcc'
> > >>>       - looking in '/usr/bin/bin'
> > >>>       - looking in '/usr/bin/usr/bin'
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> Tool chain test:  OK
> > >>> List of available toolchains (7):
> > >>> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
> > >>> arm       : /usr/bin/./arm-linux-gnueabi-gcc
> > >>> (Buildman chose that one, and I think I have no control over that?)
> > >>> c89       : /usr/bin/./c89-gcc
> > >>> c99       : /usr/bin/./c99-gcc
> > >>> i586      : /usr/bin/./i586-mingw32msvc-gcc
> > >>> sandbox   : /usr/bin/./winegcc
> > >>> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc
> > >>
> > >> I wonder if we need an option to specify the full path and avoid the search?
> > >>
> > >> Maybe [toolchain-prefix] ?
> > >
> > > Yes, that sounds like exactly what I was hoping for.
> >
> > OK - would you like to do a patch?
>
> Please note that I think this feature is what we need to be able to drop
> MAKEALL support, it's the only use case I can find right now where we
> can do something in MAKEALL but not buildman.  Thanks!
>
> --
> Tom

I'll make time for this over the next few weeks.

Regards,
Simon

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-05  1:19           ` Stephen Warren
@ 2016-03-07  2:39             ` Simon Glass
  0 siblings, 0 replies; 11+ messages in thread
From: Simon Glass @ 2016-03-07  2:39 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On 4 October 2015 at 19:19, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 10/04/2015 10:38 AM, Simon Glass wrote:
>> Hi Stephen,
>>
>> On 3 October 2015 at 20:20, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>> On 10/03/2015 08:30 AM, Simon Glass wrote:
>>>> Hi Stephen,
>>>>
>>>> On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>>>> On 10/01/2015 04:59 PM, Simon Glass wrote:
>>>>>>
>>>>>> Hi Stephen,
>>>>>>
>>>>>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> Simon,
>>>>>>>
>>>>>>> I have 3 different ARM toolchains installed into /usr/bin via distro
>>>>>>> packages. How do I tell buildman which of those to use?
>>>>>>>
>>>>>>> I had originally thought that ~/.buildman's [toolchain] section contained
>>>>>>> CROSS_COMPILE-like values, so I tried:
>>>>>>>
>>>>>>>> [toolchain]
>>>>>>>> root: /
>>>>>>>> arm0-not-installed: arm-none-gnueabi-
>>>>>>>> arm1: arm-none-eabi-
>>>>>>>> arm2: arm-linux-gnueabihf-
>>>>>>>> arm3: arm-linux-gnueabi-
>>>>>>>> arch64: aarch64-linux-gnu-
>>>>>>>>
>>>>>>>> [toolchain-alias]
>>>>>>>> arm: arm1
>>>>>>>> aarch64: aarch64
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
>>>>>>> which I wanted to use at a particular time).
>>>>>>>
>>>>>>> However, running "buildman --list-toolchains" and re-reading the docs
>>>>>>> shows me that the [toolchain] values are absolute directories that buildman
>>>>>>> searches for files named *-gcc:
>>>>>>>
>>>>>>>>     - scanning path 'arm-none-gnueabi-'
>>>>>>>>        - looking in 'arm-none-gnueabi-/.'
>>>>>>>>        - looking in 'arm-none-gnueabi-/bin'
>>>>>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
>>>>>>> tell it which one to use. Am I missing something?
>>>>>>>
>>>>>>> I suppose a solution wouuld be to move the compiler binaries into
>>>>>>> different separate directories, and only list one of those directories in
>>>>>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
>>>>>>> I suppose I could manually mv everything all over the place, but that's
>>>>>>> really fragile since it'd break any time the package got upgraded or removed
>>>>>>> and re-installed).
>>>>>>>
>>>>>>> I think it makes sense to add new syntax into ~/.buildman to specify
>>>>>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
>>>>>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
>>>>>>> but if it can't be overridden, it sucks when you actually know what you
>>>>>>> want.
>>>>>>
>>>>>>
>>>>>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
>>>>>> course it would fail if you tried to build the board with the wrong
>>>>>> arch).
>>>>>
>>>>>
>>>>> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
>>>>> environment variable, although that would be a simple solution for
>>>>> single-arch builds at least. My mention of CROSS_COMPILE immediately above
>>>>> was re: using values that are formatted in the same way as the CROSS_COMPILE
>>>>> environment variable would be, rather than directory names, in the config
>>>>> file. In other words, the example content I showed above.
>>>>>
>>>>>> The option other option at present is -G which lets you use multiple
>>>>>> .buildman files. You could have one of these for each toolchain.
>>>>>
>>>>>
>>>>> I don't think that gets me what I want. As far as I can tell, the buildman
>>>>> config file contains a list directories to search within, yet if I have 3
>>>>> toolchains in a single directory, there's no way to select which one I want
>>>>> to use, is there?
>>>>>
>>>>> In other words, a config file that contains:
>>>>>
>>>>> [toolchain]
>>>>> distro-packages: /usr/bin
>>>>>
>>>>> ... finds the following toolchains:
>>>>>
>>>>> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
>>>>>         --list-tool-chains
>>>>> Scanning for tool chains
>>>>>    - scanning path '/usr/bin'
>>>>>       - looking in '/usr/bin/.'
>>>>>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
>>>>>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
>>>>>          - found '/usr/bin/./arm-none-eabi-gcc'
>>>>> (That's 3 AArch32 toolchains found)
>>>>>          - found '/usr/bin/./winegcc'
>>>>>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
>>>>>          - found '/usr/bin/./gcc'
>>>>>          - found '/usr/bin/./c89-gcc'
>>>>>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
>>>>>          - found '/usr/bin/./i586-mingw32msvc-gcc'
>>>>>          - found '/usr/bin/./c99-gcc'
>>>>>       - looking in '/usr/bin/bin'
>>>>>       - looking in '/usr/bin/usr/bin'
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> Tool chain test:  OK
>>>>> List of available toolchains (7):
>>>>> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
>>>>> arm       : /usr/bin/./arm-linux-gnueabi-gcc
>>>>> (Buildman chose that one, and I think I have no control over that?)
>>>>> c89       : /usr/bin/./c89-gcc
>>>>> c99       : /usr/bin/./c99-gcc
>>>>> i586      : /usr/bin/./i586-mingw32msvc-gcc
>>>>> sandbox   : /usr/bin/./winegcc
>>>>> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc
>>>>
>>>> I wonder if we need an option to specify the full path and avoid the search?
>>>>
>>>> Maybe [toolchain-prefix] ?
>>>
>>> Yes, that sounds like exactly what I was hoping for.
>>
>> OK - would you like to do a patch?
>
> I was hoping you could; I had looked into the toolchain selection
> algorithms in buildroot quite a while back and wasn't able to work out
> how to implement a feature like that.

I never did get to this. But I'll send a series soon which supports this.

Regards,
Simon

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] How do I tell buildman to use a /specific/ toolchain?
  2015-10-20 17:23             ` Simon Glass
@ 2016-03-07 18:30               ` Simon Glass
  0 siblings, 0 replies; 11+ messages in thread
From: Simon Glass @ 2016-03-07 18:30 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On 20 October 2015 at 11:23, Simon Glass <sjg@chromium.org> wrote:
> Hi Tom,
>
> On 20 October 2015 at 09:21, Tom Rini <trini@konsulko.com> wrote:
>>
>> On Sun, Oct 04, 2015 at 05:38:41PM +0100, Simon Glass wrote:
>> > Hi Stephen,
>> >
>> > On 3 October 2015 at 20:20, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> > > On 10/03/2015 08:30 AM, Simon Glass wrote:
>> > >> Hi Stephen,
>> > >>
>> > >> On 2 October 2015 at 00:27, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> > >>> On 10/01/2015 04:59 PM, Simon Glass wrote:
>> > >>>>
>> > >>>> Hi Stephen,
>> > >>>>
>> > >>>> On Wednesday, 23 September 2015, Stephen Warren <swarren@wwwdotorg.org>
>> > >>>> wrote:
>> > >>>>>
>> > >>>>>
>> > >>>>> Simon,
>> > >>>>>
>> > >>>>> I have 3 different ARM toolchains installed into /usr/bin via distro
>> > >>>>> packages. How do I tell buildman which of those to use?
>> > >>>>>
>> > >>>>> I had originally thought that ~/.buildman's [toolchain] section contained
>> > >>>>> CROSS_COMPILE-like values, so I tried:
>> > >>>>>
>> > >>>>>> [toolchain]
>> > >>>>>> root: /
>> > >>>>>> arm0-not-installed: arm-none-gnueabi-
>> > >>>>>> arm1: arm-none-eabi-
>> > >>>>>> arm2: arm-linux-gnueabihf-
>> > >>>>>> arm3: arm-linux-gnueabi-
>> > >>>>>> arch64: aarch64-linux-gnu-
>> > >>>>>>
>> > >>>>>> [toolchain-alias]
>> > >>>>>> arm: arm1
>> > >>>>>> aarch64: aarch64
>> > >>>>>
>> > >>>>>
>> > >>>>>
>> > >>>>> (I intended to change the "arm: arm1" line to point at arm1/2/3 based on
>> > >>>>> which I wanted to use at a particular time).
>> > >>>>>
>> > >>>>> However, running "buildman --list-toolchains" and re-reading the docs
>> > >>>>> shows me that the [toolchain] values are absolute directories that buildman
>> > >>>>> searches for files named *-gcc:
>> > >>>>>
>> > >>>>>>     - scanning path 'arm-none-gnueabi-'
>> > >>>>>>        - looking in 'arm-none-gnueabi-/.'
>> > >>>>>>        - looking in 'arm-none-gnueabi-/bin'
>> > >>>>>>        - looking in 'arm-none-gnueabi-/usr/bin'
>> > >>>>>
>> > >>>>>
>> > >>>>>
>> > >>>>> If buildman finds multiple toolchains, there doesn't seem to be a way to
>> > >>>>> tell it which one to use. Am I missing something?
>> > >>>>>
>> > >>>>> I suppose a solution wouuld be to move the compiler binaries into
>> > >>>>> different separate directories, and only list one of those directories in
>> > >>>>> ~/.buildman. However, I can't do that for distro-packaged toolchains (well,
>> > >>>>> I suppose I could manually mv everything all over the place, but that's
>> > >>>>> really fragile since it'd break any time the package got upgraded or removed
>> > >>>>> and re-installed).
>> > >>>>>
>> > >>>>> I think it makes sense to add new syntax into ~/.buildman to specify
>> > >>>>> "don't do automagical searching, just use this CROSS_COMPILE value that I
>> > >>>>> say". Does that sound reasonable? Automagic stuff makes for great defaults,
>> > >>>>> but if it can't be overridden, it sucks when you actually know what you
>> > >>>>> want.
>> > >>>>
>> > >>>>
>> > >>>> Yes I think it would be fine to add an option to use CROSS_COMPILE (of
>> > >>>> course it would fail if you tried to build the board with the wrong
>> > >>>> arch).
>> > >>>
>> > >>>
>> > >>> I wasn't necessarily looking for buildman to pick up the CROSS_COMPILE
>> > >>> environment variable, although that would be a simple solution for
>> > >>> single-arch builds at least. My mention of CROSS_COMPILE immediately above
>> > >>> was re: using values that are formatted in the same way as the CROSS_COMPILE
>> > >>> environment variable would be, rather than directory names, in the config
>> > >>> file. In other words, the example content I showed above.
>> > >>>
>> > >>>> The option other option at present is -G which lets you use multiple
>> > >>>> .buildman files. You could have one of these for each toolchain.
>> > >>>
>> > >>>
>> > >>> I don't think that gets me what I want. As far as I can tell, the buildman
>> > >>> config file contains a list directories to search within, yet if I have 3
>> > >>> toolchains in a single directory, there's no way to select which one I want
>> > >>> to use, is there?
>> > >>>
>> > >>> In other words, a config file that contains:
>> > >>>
>> > >>> [toolchain]
>> > >>> distro-packages: /usr/bin
>> > >>>
>> > >>> ... finds the following toolchains:
>> > >>>
>> > >>> [swarren at swarren-lx1 u-boot]$ ./tools/buildman/buildman \
>> > >>>         --list-tool-chains
>> > >>> Scanning for tool chains
>> > >>>    - scanning path '/usr/bin'
>> > >>>       - looking in '/usr/bin/.'
>> > >>>          - found '/usr/bin/./arm-linux-gnueabi-gcc'
>> > >>>          - found '/usr/bin/./arm-linux-gnueabihf-gcc'
>> > >>>          - found '/usr/bin/./arm-none-eabi-gcc'
>> > >>> (That's 3 AArch32 toolchains found)
>> > >>>          - found '/usr/bin/./winegcc'
>> > >>>          - found '/usr/bin/./aarch64-linux-gnu-gcc'
>> > >>>          - found '/usr/bin/./gcc'
>> > >>>          - found '/usr/bin/./c89-gcc'
>> > >>>          - found '/usr/bin/./x86_64-linux-gnu-gcc'
>> > >>>          - found '/usr/bin/./i586-mingw32msvc-gcc'
>> > >>>          - found '/usr/bin/./c99-gcc'
>> > >>>       - looking in '/usr/bin/bin'
>> > >>>       - looking in '/usr/bin/usr/bin'
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> Tool chain test:  OK
>> > >>> List of available toolchains (7):
>> > >>> aarch64   : /usr/bin/./aarch64-linux-gnu-gcc
>> > >>> arm       : /usr/bin/./arm-linux-gnueabi-gcc
>> > >>> (Buildman chose that one, and I think I have no control over that?)
>> > >>> c89       : /usr/bin/./c89-gcc
>> > >>> c99       : /usr/bin/./c99-gcc
>> > >>> i586      : /usr/bin/./i586-mingw32msvc-gcc
>> > >>> sandbox   : /usr/bin/./winegcc
>> > >>> x86_64    : /usr/bin/./x86_64-linux-gnu-gcc
>> > >>
>> > >> I wonder if we need an option to specify the full path and avoid the search?
>> > >>
>> > >> Maybe [toolchain-prefix] ?
>> > >
>> > > Yes, that sounds like exactly what I was hoping for.
>> >
>> > OK - would you like to do a patch?
>>
>> Please note that I think this feature is what we need to be able to drop
>> MAKEALL support, it's the only use case I can find right now where we
>> can do something in MAKEALL but not buildman.  Thanks!
>>
>> --
>> Tom
>
> I'll make time for this over the next few weeks.
>
> Regards,
> Simon

Or in fact, I will only just get to it now...

Regards,
Simon

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-03-07 18:30 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-23 19:47 [U-Boot] How do I tell buildman to use a /specific/ toolchain? Stephen Warren
2015-10-01 22:59 ` Simon Glass
2015-10-01 23:27   ` Stephen Warren
2015-10-03 14:30     ` Simon Glass
2015-10-03 19:20       ` Stephen Warren
2015-10-04 16:38         ` Simon Glass
2015-10-05  1:19           ` Stephen Warren
2016-03-07  2:39             ` Simon Glass
2015-10-20 15:21           ` Tom Rini
2015-10-20 17:23             ` Simon Glass
2016-03-07 18:30               ` Simon Glass

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.