Make setup.py less chatty by default.

This is a conservative version of SF patch 504889.  It uses the log
module instead of calling print in various places, and it ignores the
verbose argument passed to many functions and set as an attribute on
some objects.  Instead, it uses the verbosity set on the logger via
the command line.

The log module is now preferred over announce() and warn() methods
that exist only for backwards compatibility.

XXX This checkin changes a lot of modules that have no test suite and
aren't exercised by the Python build process.  It will need
substantial testing.
diff --git a/Lib/distutils/command/bdist_dumb.py b/Lib/distutils/command/bdist_dumb.py
index a135877..712fec8 100644
--- a/Lib/distutils/command/bdist_dumb.py
+++ b/Lib/distutils/command/bdist_dumb.py
@@ -13,6 +13,7 @@
 from distutils.util import get_platform
 from distutils.dir_util import create_tree, remove_tree
 from distutils.errors import *
+from distutils import log
 
 class bdist_dumb (Command):
 
@@ -83,7 +84,7 @@
         install.skip_build = self.skip_build
         install.warn_dir = 0
 
-        self.announce("installing to %s" % self.bdist_dir)
+        log.info("installing to %s" % self.bdist_dir)
         self.run_command('install')
 
         # And make an archive relative to the root of the
@@ -101,7 +102,7 @@
                           root_dir=self.bdist_dir)
 
         if not self.keep_temp:
-            remove_tree(self.bdist_dir, self.verbose, self.dry_run)
+            remove_tree(self.bdist_dir, dry_run=self.dry_run)
 
     # run()
 
diff --git a/Lib/distutils/command/bdist_packager.py b/Lib/distutils/command/bdist_packager.py
index 667c030..11278ee 100644
--- a/Lib/distutils/command/bdist_packager.py
+++ b/Lib/distutils/command/bdist_packager.py
@@ -14,6 +14,7 @@
 from distutils.dir_util import create_tree, remove_tree
 from distutils.file_util import write_file
 from distutils.errors import *
+from distutils import log
 import string, sys
 
 class bdist_packager (Command):
@@ -102,8 +103,8 @@
             else:
                 setattr(self,attr,default)
                 val = default
-        if val!="":
-            self.announce('Creating %s script', attr)
+        if val != "":
+            log.info('Creating %s script', attr)
             self.execute(write_file,
                      (path, self.get_script(attr)),
                      "writing '%s'" % path)
@@ -234,7 +235,7 @@
         install = self.reinitialize_command('install', reinit_subcommands=1)
         install.root = self.pkg_dir
 
-        self.announce("installing to %s" % self.pkg_dir)
+        log.info("installing to %s", self.pkg_dir)
         self.run_command('install')
 
         # And make an archive relative to the root of the
@@ -243,7 +244,7 @@
                                       self.plat_name)
 
         if not self.keep_temp:
-            remove_tree(self.pkg_dir, self.verbose, self.dry_run)
+            remove_tree(self.pkg_dir, dry_run=self.dry_run)
 
     # run()
 
diff --git a/Lib/distutils/command/bdist_pkgtool.py b/Lib/distutils/command/bdist_pkgtool.py
index a36638a..4fd9501 100644
--- a/Lib/distutils/command/bdist_pkgtool.py
+++ b/Lib/distutils/command/bdist_pkgtool.py
@@ -15,6 +15,7 @@
 from distutils.errors import *
 from distutils.command import bdist_packager
 from distutils import sysconfig
+from distutils import log
 import compileall
 from commands import getoutput
 
@@ -211,9 +212,9 @@
 
         install = self.reinitialize_command('install', reinit_subcommands=1)
         # build package
-        self.announce('Building package')
+        log.info('Building package')
         self.run_command('build')
