Patchwork gcc: Ensure that the shared source directory shared the same sstate hashes

login
register
mail settings
Submitter Richard Purdie
Date Jan. 19, 2012, 7:38 p.m.
Message ID <1327001920.23015.1.camel@ted>
Download mbox | patch
Permalink /patch/19795/
State Accepted
Commit 2c4569801a710f34a695b8d2a0ee7fc127fb34e4
Headers show

Comments

Richard Purdie - Jan. 19, 2012, 7:38 p.m.
The fetch/unpack/patch/headerfix tasks are shared and hence their sstate hashes
should also match. Sadly this is not the case since:

a) gcc-runtime applies an additional patch
b) The do_headerfix task was missing from libgcc
c) The do_headerfix task is a shell task and hence depends
   on all exported variables which can vary between cross and target
   recipes.

To fix this, the patch moves the patch to the common code, adds
the headerfix task to a common include file and disabled shell
dependencies on the do_headerfix task since its clear in this case
we don't need thsoe dependencies since we just call sed.

With this patch applied, all these recipes now share common sstate checksums.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
Saul Wold - Jan. 20, 2012, 8:19 a.m.
On 01/19/2012 11:38 AM, Richard Purdie wrote:
> The fetch/unpack/patch/headerfix tasks are shared and hence their sstate hashes
> should also match. Sadly this is not the case since:
>
> a) gcc-runtime applies an additional patch
> b) The do_headerfix task was missing from libgcc
> c) The do_headerfix task is a shell task and hence depends
>     on all exported variables which can vary between cross and target
>     recipes.
>
> To fix this, the patch moves the patch to the common code, adds
> the headerfix task to a common include file and disabled shell
> dependencies on the do_headerfix task since its clear in this case
> we don't need thsoe dependencies since we just call sed.
>
> With this patch applied, all these recipes now share common sstate checksums.
>
Richard,

I tried both a sstate build with and existing tmp and a clean tmp, the 
existing tmp seemed to work ok, but with a clean tmp (and sstate), I got 
the following patch issue still.

This was with BB_SIGNATURE_HANDLER ?= 'basichash' set.

ERROR: Command Error: exit status: 1  Output:
Could not link file 
`.pc/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch/configure' to `configure': No 
such file or directory
Applying patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
patching file configure.ac
Hunk #1 FAILED at 3073.
1 out of 1 hunk FAILED -- rejects in file configure.ac
patching file configure
Hunk #1 FAILED at 7594.
1 out of 1 hunk FAILED -- rejects in file configure
Patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch does not apply (enforce with -f)
ERROR: Function failed: patch_do_patch
ERROR: Logfile of failure stored in: 
/intel/poky2/builds/binutils/tmp/work-shared/gcc-4.6.2+svnr181430-r20/temp/log.do_patch.15457
NOTE: package libgcc-4.6.2+svnr181430-r20: task do_patch: Failed
ERROR: Task 882 
(/intel/poky2/distro/meta/recipes-devtools/gcc/libgcc_4.6.bb, do_patch) 
failed with exit code '1'

I have not tried a clean sstate / clean tmp.

Sau!

