]> code.ossystems Code Review - openembedded-core.git/commitdiff
classes/conf: Add eventmasks for event handlers
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 12 Jun 2013 16:31:57 +0000 (16:31 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 14 Jun 2013 11:55:22 +0000 (12:55 +0100)
Now that bitbake supports masking events for event handlers, lets use
this so event handlers are only called for events they care about. This
lets us simplify the code indentation a bit at least as well as mildly
improving the event handling performance.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
19 files changed:
meta/classes/base.bbclass
meta/classes/bugzilla.bbclass
meta/classes/buildhistory.bbclass
meta/classes/buildstats.bbclass
meta/classes/cross.bbclass
meta/classes/distrodata.bbclass
meta/classes/migrate_localcount.bbclass
meta/classes/multilib.bbclass
meta/classes/multilib_global.bbclass
meta/classes/native.bbclass
meta/classes/nativesdk.bbclass
meta/classes/packageinfo.bbclass
meta/classes/prexport.bbclass
meta/classes/primport.bbclass
meta/classes/recipe_sanity.bbclass
meta/classes/sanity.bbclass
meta/classes/typecheck.bbclass
meta/conf/distro/include/csl-versions.inc
meta/conf/distro/include/tcmode-external-sourcery.inc

index 8af104f76542e37c95c8609d4c356ebecfcbb8e2..3a0ff6bd635acaf4ef58d1f046576a91a50a853f 100644 (file)
@@ -32,12 +32,12 @@ def oe_import(d):
         inject(toimport.split(".", 1)[0], imported)
 
 python oe_import_eh () {
-    if isinstance(e, bb.event.ConfigParsed):
-        oe_import(e.data)
-        e.data.setVar("NATIVELSBSTRING", lsb_distro_identifier(e.data))
+    oe_import(e.data)
+    e.data.setVar("NATIVELSBSTRING", lsb_distro_identifier(e.data))
 }
 
 addhandler oe_import_eh
+oe_import_eh[eventmask] = "bb.event.ConfigParsed"
 
 def lsb_distro_identifier(d):
     adjust = d.getVar('LSB_DISTRO_ADJUST', True)
@@ -299,6 +299,7 @@ def buildcfg_neededvars(d):
         bb.fatal('The following variable(s) were not set: %s\nPlease set them directly, or choose a MACHINE or DISTRO that sets them.' % ', '.join(pesteruser))
 
 addhandler base_eventhandler
+base_eventhandler[eventmask] = "bb.event.ConfigParsed bb.event.BuildStarted"
 python base_eventhandler() {
     if isinstance(e, bb.event.ConfigParsed):
         e.data.setVar('BB_VERSION', bb.__version__)
index 006763d2c72030505f299c3bf71930ee24d9fb93..3fc89564281bcbd32ab0cba5864f6d515c79f36b 100644 (file)
@@ -71,6 +71,7 @@ def bugzilla_add_comment(debug_file, server, args, bug_number, text):
         return False
 
 addhandler bugzilla_eventhandler
+bugzilla_eventhandler[eventmask] = "bb.event.MsgNote bb.build.TaskFailed"
 python bugzilla_eventhandler() {
     import glob
     import xmlrpclib, httplib
index 450eb7cb80a7f82224fee3d9f73f34c2e03c0704..c8fd68c39e0060c9f467abd2d13faa126619deb1 100644 (file)
@@ -525,13 +525,13 @@ END
 }
 
 python buildhistory_eventhandler() {
-    if isinstance(e, bb.event.BuildCompleted):
-        if e.data.getVar('BUILDHISTORY_FEATURES', True).strip():
-            if e.data.getVar("BUILDHISTORY_COMMIT", True) == "1":
-                bb.build.exec_func("buildhistory_commit", e.data)
+    if e.data.getVar('BUILDHISTORY_FEATURES', True).strip():
+        if e.data.getVar("BUILDHISTORY_COMMIT", True) == "1":
+            bb.build.exec_func("buildhistory_commit", e.data)
 }
 
 addhandler buildhistory_eventhandler
+buildhistory_eventhandler[eventmask] = "bb.event.BuildCompleted"
 
 
 # FIXME this ought to be moved into the fetcher
index e12e14fcd6d0823fef66f58876550999768cba82..b98ba3bea7932686e26c380d91ed8b0fcd576f06 100644 (file)
@@ -278,4 +278,5 @@ python run_buildstats () {
 }
 
 addhandler run_buildstats
+run_buildstats[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted bb.build.TaskStarted bb.build.TaskSucceeded bb.build.TaskFailed"
 
index eaba4d113c67183a1bba7587b33f62d3068ed26e..54584fea528f0910897e5afcd79902f854088578 100644 (file)
@@ -58,9 +58,6 @@ do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE
 do_populate_sysroot[stamp-extra-info] = ""
 
 python cross_virtclass_handler () {
-    if not isinstance(e, bb.event.RecipePreFinalise):
-        return
-
     classextend = e.data.getVar('BBCLASSEXTEND', True) or ""
     if "cross" not in classextend:
         return
@@ -73,6 +70,7 @@ python cross_virtclass_handler () {
 }
 
 addhandler cross_virtclass_handler
+cross_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
 
 do_install () {
        oe_runmake 'DESTDIR=${D}' install
index cedacc214c3ec1df39114cb630377c628b228556..3ff62684aa1b20e1a385bf2b6c585718b318f928 100644 (file)
@@ -1,15 +1,14 @@
 include conf/distro/include/package_regex.inc
 addhandler distro_eventhandler
+distro_eventhandler[eventmask] = "bb.event.BuildStarted"
 python distro_eventhandler() {
-
-    if bb.event.getName(e) == "BuildStarted":
-        import oe.distro_check as dc
-        logfile = dc.create_log_file(e.data, "distrodata.csv")
-        lf = bb.utils.lockfile("%s.lock" % logfile)
-        f = open(logfile, "a")
-        f.write("Package,Description,Owner,License,VerMatch,Version,Upsteam,Reason,Recipe Status,Distro 1,Distro 2,Distro 3\n")
-        f.close()
-        bb.utils.unlockfile(lf)
+    import oe.distro_check as dc
+    logfile = dc.create_log_file(e.data, "distrodata.csv")
+    lf = bb.utils.lockfile("%s.lock" % logfile)
+    f = open(logfile, "a")
+    f.write("Package,Description,Owner,License,VerMatch,Version,Upsteam,Reason,Recipe Status,Distro 1,Distro 2,Distro 3\n")
+    f.close()
+    bb.utils.unlockfile(lf)
 
     return
 }
@@ -197,6 +196,7 @@ do_distrodataall() {
 }
 
 addhandler checkpkg_eventhandler
+ checkpkg_eventhandler[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted"
 python checkpkg_eventhandler() {
     def parse_csv_file(filename):
         package_dict = {}
@@ -793,11 +793,11 @@ do_checkpkgall() {
 }
 
 addhandler distro_check_eventhandler
+distro_check_eventhandler bb.event.BuildStarted
 python distro_check_eventhandler() {
-    if bb.event.getName(e) == "BuildStarted":
-        """initialize log files."""
-        import oe.distro_check as dc
-        result_file = dc.create_log_file(e.data, "distrocheck.csv")
+    """initialize log files."""
+    import oe.distro_check as dc
+    result_file = dc.create_log_file(e.data, "distrocheck.csv")
     return
 }
 
@@ -839,16 +839,16 @@ do_distro_checkall() {
 #then we can search those recipes which license text isn't exsit in common-licenses directory
 #
 addhandler checklicense_eventhandler
+checklicense_eventhandler[eventmask] = "bb.event.BuildStarted"
 python checklicense_eventhandler() {
-    if bb.event.getName(e) == "BuildStarted":
-        """initialize log files."""
-        import oe.distro_check as dc
-        logfile = dc.create_log_file(e.data, "missinglicense.csv")
-        lf = bb.utils.lockfile("%s.lock" % logfile)
-        f = open(logfile, "a")
-        f.write("Package\tLicense\tMissingLicense\n")
-        f.close()
-        bb.utils.unlockfile(lf)
+    """initialize log files."""
+    import oe.distro_check as dc
+    logfile = dc.create_log_file(e.data, "missinglicense.csv")
+    lf = bb.utils.lockfile("%s.lock" % logfile)
+    f = open(logfile, "a")
+    f.write("Package\tLicense\tMissingLicense\n")
+    f.close()
+    bb.utils.unlockfile(lf)
     return
 }
 
index 3916ad446187050807f20697610614f04b659a4f..aa0df8bb76ebaae403c1ef9b27ecafdb02cf3977 100644 (file)
@@ -6,41 +6,41 @@ python migrate_localcount_handler () {
     if not e.data:
         return
 
-    if isinstance(e, bb.event.RecipeParsed):
-        pv = e.data.getVar('PV', True)
-        if not 'AUTOINC' in pv:
-            return
-
-        localcounts = bb.persist_data.persist('BB_URI_LOCALCOUNT', e.data)
-        pn = e.data.getVar('PN', True)
-        revs = localcounts.get_by_pattern('%%-%s_rev' % pn)
-        counts = localcounts.get_by_pattern('%%-%s_count' % pn)
-        if not revs or not counts:
-            return
-
-        if len(revs) != len(counts):
-            bb.warn("The number of revs and localcounts don't match in %s" % pn)
-            return
-
-        version = e.data.getVar('PRAUTOINX', True)
-        srcrev = bb.fetch2.get_srcrev(e.data)
-        base_ver = 'AUTOINC-%s' % version[:version.find(srcrev)]
-        pkgarch = e.data.getVar('PACKAGE_ARCH', True)
-        value = max(int(count) for count in counts)
-
-        if len(revs) == 1:
-            if srcrev != ('AUTOINC+%s' % revs[0]):
-                value += 1
-        else:
-            value += 1
+    pv = e.data.getVar('PV', True)
+    if not 'AUTOINC' in pv:
+        return
+
+    localcounts = bb.persist_data.persist('BB_URI_LOCALCOUNT', e.data)
+    pn = e.data.getVar('PN', True)
+    revs = localcounts.get_by_pattern('%%-%s_rev' % pn)
+    counts = localcounts.get_by_pattern('%%-%s_count' % pn)
+    if not revs or not counts:
+        return
 
-        bb.utils.mkdirhier(e.data.getVar('PRSERV_DUMPDIR', True))
-        df = e.data.getVar('LOCALCOUNT_DUMPFILE', True)
-        flock = bb.utils.lockfile("%s.lock" % df)
-        with open(df, 'a') as fd:
-            fd.write('PRAUTO$%s$%s$%s = "%s"\n' %
-                    (base_ver, pkgarch, srcrev, str(value)))
-        bb.utils.unlockfile(flock)
+    if len(revs) != len(counts):
+        bb.warn("The number of revs and localcounts don't match in %s" % pn)
+        return
+
+    version = e.data.getVar('PRAUTOINX', True)
+    srcrev = bb.fetch2.get_srcrev(e.data)
+    base_ver = 'AUTOINC-%s' % version[:version.find(srcrev)]
+    pkgarch = e.data.getVar('PACKAGE_ARCH', True)
+    value = max(int(count) for count in counts)
+
+    if len(revs) == 1:
+        if srcrev != ('AUTOINC+%s' % revs[0]):
+            value += 1
+    else:
+        value += 1
+
+    bb.utils.mkdirhier(e.data.getVar('PRSERV_DUMPDIR', True))
+    df = e.data.getVar('LOCALCOUNT_DUMPFILE', True)
+    flock = bb.utils.lockfile("%s.lock" % df)
+    with open(df, 'a') as fd:
+        fd.write('PRAUTO$%s$%s$%s = "%s"\n' %
+                (base_ver, pkgarch, srcrev, str(value)))
+    bb.utils.unlockfile(flock)
 }
 
 addhandler migrate_localcount_handler
+migrate_localcount_handler[eventmask] = "bb.event.RecipeParsed"
index 9337f65a706e47417dc61e099a4ba1e9cf906a02..b04825f98761d90bd61bcd6ced5d41a7d72856ee 100644 (file)
@@ -1,7 +1,4 @@
 python multilib_virtclass_handler () {
-    if not isinstance(e, bb.event.RecipePreFinalise):
-        return
-
     cls = e.data.getVar("BBEXTENDCURR", True)
     variant = e.data.getVar("BBEXTENDVARIANT", True)
     if cls != "multilib" or not variant:
@@ -60,6 +57,7 @@ python multilib_virtclass_handler () {
 }
 
 addhandler multilib_virtclass_handler
+multilib_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
 
 STAGINGCC_prepend = "${BBEXTENDVARIANT}-"
 
index 85f2d8d15d97c2e1c09ca0b3f2796393d83ea0b2..3315ba932788b497f04f8e86b534e09a50d526a2 100644 (file)
@@ -43,4 +43,5 @@ python multilib_virtclass_handler_global () {
 }
 
 addhandler multilib_virtclass_handler_global
+multilib_virtclass_handler_global[eventmask] = "bb.event.RecipePreFinalise bb.event.RecipeParsed"
 
index cd930f0702f353cb3d921537f7b52e6258195be7..04f0d06ad9f5424abac8a816abfc8ff124c29844 100644 (file)
@@ -104,9 +104,6 @@ CLASSOVERRIDE = "class-native"
 PATH_prepend = "${COREBASE}/scripts/native-intercept:"
 
 python native_virtclass_handler () {
-    if not isinstance(e, bb.event.RecipePreFinalise):
-        return
-
     classextend = e.data.getVar('BBCLASSEXTEND', True) or ""
     if "native" not in classextend:
         return
@@ -152,6 +149,7 @@ python native_virtclass_handler () {
 }
 
 addhandler native_virtclass_handler
+native_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
 
 do_package[noexec] = "1"
 do_packagedata[noexec] = "1"
index 8b689e760ac24f23402b676385da87d845dc09d0..96e1b42a49c5b5fe4786ca2fe71a32e6c8642904 100644 (file)
@@ -60,9 +60,6 @@ export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}${libdir}/pkgconfig"
 export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}"
 
 python nativesdk_virtclass_handler () {
-    if not isinstance(e, bb.event.RecipePreFinalise):
-        return
-
     pn = e.data.getVar("PN", True)
     if not pn.endswith("-nativesdk") or pn.startswith("nativesdk-"):
         return
@@ -89,5 +86,6 @@ python () {
 }
 
 addhandler nativesdk_virtclass_handler
+nativesdk_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
 
 do_populate_sysroot[stamp-extra-info] = ""
index 4709bea35959a567d7aafdaf61a901dc771d6acd..42fcd04150a22cee38a21590be36ca3f66bdd756 100644 (file)
@@ -1,29 +1,29 @@
 python packageinfo_handler () {
-    if isinstance(e, bb.event.RequestPackageInfo):
-        import oe.packagedata
-        pkginfolist = []
-        tmpdir = e.data.getVar('TMPDIR', True)
-        target_vendor = e.data.getVar('TARGET_VENDOR', True)
-        target_os = e.data.getVar('TARGET_OS', True)
-        package_archs = e.data.getVar('PACKAGE_ARCHS', True)
-        packaging = e.data.getVar('PACKAGE_CLASSES', True).split()[0].split('_')[1]
-        deploy_dir = e.data.getVar('DEPLOY_DIR', True) + '/' + packaging
-                                           
-        for arch in package_archs.split():
-            pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-' + target_os + '/runtime/'
-            if os.path.exists(pkgdata_dir):
-                for root, dirs, files in os.walk(pkgdata_dir):
-                    for pkgname in files:
-                        if pkgname.endswith('.packaged'):
-                            pkgname = pkgname[:-9]
-                            pkgdatafile = root + pkgname
-                            try:
-                                sdata = oe.packagedata.read_pkgdatafile(pkgdatafile)
-                                sdata['PKG'] = pkgname
-                                pkginfolist.append(sdata)
-                            except Exception as e:
-                                bb.warn("Failed to read pkgdata file %s: %s: %s" % (pkgdatafile, e.__class__, str(e)))
-        bb.event.fire(bb.event.PackageInfo(pkginfolist), e.data)
+    import oe.packagedata
+    pkginfolist = []
+    tmpdir = e.data.getVar('TMPDIR', True)
+    target_vendor = e.data.getVar('TARGET_VENDOR', True)
+    target_os = e.data.getVar('TARGET_OS', True)
+    package_archs = e.data.getVar('PACKAGE_ARCHS', True)
+    packaging = e.data.getVar('PACKAGE_CLASSES', True).split()[0].split('_')[1]
+    deploy_dir = e.data.getVar('DEPLOY_DIR', True) + '/' + packaging
+                                       
+    for arch in package_archs.split():
+        pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-' + target_os + '/runtime/'
+        if os.path.exists(pkgdata_dir):
+            for root, dirs, files in os.walk(pkgdata_dir):
+                for pkgname in files:
+                    if pkgname.endswith('.packaged'):
+                        pkgname = pkgname[:-9]
+                        pkgdatafile = root + pkgname
+                        try:
+                            sdata = oe.packagedata.read_pkgdatafile(pkgdatafile)
+                            sdata['PKG'] = pkgname
+                            pkginfolist.append(sdata)
+                        except Exception as e:
+                            bb.warn("Failed to read pkgdata file %s: %s: %s" % (pkgdatafile, e.__class__, str(e)))
+    bb.event.fire(bb.event.PackageInfo(pkginfolist), e.data)
 }
 
 addhandler packageinfo_handler
+packageinfo_handler[eventmask] = "bb.event.RequestPackageInfo"
index 6b9d540989ac22e53b45576380961be4d2797510..16c4bf2f23705beece0c8fbfbf1ceecb44b8357c 100644 (file)
@@ -55,3 +55,4 @@ python prexport_handler () {
 }
 
 addhandler prexport_handler
+prexport_handler bb.event.RecipeParsed bb.event.ParseStarted bb.event.ParseCompleted"
index 37b0d6b1b73ca68aa10741055a54607e2411ae97..8ed45f03f004dfc38d0e42a4092e9a8b2d479b34 100644 (file)
@@ -18,3 +18,4 @@ python primport_handler () {
 }
 
 addhandler primport_handler
+primport_handler[eventmask] = "bb.event.ParseCompleted bb.event.ParseStarted"
index bf378eafc1f189dbc7c761f4543b2599105fc5cf..8b3a1c9571eeaef249e61d54f16d292ecc6b5525 100644 (file)
@@ -140,9 +140,6 @@ do_recipe_sanity_all () {
 addtask recipe_sanity_all after do_recipe_sanity
 
 python recipe_sanity_eh () {
-    if bb.event.getName(e) != "ConfigParsed":
-        return
-
     d = e.data
 
     cfgdata = {}
@@ -168,3 +165,4 @@ python recipe_sanity_eh () {
     DataSmart.renameVar = myrename
 }
 addhandler recipe_sanity_eh
+recipe_sanity_eh[eventmask] = "bb.event.ConfigParsed"
index e692f33839d17efba0c1591c812f059a13f7d687..3b9934b488c9d7e52c7c17ce3f15fe9fc5176fc7 100644 (file)
@@ -672,6 +672,7 @@ def copy_data(e):
     return sanity_data
 
 addhandler check_sanity_eventhandler
+check_sanity_eventhandler[eventmask] = "bb.event.ConfigParsed bb.event.SanityCheck bb.event.NetworkTest"
 python check_sanity_eventhandler() {
     if bb.event.getName(e) == "ConfigParsed" and e.data.getVar("BB_WORKERCONTEXT", True) != "1" and e.data.getVar("DISABLE_SANITY_CHECKS", True) != "1":
         sanity_data = copy_data(e)
index 353532d73cf919eedd2b7bb3f790a61dedc518a8..72da932232892fd6437afa8a7beaf5d1a3bf05ab 100644 (file)
@@ -4,9 +4,9 @@
 
 python check_types() {
     import oe.types
-    if isinstance(e, bb.event.ConfigParsed):
-        for key in e.data.keys():
-            if e.data.getVarFlag(key, "type"):
-                oe.data.typed_value(key, e.data)
+    for key in e.data.keys():
+        if e.data.getVarFlag(key, "type"):
+            oe.data.typed_value(key, e.data)
 }
 addhandler check_types
+check_types[eventmask] = "bb.event.ConfigParsed"
index e8f52d272d5e1f94842195d9b9f9de4690b2f775..f3b491cb16a0be0e44ef270834c9549e250ff96e 100644 (file)
@@ -88,8 +88,6 @@ def csl_get_gdb_version(d):
                return first_line.split()[-1]
 
 python csl_version_handler () {
-    if not isinstance(e, bb.event.ConfigParsed):
-        return
     d = e.data
     ld = d.createCopy()
     ld.finalize()
@@ -101,6 +99,7 @@ python csl_version_handler () {
     d.setVar('CSL_VER_GDB', csl_get_gdb_version(ld))
 }
 addhandler csl_version_handler
+csl_version_handler[eventmask] = "bb.event.ConfigParsed"
 
 # Ensure that any variable which includes the --sysroot (CC, CXX, etc) also
 # depends on the toolchain version
index 098c724e02356011d78c86fdf549961ec2035728..53e6653e797a005a47ec5c836e0fb2888bf099b2 100644 (file)
@@ -79,9 +79,6 @@ EXTERNAL_TOOLCHAIN_SYSROOT_CMD += "${@csl_multilib_arg(d)}"
 # to our staging toolchain bindir.
 
 python toolchain_metadata_setup () {
-    if not isinstance(e, bb.event.ConfigParsed):
-        return
-
     d = e.data
 
     l = d.createCopy()
@@ -90,17 +87,16 @@ python toolchain_metadata_setup () {
         d.setVar('TOOLCHAIN_PATH_ADD', '')
 }
 addhandler toolchain_metadata_setup
+toolchain_metadata_setup[eventmask] = "bb.event.ConfigParsed"
 
 python toolchain_setup () {
-    if not isinstance(e, bb.event.BuildStarted):
-        return
-
     d = e.data
 
     if not d.getVar('TOOLCHAIN_PATH_ADD', True):
         populate_toolchain_links(d)
 }
 addhandler toolchain_setup
+toolchain_setup[eventmask] = "bb.event.BuildStarted"
 
 def populate_toolchain_links(d):
     import errno