-
Notifications
You must be signed in to change notification settings - Fork 53
/
setup.py
97 lines (76 loc) · 2.99 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import re
import os
import sys
import shutil
from setuptools import setup
cmd_class = {}
install_msg = None
package_data = {'getdist': ['analysis_defaults.ini', 'distparam_template.ini'],
'getdist.gui': ['images/*.png'],
'getdist.styles': ['*.paramnames', '*.sty']}
def find_version():
version_file = open(os.path.join(os.path.dirname(__file__), 'getdist', '__init__.py')).read()
version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M)
if version_match:
return version_match.group(1)
raise RuntimeError("Unable to find version string.")
if sys.platform == "darwin":
# Mac wrapper .app bundle
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
package_data['getdist.gui'] += ['GetDist GUI.app/Contents/Info.plist',
'GetDist GUI.app/Contents/MacOS/*',
'GetDist GUI.app/Contents/Resources/*']
from setuptools.command.develop import develop
from setuptools.command.install import install
from setuptools.command.build_py import build_py
import subprocess
file_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'getdist/gui')
app_name = 'GetDist GUI.app'
def make_app():
# Put python command into app script so it can be run from spotlight etc.
app_dir = os.path.join(file_dir, app_name)
if os.path.exists(app_dir):
shutil.rmtree(app_dir)
shutil.copytree(os.path.join(file_dir, 'mac_app'), app_dir)
fname = os.path.join(file_dir, app_name + '/Contents/MacOS/GetDistGUI')
out = []
with open(fname, 'r') as f:
for line in f.readlines():
if 'python=' in line:
out.append('python="%s"' % sys.executable)
else:
out.append(line.strip())
with open(fname, 'w') as f:
f.write("\n".join(out))
subprocess.call('chmod +x "%s"' % fname, shell=True)
fname = os.path.join(file_dir, app_name + '/Contents/Info.plist')
with open(fname, 'r') as f:
plist = f.read().replace('1.0.0', find_version())
with open(fname, 'w') as f:
f.write(plist)
def clean():
shutil.rmtree(os.path.join(file_dir, app_name), ignore_errors=True)
class DevelopCommand(develop):
def run(self):
make_app()
develop.run(self)
class InstallCommand(install):
def run(self):
make_app()
install.run(self)
clean()
class BuildCommand(build_py):
def run(self):
make_app()
build_py.run(self)
cmd_class = {
'develop': DevelopCommand,
'install': InstallCommand,
'build_py': BuildCommand
}
setup(name="getdist",
zip_safe=False,
platforms="any",
package_data=package_data,
packages=["getdist", "getdist.gui", "getdist.tests", "getdist.styles"],
cmdclass=cmd_class)