-        self.announce('Creating pkginfo file')
+        log.info('Creating pkginfo file')
         path = os.path.join(pkg_dir, "pkginfo")
         self.execute(write_file,
                      (path,
@@ -244,7 +245,7 @@
         self.write_script(os.path.join(pkg_dir, "depend"),
                  'depend',None)
 
-        self.announce('Creating prototype file')
+        log.info('Creating prototype file')
         path = os.path.join(pkg_dir, "prototype")
         self.execute(write_file,
                      (path,
@@ -256,7 +257,7 @@
             return
 
 
-        self.announce('Creating package')
+        log.info('Creating package')
         pkg_cmd = ['pkgmk', '-o', '-f']
         pkg_cmd.append(path)
         pkg_cmd.append('-b')
@@ -265,7 +266,7 @@
         pkg_cmd = ['pkgtrans', '-s', '/var/spool/pkg']
         path = os.path.join(os.environ['PWD'],pkg_dir,
                            self.get_binary_name() + ".pkg")
-        self.announce('Transferring package to ' + pkg_dir)
+        log.info('Transferring package to ' + pkg_dir)
         pkg_cmd.append(path)
         pkg_cmd.append(self.pkg_abrev)
         self.spawn(pkg_cmd)
@@ -326,7 +327,7 @@
         if self.no_autorelocate==0:
             request=string.split(DEFAULT_REQUEST,"\012")
         else:
-            self.announce('Creating relocation request script')
+            log.info('Creating relocation request script')
         if self.request:
             users_request=self.get_script('request')
             if users_request!=None and users_request!=[]:
diff --git a/Lib/distutils/command/bdist_rpm.py b/Lib/distutils/command/bdist_rpm.py
index 4bc2561..808ddc1 100644
--- a/Lib/distutils/command/bdist_rpm.py
+++ b/Lib/distutils/command/bdist_rpm.py
@@ -14,6 +14,7 @@
 from distutils.util import get_platform
 from distutils.file_util import write_file
 from distutils.errors import *
+from distutils import log
 
 class bdist_rpm (Command):
 
@@ -278,7 +279,7 @@
 
 
         # build package
-        self.announce('building RPMs')
+        log.info("building RPMs")
         rpm_cmd = ['rpm']
         if self.source_only: # what kind of RPMs?
             rpm_cmd.append('-bs')
diff --git a/Lib/distutils/command/bdist_sdux.py b/Lib/distutils/command/bdist_sdux.py
index 985a37a..e4765f9 100644
--- a/Lib/distutils/command/bdist_sdux.py
+++ b/Lib/distutils/command/bdist_sdux.py
@@ -14,6 +14,7 @@
 from distutils.file_util import write_file
 from distutils.errors import *
 from distutils.command import bdist_packager
+from distutils import log
 import sys
 from commands import getoutput
 
@@ -185,9 +186,9 @@
         psf_path = os.path.join(self.pkg_dir, 
                                  "%s.psf" % self.get_binary_name())
         # build package
-        self.announce('Building package')
+        log.info('Building package')
         self.run_command('build')
-        self.announce('Creating psf file')
+        log.info('Creating psf file')
         self.execute(write_file,
                      (psf_path,
                       self._make_control_file()),
@@ -195,7 +196,7 @@
         if self.control_only: # stop if requested
             return
 
-        self.announce('Creating package')
+        log.info('Creating package')
         spawn_cmd = ['swpackage', '-s']
         spawn_cmd.append(psf_path)
         spawn_cmd.append('-x')
diff --git a/Lib/distutils/command/bdist_wininst.py b/Lib/distutils/command/bdist_wininst.py
index 1683bb3..6a985f1 100644
--- a/Lib/distutils/command/bdist_wininst.py
+++ b/Lib/distutils/command/bdist_wininst.py
@@ -12,6 +12,7 @@
 from distutils.util import get_platform
 from distutils.dir_util import create_tree, remove_tree
 from distutils.errors import *
+from distutils import log
 
 class bdist_wininst (Command):
 
@@ -115,7 +116,7 @@
                     'install_' + key,
                     value)
 
-        self.announce("installing to %s" % self.bdist_dir)
+        log.info("installing to %s", self.bdist_dir)
         install.ensure_finalized()
 
         # avoid warning of 'install_lib' about installing
@@ -136,11 +137,11 @@
         # create an exe containing the zip-file
         self.create_exe(arcname, fullname, self.bitmap)
         # remove the zip-file again
-        self.announce("removing temporary file '%s'" % arcname)
+        log.debug("removing temporary file '%s'", arcname)
         os.remove(arcname)
 
         if not self.keep_temp:
-            remove_tree(self.bdist_dir, self.verbose, self.dry_run)
+            remove_tree(self.bdist_dir, dry_run=self.dry_run)
 
     # run()
 
diff --git a/Lib/distutils/command/build_clib.py b/Lib/distutils/command/build_clib.py
index b659147..f0207e4 100644
--- a/Lib/distutils/command/build_clib.py
+++ b/Lib/distutils/command/build_clib.py
@@ -24,7 +24,7 @@
 from distutils.core import Command
 from distutils.errors import *
 from distutils.sysconfig import customize_compiler
-
+from distutils import log
 
 def show_compilers ():
     from distutils.ccompiler import show_compilers
@@ -111,7 +111,6 @@
         # Yech -- this is cut 'n pasted from build_ext.py!
         from distutils.ccompiler import new_compiler
         self.compiler = new_compiler(compiler=self.compiler,
-                                     verbose=self.verbose,
                                      dry_run=self.dry_run,
                                      force=self.force)
         customize_compiler(self.compiler)
@@ -213,7 +212,7 @@
                        "a list of source filenames") % lib_name
             sources = list(sources)
 
-            self.announce("building '%s' library" % lib_name)
+            log.info("building '%s' library", lib_name)
 
             # First, compile the source code to object files in the library
             # directory.  (This should probably change to putting object
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index ddbd03e..89ca1dc 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -15,6 +15,7 @@
 from distutils.sysconfig import customize_compiler
 from distutils.dep_util import newer_group
 from distutils.extension import Extension
+from distutils import log
 
 # An extension name is just a dot-separated list of Python NAMEs (ie.
 # the same as a fully-qualified module name).
@@ -291,9 +292,9 @@
                                         # by Extension constructor)
 
             (ext_name, build_info) = ext
-            self.warn(("old-style (ext_name, build_info) tuple found in "
-                       "ext_modules for extension '%s'"
-                       "-- please convert to Extension instance" % ext_name))
+            log.warn(("old-style (ext_name, build_info) tuple found in "
+                      "ext_modules for extension '%s'"
+                      "-- please convert to Extension instance" % ext_name))
             if type(ext) is not TupleType and len(ext) != 2:
                 raise DistutilsSetupError, \
                       ("each element of 'ext_modules' option must be an "
@@ -329,8 +330,8 @@
             # Medium-easy stuff: same syntax/semantics, different names.
             ext.runtime_library_dirs = build_info.get('rpath')
             if build_info.has_key('def_file'):
-                self.warn("'def_file' element of build info dict "
-                          "no longer supported")
+                log.warn("'def_file' element of build info dict "
+                         "no longer supported")
 
             # Non-trivial stuff: 'macros' split into 'define_macros'
             # and 'undef_macros'.
@@ -422,11 +423,10 @@
                                         self.get_ext_filename(fullname))
 
         if not (self.force or newer_group(sources, ext_filename, 'newer')):
-            self.announce("skipping '%s' extension (up-to-date)" %
-                          ext.name)
+            log.debug("skipping '%s' extension (up-to-date)", ext.name)
             return
         else:
-            self.announce("building '%s' extension" % ext.name)
+            log.info("building '%s' extension", ext.name)
 
         # First, scan the sources for SWIG definition files (.i), run
         # SWIG on 'em to create .c files, and modify the sources list
@@ -539,7 +539,7 @@
 
         for source in swig_sources:
             target = swig_targets[source]
-            self.announce("swigging %s to %s" % (source, target))
+            log.info("swigging %s to %s", source, target)
             self.spawn(swig_cmd + ["-o", target, source])
 
         return new_sources
diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py
index 97d094b..388d3cb 100644
--- a/Lib/distutils/command/build_py.py
+++ b/Lib/distutils/command/build_py.py
@@ -13,7 +13,7 @@
 from distutils.core import Command
 from distutils.errors import *
 from distutils.util import convert_path
-
+from distutils import log
 
 class build_py (Command):
 
@@ -176,8 +176,8 @@
             if os.path.isfile(init_py):
                 return init_py
             else:
-                self.warn(("package init file '%s' not found " +
-                           "(or not a regular file)") % init_py)
+                log.warn(("package init file '%s' not found " +
+                          "(or not a regular file)"), init_py)
 
         # Either not in a package at all (__init__.py not expected), or
         # __init__.py doesn't exist -- so don't return the filename.
@@ -188,8 +188,7 @@
 
     def check_module (self, module, module_file):
         if not os.path.isfile(module_file):
-            self.warn("file %s (for module %s) not found" %
-                      (module_file, module))
+            log.warn("file %s (for module %s) not found", module_file, module)
             return 0
         else:
             return 1
@@ -389,13 +388,9 @@
 
         if self.compile:
             byte_compile(files, optimize=0,
-                         force=self.force,
-                         prefix=prefix,
-                         verbose=self.verbose, dry_run=self.dry_run)
+                         force=self.force, prefix=prefix, dry_run=self.dry_run)
         if self.optimize > 0:
             byte_compile(files, optimize=self.optimize,
-                         force=self.force,
-                         prefix=prefix,
-                         verbose=self.verbose, dry_run=self.dry_run)
+                         force=self.force, prefix=prefix, dry_run=self.dry_run)
 
 # class build_py
diff --git a/Lib/distutils/command/build_scripts.py b/Lib/distutils/command/build_scripts.py
index 444284f..211ade4 100644
--- a/Lib/distutils/command/build_scripts.py
+++ b/Lib/distutils/command/build_scripts.py
@@ -11,6 +11,7 @@
 from distutils.core import Command
 from distutils.dep_util import newer
 from distutils.util import convert_path
+from distutils import log
 
 # check if Python is called on the first line with this expression
 first_line_re = re.compile(r'^#!.*python[0-9.]*(\s+.*)?$')
@@ -59,7 +60,7 @@
             outfile = os.path.join(self.build_dir, os.path.basename(script))
 
             if not self.force and not newer(script, outfile):
-                self.announce("not copying %s (up-to-date)" % script)
+                log.debug("not copying %s (up-to-date)", script)
                 continue
 
             # Always open the file, but ignore failures in dry-run mode --
@@ -83,8 +84,8 @@
                     post_interp = match.group(1) or ''
 
             if adjust:
-                self.announce("copying and adjusting %s -> %s" %
-                              (script, self.build_dir))
+                log.info("copying and adjusting %s -> %s", script,
+                         self.build_dir)
                 if not self.dry_run:
                     outf = open(outfile, "w")
                     if not sysconfig.python_build:
diff --git a/Lib/distutils/command/clean.py b/Lib/distutils/command/clean.py
index b4a9be4..8fddeb4 100644
--- a/Lib/distutils/command/clean.py
+++ b/Lib/distutils/command/clean.py
@@ -9,6 +9,7 @@
 import os
 from distutils.core import Command
 from distutils.dir_util import remove_tree
+from distutils import log
 
 class clean (Command):
 
@@ -51,10 +52,10 @@
         # remove the build/temp.<plat> directory (unless it's already
         # gone)
         if os.path.exists(self.build_temp):
-            remove_tree(self.build_temp, self.verbose, self.dry_run)
+            remove_tree(self.build_temp, dry_run=self.dry_run)
         else:
-            self.warn("'%s' does not exist -- can't clean it" %
-                      self.build_temp)
+            log.warn("'%s' does not exist -- can't clean it",
+                     self.build_temp)
 
         if self.all:
             # remove build directories
@@ -62,17 +63,17 @@
                               self.bdist_base,
                               self.build_scripts):
                 if os.path.exists(directory):
