diff mbox

[v2] OvmfPkg/build.sh: Make GCC5 the default toolchain, catch GCC43 and earlier

Message ID 20161123023643.7106-2-konrad@kernel.org (mailing list archive)
State New, archived
Headers show

Commit Message

Konrad Rzeszutek Wilk Nov. 23, 2016, 2:36 a.m. UTC
From Laszlo:
" change the catch-all (*) to GCC5, from GCC44
- remove the (5.*.*) pattern from GCC49
- add a branch (with multiple patterns if necessary) for gcc-4.3 and
  earlier to exit with an error message / failure (those compiler
  versions are unsupported)"

Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=62
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
---
v1: First submission
v2: Redo it per Laszlo suggestion.

 OvmfPkg/build.sh | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Comments

Jordan Justen Nov. 23, 2016, 3:37 a.m. UTC | #1
On 2016-11-22 18:36:43, Konrad Rzeszutek Wilk wrote:
> From Laszlo:
> " change the catch-all (*) to GCC5, from GCC44
> - remove the (5.*.*) pattern from GCC49
> - add a branch (with multiple patterns if necessary) for gcc-4.3 and
>   earlier to exit with an error message / failure (those compiler
>   versions are unsupported)"

For future reference, I'd suggest this for the formatting of your
commit message body.

v2:
 * Changes suggested by Laszlo:
   - change the catch-all (*) to GCC5, from GCC44
   - remove the (5.*.*) pattern from GCC49
   - generate error for GCC < 4.4

Patch is Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

I'll let Laszlo take a look too.

Thanks for the contribution!

-Jordan

> Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=62
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
> ---
> v1: First submission
> v2: Redo it per Laszlo suggestion.
> 
>  OvmfPkg/build.sh | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
> index eb5eb73..cab7c70 100755
> --- a/OvmfPkg/build.sh
> +++ b/OvmfPkg/build.sh
> @@ -83,6 +83,13 @@ case `uname` in
>    Linux*)
>      gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
>      case $gcc_version in
> +      4.1.[0-0].*|4.2.*|4.3.*)
> +        echo OvmfPkg requires GCC4.4 or later
> +        exit 1
> +        ;;
> +      4.4.*)
> +        TARGET_TOOLS=GCC44
> +        ;;
>        4.5.*)
>          TARGET_TOOLS=GCC45
>          ;;
> @@ -95,11 +102,11 @@ case `uname` in
>        4.8.*)
>          TARGET_TOOLS=GCC48
>          ;;
> -      4.9.*|4.1[0-9].*|5.*.*)
> +      4.9.*)
>          TARGET_TOOLS=GCC49
>          ;;
>        *)
> -        TARGET_TOOLS=GCC44
> +        TARGET_TOOLS=GCC5
>          ;;
>      esac
>  esac
> -- 
> 2.9.3
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
Laszlo Ersek Nov. 23, 2016, 2:55 p.m. UTC | #2
On 11/23/16 03:36, Konrad Rzeszutek Wilk wrote:
> From Laszlo:
> " change the catch-all (*) to GCC5, from GCC44
> - remove the (5.*.*) pattern from GCC49
> - add a branch (with multiple patterns if necessary) for gcc-4.3 and
>   earlier to exit with an error message / failure (those compiler
>   versions are unsupported)"
> 
> Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=62
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
> ---
> v1: First submission
> v2: Redo it per Laszlo suggestion.
> 
>  OvmfPkg/build.sh | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
> index eb5eb73..cab7c70 100755
> --- a/OvmfPkg/build.sh
> +++ b/OvmfPkg/build.sh
> @@ -83,6 +83,13 @@ case `uname` in
>    Linux*)
>      gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
>      case $gcc_version in
> +      4.1.[0-0].*|4.2.*|4.3.*)

* The [0-0] bracketed expression will work as expected, but it's
somewhat unusual :) Is it intentional?

* If it's a typo, are you okay if I replace it with a plain 0 on commit?

* Also, IIRC, Olaf considered pre-4.0 gcc releases as well (rejecting
them of course), which is sort of meant as part of "gcc-4.3 and
earlier". But, given your extensive testing with old distros (thanks for
that!), I think it's safe to ignore pre-4.0 gcc releases altogether.

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks!
Laszlo

> +        echo OvmfPkg requires GCC4.4 or later
> +        exit 1
> +        ;;
> +      4.4.*)
> +        TARGET_TOOLS=GCC44
> +        ;;
>        4.5.*)
>          TARGET_TOOLS=GCC45
>          ;;
> @@ -95,11 +102,11 @@ case `uname` in
>        4.8.*)
>          TARGET_TOOLS=GCC48
>          ;;
> -      4.9.*|4.1[0-9].*|5.*.*)
> +      4.9.*)
>          TARGET_TOOLS=GCC49
>          ;;
>        *)
> -        TARGET_TOOLS=GCC44
> +        TARGET_TOOLS=GCC5
>          ;;
>      esac
>  esac
>
Laszlo Ersek Nov. 23, 2016, 2:59 p.m. UTC | #3
On 11/23/16 15:55, Laszlo Ersek wrote:
> On 11/23/16 03:36, Konrad Rzeszutek Wilk wrote:
>> From Laszlo:
>> " change the catch-all (*) to GCC5, from GCC44
>> - remove the (5.*.*) pattern from GCC49
>> - add a branch (with multiple patterns if necessary) for gcc-4.3 and
>>   earlier to exit with an error message / failure (those compiler
>>   versions are unsupported)"
>>
>> Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=62
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
>> ---
>> v1: First submission
>> v2: Redo it per Laszlo suggestion.
>>
>>  OvmfPkg/build.sh | 11 +++++++++--
>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
>> index eb5eb73..cab7c70 100755
>> --- a/OvmfPkg/build.sh
>> +++ b/OvmfPkg/build.sh
>> @@ -83,6 +83,13 @@ case `uname` in
>>    Linux*)
>>      gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
>>      case $gcc_version in
>> +      4.1.[0-0].*|4.2.*|4.3.*)
> 
> * The [0-0] bracketed expression will work as expected, but it's
> somewhat unusual :) Is it intentional?
> 
> * If it's a typo, are you okay if I replace it with a plain 0 on commit?

On a second thought, perhaps you meant

  4.0.*|4.1.*|4.2.*|4.3.*)

or

  4.[0-3].*)

If you wish to re-submit for this, we could consider those pre-4
releases as well:

  [1-3].*|4.[0-3].*)

Thanks!
Laszlo

> * Also, IIRC, Olaf considered pre-4.0 gcc releases as well (rejecting
> them of course), which is sort of meant as part of "gcc-4.3 and
> earlier". But, given your extensive testing with old distros (thanks for
> that!), I think it's safe to ignore pre-4.0 gcc releases altogether.
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> 
> Thanks!
> Laszlo
> 
>> +        echo OvmfPkg requires GCC4.4 or later
>> +        exit 1
>> +        ;;
>> +      4.4.*)
>> +        TARGET_TOOLS=GCC44
>> +        ;;
>>        4.5.*)
>>          TARGET_TOOLS=GCC45
>>          ;;
>> @@ -95,11 +102,11 @@ case `uname` in
>>        4.8.*)
>>          TARGET_TOOLS=GCC48
>>          ;;
>> -      4.9.*|4.1[0-9].*|5.*.*)
>> +      4.9.*)
>>          TARGET_TOOLS=GCC49
>>          ;;
>>        *)
>> -        TARGET_TOOLS=GCC44
>> +        TARGET_TOOLS=GCC5
>>          ;;
>>      esac
>>  esac
>>
>
Konrad Rzeszutek Wilk Nov. 23, 2016, 3:01 p.m. UTC | #4
On Wed, Nov 23, 2016 at 03:55:11PM +0100, Laszlo Ersek wrote:
> On 11/23/16 03:36, Konrad Rzeszutek Wilk wrote:
> > From Laszlo:
> > " change the catch-all (*) to GCC5, from GCC44
> > - remove the (5.*.*) pattern from GCC49
> > - add a branch (with multiple patterns if necessary) for gcc-4.3 and
> >   earlier to exit with an error message / failure (those compiler
> >   versions are unsupported)"
> > 
> > Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=62
> > Contributed-under: TianoCore Contribution Agreement 1.0
> > Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
> > ---
> > v1: First submission
> > v2: Redo it per Laszlo suggestion.
> > 
> >  OvmfPkg/build.sh | 11 +++++++++--
> >  1 file changed, 9 insertions(+), 2 deletions(-)
> > 
> > diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
> > index eb5eb73..cab7c70 100755
> > --- a/OvmfPkg/build.sh
> > +++ b/OvmfPkg/build.sh
> > @@ -83,6 +83,13 @@ case `uname` in
> >    Linux*)
> >      gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
> >      case $gcc_version in
> > +      4.1.[0-0].*|4.2.*|4.3.*)
> 
> * The [0-0] bracketed expression will work as expected, but it's
> somewhat unusual :) Is it intentional?
> 
> * If it's a typo, are you okay if I replace it with a plain 0 on commit?

It is a typo! It was 0-9 but I forgot to type 'git commit --amend'. Argh!

Are you OK doing:

 s/[0-0]/[0-9]/

when you commit or would you prefer I repost this with this in _and_ with
your Reviewed-by?

> 
> * Also, IIRC, Olaf considered pre-4.0 gcc releases as well (rejecting
> them of course), which is sort of meant as part of "gcc-4.3 and
> earlier". But, given your extensive testing with old distros (thanks for

Oh gosh.
> that!), I think it's safe to ignore pre-4.0 gcc releases altogether.

Yes :-)
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> 
> Thanks!
> Laszlo
> 
> > +        echo OvmfPkg requires GCC4.4 or later
> > +        exit 1
> > +        ;;
> > +      4.4.*)
> > +        TARGET_TOOLS=GCC44
> > +        ;;
> >        4.5.*)
> >          TARGET_TOOLS=GCC45
> >          ;;
> > @@ -95,11 +102,11 @@ case `uname` in
> >        4.8.*)
> >          TARGET_TOOLS=GCC48
> >          ;;
> > -      4.9.*|4.1[0-9].*|5.*.*)
> > +      4.9.*)
> >          TARGET_TOOLS=GCC49
> >          ;;
> >        *)
> > -        TARGET_TOOLS=GCC44
> > +        TARGET_TOOLS=GCC5
> >          ;;
> >      esac
> >  esac
> > 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> https://lists.xen.org/xen-devel
Laszlo Ersek Nov. 23, 2016, 9:08 p.m. UTC | #5
On 11/23/16 16:01, Konrad Rzeszutek Wilk wrote:
> On Wed, Nov 23, 2016 at 03:55:11PM +0100, Laszlo Ersek wrote:
>> On 11/23/16 03:36, Konrad Rzeszutek Wilk wrote:
>>> From Laszlo:
>>> " change the catch-all (*) to GCC5, from GCC44
>>> - remove the (5.*.*) pattern from GCC49
>>> - add a branch (with multiple patterns if necessary) for gcc-4.3 and
>>>   earlier to exit with an error message / failure (those compiler
>>>   versions are unsupported)"
>>>
>>> Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=62
>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>> Signed-off-by: Konrad Rzeszutek Wilk <konrad@kernel.org>
>>> ---
>>> v1: First submission
>>> v2: Redo it per Laszlo suggestion.
>>>
>>>  OvmfPkg/build.sh | 11 +++++++++--
>>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
>>> index eb5eb73..cab7c70 100755
>>> --- a/OvmfPkg/build.sh
>>> +++ b/OvmfPkg/build.sh
>>> @@ -83,6 +83,13 @@ case `uname` in
>>>    Linux*)
>>>      gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
>>>      case $gcc_version in
>>> +      4.1.[0-0].*|4.2.*|4.3.*)
>>
>> * The [0-0] bracketed expression will work as expected, but it's
>> somewhat unusual :) Is it intentional?
>>
>> * If it's a typo, are you okay if I replace it with a plain 0 on commit?
> 
> It is a typo! It was 0-9 but I forgot to type 'git commit --amend'. Argh!
> 
> Are you OK doing:
> 
>  s/[0-0]/[0-9]/
> 
> when you commit or would you prefer I repost this with this in _and_ with
> your Reviewed-by?

I highly appreciate that you are willing to repost :) So yes, I'd like
to request you do that.

However, since you are willing to repost :), I also ask that you to
reformat the commit message as suggested by Jordan:

  https://lists.01.org/pipermail/edk2-devel/2016-November/005087.html

