aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2008-03-04 12:12:40 +0000
committerRichard Purdie <rpurdie@rpsys.net>2008-03-04 12:12:40 +0000
commit18074765f1529a3a632abbaa79724c38ff25578a (patch)
treeef53bce90adfd058282eecca096aada696b4abf0
parent39ade776625e7fdd746d91fa8497d16646b77362 (diff)
downloadopenembedded-18074765f1529a3a632abbaa79724c38ff25578a.tar.gz
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.
-rw-r--r--classes/insane.bbclass11
-rw-r--r--classes/native.bbclass47
-rw-r--r--classes/pkgconfig.bbclass30
-rw-r--r--classes/sdk.bbclass12
-rw-r--r--conf/bitbake.conf56
-rw-r--r--conf/sanity.conf2
-rw-r--r--packages/gcc/gcc3-build-cross.inc5
-rw-r--r--packages/gcc/gcc3-build-sdk.inc2
-rw-r--r--packages/gcc/gcc4-build-sdk.inc4
-rw-r--r--packages/linux-libc-headers/linux-libc-headers.inc2
-rw-r--r--packages/openssl/openssl.inc2
-rw-r--r--packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb3
12 files changed, 69 insertions, 107 deletions
diff --git a/classes/insane.bbclass b/classes/insane.bbclass
index 97cf036dd9..5ff49cd65e 100644
--- a/classes/insane.bbclass
+++ b/classes/insane.bbclass
@@ -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
diff --git a/classes/native.bbclass b/classes/native.bbclass
index 934303cc0c..8f2b6f3fec 100644
--- a/classes/native.bbclass
+++ b/classes/native.bbclass
@@ -47,39 +47,33 @@ export AS = "${HOST_PREFIX}as"
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"
-
-# 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"
+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}"
do_stage () {
if [ "${INHIBIT_NATIVE_STAGE_INSTALL}" != "1" ]
@@ -93,3 +87,4 @@ do_install () {
}
PKG_CONFIG_PATH .= "${EXTRA_NATIVE_PKGCONFIG_PATH}"
+PKG_CONFIG_SYSROOT_DIR = ""
diff --git a/classes/pkgconfig.bbclass b/classes/pkgconfig.bbclass
index d2176d8b39..d65f8a6253 100644
--- a/classes/pkgconfig.bbclass
+++ b/classes/pkgconfig.bbclass
@@ -2,36 +2,10 @@ 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
}
diff --git a/classes/sdk.bbclass b/classes/sdk.bbclass
index 63f12117eb..71c65a1629 100644
--- a/classes/sdk.bbclass
+++ b/classes/sdk.bbclass
@@ -6,15 +6,16 @@ OLD_PACKAGE_ARCH := ${PACKAGE_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}"
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index de526f0e56..4fe5c21e02 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -2,23 +2,20 @@
# 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_docdir = "${layout_datadir}/doc"
# 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 @@ layout_libexecdir = "${layout_exec_prefix}/libexec"
# 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 @@ SLOT = "0"
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"
diff --git a/conf/sanity.conf b/conf/sanity.conf
index 4af4454e2e..35d9d32de1 100644
--- a/conf/sanity.conf
+++ b/conf/sanity.conf
@@ -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"
diff --git a/packages/gcc/gcc3-build-cross.inc b/packages/gcc/gcc3-build-cross.inc
index 1d744c1eae..33429e18ef 100644
--- a/packages/gcc/gcc3-build-cross.inc
+++ b/packages/gcc/gcc3-build-cross.inc
@@ -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}
diff --git a/packages/gcc/gcc3-build-sdk.inc b/packages/gcc/gcc3-build-sdk.inc
index aa540212c4..5bc187b745 100644
--- a/packages/gcc/gcc3-build-sdk.inc
+++ b/packages/gcc/gcc3-build-sdk.inc
@@ -5,6 +5,8 @@ SRC_URI += 'file://sdk-libstdc++-includes.patch;patch=1'
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)
diff --git a/packages/gcc/gcc4-build-sdk.inc b/packages/gcc/gcc4-build-sdk.inc
index 10526454c3..d6af5fe933 100644
--- a/packages/gcc/gcc4-build-sdk.inc
+++ b/packages/gcc/gcc4-build-sdk.inc
@@ -4,10 +4,6 @@ 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
diff --git a/packages/linux-libc-headers/linux-libc-headers.inc b/packages/linux-libc-headers/linux-libc-headers.inc
index 43f0958863..d9f4d687ee 100644
--- a/packages/linux-libc-headers/linux-libc-headers.inc
+++ b/packages/linux-libc-headers/linux-libc-headers.inc
@@ -1,5 +1,3 @@
DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
SECTION = "devel"
LICENSE = "GPL"
-
-DEPENDS = "cross-linkage" \ No newline at end of file
diff --git a/packages/openssl/openssl.inc b/packages/openssl/openssl.inc
index 8e3f33a96e..9fb8b343b6 100644
--- a/packages/openssl/openssl.inc
+++ b/packages/openssl/openssl.inc
@@ -14,7 +14,7 @@ export CFLAG_mtx-1 := "${@'${CFLAG}'.replace('-O2', '')}"
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"
diff --git a/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb b/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb
index 051279e33f..e52ab34392 100644
--- a/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb
+++ b/packages/sharprom-toolchain/sharprom-toolchain-native_1.0.bb
@@ -2,14 +2,13 @@ DESCRIPTION = "Precompiled SharpROM toolchain glue package"
LICENSE = "GPL"
SECTION = "base"
# see bug 2199 for the reason the following line is in here
-DEPENDS = "virtual/linux-libc-headers"
+DEPENDS = "linux-libc-headers cross-linkage staging-linkage"
PROVIDES_sharprom-compatible = "\
virtual/arm-linux-gcc-2.95 \
virtual/arm-linux-libc-for-gcc \
virtual/arm-linux-binutils \
virtual/libc \
virtual/arm-linux-gcc \
- virtual/linux-libc-headers \
virtual/arm-linux-gcc-initial "
PR = "r1"