48ddb7f068
- Patch to fix https://github.com/astropy/astropy/pull/2223
122 lines
4.8 KiB
Diff
122 lines
4.8 KiB
Diff
From f80125940eaa93ec0b2d0f579fcaaaff07698344 Mon Sep 17 00:00:00 2001
|
|
From: Michael Droettboom <mdboom@gmail.com>
|
|
Date: Mon, 24 Mar 2014 12:20:08 -0400
|
|
Subject: [PATCH] Override Install and InstallLib commands to also adjust the
|
|
library directory to be the platform-specific one. [#2223]
|
|
|
|
---
|
|
astropy/setup_helpers.py | 73 +++++++++++++++++++++++++++++++-----------------
|
|
1 file changed, 47 insertions(+), 26 deletions(-)
|
|
|
|
diff --git a/astropy/setup_helpers.py b/astropy/setup_helpers.py
|
|
index 2cfadbd..536bc1e 100644
|
|
--- a/astropy/setup_helpers.py
|
|
+++ b/astropy/setup_helpers.py
|
|
@@ -28,6 +28,8 @@
|
|
from distutils.command.sdist import sdist as DistutilsSdist
|
|
from setuptools.command.build_ext import build_ext as SetuptoolsBuildExt
|
|
from setuptools.command.build_py import build_py as SetuptoolsBuildPy
|
|
+from setuptools.command.install import install as SetuptoolsInstall
|
|
+from setuptools.command.install_lib import install_lib as SetuptoolsInstallLib
|
|
|
|
from setuptools.command.register import register as SetuptoolsRegister
|
|
from setuptools import find_packages
|
|
@@ -362,19 +364,25 @@ def register_commands(package, version, release):
|
|
_registered_commands = {
|
|
'test': generate_test_command(package),
|
|
|
|
- # Use distutils' sdist because it respects package_data.
|
|
- # setuptools/distributes sdist requires duplication of information in
|
|
- # MANIFEST.in
|
|
- 'sdist': DistutilsSdist,
|
|
+ # Use distutils' sdist because it respects package_data.
|
|
+ # setuptools/distributes sdist requires duplication of information in
|
|
+ # MANIFEST.in
|
|
+ 'sdist': DistutilsSdist,
|
|
|
|
- # The exact form of the build_ext command depends on whether or not
|
|
- # we're building a release version
|
|
- 'build_ext': generate_build_ext_command(package, release),
|
|
+ # The exact form of the build_ext command depends on whether or not
|
|
+ # we're building a release version
|
|
+ 'build_ext': generate_build_ext_command(package, release),
|
|
|
|
- # We have a custom build_py to generate the default configuration file
|
|
- 'build_py': AstropyBuildPy,
|
|
+ # We have a custom build_py to generate the default configuration file
|
|
+ 'build_py': AstropyBuildPy,
|
|
|
|
- 'register': AstropyRegister
|
|
+ # Since install can (in some circumstances) be run without
|
|
+ # first building, we also need to override install and
|
|
+ # install_lib. See #2223
|
|
+ 'install': AstropyInstall,
|
|
+ 'install_lib': AstropyInstallLib,
|
|
+
|
|
+ 'register': AstropyRegister
|
|
}
|
|
|
|
try:
|
|
@@ -542,6 +550,29 @@ def run(self):
|
|
return type('build_ext', (basecls, object), attrs)
|
|
|
|
|
|
+def _get_platlib_dir(cmd):
|
|
+ plat_specifier = '.{0}-{1}'.format(cmd.plat_name, sys.version[0:3])
|
|
+ return os.path.join(cmd.build_base, 'lib' + plat_specifier)
|
|
+
|
|
+
|
|
+class AstropyInstall(SetuptoolsInstall):
|
|
+
|
|
+ def finalize_options(self):
|
|
+ build_cmd = self.get_finalized_command('build')
|
|
+ platlib_dir = _get_platlib_dir(build_cmd)
|
|
+ self.build_lib = platlib_dir
|
|
+ SetuptoolsInstall.finalize_options(self)
|
|
+
|
|
+
|
|
+class AstropyInstallLib(SetuptoolsInstallLib):
|
|
+
|
|
+ def finalize_options(self):
|
|
+ build_cmd = self.get_finalized_command('build')
|
|
+ platlib_dir = _get_platlib_dir(build_cmd)
|
|
+ self.build_dir = platlib_dir
|
|
+ SetuptoolsInstallLib.finalize_options(self)
|
|
+
|
|
+
|
|
class AstropyBuildPy(SetuptoolsBuildPy):
|
|
|
|
def finalize_options(self):
|
|
@@ -550,22 +581,12 @@ def finalize_options(self):
|
|
# for projects with only pure-Python source (this is desirable
|
|
# specifically for support of multiple Python version).
|
|
build_cmd = self.get_finalized_command('build')
|
|
- plat_specifier = '.{0}-{1}'.format(build_cmd.plat_name,
|
|
- sys.version[0:3])
|
|
- # Do this unconditionally
|
|
- build_purelib = os.path.join(build_cmd.build_base,
|
|
- 'lib' + plat_specifier)
|
|
- build_cmd.build_purelib = build_purelib
|
|
- build_cmd.build_lib = build_purelib
|
|
-
|
|
- # Ugly hack: We also need to 'fix' the build_lib option on the
|
|
- # install command--it would be better just to override that command
|
|
- # entirely, but we can get around that extra effort by doing it here
|
|
- install_cmd = self.get_finalized_command('install')
|
|
- install_cmd.build_lib = build_purelib
|
|
- install_lib_cmd = self.get_finalized_command('install_lib')
|
|
- install_lib_cmd.build_dir = build_purelib
|
|
- self.build_lib = build_purelib
|
|
+ platlib_dir = _get_platlib_dir(build_cmd)
|
|
+
|
|
+ build_cmd.build_purelib = platlib_dir
|
|
+ build_cmd.build_lib = platlib_dir
|
|
+ self.build_lib = platlib_dir
|
|
+
|
|
SetuptoolsBuildPy.finalize_options(self)
|
|
|
|
def run_2to3(self, files, doctests=False):
|
|
--
|
|
1.8.5.5
|
|
|