]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
naoki: Fix toolchain dependency resolution.
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 20 Mar 2010 16:57:08 +0000 (17:57 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 20 Mar 2010 16:57:08 +0000 (17:57 +0100)
naoki/__init__.py
naoki/backend.py
naoki/terminal.py

index 9bafd46ce840a6638ffefc091e045480ef68fc2f..314efffca00b82fd402f9bd70559c8ebea845390 100644 (file)
@@ -49,6 +49,7 @@ class Naoki(object):
                actionmap = {
                        "build" : self.call_toolchain_build,
                        "download" : self.call_toolchain_download,
+                       "tree" : self.call_toolchain_tree,
                }
 
                return actionmap[args.action.name](args.action)
@@ -63,6 +64,9 @@ class Naoki(object):
 
                return toolchain.download()
 
+       def call_toolchain_tree(self, args):
+               print backend.deptree(backend.parse_package(backend.get_package_names(toolchain=True), toolchain=True))
+
        def call_build(self, args):
                force = True
 
index e4b20220fdf973924f158e7d742b9aecc20f5716..4928b8b0b9d13443ed512187bf0e6abfca9bb690 100644 (file)
@@ -73,7 +73,7 @@ def find_package_name(name, toolchain=False):
                if os.path.basename(package) == name:
                        return package
 
-def depsolve(packages, recursive=False):
+def depsolve(packages, recursive=False, toolchain=False):
        deps = []
        for package in packages:
                if not package in deps:
@@ -100,7 +100,7 @@ def depsolve(packages, recursive=False):
        deps.sort()
        return deps
 
-def deptree(packages):
+def deptree(packages, toolchain=False):
        ret = [packages]
 
        while True:
@@ -122,9 +122,9 @@ def deptree(packages):
 
        return ret
 
-def depsort(packages):
+def depsort(packages, toolchain=False):
        ret = [] 
-       for l1 in deptree(packages):
+       for l1 in deptree(packages, toolchain=toolchain):
                ret.extend(l1)
        return ret
 
@@ -245,16 +245,19 @@ class PackageInfo(object):
 
                return True
 
-       def _dependencies(self, s, recursive=False):
+       def _dependencies(self, s, recursive=False, toolchain=False):
                c = s + "_CACHE"
                if not self._data.has_key(c):
-                       deps = parse_package(self._data.get(s).split(" "))
+                       deps = parse_package(self._data.get(s).split(" "), toolchain=toolchain)
                        self._data.update({c : depsolve(deps, recursive)})
 
                return self._data.get(c)
 
        @property
        def dependencies(self):
+               if self.__toolchain:
+                       return self.dependencies_toolchain
+
                return self._dependencies("PKG_DEPENDENCIES")
 
        @property
@@ -281,7 +284,14 @@ class PackageInfo(object):
 
        @property
        def dependencies_all(self):
-               return depsolve(self.dependencies + self.dependencies_build, recursive=True)
+               deps = self.dependencies
+               if not self.__toolchain:
+                       deps.extend(self.dependencies_build)
+               return depsolve(deps, recursive=True)
+
+       @property
+       def dependencies_toolchain(self):
+               return self._dependencies("PKG_TOOLCHAIN_DEPENDENCIES", toolchain=True)
 
        @property
        def description(self):
@@ -340,6 +350,10 @@ class PackageInfo(object):
        def version(self):
                return self._data.get("PKG_VER")
 
+       @property
+       def __toolchain(self):
+               return self.repo.name == "toolchain"
+
 
 class Package(object):
        def __init__(self, name, naoki, toolchain=False):
index 5ed1048bcf2119d785adad52dbd1c7b9ba4a8e1d..f5667f5bd349cc7d94eb9a81e04f425544056489 100644 (file)
@@ -200,6 +200,7 @@ class Commandline(object):
                                        parsers=[
                                                Parser("download"),
                                                Parser("build"),
+                                               Parser("tree"),
                                        ]),
 
                                # Package