1
|
|
|
import os |
2
|
|
|
import sys |
3
|
|
|
from subprocess import check_call, CalledProcessError |
4
|
|
|
|
5
|
|
|
|
6
|
|
|
def activate_conda_env(conda, env_path): |
7
|
|
|
check_call([conda, 'create', '-p', env_path, '-y']) |
8
|
|
|
check_call([conda, 'activate', env_path]) |
9
|
|
|
|
10
|
|
|
|
11
|
|
|
def install_dependencies(python, conda): |
12
|
|
|
check_call([python, '-m', 'pip', 'install', '--upgrade', 'pip']) |
13
|
|
|
check_call([python, '-m', 'pip', 'install', '--upgrade', 'wheel']) |
14
|
|
|
check_call([python, '-m', 'pip', 'install', '-r', 'requirements/base.txt']) |
15
|
|
|
check_call([python, '-m', 'pip', 'install', '-r', 'requirements/dev.txt']) |
16
|
|
|
check_call([conda, 'install', 'somoclu', '-y']) |
17
|
|
|
|
18
|
|
|
|
19
|
|
|
def pip_install_lib(python, package_name='so_magic', pypi_index_url='https://test.pypi.org/simple/'): |
20
|
|
|
# use this command because test pypi absolutely not guarantees that it can satsify dependencies (--no-deps flag) by |
21
|
|
|
# looking for the packages in the index, simply because they might not exist |
22
|
|
|
check_call([python, '-m', 'pip', 'install', '--index-url', pypi_index_url, '--no-deps', package_name]) |
23
|
|
|
|
24
|
|
|
|
25
|
|
|
def main(): |
26
|
|
|
# CONSTANTS |
27
|
|
|
MY_DIR = os.path.dirname(os.path.realpath(__file__)) |
28
|
|
|
tools = type('Executables', (object,), {'python': 'python', 'conda': os.environ.get('CONDA_EXE', 'conda')}) |
29
|
|
|
ENV_NAME = 'integration-env' |
30
|
|
|
ENV_PATH = os.path.join(MY_DIR, f'../{ENV_NAME}') |
31
|
|
|
try: |
32
|
|
|
check_call([tools.conda, '--help']) |
33
|
|
|
print('------------ CONDA IS ALREADY INSTALLED -------------') |
34
|
|
|
except CalledProcessError as ex: # this exception fires if the exit code of the above is not 0 |
35
|
|
|
print(ex) |
36
|
|
|
tools.conda = None |
37
|
|
|
|
38
|
|
|
if tools.conda is None: |
39
|
|
|
print("Will try to automatically install anaconda ..") |
40
|
|
|
print('------------ INSTALLING CONDA -------------') |
41
|
|
|
check_call(['chmod', '+x', './scripts/install_anaconda.sh']) |
42
|
|
|
try: |
43
|
|
|
check_call(['bash', 'scripts/install_anaconda.sh']) |
44
|
|
|
tools.conda = 'conda' |
45
|
|
|
except CalledProcessError as ex2: |
46
|
|
|
print("Failed to install anaconda, so cannot satisfy the somoclu feature of training a new map, which is " |
47
|
|
|
"required by one test case.\n Exitting with 1.") |
48
|
|
|
raise ex2 |
49
|
|
|
print('------------ CREATING ENV -------------') |
50
|
|
|
check_call([tools.conda, 'create', '-p', ENV_PATH, '-y']) |
51
|
|
|
print('------------ ACTIVATING ENV -------------') |
52
|
|
|
check_call([tools.conda, 'activate', ENV_PATH]) |
53
|
|
|
|
54
|
|
|
# activate_conda_env(tools.conda, ENV_PATH) |
55
|
|
|
# install_dependencies(tools.python, tools.conda) |
56
|
|
|
# pip_install_lib(tools.python) |
57
|
|
|
|
58
|
|
|
print("SUCCESS!!!") |
59
|
|
|
print("Successfully installed the library emnulating the real 'pip install' scenario using the test-pypi server.") |
60
|
|
|
|
61
|
|
|
|
62
|
|
|
if __name__ == '__main__': |
63
|
|
|
try: |
64
|
|
|
main() |
65
|
|
|
print("OK.") |
66
|
|
|
except Exception as e: |
67
|
|
|
print(e) |
68
|
|
|
print("FAILED") |
69
|
|
|
sys.exit(1) |
70
|
|
|
|