Bug 6241

Summary: tcpdump fails at do_configure due to change in autotools.bbclass + brittleness in recipe.
Product: [Build System, Metadata & Runtime] BitBake Reporter: Rob Calhoun <rcalhoun-bugzilla>
Component: bitbakeAssignee: Richard Purdie <richard.purdie>
Status: RESOLVED INVALID QA Contact:
Severity: minor    
Priority: Undecided CC: bluelightning, poky.bs.watcher, poky.watcher
Version: 1.7   
Target Milestone: ---   
Hardware: x86   
OS: x86_64   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)

Description Rob Calhoun 2014-04-25 18:37:56 UTC
This case refers to tcpdump from openembedded layer meta-networking:

https://github.com/openembedded/meta-oe/tree/master/meta-networking/recipes-support/tcpdump

tcpdump builds fine under branch daisy.
tcpdump fails at do_configure under branch master with file not found error, as follows

/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/tcpdump/master-4.3.0-r0$ more temp/log.do_configure
DEBUG: Executing python function sysroot_cleansstate
DEBUG: Python function sysroot_cleansstate finished
DEBUG: SITE files ['endian-little', 'bit-32', 'arm-common', 'common-linux', 'common-glibc', 'arm-linux', 'arm-linux-gnueabi', 'common']
DEBUG: Executing shell function autotools_preconfigure
DEBUG: Shell function autotools_preconfigure finished
DEBUG: Executing python function autotools_copy_aclocals
WARNING: /yocto/scepter/poky/build/tmp/sstate-control/manifest-x86_64-xproto-native.populate_sysroot not found
WARNING: /yocto/scepter/poky/build/tmp/sstate-control/manifest-x86_64-xcb-proto-native.populate_sysroot not found
WARNING: /yocto/scepter/poky/build/tmp/sstate-control/manifest-x86_64-util-macros-native.populate_sysroot not found
DEBUG: Python function autotools_copy_aclocals finished
DEBUG: Executing shell function do_configure
sed: can't read ./configure.in: No such file or directory

----------

differences:

After sorting the environment variables (helpful: maybe we should always do this), the diffs in run.do_configures are: 

/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/tcpdump/master-4.3.0-r0$ diff temp/run.do_configure ../4.3.0-r0/temp/run.do_configure
137c137
< 		ACLOCAL="aclocal --system-acdir=/yocto/scepter/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/tcpdump/4.3.0-r0/build/aclocal-copy/"
---
> 		ACLOCAL="aclocal --system-acdir=/yocto/scepter/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/tcpdump/4.3.0-r0/tcpdump-4.3.0/aclocal-copy/"
233c233
< cd '/yocto/scepter/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/tcpdump/4.3.0-r0/build'
---
> cd '/yocto/scepter/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/tcpdump/4.3.0-r0/tcpdump-4.3.0'


The new tcpdump/4.3.0-r0/build directory contains only aclocal-copy/, and was created in this commit:

http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/meta/classes/autotools.bbclass?id=69b6eaca3d9b635e8a61a0fdbd814b558e91901d

Reverting that change and rebuilding allows tcpdump to be built successfully. tcpdump_4.3.0.bb has a do_configure_prepend() and a do_configure_append() step, so the problem might be that tcpdump_4.3.0.bb is too brittle rather than anything wrong with autotools.bbclass. 

Please give me some feedback on that and I will try to fix tcpdump.
Comment 1 Paul Eggleton 2014-05-01 14:56:16 UTC
This is a conscious change to the core to require separate build and source directories for autotools (or force the use of the autotools-brokensep class instead), so technically this is an issue for the meta-networking layer that we don't track in this Bugzilla; so I'll mark this as resolved/invalid. 

However, as it happens a fix for tcpdump is in meta-openembedded master-next, and should be merged to master (and daisy when that branch arrives) very soon.