This repository has been archived by the owner on Jun 13, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathSetup_custom.py
191 lines (163 loc) · 7.68 KB
/
Setup_custom.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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# ----------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License
# ----------------------------------------------------------------------
"""Performs repository-specific setup activities."""
# ----------------------------------------------------------------------
# |
# | To setup an environment, run:
# |
# | Setup(.cmd|.ps1|.sh) [/debug] [/verbose] [/configuration=<config_name>]*
# |
# ----------------------------------------------------------------------
import os
import sys
from collections import OrderedDict
import CommonEnvironment
# ----------------------------------------------------------------------
_script_fullpath = CommonEnvironment.ThisFullpath()
_script_dir, _script_name = os.path.split(_script_fullpath)
# ----------------------------------------------------------------------
# <Missing function docstring> pylint: disable = C0111
# <Line too long> pylint: disable = C0301
# <Wrong hanging indentation> pylint: disable = C0330
# <Class '<name>' has no '<attr>' member> pylint: disable = E1103
# <Unreachable code> pylint: disable = W0101
# <Wildcard import> pylint: disable = W0401
# <Unused argument> pylint: disable = W0613
fundamental_repo = os.getenv("DEVELOPMENT_ENVIRONMENT_FUNDAMENTAL")
assert os.path.isdir(fundamental_repo), fundamental_repo
sys.path.insert(0, fundamental_repo)
from RepositoryBootstrap import * # <Unused import> pylint: disable = W0614
from RepositoryBootstrap.SetupAndActivate import CurrentShell # <Unused import> pylint: disable = W0614
from RepositoryBootstrap.SetupAndActivate.Configuration import * # <Unused import> pylint: disable = W0614
del sys.path[0]
# ----------------------------------------------------------------------
# There are two types of repositories: Standard and Mixin. Only one standard
# repository may be activated within an environment at a time while any number
# of mixin repositories can be activated within a standard repository environment.
# Standard repositories may be dependent on other repositories (thereby inheriting
# their functionality), support multiple configurations, and specify version
# information for tools and libraries in themselves or its dependencies.
#
# Mixin repositories are designed to augment other repositories. They cannot
# have configurations or dependencies and may not be activated on their own.
#
# These difference are summarized in this table:
#
# Standard Mixin
# -------- -----
# Can be activated in isolation X
# Supports configurations X
# Supports VersionSpecs X
# Can be dependent upon other repositories X
# Can be activated within any other Standard X
# repository
#
# Consider a script that wraps common Git commands. This functionality is useful
# across a number of different repositories, yet doesn't have functionality that
# is useful on its own; it provides functionality that augments other repositories.
# This functionality should be included within a repository that is classified
# as a mixin repository.
#
# To classify a repository as a Mixin repository, decorate the GetDependencies method
# with the MixinRepository decorator.
#
# @MixinRepository # <-- Uncomment this line to classify this repository as a mixin repository
def GetDependencies():
"""
Returns information about the dependencies required by this repository.
The return value should be an OrderedDict if the repository supports multiple configurations
(aka is configurable) or a single Configuration if not.
"""
d = OrderedDict()
architectures = ["x64"]
if CurrentShell.CategoryName == "Windows":
architectures.append("x86")
# Clang
for version, guid in [("8", "3DE9F3430E494A6C8429B26A1503C895")]:
for architecture in architectures:
d["{}_Clang_{}".format(architecture, version)] = Configuration(
"Builds using Clang {} for a {} architecture".format(
version,
architecture,
),
[
Dependency(
guid,
"Common_cpp_Clang_{}".format(version),
"{}-ex".format(architecture),
"https://github.com/davidbrownell/Common_cpp_Clang_{}".format(
version,
),
),
],
)
# MSVC
if CurrentShell.CategoryName == "Windows":
for version, guid in [
("2019", "AB7D87C49C2449F79D9F42E5195030FD"),
("2017", "8FC8ACE80A594D2EA996CAC5DBFFEBBC"),
]:
for architecture in architectures:
d["{}_MSVC_{}".format(architecture, version)] = Configuration(
"Builds using MSVC {} for a {} architecture".format(
version,
architecture,
),
[
Dependency(
guid,
"Common_cpp_MSVC_{}".format(version),
architecture,
"https://github.com/davidbrownell/Common_cpp_MSVC_{}.git".format(
version,
),
),
],
)
# Misc
d["system_compiler"] = Configuration(
"Enables basic C++ tools (cmake, ninja, doxygen, etc.)",
[
Dependency(
"F33C43DA6BB54336A7573B39509CDAD7",
"Common_cpp_Common",
"x64",
"https://github.com/davidbrownell/Common_cpp_Common.git",
),
],
)
if CurrentShell.CategoryName == "Linux":
d["universal_linux"] = Configuration(
"Builds using the Holy Build Box Docker Image (phusion/holy-build-box-64). More info at http://phusion.github.io/holy-build-box/",
[
Dependency(
"F33C43DA6BB54336A7573B39509CDAD7",
"Common_cpp_Common",
"x64",
"https://github.com/davidbrownell/Common_cpp_Common.git",
),
],
)
# Set the defaults
d["x64_Clang"] = d["x64_Clang_8"]
if "x86" in architectures:
d["x86_Clang"] = d["x86_Clang_8"]
if CurrentShell.CategoryName == "Windows":
d["x64_MSVC"] = d["x64_MSVC_2019"]
d["x86_MSVC"] = d["x86_MSVC_2019"]
d["x64"] = d["x64_Clang"]
if "x86" in architectures:
d["x86"] = d["x86_Clang"]
return d
# ----------------------------------------------------------------------
def GetCustomActions(debug, verbose, explicit_configurations):
"""
Returns an action or list of actions that should be invoked as part of the setup process.
Actions are generic command line statements defined in
<Common_Environment>/Libraries/Python/CommonEnvironment/v1.0/CommonEnvironment/Shell/Commands/__init__.py
that are converted into statements appropriate for the current scripting language (in most
cases, this is Bash on Linux systems and Batch or PowerShell on Windows systems.
"""
return []