From a2a083ab240026ca479b4800c09c02b656e1d70e Mon Sep 17 00:00:00 2001 From: John Lee Date: Mon, 22 Dec 2008 15:14:09 +0800 Subject: meta-toolchain.bb: introduce modify_opkg_conf By modifying the opkg config files in the toolchain, the toolchain can expend itself by installing packages from the repository. The default is to use DISTRO_FEED_URI. --- packages/meta/meta-toolchain.bb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb index 2a59ba2208..3ce2a31d9e 100644 --- a/packages/meta/meta-toolchain.bb +++ b/packages/meta/meta-toolchain.bb @@ -34,6 +34,24 @@ TOOLCHAIN_OUTPUTNAME ?= "${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-$ RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" +TOOLCHAIN_FEED_URI ?= "${DISTRO_FEED_URI}" + +modify_opkg_conf () { + OUTPUT_OPKGCONF_TARGET="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg.conf" + OUTPUT_OPKGCONF_HOST="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg-sdk.conf" + OUTPUT_OPKGCONF_SDK="${SDK_OUTPUT}/${sysconfdir}/opkg-sdk.conf" + rm ${OUTPUT_OPKGCONF_TARGET} + rm ${OUTPUT_OPKGCONF_HOST} + rm ${OUTPUT_OPKGCONF_SDK} + opkgarchs="${PACKAGE_ARCHS}" + priority=1 + for arch in ${opkgarchs}; do + echo "arch ${arch} ${priority}" >> ${OUTPUT_OPKGCONF_TARGET}; + echo "src/gz ${arch} ${TOOLCHAIN_FEED_URI}/${arch}" >> ${OUTPUT_OPKGCONF_TARGET}; + priority=$(expr ${priority} + 5); + done +} + do_populate_sdk() { rm -rf ${SDK_OUTPUT} mkdir -p ${SDK_OUTPUT} @@ -134,6 +152,8 @@ do_populate_sdk() { echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile echo 'Timestamp: ${DATETIME}' >> $versionfile + modify_opkg_conf + # Package it up mkdir -p ${SDK_DEPLOY} cd ${SDK_OUTPUT} -- cgit v1.2.3 From ccd72dd30fd9de6c06c9a2e03a84d862c3969386 Mon Sep 17 00:00:00 2001 From: Julian_chu Date: Wed, 10 Sep 2008 16:29:40 +0800 Subject: libtool-sdk_1.5.10.bb, meta-toolchain.bb, task-sdk-host.bb: introduce sysroot libtool-sdk. Add libtool-sdk to help the meta toolchain using the .la files. Patch add_sysroot_function.patch is applied to teach libtool about LIBTOOL_SYSROOT_PATH . task-sdk-host.bb is updated along with its consumers to include libtool-sdk, and meta-toolchain.bb is updated to include this environment variable. --- .../libtool-1.5.10/add_sysroot_function.patch | 103 +++++++++++++++++++++ packages/libtool/libtool-sdk_1.5.10.bb | 53 +++++++++++ packages/meta/meta-toolchain.bb | 1 + packages/tasks/task-fso-toolchain-host.bb | 2 +- packages/tasks/task-openmoko-toolchain-host.bb | 2 +- packages/tasks/task-sdk-host.bb | 3 +- packages/tasks/task-slugos-toolchain-host.bb | 2 +- 7 files changed, 162 insertions(+), 4 deletions(-) create mode 100644 packages/libtool/libtool-1.5.10/add_sysroot_function.patch create mode 100644 packages/libtool/libtool-sdk_1.5.10.bb diff --git a/packages/libtool/libtool-1.5.10/add_sysroot_function.patch b/packages/libtool/libtool-1.5.10/add_sysroot_function.patch new file mode 100644 index 0000000000..4ce68d92b7 --- /dev/null +++ b/packages/libtool/libtool-1.5.10/add_sysroot_function.patch @@ -0,0 +1,103 @@ +Index: libtool-1.5.10/ltmain.in +=================================================================== +--- libtool-1.5.10.orig/ltmain.in 2008-07-25 16:24:21.000000000 +0800 ++++ libtool-1.5.10/ltmain.in 2008-07-25 18:31:41.000000000 +0800 +@@ -137,6 +137,52 @@ + # Shell function definitions: + # This seems to be the best place for them + ++# func_add_sysroot_path add LIBTOOL_SYSROOT_PATH as prefix in search path ++# -L/usr/lib -> -L/home/foo/usr/lib if sysroot is /home/foo ++func_add_sysroot_path () ++{ ++ _suffix="" ++ _leading="" ++ case "${1}" in ++ -L*) ++ _suffix=`echo ${1} |sed -e s:-L::` ++ _suffix=${LIBTOOL_SYSROOT_PATH}${_suffix} ++ _leading="-L" ++ ;; ++ -I*) ++ _suffix=`echo ${1} |sed -e s:-I::` ++ _suffix=${LIBTOOL_SYSROOT_PATH}${_suffix} ++ _leading="-I" ++ ;; ++ /*) ++ _suffix=${LIBTOOL_SYSROOT_PATH}${1} ++ _leading="" ++ ;; ++ *) ++ _suffix=${1} ++ _leading="" ++ esac ++ eval add_sysroot_path_result=${_leading}${_suffix} ++} ++ ++# func_rm_sysroot_path remove LIBTOOL_SYSROOT_PATH ++# -L/home/foo/usr/lib => if sysroot is /home/foo ++func_rm_sysroot_path () { ++ __rm_sysroot_path=${1} ++ case $__rm_sysroot_path in ++ -L*) ++ __rm_sysroot_path=`echo ${1}|sed -e s:$LIBTOOL_SYSROOT_PATH:/:g` ++ ;; ++ -I*) ++ __rm_sysroot_path=`echo ${1}|sed -e s:$LIBTOOL_SYSROOT_PATH:/:g` ++ ;; ++ /*) ++ __rm_sysroot_path=`echo ${1}|sed -e s:$LIBTOOL_SYSROOT_PATH:/:g` ++ ;; ++ esac ++ rm_sysroot_path_result=`echo ${__rm_sysroot_path}|sed -e s://:/:g` ++} ++ + # func_win32_libid arg + # return the library type of file 'arg' + # +@@ -2196,6 +2242,16 @@ + *) . ./$lib ;; + esac + ++ # Add Sysroot to path # ++ tmp_depen_libs= ++ for depen_lib in $dependency_libs; do ++ func_add_sysroot_path $depen_lib ++ tmp_depen_libs="$tmp_depen_libs $add_sysroot_path_result " ++ done ++ dependency_libs=$tmp_depen_libs ++ func_add_sysroot_path $libdir ++ libdir="$add_sysroot_path_result" ++ + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then +@@ -2777,6 +2833,10 @@ + # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + # fi + if ! grep "^installed=no" $deplib > /dev/null; then ++ #Add Sysroot to libdir ++ func_add_sysroot_path $libdir ++ libdir=$add_sysroot_path_result ++ + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 +@@ -5243,6 +5303,17 @@ + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac ++ ++ # Remove Sysroot from path before write in .la file # ++ tmp_depen_libs= ++ for depen_lib in $dependency_libs; do ++ func_rm_sysroot_path $depen_lib ++ tmp_depen_libs="$tmp_depen_libs $rm_sysroot_path_result " ++ done ++ dependency_libs=$tmp_depen_libs ++ func_rm_sysroot_path $libdir ++ libdir="$rm_sysroot_path_result" ++ + $echo > $output "\ + # $outputname - a libtool library file + # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP diff --git a/packages/libtool/libtool-sdk_1.5.10.bb b/packages/libtool/libtool-sdk_1.5.10.bb new file mode 100644 index 0000000000..e068b531ad --- /dev/null +++ b/packages/libtool/libtool-sdk_1.5.10.bb @@ -0,0 +1,53 @@ +require libtool.inc +require libtool_${PV}.bb + +PR = "r0" +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}" +SRC_URI_append = " file://rpath-control.patch;patch=1 \ + file://libdir-la.patch;patch=1 \ + file://libdir-la2.patch;patch=1 \ + file://prefix.patch;patch=1 \ + file://tag.patch;patch=1 \ + file://install-path-check.patch;patch=1 \ + file://nousrlib.patch;patch=1 \ + file://add_sysroot_function.patch;patch=1 \ + " + +S = "${WORKDIR}/libtool-${PV}" + +inherit sdk + +do_configure_prepend () { + rm -f ltmain.shT + date=`/bin/sh ./mkstamp < ./ChangeLog` && \ + sed -e 's/@''PACKAGE@/libtool/' -e 's/@''VERSION@/1.5.10/' \ + -e "s%@""TIMESTAMP@%$date%" ./ltmain.in > ltmain.shT + mv -f ltmain.shT ltmain.sh || \ + (rm -f ltmain.sh && cp ltmain.shT ltmain.sh && rm -f ltmain.shT) + cp ltmain.sh ./libltdl/ +} + +do_install () { + install -d ${D}${bindir}/ + install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/ + install -m 0755 libtoolize ${D}${bindir}/ + + install -d ${D}${libdir}/ + oe_libinstall -a -so -C libltdl libltdl ${D}${libdir} + + install -d ${D}${includedir}/ + install -m 0644 libltdl/ltdl.h ${D}${includedir} + + install -d ${D}${datadir}/libtool/ + install -c config.guess ${D}${datadir}/libtool/ + install -c config.sub ${D}${datadir}/libtool/ + install -c -m 0644 ltmain.sh ${D}${datadir}/libtool/ + + install -d ${D}${datadir}/info/ + install -c -m 0644 doc/libtool.info ${D}${datadir}/info/ + + install -d ${D}${datadir}/aclocal/ + install -c -m 0645 libtool.m4 ${D}${datadir}/aclocal/ + install -c -m 0644 ltdl.m4 ${D}${datadir}/aclocal/ +} + diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb index 3ce2a31d9e..b6517999b0 100644 --- a/packages/meta/meta-toolchain.bb +++ b/packages/meta/meta-toolchain.bb @@ -138,6 +138,7 @@ do_populate_sdk() { script=${SDK_OUTPUT}/${prefix}/environment-setup touch $script echo 'export PATH=${prefix}/bin:$PATH' >> $script + echo 'export LIBTOOL_SYSROOT_PATH=${prefix}/${TARGET_SYS}' >> $script echo 'export PKG_CONFIG_SYSROOT_DIR=${prefix}/${TARGET_SYS}' >> $script echo 'export PKG_CONFIG_PATH=${prefix}/${TARGET_SYS}${layout_libdir}/pkgconfig' >> $script echo 'export CONFIG_SITE=${prefix}/site-config' >> $script diff --git a/packages/tasks/task-fso-toolchain-host.bb b/packages/tasks/task-fso-toolchain-host.bb index afb1ce830b..2b28de30e6 100644 --- a/packages/tasks/task-fso-toolchain-host.bb +++ b/packages/tasks/task-fso-toolchain-host.bb @@ -4,6 +4,6 @@ DESCRIPTION = "Packages for a standalone FSO SDK or external toolchain" LICENSE = "MIT" ALLOW_EMPTY = "1" -PR = "r0" +PR = "r1" PACKAGES = "${PN}" diff --git a/packages/tasks/task-openmoko-toolchain-host.bb b/packages/tasks/task-openmoko-toolchain-host.bb index 7f39d0ce76..7d4398b201 100644 --- a/packages/tasks/task-openmoko-toolchain-host.bb +++ b/packages/tasks/task-openmoko-toolchain-host.bb @@ -4,7 +4,7 @@ DESCRIPTION = "Packages for a standalone Openmoko SDK or external toolchain" LICENSE = "MIT" ALLOW_EMPTY = "1" -PR = "r1" +PR = "r2" PACKAGES = "${PN}" diff --git a/packages/tasks/task-sdk-host.bb b/packages/tasks/task-sdk-host.bb index a8ac3706c4..3707259453 100644 --- a/packages/tasks/task-sdk-host.bb +++ b/packages/tasks/task-sdk-host.bb @@ -3,7 +3,7 @@ # DESCRIPTION = "Host packages for the standalone SDK or external toolchain" -PR = "r2" +PR = "r3" LICENSE = "MIT" ALLOW_EMPTY = "1" @@ -17,4 +17,5 @@ RDEPENDS_${PN} = "\ gdb-cross-sdk \ pkgconfig-sdk \ opkg-sdk \ + libtool-sdk \ " diff --git a/packages/tasks/task-slugos-toolchain-host.bb b/packages/tasks/task-slugos-toolchain-host.bb index 7550301bfd..a688f10e42 100644 --- a/packages/tasks/task-slugos-toolchain-host.bb +++ b/packages/tasks/task-slugos-toolchain-host.bb @@ -1,5 +1,5 @@ require task-sdk-host.bb -PR = "r0" +PR = "r1" DESCRIPTION = "Packages for a standalone SlugOS external toolchain" ALLOW_EMPTY = "1" -- cgit v1.2.3 From 4057635c8f602b44f954b8181cd8746c06374bcf Mon Sep 17 00:00:00 2001 From: Julian_chu Date: Sun, 27 Jul 2008 22:56:58 +0800 Subject: autotools.bbclass: adding do_install_append() to autotools.bbclass This function is used to correct .la files. Many bb files use their own do_install so just adding this into the original autoclass_do_install won't work. This ensures the .la files contain correct path. --- classes/autotools.bbclass | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index adb57f6cc9..fd8687ebb6 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -142,13 +142,20 @@ autotools_do_configure() { autotools_do_install() { oe_runmake 'DESTDIR=${D}' install +} +do_install_append() { for i in `find ${D} -name "*.la"` ; do \ - sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i - sed -i -e s:${D}::g $i - sed -i -e 's:-I${WORKDIR}\S*: :g' $i - sed -i -e 's:-L${WORKDIR}\S*: :g' $i - done + sed -i -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${libdir}/\1,g' $i + sed -i -e s:${CROSS_DIR}/${HOST_SYS}::g $i + sed -i -e s:${CROSS_DIR}::g $i + sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i + sed -i -e s:${STAGING_DIR_HOST}::g $i + sed -i -e s:${STAGING_DIR}::g $i + sed -i -e s:${S}::g $i + sed -i -e s:${T}::g $i + sed -i -e s:${D}::g $i + done } STAGE_TEMP="${WORKDIR}/temp-staging" -- cgit v1.2.3