Patchwork gcc: use generic infrastructure for patches

login
register
mail settings
Submitter Arnout Vandecappelle
Date Nov. 6, 2013, 10:59 p.m.
Message ID <1383778795-15262-1-git-send-email-arnout@mind.be>
Download mbox | patch
Permalink /patch/289052/
State New
Headers show

Comments

Arnout Vandecappelle - Nov. 6, 2013, 10:59 p.m.
This solves the patch error for gcc snapshots.

Also sneak in an extra condition when applying the powerpc softfloat patch,
so that the error is really fixed.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
The powerpc patch could be converted to link-with-math-lib.patch.powerpc,
but since we're deprecating the *.patch.$(ARCH) pattern I choose to keep
this special treatment.

I didn't want to bother with splitting this patch for the powerpc stuff.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
 package/gcc/gcc-final/4.2.2-avr32-2.1.5          | 1 +
 package/gcc/gcc-final/4.3.6                      | 1 +
 package/gcc/gcc-final/4.4.7                      | 1 +
 package/gcc/gcc-final/4.5.4                      | 1 +
 package/gcc/gcc-final/4.6.4                      | 1 +
 package/gcc/gcc-final/4.7.3                      | 1 +
 package/gcc/gcc-final/4.8-arc                    | 1 +
 package/gcc/gcc-final/4.8.2                      | 1 +
 package/gcc/gcc-final/gcc-final.mk               | 2 +-
 package/gcc/gcc-initial/4.2.2-avr32-2.1.5        | 1 +
 package/gcc/gcc-initial/4.3.6                    | 1 +
 package/gcc/gcc-initial/4.4.7                    | 1 +
 package/gcc/gcc-initial/4.5.4                    | 1 +
 package/gcc/gcc-initial/4.6.4                    | 1 +
 package/gcc/gcc-initial/4.7.3                    | 1 +
 package/gcc/gcc-initial/4.8-arc                  | 1 +
 package/gcc/gcc-initial/4.8.2                    | 1 +
 package/gcc/gcc-initial/gcc-initial.mk           | 2 +-
 package/gcc/gcc-intermediate/4.2.2-avr32-2.1.5   | 1 +
 package/gcc/gcc-intermediate/4.3.6               | 1 +
 package/gcc/gcc-intermediate/4.4.7               | 1 +
 package/gcc/gcc-intermediate/4.5.4               | 1 +
 package/gcc/gcc-intermediate/4.6.4               | 1 +
 package/gcc/gcc-intermediate/4.7.3               | 1 +
 package/gcc/gcc-intermediate/4.8-arc             | 1 +
 package/gcc/gcc-intermediate/4.8.2               | 1 +
 package/gcc/gcc-intermediate/gcc-intermediate.mk | 2 +-
 package/gcc/gcc.mk                               | 9 +++------
 28 files changed, 30 insertions(+), 9 deletions(-)
 create mode 120000 package/gcc/gcc-final/4.2.2-avr32-2.1.5
 create mode 120000 package/gcc/gcc-final/4.3.6
 create mode 120000 package/gcc/gcc-final/4.4.7
 create mode 120000 package/gcc/gcc-final/4.5.4
 create mode 120000 package/gcc/gcc-final/4.6.4
 create mode 120000 package/gcc/gcc-final/4.7.3
 create mode 120000 package/gcc/gcc-final/4.8-arc
 create mode 120000 package/gcc/gcc-final/4.8.2
 create mode 120000 package/gcc/gcc-initial/4.2.2-avr32-2.1.5
 create mode 120000 package/gcc/gcc-initial/4.3.6
 create mode 120000 package/gcc/gcc-initial/4.4.7
 create mode 120000 package/gcc/gcc-initial/4.5.4
 create mode 120000 package/gcc/gcc-initial/4.6.4
 create mode 120000 package/gcc/gcc-initial/4.7.3
 create mode 120000 package/gcc/gcc-initial/4.8-arc
 create mode 120000 package/gcc/gcc-initial/4.8.2
 create mode 120000 package/gcc/gcc-intermediate/4.2.2-avr32-2.1.5
 create mode 120000 package/gcc/gcc-intermediate/4.3.6
 create mode 120000 package/gcc/gcc-intermediate/4.4.7
 create mode 120000 package/gcc/gcc-intermediate/4.5.4
 create mode 120000 package/gcc/gcc-intermediate/4.6.4
 create mode 120000 package/gcc/gcc-intermediate/4.7.3
 create mode 120000 package/gcc/gcc-intermediate/4.8-arc
 create mode 120000 package/gcc/gcc-intermediate/4.8.2
