Redirect dblink.merge() output to the log file when --jobs > 1.
authorZac Medico <zmedico@gentoo.org>
Wed, 16 Jul 2008 01:37:27 +0000 (01:37 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 16 Jul 2008 01:37:27 +0000 (01:37 -0000)
svn path=/main/trunk/; revision=11068

pym/portage/dbapi/vartree.py

index 724e00ef8ef66d492442f58d36c3eea86c3b83f8..f730a21518aa5c72f71ad13580715f89b3e00920 100644 (file)
@@ -2208,17 +2208,18 @@ class dblink(object):
                        collision_ignore = set([normalize_path(myignore) for myignore in \
                                self.settings.get("COLLISION_IGNORE", "").split()])
 
+                       showMessage = self._display_merge
                        stopmerge = False
                        i=0
                        collisions = []
                        destroot = normalize_path(destroot).rstrip(os.path.sep) + \
                                os.path.sep
-                       writemsg_stdout("%s checking %d files for package collisions\n" % \
+                       showMessage("%s checking %d files for package collisions\n" % \
                                (green("*"), len(mycontents)))
                        for f in mycontents:
                                i = i + 1
                                if i % 1000 == 0:
-                                       writemsg_stdout("%d files checked ...\n" % i)
+                                       showMessage("%d files checked ...\n" % i)
                                dest_path = normalize_path(
                                        os.path.join(destroot, f.lstrip(os.path.sep)))
                                try:
@@ -2276,6 +2277,9 @@ class dblink(object):
        def _security_check(self, installed_instances):
                if not installed_instances:
                        return 0
+
+               showMessage = self._display_merge
+
                file_paths = set()
                for dblnk in installed_instances:
                        file_paths.update(dblnk.getcontents())
@@ -2310,13 +2314,13 @@ class dblink(object):
                        return 0
                from portage.output import colorize
                prefix = colorize("SECURITY_WARN", "*") + " WARNING: "
-               writemsg(prefix + "suid/sgid file(s) " + \
-                       "with suspicious hardlink(s):\n", noiselevel=-1)
+               showMessage(prefix + "suid/sgid file(s) " + \
+                       "with suspicious hardlink(s):\n", level=logging.ERROR)
                for path_list in suspicious_hardlinks:
                        for path, s in path_list:
-                               writemsg(prefix + "  '%s'\n" % path, noiselevel=-1)
-               writemsg(prefix + "See the Gentoo Security Handbook " + \
-                       "guide for advice on how to proceed.\n", noiselevel=-1)
+                               showMessage(prefix + "  '%s'\n" % path, level=logging.ERROR)
+               showMessage(prefix + "See the Gentoo Security Handbook " + \
+                       "guide for advice on how to proceed.\n", level=logging.ERROR)
                return 1
 
        def treewalk(self, srcroot, destroot, inforoot, myebuild, cleanup=0,
@@ -2355,12 +2359,14 @@ class dblink(object):
                not existing; we will merge these symlinks at a later time.
                """
 
+               showMessage = self._display_merge
+
                srcroot = normalize_path(srcroot).rstrip(os.path.sep) + os.path.sep
                destroot = normalize_path(destroot).rstrip(os.path.sep) + os.path.sep
 
                if not os.path.isdir(srcroot):
-                       writemsg("!!! Directory Not Found: D='%s'\n" % srcroot,
-                               noiselevel=-1)
+                       showMessage("!!! Directory Not Found: D='%s'\n" % srcroot,
+                               level=logging.ERROR)
                        return 1
 
                inforoot_slot_file = os.path.join(inforoot, "SLOT")
@@ -2385,8 +2391,8 @@ class dblink(object):
                                _eerror(l, phase="preinst", key=self.settings.mycpv)
 
                if slot != self.settings["SLOT"]:
-                       writemsg("!!! WARNING: Expected SLOT='%s', got '%s'\n" % \
-                               (self.settings["SLOT"], slot))
+                       showMessage("!!! WARNING: Expected SLOT='%s', got '%s'\n" % \
+                               (self.settings["SLOT"], slot), level=logging.WARN)
 
                if not os.path.exists(self.dbcatdir):
                        os.makedirs(self.dbcatdir)
@@ -2603,7 +2609,7 @@ class dblink(object):
 
                # run preinst script
                if scheduler is None:
-                       writemsg_stdout(">>> Merging %s to %s\n" % (self.mycpv, destroot))
+                       showMessage(">>> Merging %s to %s\n" % (self.mycpv, destroot))
                        a = doebuild(myebuild, "preinst", destroot, self.settings,
                                use_cache=0, tree=self.treetype, mydbapi=mydbapi,
                                vartree=self.vartree)
@@ -2613,7 +2619,8 @@ class dblink(object):
 
                # XXX: Decide how to handle failures here.
                if a != os.EX_OK:
-                       writemsg("!!! FAILED preinst: "+str(a)+"\n", noiselevel=-1)
+                       showMessage("!!! FAILED preinst: "+str(a)+"\n",
+                               level=logging.ERROR)
                        return a
 
                # copy "info" files (like SLOT, CFLAGS, etc.) into the database
@@ -2723,19 +2730,20 @@ class dblink(object):
                                continue
                        if not (autoclean or dblnk.mycpv == self.mycpv or reinstall_self):
                                continue
-                       writemsg_stdout(">>> Safely unmerging already-installed instance...\n")
+                       showMessage(">>> Safely unmerging already-installed instance...\n")
                        others_in_slot.remove(dblnk) # dblnk will unmerge itself now
                        dblnk.unmerge(trimworld=0, ldpath_mtimes=prev_mtimes,
                                others_in_slot=others_in_slot)
                        # TODO: Check status and abort if necessary.
                        dblnk.delete()
-                       writemsg_stdout(">>> Original instance of package unmerged safely.\n")
+                       showMessage(">>> Original instance of package unmerged safely.\n")
 
                if len(others_in_slot) > 1:
                        from portage.output import colorize
-                       writemsg_stdout(colorize("WARN", "WARNING:")
+                       showMessage(colorize("WARN", "WARNING:")
                                + " AUTOCLEAN is disabled.  This can cause serious"
-                               + " problems due to overlapping packages.\n")
+                               + " problems due to overlapping packages.\n",
+                               level=logging.WARN)
 
                # We hold both directory locks.
                self.dbdir = self.dbpkgdir
@@ -2768,7 +2776,7 @@ class dblink(object):
                                        use_cache=0, tree=self.treetype, mydbapi=mydbapi,
                                        vartree=self.vartree)
                                if a == os.EX_OK:
-                                       writemsg_stdout(">>> %s %s\n" % (self.mycpv, "merged."))
+                                       showMessage(">>> %s %s\n" % (self.mycpv, "merged."))
                        else:
                                a = scheduler.dblinkEbuildPhase(
                                        self, mydbapi, myebuild, "postinst")
@@ -2777,7 +2785,8 @@ class dblink(object):
 
                # XXX: Decide how to handle failures here.
                if a != os.EX_OK:
-                       writemsg("!!! FAILED postinst: "+str(a)+"\n", noiselevel=-1)
+                       showMessage("!!! FAILED postinst: "+str(a)+"\n",
+                               level=logging.ERROR)
                        return a
 
                downgrade = False
@@ -2819,6 +2828,9 @@ class dblink(object):
                2. None otherwise
                
                """
+
+               showMessage = self._display_merge
+
                from os.path import sep, join
                srcroot = normalize_path(srcroot).rstrip(sep) + sep
                destroot = normalize_path(destroot).rstrip(sep) + sep
@@ -2919,7 +2931,7 @@ class dblink(object):
                                # unlinking no longer necessary; "movefile" will overwrite symlinks atomically and correctly
                                mymtime = movefile(mysrc, mydest, newmtime=thismtime, sstat=mystat, mysettings=self.settings)
                                if mymtime != None:
-                                       writemsg_stdout(">>> %s -> %s\n" % (mydest, myto))
+                                       showMessage(">>> %s -> %s\n" % (mydest, myto))
                                        outfile.write("sym "+myrealdest+" -> "+myto+" "+str(mymtime)+"\n")
                                else:
                                        print "!!! Failed to move file."
@@ -2947,7 +2959,7 @@ class dblink(object):
 
                                        if stat.S_ISLNK(mydmode) or stat.S_ISDIR(mydmode):
                                                # a symlink to an existing directory will work for us; keep it:
-                                               writemsg_stdout("--- %s/\n" % mydest)
+                                               showMessage("--- %s/\n" % mydest)
                                                if bsd_chflags:
                                                        bsd_chflags.lchflags(mydest, dflags)
                                        else:
@@ -2966,7 +2978,7 @@ class dblink(object):
                                                        bsd_chflags.lchflags(mydest, dflags)
                                                os.chmod(mydest, mystat[0])
                                                os.chown(mydest, mystat[4], mystat[5])
-                                               writemsg_stdout(">>> %s/\n" % mydest)
+                                               showMessage(">>> %s/\n" % mydest)
                                else:
                                        #destination doesn't exist
                                        if self.settings.selinux_enabled():
@@ -2977,7 +2989,7 @@ class dblink(object):
                                                os.mkdir(mydest)
                                        os.chmod(mydest, mystat[0])
                                        os.chown(mydest, mystat[4], mystat[5])
-                                       writemsg_stdout(">>> %s/\n" % mydest)
+                                       showMessage(">>> %s/\n" % mydest)
                                outfile.write("dir "+myrealdest+"\n")
                                # recurse and merge this directory
                                if self.mergeme(srcroot, destroot, outfile, secondhand,
@@ -2996,7 +3008,7 @@ class dblink(object):
                                        if stat.S_ISDIR(mydmode):
                                                # install of destination is blocked by an existing directory with the same name
                                                moveme = 0
-                                               writemsg_stdout("!!! %s\n" % mydest)
+                                               showMessage("!!! %s\n" % mydest, level=logging.ERROR)
                                        elif stat.S_ISREG(mydmode) or (stat.S_ISLNK(mydmode) and os.path.exists(mydest) and stat.S_ISREG(os.stat(mydest)[stat.ST_MODE])):
                                                cfgprot = 0
                                                # install of destination is blocked by an existing regular file,
@@ -3042,7 +3054,7 @@ class dblink(object):
 
                                if mymtime != None:
                                        outfile.write("obj "+myrealdest+" "+mymd5+" "+str(mymtime)+"\n")
-                               writemsg_stdout("%s %s\n" % (zing,mydest))
+                               showMessage("%s %s\n" % (zing,mydest))
                        else:
                                # we are merging a fifo or device node
                                zing = "!!!"
@@ -3056,7 +3068,7 @@ class dblink(object):
                                        outfile.write("fif %s\n" % myrealdest)
                                else:
                                        outfile.write("dev %s\n" % myrealdest)
-                               writemsg_stdout(zing + " " + mydest + "\n")
+                               showMessage(zing + " " + mydest + "\n")
 
        def merge(self, mergeroot, inforoot, myroot, myebuild=None, cleanup=0,
                mydbapi=None, prev_mtimes=None):