Go to file
Richard Purdie c5cc4993f0 sstatesig/sstate: Add support for locked down sstate cache usage
I've been giving things some thought, specifically why sstate doesn't
get used more and why we have people requesting external toolchains. I'm
guessing the issue is that people don't like how often sstate can change
and the lack of an easy way to lock it down.

Locking it down is actually quite easy so patch implements some basics
of how you can do this (for example to a specific toolchain). With an
addition like this to local.conf (or wherever):

SIGGEN_LOCKEDSIGS = "\
gcc-cross:do_populate_sysroot:a8d91b35b98e1494957a2ddaf4598956 \
eglibc:do_populate_sysroot:13e8c68553dc61f9d67564f13b9b2d67 \
eglibc:do_packagedata:bfca0db1782c719d373f8636282596ee \
gcc-cross:do_packagedata:4b601ff4f67601395ee49c46701122f6 \
"

the code at the end of the email will force the hashes to those values
for the recipes mentioned. The system would then find and use those
specific objects from the sstate cache instead of trying to build
anything.

Obviously this is a little simplistic, you might need to put an override
against this to only apply those revisions for a specific architecture
for example. You'd also probably want to put code in the sstate hash
validation code to ensure it really did install these from sstate since
if it didn't you'd want to abort the build.

This patch also implements support to add to bitbake -S which dumps the
locked sstate checksums for each task into a ready prepared include file
locked-sigs.inc (currently placed into cwd). There is a function,
bb.parse.siggen.dump_lockedsigs() which can be called to trigger the
same functionality from task space.

A warning is added to sstate.bbclass through a call back into the siggen
class to warn if objects are not used from the locked cache. The
SIGGEN_ENFORCE_LOCKEDSIGS variable controls whether this is just a warning
or a fatal error.

A script is provided to generate sstate directory from a locked-sigs file.

(From OE-Core rev: 7e14784f2493a19c6bfe3ec3f05a5cf9797a2f22)

(From OE-Core rev: 884d4fa3e77cf32836f14a113c11489076f4a84d)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-09-17 22:00:25 +01:00
bitbake bitbake: data_smart: Clarify what 'computed' means in the data store history context 2014-09-16 22:15:24 +01:00
documentation yocto-project-qs, ref-manual: Added 'socat' package to essentials. 2014-08-12 13:50:32 +01:00
meta sstatesig/sstate: Add support for locked down sstate cache usage 2014-09-17 22:00:25 +01:00
meta-selftest Basic recipe formatting fixes 2014-01-02 12:50:21 +00:00
meta-skeleton linux-yocto-custom: provide defconfig guidance 2014-05-06 17:59:17 +01:00
meta-yocto distro/poky: Add Debian 7.5 and 7.6 version as validated 2014-09-03 16:00:29 +01:00
meta-yocto-bsp yocto-bsps: update SRCREVs to linux-yocto latest 2014-09-01 14:35:42 +01:00
scripts sstatesig/sstate: Add support for locked down sstate cache usage 2014-09-17 22:00:25 +01:00
.gitignore bitbake: gitignore: Update for recent docs changes 2014-01-27 21:03:13 +00:00
.templateconf .templateconf: New file for customized template defaults 2014-03-11 08:14:27 -07:00
LICENSE Fix license notices for OE-Core 2014-01-02 12:58:54 +00:00
oe-init-build-env oe-init-build-env: Improve script sourcing detection. 2014-03-11 08:11:41 -07:00
oe-init-build-env-memres oe-init-build-env-memres: Add auto port functionality 2013-12-02 11:28:27 +00:00
README README: fix DISTRO = "" reference 2014-01-02 12:58:54 +00:00
README.hardware mpc8315e-rdb: add the example about booting from jffs2 root 2014-06-17 17:56:22 +01:00

Poky
====

Poky is an integration of various components to form a complete prepackaged
build system and development environment. It features support for building
customised embedded device style images. There are reference demo images
featuring a X11/Matchbox/GTK themed UI called Sato. The system supports
cross-architecture application development using QEMU emulation and a
standalone toolchain and SDK with IDE integration.

Additional information on the specifics of hardware that Poky supports
is available in README.hardware. Further hardware support can easily be added
in the form of layers which extend the systems capabilities in a modular way.

As an integration layer Poky consists of several upstream projects such as 
BitBake, OpenEmbedded-Core, Yocto documentation and various sources of information 
e.g. for the hardware support. Poky is in turn a component of the Yocto Project.

The Yocto Project has extensive documentation about the system including a 
reference manual which can be found at:
    http://yoctoproject.org/documentation

OpenEmbedded-Core is a layer containing the core metadata for current versions
of OpenEmbedded. It is distro-less (can build a functional image with
DISTRO = "nodistro") and contains only emulated machine support.

For information about OpenEmbedded, see the OpenEmbedded website:
    http://www.openembedded.org/

Where to Send Patches
=====================

As Poky is an integration repository, patches against the various components
should be sent to their respective upstreams.

bitbake:
    bitbake-devel@lists.openembedded.org

meta-yocto:
    poky@yoctoproject.org

Most everything else should be sent to the OpenEmbedded Core mailing list.  If
in doubt, check the oe-core git repository for the content you intend to modify.
Before sending, be sure the patches apply cleanly to the current oe-core git
repository.
    openembedded-core@lists.openembedded.org

Note: The scripts directory should be treated with extra care as it is a mix
      of oe-core and poky-specific files.