-                    remove_tree(directory, self.verbose, self.dry_run)
+                    remove_tree(directory, dry_run=self.dry_run)
                 else:
-                    self.warn("'%s' does not exist -- can't clean it" %
-                              directory)
+                    log.warn("'%s' does not exist -- can't clean it",
+                             directory)
 
         # just for the heck of it, try to remove the base build directory:
         # we might have emptied it right now, but if not we don't care
         if not self.dry_run:
             try:
                 os.rmdir(self.build_base)
-                self.announce("removing '%s'" % self.build_base)
+                log.info("removing '%s'", self.build_base)
             except OSError:
                 pass
 
diff --git a/Lib/distutils/command/config.py b/Lib/distutils/command/config.py
index 27c2cc1..d74aa6a 100644
--- a/Lib/distutils/command/config.py
+++ b/Lib/distutils/command/config.py
@@ -17,7 +17,7 @@
 from types import *
 from distutils.core import Command
 from distutils.errors import DistutilsExecError
-
+from distutils import log
 
 LANG_EXT = {'c': '.c',
             'c++': '.cxx'}
@@ -103,9 +103,7 @@
         from distutils.ccompiler import CCompiler, new_compiler
         if not isinstance(self.compiler, CCompiler):
             self.compiler = new_compiler(compiler=self.compiler,
-                                         verbose=self.noisy,
-                                         dry_run=self.dry_run,
-                                         force=1)
+                                         dry_run=self.dry_run, force=1)
             if self.include_dirs:
                 self.compiler.set_include_dirs(self.include_dirs)
             if self.libraries:
@@ -161,7 +159,7 @@
         if not filenames:
             filenames = self.temp_files
             self.temp_files = []
-        self.announce("removing: " + string.join(filenames))
+        log.info("removing: %s", string.join(filenames))
         for filename in filenames:
             try:
                 os.remove(filename)
@@ -239,7 +237,7 @@
         except CompileError:
             ok = 0
 
-        self.announce(ok and "success!" or "failure.")
+        log.info(ok and "success!" or "failure.")
         self._clean()
         return ok
 
@@ -260,7 +258,7 @@
         except (CompileError, LinkError):
             ok = 0
 
-        self.announce(ok and "success!" or "failure.")
+        log.info(ok and "success!" or "failure.")
         self._clean()
         return ok
 
@@ -282,7 +280,7 @@
         except (CompileError, LinkError, DistutilsExecError):
             ok = 0
 
-        self.announce(ok and "success!" or "failure.")
+        log.info(ok and "success!" or "failure.")
         self._clean()
         return ok
 
diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py
index 03b44ee..1e771c6 100644
--- a/Lib/distutils/command/install_lib.py
+++ b/Lib/distutils/command/install_lib.py
@@ -124,13 +124,11 @@
 
         if self.compile:
             byte_compile(files, optimize=0,
-                         force=self.force,
-                         prefix=install_root,
-                         verbose=self.verbose, dry_run=self.dry_run)
+                         force=self.force, prefix=install_root,
+                         dry_run=self.dry_run)
         if self.optimize > 0:
             byte_compile(files, optimize=self.optimize,
-                         force=self.force,
-                         prefix=install_root,
+                         force=self.force, prefix=install_root,
                          verbose=self.verbose, dry_run=self.dry_run)
 
 