Thomas Petazzoni - Nov. 6, 2013, 11:13 p.m.
Dear Arnout Vandecappelle (Essensium/Mind),

On Wed,  6 Nov 2013 23:59:55 +0100, Arnout Vandecappelle
(Essensium/Mind) wrote:

>  package/gcc/gcc-final/4.2.2-avr32-2.1.5          | 1 +
>  package/gcc/gcc-final/4.3.6                      | 1 +
>  package/gcc/gcc-final/4.4.7                      | 1 +
>  package/gcc/gcc-final/4.5.4                      | 1 +
>  package/gcc/gcc-final/4.6.4                      | 1 +
>  package/gcc/gcc-final/4.7.3                      | 1 +
>  package/gcc/gcc-final/4.8-arc                    | 1 +
>  package/gcc/gcc-final/4.8.2                      | 1 +

The only problem that I see with this symbolic link based solution is
that we will have to remember to add/update the three symbolic each
time we do a gcc version bump. If we forget to do so, then the build
will go on silently, but without having applied the patches.

I don't say this problem is a show-stopper, but it's a drawback of this
symbolic link solution, IMO.

>  define HOST_GCC_APPLY_POWERPC_PATCH
> -	support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional
> +	if [ -e package/gcc/$(GCC_VERSION)/powerpc-link-with-math-lib.patch.conditional ]; then \
> +		support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional; \
> +	fi

Why was adding the condition necessary?

Thanks!

Thomas
Peter Korsgaard - Nov. 6, 2013, 11:17 p.m.
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 > Dear Arnout Vandecappelle (Essensium/Mind),
 > On Wed,  6 Nov 2013 23:59:55 +0100, Arnout Vandecappelle
 > (Essensium/Mind) wrote:

 >> package/gcc/gcc-final/4.2.2-avr32-2.1.5          | 1 +
 >> package/gcc/gcc-final/4.3.6                      | 1 +
 >> package/gcc/gcc-final/4.4.7                      | 1 +
 >> package/gcc/gcc-final/4.5.4                      | 1 +
 >> package/gcc/gcc-final/4.6.4                      | 1 +
 >> package/gcc/gcc-final/4.7.3                      | 1 +
 >> package/gcc/gcc-final/4.8-arc                    | 1 +
 >> package/gcc/gcc-final/4.8.2                      | 1 +

 > The only problem that I see with this symbolic link based solution is
 > that we will have to remember to add/update the three symbolic each
 > time we do a gcc version bump. If we forget to do so, then the build
 > will go on silently, but without having applied the patches.

 > I don't say this problem is a show-stopper, but it's a drawback of this
 > symbolic link solution, IMO.

That was the exact same thought I had. Perhaps it is the best we can
come up with, but it isn't really nice.
Arnout Vandecappelle - Nov. 6, 2013, 11:20 p.m.
On 07/11/13 00:13, Thomas Petazzoni wrote:
> Dear Arnout Vandecappelle (Essensium/Mind),
>
> On Wed,  6 Nov 2013 23:59:55 +0100, Arnout Vandecappelle
> (Essensium/Mind) wrote:
>
>>   package/gcc/gcc-final/4.2.2-avr32-2.1.5          | 1 +
>>   package/gcc/gcc-final/4.3.6                      | 1 +
>>   package/gcc/gcc-final/4.4.7                      | 1 +
>>   package/gcc/gcc-final/4.5.4                      | 1 +
>>   package/gcc/gcc-final/4.6.4                      | 1 +
>>   package/gcc/gcc-final/4.7.3                      | 1 +
>>   package/gcc/gcc-final/4.8-arc                    | 1 +
>>   package/gcc/gcc-final/4.8.2                      | 1 +
>
> The only problem that I see with this symbolic link based solution is
> that we will have to remember to add/update the three symbolic each
> time we do a gcc version bump. If we forget to do so, then the build
> will go on silently, but without having applied the patches.
>
> I don't say this problem is a show-stopper, but it's a drawback of this
> symbolic link solution, IMO.

  I'm hoping that the separate source/build directories will be merged 
