-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathconfig.py
134 lines (116 loc) · 5.44 KB
/
config.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Copyright (C) 2015 Sebastian Herbord. All rights reserved.
#
# This file is part of Mod Organizer.
#
# Mod Organizer is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Mod Organizer is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
from _winreg import *
from unibuild.utility.lazy import Lazy
import os
import multiprocessing
global missing_prerequisites
missing_prerequisites = False
def path_or_default(filename, *default):
from distutils.spawn import find_executable
defaults = gen_search_folders(*default)
res = find_executable(filename, os.environ['PATH'] + ";" + ";".join(defaults))
if res is None:
print 'Cannot find', filename, 'on your path or in', os.path.join('', *default)
global missing_prerequisites
missing_prerequisites = True
return res
def get_from_hklm(path, name, wow64=False):
flags = KEY_READ
if wow64:
flags |= KEY_WOW64_32KEY
# avoids crashing if a product is not present
try:
with OpenKey(HKEY_LOCAL_MACHINE, path, 0, flags) as key:
return QueryValueEx(key, name)[0]
except:
return ""
# To detect the editon of VS installed as of VS 2017
vs_editions = [
"enterprise",
"professional",
"community",
]
program_files_folders = [
os.environ['ProgramFiles(x86)'],
os.environ['ProgramFiles'],
os.environ['ProgramW6432'],
"C:\\",
"D:\\"
]
def gen_search_folders(*subpath):
return [
os.path.join(search_folder, *subpath)
for search_folder in program_files_folders
]
config = {
'tools': {
'make': "nmake",
},
'architecture': 'x86_64', # Don't change this as we spawn the usvfs x86 build later on.
'vc_version': '14.0',
'vc_platformtoolset': 'v140',
'vc_CustomInstallPath': '', # If you installed VC to a custom location put the full path here
# eg. E:\Microsoft Visual Studio 14.0
'build_type': "RelWithDebInfo",
'offline': False, # if set, non-mandatory network requests won't be made.
# This is stuff like updating source repositories. The initial
# download of course can't be surpressed.
'prefer_binary_dependencies': False, # currently non-functional
'optimize': False, # activate link-time code generation and other optimization.
# This massively increases build time but produces smaller
# binaries and marginally faster code
'Installer': True, # Used to create installer at end of build, Forces everything to be built
'repo_update_frequency': 60 * 60 * 24, # in seconds
'num_jobs': multiprocessing.cpu_count() + 1,
'Main_Author': 'LePresidente', # the current maintainer
'Distrib_Author': 'TanninOne', # the current distribution (and the original Author)
'Work_Author': 'Hugues92', # yourself
'qt_version': '5.8', # currently evolving
'openssl_version': '1.0.2k', # changes often, so better to edit here
'zlib_version': '1.2.11', # changes often, so better to edit here
'grep_version': '2.5.4', # moved here as commented in qt5.py
'boost_version': '1.64.0', # for -DBOOST_ROOT, also, it is either to change from here
'vc_version_for_boost': '14.0', # boost 1.63 does not support VS 2017 yet
'python_version': '2.7', # used below and in python.py
'python_version_minor': '.13', # used in python.py
'icu_version': '58', # used in PyQt5
'icu_version_minor': '2', # for consistency
'WixToolSet_Version_Binary': '311', # Wix Binary Version
}
config['paths'] = {
'download': "{base_dir}\\downloads",
'build': "{base_dir}\\{build_dir}",
'progress': "{base_dir}\\{progress_dir}",
'install': "{base_dir}\\{install_dir}",
# 'graphviz': path_or_default("dot.exe", "Graphviz2.38", "bin"),
'cmake': path_or_default("cmake.exe", "CMake", "bin"),
'git': path_or_default("git.exe", "Git", "bin"),
'perl': path_or_default("perl.exe", "StrawberryPerl", "bin"),
'ruby': path_or_default("ruby.exe", "Ruby22-x64", "bin"),
'svn': path_or_default("svn.exe", "SlikSvn", "bin"),
'7z': path_or_default("7z.exe", "7-Zip"),
# we need a python that matches the build architecture
'python': Lazy(lambda: os.path.join(get_from_hklm(r"SOFTWARE\Python\PythonCore\{}\InstallPath".format(config['python_version']),
"", config['architecture'] == "x86"),
"python.exe")),
'visual_studio_base': "",
'visual_studio': "" # will be set in unimake.py after args are evaluated
}
if missing_prerequisites:
print '\nMissing prerequisites listed above - cannot continue'
exit(1)