summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
authorRobert Schuster <thebohemian@gmx.net>2008-03-04 16:46:11 +0000
committerRobert Schuster <thebohemian@gmx.net>2008-03-04 16:46:11 +0000
commitba69123b245d6244b756a07f7118bfb11acb47f0 (patch)
tree6c0f87cbb91fb142e9b748fdc2628e8390f5edd0 /classes
parent25fe9599d951a3de39a2e8983810f2c6a40d74b0 (diff)
parentb1fbc8c1b11f8c30bf327b4605defac0a3d47457 (diff)
merge of '1d06736abd89e6b42d2eaf5918fcd17ad518fcb3'
and '3601bc2cdb1e980ccaf4f1de781d948df8d45545'
Diffstat (limited to 'classes')
-rw-r--r--classes/base.bbclass2
-rw-r--r--classes/distutils-base.bbclass15
-rw-r--r--classes/distutils.bbclass7
-rw-r--r--classes/insane.bbclass11
-rw-r--r--classes/mono.bbclass9
-rw-r--r--classes/native.bbclass47
-rw-r--r--classes/package.bbclass2
-rw-r--r--classes/package_deb.bbclass4
-rw-r--r--classes/package_ipk.bbclass4
-rw-r--r--classes/pkgconfig.bbclass30
-rw-r--r--classes/qt3e.bbclass4
-rw-r--r--classes/qt3x11.bbclass2
-rw-r--r--classes/rootfs_deb.bbclass8
-rw-r--r--classes/sdk.bbclass12
-rw-r--r--classes/sip.bbclass2
-rw-r--r--classes/sip3.bbclass2
-rw-r--r--classes/testlab.bbclass65
17 files changed, 137 insertions, 89 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 089cd5acd3..7609c05851 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -544,7 +544,7 @@ def oe_unpack_file(file, data, url = None):
cmd = 'tar x --no-same-owner -f %s' % file
elif file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
cmd = 'tar xz --no-same-owner -f %s' % file
- elif file.endswith('.tbz') or file.endswith('.tar.bz2'):
+ elif file.endswith('.tbz') or file.endswith('.tbz2') or file.endswith('.tar.bz2'):
cmd = 'bzip2 -dc %s | tar x --no-same-owner -f -' % file
elif file.endswith('.gz') or file.endswith('.Z') or file.endswith('.z'):
cmd = 'gzip -dc %s > %s' % (file, efile)
diff --git a/classes/distutils-base.bbclass b/classes/distutils-base.bbclass
index 5150be76b9..c4551ace83 100644
--- a/classes/distutils-base.bbclass
+++ b/classes/distutils-base.bbclass
@@ -11,8 +11,17 @@ def python_dir(d):
raise "No Python in STAGING_INCDIR. Forgot to build python-native ?"
PYTHON_DIR = "${@python_dir(d)}"
+
+PACKAGES = "${PN}-dev ${PN}-dbg ${PN}-doc ${PN}"
+
FILES_${PN} = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"
-FILES_${PN}-dbg = "${libdir}/${PYTHON_DIR}/site-packages/.debug \
- ${libdir}/${PYTHON_DIR}/site-packages/*/.debug \
- ${libdir}/${PYTHON_DIR}/site-packages/*/*/.debug"
+FILES_${PN}-dev += "\
+ ${libdir}/pkgconfig \
+ ${libdir}/${PYTHON_DIR}/site-packages/*.la \
+"
+FILES_${PN}-dbg = "\
+ ${libdir}/${PYTHON_DIR}/site-packages/.debug \
+ ${libdir}/${PYTHON_DIR}/site-packages/*/.debug \
+ ${libdir}/${PYTHON_DIR}/site-packages/*/*/.debug \
+"
diff --git a/classes/distutils.bbclass b/classes/distutils.bbclass
index 18aee09a26..fa34565eaf 100644
--- a/classes/distutils.bbclass
+++ b/classes/distutils.bbclass
@@ -13,16 +13,15 @@ distutils_do_compile() {
}
distutils_stage_headers() {
- install -d ${STAGING_DIR_HOST}${layout_prefix}/lib/${PYTHON_DIR}/site-packages
+ install -d ${STAGING_DIR_HOST}${layout_libdir}/${PYTHON_DIR}/site-packages
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
oefatal "python setup.py install_headers execution failed."
}
distutils_stage_all() {
- install -d ${STAGING_DIR_HOST}${layout_prefix}/lib/${PYTHON_DIR}/site-packages
- # is this missing a lib below?
- PYTHONPATH=${STAGING_DIR_HOST}${layout_prefix}/${PYTHON_DIR}/site-packages \
+ install -d ${STAGING_DIR_HOST}${layout_libdir}/${PYTHON_DIR}/site-packages
+ PYTHONPATH=${STAGING_DIR_HOST}${layout_libdir}/${PYTHON_DIR}/site-packages \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
oefatal "python setup.py install (stage) execution failed."
diff --git a/classes/insane.bbclass b/classes/insane.bbclass
index 97cf036dd9..5ff49cd65e 100644
--- a/classes/insane.bbclass
+++ b/classes/insane.bbclass
@@ -333,12 +333,15 @@ def package_qa_check_staged(path,d):
import os, bb
sane = True
- workdir = os.path.join(bb.data.getVar('TMPDIR', d, True), "work")
+ tmpdir = bb.data.getVar('TMPDIR', d, True)
+ workdir = os.path.join(tmpdir, "work")
- if bb.data.inherits_class("native", d):
+ if bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d):
installed = "installed=no"
+ pkgconfigcheck = workdir
else:
installed = "installed=yes"
+ pkgconfigcheck = tmpdir
# find all .la and .pc files
# read the content
@@ -356,8 +359,8 @@ def package_qa_check_staged(path,d):
sane = package_qa_handle_error(8, error_msg, "staging", path, d)
elif file[-2:] == "pc":
file_content = open(path).read()
- if workdir in file_content:
- error_msg = "%s failed sanity test (workdir) in path %s" % (file,root)
+ if pkgconfigcheck in file_content:
+ error_msg = "%s failed sanity test (tmpdir) in path %s" % (file,root)
sane = package_qa_handle_error(6, error_msg, "staging", path, d)
return sane
diff --git a/classes/mono.bbclass b/classes/mono.bbclass
index ccb16d9acc..cf8dd15bdf 100644
--- a/classes/mono.bbclass
+++ b/classes/mono.bbclass
@@ -52,6 +52,8 @@ def mono_find_provides_and_requires(files, d):
requires = [e for e in requires if not e in provides]
return provides, requires
+CLILIBSDIR = "${STAGING_DIR_HOST}/clilibs"
+
python mono_do_clilibs() {
import bb, os, re, os.path
@@ -70,14 +72,9 @@ python mono_do_clilibs() {
bb.error("WORKDIR not defined")
return
- staging = bb.data.getVar('STAGING_DIR', d, 1)
- if not staging:
- bb.error("STAGING_DIR not defined")
- return
-
pkgdest = bb.data.getVar('PKGDEST', d, 1)
- clilibs_dir = os.path.join(staging, "clilibs")
+ clilibs_dir = bb.data.getVar('CLILIBSDIR', d, 1)
bb.mkdirhier(clilibs_dir)
provides, requires = {}, {}
diff --git a/classes/native.bbclass b/classes/native.bbclass
index 934303cc0c..8f2b6f3fec 100644
--- a/classes/native.bbclass
+++ b/classes/native.bbclass
@@ -47,39 +47,33 @@ export AS = "${HOST_PREFIX}as"
export RANLIB = "${HOST_PREFIX}ranlib"
export STRIP = "${HOST_PREFIX}strip"
-
# Path prefixes
-base_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}"
-prefix = "${base_prefix}"
-exec_prefix = "${base_prefix}"
+export base_prefix = "${STAGING_DIR_NATIVE}"
+export prefix = "${STAGING_DIR_NATIVE}${layout_prefix}"
+export exec_prefix = "${STAGING_DIR_NATIVE}${layout_exec_prefix}"
# Base paths
-base_bindir = "${base_prefix}/bin"
-base_sbindir = "${base_prefix}/bin"
-base_libdir = "${base_prefix}/lib"
+export base_bindir = "${STAGING_DIR_NATIVE}${layout_base_bindir}"
+export base_sbindir = "${STAGING_DIR_NATIVE}${layout_base_sbindir}"
+export base_libdir = "${STAGING_DIR_NATIVE}${layout_base_libdir}"
# Architecture independent paths
-sysconfdir = "${prefix}/etc"
-sharedstatedir = "${prefix}/com"
-localstatedir = "${prefix}/var"
-infodir = "${datadir}/info"
-mandir = "${datadir}/man"
-docdir = "${datadir}/doc"
-servicedir = "${prefix}/srv"
+export datadir = "${STAGING_DIR_NATIVE}${layout_datadir}"
+export sysconfdir = "${STAGING_DIR_NATIVE}${layout_sysconfdir}"
+export sharedstatedir = "${STAGING_DIR_NATIVE}${layout_sharedstatedir}"
+export localstatedir = "${STAGING_DIR_NATIVE}${layout_localstatedir}"
+export infodir = "${STAGING_DIR_NATIVE}${layout_infodir}"
+export mandir = "${STAGING_DIR_NATIVE}${layout_mandir}"
+export docdir = "${STAGING_DIR_NATIVE}${layout_docdir}"
+export servicedir = "${STAGING_DIR_NATIVE}${layout_servicedir}"
# Architecture dependent paths
-bindir = "${exec_prefix}/bin"
-sbindir = "${exec_prefix}/bin"
-libexecdir = "${exec_prefix}/libexec"
-libdir = "${exec_prefix}/lib"
-includedir = "${exec_prefix}/include"
-oldincludedir = "${exec_prefix}/include"
-
-# Datadir is made arch dependent here, primarily
-# for autoconf macros, and other things that
-# may be manipulated to handle crosscompilation
-# issues.
-datadir = "${exec_prefix}/share"
+export bindir = "${STAGING_DIR_NATIVE}${layout_bindir}"
+export sbindir = "${STAGING_DIR_NATIVE}${layout_sbindir}"
+export libexecdir = "${STAGING_DIR_NATIVE}${layout_libexecdir}"
+export libdir = "${STAGING_DIR_NATIVE}${layout_libdir}"
+export includedir = "${STAGING_DIR_NATIVE}${layout_includedir}"
+export oldincludedir = "${STAGING_DIR_NATIVE}${layout_includedir}"
do_stage () {
if [ "${INHIBIT_NATIVE_STAGE_INSTALL}" != "1" ]
@@ -93,3 +87,4 @@ do_install () {
}
PKG_CONFIG_PATH .= "${EXTRA_NATIVE_PKGCONFIG_PATH}"
+PKG_CONFIG_SYSROOT_DIR = ""
diff --git a/classes/package.bbclass b/classes/package.bbclass
index cb4417fc7f..325c0b52f5 100644
--- a/classes/package.bbclass
+++ b/classes/package.bbclass
@@ -519,7 +519,7 @@ if [ x"$D" = "x" ]; then
fi
}
-SHLIBSDIR = "${STAGING_DIR}/${HOST_SYS}/shlibs"
+SHLIBSDIR = "${STAGING_DIR_HOST}/shlibs"
python package_do_shlibs() {
import os, re, os.path
diff --git a/classes/package_deb.bbclass b/classes/package_deb.bbclass
index 1a3622c3bb..22b6166685 100644
--- a/classes/package_deb.bbclass
+++ b/classes/package_deb.bbclass
@@ -28,7 +28,7 @@ python do_package_deb_install () {
pkgfn = bb.data.getVar('PKGFN', d, 1)
rootfs = bb.data.getVar('IMAGE_ROOTFS', d, 1)
debdir = bb.data.getVar('DEPLOY_DIR_DEB', d, 1)
- stagingdir = bb.data.getVar('STAGING_DIR', d, 1)
+ apt_config = bb.data.expand('${STAGING_ETCDIR_NATIVE}/apt/apt.conf', d)
stagingbindir = bb.data.getVar('STAGING_BINDIR_NATIVE', d, 1)
tmpdir = bb.data.getVar('TMPDIR', d, 1)
@@ -55,7 +55,7 @@ python do_package_deb_install () {
# Set up environment
apt_config_backup = os.getenv('APT_CONFIG')
- os.putenv('APT_CONFIG', os.path.join(stagingdir, 'etc', 'apt', 'apt.conf'))
+ os.putenv('APT_CONFIG', apt_config)
path = os.getenv('PATH')
os.putenv('PATH', '%s:%s' % (stagingbindir, os.getenv('PATH')))
diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass
index de7f0fe0c4..2feaeba3b3 100644
--- a/classes/package_ipk.bbclass
+++ b/classes/package_ipk.bbclass
@@ -12,6 +12,10 @@ python package_ipk_fn () {
}
python package_ipk_install () {
+ #
+ # Warning - this function is not multimachine safe (see stagingdir reference)!
+ #
+
import os, sys
pkg = bb.data.getVar('PKG', d, 1)
pkgfn = bb.data.getVar('PKGFN', d, 1)
diff --git a/classes/pkgconfig.bbclass b/classes/pkgconfig.bbclass
index d2176d8b39..d65f8a6253 100644
--- a/classes/pkgconfig.bbclass
+++ b/classes/pkgconfig.bbclass
@@ -2,36 +2,10 @@ inherit base
DEPENDS_prepend = "pkgconfig-native "
-# The namespaces can clash here hence the two step replace
-def get_pkgconfig_mangle(d):
- import bb.data
- s = "-e ''"
- if not bb.data.inherits_class('native', d):
- s += " -e 's:=${libdir}:=OELIBDIR:;'"
- s += " -e 's:=${includedir}:=OEINCDIR:;'"
- s += " -e 's:=${datadir}:=OEDATADIR:'"
- s += " -e 's:=${prefix}:=OEPREFIX:'"
- s += " -e 's:=${exec_prefix}:=OEEXECPREFIX:'"
- s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'"
- s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'"
- s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'"
- s += " -e 's:OEPREFIX:${STAGING_DIR_HOST}${layout_prefix}:'"
- s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${layout_exec_prefix}:'"
- s += " -e 's:-L${WORKDIR}\S*: :g'"
- s += " -e 's:-I${WORKDIR}\S*: :g'"
-
- return s
-
-do_install_append () {
- for pc in `find ${D} -name '*.pc' -type f | grep -v -- '-uninstalled.pc$'`; do
- sed -i ${@get_pkgconfig_mangle(d)} -e 's:${D}::g' -e 's:${STAGING_LIBDIR}:${libdir}:g' -e 's:${STAGING_INCDIR}:${includedir}:g' -e 's:${STAGING_DIR_TARGET}:${prefix}:g' ${pc}
- done
-}
-
do_stage_append () {
+ install -d ${PKG_CONFIG_DIR}
for pc in `find ${S} -name '*.pc' -type f | grep -v -- '-uninstalled.pc$'`; do
pcname=`basename $pc`
- install -d ${PKG_CONFIG_DIR}
- cat $pc | sed ${@get_pkgconfig_mangle(d)} -e 's:${D}${libdir}\S*:${STAGING_LIBDIR}:g' -e 's:${D}${prefix}/include\S*:${STAGING_INCDIR}:g' > ${PKG_CONFIG_DIR}/$pcname
+ cat $pc > ${PKG_CONFIG_DIR}/$pcname
done
}
diff --git a/classes/qt3e.bbclass b/classes/qt3e.bbclass
index 98c47adb90..35958b34ab 100644
--- a/classes/qt3e.bbclass
+++ b/classes/qt3e.bbclass
@@ -1,8 +1,8 @@
#
# override variables set by qmake_base to compile Qt/X11 apps
#
-export QTDIR="${STAGING_DIR}/${HOST_SYS}/qte3"
-export QTEDIR="${STAGING_DIR}/${HOST_SYS}/qte3"
+export QTDIR="${STAGING_DIR_HOST}/qte3"
+export QTEDIR="${STAGING_DIR_HOST}/qte3"
export OE_QMAKE_UIC="${STAGING_BINDIR_NATIVE}/uic3"
export OE_QMAKE_MOC="${STAGING_BINDIR_NATIVE}/moc3"
export OE_QMAKE_CXXFLAGS="${CXXFLAGS} "
diff --git a/classes/qt3x11.bbclass b/classes/qt3x11.bbclass
index 67f2cf7348..5408b7f342 100644
--- a/classes/qt3x11.bbclass
+++ b/classes/qt3x11.bbclass
@@ -3,7 +3,7 @@ EXTRA_QMAKEVARS_POST += "CONFIG+=thread"
#
# override variables set by qmake_base to compile Qt/X11 apps
#
-export QTDIR = "${STAGING_DIR}/${HOST_SYS}/qt3"
+export QTDIR = "${STAGING_DIR_HOST}/qt3"
export OE_QMAKE_UIC = "${STAGING_BINDIR_NATIVE}/uic3"
export OE_QMAKE_MOC = "${STAGING_BINDIR_NATIVE}/moc3"
export OE_QMAKE_CXXFLAGS = "${CXXFLAGS} -DQT_NO_XIM"
diff --git a/classes/rootfs_deb.bbclass b/classes/rootfs_deb.bbclass
index c2c4a764e4..5237285e4c 100644
--- a/classes/rootfs_deb.bbclass
+++ b/classes/rootfs_deb.bbclass
@@ -10,12 +10,8 @@ fakeroot rootfs_deb_do_rootfs () {
mkdir -p ${IMAGE_ROOTFS}/var/dpkg/info
mkdir -p ${IMAGE_ROOTFS}/var/dpkg/updates
- mkdir -p ${STAGING_ETCDIR_NATIVE}/apt/
-
rm -f ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
rm -f ${STAGING_ETCDIR_NATIVE}/apt/preferences
- > ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev
- > ${STAGING_ETCDIR_NATIVE}/apt/preferences
> ${IMAGE_ROOTFS}/var/dpkg/status
> ${IMAGE_ROOTFS}/var/dpkg/available
# > ${STAGING_DIR}/var/dpkg/status
@@ -40,9 +36,9 @@ fakeroot rootfs_deb_do_rootfs () {
priority=$(expr $priority + 5)
done
- tac ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev > ${STAGING_DIR}/etc/apt/sources.list
+ tac ${STAGING_ETCDIR_NATIVE}/apt/sources.list.rev > ${STAGING_ETCDIR_NATIVE}/apt/sources.list
- cat "${STAGING_DIR}/etc/apt/apt.conf.sample" \
+ cat "${STAGING_ETCDIR_NATIVE}/apt/apt.conf.sample" \
| sed -e 's#Architecture ".*";#Architecture "${TARGET_ARCH}";#' \
> "${STAGING_ETCDIR_NATIVE}/apt/apt-rootfs.conf"
diff --git a/classes/sdk.bbclass b/classes/sdk.bbclass
index 63f12117eb..71c65a1629 100644
--- a/classes/sdk.bbclass
+++ b/classes/sdk.bbclass
@@ -6,15 +6,16 @@ OLD_PACKAGE_ARCH := ${PACKAGE_ARCH}
PACKAGE_ARCH = "${BUILD_ARCH}-${OLD_PACKAGE_ARCH}-sdk"
HOST_ARCH = "${BUILD_ARCH}"
-HOST_VENDOR = "${BUILD_VENDOR}"
+# This isn't BUILD_VENDOR since we don't want to clash with native staging
+HOST_VENDOR = "${TARGET_VENDOR}"
HOST_OS = "${BUILD_OS}"
HOST_PREFIX = "${BUILD_PREFIX}"
HOST_CC_ARCH = "${BUILD_CC_ARCH}"
-CPPFLAGS = "${BUILD_CPPFLAGS}"
-CFLAGS = "${BUILD_CFLAGS}"
-CXXFLAGS = "${BUILD_CFLAGS}"
-LDFLAGS = "${BUILD_LDFLAGS}"
+CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
+CFLAGS = "${BUILDSDK_CFLAGS}"
+CXXFLAGS = "${BUILDSDK_CFLAGS}"
+LDFLAGS = "${BUILDSDK_LDFLAGS}"
# Path prefixes
prefix = "${SDK_PREFIX}"
@@ -49,3 +50,4 @@ FILES_${PN}-dbg += "${prefix}/.debug \
${prefix}/bin/.debug \
"
+export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${HOST_SYS}"
diff --git a/classes/sip.bbclass b/classes/sip.bbclass
index ae186bd04a..30c08b1ed9 100644
--- a/classes/sip.bbclass
+++ b/classes/sip.bbclass
@@ -55,6 +55,8 @@ sip_do_generate() {
done
}
+do_generate[deptask] = "do_populate_staging"
+
EXPORT_FUNCTIONS do_generate
addtask generate after do_unpack do_patch before do_configure
diff --git a/classes/sip3.bbclass b/classes/sip3.bbclass
index 1dd42ba86b..7ecc63bf02 100644
--- a/classes/sip3.bbclass
+++ b/classes/sip3.bbclass
@@ -53,6 +53,8 @@ sip3_do_generate() {
done
}
+do_generate[deptask] = "do_populate_staging"
+
EXPORT_FUNCTIONS do_generate
addtask generate after do_unpack do_patch before do_configure
diff --git a/classes/testlab.bbclass b/classes/testlab.bbclass
new file mode 100644
index 0000000000..5a88f3de62
--- /dev/null
+++ b/classes/testlab.bbclass
@@ -0,0 +1,65 @@
+#
+# Performs various tests and analysises on images
+#
+# Copyright (C) 2007, 2008 Koen Kooi <koen@openembedded.org>
+
+# The current features are:
+# 1) dump a list of installed packages
+# 2) dump a list of sizes of installed packages
+# 3) dependency graphs of installed packages
+
+# See
+# * http://dominion.thruhere.net/koen/cms/the-testlab-strikes-again
+# * http://dominion.thruhere.net/koen/cms/package-relations-inside-images
+# for use cases
+
+# TODO:
+# * log information to a server for safekeeping
+# * use mtn certs to record this info into the scm
+# * add test suite to run on the target device
+
+
+# Needs 'dot', 'ipkg-cl'
+
+do_testlab() {
+if [ -e ${IMAGE_ROOTFS}/etc/ipkg ] ; then
+
+ TESTLAB_DIR="${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-testlab"
+ mkdir -p ${TESTLAB_DIR}/
+ ls -laR ${IMAGE_ROOTFS} >& ${TESTLAB_DIR}/files-in-image.txt
+
+ echo > ${TESTLAB_DIR}/installed-packages.txt
+ echo -e "digraph depends {\n node [shape=plaintext]" > ${TESTLAB_DIR}/depends.dot
+
+ for pkg in $(ipkg-cl -f ${IMAGE_ROOTFS}/etc/ipkg -o ${IMAGE_ROOTFS} list_installed | awk '{print $1}') ; do
+ ipkg-cl -f ${IMAGE_ROOTFS}/etc/ipkg -o ${IMAGE_ROOTFS} info $pkg | grep Filename | awk -F: '{print $2}' >> ${TESTLAB_DIR}/installed-packages.txt
+
+ for depends in $(ipkg-cl -f ${IMAGE_ROOTFS}/etc/ipkg -o ${IMAGE_ROOTFS} info $pkg | grep Depends) ; do
+ echo "$pkg OPP $depends;" | grep -v "(" | grep -v ")" | grep -v Depends | sed -e 's:,::g' -e 's:-:_:g' -e 's:\.:_:g' -e 's:+::g' |sed 's:OPP:->:g' >> ${TESTLAB_DIR}/depends.dot
+ done
+
+ for recommends in $(ipkg-cl -f ${IMAGE_ROOTFS}/etc/ipkg -o ${IMAGE_ROOTFS} info $pkg | grep Recom) ; do
+ echo "$pkg OPP $recommends [style=dotted];" | grep -v "(" | grep -v ")" | grep -v Recom | sed -e 's:,::g' -e 's:-:_:g' -e 's:\.:_:g' -e 's:+::g' |sed 's:OPP:->:g' >> ${TESTLAB_DIR}/depends.dot
+ done
+ done
+
+ echo "}" >> ${TESTLAB_DIR}/depends.dot
+
+ grep -v kernel_2 ${TESTLAB_DIR}/depends.dot | grep -v kernel_image > ${TESTLAB_DIR}/depends-nokernel.dot
+ grep -v libc6 ${TESTLAB_DIR}/depends-nokernel.dot | grep -v libgcc > ${TESTLAB_DIR}/depends-nokernel-nolibc.dot
+ grep -v update_ ${TESTLAB_DIR}/depends-nokernel-nolibc.dot > ${TESTLAB_DIR}/depends-nokernel-nolibc-noupdate.dot
+ grep -v kernel_module ${TESTLAB_DIR}/depends-nokernel-nolibc-noupdate.dot > ${TESTLAB_DIR}/depends-nokernel-nolibc-noupdate-nomodules.dot
+
+ #dot has some library troubles when run under fakeroot, uncomment at your own risk
+ #dot -Tpng -o ${TESTLAB_DIR}/image-dependencies.png ${TESTLAB_DIR}/depends.dot
+ #dot -Tpng -o ${TESTLAB_DIR}/image-dependencies-nokernel-nolibc.png ${TESTLAB_DIR}/depends-nokernel-nolibc.dot
+ #dot -Tpng -o ${TESTLAB_DIR}/image-dependencies-nokernel-nolibc-noupdate.png ${TESTLAB_DIR}/depends-nokernel-nolibc-noupdate.dot
+ #dot -Tpng -o ${TESTLAB_DIR}/image-dependencies-nokernel-nolibc-noupdate-nomodules.png ${TESTLAB_DIR}/depends-nokernel-nolibc-noupdate-nomodules.dot
+
+ for file in $(cat ${TESTLAB_DIR}/installed-packages.txt) ; do
+ du -k $(find ${DEPLOY_DIR_IPK} -name "$file")
+ done | grep "\.ipk" | sed -e s:${DEPLOY_DIR_IPK}::g | sort -n -r | awk '{print $1 "\tKiB " $2}' > ${TESTLAB_DIR}/installed-package-sizes.txt
+fi
+}
+
+IMAGE_POSTPROCESS_COMMAND += " do_testlab ;"