and to update the line that you are about to modify anyway, to:

  [1-3].*|4.[0-3].*)

  https://lists.01.org/pipermail/edk2-devel/2016-November/005129.html

If you agree, of course. (I'm not trying to be an annoyance on purpose.)

Thank you for working on this!
Laszlo

> 
>>
>> * Also, IIRC, Olaf considered pre-4.0 gcc releases as well (rejecting
>> them of course), which is sort of meant as part of "gcc-4.3 and
>> earlier". But, given your extensive testing with old distros (thanks for
> 
> Oh gosh.
>> that!), I think it's safe to ignore pre-4.0 gcc releases altogether.
> 
> Yes :-)
>>
>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>>
>> Thanks!
>> Laszlo
>>
>>> +        echo OvmfPkg requires GCC4.4 or later
>>> +        exit 1
>>> +        ;;
>>> +      4.4.*)
>>> +        TARGET_TOOLS=GCC44
>>> +        ;;
>>>        4.5.*)
>>>          TARGET_TOOLS=GCC45
>>>          ;;
>>> @@ -95,11 +102,11 @@ case `uname` in
>>>        4.8.*)
>>>          TARGET_TOOLS=GCC48
>>>          ;;
>>> -      4.9.*|4.1[0-9].*|5.*.*)
>>> +      4.9.*)
>>>          TARGET_TOOLS=GCC49
>>>          ;;
>>>        *)
>>> -        TARGET_TOOLS=GCC44
>>> +        TARGET_TOOLS=GCC5
>>>          ;;
>>>      esac
>>>  esac
>>>
>>
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xen.org
>> https://lists.xen.org/xen-devel
Konrad Rzeszutek Wilk Nov. 24, 2016, 1:15 a.m. UTC | #6
Hey!

Changelog:
v3: It is perfect!
  - Redid commit per Jordan suggestion
  - Redid the failure scenario per Laszlo suggestion
  - Redid the testing

v2:
 - Redid it per Laszlo suggestion, added the URL to the bugzilla system
 - Tested it under more OSes

This patch allows me to compile TianoCore under Fedora Core 25.

I've also tested it (v2 and also this v3) under some more ancient distros, such as:

Ubuntu 16.04.1 (GCC 5.4.0), uses GCC5
Debian 8.6 (GCC 4.9.2), uses GCC49
Fedora Core 13 (GCC 4.4.4), uses GCC44
RHEL6 (GCC 4.4.7), uses GCC44

And on earlier versions, such as RHEL5:

[konrad@ol5 ovmf-dir]$ OvmfPkg/build.sh -a X64 -b RELEASE -n 4
Initializing workspace
/home/konrad/ovmf-dir/BaseTools
Loading previous configuration from /home/konrad/ovmf-dir/Conf/BuildEnv.sh
WORKSPACE: /home/konrad/ovmf-dir
EDK_TOOLS_PATH: /home/konrad/ovmf-dir/BaseTools
CONF_PATH: /home/konrad/ovmf-dir/Conf
OvmfPkg requires GCC4.4 or later

[konrad@ol5 ovmf-dir]$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)

[Oddly enough the previous run (v2) - on an different RHEL5 guest - had
a different issue.]


Konrad Rzeszutek Wilk (1):
      OvmfPkg/build.sh: Make GCC5 the default toolchain, catch GCC43 and earlier

 OvmfPkg/build.sh | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
index eb5eb73..cab7c70 100755
--- a/OvmfPkg/build.sh
+++ b/OvmfPkg/build.sh
@@ -83,6 +83,13 @@  case `uname` in
   Linux*)
     gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
     case $gcc_version in
+      4.1.[0-0].*|4.2.*|4.3.*)
+        echo OvmfPkg requires GCC4.4 or later
+        exit 1
+        ;;
+      4.4.*)
+        TARGET_TOOLS=GCC44
+        ;;
       4.5.*)
         TARGET_TOOLS=GCC45
         ;;
@@ -95,11 +102,11 @@  case `uname` in
       4.8.*)
         TARGET_TOOLS=GCC48
         ;;
-      4.9.*|4.1[0-9].*|5.*.*)
+      4.9.*)
         TARGET_TOOLS=GCC49
         ;;
       *)
-        TARGET_TOOLS=GCC44
+        TARGET_TOOLS=GCC5
         ;;
     esac
 esac