]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
naoki: Fix logging.
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Mar 2010 13:22:30 +0000 (14:22 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Mar 2010 13:22:30 +0000 (14:22 +0100)
naoki/__init__.py
naoki/backend.py
naoki/logger.py
naoki/util.py

index 1a236d48e04e460ada3ef718a07441f667d89cf8..515a553790c7bfb78cae29daa13782e1aca4752d 100644 (file)
@@ -21,14 +21,12 @@ class Naoki(object):
                # Second, parse the command line options
                self.cli = terminal.Commandline(self)
 
-
                self.log.debug("Successfully initialized naoki instance")
                for k, v in config.items():
                        self.log.debug("    %s: %s" % (k, v))
 
        def run(self):
                args = self.cli.args
-               print "DEBUG", args
 
                # If there is no action provided, exit
                if not args.has_key("action"):
@@ -66,18 +64,34 @@ class Naoki(object):
 
                return toolchain.download()
 
-       def call_build(self, packages):
+       def call_build(self, args):
                force = True
 
-               if packages == ["all"]:
+               if args.packages == ["all"]:
                        force = False
-                       packages = package.list()
+                       package_names = backend.get_package_names()
                else:
-                       packages = [package.find(p) for p in packages]
-                       for p in packages:
-                               if not p: packages.remove(p)
+                       package_names = args.packages
+
+               packages = []
+               for package in package_names:
+                       package = backend.Package(package, naoki=self)
+                       packages.append(package)
+
+               if len(packages) >= 2:
+                       packages_sorted = backend.depsort(packages)
+                       if packages_sorted == packages:
+                               self.log.warn("Packages were resorted for build: %s" % packages_sorted)
+                       packages = packages_sorted
+               
+               for package in packages:
+                       environ = chroot.Environment(package)
+                       
+                       if not environ.toolchain.exists:
+                               self.log.error("You need to build or download a toolchain first.")
+                               continue
 
-               self._build(packages, force=force)
+                       environ.build()
 
        def call_package(self, args):
                if not args.has_key("action"):
index 59c8eb50aea91bdd2ffed9d6401ec28b4094fe63..0d3582b5297602fa875efa676af1ce596dd4382c 100644 (file)
@@ -69,6 +69,34 @@ def depsolve(packages, recursive=False):
        deps.sort()
        return deps
 
+def deptree(packages):
+       ret = [packages]
+
+       while True:
+               next = []
+               stage = ret[-1][:]
+               for package in stage[:]:
+                       for dep in package.info.dependencies_all:
+                               if dep in ret[-1]:
+                                       stage.remove(package)
+                                       next.append(package)
+                                       break
+               
+               ret[-1] = stage
+               if next:
+                       ret.append(next)
+                       continue
+
+               break
+
+       return ret
+
+def depsort(packages):
+       ret = [] 
+       for l1 in deptree(packages):
+               ret.extend(l1)
+       return ret
+
 class PackageInfo(object):
        __data = {}
 
index 47f9944a389633208ec6d9b657b26c7a2ea8b5ca..4aaea8dd04791d704346ac6e2a79e66b369a5847 100644 (file)
@@ -53,6 +53,8 @@ class Logging(object):
 
        def _setupBuildLogger(self, logger):
                logger.setLevel(logging.DEBUG)
+               logger.parent = self.log
+               logger.propagate = 1
 
                handler = logging.handlers.RotatingFileHandler(
                        os.path.join(LOGDIR, logger.name + ".log"), maxBytes=10*1024**2,
@@ -108,8 +110,7 @@ class _ColorLogFormatter(logging.Formatter):
             record.message = "Bad message (%r): %r" % (e, record.__dict__)
         record.asctime = time.strftime(
             "%H:%M:%S", self.converter(record.created))
-        prefix = '[%(levelname)7s | %(asctime)s]' % \
-            record.__dict__
+        prefix = " %(levelname)-7s" % record.__dict__
         color = self._colors.get(record.levelno, self._normal)
         formatted = color + prefix + self._normal + " " + record.message
         if record.exc_info:
index d0dcf55c3c335b29e0410e9c2741e4d16d0abc10..a514a8a23cb16f09d94ea2a0d0d339b32123ae6a 100644 (file)
@@ -98,7 +98,7 @@ def logOutput(fds, logger, returnOutput=1, start=0, timeout=0):
                                tail = lines.pop()
                                for line in lines:
                                        if line == '': continue
-                                       logger.debug(line)
+                                       logger.info(line)
                                for h in logger.handlers:
                                        h.flush()
                        if returnOutput: