[oe-commits] Denys Dmytriyenko : external-toolchain-csl: auto-package CSL toolchain of any version

git version control git at git.openembedded.org
Wed Oct 14 20:34:57 UTC 2009


Module: openembedded.git
Branch: shr/merge
Commit: 2512ba21856d0ffd942ddd3a7c834d585a117ff1
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=2512ba21856d0ffd942ddd3a7c834d585a117ff1

Author: Denys Dmytriyenko <denis at denix.org>
Date:   Fri Sep  4 02:20:54 2009 -0400

external-toolchain-csl: auto-package CSL toolchain of any version

Signed-off-by: Koen Kooi <koen at openembedded.org>

---

 recipes/meta/external-toolchain-csl.bb |  235 ++++++++++++++++++++++++++++++++
 1 files changed, 235 insertions(+), 0 deletions(-)

diff --git a/recipes/meta/external-toolchain-csl.bb b/recipes/meta/external-toolchain-csl.bb
new file mode 100644
index 0000000..051b832
--- /dev/null
+++ b/recipes/meta/external-toolchain-csl.bb
@@ -0,0 +1,235 @@
+PR = "r1"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+INSANE_SKIP_libgcc = True
+INSANE_SKIP_libstdc++ = True
+INSANE_SKIP_nscd = True
+INSANE_SKIP_glibc-utils = True
+
+PROVIDES = "\
+	virtual/${TARGET_PREFIX}gcc \
+	virtual/${TARGET_PREFIX}g++ \
+	virtual/${TARGET_PREFIX}gcc-initial \
+	virtual/${TARGET_PREFIX}gcc-intermediate \
+	virtual/${TARGET_PREFIX}binutils \
+	virtual/${TARGET_PREFIX}libc-for-gcc \
+	virtual/${TARGET_PREFIX}libc-initial \
+	virtual/libc \
+	virtual/libintl \
+	virtual/libiconv \
+	glibc-thread-db \
+	linux-libc-headers \
+"
+
+#	virtual/linux-libc-headers \
+
+RPROVIDES = "glibc-utils libsegfault glibc-thread-db"
+RPROVIDES_glibc-dev += "libc-dev"
+
+LEAD_SONAME = "libc.so.6"
+
+PACKAGES = "\
+	libgcc \
+	libgcc-dev \
+	libstdc++ \
+	libstdc++-dev \
+	linux-libc-headers \
+	glibc-dbg \
+	glibc \
+	catchsegv \
+	sln \
+	nscd \
+	ldd \
+	localedef \
+	glibc-utils \
+	glibc-dev \
+	libsegfault \
+	glibc-extra-nss \
+	glibc-thread-db \
+	glibc-pcprofile \
+"
+
+FILES_glibc = "\
+	${sysconfdir} \
+	${libexecdir}/* \
+	${datadir}/zoneinfo \
+	/lib/libc* \
+	/lib/libm* \
+	/lib/ld* \
+	/lib/libpthread* \
+	/lib/libresolv* \
+	/lib/librt* \
+	/lib/libutil* \
+	/lib/libnsl* \
+	/lib/libnss_files* \
+	/lib/libnss_compat* \
+	/lib/libnss_dns* \
+	/lib/libdl* \
+	/lib/libanl* \
+	/lib/libBrokenLocale* \
+	/sbin/ldconfig \
+"
+
+FILES_glibc-dev = "\
+	${includedir} \
+	${libdir}/*.o \
+	${bindir}/rpcgen \
+	${libdir}/*.so \
+	${libdir}/*.a \
+"
+
+FILES_glibc-dbg += " ${libdir}/gconv/.debug ${libexecdir}/*/.debug ${base_libdir}/.debug ${libdir}/.debug"
+FILES_glibc-utils = "${bindir}/* ${sbindir}/*"
+FILES_glibc-extra-nss = "/lib/libnss*"
+FILES_glibc-gconv = "${libdir}/gconv/*"
+FILES_glibc-pcprofile = "/lib/libpcprofile.so"
+FILES_glibc-thread-db = "/lib/libthread_db*"
+
+FILES_libgcc = "${base_libdir}/libgcc_s.so.1"
+FILES_libgcc-dev = "${base_libdir}/libgcc_s.so"
+
+FILES_libstdc++ = "${libdir}/libstdc++.so.*"
+FILES_libstdc++-dev = "\
+	${includedir}/c++/* \
+	${libdir}/libstdc++.so \
+	${libdir}/libstdc++.la \
+	${libdir}/libstdc++.a \
+	${libdir}/libsupc++.la \
+	${libdir}/libsupc++.a \
+"
+
+FILES_linux-libc-headers = "\
+	${includedir}/asm* \
+	${includedir}/linux \
+	${includedir}/mtd \
+	${includedir}/rdma \
+	${includedir}/scsi \
+	${includedir}/sound \
+	${includedir}/video \
+"
+
+FILES_libsegfault = "/lib/libSegFault*"
+FILES_catchsegv = "${bindir}/catchsegv"
+RDEPENDS_catchsegv = "libsegfault"
+
+FILES_ldd = "${bindir}/ldd"
+FILES_nscd = "${sbindir}/nscd*"
+FILES_sln = "${base_sbindir}/sln"
+FILES_localedef = "${bindir}/localedef"
+
+DESCRIPTION_glibc-utils = "glibc: misc utilities like iconf, local, gencat, tzselect, rpcinfo, ..."
+DESCRIPTION_glibc-extra-nss = "glibc: nis, nisplus and hesiod search services"
+DESCRIPTION_ldd = "glibc: print shared library dependencies"
+DESCRIPTION_nscd = "glibc: name service cache daemon for passwd, group, and hosts"
+DESCRIPTION_sln = "glibc: create symbolic links between files"
+DESCRIPTION_localedef = "glibc: compile locale definition files"
+
+def csl_get_main_version(d):
+	import subprocess,bb
+	return subprocess.Popen([bb.data.getVar('TOOLCHAIN_PATH', d, 1)+'/bin/'+bb.data.getVar('TARGET_PREFIX', d, 1)+'gcc', '-v'], stderr=subprocess.PIPE).communicate()[1].splitlines()[-1].split()[-1].rstrip(')')
+
+def csl_get_gcc_version(d):
+	import subprocess,bb
+	return subprocess.Popen([bb.data.getVar('TOOLCHAIN_PATH', d, 1)+'/bin/'+bb.data.getVar('TARGET_PREFIX', d, 1)+'gcc', '-v'], stderr=subprocess.PIPE).communicate()[1].splitlines()[-1].split()[2]
+
+def csl_get_libc_version(d):
+	import os,bb
+	for file in os.listdir(bb.data.getVar('TOOLCHAIN_SYSPATH', d, 1)+'/libc/lib/'):
+		if file.find('libc-') == 0:
+			return file[5:-3]
+	return None
+
+def csl_get_kernel_version(d):
+	import os,bb
+	f = open(bb.data.getVar('TOOLCHAIN_SYSPATH', d, 1)+'/libc/usr/include/linux/version.h', 'r')
+	l = f.readlines();
+	f.close();
+	for s in l:
+		if s.find('LINUX_VERSION_CODE') > 0:
+			ver = int(s.split()[2])
+			maj = ver / 65536
+			ver = ver % 65536
+			min = ver / 256
+			ver = ver % 256
+			return str(maj)+'.'+str(min)+'.'+str(ver)
+	return None
+
+CSL_VER_MAIN := "${@csl_get_main_version(d)}"
+CSL_VER_GCC := "${@csl_get_gcc_version(d)}"
+CSL_VER_LIBC := "${@csl_get_libc_version(d)}"
+CSL_VER_KERNEL := "${@csl_get_kernel_version(d)}"
+
+PV = ${CSL_VER_MAIN}
+PV_libgcc = ${CSL_VER_GCC}
+PV_libgcc-dev = ${CSL_VER_GCC}
+PV_libstdc++ = ${CSL_VER_GCC}
+PV_libstdc++-dev = ${CSL_VER_GCC}
+PV_libc = ${CSL_VER_LIBC}
+PV_glibc = ${CSL_VER_LIBC}
+PV_glibc-dev = ${CSL_VER_LIBC}
+PV_glibc-dbg = ${CSL_VER_LIBC}
+PV_glibc-utils = ${CSL_VER_LIBC}
+PV_glibc-extra-nss = ${CSL_VER_LIBC}
+PV_glibc-thread-db = ${CSL_VER_LIBC}
+PV_glibc-pcprofile = ${CSL_VER_LIBC}
+PV_catchsegv = ${CSL_VER_LIBC}
+PV_sln = ${CSL_VER_LIBC}
+PV_nscd = ${CSL_VER_LIBC}
+PV_ldd = ${CSL_VER_LIBC}
+PV_localedef = ${CSL_VER_LIBC}
+PV_libsegfault = ${CSL_VER_LIBC}
+PV_linux-libc-headers = ${CSL_VER_KERNEL}
+
+do_unpack() {
+	:
+}
+
+do_install() {
+	install -d ${D}${sysconfdir}
+	install -d ${D}${bindir}
+	install -d ${D}${sbindir}
+	install -d ${D}${base_bindir}
+	install -d ${D}${libdir}
+	install -d ${D}${base_libdir}
+	install -d ${D}${base_sbindir}
+	install -d ${D}${datadir}
+
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/libc/lib/* ${D}${base_libdir}
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/libc/etc/* ${D}${sysconfdir}
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/libc/sbin/* ${D}${base_sbindir}
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/libc/usr/* ${D}/usr
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/include/* ${D}/usr/include
+	rm -rf ${D}${datadir}/locale
+	rm -rf ${D}${datadir}/i18n
+	rm -rf ${D}${libdir}/locale
+	rm -rf ${D}${libdir}/gconv
+	rm -rf ${D}${bindir}/gdbserver
+	rm -rf ${D}${sysconfdir}/rpc
+	rm -rf ${D}${datadir}/zoneinfo
+}
+
+do_stage() {
+	install -d ${STAGING_INCDIR}
+	install -d ${STAGING_LIBDIR}
+	install -d ${STAGING_DIR_TARGET}${base_libdir}
+
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/libc/usr/include/* ${STAGING_INCDIR}
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/include/* ${STAGING_INCDIR}
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/libc/usr/lib/* ${STAGING_LIBDIR}
+	cp -a ${TOOLCHAIN_PATH}/${TARGET_SYS}/libc/lib/* ${STAGING_DIR_TARGET}${base_libdir}
+
+	sed -e "s# /lib# ../../lib#g" -e "s# /usr/lib# .#g" ${STAGING_LIBDIR}/libc.so > ${STAGING_LIBDIR}/temp
+	mv ${STAGING_LIBDIR}/temp ${STAGING_LIBDIR}/libc.so
+
+	sed -e "s# /lib# ../../lib#" -e "s# /usr/lib# .#g" ${STAGING_LIBDIR}/libpthread.so > ${STAGING_LIBDIR}/temp
+	mv ${STAGING_LIBDIR}/temp ${STAGING_LIBDIR}/libpthread.so
+}
+
+python populate_packages_prepend () {
+	if bb.data.getVar('DEBIAN_NAMES', d, 1):
+		bb.data.setVar('PKG_glibc', 'libc6', d)
+		bb.data.setVar('PKG_glibc-dev', 'libc6-dev', d)
+		bb.data.setVar('PKG_libgcc', 'libgcc1', d)
+		bb.data.setVar('PKG_libgcc-dev', 'libgcc1-dev', d)
+}





More information about the Openembedded-commits mailing list