Bug 10654 - Investigate binary component functionality
Summary: Investigate binary component functionality
Status: RESOLVED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: core (show other bugs)
Version: 2.2
Hardware: x86 Multiple
: Medium+ normal
Target Milestone: 2.3 M1
Assignee: Stephano Cetola
QA Contact:
URL:
Whiteboard:
Depends on:
Blocks: 10663
  Show dependency tree
 
Reported: 2016-11-14 22:49 UTC by Stephano Cetola
Modified: 2017-12-06 17:16 UTC (History)
4 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: No (bug/feature does not impact docs)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stephano Cetola 2016-11-14 22:49:35 UTC
Some customers ship BSPs which include binary components, however they do not want to share the source code. There should be some way of checking these binaries at build time to be sure they were built with the correct toolchain.
Comment 1 Stephano Cetola 2016-12-05 00:21:49 UTC
Things we should probably be checking:

1. Check for updates to the BSP that break compatibility
2. Check for customer-layer changes that break compatibility
3. Generate list of checks based on things like objdump, readelf, and ldd
4. Allow list of checks to be configurable (extendable?) by recipes
Comment 2 Stephano Cetola 2016-12-05 00:55:57 UTC
As an example (from PCCG):

They have two recipes: 1 for the creation of the binary and another recipe that the customer uses to deploy the binary to their rootfs. 

Problems they would like to solve:

1. The two recipes do not know about each other, so the user could technically include both recipes (which should throw a very obvious error).

2. If they change the location of libraries, older binaries will no longer be compatible. There is currently no check in place for this situation. They currently use PREFERRED_PROVIDER in the binary recipe, to ensure the correct version is installed.

3. If the customer changes something in their layer which breaks compatibility, the binary will simply break without any warnings or errors at build-time.