diff --git a/Lib/distutils/command/install_scripts.py b/Lib/distutils/command/install_scripts.py
index d4cbaa3..4044ba0 100644
--- a/Lib/distutils/command/install_scripts.py
+++ b/Lib/distutils/command/install_scripts.py
@@ -9,6 +9,7 @@
 
 import os
 from distutils.core import Command
+from distutils import log
 from stat import ST_MODE
 
 class install_scripts (Command):
@@ -48,10 +49,10 @@
             # all the scripts we just installed.
             for file in self.get_outputs():
                 if self.dry_run:
-                    self.announce("changing mode of %s" % file)
+                    log.info("changing mode of %s to %o", file, mode)
                 else:
                     mode = ((os.stat(file)[ST_MODE]) | 0111) & 07777
-                    self.announce("changing mode of %s to %o" % (file, mode))
+                    log.info("changing mode of %s to %o", file, mode)
                     os.chmod(file, mode)
 
     def get_inputs (self):
diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py
index fbd3c6d..082aa88 100644
--- a/Lib/distutils/command/sdist.py
+++ b/Lib/distutils/command/sdist.py
@@ -14,6 +14,7 @@
 from distutils.text_file import TextFile
 from distutils.errors import *
 from distutils.filelist import FileList
+from distutils import log
 
 
 def show_formats ():
