-
Notifications
You must be signed in to change notification settings - Fork 8
/
freeze.py
101 lines (81 loc) · 2.86 KB
/
freeze.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
98
99
100
101
#!/usr/bin/env python
import datetime
import os
import shutil
import subprocess
import sys
def copy_python_on_osx():
if hasattr(sys, 'base_prefix'):
dest = os.path.join('dist', 'ViXeN.app', 'Contents', 'MacOS')
python_lib = os.path.join(sys.base_prefix, 'Python')
print("Copying %s -> %s" % (python_lib, dest))
shutil.copy(python_lib, dest)
def get_platform_name():
import platform
name = ''
if sys.platform == 'darwin':
name = 'mac'
elif sys.platform.startswith('linux'):
name = 'linux'
else:
name = 'win'
arch = platform.architecture()[0][:2]
return name + arch
def get_package_dir():
import vixen
version = vixen.__version__
if version.endswith('.dev0'):
today = datetime.datetime.now().strftime('%Y%m%d')
version += '-' + today
plat = get_platform_name()
return os.path.join(
'dist', 'vixen-{version}-{plat}'.format(
version=version, plat=plat
)
)
def make_bundle():
package_dir = get_package_dir()
os.makedirs(package_dir)
if sys.platform.startswith('darwin'):
shutil.move(os.path.join('dist', 'ViXeN.app'), package_dir)
else:
shutil.move(os.path.join('dist', 'vixen_app'), package_dir)
if sys.platform.startswith('linux'):
shutil.copy(os.path.join('installer', 'vixen'), package_dir)
shutil.copy(os.path.join('installer', 'ViXeN.desktop'), package_dir)
shutil.copy(os.path.join('installer', 'vixen.png'), package_dir)
ssl_cert = os.path.join(sys.prefix, 'ssl', 'cert.pem')
if os.path.exists(ssl_cert):
d = os.path.join(package_dir, 'vixen_app', 'ssl')
if not os.path.exists(d):
os.makedirs(d)
shutil.copy(ssl_cert, d)
elif sys.platform.startswith('darwin'):
ssl_cert = os.path.join(sys.prefix, 'ssl', 'cert.pem')
if os.path.exists(ssl_cert):
d = os.path.join(
package_dir, 'ViXeN.app', 'Contents', 'Resources', 'ssl'
)
if not os.path.exists(d):
os.makedirs(d)
shutil.copy(ssl_cert, d)
cwd = os.getcwd()
os.chdir(
os.path.join(package_dir, 'ViXeN.app', 'Contents', 'MacOS')
)
os.symlink('../Resources/ssl', 'ssl')
os.chdir(cwd)
elif sys.platform.startswith('win32'):
shutil.copy(os.path.join('installer', 'vixen.bat'), package_dir)
shutil.copy(os.path.join('installer', 'vixen.lnk'), package_dir)
def main():
os.chdir('docs')
make = 'make.bat' if sys.platform.startswith('win') else 'make'
subprocess.call([make, 'html'])
os.chdir('..')
subprocess.call(['pyinstaller', 'vixen.spec'])
if sys.platform == 'darwin':
copy_python_on_osx()
make_bundle()
if __name__ == '__main__':
main()