Skip to content

Commit b808f84

Browse files
authored
Merge pull request #1095 from Unity-Technologies/use-stevedore-production
Add option to use stevedore or ono for external build deps
2 parents 15cd016 + aed2255 commit b808f84

11 files changed

+169
-150
lines changed

.gitlab-ci.yml

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,26 @@ run_all_builds:
1818
build_osx_runtime:
1919
stage: build
2020
tags:
21-
- buildfarm
22-
- darwin
21+
- bokken-job
22+
variables:
23+
BOKKEN_VM: build_osx_runtime_vm
24+
BOKKEN_JOB: |
25+
resources:
26+
- name: build_osx_runtime_vm
27+
image: buildfarm/mac:latest
28+
flavor: m1.mac
29+
type: Unity::VM::osx
30+
num_instances: 1
31+
config:
32+
env_vars:
33+
- PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
2334
script:
2435
- git submodule update --init --recursive
2536
- chmod +x external/buildscripts/bee
2637
- cd external/buildscripts
2738
- ./bee
2839
- cd ../..
29-
- perl external/buildscripts/build_runtime_osx.pl
40+
- perl external/buildscripts/build_runtime_osx.pl --stevedorebuilddeps=1
3041
- mkdir -p incomingbuilds/osx-i386
3142
- cp -r builds/ incomingbuilds/osx-i386/
3243
artifacts:
@@ -40,15 +51,26 @@ build_osx_runtime:
4051
build_osx_classlibs:
4152
stage: build
4253
tags:
43-
- buildfarm
44-
- darwin
54+
- bokken-job
55+
variables:
56+
BOKKEN_VM: build_osx_classlibs_vm
57+
BOKKEN_JOB: |
58+
resources:
59+
- name: build_osx_classlibs_vm
60+
image: buildfarm/mac:latest
61+
flavor: m1.mac
62+
type: Unity::VM::osx
63+
num_instances: 1
64+
config:
65+
env_vars:
66+
- PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
4567
script:
4668
- git submodule update --init --recursive
4769
- chmod +x external/buildscripts/bee
4870
- cd external/buildscripts
4971
- ./bee
5072
- cd ../..
51-
- perl external/buildscripts/build_classlibs_osx.pl
73+
- perl external/buildscripts/build_classlibs_osx.pl --stevedorebuilddeps=1
5274
- mkdir -p incomingbuilds/classlibs
5375
- cp -r ZippedClasslibs.tar.gz incomingbuilds/classlibs/
5476
- cd incomingbuilds/classlibs
@@ -66,15 +88,26 @@ build_osx_classlibs:
6688
build_android:
6789
stage: build
6890
tags:
69-
- buildfarm
70-
- darwin
91+
- bokken-job
92+
variables:
93+
BOKKEN_VM: build_android_vm
94+
BOKKEN_JOB: |
95+
resources:
96+
- name: build_android_vm
97+
image: buildfarm/mac:latest
98+
flavor: m1.mac
99+
type: Unity::VM::osx
100+
num_instances: 1
101+
config:
102+
env_vars:
103+
- PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
71104
script:
72105
- git submodule update --init --recursive
73106
- chmod +x external/buildscripts/bee
74107
- cd external/buildscripts
75108
- ./bee
76109
- cd ../..
77-
- bash external/buildscripts/build_runtime_android.sh
110+
- perl external/buildscripts/build_runtime_android.pl --stevedorebuilddeps=1
78111
- mkdir -p incomingbuilds/android/
79112
- cp -r builds/* incomingbuilds/android/
80113
artifacts:
@@ -95,7 +128,7 @@ build_win:
95128
- cd external/buildscripts
96129
- ./bee.exe
97130
- cd ../..
98-
- perl external/buildscripts/build_runtime_win64.pl
131+
- perl external/buildscripts/build_runtime_win64.pl --stevedorebuilddeps=1
99132
- mkdir -p incomingbuilds/win64
100133
- cp -r builds/* incomingbuilds/win64/
101134
artifacts:
@@ -116,7 +149,7 @@ build_win_x86:
116149
- cd external/buildscripts
117150
- ./bee.exe
118151
- cd ../..
119-
- perl external/buildscripts/build_runtime_win.pl
152+
- perl external/buildscripts/build_runtime_win.pl --stevedorebuilddeps=1
120153
- mkdir -p incomingbuilds/win32
121154
- cp -r builds/* incomingbuilds/win32/
122155
artifacts:
@@ -159,7 +192,7 @@ build_linux_x64:
159192
- cd external/buildscripts
160193
- ./bee
161194
- cd ../..
162-
- perl external/buildscripts/build_runtime_linux.pl -build64=1
195+
- perl external/buildscripts/build_runtime_linux.pl -build64=1 --stevedorebuilddeps=1
163196
- mkdir -p incomingbuilds/linux64
164197
- cp -r builds/* incomingbuilds/linux64/
165198
artifacts:
@@ -181,7 +214,7 @@ build_linux_x86:
181214
- cd external/buildscripts
182215
- ./bee
183216
- cd ../..
184-
- perl external/buildscripts/build_runtime_linux.pl
217+
- perl external/buildscripts/build_runtime_linux.pl --stevedorebuilddeps=1
185218
- mkdir -p incomingbuilds/linux32
186219
- cp -r builds/* incomingbuilds/linux32/
187220
artifacts:

external/buildscripts/Build.bee.cs

Lines changed: 11 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ internal static void Main()
2323
var buildScriptsRoot = monoRoot.Combine("external").Combine("buildscripts");
2424
Console.WriteLine(">>> Build scripts directory: " + buildScriptsRoot);
2525

26-
var monoBuildDeps = monoRoot.Parent.Parent.Combine("mono-build-deps").Combine("build");
27-
Console.WriteLine(">>> Mono build dependecies directory: " + monoBuildDeps);
28-
2926
var buildDependenciesConfigFile = buildScriptsRoot.Combine("buildDependencies.txt");
3027
Console.WriteLine(">>> Mono build dependecies stevedore version config file: " + buildDependenciesConfigFile);
3128

@@ -34,21 +31,14 @@ internal static void Main()
3431

3532
if (buildDependenciesConfigFile.Exists())
3633
{
37-
if (!monoBuildDeps.DirectoryExists())
38-
{
39-
Console.WriteLine(">>> " + monoBuildDeps + " does not exist. Creating it ...");
40-
monoBuildDeps.CreateDirectory();
41-
}
34+
var artifactList = ParseBuildDependenciesConfigFile(buildDependenciesConfigFile.ToString());
4235

43-
var artifactNameIdFilesDictionary = ParseBuildDependenciesConfigFile(buildDependenciesConfigFile.ToString());
44-
45-
foreach (var item in artifactNameIdFilesDictionary)
36+
foreach (var item in artifactList)
4637
{
47-
var artifactName = item.Key.Item1;
48-
var artifactId = item.Key.Item2;
49-
var repoName = item.Key.Item3;
50-
var artifactFiles = item.Value;
51-
DownloadAndCopyArtifact(artifactId, artifactName, repoName, artifactFiles, monoBuildDeps, stevedoreArtifactsDir);
38+
var artifactName = item.Item1;
39+
var artifactId = item.Item2;
40+
var repoName = item.Item3;
41+
DownloadArtifact(artifactId, artifactName, repoName);
5242
}
5343
}
5444
else
@@ -57,46 +47,13 @@ internal static void Main()
5747
}
5848
}
5949

60-
private static void DownloadAndCopyArtifact(string artifactId, string artifactName, string repoName, IEnumerable<NPath> artifacts, NPath monoBuildDeps, NPath stevedoreArtifactsDir)
50+
private static void DownloadArtifact(string artifactId, string artifactName, string repoName)
6151
{
52+
Console.WriteLine($">>> Registering artifact {artifactName}");
6253
var artifact = new StevedoreArtifact(repoName, new ArtifactId(artifactId));
6354
Backend.Current.Register(artifact);
64-
65-
var inputs = new List<NPath>();
66-
var targetFiles = new List<NPath>();
67-
foreach (var item in artifacts)
68-
{
69-
inputs.Add(stevedoreArtifactsDir.Combine(artifactName).Combine(item));
70-
targetFiles.Add(monoBuildDeps.Combine(artifactName).Combine(item));
71-
}
72-
73-
var targetDir = monoBuildDeps;
74-
if (HostPlatform.IsWindows)
75-
{
76-
targetDir = monoBuildDeps.Combine(artifactName);
77-
}
78-
79-
Backend.Current.AddAction(
80-
actionName: "CopyArtifact",
81-
targetFiles: targetFiles.ToArray(),
82-
inputs: inputs.ToArray(),
83-
executableStringFor: ExecutableStringForDirectoryCopy(stevedoreArtifactsDir.Combine(artifactName), targetDir),
84-
commandLineArguments: new string[] { },
85-
allowUnwrittenOutputFiles: true
86-
);
8755
}
8856

89-
private static void ExecuteBuildScript(NPath[] inputFiles, NPath buildScript, NPath buildRoot)
90-
{
91-
Backend.Current.AddAction(
92-
actionName: "ExecuteBuildScript",
93-
targetFiles: new[] { buildRoot},
94-
inputs: inputFiles,
95-
executableStringFor: $"perl {buildScript}",
96-
commandLineArguments: new string[] { },
97-
allowUnwrittenOutputFiles: true
98-
);
99-
}
10057
private static NPath GetMonoRootDir()
10158
{
10259
var exePath = new NPath(System.Reflection.Assembly.GetEntryAssembly().Location);
@@ -109,13 +66,6 @@ private static NPath GetMonoRootDir()
10966
return monoRoot;
11067
}
11168

112-
private static string ExecutableStringForDirectoryCopy(NPath from, NPath target)
113-
{
114-
return HostPlatform.IsWindows
115-
? $"xcopy {from.InQuotes(SlashMode.Native)} {target.InQuotes(SlashMode.Native)} /s /e /d /Y"
116-
: $"cp -r -v {from.InQuotes(SlashMode.Native)} {target.InQuotes(SlashMode.Native)}";
117-
}
118-
11969
private static bool IsRunningOnBuildMachine()
12070
{
12171
var buildMachine = Environment.GetEnvironmentVariable("UNITY_THISISABUILDMACHINE");
@@ -128,21 +78,18 @@ private static bool IsRunningOnBuildMachine()
12878
# name : <stevedore artifact name>
12979
# id : <stevedore artifact id>
13080
# repo : <stevedore repo name (can be testing/public/unityinternal)>
131-
# files : <folder and/or comma-separated list of files downloaded and unpacked>
13281
13382
name: 7z
13483
id: 7z/9df1e3b3b120_12ed325f6a47f0e5cebc247dbe9282a5da280d392cce4e6c9ed227d57ff1e2ff.7z
13584
repo: testing
136-
files : 7z
13785
13886
name: libgdiplus
13987
id : libgdiplus/9df1e3b3b120_4cf7c08770db93922f54f38d2461b9122cddc898db58585864446e70c5ad3057.7z
14088
repo: public
141-
files : libgdiplus,lib2
14289
*/
143-
private static Dictionary<Tuple<string, string, string>, List<NPath>> ParseBuildDependenciesConfigFile(string buildDependenciesConfigFile)
90+
private static List<Tuple<string, string, string>> ParseBuildDependenciesConfigFile(string buildDependenciesConfigFile)
14491
{
145-
var artifactNameIdFilesDictionary = new Dictionary<Tuple<string, string, string>, List<NPath>>();
92+
var artifactNameIdFilesDictionary = new List<Tuple<string, string, string>>();
14693

14794
var fileStream = new FileStream(buildDependenciesConfigFile, FileMode.Open, FileAccess.Read);
14895
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
@@ -158,7 +105,6 @@ private static Dictionary<Tuple<string, string, string>, List<NPath>> ParseBuild
158105
var name = "";
159106
var id = "";
160107
var repoName = "";
161-
var files = "";
162108

163109
//read name
164110
name = line.Split(':')[1].Trim();
@@ -175,25 +121,7 @@ private static Dictionary<Tuple<string, string, string>, List<NPath>> ParseBuild
175121
else
176122
throw new Exception($">>> Invalid {buildDependenciesConfigFile}, repo name does not exist");
177123

178-
//read comma separated folder/files list
179-
if ((line = streamReader.ReadLine()) != null)
180-
files = line.Split(':')[1].Trim();
181-
else
182-
throw new Exception($">>> Invalid {buildDependenciesConfigFile}, files do not exist");
183-
184-
var filesList = new List<NPath>();
185-
if (!string.IsNullOrEmpty(files))
186-
{
187-
if (files.Contains(","))
188-
files.Split(',').ForEach(f => { filesList.Add(new NPath(f.Trim())); });
189-
else
190-
filesList.Add(new NPath(files.Trim()));
191-
}
192-
else
193-
{
194-
throw new Exception($">>> Invalid {buildDependenciesConfigFile}");
195-
}
196-
artifactNameIdFilesDictionary.Add(new Tuple<string, string, string>(name, id, repoName), filesList);
124+
artifactNameIdFilesDictionary.Add(new Tuple<string, string, string>(name, id, repoName));
197125
}
198126
}
199127
}

0 commit comments

Comments
 (0)