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
|
class ExtendedConfig(Config):
'''Global configuration that specifies what the entire process will do.
Unlike Config, this class contains also various derived properties
for convenience.
'''
def __init__(self, **kwargs):
for k in kwargs:
setattr(self, k, kwargs[k])
# These are defaults, overrides can be specified as vc_paths in Config above
default_vc_paths = {
# where msvc 9 is installed, for python 2.6-3.2
'vc9': [
'c:/program files (x86)/microsoft visual studio 9.0',
'c:/program files/microsoft visual studio 9.0',
],
# where msvc 10 is installed, for python 3.3-3.4
'vc10': [
'c:/program files (x86)/microsoft visual studio 10.0',
'c:/program files/microsoft visual studio 10.0',
],
# where msvc 14 is installed, for python 3.5-3.8
'vc14': [
'c:/program files (x86)/microsoft visual studio 14.0',
'c:/program files/microsoft visual studio 14.0',
],
}
@property
def nasm_path(self):
return select_existing_path(Config.nasm_path)
@property
def activestate_perl_path(self):
return select_existing_path(Config.activestate_perl_path)
@property
def archives_path(self):
return os.path.join(self.root, 'archives')
@property
def state_path(self):
return os.path.join(self.root, 'state')
@property
def git_bin_path(self):
#git_bin_path = os.path.join(git_root, 'bin')
return ''
@property
def git_path(self):
return os.path.join(self.git_bin_path, 'git')
@property
def rm_path(self):
return find_in_paths('rm', self.msysgit_bin_paths)
@property
def cp_path(self):
return find_in_paths('cp', self.msysgit_bin_paths)
@property
def sed_path(self):
return find_in_paths('sed', self.msysgit_bin_paths)
@property
def tar_path(self):
return find_in_paths('tar', self.msysgit_bin_paths)
@property
def activestate_perl_bin_path(self):
return os.path.join(self.activestate_perl_path, 'bin')
@property
def winbuild_patch_root(self):
return os.path.join(DIR_HERE, 'winbuild')
@property
def openssl_version_tuple(self):
return tuple(
int(part) if part < 'a' else part
for part in re.sub(r'([a-z])', r'.\1', self.openssl_version).split('.')
)
@property
def libssh2_version_tuple(self):
return tuple(int(part) for part in self.libssh2_version.split('.'))
@property
def cares_version_tuple(self):
return tuple(int(part) for part in self.cares_version.split('.'))
@property
def libcurl_version_tuple(self):
return tuple(int(part) for part in self.libcurl_version.split('.'))
@property
def python_releases(self):
return [PythonRelease('.'.join(version.split('.')[:2]))
for version in self.python_versions]
def buildconfigs(self):
return [BuildConfig(bitness=bitness, vc_version=vc_version)
for bitness in self.bitnesses
for vc_version in needed_vc_versions(self.python_versions)
]
|