@@ -233,31 +234,17 @@
                 self.warn(("manifest template '%s' does not exist " +
                            "(using default file list)") %
                           self.template)
-
             self.filelist.findall()
 
-            # Add default file set to 'files'
             if self.use_defaults:
                 self.add_defaults()
-
-            # Read manifest template if it exists
             if template_exists:
                 self.read_template()
-
-            # Prune away any directories that don't belong in the source
-            # distribution
             if self.prune:
                 self.prune_file_list()
 
-            # File list now complete -- sort it so that higher-level files
-            # come first
             self.filelist.sort()
-
-            # Remove duplicates from the file list
             self.filelist.remove_duplicates()
-
-            # And write complete file list (including default file set) to
-            # the manifest.
             self.write_manifest()
 
         # Don't regenerate the manifest, just read it in.
@@ -321,13 +308,12 @@
 
 
     def read_template (self):
+        """Read and parse manifest template file named by self.template.
 
-        """Read and parse the manifest template file named by
-        'self.template' (usually "MANIFEST.in").  The parsing and
-        processing is done by 'self.filelist', which updates itself
-        accordingly.
+        (usually "MANIFEST.in") The parsing and processing is done by
+        'self.filelist', which updates itself accordingly.
         """
-        self.announce("reading manifest template '%s'" % self.template)
+        log.info("reading manifest template '%s'", self.template)
         template = TextFile(self.template,
                             strip_comments=1,
                             skip_blanks=1,
@@ -384,7 +370,7 @@
         fill in 'self.filelist', the list of files to include in the source
         distribution.
         """
-        self.announce("reading manifest file '%s'" % self.manifest)
+        log.info("reading manifest file '%s'", self.manifest)
         manifest = open(self.manifest)
         while 1:
             line = manifest.readline()
@@ -410,8 +396,7 @@
         # put 'files' there; the 'mkpath()' is just so we don't die
         # if the manifest happens to be empty.
         self.mkpath(base_dir)
-        dir_util.create_tree(base_dir, files,
-                             verbose=self.verbose, dry_run=self.dry_run)
+        dir_util.create_tree(base_dir, files, dry_run=self.dry_run)
 
         # And walk over the list of files, either making a hard link (if
         # os.link exists) to each one that doesn't already exist in its
@@ -428,12 +413,12 @@
             msg = "copying files to %s..." % base_dir
 
         if not files:
-            self.warn("no files to distribute -- empty manifest?")
+            log.warn("no files to distribute -- empty manifest?")
         else:
-            self.announce(msg)
+            log.info(msg)
         for file in files:
             if not os.path.isfile(file):
-                self.warn("'%s' not a regular file -- skipping" % file)
+                log.warn("'%s' not a regular file -- skipping" % file)
             else:
                 dest = os.path.join(base_dir, file)
                 self.copy_file(file, dest, link=link)
@@ -464,7 +449,7 @@
         self.archive_files = archive_files
 
         if not self.keep_temp:
-            dir_util.remove_tree(base_dir, self.verbose, self.dry_run)
+            dir_util.remove_tree(base_dir, dry_run=self.dry_run)
 
     def get_archive_files (self):
         """Return the list of archive files created when the command