[oe-commits] org.oe.dev Change staging layout to match the target system layout. WARNING - staging ABI change.

rpurdie commit openembedded-commits at lists.openembedded.org
Tue Mar 4 12:26:39 UTC 2008


Change staging layout to match the target system layout. WARNING - staging ABI change.

This update completes the conversion of OE.dev to use sysroot and have a staging layout that matches the target system. This means we no longer need to mangle pkgconfig files and can use its sysroot option instead. Users of old toolchains (gcc prior to 3.4 and external ones) may need to add cross-linkage and staging-linkage to their toolchain dependencies. Since this update changes staging layout and the contents of the .pc files it updates the staging ABI and people will need to rebuild.

Author: rpurdie at openembedded.org
Branch: org.openembedded.dev
Revision: ce72f9f467a7c0cf9bc1e280749f8f8259ef44b9
ViewMTN: http://monotone.openembedded.org/revision/info/ce72f9f467a7c0cf9bc1e280749f8f8259ef44b9
Files:
1
classes/insane.bbclass
classes/native.bbclass
classes/pkgconfig.bbclass
classes/sdk.bbclass
conf/bitbake.conf
conf/sanity.conf
packages/gcc/gcc3-build-cross.inc
packages/gcc/gcc3-build-sdk.inc
packages/gcc/gcc4-build-sdk.inc
packages/linux-libc-headers/linux-libc-headers.inc
packages/openssl/openssl.inc
packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb
Diffs:

#
# mt diff -r46a0a75288d26760fdfab6d87d48fb71e729d3ea -rce72f9f467a7c0cf9bc1e280749f8f8259ef44b9
#
# 
# 
# patch "classes/insane.bbclass"
#  from [00d6311affb65ec365a80a9b833de2945df35660]
#    to [0712df99743c442ed311e6b4d4be0d28f29d525f]
# 
# patch "classes/native.bbclass"
#  from [242e5b275af07bc3c8f5d3d1a6003d852ba72ec6]
#    to [1b40b57b08d22639dfa0d4f7dd05dc5a77f5d82b]
# 
# patch "classes/pkgconfig.bbclass"
#  from [2c935b7d38f7e8274e938105750194e864d60cf7]
#    to [825125168a0e350351266996b570279b35dc175f]
# 
# patch "classes/sdk.bbclass"
#  from [c676bc74ec4f1990541362dca4fe5698aca8eba8]
#    to [b90e8104979fb4179078ad646cf8f90830e69014]
# 
# patch "conf/bitbake.conf"
#  from [273d61dd50eb590d1fee2b6199f5673202a94747]
#    to [40df88348e50c296b273a35f3ff1870b7b20cb0f]
# 
# patch "conf/sanity.conf"
#  from [19e2e5d9bfa5113b4c25577b445fd588b4a0999b]
#    to [0b8a4c4acfe94430a373d0c7c51dc052f45c98a7]
# 
# patch "packages/gcc/gcc3-build-cross.inc"
#  from [6b61dc663b321ffd6f1992e3587e47c2440c31fe]
#    to [5d07bedf9a0e89893e190e81c7733cbe6d78177b]
# 
# patch "packages/gcc/gcc3-build-sdk.inc"
#  from [e80775fa7cdad10299b39edefff6b5cdb7120bda]
#    to [59b69e7b5420254f92421122abe64c1bafc7ca71]
# 
# patch "packages/gcc/gcc4-build-sdk.inc"
#  from [87829c7148dd1ac08f628d6ee4be53f410490e7b]
#    to [4bccd43b332808cf66e56b0cfcdcc722e35df86c]
# 
# patch "packages/linux-libc-headers/linux-libc-headers.inc"
#  from [87128c42990e29e5ae8b7fb5934036d4c2f46337]
#    to [8d23279cdfe7a7a9d3b20655625b2c6424e25069]
# 
# patch "packages/openssl/openssl.inc"
#  from [e2020c55f48ae6edb2b96f7cb705f900d58ecc79]
#    to [a0a61df4d6fc5943c3fb8c9f885caea1ebd2cb7c]
# 
# patch "packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb"
#  from [13c0bde7a606ffbf475967b7990ea82a22247655]
#    to [bf7366a30c3b81bb4c152fef10a1d3f481091656]
# 
============================================================
--- classes/insane.bbclass	00d6311affb65ec365a80a9b833de2945df35660
+++ classes/insane.bbclass	0712df99743c442ed311e6b4d4be0d28f29d525f
@@ -333,12 +333,15 @@ def package_qa_check_staged(path,d):
     import os, bb
 
     sane = True
