diff options
-rw-r--r-- | meta/classes/autotools.bbclass | 7 | ||||
-rw-r--r-- | meta/classes/siteinfo.bbclass | 17 | ||||
-rw-r--r-- | meta/classes/toolchain-scripts.bbclass | 2 |
3 files changed, 16 insertions, 10 deletions
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass index 4c32c84fa8..e5f527ec07 100644 --- a/meta/classes/autotools.bbclass +++ b/meta/classes/autotools.bbclass | |||
@@ -25,7 +25,7 @@ inherit siteinfo | |||
25 | 25 | ||
26 | # Space separated list of shell scripts with variables defined to supply test | 26 | # Space separated list of shell scripts with variables defined to supply test |
27 | # results for autoconf tests we cannot run at build time. | 27 | # results for autoconf tests we cannot run at build time. |
28 | export CONFIG_SITE = "${@siteinfo_get_files(d, False)}" | 28 | export CONFIG_SITE = "${@siteinfo_get_files(d)}" |
29 | 29 | ||
30 | acpaths = "default" | 30 | acpaths = "default" |
31 | EXTRA_AUTORECONF = "--exclude=autopoint" | 31 | EXTRA_AUTORECONF = "--exclude=autopoint" |
@@ -253,8 +253,9 @@ python autotools_copy_aclocals () { | |||
253 | t = os.path.join(aclocaldir, os.path.basename(c)) | 253 | t = os.path.join(aclocaldir, os.path.basename(c)) |
254 | if not os.path.exists(t): | 254 | if not os.path.exists(t): |
255 | os.symlink(c, t) | 255 | os.symlink(c, t) |
256 | 256 | ||
257 | d.setVar("CONFIG_SITE", siteinfo_get_files(d, False)) | 257 | # Refresh variable with cache files |
258 | d.setVar("CONFIG_SITE", siteinfo_get_files(d, aclocalcache=True)) | ||
258 | } | 259 | } |
259 | autotools_copy_aclocals[vardepsexclude] += "MACHINE SDK_ARCH BUILD_ARCH SDK_OS BB_TASKDEPDATA" | 260 | autotools_copy_aclocals[vardepsexclude] += "MACHINE SDK_ARCH BUILD_ARCH SDK_OS BB_TASKDEPDATA" |
260 | 261 | ||
diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass index 03d4c4fd20..6a2e4bf560 100644 --- a/meta/classes/siteinfo.bbclass +++ b/meta/classes/siteinfo.bbclass | |||
@@ -153,7 +153,7 @@ python () { | |||
153 | bb.fatal("Please add your architecture to siteinfo.bbclass") | 153 | bb.fatal("Please add your architecture to siteinfo.bbclass") |
154 | } | 154 | } |
155 | 155 | ||
156 | def siteinfo_get_files(d, no_cache = False): | 156 | def siteinfo_get_files(d, aclocalcache = False): |
157 | sitedata = siteinfo_data(d) | 157 | sitedata = siteinfo_data(d) |
158 | sitefiles = "" | 158 | sitefiles = "" |
159 | for path in d.getVar("BBPATH", True).split(":"): | 159 | for path in d.getVar("BBPATH", True).split(":"): |
@@ -162,11 +162,17 @@ def siteinfo_get_files(d, no_cache = False): | |||
162 | if os.path.exists(filename): | 162 | if os.path.exists(filename): |
163 | sitefiles += filename + " " | 163 | sitefiles += filename + " " |
164 | 164 | ||
165 | if no_cache: return sitefiles | 165 | if not aclocalcache: |
166 | return sitefiles | ||
166 | 167 | ||
167 | # Now check for siteconfig cache files | 168 | # Now check for siteconfig cache files in the directory setup by autotools.bbclass to |
168 | # Use the files copied to the aclocal cache generated by autotools.bbclass | 169 | # avoid races. |
169 | # to avoid races | 170 | # |
171 | # ACLOCALDIR may or may not exist so cache should only be set to True from autotools.bbclass | ||
172 | # after files have been copied into this location. To do otherwise risks parsing/signature | ||
173 | # issues and the directory being created/removed whilst this code executes. This can happen | ||
174 | # when a multilib recipe is parsed along with its base variant which may be running at the time | ||
175 | # causing rare but nasty failures | ||
170 | path_siteconfig = d.getVar('ACLOCALDIR', True) | 176 | path_siteconfig = d.getVar('ACLOCALDIR', True) |
171 | if path_siteconfig and os.path.isdir(path_siteconfig): | 177 | if path_siteconfig and os.path.isdir(path_siteconfig): |
172 | for i in os.listdir(path_siteconfig): | 178 | for i in os.listdir(path_siteconfig): |
@@ -174,7 +180,6 @@ def siteinfo_get_files(d, no_cache = False): | |||
174 | continue | 180 | continue |
175 | filename = os.path.join(path_siteconfig, i) | 181 | filename = os.path.join(path_siteconfig, i) |
176 | sitefiles += filename + " " | 182 | sitefiles += filename + " " |
177 | |||
178 | return sitefiles | 183 | return sitefiles |
179 | 184 | ||
180 | # | 185 | # |
diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass index 57874f38dc..997ff8865f 100644 --- a/meta/classes/toolchain-scripts.bbclass +++ b/meta/classes/toolchain-scripts.bbclass | |||
@@ -105,7 +105,7 @@ EOF | |||
105 | } | 105 | } |
106 | 106 | ||
107 | #we get the cached site config in the runtime | 107 | #we get the cached site config in the runtime |
108 | TOOLCHAIN_CONFIGSITE_NOCACHE = "${@siteinfo_get_files(d, True)}" | 108 | TOOLCHAIN_CONFIGSITE_NOCACHE = "${@siteinfo_get_files(d)}" |
109 | TOOLCHAIN_CONFIGSITE_SYSROOTCACHE = "${STAGING_DIR}/${MLPREFIX}${MACHINE}/${target_datadir}/${TARGET_SYS}_config_site.d" | 109 | TOOLCHAIN_CONFIGSITE_SYSROOTCACHE = "${STAGING_DIR}/${MLPREFIX}${MACHINE}/${target_datadir}/${TARGET_SYS}_config_site.d" |
110 | TOOLCHAIN_NEED_CONFIGSITE_CACHE ??= "virtual/${MLPREFIX}libc ncurses" | 110 | TOOLCHAIN_NEED_CONFIGSITE_CACHE ??= "virtual/${MLPREFIX}libc ncurses" |
111 | 111 | ||