autodetected dependencies
cover autodetected dependencies
The following changes since commit ac5d20f4adac69ea1702694fb50849c9e465b443:
systemd: Remove systemd_unitdir if systemd is not in distro features (2013-07-23 07:49:54 -0700)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib jansa/deps
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=jansa/deps
Martin Jansa (18):
test-dependencies: add simple script to detect missing or autoenabled
dependencies
gst-plugins-bad: add few more PACKAGECONFIGs
xkeyboard-config: add missing dependency on util-macros
ccache: add zlib dependency
cups: add PACKAGECONFIG for acl
directfb: add PACKAGECONFIG for jpeg2000
distcc: add PACKAGECONFIG for popt
grub: add PACKAGECONFIG for grub-mount
mailx: remove support for autodetection of krb5
minicom: add configure option and PACKAGECONFIG for lockdev
ltp: add acl, openssl dependency
patch: add PACKAGECONFIG for attr
python-imaging: add PACKAGECONFIG for lcms
socat: add PACKAGECONFIG for tcp-wrappers
sudo: add PACKAGECONFIG for zlib gstreamer1.0-plugins-good: add PACKAGECONFIG for v4l
gst-plugins-good: add PACKAGECONFIG for jpeg, wavpack, gdkpixbuf, v4l,
bzip2, orc
gettext: disable nls when INHIBIT_DEFAULT_DEPS is set
meta/classes/gettext.bbclass | 4 +- meta/recipes-bsp/grub/grub_2.00.bb | 3 + meta/recipes-connectivity/socat/socat_1.7.2.2.bb | 3 + meta/recipes-devtools/ccache/ccache.inc | 2 + meta/recipes-devtools/distcc/distcc_3.1.bb | 4 +- meta/recipes-devtools/patch/patch.inc | 3 + .../allow.to.disable.some.features.patch | 65 ++++++ .../python/python-imaging_1.1.7.bb | 10 +- meta/recipes-extended/cups/cups16.inc | 1 + meta/recipes-extended/ltp/ltp_20130503.bb | 2 +- .../explicitly.disable.krb5.support.patch | 46 ++++ meta/recipes-extended/mailx/mailx_12.5.bb | 1 + .../minicom-2.6.2/allow.to.disable.lockdev.patch | 21 ++ meta/recipes-extended/minicom/minicom_2.6.2.bb | 7 +- meta/recipes-extended/sudo/sudo.inc | 3 + meta/recipes-graphics/directfb/directfb.inc | 3 + .../xorg-lib/xkeyboard-config_2.9.bb | 2 +- .../gstreamer/gst-plugins-bad_0.10.23.bb | 10 + .../gstreamer/gst-plugins-good_0.10.31.bb | 12 +- .../gstreamer/gstreamer1.0-plugins-good.inc | 2 +- scripts/test-dependencies.sh | 256 +++++++++++++++++++++ 21 files changed, 449 insertions(+), 11 deletions(-) create mode 100644 meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch create mode 100644 meta/recipes-extended/mailx/mailx-12.5/explicitly.disable.krb5.support.patch create mode 100644 meta/recipes-extended/minicom/minicom-2.6.2/allow.to.disable.lockdev.patch create mode 100755 scripts/test-dependencies.sh
Signature · 1 line
1.8.3.2
PATCH 1/18 test-dependencies: add simple script to detect missing or autoenabled dependencies
--- scripts/test-dependencies.sh | 256 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100755 scripts/test-dependencies.sh
scripts/test-dependencies.sh new file +256 -0
@@ -0,0 +1,256 @@ +#!/bin/sh + +# Author: Martin Jansa <[email protected]> +# +# Copyright (c) 2013 Martin Jansa <[email protected]> + +# Used to detect missing dependencies or automagically +# enabled dependencies which aren't explicitly enabled +# or disabled. + +# It does 3 builds of <target> +# 1st to populate sstate-cache directory and sysroot +# 2nd to rebuild each recipe with every possible +# dependency found in sysroot (which stays populated +# from 1st build +# 3rd to rebuild each recipe only with dependencies defined +# in DEPENDS +# 4th (optional) repeat build like 3rd to make sure that +# minimal versions of dependencies defined in DEPENDS +# is also enough + +# Global vars +tmpdir= +targets= +recipes= +buildhistory= +buildtype= +default_targets="world" +default_buildhistory="buildhistory" +default_buildtype="1 2 3 c" + +usage () { + cat << EOF +Welcome to utility to detect missing or autoenabled dependencies. +WARNING: this utility will completely remove your tmpdir (make sure + you don't have important buildhistory or persistent dir there). +$0 <OPTION> + +Options: + -h, --help + Display this help and exit. + + --tmpdir=<tmpdir> + Specify tmpdir, will use the environment variable TMPDIR if it is not specified. + Something like /OE/oe-core/tmp-eglibc (no / at the end). + + --targets=<targets> + List of targets separated by space, will use the environment variable TARGETS if it is not specified. + It will run "bitbake <targets>" to populate sysroots. + Default value is "world". + + --recipes=<recipes> + File with list of recipes we want to rebuild with minimal and maximal sysroot. + Will use the environment variable RECIPES if it is not specified. + Default value will use all packages ever recorded in buildhistory directory. + + --buildhistory=<buildhistory> + Path to buildhistory directory, it needs to be enabled in your config, + because it's used to detect different dependencies and to create list + of recipes to rebuild when it's not specified. + Will use the environment variable BUILDHISTORY if it is not specified. + Default value is "buildhistory" + + --buildtype=<buildtype> + There are 4 types of build: + 1: build to populate sstate-cache directory and sysroot + 2: build to rebuild each recipe with every possible dep + 3: build to rebuild each recipe with minimal dependencies + 4: build to rebuild each recipe again with minimal dependencies + c: compare buildhistory directories from build 2 and 3 + Will use the environment variable BUILDTYPE if it is not specified. + Default value is "1 2 3 c", order is important, type 4 is optional. +EOF +} + +# Print error information and exit. +echo_error () { + echo "ERROR: $1" >&2 + exit 1 +} + +while [ -n "$1" ]; do + case $1 in + --tmpdir=*) + tmpdir=`echo $1 | sed -e 's#^--tmpdir=##' | xargs readlink -e` + [ -d "$tmpdir" ] || echo_error "Invalid argument to --tmpdir" + shift + ;; + --targets=*) + targets=`echo $1 | sed -e 's#^--targets="*\([^"]*\)"*#\1#'` + shift + ;; + --recipes=*) + recipes=`echo $1 | sed -e 's#^--recipes="*\([^"]*\)"*#\1#'` + shift + ;; + --buildhistory=*) + buildhistory=`echo $1 | sed -e 's#^--buildhistory="*\([^"]*\)"*#\1#'` + shift + ;; + --buildtype=*) + buildtype=`echo $1 | sed -e 's#^--buildtype="*\([^"]*\)"*#\1#'` + shift + ;; + --help|-h) + usage + exit 0 + ;; + *) + echo "Invalid arguments $*" + echo_error "Try '$0 -h' for more information." + ;; + esac +done + +# tmpdir directory, use environment variable TMPDIR +# if it was not specified, otherwise, error. +[ -n "$tmpdir" ] || tmpdir=$TMPDIR +[ -n "$tmpdir" ] || echo_error "No tmpdir found!" +[ -d "$tmpdir" ] || echo_error "Invalid tmpdir \"$tmpdir\"" +[ -n "$targets" ] || targets=$TARGETS +[ -n "$targets" ] || targets=$default_targets +[ -n "$recipes" ] || recipes=$RECIPES +[ -n "$recipes" -a ! -f "$recipes" ] && echo_error "Invalid file with list of recipes to rebuild" +[ -n "$recipes" ] || echo "All packages ever recorded in buildhistory directory will be rebuilt" +[ -n "$buildhistory" ] || buildhistory=$BUILDHISTORY +[ -n "$buildhistory" ] || buildhistory=$default_buildhistory +[ -d "$buildhistory" ] || echo_error "Invalid buildhistory directory \"$buildhistory\"" +[ -n "$buildtype" ] || buildtype=$BUILDTYPE +[ -n "$buildtype" ] || buildtype=$default_buildtype +echo "$buildtype" | grep -v '^[1234c ]*$' && echo_error "Invalid buildtype \"$buildtype\", only some combination of 1, 2, 3, 4, c separated by space is allowed" + +OUTPUT_BASE=test-dependencies/`date "+%s"` + +build_all() { + echo "===== 1st build to populate sstate-cache directory and sysroot =====" + OUTPUT1=${OUTPUT_BASE}/${TYPE}_all + mkdir -p ${OUTPUT1} + echo "Logs will be stored in ${OUTPUT1} directory" + bitbake -k $targets | tee -a ${OUTPUT1}/complete.log +} + +build_every_recipe() { + if [ "${TYPE}" = "2" ] ; then + echo "===== 2nd build to rebuild each recipe with every possible dep =====" + OUTPUT_MAX=${OUTPUT_BASE}/${TYPE}_max + OUTPUTB=${OUTPUT_MAX} + else + echo "===== 3rd or 4th build to rebuild each recipe with minimal dependencies =====" + OUTPUT_MIN=${OUTPUT_BASE}/${TYPE}_min + OUTPUTB=${OUTPUT_MIN} + fi + + mkdir -p ${OUTPUTB} ${OUTPUTB}/failed ${OUTPUTB}/ok + echo "Logs will be stored in ${OUTPUTB} directory" + if [ -z "$recipes" ]; then + ls -d $buildhistory/packages/*/* | xargs -n 1 basename | sort -u > ${OUTPUTB}/recipe.list + recipes=${OUTPUTB}/recipe.list + fi + if [ "${TYPE}" != "2" ] ; then + echo "!!!Removing tmpdir \"$tmpdir\"!!!" + rm -rf $tmpdir/deploy $tmpdir/pkgdata $tmpdir/sstate-control $tmpdir/stamps $tmpdir/sysroots $tmpdir/work $tmpdir/work-shared 2>/dev/null + fi + i=1 + count=`cat $recipes | wc -l` + for recipe in `cat $recipes`; do + echo "Building recipe: ${recipe} ($i/$count)" + bitbake -c cleansstate ${recipe} > ${OUTPUTB}/log.${recipe} 2>&1; + bitbake ${recipe} >> ${OUTPUTB}/log.${recipe} 2>&1; + grep "ERROR: Task.*failed" ${OUTPUTB}/log.${recipe} && mv ${OUTPUTB}/log.${recipe} ${OUTPUTB}/failed/${recipe} || mv ${OUTPUTB}/log.${recipe} ${OUTPUTB}/ok/${recipe} + if [ "${TYPE}" != "2" ] ; then + rm -rf $tmpdir/deploy $tmpdir/pkgdata $tmpdir/sstate-control $tmpdir/stamps $tmpdir/sysroots $tmpdir/work $tmpdir/work-shared 2>/dev/null + fi + i=`expr $i + 1` + done + echo "Copying buildhistory/packages to ${OUTPUTB}" + cp -ra $buildhistory/packages ${OUTPUTB} + # This will be usefull to see which library is pulling new dependency + echo "Copying do_package logs to ${OUTPUTB}/do_package/" + mkdir ${OUTPUTB}/do_package + find $tmpdir/work/ -name log.do_package | while read f; do + # pn is 3 levels back, but we don't know if there is just one log per pn (only one arch and version) + # dest=`echo $f | sed 's#^.*/\([^/]*\)/\([^/]*\)/\([^/]*\)/log.do_package#\1#g'` + dest=`echo $f | sed "s#$tmpdir/work/##g; s#/#_#g"` + cp $f ${OUTPUTB}/do_package/$dest + done + grep "ERROR: Task.*failed" ${OUTPUTB}/failed/* + ls -1 ${OUTPUTB}/failed/* >> ${OUTPUT_BASE}/failed.recipes +} + +compare_deps() { + # you can run just compare task with command like this + # OUTPUT_BASE=test-dependencies/1373140172 \ + # OUTPUT_MAX=${OUTPUT_BASE}/2_max \ + # OUTPUT_MIN=${OUTPUT_BASE}/3_min \ + # openembedded-core/scripts/test-dependencies.sh --tmpdir=tmp-eglibc --targets=glib-2.0 --recipes=recipe_list --buildtype=c + echo "===== Compare dependencies recorded in \"${OUTPUT_MAX}\" and \"${OUTPUT_MIN}\" =====" + [ -n "${OUTPUTC}" ] || OUTPUTC=${OUTPUT_BASE} + mkdir -p ${OUTPUTC} + OUTPUT_FILE=${OUTPUTC}/dependency-changes + echo "Differences will be stored in ${OUTPUT_FILE}, dot is shown for every 100 of checked packages" + echo > ${OUTPUT_FILE} + + [ -d ${OUTPUT_MAX} ] || echo_error "Directory with output from build 2 \"${OUTPUT_MAX}\" does not exist" + [ -d ${OUTPUT_MIN} ] || echo_error "Directory with output from build 3 \"${OUTPUT_MIN}\" does not exist" + [ -d ${OUTPUT_MAX}/packages/ ] || echo_error "Directory with packages from build 2 \"${OUTPUT_MAX}/packages/\" does not exist" + [ -d ${OUTPUT_MIN}/packages/ ] || echo_error "Directory with packages from build 3 \"${OUTPUT_MIN}/packages/\" does not exist" + i=0 + find ${OUTPUT_MAX}/packages/ -name latest | sed "s#${OUTPUT_MAX}/##g" | while read pkg; do + max_pkg=${OUTPUT_MAX}/${pkg} + min_pkg=${OUTPUT_MIN}/${pkg} + if [ ! -f "${min_pkg}" ] ; then + echo "ERROR: ${min_pkg} doesn't exist" | tee -a ${OUTPUT_FILE} + continue + fi + # strip version information in parenthesis + max_deps=`grep "^RDEPENDS = " ${max_pkg} | sed 's/^RDEPENDS = / /g; s/$/ /g; s/([^(]*)//g'` + min_deps=`grep "^RDEPENDS = " ${min_pkg} | sed 's/^RDEPENDS = / /g; s/$/ /g; s/([^(]*)//g'` + if [ "$i" = 100 ] ; then + echo -n "." # cheap progressbar + i=0 + fi + if [ "${max_deps}" = "${min_deps}" ] ; then + # it's annoying long, but at least it's showing some progress, warnings are grepped at the end + echo "NOTE: ${pkg} dependencies weren't changed" >> ${OUTPUT_FILE} + else + missing_deps= + for dep in ${max_deps}; do + echo "${min_deps}" | grep -q " ${dep} " || missing_deps="${missing_deps} ${dep}" + done + if [ -n "${missing_deps}" ] ; then + echo # to get rid of dots on last line + echo "WARN: ${pkg} lost dependency on ${missing_deps}" | tee -a ${OUTPUT_FILE} + fi + fi + i=`expr $i + 1` + done + echo # to get rid of dots on last line + echo "Found differences: " + grep "^WARN: " ${OUTPUT_FILE} | tee ${OUTPUT_FILE}.warn + echo "Found errors: " + grep "^ERROR: " ${OUTPUT_FILE} | tee ${OUTPUT_FILE}.error + # useful for reexecuting this script with only small subset of recipes with known issues + sed 's#.*[ /]packages/\([^/]*\)/\([^/]*\)/.*#\2#g' ${OUTPUT_FILE}.warn ${OUTPUT_FILE}.error | sort -u >> ${OUTPUT_BASE}/failed.recipes +} + +for TYPE in $buildtype; do + case ${TYPE} in + 1) build_all;; + 2) build_every_recipe;; + 3) build_every_recipe;; + 4) build_every_recipe;; + c) compare_deps;; + *) echo_error "Invalid buildtype \"$TYPE\"" + esac +done
Signature · 1 line
1.8.3.2
PATCH 2/18 gst-plugins-bad: add few more PACKAGECONFIGs
--- meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.23.bb | 10 ++++++++++ 1 file changed, 10 insertions(+)
meta/recipes-multimedia/gstreamer/gst-plugins-bad_0.10.23.bb +10 -0
@@ -24,6 +24,16 @@ PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl" PACKAGECONFIG[rsvg] = "--enable-rsvg,--disable-rsvg,librsvg," PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc" PACKAGECONFIG[neon] = "--enable-neon,--disable-neon,neon" +PACKAGECONFIG[mms] = "--enable-libmms,--disable-libmms,libmms" +PACKAGECONFIG[cog] = "--enable-cog,--disable-cog,libpng" +PACKAGECONFIG[faad] = "--enable-faad,--disable-faad,faad2" +PACKAGECONFIG[jp2k] = "--enable-jp2k,--disable-jp2k,jasper" +PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug" +PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus" +PACKAGECONFIG[sndfile] = "--enable-sndfile,--disable-sndfile,libsndfile1" +PACKAGECONFIG[vp8] = "--enable-vp8,--disable-vp8,libvpx" +PACKAGECONFIG[ass] = "--enable-assrender,--disable-assrender,libass" +PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft" ARM_INSTRUCTION_SET = "arm"
Signature · 1 line
1.8.3.2
PATCH 3/18 xkeyboard-config: add missing dependency on util-macros
In reply to Martin Jansa* build fails without it
configure.ac:7: error: must install xorg-macros 1.12 or later before
--- meta/recipes-graphics/xorg-lib/xkeyboard-config_2.9.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-graphics/xorg-lib/xkeyboard-config_2.9.bb +1 -1
@@ -17,7 +17,7 @@ SRC_URI[md5sum] = "9b1280d8ba40274a0f1567c94fca7501" SRC_URI[sha256sum] = "5e89bc182a10d53c3e83efc6c3546de0fe5504d91c3dbc80d55cc64ddab5643a" SECTION = "x11/libs" -DEPENDS = "intltool-native virtual/gettext" +DEPENDS = "intltool-native virtual/gettext util-macros" EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
Signature · 1 line
1.8.3.2
PATCH 4/18 ccache: add zlib dependency
In reply to Martin Jansa* when it's not detected in sysroot it uses bundled version
* add explicit dependency to make it deterministic
* PACKAGECONFIG wasn't used because configure doesn't have an option to select which one should be used
--- meta/recipes-devtools/ccache/ccache.inc | 2 ++ 1 file changed, 2 insertions(+)
meta/recipes-devtools/ccache/ccache.inc +2 -0
@@ -7,6 +7,8 @@ HOMEPAGE = "http://ccache.samba.org" SECTION = "devel" LICENSE = "GPLv3+" +DEPENDS = "zlib" + SRC_URI = "http://samba.org/ftp/ccache/ccache-${PV}.tar.xz" inherit autotools
Signature · 1 line
1.8.3.2
PATCH 5/18 cups: add PACKAGECONFIG for acl
In reply to Martin Jansa* acl is autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- meta/recipes-extended/cups/cups16.inc | 1 + 1 file changed, 1 insertion(+)
meta/recipes-extended/cups/cups16.inc +1 -0
@@ -13,6 +13,7 @@ inherit autotools binconfig PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)}" PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" +PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl" EXTRA_OECONF = " \ --enable-gnutls \
Signature · 1 line
1.8.3.2
PATCH 6/18 directfb: add PACKAGECONFIG for jpeg2000
In reply to Martin Jansa* it's autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- meta/recipes-graphics/directfb/directfb.inc | 3 +++ 1 file changed, 3 insertions(+)
meta/recipes-graphics/directfb/directfb.inc +3 -0
@@ -23,6 +23,9 @@ LDFLAGS_append =" -lts -lm" inherit autotools binconfig pkgconfig +PACKAGECONFIG ??= "" +PACKAGECONFIG[jpeg2000] = "--enable-jpeg2000,--disable-jpeg2000,jasper" + EXTRA_OECONF = "\ --with-gfxdrivers=none \ --enable-libmpeg3=no \
Signature · 1 line
1.8.3.2
PATCH 7/18 distcc: add PACKAGECONFIG for popt
In reply to Martin Jansa* it's autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- meta/recipes-devtools/distcc/distcc_3.1.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
meta/recipes-devtools/distcc/distcc_3.1.bb +3 -1
@@ -11,8 +11,10 @@ DEPENDS = "avahi" GTKCONFIG = "gtk" GTKCONFIG_libc-uclibc = "" -PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', '${GTKCONFIG}', '', d)}" +PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', '${GTKCONFIG}', '', d)} popt" PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk --without-gnome,gtk+" +# use system popt by default +PACKAGECONFIG[popt] = "--without-included-popt,--with-included-popt,popt" RRECOMMENDS_${PN} = "avahi-daemon"
Signature · 1 line
1.8.3.2
PATCH 8/18 grub: add PACKAGECONFIG for grub-mount
In reply to Martin Jansa* fuse is autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- meta/recipes-bsp/grub/grub_2.00.bb | 3 +++ 1 file changed, 3 insertions(+)
meta/recipes-bsp/grub/grub_2.00.bb +3 -0
@@ -33,6 +33,9 @@ FILES_${PN}-dbg += "${libdir}/${BPN}/i386-pc/.debug" inherit autotools inherit gettext +PACKAGECONFIG ??= "" +PACKAGECONFIG[grub-mount] = "--enable-grub-mount,--disable-grub-mount,fuse" + EXTRA_OECONF = "--with-platform=pc --disable-grub-mkfont --program-prefix="" \ --enable-liblzma=no --enable-device-mapper=no --enable-libzfs=no"
Signature · 1 line
1.8.3.2
PATCH 9/18 mailx: remove support for autodetection of krb5
In reply to Martin Jansa* it's autodetected from sysroot and makeconfig doesn't allow to explicitly define what's expected
--- .../explicitly.disable.krb5.support.patch | 46 ++++++++++++++++++++++ meta/recipes-extended/mailx/mailx_12.5.bb | 1 + 2 files changed, 47 insertions(+) create mode 100644 meta/recipes-extended/mailx/mailx-12.5/explicitly.disable.krb5.support.patch
meta/recipes-extended/mailx/mailx-12.5/explicitly.disable.krb5.support.patch new file +46 -0
@@ -0,0 +1,46 @@ +krb5 support is autodetected from sysroot making builds undeterministic +feel free to improve this to support explicitly enabling/disabling it + +Upstream-Status: Penging + +Signed-off-by: Martin Jansa <[email protected]> + +--- a/makeconfig 2013-07-21 15:06:11.177792334 +0200 ++++ b/makeconfig 2013-07-21 15:07:20.028793994 +0200 +@@ -424,36 +424,6 @@ + } + ! + +-<$tmp2.c link_check gssapi 'for GSSAPI in libgss' \ +- '#define USE_GSSAPI' '-lgss' || +- <$tmp2.c link_check gssapi 'for GSSAPI in libgssapi_krb5' \ +- '#define USE_GSSAPI' '-lgssapi_krb5' || +- link_check gssapi 'for GSSAPI in libgssapi_krb5, old-style' \ +- '#define USE_GSSAPI +-#define GSSAPI_OLD_STYLE' '-lgssapi_krb5' <<\! || \ +- link_check gssapi 'for GSSAPI in libgssapi' \ +- '#define USE_GSSAPI +-#define GSSAPI_REG_INCLUDE' '-lgssapi' <<\% +-#include <gssapi/gssapi.h> +-#include <gssapi/gssapi_generic.h> +- +-int main(void) +-{ +- gss_import_name(0, 0, gss_nt_service_name, 0); +- gss_init_sec_context(0,0,0,0,0,0,0,0,0,0,0,0,0); +- return 0; +-} +-! +-#include <gssapi.h> +- +-int main(void) +-{ +- gss_import_name(0, 0, GSS_C_NT_HOSTBASED_SERVICE, 0); +- gss_init_sec_context(0,0,0,0,0,0,0,0,0,0,0,0,0); +- return 0; +-} +-% +- + cat >$tmp2.c <<\! + #include "config.h" + #ifdef HAVE_NL_LANGINFO
meta/recipes-extended/mailx/mailx_12.5.bb +1 -0
@@ -14,6 +14,7 @@ DEPENDS = "openssl" SRC_URI = "${DEBIAN_MIRROR}/main/h/heirloom-mailx/heirloom-mailx_${PV}.orig.tar.gz;name=archive \ ${DEBIAN_MIRROR}/main/h/heirloom-mailx/heirloom-mailx_${PV}-1.diff.gz;name=patch \ + file://explicitly.disable.krb5.support.patch \ " SRC_URI[archive.md5sum] = "29a6033ef1412824d02eb9d9213cb1f2"
Signature · 1 line
1.8.3.2
PATCH 10/18 minicom: add configure option and PACKAGECONFIG for lockdev
In reply to Martin Jansa* it's autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- .../minicom-2.6.2/allow.to.disable.lockdev.patch | 21 +++++++++++++++++++++ meta/recipes-extended/minicom/minicom_2.6.2.bb | 7 ++++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-extended/minicom/minicom-2.6.2/allow.to.disable.lockdev.patch
meta/recipes-extended/minicom/minicom-2.6.2/allow.to.disable.lockdev.patch new file +21 -0
@@ -0,0 +1,21 @@ +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <[email protected]> + +--- a/configure.in 2013-02-06 18:18:13.000000000 +0100 ++++ b/configure.in 2013-07-21 15:31:27.614828894 +0200 +@@ -40,7 +40,13 @@ + fi + + PKG_PROG_PKG_CONFIG +-if test -n "$PKG_CONFIG"; then ++ ++AC_ARG_ENABLE([lockdev], ++ AS_HELP_STRING([--enable-lockdev], ++ [Enable lockdev support (def: enabled)]), ++ [], [enable_lockdev="yes"]) ++ ++if test -n "$PKG_CONFIG" && test "x$enable_lockdev" = xyes; then + PKG_CHECK_MODULES([LOCKDEV], [lockdev], AC_DEFINE([HAVE_LOCKDEV],[1],[Define if you have lockdev]),[:]) + fi +
meta/recipes-extended/minicom/minicom_2.6.2.bb +6 -1
@@ -8,11 +8,16 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=420477abc567404debca0a2a1cb6b645 \ PR = "r0" -SRC_URI = "http://alioth.debian.org/frs/download.php/3869/minicom-${PV}.tar.gz" +SRC_URI = "http://alioth.debian.org/frs/download.php/3869/minicom-${PV}.tar.gz \ + file://allow.to.disable.lockdev.patch \ +" SRC_URI[md5sum] = "203c56c4b447f45e2301b0cc4e83da3c" SRC_URI[sha256sum] = "f3cf215f7914ffa5528e398962176102ad74df27ba38958142f56aa6d15c9168" +PACKAGECONFIG ??= "" +PACKAGECONFIG[lockdev] = "--enable-lockdev,--disable-lockdev,lockdev" + inherit autotools gettext do_install() {
Signature · 1 line
1.8.3.2
PATCH 11/18 ltp: add acl, openssl dependency
In reply to Martin Jansa* when it's not detected in sysroot it uses bundled version
* add explicit dependency to make it deterministic
* PACKAGECONFIG wasn't used because configure doesn't have an option to select which one should be used
--- meta/recipes-extended/ltp/ltp_20130503.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-extended/ltp/ltp_20130503.bb +1 -1
@@ -19,7 +19,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \ file://utils/benchmark/kernbench-0.42/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ " -DEPENDS = "attr libaio libcap" +DEPENDS = "attr libaio libcap acl openssl" SRC_URI = "${SOURCEFORGE_MIRROR}/ltp/ltp-full-${PV}.bz2"
Signature · 1 line
1.8.3.2
PATCH 12/18 patch: add PACKAGECONFIG for attr
In reply to Martin Jansa* it's autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- meta/recipes-devtools/patch/patch.inc | 3 +++ 1 file changed, 3 insertions(+)
meta/recipes-devtools/patch/patch.inc +3 -0
@@ -9,5 +9,8 @@ S = "${WORKDIR}/patch-${PV}" inherit autotools update-alternatives +PACKAGECONFIG ??= "" +PACKAGECONFIG[attr] = "--enable-xattr,--disable-xattr,attr" + ALTERNATIVE_${PN} = "patch" ALTERNATIVE_PRIORITY = "100"
Signature · 1 line
1.8.3.2
PATCH 13/18 python-imaging: add PACKAGECONFIG for lcms
In reply to Martin Jansa* it's autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- .../allow.to.disable.some.features.patch | 65 ++++++++++++++++++++++ .../python/python-imaging_1.1.7.bb | 10 +++- 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch
meta/recipes-devtools/python/python-imaging/allow.to.disable.some.features.patch new file +65 -0
@@ -0,0 +1,65 @@ +At least lcms wasn't deterministicly detected from sysroot. + +This will allow to export LCMS_ENABLED=False when lcms isn't in PACKAGECONFIG. + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Martin Jansa <[email protected]> + +diff -uNr Imaging-1.1.7.orig/setup.py Imaging-1.1.7/setup.py +--- Imaging-1.1.7.orig/setup.py 2013-07-22 10:17:02.081457075 +0200 ++++ Imaging-1.1.7/setup.py 2013-07-22 13:10:09.029707492 +0200 +@@ -39,6 +39,12 @@ + TIFF_ROOT = None + FREETYPE_ROOT = os.environ['STAGING_LIBDIR'], os.environ['STAGING_INCDIR'] + LCMS_ROOT = None ++TCL_ENABLED = os.getenv('TCL_ENABLED', "True") ++JPEG_ENABLED = os.getenv('JPEG_ENABLED', "True") ++ZLIB_ENABLED = os.getenv('ZLIB_ENABLED', "True") ++TIFF_ENABLED = os.getenv('TIFF_ENABLED', "True") ++FREETYPE_ENABLED = os.getenv('FREETYPE_ENABLED', "True") ++LCMS_ENABLED = os.getenv('LCMS_ENABLED', "True") + + # FIXME: add mechanism to explicitly *disable* the use of a library + +@@ -220,22 +226,22 @@ + zlib = jpeg = tiff = freetype = tcl = tk = lcms = None + feature = feature() + +- if find_include_file(self, "zlib.h"): ++ if ZLIB_ENABLED == 'True' and find_include_file(self, "zlib.h"): + if find_library_file(self, "z"): + feature.zlib = "z" + elif sys.platform == "win32" and find_library_file(self, "zlib"): + feature.zlib = "zlib" # alternative name + +- if find_include_file(self, "jpeglib.h"): ++ if JPEG_ENABLED == 'True' and find_include_file(self, "jpeglib.h"): + if find_library_file(self, "jpeg"): + feature.jpeg = "jpeg" + elif sys.platform == "win32" and find_library_file(self, "libjpeg"): + feature.jpeg = "libjpeg" # alternative name + +- if find_library_file(self, "tiff"): ++ if TIFF_ENABLED == 'True' and find_library_file(self, "tiff"): + feature.tiff = "tiff" + +- if find_library_file(self, "freetype"): ++ if FREETYPE_ENABLED == 'True' and find_library_file(self, "freetype"): + # look for freetype2 include files + freetype_version = 0 + for dir in self.compiler.include_dirs: +@@ -256,11 +262,11 @@ + if dir: + add_directory(self.compiler.include_dirs, dir, 0) + +- if find_include_file(self, "lcms.h"): ++ if LCMS_ENABLED == 'True' and find_include_file(self, "lcms.h"): + if find_library_file(self, "lcms"): + feature.lcms = "lcms" + +- if _tkinter and find_include_file(self, "tk.h"): ++ if TCL_ENABLED == 'True' and _tkinter and find_include_file(self, "tk.h"): + # the library names may vary somewhat (e.g. tcl84 or tcl8.4) + version = TCL_VERSION[0] + TCL_VERSION[2] + if find_library_file(self, "tcl" + version):
meta/recipes-devtools/python/python-imaging_1.1.7.bb +9 -1
@@ -7,23 +7,31 @@ SRCNAME = "Imaging" PR = "r5" SRC_URI = "http://effbot.org/downloads/Imaging-${PV}.tar.gz \ - file://0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch" + file://0001-python-imaging-setup.py-force-paths-for-zlib-freetyp.patch \ + file://allow.to.disable.some.features.patch" SRC_URI[md5sum] = "fc14a54e1ce02a0225be8854bfba478e" SRC_URI[sha256sum] = "895bc7c2498c8e1f9b99938f1a40dc86b3f149741f105cf7c7bd2e0725405211" S = "${WORKDIR}/${SRCNAME}-${PV}" +# There isn't enable/disable option, and lcms is in meta-oe, at least make it explicit when enabled +# setup.py already has FIXME: add mechanism to explicitly *disable* the use of a library +PACKAGECONFIG ??= "" +PACKAGECONFIG[lcms] = ",,lcms" + inherit distutils do_compile() { export STAGING_LIBDIR=${STAGING_LIBDIR} export STAGING_INCDIR=${STAGING_INCDIR} + export LCMS_ENABLED=${@base_contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)} distutils_do_compile } do_install() { export STAGING_LIBDIR=${STAGING_LIBDIR} export STAGING_INCDIR=${STAGING_INCDIR} + export LCMS_ENABLED=${@base_contains('PACKAGECONFIG', 'lcms', 'True', 'False', d)} distutils_do_install install -d ${D}${datadir}/doc/${BPN}/html/ install -m 0644 ${S}/README ${D}${datadir}/doc/${BPN}/
Signature · 1 line
1.8.3.2
PATCH 14/18 socat: add PACKAGECONFIG for tcp-wrappers
In reply to Martin Jansa* it's autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- meta/recipes-connectivity/socat/socat_1.7.2.2.bb | 3 +++ 1 file changed, 3 insertions(+)
meta/recipes-connectivity/socat/socat_1.7.2.2.bb +3 -0
@@ -18,6 +18,9 @@ SRC_URI = "http://www.dest-unreach.org/socat/download/socat-${PV}.tar.bz2 \ SRC_URI[md5sum] = "39231e512d8052f328552865df15d42f" SRC_URI[sha256sum] = "9a167af11a4d3809cbc66f5e2dcb39b6e371251282ef5de6ea6ff0c4be8a953c" +PACKAGECONFIG ??= "tcp-wrappers" +PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers" + EXTRA_OECONF += "ac_cv_have_z_modifier=yes sc_cv_sys_crdly_shift=9 \ sc_cv_sys_tabdly_shift=11 sc_cv_sys_csize_shift=4 \ ac_cv_ispeed_offset=13 \
Signature · 1 line
1.8.3.2
PATCH 15/18 sudo: add PACKAGECONFIG for zlib
In reply to Martin Jansa* it's autodetected from sysroot
* add PACKAGECONFIG to make it deterministic
--- meta/recipes-extended/sudo/sudo.inc | 3 +++ 1 file changed, 3 insertions(+)
meta/recipes-extended/sudo/sudo.inc +3 -0
@@ -13,6 +13,9 @@ LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=d25a8240ca6decdecb9990789e593130 \ inherit autotools +PACKAGECONFIG ??= "" +PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib" + EXTRA_OECONF = "--with-editor=/bin/vi --with-env-editor" do_configure_prepend () {
Signature · 1 line
1.8.3.2
PATCH 16/18 gstreamer1.0-plugins-good: add PACKAGECONFIG for v4l
In reply to Martin Jansa--- meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc +1 -1
@@ -32,7 +32,7 @@ PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex" PACKAGECONFIG[taglib] = "--enable-taglib,--disable-taglib,taglib" PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx,libvpx" PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack" - +PACKAGECONFIG[v4l] = "--with-libv4l2,--without-libv4l2,libv4l" EXTRA_OECONF += " \ --disable-directsound \
Signature · 1 line
1.8.3.2
PATCH 17/18 gst-plugins-good: add PACKAGECONFIG for jpeg, wavpack, gdkpixbuf, v4l, bzip2, orc
In reply to Martin Jansa--- .../recipes-multimedia/gstreamer/gst-plugins-good_0.10.31.bb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.31.bb +9 -3
@@ -7,11 +7,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ PR = "r8" -PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}" +PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} jpeg" PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio" PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" - -DEPENDS += "gst-plugins-base gconf cairo jpeg libpng zlib libid3tag flac \ +PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg" +PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack" +PACKAGECONFIG[gdkpixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf" +PACKAGECONFIG[v4l] = "--with-libv4l2,--without-libv4l2,libv4l" +PACKAGECONFIG[bzip2] = "--enable-bz2,--disable-bz2,bzip2" +PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc" + +DEPENDS += "gst-plugins-base gconf cairo libpng zlib libid3tag flac \ speex libsoup-2.4" inherit gettext gconf
Signature · 1 line
1.8.3.2
PATCH 18/18 gettext: disable nls when INHIBIT_DEFAULT_DEPS is set
In reply to Martin Jansa* for example in gcc-runtime DEPENDS_GETTEXT from gettext.bbclass isn't used because gcc-runtime recipes also set INHIBIT_DEFAULT_DEPS, explicitly disable NLS when DEPENDS_GETTEXT is empty
* this is causing undeterministic build
if you compare i586-oe-linux/libstdc++-v3/config.log in WORKDIR when building gcc-runtime before and after building gettext-native you'll see that msgfmt isn't found in one of them and gcc-runtime-locale-{de,fr} packages aren't created, there is only one file in them:
gcc-runtime-locale-de/usr/share/locale/de/LC_MESSAGES/libstdc++.mo
--- meta/classes/gettext.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
meta/classes/gettext.bbclass +2 -2
@@ -10,8 +10,8 @@ def gettext_dependencies(d): def gettext_oeconf(d): if oe.utils.inherits(d, 'native', 'cross'): return '--disable-nls' - # Remove the NLS bits if USE_NLS is no. - if d.getVar('USE_NLS', True) == 'no' and not oe.utils.inherits(d, 'nativesdk', 'cross-canadian'): + # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set + if (d.getVar('USE_NLS', True) == 'no' or d.getVar('INHIBIT_DEFAULT_DEPS', True)) and not oe.utils.inherits(d, 'nativesdk', 'cross-canadian'): return '--disable-nls' return "--enable-nls"
Signature · 1 line
1.8.3.2
Re: [PATCH 01/18] test-dependencies: add simple script to detect missing or autoenabled dependencies
In reply to Martin JansaThis whole series looks great, thanks Martin for donating vast amounts of CPU time to this!
Ross
test-dependencies.sh results from big world build
In reply to Martin JansaMy biggest build with 20+ layers included finally finished today (after many days because there was hw issue on server where it was running, so it was slower then it should be).
The results are a bit messy because:
1) It had only some fixes from my last "autodetected dependencies" patchsets for oe-core and meta-oe
2) It was started when oe-core/master had broken boost, so many packages failed because of boost
3) It was started when oe-core/master had issues with qt-mobility (not sure if all were fixed already)
4) It wasn't using latest version of test-dependencies script
5) It was using complete buildhistory repo which had many stalled packages like task-* and couple of architectures.
But at least it will allow me to restrict recipes to rebuild from 1900 to only 256 which were failing in this build.
It was tested only for qemuarm.
Complete logs are here:
http://logs.nslu2-linux.org/buildlogs/oe/oe-shr-core-branches/test-dependencies-2013-07-24/
Interesting parts
11 recipes failed in world build:
http://logs.nslu2-linux.org/buildlogs/oe/oe-shr-core-branches/test-dependencies-2013-07-24/failed.world
101 recipes failed in minimal build (8 caused by boost):
http://logs.nslu2-linux.org/buildlogs/oe/oe-shr-core-branches/test-dependencies-2013-07-24/failed.min
216 packages (160 recipes) doesn't have deterministic dependencies
http://logs.nslu2-linux.org/buildlogs/oe/oe-shr-core-branches/test-dependencies-2013-07-24/failed.dependencies
Next results should be more interesting, because many issues are already fixed by change I've sent today to oe-core and oe-devel ML, but not all, because they were detected in build without x11 in DISTRO_FEATURES and without some layers (like meta-browser meta-efl meta-gnome meta-gpe meta-initramfs meta-webserver meta-xfce).
Cheers,
Re: test-dependencies.sh results from big world build
Quoted 36 lines · Martin Jansa
My biggest build with 20+ layers included finally finished today (after many days because there was hw issue on server where it was running, so it was slower then it should be).
The results are a bit messy because:
1) It had only some fixes from my last "autodetected dependencies" patchsets for oe-core and meta-oe
2) It was started when oe-core/master had broken boost, so many packages failed because of boost
3) It was started when oe-core/master had issues with qt-mobility (not sure if
all were fixed already)
4) It wasn't using latest version of test-dependencies script
5) It was using complete buildhistory repo which had many stalled packages like task-* and couple of architectures.But at least it will allow me to restrict recipes to rebuild from 1900 to only 256 which were failing in this build.
It was tested only for qemuarm.
Complete logs are here:
http://logs.nslu2-linux.org/buildlogs/oe/oe-shr-core-branches/test-dependencies-2013-07-24/
Interesting parts
11 recipes failed in world build:101 recipes failed in minimal build (8 caused by boost):
216 packages (160 recipes) doesn't have deterministic dependencies
Quoted 8 lines
Next results should be more interesting, because many issues are already fixed by change I've sent today to oe-core and oe-devel ML, but not all, because they were detected in build without x11 in
DISTRO_FEATURESand without some layers (like meta-browser meta-efl meta-gnome meta-gpe meta-initramfs meta-webserver meta-xfce).
I just wanted to say, this is some impressive work, nicely done. I'm amazed at how many recipes still don't have deterministic dependencies, even after all these years :)
Signature · 5 lines
Christopher Larson clarson at kergoth dot com Founder - BitBake, OpenEmbedded, OpenZaurus Maintainer - Tslib Senior Software Engineer, Mentor Graphics