diff mbox

[PATCH/next] toolchain-external: support gcc < 4.3

Message ID 20161123111404.20661-1-arnout@mind.be
State Changes Requested
Headers show

Commit Message

Arnout Vandecappelle Nov. 23, 2016, 11:14 a.m. UTC
We currently support gcc as old as 4.3. However, Buildroot works
perfectly well with even older gcc versions (tested with 4.1). So we
can add an option BR2_TOOLCHAIN_EXTERNAL_GCC_OLD to support that. The
help text of this option is written with plenty of discouragement.

We use _OLD and not something like _PRE_4_3, because at some point we
will likely remove the 4.3 option and what would then require a name
change.

We don't set any _AT_LEAST option in this case because it's no use -
there is no lower bound on the version in this case. We therefore leave
BR2_TOOLCHAIN_GCC_AT_LEAST empty (the implicit default). When it is
empty, we don't do a version check at all in check_gcc_version. Indeed,
it makes perfect sense to not set any BR2_TOOLCHAIN_GCC_AT_LEAST
option.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
This patch conflicts with the external toolchain rework - I'll rebase
the one which "looses" in the first-to-be-committed contest.

We should also remove the 4.3 and 4.4 options, because they are
currently unused and also untested in the autobuilders.

I think something similar should be done for kernel headers.
---
 toolchain/helpers.mk                   |  3 +--
 toolchain/toolchain-external/Config.in | 11 +++++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

Comments

Thomas Petazzoni Nov. 23, 2016, 12:22 p.m. UTC | #1
Hello,

On Wed, 23 Nov 2016 12:14:04 +0100, Arnout Vandecappelle
(Essensium/Mind) wrote:

> We should also remove the 4.3 and 4.4 options, because they are
> currently unused and also untested in the autobuilders.

The Blackfin ADI toolchains use gcc 4.3, if I remember correctly.

Thomas
Arnout Vandecappelle Nov. 23, 2016, 12:27 p.m. UTC | #2
On 23-11-16 13:22, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 23 Nov 2016 12:14:04 +0100, Arnout Vandecappelle
> (Essensium/Mind) wrote:
> 
>> We should also remove the 4.3 and 4.4 options, because they are
>> currently unused and also untested in the autobuilders.
> 
> The Blackfin ADI toolchains use gcc 4.3, if I remember correctly.

 Sorry, let me correct my statement: because they are currently unused by any
package and will very soon be untested in the autobuilders.

 Regards,
 Arnout
Thomas Petazzoni Nov. 23, 2016, 10:19 p.m. UTC | #3
Hello,

On Wed, 23 Nov 2016 13:27:38 +0100, Arnout Vandecappelle wrote:

> > The Blackfin ADI toolchains use gcc 4.3, if I remember correctly.  
> 
>  Sorry, let me correct my statement: because they are currently unused by any
> package and will very soon be untested in the autobuilders.

Huh?

toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in:     select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3

So it's definitely used, at least until we remove the ADI Blackfin
toolchain.

Bets regards,

Thomas
Thomas Petazzoni Nov. 23, 2016, 10:21 p.m. UTC | #4
Hello,

On Wed, 23 Nov 2016 12:14:04 +0100, Arnout Vandecappelle
(Essensium/Mind) wrote:

> This patch conflicts with the external toolchain rework - I'll rebase
> the one which "looses" in the first-to-be-committed contest.

external toolchain rework committed :)

> 
> We should also remove the 4.3 and 4.4 options, because they are
> currently unused and also untested in the autobuilders.
> 
> I think something similar should be done for kernel headers.

We already have something like this: we have
BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD.

>  toolchain/helpers.mk                   |  3 +--
>  toolchain/toolchain-external/Config.in | 11 +++++++++++
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
> index 3991bc1..72e7292 100644
> --- a/toolchain/helpers.mk
> +++ b/toolchain/helpers.mk
> @@ -145,8 +145,7 @@ check_kernel_headers_version = \
>  check_gcc_version = \
>  	expected_version="$(strip $2)" ; \
>  	if [ -z "$${expected_version}" ]; then \
> -		printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \
> -		exit 1 ; \
> +		exit 0 ; \

Why?

Assuming you will respin, I've marked this one as Changes Requested.

Thanks!

Thomas
Arnout Vandecappelle Nov. 23, 2016, 11:36 p.m. UTC | #5
On 23-11-16 23:19, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 23 Nov 2016 13:27:38 +0100, Arnout Vandecappelle wrote:
> 
>>> The Blackfin ADI toolchains use gcc 4.3, if I remember correctly.  
>>
>>  Sorry, let me correct my statement: because they are currently unused by any
>> package and will very soon be untested in the autobuilders.
> 
> Huh?
> 
> toolchain/toolchain-external/toolchain-external-blackfin-uclinux/Config.in:     select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
> 
> So it's definitely used, at least until we remove the ADI Blackfin
> toolchain.

 When I say package, I mean: no package depends on _AT_LEAST_4_3 or _4_4.

 And the ADI Blackfin removal patch is coming up :-)

 Regards,
 Arnout

