summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-01-19 19:22:44 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-01-23 08:58:21 +0000
commit2c4569801a710f34a695b8d2a0ee7fc127fb34e4 (patch)
tree56589377837032065da274ed0bf00fbd0119e60b
parentac162df288f6d8f68c1764fad0ab2d33b9cee281 (diff)
downloadopenembedded-core-2c4569801a710f34a695b8d2a0ee7fc127fb34e4.tar.gz
openembedded-core-2c4569801a710f34a695b8d2a0ee7fc127fb34e4.tar.bz2
openembedded-core-2c4569801a710f34a695b8d2a0ee7fc127fb34e4.tar.xz
openembedded-core-2c4569801a710f34a695b8d2a0ee7fc127fb34e4.zip
gcc: Ensure that the shared source directory shared the same sstate hashes
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>
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-common.inc17
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-common.inc15
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_4.6.bb2
4 files changed, 18 insertions, 17 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.inc b/meta/recipes-devtools/gcc/gcc-4.6.inc
index 4bbb2d22d..a76fa0b4c 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 fe112d9d0..ed41b0ff8 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 d0149801d..c4b6ac111 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 568b5afaa..97468db29 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"