summaryrefslogtreecommitdiff
path: root/setuptools/command/build_py.py
diff options
context:
space:
mode:
authorpje <pje@571e12c6-e1fa-0310-aee7-ff1267fa46bd>2004-02-29 22:57:31 +0000
committerpje <pje@571e12c6-e1fa-0310-aee7-ff1267fa46bd>2004-02-29 22:57:31 +0000
commit84c2788dde09448c3fdf860b5aadc67845c5b19e (patch)
treef009766df4fb37397e6b99cc392a070c66b1076e /setuptools/command/build_py.py
parentc078da1dbdd72f3a64fffd2eacfc5000e9be66a5 (diff)
downloadwsgiref-84c2788dde09448c3fdf860b5aadc67845c5b19e.tar.gz
Initial skeleton of 'setuptools' package, for installing dependencies, etc.
Cleaned up data file installation handling: we now just set extensions, and all data files contained in packages are installed automatically. Additional wildcards or filenames can be defined on a per-package basis. Also, fixed some broken installation bits for ZConfig. git-svn-id: svn://svn.eby-sarna.com/svnroot/wsgiref@231 571e12c6-e1fa-0310-aee7-ff1267fa46bd
Diffstat (limited to 'setuptools/command/build_py.py')
-rw-r--r--setuptools/command/build_py.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/setuptools/command/build_py.py b/setuptools/command/build_py.py
new file mode 100644
index 0000000..cff9bcb
--- /dev/null
+++ b/setuptools/command/build_py.py
@@ -0,0 +1,96 @@
+from distutils.command.build_py import build_py as _build_py
+from distutils.util import convert_path
+from glob import glob
+import os.path
+
+class build_py(_build_py):
+
+ def initialize_options(self):
+ _build_py.initialize_options(self)
+ self.package_data = self.distribution.package_data
+
+ def run(self):
+ if not self.py_modules and not self.packages:
+ return
+
+ if self.py_modules:
+ self.build_modules()
+
+ if self.packages:
+ self.build_packages()
+ self.build_package_data()
+
+ self.byte_compile(_build_py.get_outputs(self,include_bytecode=0))
+
+ def build_package_data(self):
+ lastdir = None
+ for package, package_dir, outdir, files in self.get_package_data():
+ for file in files:
+ outfile = os.path.join(outdir,file)
+ self.mkpath(os.path.dirname(outfile))
+ self.copy_file(
+ os.path.join(package_dir,file), outfile
+ )
+
+ def get_outputs(self, include_bytecode=1):
+ return _build_py.get_outputs(include_bytecode) + [
+ os.path.join(outdir,file)
+ for package,package_dir,outdir,files in self.get_package_data()
+ for file in files
+ ]
+
+ def get_package_data(self):
+ data = []
+ for package in self.packages:
+ package_dir = self.get_package_dir(package)
+ outdir = os.path.join(
+ *([self.build_lib]+package.split('.'))
+ )
+ plen = len(package_dir)+1
+ files = [
+ file[plen:] for file in self.find_package_files(
+ package, package_dir
+ )
+ ]
+ data.append( (package, package_dir, outdir, files) )
+ return data
+
+ def find_package_files(self, package, package_dir):
+
+ globs = self.package_data.get('',[])+self.package_data.get(package,[])
+
+ files = []
+
+ for pattern in globs:
+ files.extend(
+ glob(os.path.join(package_dir, convert_path(pattern)))
+ )
+
+ return files
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+