[PATCH 2 of 6] setup: expand configuration variables in data paths
Dan Villiom Podlaski Christiansen
danchr at gmail.com
Thu Nov 26 13:48:03 CST 2009
# HG changeset patch
# User Dan Villiom Podlaski Christiansen <danchr at gmail.com>
# Date 1259263877 -3600
# Node ID aaed59f0dc70635e9d7ac6328a1ca11f76d724ba
# Parent 10bbfffbd3370a586fd62cc1d989e47598e1a271
setup: expand configuration variables in data paths.
Subclass the `install_data' in order to allow paths to installed data
to refer to configuration variables such as $dist_name or
$dist_version. This is primarily useful for distributors.
Please note that this changeset doesn't actually *use* the new
functionality; it merely introduces the infrastructure.
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -29,8 +29,10 @@ except:
import os, subprocess, time
import shutil
import tempfile
+
from distutils.core import setup, Extension
from distutils.dist import Distribution
+from distutils.command.install import install
from distutils.command.install_data import install_data
from distutils.command.build import build
from distutils.command.build_py import build_py
@@ -165,6 +167,40 @@ try:
except ImportError:
version = 'unknown'
+class install_extra_data(install_data):
+
+ user_options = [
+ ('install-doc=', None, 'installation directory for HTML documentation'),
+ ('install-man=', None, 'installation directory for manual pages'),
+ ]
+
+ def initialize_options(self):
+ install_data.initialize_options(self)
+
+ self.install_doc = '$install_data/doc/$dist_name'
+ self.install_man = '$install_data/man'
+ self.install_lib = self.config_vars = None
+
+ def finalize_options(self):
+ install_data.finalize_options(self)
+ self.set_undefined_options('install',
+ ('config_vars', 'config_vars'),
+ ('install_lib', 'install_lib'))
+
+ from distutils.util import subst_vars
+
+ self.config_vars['install_lib'] = self.install_lib
+ self.config_vars['install_data'] = self.install_dir
+ self.config_vars['install_doc'] = subst_vars(self.install_doc,
+ self.config_vars)
+ self.config_vars['install_man'] = subst_vars(self.install_man,
+ self.config_vars)
+
+ self.data_files = [(subst_vars(d, self.config_vars), f)
+ for d, f in self.data_files]
+
+install.user_options.extend(install_extra_data.user_options)
+
class build_mo(build):
description = "build translations (.mo files)"
@@ -241,7 +277,8 @@ class hg_build_py(build_py):
else:
yield module
-cmdclass = {'build_mo': build_mo,
+cmdclass = {'install_data': install_extra_data,
+ 'build_mo': build_mo,
'build_py': hg_build_py}
ext_modules=[
More information about the Mercurial-devel
mailing list