diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass index f4949f55bd..49ee85ea72 100644 --- a/meta/classes/bootimg.bbclass +++ b/meta/classes/bootimg.bbclass @@ -49,7 +49,7 @@ inherit syslinux build_boot_bin() { install -d ${HDDDIR} - install -m 0644 ${STAGING_DIR}/${MACHINE}${HOST_VENDOR}-${HOST_OS}/kernel/bzImage \ + install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \ ${HDDDIR}/vmlinuz if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then @@ -83,7 +83,7 @@ build_boot_bin() { # Install the kernel - install -m 0644 ${STAGING_DIR}/${MACHINE}${HOST_VENDOR}-${HOST_OS}/kernel/bzImage \ + install -m 0644 ${STAGING_DIR_HOST}/kernel/bzImage \ ${ISODIR}/vmlinuz # Install the configuration files diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass index 3f3a24dd57..993f831a54 100644 --- a/meta/classes/cross-canadian.bbclass +++ b/meta/classes/cross-canadian.bbclass @@ -30,7 +30,6 @@ MULTIMACH_TARGET_SYS = "${MULTIMACH_ARCH}${HOST_VENDOR}-${HOST_OS}" INHIBIT_DEFAULT_DEPS = "1" STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}-nativesdk" -STAGING_DIR_TARGET = "${STAGING_DIR}/${OLD_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}" TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR}/${HOST_ARCH}-nativesdk${HOST_VENDOR}-${HOST_OS}" @@ -82,3 +81,5 @@ export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}" # Cross-canadian packages need to pull in nativesdk dynamic libs SHLIBSDIR = "${STAGING_DIR}/${SDK_ARCH}-nativesdk${SDK_VENDOR}-${BUILD_OS}/shlibs" +do_populate_sysroot[stamp-extra-info] = "" +do_package[stamp-extra-info] = "" diff --git a/meta/classes/cross.bbclass b/meta/classes/cross.bbclass index 6d7c7cd463..2564505d6a 100644 --- a/meta/classes/cross.bbclass +++ b/meta/classes/cross.bbclass @@ -20,6 +20,11 @@ HOST_OS = "${BUILD_OS}" HOST_PREFIX = "${BUILD_PREFIX}" HOST_CC_ARCH = "${BUILD_CC_ARCH}" +STAGING_DIR_HOST = "${STAGING_DIR}/${BASEPKG_HOST_SYS}" + +export PKG_CONFIG_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}${libdir}/pkgconfig" +export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}" + CPPFLAGS = "${BUILD_CPPFLAGS}" CFLAGS = "${BUILD_CFLAGS}" CXXFLAGS = "${BUILD_CFLAGS}" diff --git a/meta/classes/crosssdk.bbclass b/meta/classes/crosssdk.bbclass index 23db163ba6..08ba823767 100644 --- a/meta/classes/crosssdk.bbclass +++ b/meta/classes/crosssdk.bbclass @@ -18,3 +18,5 @@ target_base_libdir = "${SDKPATHNATIVE}${base_libdir_nativesdk}" target_prefix = "${SDKPATHNATIVE}${prefix_nativesdk}" target_exec_prefix = "${SDKPATHNATIVE}${exec_prefix_nativesdk}" +do_populate_sysroot[stamp-extra-info] = "" +do_package[stamp-extra-info] = "" diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass index aec7fe38a9..545a73eb8b 100644 --- a/meta/classes/native.bbclass +++ b/meta/classes/native.bbclass @@ -120,3 +120,5 @@ do_package_write_ipk[noexec] = "1" do_package_write_deb[noexec] = "1" do_package_write_rpm[noexec] = "1" +do_populate_sysroot[stamp-extra-info] = "" +do_package[stamp-extra-info] = "" diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass index 154bd827b6..587a907c44 100644 --- a/meta/classes/nativesdk.bbclass +++ b/meta/classes/nativesdk.bbclass @@ -19,6 +19,8 @@ python () { #STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}-nativesdk" #STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}-nativesdk" +STAGING_DIR_HOST = "${STAGING_DIR}/${BASEPKG_HOST_SYS}" +STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}" HOST_ARCH = "${SDK_ARCH}" HOST_VENDOR = "${SDK_VENDOR}" @@ -79,4 +81,5 @@ python __anonymous () { bb.data.setVar("OVERRIDES", bb.data.getVar("OVERRIDES", d, False) + ":virtclass-nativesdk", d) } - +do_populate_sysroot[stamp-extra-info] = "" +do_package[stamp-extra-info] = "" diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 8e7fa26f72..1b950bb617 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1094,6 +1094,7 @@ do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}" do_package[sstate-inputdirs] = "${PKGDESTWORK} ${SHLIBSWORKDIR}" do_package[sstate-outputdirs] = "${PKGDATA_DIR} ${SHLIBSDIR}" do_package[sstate-lockfile] = "${PACKAGELOCK}" +do_package[stamp-extra-info] = "${MACHINE}" do_package_setscene[dirs] = "${STAGING_DIR}" python do_package_setscene () { diff --git a/meta/classes/siteconfig.bbclass b/meta/classes/siteconfig.bbclass index 5edc0d6a0b..0813c2543e 100644 --- a/meta/classes/siteconfig.bbclass +++ b/meta/classes/siteconfig.bbclass @@ -13,10 +13,10 @@ python siteconfig_do_siteconfig () { EXTRASITECONFIG ?= "" siteconfig_do_siteconfig_gencache () { - mkdir -p ${WORKDIR}/site_config + mkdir -p ${WORKDIR}/site_config_${MACHINE} gen-site-config ${FILE_DIRNAME}/site_config \ - >${WORKDIR}/site_config/configure.ac - cd ${WORKDIR}/site_config + >${WORKDIR}/site_config_${MACHINE}/configure.ac + cd ${WORKDIR}/site_config_${MACHINE} autoconf CONFIG_SITE="" ${EXTRASITECONFIG} ./configure ${CONFIGUREOPTS} --cache-file ${PN}_cache sed -n -e "/ac_cv_c_bigendian/p" -e "/ac_cv_sizeof_/p" \ diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 38f2bb99e6..807e8e39aa 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass @@ -1,7 +1,7 @@ SSTATE_VERSION = "1" SSTATE_MANIFESTS = "${TMPDIR}/sstate-control" -SSTATE_MANFILEBASE = "${SSTATE_MANIFESTS}/manifest-${SSTATE_PKGARCH}-" +SSTATE_MANFILEBASE = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-" SSTATE_MANFILEPREFIX = "${SSTATE_MANFILEBASE}${PN}" @@ -14,15 +14,22 @@ SSTATE_SCAN_CMD ?= "find ${SSTATE_BUILDDIR} \( -name "*.la" -o -name "*-config" BB_HASHFILENAME = "${SSTATE_PKGNAME}" +SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" + python () { if bb.data.inherits_class('native', d): bb.data.setVar('SSTATE_PKGARCH', bb.data.getVar('BUILD_ARCH', d), d) - elif bb.data.inherits_class('cross', d) or bb.data.inherits_class('crosssdk', d): + elif bb.data.inherits_class('cross', d): + bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${BUILD_ARCH}_${BASE_PACKAGE_ARCH}", d), d) + bb.data.setVar('SSTATE_MANMACH', bb.data.expand("${BUILD_ARCH}_${MACHINE}", d), d) + elif bb.data.inherits_class('crosssdk', d): bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${BUILD_ARCH}_${BASE_PACKAGE_ARCH}", d), d) elif bb.data.inherits_class('nativesdk', d): bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${SDK_ARCH}", d), d) elif bb.data.inherits_class('cross-canadian', d): bb.data.setVar('SSTATE_PKGARCH', bb.data.expand("${SDK_ARCH}_${BASE_PACKAGE_ARCH}", d), d) + else: + bb.data.setVar('SSTATE_MANMACH', bb.data.expand("${MACHINE}", d), d) # These classes encode staging paths into their scripts data so can only be # reused if we manipulate the paths @@ -147,10 +154,14 @@ def sstate_installpkg(ss, d): fixmefn = sstateinst + "fixmepath" if os.path.isfile(fixmefn): staging = bb.data.getVar('STAGING_DIR', d, True) + staging_target = bb.data.getVar('STAGING_DIR_TARGET', d, True) + staging_host = bb.data.getVar('STAGING_DIR_HOST', d, True) fixmefd = open(fixmefn, "r") fixmefiles = fixmefd.readlines() fixmefd.close() for file in fixmefiles: + os.system("sed -i -e s:FIXMESTAGINGDIRTARGET:%s:g %s" % (staging_target, sstateinst + file)) + os.system("sed -i -e s:FIXMESTAGINGDIRHOST:%s:g %s" % (staging_host, sstateinst + file)) os.system("sed -i -e s:FIXMESTAGINGDIR:%s:g %s" % (staging, sstateinst + file)) for state in ss['dirs']: @@ -248,6 +259,35 @@ python sstate_cleanall() { sstate_clean(shared_state, d) } +def sstate_hardcode_path(d): + # Need to remove hardcoded paths and fix these when we install the + # staging packages. + sstate_scan_cmd = bb.data.getVar('SSTATE_SCAN_CMD', d, True) + p = os.popen("%s" % sstate_scan_cmd) + file_list = p.read() + + if file_list == "": + p.close() + return + + staging = bb.data.getVar('STAGING_DIR', d, True) + staging_target = bb.data.getVar('STAGING_DIR_TARGET', d, True) + staging_host = bb.data.getVar('STAGING_DIR_HOST', d, True) + sstate_builddir = bb.data.getVar('SSTATE_BUILDDIR', d, True) + + for i in file_list.split('\n'): + if bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('cross-canadian', d): + cmd = "sed -i -e s:%s:FIXMESTAGINGDIR:g %s" % (staging, i) + elif bb.data.inherits_class('cross', d): + cmd = "sed -i -e s:%s:FIXMESTAGINGDIRTARGET:g %s \ + sed -i -e s:%s:FIXMESTAGINGDIR:g %s" % (staging_target, i, staging, i) + else: + cmd = "sed -i -e s:%s:FIXMESTAGINGDIRHOST:g %s" % (staging_host, i) + + os.system(cmd) + os.system("echo %s | sed -e 's:%s::' >> %sfixmepath" % (i, sstate_builddir, sstate_builddir)) + p.close() + def sstate_package(ss, d): import oe.path @@ -273,6 +313,7 @@ def sstate_package(ss, d): bb.data.setVar('SSTATE_BUILDDIR', sstatebuild, d) bb.data.setVar('SSTATE_PKG', sstatepkg, d) + sstate_hardcode_path(d) bb.build.exec_func('sstate_create_package', d) bb.siggen.dump_this_task(sstatepkg + ".siginfo", d) @@ -337,13 +378,6 @@ python sstate_task_postfunc () { # set as SSTATE_BUILDDIR # sstate_create_package () { - # Need to remove hardcoded paths and fix these when we install the - # staging packages. - for i in `${SSTATE_SCAN_CMD}` ; do \ - sed -i -e s:${STAGING_DIR}:FIXMESTAGINGDIR:g $i - echo $i | sed -e 's:${SSTATE_BUILDDIR}::' >> ${SSTATE_BUILDDIR}fixmepath - done - cd ${SSTATE_BUILDDIR} tar -cvzf ${SSTATE_PKG} * diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass index 72d77e2b54..2ef8f29b75 100644 --- a/meta/classes/staging.bbclass +++ b/meta/classes/staging.bbclass @@ -92,6 +92,7 @@ SSTATETASKS += "do_populate_sysroot" do_populate_sysroot[sstate-name] = "populate-sysroot" do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}" do_populate_sysroot[sstate-outputdirs] = "${STAGING_DIR_HOST}/" +do_populate_sysroot[stamp-extra-info] = "${MACHINE}" python do_populate_sysroot_setscene () { sstate_setscene(d) diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass index 5ec0e8a4a9..b2165bc275 100644 --- a/meta/classes/toolchain-scripts.bbclass +++ b/meta/classes/toolchain-scripts.bbclass @@ -49,8 +49,8 @@ toolchain_create_tree_env_script () { echo 'export TARGET_PREFIX=${TARGET_PREFIX}' >> $script echo 'export CONFIGURE_FLAGS="--target=${TARGET_SYS} --host=${TARGET_SYS} --build=${BUILD_SYS}"' >> $script if [ "${TARGET_OS}" = "darwin8" ]; then - echo 'export TARGET_CFLAGS="-I${STAGING_DIR}${TARGET_SYS}${includedir}"' >> $script - echo 'export TARGET_LDFLAGS="-L${STAGING_DIR}${TARGET_SYS}${libdir}"' >> $script + echo 'export TARGET_CFLAGS="-I${STAGING_DIR}${MACHINE}${includedir}"' >> $script + echo 'export TARGET_LDFLAGS="-L${STAGING_DIR}${MACHINE}${libdir}"' >> $script # Workaround darwin toolchain sysroot path problems cd ${SDK_OUTPUT}${SDKTARGETSYSROOT}/usr ln -s /usr/local local diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 1c6c7e5f12..db09c75191 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -280,7 +280,7 @@ STAGING_DATADIR_NATIVE = "${STAGING_DIR_NATIVE}${datadir_native}" # This should really be MULTIMACH_HOST_SYS but that breaks "all" and machine # specific packages - hack around it for now. -STAGING_DIR_HOST = "${STAGING_DIR}/${BASEPKG_HOST_SYS}" +STAGING_DIR_HOST = "${STAGING_DIR}/${MACHINE}" STAGING_BINDIR = "${STAGING_DIR_HOST}${bindir}" STAGING_LIBDIR = "${STAGING_DIR_HOST}${libdir}" STAGING_INCDIR = "${STAGING_DIR_HOST}${includedir}" @@ -292,7 +292,7 @@ STAGING_PYDIR = "${STAGING_DIR}/lib/python2.4" # This should really be MULTIMACH_TARGET_SYS but that breaks "all" and machine # specific packages - hack around it for now. -STAGING_DIR_TARGET = "${STAGING_DIR}/${BASEPKG_TARGET_SYS}" +STAGING_DIR_TARGET = "${STAGING_DIR}/${MACHINE}" STAGING_DIR_TCBOOTSTRAP = "${STAGING_DIR_TARGET}-tcbootstrap" # Setting DEPLOY_DIR outside of TMPDIR is helpful, when you are using @@ -316,7 +316,7 @@ SDKPATHNATIVE = "${SDKPATH}/sysroots/${SDK_SYS}" ################################################################## OLDEST_KERNEL = "2.4.0" -STAGING_KERNEL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/kernel" +STAGING_KERNEL_DIR = "${STAGING_DIR_HOST}/kernel" ################################################################## # Specific image creation and rootfs population info. @@ -601,10 +601,10 @@ SLOT = "0" # Other -export PKG_CONFIG_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}${libdir}/pkgconfig" +export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}/${libdir}/pkgconfig" export PKG_CONFIG_PATH = "${PKG_CONFIG_DIR}:${STAGING_DATADIR}/pkgconfig" export PKG_CONFIG_LIBDIR = "${PKG_CONFIG_DIR}" -export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}" +export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}" export PKG_CONFIG_DISABLE_UNINSTALLED = "yes" export QMAKE_MKSPEC_PATH = "${STAGING_DATADIR_NATIVE}/qmake" @@ -735,5 +735,5 @@ TRANSLATED_TARGET_ARCH ??= ${TARGET_ARCH} # Setup our default hash policy BB_SIGNATURE_HANDLER ?= "basic" BB_HASHTASK_WHITELIST ?= "(.*-cross$|.*-native$|.*-cross-initial$|.*-cross-intermediate$|^virtual:native:.*|^virtual:nativesdk:.*)" -BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER FILESPATH USERNAME" +BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER FILESPATH USERNAME STAGING_DIR_HOST STAGING_DIR_TARGET"