[Distutils] Path caching when running multiple commands

A.M. Kuchling akuchlin@mems-exchange.org
Thu Sep 14 08:01:01 2000


I've written a script to apply a command across a bunch of setup.py
scripts in a subdirectory, and found a problem:
distutils.dir_utils._path_cache stores a list of directories that have
already been created.  The directory name is just stored as 'dist',
not a full path name, so if two subdirectories need to create a 'dist'
directory, the second one thinks it's already been created, and dies.

Fix: storing full path names in the cache seems reasonable.

(The setup.py script is included below, since it may be instructive; feel free
to use it as an example.)

--amk

# Top-level script for running a command-line over all the subpackages

import sys, os, glob
from distutils.core import run_setup

files = os.listdir('.')
dirs = filter(os.path.isdir, files)
packages = []
for dir in dirs:
    if os.path.exists( os.path.join( dir, 'setup.py') ):
        packages.append( dir )

top_dir = os.getcwd()
for package_dir in packages:
    print 'Running', package_dir
    os.chdir( package_dir )
    dist = run_setup('setup.py', script_args=sys.argv[1:], stop_after="run")
    os.chdir( top_dir )