summaryrefslogtreecommitdiff
path: root/setuptools/command/build_py.py
diff options
context:
space:
mode:
authorPJ Eby <distutils-sig@python.org>2006-04-15 05:33:00 +0000
committerPJ Eby <distutils-sig@python.org>2006-04-15 05:33:00 +0000
commit150889dedfa7345ef5681224415d313cc01fa101 (patch)
tree888b5c70f78641e491e2fe1d5b8bd04b1866e1f1 /setuptools/command/build_py.py
parentfd9c822849daa2bb58a61a664c7e6ba3f7321953 (diff)
downloadpython-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.py36
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
+ )