-    workdir = os.path.join(bb.data.getVar('TMPDIR', d, True), "work")
+    tmpdir = bb.data.getVar('TMPDIR', d, True)
+    workdir = os.path.join(tmpdir, "work")
 
-    if bb.data.inherits_class("native", d):
+    if bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d):
         installed = "installed=no"
+        pkgconfigcheck = workdir
     else:
         installed = "installed=yes"
+        pkgconfigcheck = tmpdir
 
     # find all .la and .pc files
     # read the content
@@ -356,8 +359,8 @@ def package_qa_check_staged(path,d):
                     sane = package_qa_handle_error(8, error_msg, "staging", path, d)
             elif file[-2:] == "pc":
                 file_content = open(path).read()
-                if workdir in file_content:
-                    error_msg = "%s failed sanity test (workdir) in path %s" % (file,root)
+                if pkgconfigcheck in file_content:
+                    error_msg = "%s failed sanity test (tmpdir) in path %s" % (file,root)
                     sane = package_qa_handle_error(6, error_msg, "staging", path, d)
 
     return sane
============================================================
--- classes/native.bbclass	242e5b275af07bc3c8f5d3d1a6003d852ba72ec6
+++ classes/native.bbclass	1b40b57b08d22639dfa0d4f7dd05dc5a77f5d82b
@@ -47,40 +47,34 @@ export STRIP = "${HOST_PREFIX}strip"
 export RANLIB = "${HOST_PREFIX}ranlib"
 export STRIP = "${HOST_PREFIX}strip"
 
-
 # Path prefixes
-base_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}"
-prefix = "${base_prefix}"
-exec_prefix = "${base_prefix}"
+export base_prefix = "${STAGING_DIR_NATIVE}"
+export prefix = "${STAGING_DIR_NATIVE}${layout_prefix}"
+export exec_prefix = "${STAGING_DIR_NATIVE}${layout_exec_prefix}"
 
 # Base paths
-base_bindir = "${base_prefix}/bin"
-base_sbindir = "${base_prefix}/bin"
-base_libdir = "${base_prefix}/lib"
+export base_bindir = "${STAGING_DIR_NATIVE}${layout_base_bindir}"
+export base_sbindir = "${STAGING_DIR_NATIVE}${layout_base_sbindir}"
+export base_libdir = "${STAGING_DIR_NATIVE}${layout_base_libdir}"
 
 # Architecture independent paths
-sysconfdir = "${prefix}/etc"
-sharedstatedir = "${prefix}/com"
-localstatedir = "${prefix}/var"
-infodir = "${datadir}/info"
-mandir = "${datadir}/man"
-docdir = "${datadir}/doc"
-servicedir = "${prefix}/srv"
+export datadir = "${STAGING_DIR_NATIVE}${layout_datadir}"
+export sysconfdir = "${STAGING_DIR_NATIVE}${layout_sysconfdir}"
+export sharedstatedir = "${STAGING_DIR_NATIVE}${layout_sharedstatedir}"
+export localstatedir = "${STAGING_DIR_NATIVE}${layout_localstatedir}"
+export infodir = "${STAGING_DIR_NATIVE}${layout_infodir}"
+export mandir = "${STAGING_DIR_NATIVE}${layout_mandir}"
+export docdir = "${STAGING_DIR_NATIVE}${layout_docdir}"
+export servicedir = "${STAGING_DIR_NATIVE}${layout_servicedir}"
 
 # Architecture dependent paths
-bindir = "${exec_prefix}/bin"
-sbindir = "${exec_prefix}/bin"
-libexecdir = "${exec_prefix}/libexec"
-libdir = "${exec_prefix}/lib"
-includedir = "${exec_prefix}/include"
-oldincludedir = "${exec_prefix}/include"
+export bindir = "${STAGING_DIR_NATIVE}${layout_bindir}"
+export sbindir = "${STAGING_DIR_NATIVE}${layout_sbindir}"
+export libexecdir = "${STAGING_DIR_NATIVE}${layout_libexecdir}"
+export libdir = "${STAGING_DIR_NATIVE}${layout_libdir}"
+export includedir = "${STAGING_DIR_NATIVE}${layout_includedir}"
+export oldincludedir = "${STAGING_DIR_NATIVE}${layout_includedir}"
 
-# Datadir is made arch dependent here, primarily
-# for autoconf macros, and other things that
-# may be manipulated to handle crosscompilation
-# issues.
-datadir = "${exec_prefix}/share"
-
 do_stage () {
 	if [ "${INHIBIT_NATIVE_STAGE_INSTALL}" != "1" ]
 	then
@@ -93,3 +87,4 @@ PKG_CONFIG_PATH .= "${EXTRA_NATIVE_PKGCO
 }
 
 PKG_CONFIG_PATH .= "${EXTRA_NATIVE_PKGCONFIG_PATH}"
