summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/autotools.bbclass58
1 files changed, 40 insertions, 18 deletions
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
index 883eb06e26..01e49c98bf 100644
--- a/meta/classes/autotools.bbclass
+++ b/meta/classes/autotools.bbclass
@@ -130,28 +130,51 @@ autotools_postconfigure(){
130 130
131EXTRACONFFUNCS ??= "" 131EXTRACONFFUNCS ??= ""
132 132
133do_configure[prefuncs] += "autotools_preconfigure ${EXTRACONFFUNCS}" 133do_configure[prefuncs] += "autotools_preconfigure autotools_copy_aclocals ${EXTRACONFFUNCS}"
134do_configure[postfuncs] += "autotools_postconfigure" 134do_configure[postfuncs] += "autotools_postconfigure"
135 135
136ACLOCALDIR = "${B}/aclocal-copy" 136ACLOCALDIR = "${B}/aclocal-copy"
137 137
138autotools_copy_aclocal () { 138python autotools_copy_aclocals () {
139 # Remove any previous copy of the m4 macros 139 s = d.getVar("S", True)
140 rm -rf ${ACLOCALDIR}/ 140 if not os.path.exists(s + "/configure.in") and not os.path.exists(s + "/configure.ac"):
141 141 return
142 # The aclocal directory could get modified by other processes 142
143 # uninstalling data from the sysroot. See Yocto #861 for details. 143 taskdepdata = d.getVar("BB_TASKDEPDATA", False)
144 # We avoid this by taking a copy here and then files cannot disappear. 144 pn = d.getVar("PN", True)
145 # We copy native first, then target. This avoids certain races since cp-noerror 145 aclocaldir = d.getVar("ACLOCALDIR", True)
146 # won't overwrite existing files. 146 oe.path.remove(aclocaldir)
147 mkdir -p ${ACLOCALDIR}/ 147 bb.utils.mkdirhier(aclocaldir)
148 if [ -d ${STAGING_DATADIR_NATIVE}/aclocal ]; then 148 configuredeps = []
149 cp-noerror ${STAGING_DATADIR_NATIVE}/aclocal/ ${ACLOCALDIR}/ 149 for dep in taskdepdata:
150 fi 150 data = taskdepdata[dep]
151 if [ -d ${STAGING_DATADIR}/aclocal -a "${STAGING_DATADIR_NATIVE}/aclocal" != "${STAGING_DATADIR}/aclocal" ]; then 151 if data[1] == "do_configure" and data[0] != pn:
152 cp-noerror ${STAGING_DATADIR}/aclocal/ ${ACLOCALDIR}/ 152 configuredeps.append(data[0])
153 fi 153
154 cp = []
155 for c in configuredeps:
156 if c.endswith("-native"):
157 manifest = d.expand("${SSTATE_MANIFESTS}/manifest-${BUILD_ARCH}-%s.populate_sysroot" % c)
158 elif c.startswith("nativesdk-"):
159 manifest = d.expand("${SSTATE_MANIFESTS}/manifest-${SDK_ARCH}-%s.populate_sysroot" % c)
160 elif c.endswith("-cross") or c.endswith("-cross-initial") or c.endswith("-crosssdk") or c.endswith("-crosssdk-initial"):
161 continue
162 else:
163 manifest = d.expand("${SSTATE_MANIFESTS}/manifest-${MACHINE}-%s.populate_sysroot" % c)
164 try:
165 f = open(manifest, "r")
166 for l in f:
167 if "/aclocal/" in l and l.strip().endswith(".m4"):
168 cp.append(l.strip())
169 except:
170 bb.warn("%s not found" % manifest)
171
172 for c in cp:
173 t = os.path.join(aclocaldir, os.path.basename(c))
174 if not os.path.exists(t):
175 os.symlink(c, t)
154} 176}
177autotools_copy_aclocals[vardepsexclude] += "MACHINE"
155 178
156autotools_do_configure() { 179autotools_do_configure() {
157 # WARNING: gross hack follows: 180 # WARNING: gross hack follows:
@@ -168,7 +191,6 @@ autotools_do_configure() {
168 if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then 191 if [ -e ${S}/configure.in -o -e ${S}/configure.ac ]; then
169 olddir=`pwd` 192 olddir=`pwd`
170 cd ${S} 193 cd ${S}
171 autotools_copy_aclocal
172 ACLOCAL="aclocal --system-acdir=${ACLOCALDIR}/" 194 ACLOCAL="aclocal --system-acdir=${ACLOCALDIR}/"
173 if [ x"${acpaths}" = xdefault ]; then 195 if [ x"${acpaths}" = xdefault ]; then
174 acpaths= 196 acpaths=