soon, so that this won't be necessary anymore :-)

>
>>   define HOST_GCC_APPLY_POWERPC_PATCH
>> -	support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional
>> +	if [ -e package/gcc/$(GCC_VERSION)/powerpc-link-with-math-lib.patch.conditional ]; then \
>> +		support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional; \
>> +	fi
>
> Why was adding the condition necessary?

  Read the rest of the thread: otherwise, apply-patches.sh will error out 
because package/gcc/some-snapshot-directory doesn't exist.

  Granted, I could have tested for the directory instead of the patch 
existence.


  Regards,
  Arnout
Arnout Vandecappelle - Nov. 6, 2013, 11:23 p.m.
On 07/11/13 00:20, Arnout Vandecappelle wrote:
> On 07/11/13 00:13, Thomas Petazzoni wrote:
>> Dear Arnout Vandecappelle (Essensium/Mind),
>>
>> On Wed,  6 Nov 2013 23:59:55 +0100, Arnout Vandecappelle
>> (Essensium/Mind) wrote:
>>
>>>   package/gcc/gcc-final/4.2.2-avr32-2.1.5          | 1 +
>>>   package/gcc/gcc-final/4.3.6                      | 1 +
>>>   package/gcc/gcc-final/4.4.7                      | 1 +
>>>   package/gcc/gcc-final/4.5.4                      | 1 +
>>>   package/gcc/gcc-final/4.6.4                      | 1 +
>>>   package/gcc/gcc-final/4.7.3                      | 1 +
>>>   package/gcc/gcc-final/4.8-arc                    | 1 +
>>>   package/gcc/gcc-final/4.8.2                      | 1 +
>>
>> The only problem that I see with this symbolic link based solution is
>> that we will have to remember to add/update the three symbolic each
>> time we do a gcc version bump. If we forget to do so, then the build
>> will go on silently, but without having applied the patches.
>>
>> I don't say this problem is a show-stopper, but it's a drawback of this
>> symbolic link solution, IMO.
>
>   I'm hoping that the separate source/build directories will be merged
> soon, so that this won't be necessary anymore :-)

  Let me clarify that:

  Once the separate source/build directories exist, I would like to 
introduce infrastructure to build several packages from the same source. 
So gcc would be extracted and patched only once, and built several times. 
Same for kernel-headers vs. linux, or uboot vs. uboot-tools. That will 
really make me happy :-)

  Regards,
  Arnout
Andi Shyti - Nov. 7, 2013, 1:19 a.m.
> This solves the patch error for gcc snapshots.
> 
> Also sneak in an extra condition when applying the powerpc softfloat patch,
> so that the error is really fixed.
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

works fine, just tested it.
If this is going to be applied, please feel free to add:

Tested-by: Andi Shyti <andi@etezian.org>

Patch