> 
> Bets regards,
> 
> Thomas
>
Arnout Vandecappelle Nov. 23, 2016, 11:38 p.m. UTC | #6
On 23-11-16 23:21, Thomas Petazzoni wrote:
[snip]
>> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
>> index 3991bc1..72e7292 100644
>> --- a/toolchain/helpers.mk
>> +++ b/toolchain/helpers.mk
>> @@ -145,8 +145,7 @@ check_kernel_headers_version = \
>>  check_gcc_version = \
>>  	expected_version="$(strip $2)" ; \
>>  	if [ -z "$${expected_version}" ]; then \
>> -		printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \
>> -		exit 1 ; \
>> +		exit 0 ; \
> 
> Why?

 As stated in the commit log:

When [BR2_TOOLCHAIN_GCC_AT_LEAST] is
empty, we don't do a version check at all in check_gcc_version.

 Perhaps I should add to that "(previously we errored out)".

 Regards,
 Arnout



> 
> Assuming you will respin, I've marked this one as Changes Requested.
> 
> Thanks!
> 
> Thomas
>
Thomas Petazzoni Nov. 24, 2016, 8:01 a.m. UTC | #7
Hello,

On Thu, 24 Nov 2016 00:38:33 +0100, Arnout Vandecappelle wrote:
> On 23-11-16 23:21, Thomas Petazzoni wrote:
> [snip]
> >> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
> >> index 3991bc1..72e7292 100644
> >> --- a/toolchain/helpers.mk
> >> +++ b/toolchain/helpers.mk
> >> @@ -145,8 +145,7 @@ check_kernel_headers_version = \
> >>  check_gcc_version = \
> >>  	expected_version="$(strip $2)" ; \
> >>  	if [ -z "$${expected_version}" ]; then \
> >> -		printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \
> >> -		exit 1 ; \
> >> +		exit 0 ; \  
> > 
> > Why?  
> 
>  As stated in the commit log:
> 
> When [BR2_TOOLCHAIN_GCC_AT_LEAST] is
> empty, we don't do a version check at all in check_gcc_version.
> 
>  Perhaps I should add to that "(previously we errored out)".

Well, we're still erroring out, but with a 0 exit code. So I must be
missing something.

Thomas
Arnout Vandecappelle Nov. 24, 2016, 8:39 a.m. UTC | #8
On 24-11-16 09:01, Thomas Petazzoni wrote:
> Hello,
> 
> On Thu, 24 Nov 2016 00:38:33 +0100, Arnout Vandecappelle wrote:
>> On 23-11-16 23:21, Thomas Petazzoni wrote:
>> [snip]
>>>> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
>>>> index 3991bc1..72e7292 100644
>>>> --- a/toolchain/helpers.mk
>>>> +++ b/toolchain/helpers.mk
>>>> @@ -145,8 +145,7 @@ check_kernel_headers_version = \
>>>>  check_gcc_version = \
>>>>  	expected_version="$(strip $2)" ; \
>>>>  	if [ -z "$${expected_version}" ]; then \
>>>> -		printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \
>>>> -		exit 1 ; \
>>>> +		exit 0 ; \  
>>>
>>> Why?  
>>
>>  As stated in the commit log:
>>
>> When [BR2_TOOLCHAIN_GCC_AT_LEAST] is
>> empty, we don't do a version check at all in check_gcc_version.
>>
>>  Perhaps I should add to that "(previously we errored out)".
> 
> Well, we're still erroring out, but with a 0 exit code. So I must be
> missing something.

 0 is not an error, right?

 Too early in the morning?

 Regards,
 Arnout
Thomas Petazzoni Nov. 24, 2016, 8:48 a.m. UTC | #9
Hello,

On Thu, 24 Nov 2016 09:39:13 +0100, Arnout Vandecappelle wrote:

> >> When [BR2_TOOLCHAIN_GCC_AT_LEAST] is
> >> empty, we don't do a version check at all in check_gcc_version.
> >>
> >>  Perhaps I should add to that "(previously we errored out)".  
> > 
> > Well, we're still erroring out, but with a 0 exit code. So I must be
> > missing something.  
> 
>  0 is not an error, right?

Hum, right. I think what confused me is that "exit 0" doesn't abort the
build. It exists the sub-shell started by make, with a zero exit code,
so make continues the build. I was thinking it would abort the build
completely, which is why I was confused.

Thanks,

Thomas
diff mbox

Patch

diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
index 3991bc1..72e7292 100644
--- a/toolchain/helpers.mk
+++ b/toolchain/helpers.mk
@@ -145,8 +145,7 @@  check_kernel_headers_version = \
 check_gcc_version = \
 	expected_version="$(strip $2)" ; \
 	if [ -z "$${expected_version}" ]; then \
-		printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \
-		exit 1 ; \
+		exit 0 ; \
 	fi; \
 	real_version=`$(1) --version | sed -r -e '1!d; s/^[^)]+\) ([^[:space:]]+).*/\1/;'` ; \
 	if [[ ! "$${real_version}" =~ ^$${expected_version}\. ]] ; then \
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 5324599..7a3c504 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -712,6 +712,17 @@  config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
 	bool "4.3.x"
 	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
 
+config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD
+	bool "older"
+	help
+	  Use this option if your GCC version is older than any of the
+	  above.
+
+	  Note that the Buildroot community doesn't do any testing with
+	  such old toolchains. Some packages may fail to build in
+	  surprising ways, or the generated root filesystem may not
+	  work at all. Use such old toolchains at your own risk.
+
 endchoice
 
 choice