diff options
author | Richard Purdie <rpurdie@rpsys.net> | 2008-02-28 12:08:10 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@rpsys.net> | 2008-02-28 12:08:10 +0000 |
commit | 2b08254beae049c1bdffaf56c62daa2b7ffb6fe2 (patch) | |
tree | 1a97d7b9f3b330d9681283a1b06379506021c17f /packages/meta/meta-toolchain.bb | |
parent | 755c434854cd25c18ed1dbac87be7a901e01e506 (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.bb | 103 |
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" |