Fixed
Created: Sep 16, 2016
Updated: Dec 3, 2018
Resolved Date: Dec 18, 2016
Found In Version: 8.0.0.5
Fix Version: 8.0.0.13
Severity: Standard
Applicable for: Wind River Linux 8
Component/s: Build & Config
Some packages in Yocto-based WindRiver Linux seem to be missing dependencies on other recipes.
Let’s take a look at one particular test case: "nettle - missing dependency on openssl"
".
The replication steps are quite simple:
1. configure a brand new project "A"; make openssl && make nettle
2. configure a brand new project "B" on the same host; make nettle
3. compare diff -qr B/build/nettle/ A/build/nettle/
There are lots of binaries and libraries that differ (see also the attached log).
Some of them are differences between Makefiles, some are differences in config.h, which is then included in many if not all .c files, thus making them build with different features enabled. nettle isn't one I checked to see where the defines HAVE_OPENSSL_* are used and how important it was. It is possible it is changing the config.h, but no file is actually looking at those defines, in which case I would be ok ignoring it, but it was easier to fix than investigate how important it was for us. I did check a package at random (vim) and found at least in that case the difference caused different features to be included in the build, so it seems likely many of these could potentially be problems. If the customer were using that feature of that package it would randomly not work depending on the build.
build/nettle/package/usr/src/debug/nettle/3.1.1-r0/build/config.h
72c72
< /* #undef HAVE_OPENSSL_AES_H */
---
> #define HAVE_OPENSSL_AES_H 1
75c75
< /* #undef HAVE_OPENSSL_BLOWFISH_H */
---
> #define HAVE_OPENSSL_BLOWFISH_H 1
78c78
< /* #undef HAVE_OPENSSL_CAST_H */
---
> #define HAVE_OPENSSL_CAST_H 1
81c81
< /* #undef HAVE_OPENSSL_DES_H */
---
> #define HAVE_OPENSSL_DES_H 1
84c84
< /* #undef HAVE_OPENSSL_ECDSA_H */
---
> #define HAVE_OPENSSL_ECDSA_H 1
configure --enable-board=intel-x86_64 --enable-rootfs=glibc-core --enable-reconfig --with-license-blacklist=GPLv3,LGPLv3,AGPL-3.0 --with-rcpl-version=0005
The replication steps for one specific example are as follows:
1. configure a brand new project "A"; make openssl && make nettle
2. configure a brand new project "B" on the same host; make nettle
3. compare diff -qr B/build/nettle/ A/build/nettle/