+PKG_CONFIG_SYSROOT_DIR = ""
============================================================
--- classes/pkgconfig.bbclass	2c935b7d38f7e8274e938105750194e864d60cf7
+++ classes/pkgconfig.bbclass	825125168a0e350351266996b570279b35dc175f
@@ -1,37 +1,11 @@ DEPENDS_prepend = "pkgconfig-native "
 inherit base
 
 DEPENDS_prepend = "pkgconfig-native "
 
-# The namespaces can clash here hence the two step replace
-def get_pkgconfig_mangle(d):
-	import bb.data
-	s = "-e ''"
-	if not bb.data.inherits_class('native', d):
-		s += " -e 's:=${libdir}:=OELIBDIR:;'"
-		s += " -e 's:=${includedir}:=OEINCDIR:;'"
-		s += " -e 's:=${datadir}:=OEDATADIR:'"
-		s += " -e 's:=${prefix}:=OEPREFIX:'"
-		s += " -e 's:=${exec_prefix}:=OEEXECPREFIX:'"
-		s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'"
-		s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'"
-		s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'"
-		s += " -e 's:OEPREFIX:${STAGING_DIR_HOST}${layout_prefix}:'"
-		s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${layout_exec_prefix}:'"
-		s += " -e 's:-L${WORKDIR}\S*: :g'"
-		s += " -e 's:-I${WORKDIR}\S*: :g'"
-
-	return s
-
-do_install_append () {
-        for pc in `find ${D} -name '*.pc' -type f | grep -v -- '-uninstalled.pc$'`; do
-                sed -i ${@get_pkgconfig_mangle(d)} -e 's:${D}::g' -e 's:${STAGING_LIBDIR}:${libdir}:g' -e 's:${STAGING_INCDIR}:${includedir}:g' -e 's:${STAGING_DIR_TARGET}:${prefix}:g' ${pc}
-        done
-}
-
 do_stage_append () {
+	install -d ${PKG_CONFIG_DIR}
 	for pc in `find ${S} -name '*.pc' -type f | grep -v -- '-uninstalled.pc$'`; do
 		pcname=`basename $pc`
-		install -d ${PKG_CONFIG_DIR}
-		cat $pc | sed ${@get_pkgconfig_mangle(d)} -e 's:${D}${libdir}\S*:${STAGING_LIBDIR}:g' -e 's:${D}${prefix}/include\S*:${STAGING_INCDIR}:g' > ${PKG_CONFIG_DIR}/$pcname
+		cat $pc > ${PKG_CONFIG_DIR}/$pcname
 	done
 }
============================================================
--- classes/sdk.bbclass	c676bc74ec4f1990541362dca4fe5698aca8eba8
+++ classes/sdk.bbclass	b90e8104979fb4179078ad646cf8f90830e69014
@@ -6,15 +6,16 @@ HOST_ARCH = "${BUILD_ARCH}"
 PACKAGE_ARCH = "${BUILD_ARCH}-${OLD_PACKAGE_ARCH}-sdk"
 
 HOST_ARCH = "${BUILD_ARCH}"
-HOST_VENDOR = "${BUILD_VENDOR}"
+# This isn't BUILD_VENDOR since we don't want to clash with native staging
+HOST_VENDOR = "${TARGET_VENDOR}"
 HOST_OS = "${BUILD_OS}"
 HOST_PREFIX = "${BUILD_PREFIX}"
 HOST_CC_ARCH = "${BUILD_CC_ARCH}"
 
-CPPFLAGS = "${BUILD_CPPFLAGS}"
-CFLAGS = "${BUILD_CFLAGS}"
-CXXFLAGS = "${BUILD_CFLAGS}"
-LDFLAGS = "${BUILD_LDFLAGS}"
+CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
+CFLAGS = "${BUILDSDK_CFLAGS}"
+CXXFLAGS = "${BUILDSDK_CFLAGS}"
+LDFLAGS = "${BUILDSDK_LDFLAGS}"
 
 # Path prefixes
 prefix = "${SDK_PREFIX}"
@@ -49,3 +50,4 @@ FILES_${PN}-dbg += "${prefix}/.debug \
                     ${prefix}/bin/.debug \
                    "
 
+export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${HOST_SYS}"
============================================================
--- conf/bitbake.conf	273d61dd50eb590d1fee2b6199f5673202a94747
+++ conf/bitbake.conf	40df88348e50c296b273a35f3ff1870b7b20cb0f
@@ -1,24 +1,21 @@
 ##################################################################
 # Standard target filesystem layout.
 ##################################################################
 