> Signed-off-by: Richard Purdie<richard.purdie@linuxfoundation.org>
> ---
> diff --git a/meta/recipes-devtools/gcc/gcc-4.6.inc b/meta/recipes-devtools/gcc/gcc-4.6.inc
> index 4bbb2d2..a76fa0b 100644
> --- a/meta/recipes-devtools/gcc/gcc-4.6.inc
> +++ b/meta/recipes-devtools/gcc/gcc-4.6.inc
> @@ -73,6 +73,7 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH};proto=http \
>   	   file://pr47551.patch \
>   	   file://gcc-arm-set-cost.patch \
>   	   file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
> +	   file://fortran-cross-compile-hack.patch \
>   	  "
>
>   SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
> diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
> index fe112d9..ed41b0f 100644
> --- a/meta/recipes-devtools/gcc/gcc-common.inc
> +++ b/meta/recipes-devtools/gcc/gcc-common.inc
> @@ -88,3 +88,20 @@ python workshared_clean () {
>   	bb.note("Removing " + dir)
>   	oe.path.remove(dir)
>   }
> +
> +do_headerfix () {
> +	# Change the default dynamic linker path, in case $base_liddir is non-standard
> +	# (e.g. in multilib or sdk cases)
> +	#
> +	# We want something like the following:
> +	# 	#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
> +	# becomes
> +	#	#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
> +	#
> +	sed -i ${S}/gcc/config/*/linux*.h -e \
> +		's#\(GLIBC_DYNAMIC_LINKER[^ ]*\) \( *"/lib.*\)/\(.*\)#\1 SYSTEMLIBS_DIR "\3#'
> +}
> +
> +addtask headerfix after do_unpack before do_patch
> +
> +do_headerfix[vardepvalue] = "PATH"
> diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc
> index d014980..c4b6ac1 100644
> --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
> +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
> @@ -62,21 +62,6 @@ SYSTEMHEADERS = "${target_includedir}"
>   SYSTEMLIBS = "${target_base_libdir}/"
>   SYSTEMLIBS1 = "${target_libdir}/"
>
> -do_headerfix () {
> -	# Change the default dynamic linker path, in case $base_liddir is non-standard
> -	# (e.g. in multilib or sdk cases)
> -	#
> -	# We want something like the following:
> -	# 	#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
> -	# becomes
> -	#	#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
> -	#
> -	sed -i ${S}/gcc/config/*/linux*.h -e \
> -		's#\(GLIBC_DYNAMIC_LINKER[^ ]*\) \( *"/lib.*\)/\(.*\)#\1 SYSTEMLIBS_DIR "\3#'
> -}
> -
> -addtask headerfix after do_unpack before do_patch
> -
>   do_configure_prepend () {
>   	# teach gcc to find correct target includedir when checking libc ssp support
>   	mkdir -p ${B}/gcc
> diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
> index 568b5af..97468db 100644
> --- a/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
> +++ b/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
> @@ -2,8 +2,6 @@ require gcc-${PV}.inc
>   require gcc-configure-runtime.inc
>   require gcc-package-runtime.inc
>
> -SRC_URI_append = "file://fortran-cross-compile-hack.patch"
> -
>   ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
>
>   EXTRA_OECONF += "--disable-libunwind-exceptions"
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
Lianhao Lu - Jan. 20, 2012, 8:49 a.m.
> -----Original Message-----
> From: openembedded-core-bounces@lists.openembedded.org [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf
> Of Saul Wold
> Sent: Friday, January 20, 2012 4:19 PM
> To: Patches and discussions about the oe-core layer
> Subject: Re: [OE-core] [PATCH] gcc: Ensure that the shared source directory shared the same sstate hashes
> 
> On 01/19/2012 11:38 AM, Richard Purdie wrote:
> > The fetch/unpack/patch/headerfix tasks are shared and hence their sstate hashes
> > should also match. Sadly this is not the case since:
> >
> > a) gcc-runtime applies an additional patch
> > b) The do_headerfix task was missing from libgcc
> > c) The do_headerfix task is a shell task and hence depends
> >     on all exported variables which can vary between cross and target
> >     recipes.
> >
> > To fix this, the patch moves the patch to the common code, adds
> > the headerfix task to a common include file and disabled shell
> > dependencies on the do_headerfix task since its clear in this case
> > we don't need thsoe dependencies since we just call sed.
> >
> > With this patch applied, all these recipes now share common sstate checksums.
> >
> Richard,
> 
> I tried both a sstate build with and existing tmp and a clean tmp, the
> existing tmp seemed to work ok, but with a clean tmp (and sstate), I got
> the following patch issue still.
> 
> This was with BB_SIGNATURE_HANDLER ?= 'basichash' set.
> 
> ERROR: Command Error: exit status: 1  Output:
> Could not link file
> `.pc/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch/configure' to `configure': No
> such file or directory
> Applying patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> patching file configure.ac
> Hunk #1 FAILED at 3073.
> 1 out of 1 hunk FAILED -- rejects in file configure.ac
> patching file configure
> Hunk #1 FAILED at 7594.
> 1 out of 1 hunk FAILED -- rejects in file configure
> Patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch does not apply (enforce with -f)
> ERROR: Function failed: patch_do_patch
> ERROR: Logfile of failure stored in:
> /intel/poky2/builds/binutils/tmp/work-shared/gcc-4.6.2+svnr181430-r20/temp/log.do_patch.15457
> NOTE: package libgcc-4.6.2+svnr181430-r20: task do_patch: Failed
> ERROR: Task 882
> (/intel/poky2/distro/meta/recipes-devtools/gcc/libgcc_4.6.bb, do_patch)
> failed with exit code '1'
> 
> I have not tried a clean sstate / clean tmp.
> 
Well, using the poky-conrib/rpurdie/t1 branch, it seems that the libgcc still has different signature with 
gcc-cross-initial for task patch. But bitbake-diffsigs reports nothing. gcc-runtime seems to be ok now.

