conf/layer.conf: Update LAYERSERIES_COMPAT to warrior
[meta-ossystems-base.git] / classes / ossystems-srcrev-handler.bbclass
1 # -*- python -*-
2 # ossystems-srcrev-handler.bbclass
3 # Copyright (C) 2013, 2014 O.S. Systems Software Ltda.  All Rights Reserved
4 # Released under the MIT license (see packages/COPYING)
5 #
6 # This class helps the management of several project components of a product.
7 # The class uses a file to describe the recipe and the version to use for
8 # stable releases but also easy the use of top of tree builds of those
9 # components for development purposes.
10 #
11 # The file should have the following format:
12 #
13 # <recipe> <version> <hash>
14 #
15 # To use the top of tree for building, OSSYSTEMS_SRCREV_AUTOREV must be
16 # set to "1". Otherwise it uses the stable revisions.
17 #
18 # O.S. Systems has a set of tools to facilitate the release management
19 # of products based on Yocto Project and this class is part of the system.
20
21 def _stable_release(d):
22     return (d.getVar('OSSYSTEMS_SRCREV_AUTOREV', True) != "1")
23
24 def ossystems_srcrev_handler(d):
25     srcrevs = d.getVar('OSSYSTEMS_SRCREVS_FILE', True)
26     if not srcrevs:
27         bb.debug(1, "O.S. Systems SRCREV handler: OSSYSTEMS_SRCREVS_FILE is not set.")
28         return
29
30     if not os.path.exists(srcrevs):
31         bb.error("O.S. Systems SRCREV handler: '%s' doesn't exists." % srcrevs)
32         return
33
34     if _stable_release(d):
35         bb.plain("O.S. Systems SRCREV handler: Using stable versions to build recipes...")
36     else:
37         bb.plain("O.S. Systems SRCREV handler: Using 'AUTOREV' to build recipes...")
38
39     with open(srcrevs, 'r') as srcrevs_fd:
40         for line in srcrevs_fd.readlines():
41             pkg, version, srcrev = line.split()
42
43             if _stable_release(d):
44                 bb.debug(1, "O.S. Systems SRCREV handler: Setting %s for version %s (%s)..."
45                          % (pkg, version, srcrev))
46                 rev = srcrev
47             else:
48                 bb.debug(1, "O.S. Systems SRCREV handler: Setting %s for 'AUTOREV'..."
49                          % (pkg))
50                 rev = "${AUTOREV}"
51
52             d.setVar("SRCREV_pn-%s" % pkg, rev)
53
54 addhandler ossystems_srcrev_eventhandler
55 python ossystems_srcrev_eventhandler() {
56     if bb.event.getName(e) == "ConfigParsed":
57         ossystems_srcrev_handler(e.data)
58 }