Skip to contentSkip to conversation

How do I tell buildman to use a /specific/ toolchain?

U-Boot Stephen Warren 3 participants 11 messages Sep 23, 2015 – Mar 7, 2016

lore
Share & tools
lore
#0 lore raw

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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.

#1 lore raw

Hi Stephen,

Quoted 30 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

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

Quoted 5 lines

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

#2 lore raw
Quoted 35 lines · Simon Glass

Hi Stephen,

Quoted 32 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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?

Quoted 7 lines
Quoted 3 lines

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.

Quoted 2 lines

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

#3 lore raw

Hi Stephen,

Quoted 117 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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
Quoted 9 lines

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

#4 lore raw
Quoted 130 lines · Simon Glass

Hi Stephen,

Quoted 117 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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
Quoted 9 lines

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

Quoted 3 lines

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.

#5 lore raw

Hi Stephen,

Quoted 131 lines · Stephen Warren
Quoted 130 lines · Simon Glass

Hi Stephen,

Quoted 126 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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

Quoted 5 lines
Quoted 3 lines

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

#6 lore raw
Quoted 134 lines · Simon Glass

Hi Stephen,

Quoted 131 lines · Stephen Warren
Quoted 130 lines · Simon Glass

Hi Stephen,

Quoted 126 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

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.

#7 lore raw

Hi Stephen,

Quoted 139 lines · Stephen Warren
Quoted 138 lines · Simon Glass

Hi Stephen,

Quoted 135 lines · Stephen Warren
Quoted 133 lines · Simon Glass

Hi Stephen,

Quoted 117 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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
Quoted 9 lines

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] ?

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

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

#8 lore raw
In reply to Simon Glass
Quoted 134 lines · Simon Glass

Hi Stephen,

Quoted 131 lines · Stephen Warren
Quoted 130 lines · Simon Glass

Hi Stephen,

Quoted 126 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

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!

Signature · 8 lines
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>
#9 lore raw

Hi Tom,

Quoted 142 lines · Tom Rini
Quoted 140 lines · Simon Glass

Hi Stephen,

Quoted 136 lines · Stephen Warren
Quoted 130 lines · Simon Glass

Hi Stephen,

Quoted 117 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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
Quoted 9 lines

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

Quoted 3 lines

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.

Quoted 8 lines
Quoted 1 line

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

#10 lore raw

Hi Tom,

Quoted 151 lines · Simon Glass

Hi Tom,

Quoted 148 lines · Tom Rini
Quoted 134 lines · Simon Glass

Hi Stephen,

Quoted 131 lines · Stephen Warren
Quoted 130 lines · Simon Glass

Hi Stephen,

Quoted 126 lines · Stephen Warren
Quoted 60 lines · Simon Glass

Hi Stephen,

Quoted 48 lines · Stephen Warren

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:

Quoted 11 lines

[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:

Quoted 4 lines

- 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).

Quoted 5 lines

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.

Quoted 3 lines

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.

Quoted 2 lines

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

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

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!

Quoted 7 lines
Quoted 2 lines

--
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