diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-04-27 01:24:31 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-04-30 16:39:06 +0100 |
| commit | f07b7c0da1748afc35fbb2ead7ae10ec66c7c428 (patch) | |
| tree | d549b8e2ec6069a20d4f692c307fbcca2fcd7651 /meta/recipes-devtools | |
| parent | 2b851b99f5f2092b3db0f0743e44733b356514d0 (diff) | |
| download | poky-f07b7c0da1748afc35fbb2ead7ae10ec66c7c428.tar.gz | |
gcc-common/gcc-configure-common: Move gnu-configize to its own shared task
This command modifies ${S} and can race against other tasks running do_configure and
having the scripts disappear from under them. To avoid this move to its own
task and work on the shared work directory as a common task.
It needs to be a python task to avoid lots of shell exported variables as
dependencies.
(From OE-Core rev: 55ed9ffbab5118140baac5d0d29dcc919e1f1668)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
| -rw-r--r-- | meta/recipes-devtools/gcc/gcc-common.inc | 3 | ||||
| -rw-r--r-- | meta/recipes-devtools/gcc/gcc-configure-common.inc | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc index a96bcaa92c..0408e65d5f 100644 --- a/meta/recipes-devtools/gcc/gcc-common.inc +++ b/meta/recipes-devtools/gcc/gcc-common.inc | |||
| @@ -89,17 +89,20 @@ SS = "${TMPDIR}/stamps/work-shared/gcc-${PV}-${PR}" | |||
| 89 | do_fetch[stamp-base] = "${SS}" | 89 | do_fetch[stamp-base] = "${SS}" |
| 90 | do_unpack[stamp-base] = "${SS}" | 90 | do_unpack[stamp-base] = "${SS}" |
| 91 | do_patch[stamp-base] = "${SS}" | 91 | do_patch[stamp-base] = "${SS}" |
| 92 | do_preconfigure[stamp-base] = "${SS}" | ||
| 92 | SSCLEAN = "${TMPDIR}/stamps/work-shared/gcc-[0-9]*-*" | 93 | SSCLEAN = "${TMPDIR}/stamps/work-shared/gcc-[0-9]*-*" |
| 93 | do_fetch[stamp-base-clean] = "${SSCLEAN}" | 94 | do_fetch[stamp-base-clean] = "${SSCLEAN}" |
| 94 | do_unpack[stamp-base-clean] = "${SSCLEAN}" | 95 | do_unpack[stamp-base-clean] = "${SSCLEAN}" |
| 95 | do_unpack[umask] = "022" | 96 | do_unpack[umask] = "022" |
| 96 | do_patch[stamp-base-clean] = "${SSCLEAN}" | 97 | do_patch[stamp-base-clean] = "${SSCLEAN}" |
| 98 | do_preconfigure[stamp-base-clean] = "${SSCLEAN}" | ||
| 97 | 99 | ||
| 98 | # SW means Shared Work directory | 100 | # SW means Shared Work directory |
| 99 | SW = "${TMPDIR}/work-shared/gcc-${PV}-${PR}" | 101 | SW = "${TMPDIR}/work-shared/gcc-${PV}-${PR}" |
| 100 | SSTATE_SWSPEC = "sstate:gcc::${PV}:${PR}::${SSTATE_VERSION}:" | 102 | SSTATE_SWSPEC = "sstate:gcc::${PV}:${PR}::${SSTATE_VERSION}:" |
| 101 | WORKDIR_task-unpack = "${SW}" | 103 | WORKDIR_task-unpack = "${SW}" |
| 102 | WORKDIR_task-patch = "${SW}" | 104 | WORKDIR_task-patch = "${SW}" |
| 105 | WORKDIR_task-preconfigure = "${SW}" | ||
| 103 | 106 | ||
| 104 | target_includedir ?= "${includedir}" | 107 | target_includedir ?= "${includedir}" |
| 105 | target_libdir ?= "${libdir}" | 108 | target_libdir ?= "${libdir}" |
diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc index 3cc5efab33..12482f81e3 100644 --- a/meta/recipes-devtools/gcc/gcc-configure-common.inc +++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc | |||
| @@ -98,6 +98,14 @@ _EOF | |||
| 98 | mv ${B}/gcc/defaults.h.new ${B}/gcc/defaults.h | 98 | mv ${B}/gcc/defaults.h.new ${B}/gcc/defaults.h |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | python do_preconfigure () { | ||
| 102 | import subprocess | ||
| 103 | cmd = d.expand('PATH=${PATH} cd ${S} && gnu-configize') | ||
| 104 | subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) | ||
| 105 | } | ||
| 106 | addtask do_preconfigure after do_patch before do_configure | ||
| 107 | do_preconfigure[depends] += "gnu-config-native:do_populate_sysroot autoconf-native:do_populate_sysroot" | ||
| 108 | |||
| 101 | do_configure () { | 109 | do_configure () { |
| 102 | # Setup these vars for cross building only | 110 | # Setup these vars for cross building only |
| 103 | # ... because foo_FOR_TARGET apparently gets misinterpreted inside the | 111 | # ... because foo_FOR_TARGET apparently gets misinterpreted inside the |
| @@ -126,7 +134,7 @@ do_configure () { | |||
| 126 | export CPPFLAGS_FOR_TARGET="${TARGET_CPPFLAGS}" | 134 | export CPPFLAGS_FOR_TARGET="${TARGET_CPPFLAGS}" |
| 127 | export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}" | 135 | export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}" |
| 128 | export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}" | 136 | export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}" |
| 129 | (cd ${S} && gnu-configize) || die "failure running gnu-configize" | 137 | |
| 130 | 138 | ||
| 131 | oe_runconf | 139 | oe_runconf |
| 132 | } | 140 | } |
