-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild_dev_installer.py
92 lines (70 loc) · 2.91 KB
/
build_dev_installer.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
"""
Script to build dev installer.
To run this script, copy qt_ifw_path.template.py to qt_ifw_path.py,
and modify the path to fit your environment.
"""
import subprocess
import os
import sys
import shutil
import requests
from qt_ifw_path import QT_IFW_PATH
MINICONDA_PATH = 'dev_src/packages/miniconda/data'
MINICONDA_URLs = [
"https://anaconda.org/conda-forge/intel-openmp/2020.3/download/win-64/intel-openmp-2020.3-h57928b3_311.tar.bz2",
"https://anaconda.org/conda-forge/libblas/3.8.0/download/win-64/libblas-3.8.0-21_mkl.tar.bz2",
"https://anaconda.org/conda-forge/libcblas/3.8.0/download/win-64/libcblas-3.8.0-21_mkl.tar.bz2",
"https://anaconda.org/conda-forge/liblapack/3.8.0/download/win-64/liblapack-3.8.0-21_mkl.tar.bz2",
"https://anaconda.org/conda-forge/mkl/2020.4/download/win-64/mkl-2020.4-hb70f87d_311.tar.bz2",
"https://anaconda.org/conda-forge/numpy/1.19.4/download/win-64/numpy-1.19.4-py38h0cc643e_1.tar.bz2"
]
def download(url, fname):
resp = requests.get(url)
with open(fname, 'wb') as f:
for chunk in resp.iter_content(100000):
f.write(chunk)
def download_for_offline():
for URL in MINICONDA_URLs:
fullpath = os.path.join(MINICONDA_PATH, os.path.basename(URL))
if not os.path.exists(fullpath):
print("Downloading {0}...".format(URL))
download(URL, fullpath)
def delete_files_downloaded():
for URL in MINICONDA_URLs:
fullpath = os.path.join(MINICONDA_PATH, os.path.basename(URL))
if os.path.exists(fullpath):
os.remove(fullpath)
def print_usage():
print('Usage: python build_dev_installer.py MODE')
print(' MODE: "offline" or "online"')
def setup_miniconda_setting(mode):
if mode =='offline':
src_path = 'dev_src/packages/miniconda/meta/installscript_offline.qs'
tgt_path = 'dev_src/packages/miniconda/meta/installscript.qs'
shutil.copyfile(src_path, tgt_path)
download_for_offline()
def shutdown_miniconda_setting(mode):
if mode == 'offline':
src_path = 'dev_src/packages/miniconda/meta/installscript_online.qs'
tgt_path = 'dev_src/packages/miniconda/meta/installscript.qs'
shutil.copyfile(src_path, tgt_path)
delete_files_downloaded()
def build_installer(mode):
"""Run binarycreator to build online installer"""
binc = QT_IFW_PATH + '\\bin\\binarycreator.exe'
installer_name = 'iRIC_Installer_dev_{0}'.format(mode)
cmd = binc + ' --{0}-only -c dev_src/config/config.xml'.format(mode)
cmd += ' -p dev_src\\packages ' + installer_name
print('building installer {0}.exe...'.format(installer_name))
subprocess.check_output(cmd)
if len(sys.argv) < 2:
print_usage()
exit()
mode = sys.argv[1]
if not (mode == "online" or mode == "offline"):
print('Wrong MODE %1'.format(mode))
print_usage()
exit()
setup_miniconda_setting(mode)
build_installer(mode)
shutdown_miniconda_setting(mode)