diff options
author | PJ Eby <distutils-sig@python.org> | 2006-04-15 05:33:00 +0000 |
---|---|---|
committer | PJ Eby <distutils-sig@python.org> | 2006-04-15 05:33:00 +0000 |
commit | 150889dedfa7345ef5681224415d313cc01fa101 (patch) | |
tree | 888b5c70f78641e491e2fe1d5b8bd04b1866e1f1 /setuptools/command/build_py.py | |
parent | fd9c822849daa2bb58a61a664c7e6ba3f7321953 (diff) | |
download | python-setuptools-git-150889dedfa7345ef5681224415d313cc01fa101.tar.gz |
Backport absolute path trapping to the 0.6 branch.
--HG--
branch : setuptools-0.6
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/branches/setuptools-0.6%4045416
Diffstat (limited to 'setuptools/command/build_py.py')
-rw-r--r-- | setuptools/command/build_py.py | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/setuptools/command/build_py.py b/setuptools/command/build_py.py index 4d779f57..373930ac 100644 --- a/setuptools/command/build_py.py +++ b/setuptools/command/build_py.py @@ -84,18 +84,20 @@ class build_py(_build_py): self.manifest_files = mf = {} if not self.distribution.include_package_data: return - src_dirs = {} for package in self.packages or (): # Locate package source directory - src_dirs[self.get_package_dir(package)] = package + src_dirs[assert_relative(self.get_package_dir(package))] = package self.run_command('egg_info') ei_cmd = self.get_finalized_command('egg_info') for path in ei_cmd.filelist.files: - if path.endswith('.py'): continue - d,f = os.path.split(path) - while d and d not in src_dirs: + if path.endswith('.py'): + continue + d,f = os.path.split(assert_relative(path)) + prev = None + while d and d!=prev and d not in src_dirs: + prev = d d, df = os.path.split(d) f = os.path.join(df, f) if d in src_dirs: @@ -119,8 +121,6 @@ class build_py(_build_py): for filename in filenames ] - - def check_package(self, package, package_dir): """Check namespace packages' __init__ for declare_namespace""" try: @@ -177,19 +177,19 @@ class build_py(_build_py): return [f for f in files if f not in bad] +def assert_relative(path): + if not os.path.isabs(path): + return path + from distutils.errors import DistutilsSetupError + raise DistutilsSetupError( +"""Error: setup script specifies an absolute path: + %s - - - - - - - - - - - +setup() arguments must *always* be /-separated paths relative to the +setup.py directory, *never* absolute paths. +""" % path + ) |