> 
> > Signed-off-by: Richard Purdie<richard.purdie@linuxfoundation.org>
> > ---
> > diff --git a/meta/recipes-devtools/gcc/gcc-4.6.inc b/meta/recipes-devtools/gcc/gcc-4.6.inc
> > index 4bbb2d2..a76fa0b 100644
> > --- a/meta/recipes-devtools/gcc/gcc-4.6.inc
> > +++ b/meta/recipes-devtools/gcc/gcc-4.6.inc
> > @@ -73,6 +73,7 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH};proto=http \
> >   	   file://pr47551.patch \
> >   	   file://gcc-arm-set-cost.patch \
> >   	   file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
> > +	   file://fortran-cross-compile-hack.patch \
> >   	  "
> >
> >   SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
> > diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
> > index fe112d9..ed41b0f 100644
> > --- a/meta/recipes-devtools/gcc/gcc-common.inc
> > +++ b/meta/recipes-devtools/gcc/gcc-common.inc
> > @@ -88,3 +88,20 @@ python workshared_clean () {
> >   	bb.note("Removing " + dir)
> >   	oe.path.remove(dir)
> >   }
> > +
> > +do_headerfix () {
> > +	# Change the default dynamic linker path, in case $base_liddir is non-standard
> > +	# (e.g. in multilib or sdk cases)
> > +	#
> > +	# We want something like the following:
> > +	# 	#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
> > +	# becomes
> > +	#	#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
> > +	#
> > +	sed -i ${S}/gcc/config/*/linux*.h -e \
> > +		's#\(GLIBC_DYNAMIC_LINKER[^ ]*\) \( *"/lib.*\)/\(.*\)#\1 SYSTEMLIBS_DIR "\3#'
> > +}
> > +
> > +addtask headerfix after do_unpack before do_patch
> > +
> > +do_headerfix[vardepvalue] = "PATH"
> > diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc
> > index d014980..c4b6ac1 100644
> > --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
> > +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
> > @@ -62,21 +62,6 @@ SYSTEMHEADERS = "${target_includedir}"
> >   SYSTEMLIBS = "${target_base_libdir}/"
> >   SYSTEMLIBS1 = "${target_libdir}/"
> >
> > -do_headerfix () {
> > -	# Change the default dynamic linker path, in case $base_liddir is non-standard
> > -	# (e.g. in multilib or sdk cases)
> > -	#
> > -	# We want something like the following:
> > -	# 	#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
> > -	# becomes
> > -	#	#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
> > -	#
> > -	sed -i ${S}/gcc/config/*/linux*.h -e \
> > -		's#\(GLIBC_DYNAMIC_LINKER[^ ]*\) \( *"/lib.*\)/\(.*\)#\1 SYSTEMLIBS_DIR "\3#'
> > -}
> > -
> > -addtask headerfix after do_unpack before do_patch
> > -
> >   do_configure_prepend () {
> >   	# teach gcc to find correct target includedir when checking libc ssp support
> >   	mkdir -p ${B}/gcc
> > diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
> > index 568b5af..97468db 100644
> > --- a/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
> > +++ b/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
> > @@ -2,8 +2,6 @@ require gcc-${PV}.inc
> >   require gcc-configure-runtime.inc
> >   require gcc-package-runtime.inc
> >
> > -SRC_URI_append = "file://fortran-cross-compile-hack.patch"
> > -
> >   ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
> >
> >   EXTRA_OECONF += "--disable-libunwind-exceptions"
> >
> >
> >
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
> >
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Richard Purdie - Jan. 20, 2012, 1:38 p.m.
On Fri, 2012-01-20 at 08:49 +0000, Lu, Lianhao wrote:
> > -----Original Message-----
> > From: openembedded-core-bounces@lists.openembedded.org [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf
> > Of Saul Wold
> > Sent: Friday, January 20, 2012 4:19 PM
> > To: Patches and discussions about the oe-core layer
> > Subject: Re: [OE-core] [PATCH] gcc: Ensure that the shared source directory shared the same sstate hashes
> > 
> > On 01/19/2012 11:38 AM, Richard Purdie wrote:
> > > The fetch/unpack/patch/headerfix tasks are shared and hence their sstate hashes
> > > should also match. Sadly this is not the case since:
> > >
> > > a) gcc-runtime applies an additional patch
> > > b) The do_headerfix task was missing from libgcc
> > > c) The do_headerfix task is a shell task and hence depends
> > >     on all exported variables which can vary between cross and target
> > >     recipes.
> > >
> > > To fix this, the patch moves the patch to the common code, adds
> > > the headerfix task to a common include file and disabled shell
> > > dependencies on the do_headerfix task since its clear in this case
> > > we don't need thsoe dependencies since we just call sed.
> > >
> > > With this patch applied, all these recipes now share common sstate checksums.
> > >
> > Richard,
> > 
> > I tried both a sstate build with and existing tmp and a clean tmp, the
> > existing tmp seemed to work ok, but with a clean tmp (and sstate), I got
> > the following patch issue still.
> > 
> > This was with BB_SIGNATURE_HANDLER ?= 'basichash' set.
> > 
> > ERROR: Command Error: exit status: 1  Output:
> > Could not link file
> > `.pc/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch/configure' to `configure': No
> > such file or directory
> > Applying patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> > patching file configure.ac
> > Hunk #1 FAILED at 3073.
> > 1 out of 1 hunk FAILED -- rejects in file configure.ac
> > patching file configure
> > Hunk #1 FAILED at 7594.
> > 1 out of 1 hunk FAILED -- rejects in file configure
> > Patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch does not apply (enforce with -f)
> > ERROR: Function failed: patch_do_patch
> > ERROR: Logfile of failure stored in:
> > /intel/poky2/builds/binutils/tmp/work-shared/gcc-4.6.2+svnr181430-r20/temp/log.do_patch.15457
> > NOTE: package libgcc-4.6.2+svnr181430-r20: task do_patch: Failed
> > ERROR: Task 882
> > (/intel/poky2/distro/meta/recipes-devtools/gcc/libgcc_4.6.bb, do_patch)
> > failed with exit code '1'
> > 
> > I have not tried a clean sstate / clean tmp.
> > 
> Well, using the poky-conrib/rpurdie/t1 branch, it seems that the libgcc still has different signature with 
> gcc-cross-initial for task patch. But bitbake-diffsigs reports nothing. gcc-runtime seems to be ok now.

