From 2b08254beae049c1bdffaf56c62daa2b7ffb6fe2 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 28 Feb 2008 12:08:10 +0000 Subject: 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 --- packages/meta/meta-toolchain.bb | 103 +++++++++++++++++++++++++--------------- 1 file changed, 65 insertions(+), 38 deletions(-) (limited to 'packages/meta') 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" -- cgit v1.2.3