mirror of
https://github.com/python/cpython.git
synced 2025-07-22 10:45:22 +00:00

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.
80 lines
2.7 KiB
Python
80 lines
2.7 KiB
Python
"""distutils.command.clean
|
|
|
|
Implements the Distutils 'clean' command."""
|
|
|
|
# contributed by Bastian Kleineidam <calvin@cs.uni-sb.de>, added 2000-03-18
|
|
|
|
__revision__ = "$Id$"
|
|
|
|
import os
|
|
from distutils.core import Command
|
|
from distutils.dir_util import remove_tree
|
|
from distutils import log
|
|
|
|
class clean (Command):
|
|
|
|
description = "clean up output of 'build' command"
|
|
user_options = [
|
|
('build-base=', 'b',
|
|
"base build directory (default: 'build.build-base')"),
|
|
('build-lib=', None,
|
|
"build directory for all modules (default: 'build.build-lib')"),
|
|
('build-temp=', 't',
|
|
"temporary build directory (default: 'build.build-temp')"),
|
|
('build-scripts=', None,
|
|
"build directory for scripts (default: 'build.build-scripts')"),
|
|
('bdist-base=', None,
|
|
"temporary directory for built distributions"),
|
|
('all', 'a',
|
|
"remove all build output, not just temporary by-products")
|
|
]
|
|
|
|
boolean_options = ['all']
|
|
|
|
def initialize_options(self):
|
|
self.build_base = None
|
|
self.build_lib = None
|
|
self.build_temp = None
|
|
self.build_scripts = None
|
|
self.bdist_base = None
|
|
self.all = None
|
|
|
|
def finalize_options(self):
|
|
self.set_undefined_options('build',
|
|
('build_base', 'build_base'),
|
|
('build_lib', 'build_lib'),
|
|
('build_scripts', 'build_scripts'),
|
|
('build_temp', 'build_temp'))
|
|
self.set_undefined_options('bdist',
|
|
('bdist_base', 'bdist_base'))
|
|
|
|
def run(self):
|
|
# remove the build/temp.<plat> directory (unless it's already
|
|
# gone)
|
|
if os.path.exists(self.build_temp):
|
|
remove_tree(self.build_temp, dry_run=self.dry_run)
|
|
else:
|
|
log.warn("'%s' does not exist -- can't clean it",
|
|
self.build_temp)
|
|
|
|
if self.all:
|
|
# remove build directories
|
|
for directory in (self.build_lib,
|
|
self.bdist_base,
|
|
self.build_scripts):
|
|
if os.path.exists(directory):
|
|
remove_tree(directory, dry_run=self.dry_run)
|
|
else:
|
|
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)
|
|
log.info("removing '%s'", self.build_base)
|
|
except OSError:
|
|
pass
|
|
|
|
# class clean
|