summaryrefslogtreecommitdiff
path: root/classes/testlab.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/testlab.bbclass')
-rw-r--r--classes/testlab.bbclass65
1 files changed, 65 insertions, 0 deletions
diff --git a/classes/testlab.bbclass b/classes/testlab.bbclass
new file mode 100644
index 0000000000..fc923c5112
--- /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', 'opkg-cl'
+
+do_testlab() {
+if [ -e ${IMAGE_ROOTFS}/etc/opkg ] && [ "${ONLINE_PACKAGE_MANAGEMENT}" = "full" ] ; 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 $(opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -o ${IMAGE_ROOTFS} list_installed | awk '{print $1}') ; do
+ opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -o ${IMAGE_ROOTFS} info $pkg | awk '/Package/ {printf $2"_"} /Version/ {printf $2"_"} /Archi/ {print $2".ipk"}' >> ${TESTLAB_DIR}/installed-packages.txt
+
+ for depends in $(opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -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 $(opkg-cl -f ${IMAGE_ROOTFS}/etc/opkg -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") | head -n1
+ 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 ;"
' style='width: 100.0%;'/> -rw-r--r--classes/corecdp-mirrors.bbclass4
-rw-r--r--classes/cpan-base.bbclass6
-rw-r--r--classes/cpan.bbclass8
-rw-r--r--classes/cpan_build.bbclass3
-rw-r--r--classes/cross-canadian.bbclass46
-rw-r--r--classes/cross.bbclass34
-rw-r--r--classes/crosssdk.bbclass15
-rw-r--r--classes/debian.bbclass4
-rw-r--r--classes/devshell.bbclass4
-rw-r--r--classes/dietlibc.bbclass30
-rw-r--r--classes/distutils-base.bbclass24
-rw-r--r--classes/distutils-common-base.bbclass30
-rw-r--r--classes/distutils-native-base.bbclass3
-rw-r--r--classes/distutils.bbclass26
-rw-r--r--classes/dsmg600-image.bbclass5
-rw-r--r--classes/e.bbclass38
-rw-r--r--classes/efl.bbclass60
-rw-r--r--classes/efl_base.bbclass14
-rw-r--r--classes/efl_library.bbclass9
-rw-r--r--classes/failure-cleanup.bbclass18
-rw-r--r--classes/fso-plugin.bbclass4
-rw-r--r--classes/gconf.bbclass11
-rw-r--r--classes/gettext.bbclass2
-rw-r--r--classes/gitver.bbclass64
-rw-r--r--classes/glibc-package.bbclass305
-rw-r--r--classes/glx-use-tls.bbclass7
-rw-r--r--classes/gnome.bbclass16
-rw-r--r--classes/gtk-doc.bbclass4
-rw-r--r--classes/gtk-icon-cache.bbclass29
-rw-r--r--classes/icecc.bbclass180
-rw-r--r--classes/image.bbclass139
-rw-r--r--classes/insane.bbclass182
-rw-r--r--classes/java-library.bbclass33
-rw-r--r--classes/java-native.bbclass11
-rw-r--r--classes/java.bbclass79
-rw-r--r--classes/kernel-arch.bbclass12
-rw-r--r--classes/kernel.bbclass198
-rw-r--r--classes/lib_package.bbclass7
-rw-r--r--classes/linux-kernel-base.bbclass6
-rw-r--r--classes/lockdown.bbclass41
-rw-r--r--classes/lsppchd-image.bbclass10
-rw-r--r--classes/lsppchg-image.bbclass10
-rw-r--r--classes/manifest.bbclass2
-rw-r--r--classes/mime.bbclass56
-rw-r--r--classes/module-base.bbclass4
-rw-r--r--classes/module.bbclass19
-rw-r--r--classes/module_strip.bbclass32
-rw-r--r--classes/mozilla.bbclass6
-rw-r--r--classes/multimachine.bbclass30
-rw-r--r--classes/n2100-image.bbclass2
-rw-r--r--classes/nas100d-image.bbclass5
-rw-r--r--classes/native.bbclass96
-rw-r--r--classes/nativesdk.bbclass78
-rw-r--r--classes/nylon-image.bbclass3
-rw-r--r--classes/nylon-mirrors.bbclass8
-rw-r--r--classes/oestats-client.bbclass202
-rw-r--r--classes/openmoko-base.bbclass1
-rw-r--r--classes/openmoko2.bbclass2
-rw-r--r--classes/opie.bbclass1
-rw-r--r--classes/package.bbclass438
-rw-r--r--classes/package_dbg.bbclass125
-rw-r--r--classes/package_deb.bbclass55
-rw-r--r--classes/package_ipk.bbclass63
-rw-r--r--classes/package_rpm.bbclass151
-rw-r--r--classes/package_tar.bbclass18
-rw-r--r--classes/packaged-staging.bbclass326
-rw-r--r--classes/packagedata.bbclass73
-rw-r--r--classes/packagehistory.bbclass97
-rw-r--r--classes/palmtop.bbclass1
-rw-r--r--classes/patch.bbclass52
-rw-r--r--classes/pkgconfig.bbclass17
-rw-r--r--classes/qemu.bbclass15
-rw-r--r--classes/qmake.bbclass1
-rw-r--r--classes/qmake2.bbclass8
-rw-r--r--classes/qmake_base.bbclass5
-rw-r--r--classes/qt4e.bbclass17
-rw-r--r--classes/qt4x11.bbclass5
-rw-r--r--classes/qtopia4core.bbclass12
-rw-r--r--classes/recipe_sanity.bbclass179
-rw-r--r--classes/rm_work.bbclass11
-rw-r--r--classes/rootfs_deb.bbclass59
-rw-r--r--classes/rootfs_ipk.bbclass58
-rw-r--r--classes/rootfs_rpm.bbclass210
-rw-r--r--classes/rpm_core.bbclass16
-rw-r--r--classes/sanity.bbclass64
-rw-r--r--classes/scons.bbclass10
-rw-r--r--classes/scratchbox-compat.bbclass13
-rw-r--r--classes/sdk.bbclass20
-rw-r--r--classes/seppuku.bbclass21
-rw-r--r--classes/setuptools.bbclass2
-rw-r--r--classes/singlemachine.bbclass12
-rw-r--r--classes/siteinfo.bbclass44
-rw-r--r--classes/sourcepkg.bbclass13
-rw-r--r--classes/src_distribute.bbclass74
-rw-r--r--classes/src_distribute_local.bbclass58
-rw-r--r--classes/srctree.bbclass115
-rw-r--r--classes/task-metadata-track.bbclass96
-rw-r--r--classes/testlab.bbclass8
-rw-r--r--classes/tinderclient.bbclass27
-rw-r--r--classes/update-alternatives.bbclass1
-rw-r--r--classes/update-rc.d.bbclass30
-rw-r--r--classes/vala.bbclass14
-rw-r--r--classes/xfce.bbclass11
-rw-r--r--classes/xfce46.bbclass28
-rw-r--r--classes/xlibs.bbclass4
-rw-r--r--conf/abi_version.conf15
-rw-r--r--conf/amend-recipes.inc29
-rw-r--r--conf/bitbake.conf397
-rw-r--r--conf/checksums.ini19054
-rw-r--r--conf/collections.inc181
-rw-r--r--conf/compatibility-providers.conf73
-rw-r--r--conf/distro/angstrom-2008.1.conf257
-rw-r--r--conf/distro/asusoe.conf2
-rw-r--r--conf/distro/celinux-test.conf12
-rw-r--r--conf/distro/chinook-compat.conf80
-rw-r--r--conf/distro/corecdp.conf43
-rw-r--r--conf/distro/ezx.conf82
-rw-r--r--conf/distro/foonas.conf6
-rw-r--r--conf/distro/generic-uclibc.conf36
-rw-r--r--conf/distro/generic.conf82
-rw-r--r--conf/distro/gmustix.conf5
-rw-r--r--conf/distro/include/angstrom-2007-for-openmoko-versions.inc2131
-rw-r--r--conf/distro/include/angstrom-2007-for-openmoko.inc64
-rw-r--r--conf/distro/include/angstrom-2008-preferred-versions.inc76
-rw-r--r--conf/distro/include/angstrom-eglibc.inc28
-rw-r--r--conf/distro/include/angstrom-glibc.inc32
-rw-r--r--conf/distro/include/angstrom-ldflags.inc26
-rw-r--r--