summaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/siteconfig.bbclass31
-rw-r--r--meta/classes/siteinfo.bbclass7
2 files changed, 38 insertions, 0 deletions
diff --git a/meta/classes/siteconfig.bbclass b/meta/classes/siteconfig.bbclass
new file mode 100644
index 000000000..5311653bb
--- /dev/null
+++ b/meta/classes/siteconfig.bbclass
@@ -0,0 +1,31 @@
+siteconfig_do_siteconfig() {
+ if [ ! -d ${FILE_DIRNAME}/site_config ]; then
+ exit 0
+ fi
+ mkdir ${WORKDIR}/site_config
+ gen-site-config ${FILE_DIRNAME}/site_config \
+ >${WORKDIR}/site_config/configure.ac
+ cd ${WORKDIR}/site_config
+ autoconf
+ CONFIG_SITE="" ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache
+ sed -n -e "/ac_cv_c_bigendian/p" -e "/ac_cv_sizeof_/p" \
+ -e "/ac_cv_type_/p" -e "/ac_cv_header_/p" -e "/ac_cv_func_/p" \
+ < ${PN}_cache > ${PN}_config
+ mkdir -p ${SYSROOT_DESTDIR}${STAGING_DATADIR}/${TARGET_SYS}_config_site.d
+ cp ${PN}_config ${SYSROOT_DESTDIR}${STAGING_DATADIR}/${TARGET_SYS}_config_site.d
+}
+
+# Ugly integration with sstate_task_postfunc for now. The normal package
+# sysroot components must be installed in order to generate the cache, but
+# the site cache must be generated before the staging archive is generated.
+python sstate_task_postfunc () {
+ shared_state = sstate_state_fromvars(d)
+ sstate_install(shared_state, d)
+ if shared_state['name'] == 'populate-sysroot':
+ bb.build.exec_func('do_siteconfig', d)
+ sstate_clean(shared_state, d)
+ sstate_install(shared_state, d)
+ sstate_package(shared_state, d)
+}
+
+EXPORT_FUNCTIONS do_siteconfig
diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass
index c4206c2d8..130fdc4cf 100644
--- a/meta/classes/siteinfo.bbclass
+++ b/meta/classes/siteinfo.bbclass
@@ -96,6 +96,13 @@ def siteinfo_get_files(d):
if os.path.exists(fname):
sitefiles += fname + " "
+ # Now check for siteconfig cache files
+ path_siteconfig = os.path.join(bb.data.getVar('STAGING_DATADIR', d, 1), bb.data.getVar('TARGET_SYS', d, 1) + "_config_site.d")
+ if os.path.isdir(path_siteconfig):
+ for i in os.listdir(path_siteconfig):
+ fname = os.path.join(path_siteconfig, i)
+ sitefiles += fname + " "
+
bb.debug(1, "SITE files " + sitefiles);
return sitefiles