From 150889dedfa7345ef5681224415d313cc01fa101 Mon Sep 17 00:00:00 2001 From: PJ Eby Date: Sat, 15 Apr 2006 05:33:00 +0000 Subject: 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 --- setuptools/command/build_py.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'setuptools/command/build_py.py') 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 + ) -- cgit v1.2.3