Exemple #1
0
        def getIncludes(includeCfg):

            # Splitting lists
            self._console.debug("Preparing include configuration...")
            includeWithDeps, includeNoDeps = textutil.splitPrefixedStrings(
                includeCfg)
            self._console.indent()

            if len(includeWithDeps) > 0 or len(includeNoDeps) > 0:
                # Configuration feedback
                self._console.debug(
                    "Including %s items smart, %s items explicit" %
                    (len(includeWithDeps), len(includeNoDeps)))

                if len(includeNoDeps) > 0:
                    if self._job.get("config-warnings/include", True):
                        self._console.warn(
                            "Explicitly included classes may not work")  # ?!

                # Resolve regexps
                self._console.debug("Expanding expressions...")
                try:
                    includeWithDeps = textutil.expandGlobs(
                        includeWithDeps, self._classesObj)
                    includeNoDeps = textutil.expandGlobs(
                        includeNoDeps, self._classesObj)
                except RuntimeError:
                    self._console.error("Invalid include block: %s" %
                                        includeCfg)
                    raise

            elif self._job.get("packages"):
                # Special part include handling
                self._console.info("Including part classes...")
                partsCfg = partsCfg = self._job.get("packages/parts", {})
                includeWithDeps = []
                for partId in partsCfg:
                    includeWithDeps.extend(partsCfg[partId])

                # Configuration feedback
                self._console.debug(
                    "Including %s items smart, %s items explicit" %
                    (len(includeWithDeps), len(includeNoDeps)))

                # Resolve regexps
                self._console.debug("Expanding expressions...")
                includeWithDeps = textutil.expandGlobs(includeWithDeps,
                                                       self._classesObj)

            self._console.outdent()

            return includeWithDeps, includeNoDeps
Exemple #2
0
        def getIncludes(includeCfg):

            # Splitting lists
            self._console.debug("Preparing include configuration...")
            includeWithDeps, includeNoDeps = textutil.splitPrefixedStrings(includeCfg)
            self._console.indent()

            if len(includeWithDeps) > 0 or len(includeNoDeps) > 0:
                # Configuration feedback
                self._console.debug(
                    "Including %s items smart, %s items explicit" % (len(includeWithDeps), len(includeNoDeps))
                )

                if len(includeNoDeps) > 0:
                    if self._job.get("config-warnings/include", True):
                        self._console.warn("Explicitly included classes may not work")  # ?!

                # Resolve regexps
                self._console.debug("Expanding expressions...")
                try:
                    includeWithDeps = textutil.expandGlobs(includeWithDeps, self._classesObj)
                    includeNoDeps = textutil.expandGlobs(includeNoDeps, self._classesObj)
                except RuntimeError:
                    self._console.error("Invalid include block: %s" % includeCfg)
                    raise

            elif self._job.get("packages"):
                # Special part include handling
                self._console.info("Including part classes...")
                partsCfg = partsCfg = self._job.get("packages/parts", {})
                includeWithDeps = []
                for partId in partsCfg:
                    includeWithDeps.extend(partsCfg[partId])

                # Configuration feedback
                self._console.debug(
                    "Including %s items smart, %s items explicit" % (len(includeWithDeps), len(includeNoDeps))
                )

                # Resolve regexps
                self._console.debug("Expanding expressions...")
                includeWithDeps = textutil.expandGlobs(includeWithDeps, self._classesObj)

            self._console.outdent()

            return includeWithDeps, includeNoDeps
Exemple #3
0
def runLogUnusedClasses(jobconf, script):
    if not jobconf.get("log/classes-unused", False):
        return

    console = Context.console
    packages = script.packagesSorted()
    namespaces = jobconf.get("log/classes-unused", [])

    console.info("Find unused classes...")
    console.indent()

    usedClassesArr = {}
    allClassesArr = {}
    for namespace in namespaces:
        usedClassesArr[namespace] = []
        allClassesArr[namespace] = []

    # used classes of interest
    for packageId, package in enumerate(packages):
        for namespace in namespaces:
            packageClasses = textutil.expandGlobs(
                [namespace], [x.id for x in package.classes])
            usedClassesArr[namespace].extend(packageClasses)

    # available classes of interest
    for namespace in namespaces:
        allClassesArr[namespace] = textutil.expandGlobs([namespace],
                                                        script.classesAll)

    # check
    for namespace in namespaces:
        console.info("Checking namespace: %s" % namespace)
        console.indent()
        for cid in allClassesArr[namespace]:
            if cid not in usedClassesArr[namespace]:
                console.info("Unused class: %s" % cid)
        console.outdent()
    console.outdent()

    return
Exemple #4
0
def runLogUnusedClasses(jobconf, script):
    if not jobconf.get("log/classes-unused", False):
        return

    console    = Context.console
    packages   = script.packagesSorted()
    namespaces = jobconf.get("log/classes-unused", [])

    console.info("Find unused classes...");
    console.indent()

    usedClassesArr = {}
    allClassesArr = {}
    for namespace in namespaces:
        usedClassesArr[namespace] = []
        allClassesArr[namespace]  = []

    # used classes of interest
    for packageId, package in enumerate(packages):
        for namespace in namespaces:
            packageClasses = textutil.expandGlobs([namespace], [x.id for x in package.classes])
            usedClassesArr[namespace].extend(packageClasses)

    # available classes of interest
    for namespace in namespaces:
        allClassesArr[namespace] = textutil.expandGlobs([namespace], script.classesAll)

    # check
    for namespace in namespaces:
        console.info("Checking namespace: %s" % namespace);
        console.indent()
        for cid in allClassesArr[namespace]:
            if cid not in usedClassesArr[namespace]:
                console.info("Unused class: %s" % cid)
        console.outdent()
    console.outdent()

    return
Exemple #5
0
            def evalPackagesConfig(excludeWithDeps, classList, variants):

                # Reading configuration
                partsCfg = self._job.get("packages/parts", {})

                # Expanding expressions
                self._console.debug("Expanding include expressions...")
                partIncludes = {}
                for partId in partsCfg:
                    partIncludes[partId] = textutil.expandGlobs(partsCfg[partId]['include'], self._classesObj)

                # Computing packages
                #boot, partPackages, packageClasses = self._partBuilder.getPackages(partIncludes, excludeWithDeps, self._context, script)
                partPackages, _ = self._partBuilder.getPackages(partIncludes, excludeWithDeps, self._context, script)
                packageClasses = script.packagesSorted()

                #return boot, partPackages, packageClasses
                return script.boot, script.parts, packageClasses
Exemple #6
0
            def evalPackagesConfig(excludeWithDeps, classList, variants):

                # Reading configuration
                partsCfg = self._job.get("packages/parts", {})

                # Expanding expressions
                self._console.debug("Expanding include expressions...")
                partIncludes = {}
                for partId in partsCfg:
                    partIncludes[partId] = textutil.expandGlobs(
                        partsCfg[partId]['include'], self._classesObj)

                # Computing packages
                #boot, partPackages, packageClasses = self._partBuilder.getPackages(partIncludes, excludeWithDeps, self._context, script)
                partPackages, _ = self._partBuilder.getPackages(
                    partIncludes, excludeWithDeps, self._context, script)
                packageClasses = script.packagesSorted()

                #return boot, partPackages, packageClasses
                return script.boot, script.parts, packageClasses