summaryrefslogtreecommitdiff
path: root/packages/meta/meta-toolchain.bb
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2008-02-28 12:08:10 +0000
committerRichard Purdie <rpurdie@rpsys.net>2008-02-28 12:08:10 +0000
commit2b08254beae049c1bdffaf56c62daa2b7ffb6fe2 (patch)
tree1a97d7b9f3b330d9681283a1b06379506021c17f /packages/meta/meta-toolchain.bb
parent755c434854cd25c18ed1dbac87be7a901e01e506 (diff)
meta-toolchain: Sync with Poky. Add site-config file with distilled site configuration from OE, add environment setup script to tarball, add version file to tarball. Generate extras package with tarball separately since this information is only needed when using the toolchain with OE as an external toolchain. Change the way the target packages are installed so fix bugs with the previous approach
Diffstat (limited to 'packages/meta/meta-toolchain.bb')
-rw-r--r--packages/meta/meta-toolchain.bb103
1 files changed, 65 insertions, 38 deletions
diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb
index 923844ef8c..3c92712dff 100644
--- a/packages/meta/meta-toolchain.bb
+++ b/packages/meta/meta-toolchain.bb
@@ -1,22 +1,22 @@
DESCRIPTION = "Meta package for building a installable toolchain"
LICENSE = "MIT"
DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
-PR = "r2"
inherit sdk meta
SDK_DIR = "${WORKDIR}/sdk"
SDK_OUTPUT = "${SDK_DIR}/image"
+SDK_OUTPUT2 = "${SDK_DIR}/image-extras"
SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
-SDK_SUFFIX = "toolchain"
-
-FEED_ARCH ?= "${TARGET_ARCH}"
IPKG_HOST = "ipkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}"
-IPKG_TARGET = "ipkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${prefix}"
+IPKG_TARGET = "ipkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/temp-target"
TOOLCHAIN_HOST_TASK ?= "task-sdk-host"
TOOLCHAIN_TARGET_TASK ?= "task-sdk-bare"
+FEED_ARCH ?= "${TARGET_ARCH}"
+SDK_SUFFIX = "toolchain"
+TOOLCHAIN_OUTPUTNAME ?= "${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-${SDK_SUFFIX}"
RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
@@ -37,12 +37,22 @@ do_populate_sdk() {
${IPKG_TARGET} update
${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
- mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- cp -pPR ${SDK_OUTPUT}/${prefix}/usr/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
- rm -rf ${SDK_OUTPUT}/${prefix}/usr/
-
- cp -pPR ${SDK_OUTPUT}/${prefix}/lib/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib
- rm -rf ${SDK_OUTPUT}/${prefix}/lib/*
+ mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include
+ mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/.debug/
+ mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/share
+ mv ${SDK_OUTPUT}/temp-target/usr/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
+ rm -rf ${SDK_OUTPUT}/temp-target/usr/lib/ipkg/
+ cp -pPR ${SDK_OUTPUT}/temp-target/usr/include/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/include/
+ cp -pPR ${SDK_OUTPUT}/temp-target/usr/lib/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/
+ if [ -d ${SDK_OUTPUT}/temp-target/usr/lib/.debug ]; then
+ cp -pPR ${SDK_OUTPUT}/temp-target/usr/lib/.debug/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/.debug/
+ fi
+ cp -pPR ${SDK_OUTPUT}/temp-target/usr/share/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/share/
+ cp -pPR ${SDK_OUTPUT}/temp-target/lib/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/
+ if [ -d ${SDK_OUTPUT}/temp-target/lib/.debug ]; then
+ cp -pPR ${SDK_OUTPUT}/temp-target/lib/.debug/* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/.debug/
+ fi
+ rm -rf ${SDK_OUTPUT}/temp-target/
for fn in `ls ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/`; do
if [ -h ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/$fn ]; then
@@ -55,47 +65,36 @@ do_populate_sdk() {
fi
done
- mv ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/gcc ${SDK_OUTPUT}/${prefix}/lib
-
echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libpthread.so
echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libc.so
# remove unwanted housekeeping files
- mv ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status
- rm -Rf ${SDK_OUTPUT}${prefix}/${TARGET_SYS}/lib/ipkg
mv ${SDK_OUTPUT}/usr/lib/ipkg/status ${SDK_OUTPUT}/${prefix}/package-status-host
rm -Rf ${SDK_OUTPUT}/usr/lib
# extract and store ipks, pkgdata and shlibs data
target_pkgs=`cat ${SDK_OUTPUT}/${prefix}/package-status | grep Package: | cut -f 2 -d ' '`
- mkdir -p ${SDK_OUTPUT}/${prefix}/ipk/
- mkdir -p ${SDK_OUTPUT}/${prefix}/pkgdata/runtime/
- mkdir -p ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/shlibs/
+ mkdir -p ${SDK_OUTPUT2}/${prefix}/ipk/
+ mkdir -p ${SDK_OUTPUT2}/${prefix}/pkgdata/runtime/
+ mkdir -p ${SDK_OUTPUT2}/${prefix}/${TARGET_SYS}/shlibs/
for pkg in $target_pkgs ; do
for arch in $revipkgarchs; do
pkgnames=${DEPLOY_DIR_IPK}/$arch/${pkg}_*_$arch.ipk
if [ -e $pkgnames ]; then
oenote "Found $pkgnames"
- cp $pkgnames ${SDK_OUTPUT}/${prefix}/ipk/
+ cp $pkgnames ${SDK_OUTPUT2}/${prefix}/ipk/
orig_pkg=`ipkg-list-fields $pkgnames | grep OE: | cut -d ' ' -f2`
- pkg_subdir_postfix=${TARGET_VENDOR}${@['-' + bb.data.getVar('TARGET_OS', d, 1), ''][bb.data.getVar('TARGET_OS', d, 1) == ('' or 'custom')]}
- for aarch in $revipkgarchs; do
- if [ -e "${STAGING_DIR}/pkgdata/${aarch}${pkg_subdir_postfix}/${orig_pkg}" ]; then
- pkg_subdir="${aarch}${pkg_subdir_postfix}"
- break
- fi
- done
- oenote "Original package in ${pkg_subdir}"
- mkdir -p ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/runtime
- cp ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/
+ pkg_subdir=$arch${TARGET_VENDOR}${@['-' + bb.data.getVar('TARGET_OS', d, 1), ''][bb.data.getVar('TARGET_OS', d, 1) == ('' or 'custom')]}
+ mkdir -p ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime
+ cp ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/
subpkgs=`cat ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg | grep PACKAGES: | cut -b 10-`
for subpkg in $subpkgs; do
- cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/runtime/
+ cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime/
if [ -e ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ];then
- cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/runtime/
+ cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime/
fi
if [ -e ${STAGING_DIR_TARGET}/shlibs/$subpkg.list ]; then
- cp ${STAGING_DIR_TARGET}/shlibs/$subpkg.* ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/shlibs/
+ cp ${STAGING_DIR_TARGET}/shlibs/$subpkg.* ${SDK_OUTPUT2}/${prefix}/${TARGET_SYS}/shlibs/
fi
done
break
@@ -109,12 +108,14 @@ do_populate_sdk() {
# gcc-cross-sdk get built :( (30/11/07)
ln -sf libgcc_s.so.1 ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/libgcc_s.so
- # remove unwanted executables
- rm -rf ${SDK_OUTPUT}/${prefix}/sbin ${SDK_OUTPUT}/${prefix}/etc
-
- # remove broken .la files
+ # Remove broken .la files
rm -f ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/*.la
+ # Generate link for sysroot use
+ # /usr/local/poky/eabi-glibc/arm/arm-poky-linux-gnueabi/usr -> .
+ cd ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}
+ ln -sf . usr
+
# fix pkgconfig data files
if [ -e ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/pkgconfig ]; then
cd ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/lib/pkgconfig
@@ -126,10 +127,36 @@ do_populate_sdk() {
done
fi
- # package it up
+
+ # Setup site file for external use
+ siteconfig=${SDK_OUTPUT}/${prefix}/site-config
+ touch $siteconfig
+ for sitefile in ${CONFIG_SITE} ; do
+ cat $sitefile >> $siteconfig
+ done
+
+ # Create environment setup script
+ script=${SDK_OUTPUT}/${prefix}/environment-setup
+ touch $script
+ echo 'export PATH=${prefix}/bin:$PATH' >> $script
+ echo 'export PKG_CONFIG_SYSROOT_DIR=${prefix}/${TARGET_SYS}' >> $script
+ echo 'export PKG_CONFIG_PATH=${prefix}/${TARGET_SYS}/lib/pkgconfig' >> $script
+ echo 'export CONFIG_SITE=${prefix}/site-config' >> $script
+
+ # Add version information
+ versionfile=${SDK_OUTPUT}/${prefix}/version
+ touch $versionfile
+ echo 'Distro: ${DISTRO}' >> $versionfile
+ echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
+ echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
+ echo 'Timestamp: ${DATETIME}' >> $versionfile
+
+ # Package it up
mkdir -p ${SDK_DEPLOY}
cd ${SDK_OUTPUT}
- fakeroot tar cfj ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-${SDK_SUFFIX}.tar.bz2 .
+ fakeroot tar cfj ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
+ cd ${SDK_OUTPUT2}
+ fakeroot tar cfj ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}-extras.tar.bz2 .
}
do_populate_sdk[nostamp] = "1"