I looked into this and the problem is that the quilt-native dependency
is removed in the target cases (libgcc/gcc-runtime) but not in the cross
cases thanks to BB_HASHTASK_WHITELIST. I'm trying to figure out how to
solve that.

Cheers,

Richard
Richard Purdie - Jan. 20, 2012, 5:04 p.m.
On Fri, 2012-01-20 at 00:19 -0800, Saul Wold wrote:
> I tried both a sstate build with and existing tmp and a clean tmp, the 
> existing tmp seemed to work ok, but with a clean tmp (and sstate), I got 
> the following patch issue still.
> 
> This was with BB_SIGNATURE_HANDLER ?= 'basichash' set.
> 
> ERROR: Command Error: exit status: 1  Output:
> Could not link file 
> `.pc/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch/configure' to `configure': No 
> such file or directory
> Applying patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> patching file configure.ac
> Hunk #1 FAILED at 3073.
> 1 out of 1 hunk FAILED -- rejects in file configure.ac
> patching file configure
> Hunk #1 FAILED at 7594.
> 1 out of 1 hunk FAILED -- rejects in file configure
> Patch gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch does not apply (enforce with -f)
> ERROR: Function failed: patch_do_patch
> ERROR: Logfile of failure stored in: 
> /intel/poky2/builds/binutils/tmp/work-shared/gcc-4.6.2+svnr181430-r20/temp/log.do_patch.15457
> NOTE: package libgcc-4.6.2+svnr181430-r20: task do_patch: Failed
> ERROR: Task 882 
> (/intel/poky2/distro/meta/recipes-devtools/gcc/libgcc_4.6.bb, do_patch) 
> failed with exit code '1'
> 
> I have not tried a clean sstate / clean tmp.

