[oe] [PATCH] Support building all project in one directory

Guo Hongruan camelguo at gmail.com
Thu Jan 14 07:55:39 UTC 2010


* Append ${LIBC} to CACHE, STAMP, WORKDIR, STAGING_DIR and CROSS_DIR defination, so that package building with different libc will not bother each other.
* Change the '${TMPDIR}/pkgdata/' to '${PKGDATA_DIR}/../', which make PKGDATA_DIR relocationable possible.
* Add mismatch ')' in classes/package_ipk.bbclass
* Override LIBC to null, so that projects with different libc will share the same native tools.
---
 classes/native.bbclass      |    2 ++
 classes/package_ipk.bbclass |    2 +-
 classes/packagedata.bbclass |    2 +-
 conf/bitbake.conf           |   16 ++++++++--------
 4 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/classes/native.bbclass b/classes/native.bbclass
index 6698b61..01ee9b2 100644
--- a/classes/native.bbclass
+++ b/classes/native.bbclass
@@ -27,6 +27,8 @@ HOST_PREFIX = "${BUILD_PREFIX}"
 HOST_CC_ARCH = "${BUILD_CC_ARCH}"
 HOST_EXEEXT = "${BUILD_EXEEXT}"
 
+LIBC = ""
+
 CPPFLAGS = "${BUILD_CPPFLAGS}"
 CFLAGS = "${BUILD_CFLAGS}"
 CXXFLAGS = "${BUILD_CFLAGS}"
diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass
index 420c892..708b539 100644
--- a/classes/package_ipk.bbclass
+++ b/classes/package_ipk.bbclass
@@ -54,7 +54,7 @@ python package_ipk_install () {
 
 
 	if (not os.access(os.path.join(ipkdir,"Packages"), os.R_OK) or
-		not os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"),os.R_OK):
+		not os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"),os.R_OK)):
 		ret = os.system('ipkg-make-index -p %s %s ' % (os.path.join(ipkdir, "Packages"), ipkdir))
 		if (ret != 0 ):
 			raise bb.build.FuncFailed
diff --git a/classes/packagedata.bbclass b/classes/packagedata.bbclass
index 86f18a9..a207841 100644
--- a/classes/packagedata.bbclass
+++ b/classes/packagedata.bbclass
@@ -25,7 +25,7 @@ def read_pkgdatafile(fn):
 def get_subpkgedata_fn(pkg, d):
 	archs = bb.data.expand("${PACKAGE_ARCHS}", d).split(" ")
 	archs.reverse()
-	pkgdata = bb.data.expand('${TMPDIR}/pkgdata/', d)
+	pkgdata = bb.data.expand('${PKGDATA_DIR}/../', d)
 	targetdir = bb.data.expand('${TARGET_VENDOR}-${TARGET_OS}/runtime/', d)
 	for arch in archs:
 		fn = pkgdata + arch + targetdir + pkg
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index 3a68959..cbe5f75 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -280,7 +280,7 @@ FILESDIR = "${@bb.which(d.getVar('FILESPATH', 1), '.')}"
 ##################################################################
 
 TMPDIR = "${TOPDIR}/tmp"
-CACHE = "${TMPDIR}/cache${@['', '/' + str(bb.data.getVar('MACHINE', d, 1))][bool(bb.data.getVar('MACHINE', d, 1))]}"
+CACHE = "${TMPDIR}/cache/${LIBC}/${@['', '/' + str(bb.data.getVar('MACHINE', d, 1))][bool(bb.data.getVar('MACHINE', d, 1))]}"
 CO_DIR = "${DL_DIR}"
 CVSDIR = "${CO_DIR}/cvs"
 SVNDIR = "${CO_DIR}/svn"
@@ -288,17 +288,17 @@ GITDIR = "${CO_DIR}/git"
 BZRDIR = "${CO_DIR}/bzr"
 HGDIR = "${CO_DIR}/hg"
 
-STAMP = "${TMPDIR}/stamps/${MULTIMACH_TARGET_SYS}/${PF}"
-WORKDIR = "${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PF}"
+STAMP = "${TMPDIR}/stamps/${LIBC}/${MULTIMACH_TARGET_SYS}/${PF}"
+WORKDIR = "${TMPDIR}/work/${LIBC}/${MULTIMACH_TARGET_SYS}/${PF}"
 T = "${WORKDIR}/temp"
 D = "${WORKDIR}/image"
 S = "${WORKDIR}/${BP}"
 B = "${S}"
 
-STAGING_DIR = "${TMPDIR}/staging"
+STAGING_DIR = "${TMPDIR}/staging/${LIBC}"
 
 STAGING_DIR_JAVA = "${STAGING_DIR}/java"
-STAGING_DIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}"
+STAGING_DIR_NATIVE = "${TMPDIR}/staging/${BUILD_SYS}"
 STAGING_BINDIR_NATIVE = "${STAGING_DIR_NATIVE}${bindir_native}"
 STAGING_BINDIR_CROSS  = "${STAGING_DIR_NATIVE}${bindir_native}/${MULTIMACH_HOST_SYS}"
 STAGING_BINDIR_CROSS_BASEPKG = "${STAGING_DIR_NATIVE}${bindir_native}/${BASEPKG_TARGET_SYS}"
@@ -327,7 +327,7 @@ STAGING_DIR_SDK = "${STAGING_DIR}/${SDK_SYS}"
 
 # Setting DEPLOY_DIR outside of TMPDIR is helpful, when you are using
 # packaged staging and/or multimachine.
-DEPLOY_DIR ?= "${TMPDIR}/deploy"
+DEPLOY_DIR ?= "${TMPDIR}/deploy/${LIBC}"
 DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
 DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
@@ -335,7 +335,7 @@ DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
 DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images"
 DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
 
-PKGDATA_DIR = "${TMPDIR}/pkgdata/${MULTIMACH_TARGET_SYS}"
+PKGDATA_DIR = "${TMPDIR}/pkgdata/${LIBC}/${MULTIMACH_TARGET_SYS}"
 
 SDK_NAME = "${DISTRO}/${TARGET_ARCH}"
 SDK_PATH = "/usr/local/${SDK_NAME}"
@@ -409,7 +409,7 @@ EXTRA_IMAGEDEPENDS = ""
 # Toolchain info.
 ##################################################################
 
-CROSS_DIR = "${TMPDIR}/cross/${BASE_PACKAGE_ARCH}"
+CROSS_DIR = "${TMPDIR}/cross/${LIBC}/${BASE_PACKAGE_ARCH}"
 CROSS_DATADIR = "${CROSS_DIR}/share"
 PATH_prepend = "${STAGING_BINDIR_CROSS}:${STAGING_BINDIR_CROSS_BASEPKG}:${STAGING_DIR_NATIVE}${sbindir_native}:${STAGING_BINDIR_NATIVE}:${CROSS_DIR}/${bindir_cross}:${STAGING_DIR_NATIVE}${base_sbindir_native}:${STAGING_DIR_NATIVE}${base_bindir_native}:"
 export PATH
-- 
1.5.4.3





More information about the Openembedded-devel mailing list