diff --git a/package/gcc/gcc-final/4.2.2-avr32-2.1.5 b/package/gcc/gcc-final/4.2.2-avr32-2.1.5
new file mode 120000
index 0000000..032c9e3
--- /dev/null
+++ b/package/gcc/gcc-final/4.2.2-avr32-2.1.5
@@ -0,0 +1 @@ 
+../4.2.2-avr32-2.1.5
\ No newline at end of file
diff --git a/package/gcc/gcc-final/4.3.6 b/package/gcc/gcc-final/4.3.6
new file mode 120000
index 0000000..e1c481e
--- /dev/null
+++ b/package/gcc/gcc-final/4.3.6
@@ -0,0 +1 @@ 
+../4.3.6
\ No newline at end of file
diff --git a/package/gcc/gcc-final/4.4.7 b/package/gcc/gcc-final/4.4.7
new file mode 120000
index 0000000..a7ca0e2
--- /dev/null
+++ b/package/gcc/gcc-final/4.4.7
@@ -0,0 +1 @@ 
+../4.4.7
\ No newline at end of file
diff --git a/package/gcc/gcc-final/4.5.4 b/package/gcc/gcc-final/4.5.4
new file mode 120000
index 0000000..b758df2
--- /dev/null
+++ b/package/gcc/gcc-final/4.5.4
@@ -0,0 +1 @@ 
+../4.5.4
\ No newline at end of file
diff --git a/package/gcc/gcc-final/4.6.4 b/package/gcc/gcc-final/4.6.4
new file mode 120000
index 0000000..d4c8b47
--- /dev/null
+++ b/package/gcc/gcc-final/4.6.4
@@ -0,0 +1 @@ 
+../4.6.4
\ No newline at end of file
diff --git a/package/gcc/gcc-final/4.7.3 b/package/gcc/gcc-final/4.7.3
new file mode 120000
index 0000000..6c32215
--- /dev/null
+++ b/package/gcc/gcc-final/4.7.3
@@ -0,0 +1 @@ 
+../4.7.3
\ No newline at end of file
diff --git a/package/gcc/gcc-final/4.8-arc b/package/gcc/gcc-final/4.8-arc
new file mode 120000
index 0000000..4f63276
--- /dev/null
+++ b/package/gcc/gcc-final/4.8-arc
@@ -0,0 +1 @@ 
+../4.8-arc
\ No newline at end of file
diff --git a/package/gcc/gcc-final/4.8.2 b/package/gcc/gcc-final/4.8.2
new file mode 120000
index 0000000..27736e8
--- /dev/null
+++ b/package/gcc/gcc-final/4.8.2
@@ -0,0 +1 @@ 
+../4.8.2
\ No newline at end of file
diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
index b396382..409ac97 100644
--- a/package/gcc/gcc-final/gcc-final.mk
+++ b/package/gcc/gcc-final/gcc-final.mk
@@ -18,7 +18,7 @@  ifneq ($(call qstrip, $(BR2_XTENSA_CORE_NAME)),)
 HOST_GCC_FINAL_POST_EXTRACT_CMDS += HOST_GCC_FINAL_XTENSA_OVERLAY_EXTRACT
 endif
 
-HOST_GCC_FINAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES
+HOST_GCC_FINAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_POWERPC_PATCH
 
 # gcc doesn't support in-tree build, so we create a 'build'
 # subdirectory in the gcc sources, and build from there.
diff --git a/package/gcc/gcc-initial/4.2.2-avr32-2.1.5 b/package/gcc/gcc-initial/4.2.2-avr32-2.1.5
new file mode 120000
index 0000000..032c9e3
--- /dev/null
+++ b/package/gcc/gcc-initial/4.2.2-avr32-2.1.5
@@ -0,0 +1 @@ 
+../4.2.2-avr32-2.1.5
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/4.3.6 b/package/gcc/gcc-initial/4.3.6
new file mode 120000
index 0000000..e1c481e
--- /dev/null
+++ b/package/gcc/gcc-initial/4.3.6
@@ -0,0 +1 @@ 
+../4.3.6
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/4.4.7 b/package/gcc/gcc-initial/4.4.7
new file mode 120000
index 0000000..a7ca0e2
--- /dev/null
+++ b/package/gcc/gcc-initial/4.4.7
@@ -0,0 +1 @@ 
+../4.4.7
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/4.5.4 b/package/gcc/gcc-initial/4.5.4
new file mode 120000
index 0000000..b758df2
--- /dev/null
+++ b/package/gcc/gcc-initial/4.5.4
@@ -0,0 +1 @@ 
+../4.5.4
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/4.6.4 b/package/gcc/gcc-initial/4.6.4
new file mode 120000
index 0000000..d4c8b47
--- /dev/null
+++ b/package/gcc/gcc-initial/4.6.4
@@ -0,0 +1 @@ 
+../4.6.4
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/4.7.3 b/package/gcc/gcc-initial/4.7.3
new file mode 120000
index 0000000..6c32215
--- /dev/null
+++ b/package/gcc/gcc-initial/4.7.3
@@ -0,0 +1 @@ 
+../4.7.3
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/4.8-arc b/package/gcc/gcc-initial/4.8-arc
new file mode 120000
index 0000000..4f63276
--- /dev/null
+++ b/package/gcc/gcc-initial/4.8-arc
@@ -0,0 +1 @@ 
+../4.8-arc
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/4.8.2 b/package/gcc/gcc-initial/4.8.2
new file mode 120000
index 0000000..27736e8
--- /dev/null
+++ b/package/gcc/gcc-initial/4.8.2
@@ -0,0 +1 @@ 
+../4.8.2
\ No newline at end of file
diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk
index 0eb492f..6a1ec3c 100644
--- a/package/gcc/gcc-initial/gcc-initial.mk
+++ b/package/gcc/gcc-initial/gcc-initial.mk
@@ -16,7 +16,7 @@  ifneq ($(call qstrip, $(BR2_XTENSA_CORE_NAME)),)
 HOST_GCC_INITIAL_POST_EXTRACT_CMDS += HOST_GCC_XTENSA_OVERLAY_EXTRACT
 endif
 