This only happens with basichash and is due to the stamp mismatch
Lianhao mentions. I happens if the stamps are inconsistent and race
against each other with the same WORKDIR. My patches should address this
problem (although the posted patch has a small bug).

Cheers,

Richard

Patch

diff --git a/meta/recipes-devtools/gcc/gcc-4.6.inc b/meta/recipes-devtools/gcc/gcc-4.6.inc
index 4bbb2d2..a76fa0b 100644
--- a/meta/recipes-devtools/gcc/gcc-4.6.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.6.inc
@@ -73,6 +73,7 @@  SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH};proto=http \
 	   file://pr47551.patch \
 	   file://gcc-arm-set-cost.patch \
 	   file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
+	   file://fortran-cross-compile-hack.patch \
 	  "
 
 SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
index fe112d9..ed41b0f 100644
--- a/meta/recipes-devtools/gcc/gcc-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-common.inc
@@ -88,3 +88,20 @@  python workshared_clean () {
 	bb.note("Removing " + dir)
 	oe.path.remove(dir)
 }
+
+do_headerfix () {
+	# Change the default dynamic linker path, in case $base_liddir is non-standard
+	# (e.g. in multilib or sdk cases)
+	#
+	# We want something like the following:
+	# 	#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+	# becomes
+	#	#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
+	#
+	sed -i ${S}/gcc/config/*/linux*.h -e \
+		's#\(GLIBC_DYNAMIC_LINKER[^ ]*\) \( *"/lib.*\)/\(.*\)#\1 SYSTEMLIBS_DIR "\3#'
+}
+
+addtask headerfix after do_unpack before do_patch
+
+do_headerfix[vardepvalue] = "PATH"
diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc
index d014980..c4b6ac1 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
@@ -62,21 +62,6 @@  SYSTEMHEADERS = "${target_includedir}"
 SYSTEMLIBS = "${target_base_libdir}/"
 SYSTEMLIBS1 = "${target_libdir}/"
 
-do_headerfix () {
-	# Change the default dynamic linker path, in case $base_liddir is non-standard
-	# (e.g. in multilib or sdk cases)
-	#
-	# We want something like the following:
-	# 	#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
-	# becomes
-	#	#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-64.so.2"
-	#
-	sed -i ${S}/gcc/config/*/linux*.h -e \
-		's#\(GLIBC_DYNAMIC_LINKER[^ ]*\) \( *"/lib.*\)/\(.*\)#\1 SYSTEMLIBS_DIR "\3#'
-}
-
-addtask headerfix after do_unpack before do_patch
-
 do_configure_prepend () {
 	# teach gcc to find correct target includedir when checking libc ssp support
 	mkdir -p ${B}/gcc
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb b/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
index 568b5af..97468db 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_4.6.bb
@@ -2,8 +2,6 @@  require gcc-${PV}.inc
 require gcc-configure-runtime.inc
 require gcc-package-runtime.inc
 
-SRC_URI_append = "file://fortran-cross-compile-hack.patch"
-
 ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
 
 EXTRA_OECONF += "--disable-libunwind-exceptions"