-# Note these currently match the existing staging layout but this 
-# is planned to change, see the oe-dev mailing list
-
 # Path prefixes
-layout_prefix = ""
-layout_exec_prefix = ""
+layout_prefix = "/usr"
+layout_exec_prefix = "/usr"
 layout_base_prefix = ""
 
 # Base paths
 layout_base_bindir = "${layout_base_prefix}/bin"
-layout_base_sbindir = "${layout_base_prefix}/bin"
+layout_base_sbindir = "${layout_base_prefix}/sbin"
 layout_base_libdir = "${layout_base_prefix}/lib"
 
 # Architecture independent paths
-layout_sysconfdir = "/etc"
-layout_localstatedir = "/var"
-layout_servicedir = "/srv"
+layout_sysconfdir = "${layout_base_prefix}/etc"
+layout_localstatedir = "${layout_base_prefix}/var"
+layout_servicedir = "${layout_base_prefix}/srv"
 layout_sharedstatedir = "${layout_prefix}/com"
 layout_datadir = "${layout_prefix}/share"
 layout_infodir = "${layout_datadir}/info"
@@ -27,7 +24,7 @@ layout_bindir = "${layout_exec_prefix}/b
 
 # Architecture dependent paths
 layout_bindir = "${layout_exec_prefix}/bin"
-layout_sbindir = "${layout_exec_prefix}/bin"
+layout_sbindir = "${layout_exec_prefix}/sbin"
 layout_libdir = "${layout_exec_prefix}/lib"
 layout_includedir = "${layout_exec_prefix}/include"
 layout_libexecdir = "${layout_exec_prefix}/libexec"
@@ -38,31 +35,31 @@ export base_prefix = ""
 
 # Path prefixes
 export base_prefix = ""
-export prefix = "/usr"
-export exec_prefix = "${prefix}"
+export prefix = "${layout_prefix}"
+export exec_prefix = "${layout_exec_prefix}"
 
 # Base paths
-export base_bindir = "${base_prefix}/bin"
-export base_sbindir = "${base_prefix}/sbin"
-export base_libdir = "${base_prefix}/lib"
+export base_bindir = "${layout_base_bindir}"
+export base_sbindir = "${layout_base_sbindir}"
+export base_libdir = "${layout_base_libdir}"
 
 # Architecture independent paths
-export datadir = "${prefix}/share"
-export sysconfdir = "/etc"
-export sharedstatedir = "${prefix}/com"
-export localstatedir = "/var"
-export infodir = "${datadir}/info"
-export mandir = "${datadir}/man"
-export docdir = "${datadir}/doc"
-export servicedir = "/srv"
+export datadir = "${layout_datadir}"
+export sysconfdir = "${layout_sysconfdir}"
+export sharedstatedir = "${layout_sharedstatedir}"
+export localstatedir = "${layout_localstatedir}"
+export infodir = "${layout_infodir}"
+export mandir = "${layout_mandir}"
+export docdir = "${layout_docdir}"
+export servicedir = "${layout_servicedir}"
 
 # Architecture dependent paths
-export bindir = "${exec_prefix}/bin"
-export sbindir = "${exec_prefix}/sbin"
-export libexecdir = "${exec_prefix}/libexec"
-export libdir = "${exec_prefix}/lib"
-export includedir = "${exec_prefix}/include"
-export oldincludedir = "${exec_prefix}/include"
+export bindir = "${layout_bindir}"
+export sbindir = "${layout_sbindir}"
+export libexecdir = "${layout_libexecdir}"
+export libdir = "${layout_libdir}"
+export includedir = "${layout_includedir}"
+export oldincludedir = "${layout_includedir}"
 
 ##################################################################
 # Architecture-dependent build variables.
@@ -511,6 +508,7 @@ export PKG_CONFIG_PATH = "${PKG_CONFIG_D
 
 export PKG_CONFIG_DIR = "${STAGING_LIBDIR}/pkgconfig"
 export PKG_CONFIG_PATH = "${PKG_CONFIG_DIR}"
+export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${TARGET_SYS}"
 export PKG_CONFIG_DISABLE_UNINSTALLED = "yes"
 
 export QMAKE_MKSPEC_PATH = "${STAGING_DATADIR_NATIVE}/qmake"
============================================================
--- conf/sanity.conf	19e2e5d9bfa5113b4c25577b445fd588b4a0999b
+++ conf/sanity.conf	0b8a4c4acfe94430a373d0c7c51dc052f45c98a7
@@ -11,7 +11,7 @@ BB_MIN_VERSION = "1.8.10"
 # that breaks the format and have been previously discussed on the mailing list 
 # with general agreement from the core team.
 #