-HOST_GCC_INITIAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES
+HOST_GCC_INITIAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_POWERPC_PATCH
 
 # gcc doesn't support in-tree build, so we create a 'build'
 # subdirectory in the gcc sources, and build from there.
diff --git a/package/gcc/gcc-intermediate/4.2.2-avr32-2.1.5 b/package/gcc/gcc-intermediate/4.2.2-avr32-2.1.5
new file mode 120000
index 0000000..032c9e3
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.2.2-avr32-2.1.5
@@ -0,0 +1 @@ 
+../4.2.2-avr32-2.1.5
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/4.3.6 b/package/gcc/gcc-intermediate/4.3.6
new file mode 120000
index 0000000..e1c481e
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.3.6
@@ -0,0 +1 @@ 
+../4.3.6
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/4.4.7 b/package/gcc/gcc-intermediate/4.4.7
new file mode 120000
index 0000000..a7ca0e2
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.4.7
@@ -0,0 +1 @@ 
+../4.4.7
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/4.5.4 b/package/gcc/gcc-intermediate/4.5.4
new file mode 120000
index 0000000..b758df2
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.5.4
@@ -0,0 +1 @@ 
+../4.5.4
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/4.6.4 b/package/gcc/gcc-intermediate/4.6.4
new file mode 120000
index 0000000..d4c8b47
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.6.4
@@ -0,0 +1 @@ 
+../4.6.4
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/4.7.3 b/package/gcc/gcc-intermediate/4.7.3
new file mode 120000
index 0000000..6c32215
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.7.3
@@ -0,0 +1 @@ 
+../4.7.3
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/4.8-arc b/package/gcc/gcc-intermediate/4.8-arc
new file mode 120000
index 0000000..4f63276
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.8-arc
@@ -0,0 +1 @@ 
+../4.8-arc
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/4.8.2 b/package/gcc/gcc-intermediate/4.8.2
new file mode 120000
index 0000000..27736e8
--- /dev/null
+++ b/package/gcc/gcc-intermediate/4.8.2
@@ -0,0 +1 @@ 
+../4.8.2
\ No newline at end of file
diff --git a/package/gcc/gcc-intermediate/gcc-intermediate.mk b/package/gcc/gcc-intermediate/gcc-intermediate.mk
index f47e4be..c0bf6fc 100644
--- a/package/gcc/gcc-intermediate/gcc-intermediate.mk
+++ b/package/gcc/gcc-intermediate/gcc-intermediate.mk
@@ -18,7 +18,7 @@  ifneq ($(call qstrip, $(BR2_XTENSA_CORE_NAME)),)
 HOST_GCC_INTERMEDIATE_POST_EXTRACT_CMDS += HOST_GCC_XTENSA_OVERLAY_EXTRACT
 endif
 
-HOST_GCC_INTERMEDIATE_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES
+HOST_GCC_INTERMEDIATE_POST_PATCH_HOOKS += HOST_GCC_APPLY_POWERPC_PATCH
 
 # gcc doesn't support in-tree build, so we create a 'build'
 # subdirectory in the gcc sources, and build from there.
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index 0c0cc99..bddceba 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -43,16 +43,13 @@  endef
 ifeq ($(ARCH),powerpc)
 ifneq ($(BR2_SOFT_FLOAT),)
 define HOST_GCC_APPLY_POWERPC_PATCH
-	support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional
+	if [ -e package/gcc/$(GCC_VERSION)/powerpc-link-with-math-lib.patch.conditional ]; then \
+		support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) powerpc-link-with-math-lib.patch.conditional; \
+	fi
 endef
 endif
 endif
 
-define HOST_GCC_APPLY_PATCHES
-	support/scripts/apply-patches.sh $(@D) package/gcc/$(GCC_VERSION) \*.patch
-	$(HOST_GCC_APPLY_POWERPC_PATCH)
-endef
-
 #
 # Custom extract command to save disk space
 #