-SANITY_ABI = "0"
+SANITY_ABI = "1"
 SANITY_ABIFILE = "${TMPDIR}/abi_version"
 
 INHERIT += "sanity"
============================================================
--- packages/gcc/gcc3-build-cross.inc	6b61dc663b321ffd6f1992e3587e47c2440c31fe
+++ packages/gcc/gcc3-build-cross.inc	5d07bedf9a0e89893e190e81c7733cbe6d78177b
@@ -23,11 +23,6 @@ do_stage_append () {
 		rm -rf ${CROSS_DIR}/$d
 	done
 
-    # Hack to be removed when staging layout matches the target layout
-    if [ ! -e ${STAGING_DIR_TARGET}/usr ]; then
-        ln -s ${STAGING_DIR_TARGET} ${STAGING_DIR_TARGET}/usr
-    fi
-
 	# Fix a few include links so cross builds are happier
 	if [ ! -e ${STAGING_INCDIR}/c++ ]; then
 		mkdir -p ${STAGING_INCDIR}
============================================================
--- packages/gcc/gcc3-build-sdk.inc	e80775fa7cdad10299b39edefff6b5cdb7120bda
+++ packages/gcc/gcc3-build-sdk.inc	59b69e7b5420254f92421122abe64c1bafc7ca71
@@ -5,6 +5,8 @@ STAGING_TARGET_LIBDIR = "${STAGING_DIR_T
 STAGING_TARGET_INCDIR = "${STAGING_DIR_TARGET}${layout_includedir}"
 STAGING_TARGET_LIBDIR = "${STAGING_DIR_TARGET}${layout_libdir}"
 
+EXTRA_OECONF += "--with-sysroot=${prefix}/${TARGET_SYS} --with-build-sysroot=${STAGING_DIR_TARGET}"
+
 do_configure () {
        (cd ${S} && gnu-configize) || die "failure running gnu-configize"
        (cd ${S}/libstdc++-v3 && autoreconf)
============================================================
--- packages/gcc/gcc4-build-sdk.inc	87829c7148dd1ac08f628d6ee4be53f410490e7b
+++ packages/gcc/gcc4-build-sdk.inc	4bccd43b332808cf66e56b0cfcdcc722e35df86c
@@ -1,13 +1,9 @@ do_configure () {
 USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
 USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibcgnueabi", "no", "", d )}'
 
 EXTRA_OECONF += "--with-sysroot=${prefix}/${TARGET_SYS} --with-build-sysroot=${STAGING_DIR_TARGET}"
 
 do_configure () {
-       # Hack to be removed when staging layout matches the target layout
-       if [ ! -e ${STAGING_DIR_TARGET}/usr ]; then
-           ln -s ${STAGING_DIR_TARGET} ${STAGING_DIR_TARGET}/usr
-       fi
        (cd ${S} && gnu-configize) || die "failure running gnu-configize"
        (cd ${S}/libstdc++-v3 && autoreconf)
        oe_runconf
============================================================
--- packages/linux-libc-headers/linux-libc-headers.inc	87128c42990e29e5ae8b7fb5934036d4c2f46337
+++ packages/linux-libc-headers/linux-libc-headers.inc	8d23279cdfe7a7a9d3b20655625b2c6424e25069
@@ -1,5 +1,3 @@ LICENSE = "GPL"
 DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
 SECTION = "devel"
 LICENSE = "GPL"
-
-DEPENDS = "cross-linkage"
============================================================
--- packages/openssl/openssl.inc	e2020c55f48ae6edb2b96f7cb705f900d58ecc79
+++ packages/openssl/openssl.inc	a0a61df4d6fc5943c3fb8c9f885caea1ebd2cb7c
@@ -14,7 +14,7 @@ export DIRS = "crypto ssl apps"
 export CFLAG_mtx-2 := "${@'${CFLAG}'.replace('-O2', '')}"
 
 export DIRS = "crypto ssl apps"
-export EX_LIBS = "-lgcc -ldl ${TARGET_LDFLAGS}"
+export EX_LIBS = "-lgcc -ldl"
 export AS = "${CC} -c"
 
 PACKAGES =+ "libcrypto libssl"
============================================================
--- packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb	13c0bde7a606ffbf475967b7990ea82a22247655
+++ packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb	bf7366a30c3b81bb4c152fef10a1d3f481091656
@@ -1,15 +1,14 @@ SECTION %s
>>> DIFF TRUNCATED @ 16K






More information about the Openembedded-commits mailing list