Skip to content
This repository was archived by the owner on Nov 6, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 63 additions & 53 deletions build.cake
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
// Tools needed by cake addins
#tool nuget:?package=vswhere&version=2.7.1
#tool nuget:?package=vswhere&version=2.8.4

// Cake Addins
#addin nuget:?package=Cake.FileHelpers&version=3.2.1
#addin nuget:?package=Newtonsoft.Json&version=11.0.2
#addin nuget:?package=Cake.FileHelpers&version=4.0.1
#addin nuget:?package=Newtonsoft.Json&version=12.0.3
//#addin nuget:?package=NuGet.Versioning&version=5.8.1

// Usage:
// dotnet tool install -g xamarin.androidx.migration.tool
// dotnet tool install -g xamarin.androidbinderator.tool
// dotnet tool install -g cake.tool
// dotnet cake -v <verbosity>

using System;
using System.Text.RegularExpressions;
Expand Down Expand Up @@ -31,7 +38,7 @@ var REF_PARAMNAMES_URL = "https://bosstoragemirror.blob.core.windows.net/android
var XAMARIN_ANDROID_PATH = EnvironmentVariable ("XAMARIN_ANDROID_PATH");
var ANDROID_SDK_BASE_VERSION = "v1.0";
var ANDROID_SDK_VERSION = "v9.0";
string AndroidSdkBuildTools = $"29.0.2";
string AndroidSdkBuildTools = "29.0.2";

if (string.IsNullOrEmpty(XAMARIN_ANDROID_PATH)) {
if (IsRunningOnWindows()) {
Expand All @@ -52,13 +59,8 @@ var BUILD_COMMIT = EnvironmentVariable("BUILD_COMMIT") ?? "DEV";
var BUILD_NUMBER = EnvironmentVariable("BUILD_NUMBER") ?? "DEBUG";
var BUILD_TIMESTAMP = DateTime.UtcNow.ToString();

var REQUIRED_DOTNET_TOOLS = new [] {
"xamarin-android-binderator",
"xamarin.androidx.migration.tool"
};

string nuget_version_template =
// "71.vvvv.0-preview3" // pre AndroidX version
//"71.vvvv.0-preview3" // pre AndroidX version
"1xx.yy.zz.ww-suffix" // AndroidX version preview
//"1xx.yy.zz" // AndroidX version stable/release
;
Expand Down Expand Up @@ -132,16 +134,20 @@ Task("javadocs")
if (!FileExists("./externals/paramnames.xml"))
DownloadFile(REF_METADATA_URL, "./externals/paramnames.xml");

var astJar = new FilePath("./util/JavaASTParameterNames-1.0.jar");
var javaExe = string.IsNullOrEmpty(JAVA_HOME)
? "java"
: MakeAbsolute(new DirectoryPath(JAVA_HOME).Combine("bin/java")).FullPath;

var astJar = MakeAbsolute(new FilePath("./util/JavaASTParameterNames-1.0.jar")).FullPath;
var sourcesJars = GetFiles("./externals/**/*-sources.jar");

foreach (var srcJar in sourcesJars) {
var srcJarPath = MakeAbsolute(srcJar).FullPath;
var outTxtPath = srcJarPath.Replace("-sources.jar", "-paramnames.txt");
var outXmlPath = srcJarPath.Replace("-sources.jar", "-paramnames.xml");

StartProcess("java", "-jar \"" + MakeAbsolute(astJar).FullPath + "\" --text \"" + srcJarPath + "\" \"" + outTxtPath + "\"");
StartProcess("java", "-jar \"" + MakeAbsolute(astJar).FullPath + "\" --xml \"" + srcJarPath + "\" \"" + outXmlPath + "\"");
StartProcess(javaExe, "-jar \"" + astJar + "\" --text \"" + srcJarPath + "\" \"" + outTxtPath + "\"");
StartProcess(javaExe, "-jar \"" + astJar + "\" --xml \"" + srcJarPath + "\" \"" + outXmlPath + "\"");
}
});

Expand Down Expand Up @@ -222,9 +228,9 @@ Task("binderate-prepare-dependencies-samples-packages-config")
XmlNodeList list = xml.SelectNodes("/packages/package");
foreach (XmlNode xn in list)
{
string id = xn.Attributes["id"].Value; //Get attribute-id
string id = xn.Attributes["id"].Value; //Get attribute-id
//string text = xn["Text"].InnerText; //Get Text Node
string v = xn.Attributes["version"].Value; //Get attribute-id
string v = xn.Attributes["version"].Value; //Get attribute-id

Information($" id : {id}");
Information($" version: {v}");
Expand All @@ -244,7 +250,7 @@ Task("binderate-prepare-dependencies-samples-packages-config")
}
}
}

return;
}
);
Expand Down Expand Up @@ -321,9 +327,8 @@ Task("binderate-config-verify")

Warning($" expected : ");
Warning($" nuget_version = {nuget_version_new}");
throw new Exception("check config.json for nuget id");

return;
throw new Exception("check config.json for nuget id");
}
}
}
Expand All @@ -332,10 +337,10 @@ Task("binderate-config-verify")

Task("binderate-diff")
.IsDependentOn("binderate")
.Does
(
() =>
{
.Does
(
() =>
{
EnsureDirectoryExists("./output/");

// "git diff master:config.json config.json" > ./output/config.json.diff-from-master.txt"
Expand All @@ -344,9 +349,9 @@ Task("binderate-diff")
IEnumerable<string> redirectedStandardOutput;
ProcessSettings process_settings = new ProcessSettings ()
{
Arguments = process_args,
RedirectStandardOutput = true
};
Arguments = process_args,
RedirectStandardOutput = true
};
int exitCodeWithoutArguments = StartProcess(process, process_settings, out redirectedStandardOutput);
System.IO.File.WriteAllLines("./output/config.json.diff-from-master.txt", redirectedStandardOutput.ToArray());
Information("Exit code: {0}", exitCodeWithoutArguments);
Expand All @@ -364,7 +369,7 @@ Task("binderate-fix")
binderator_json_array = (JArray)JToken.ReadFrom(jtr);
}

Warning("config.json fixing missing folder strucutre ...");
Warning("config.json fixing missing folder structure ...");
foreach(JObject jo in binderator_json_array[0]["artifacts"])
{
string groupId = (string) jo["groupId"];
Expand Down Expand Up @@ -456,11 +461,11 @@ Task("binderate-fix")
$"{dir_artifact}/Additions/Additions.cs"
);
}
}
}

return;
}
);
return;
}
);

Task("mergetargets")
.Does(() =>
Expand Down Expand Up @@ -544,11 +549,11 @@ Task("samples-directory-build-targets")
Information($"nugetId = {jo["nugetId"]}");
}

XmlDocument doc = new XmlDocument();
XmlElement element_p = doc.CreateElement( string.Empty, "Project", string.Empty );
doc.AppendChild( element_p );
XmlElement element_ig = doc.CreateElement( string.Empty, "ItemGroup", string.Empty );
element_p.AppendChild(element_ig);
XmlDocument doc = new XmlDocument();
XmlElement element_p = doc.CreateElement( string.Empty, "Project", string.Empty );
doc.AppendChild( element_p );
XmlElement element_ig = doc.CreateElement( string.Empty, "ItemGroup", string.Empty );
element_p.AppendChild(element_ig);

foreach(JObject jo in binderator_json_array[0]["artifacts"])
{
Expand All @@ -561,7 +566,7 @@ Task("samples-directory-build-targets")
Information($"nugetId = {jo["nugetId"]}");

XmlElement element_pr = doc.CreateElement( string.Empty, "PackageReference", string.Empty );
element_ig.AppendChild(element_pr);
element_ig.AppendChild(element_pr);
XmlAttribute attr_update = doc.CreateAttribute("Update");
attr_update.Value = (string) jo["nugetId"];
element_pr.Attributes.Append(attr_update);
Expand Down Expand Up @@ -597,16 +602,19 @@ Task("samples")
.Concat(GetFiles("./samples/com.google.firebase/**/*.sln"))
;

foreach(string config in Configs)
foreach (string config in Configs)
{
foreach (var sampleSln in sampleSlns)
{
string filename_sln = sampleSln.GetFilenameWithoutExtension().ToString();

if ( ! filename_sln.Contains("BuildAll") )
{
NuGetRestore(sampleSln, new NuGetRestoreSettings { }); // R8 errors
}
// Restore solution using MSBuild (see MSBuild invocation below) due to NuGet CLI
// has to be downloaded manually from https://www.nuget.org/downloads on Windows
// or be installed as Cake addin using NuGet.Versioning package.
// if ( ! filename_sln.Contains("BuildAll") )
// {
// NuGetRestore(sampleSln, new NuGetRestoreSettings { }); // R8 errors
// }
if
(
sampleSln.ToString().Contains("com.google.android.gms/play-services-cast/CastingCall.sln")
Expand All @@ -631,12 +639,14 @@ Task("samples")
c =>
{
c.Configuration = config;
c.MaxCpuCount = MAX_CPU_COUNT;
c.Properties.Add("DesignTimeBuild", new [] { "false" });
c.BinaryLogger = new MSBuildBinaryLogSettings
{
Enabled = true,
FileName = bl
};
c.Restore = !filename_sln.Contains("BuildAll"); // R8 errors
if (! string.IsNullOrEmpty(ANDROID_HOME))
{
c.Properties.Add("AndroidSdkDirectory", new [] { $"{ANDROID_HOME}" } );
Expand Down Expand Up @@ -673,8 +683,8 @@ Task("allbindingprojectrefs")
var itemGroup = new XElement(xmlns + "ItemGroup");
foreach (var nupkg in GetFiles(pattern)) {
var filename = nupkg.GetFilenameWithoutExtension();
var match = Regex.Match(filename.ToString(), @"(.+?)\.(\d+[\.0-9\-a-zA-Z]+)");
itemGroup.Add(new XElement(xmlns + "PackageReference",
var match = Regex.Match(filename.ToString(), @"(.+?)\.(\d+[\.0-9\-a-zA-Z]+)");
itemGroup.Add(new XElement(xmlns + "PackageReference",
new XAttribute("Include", match.Groups[1]),
new XAttribute("Version", match.Groups[2])));
}
Expand Down Expand Up @@ -706,7 +716,7 @@ Task("nuget")
c.Properties.Add("PackageRequireLicenseAcceptance", new [] { "true" });
c.Properties.Add("DesignTimeBuild", new [] { "false" });
c.Properties.Add("AndroidSdkBuildToolsVersion", new [] { $"{AndroidSdkBuildTools}" });

c.Restore = false;
if (! string.IsNullOrEmpty(ANDROID_HOME))
{
c.Properties.Add("AndroidSdkDirectory", new[] { $"{ANDROID_HOME}" });
Expand Down Expand Up @@ -747,14 +757,14 @@ Task ("ci-setup")
ReplaceTextInFiles(glob, "{BUILD_TIMESTAMP}", BUILD_TIMESTAMP);
});

Task("nuget-dependecies")
.Does
(
() =>
{
string icanhasdotnet = "https://icanhasdot.net/Downloads/ICanHasDotnetCore.zip";
}
);
// Task("nuget-dependecies")
// .Does
// (
// () =>
// {
// string icanhasdotnet = "https://icanhasdot.net/Downloads/ICanHasDotnetCore.zip";
// }
// );

// Task ("genapi")
// .IsDependentOn ("libs")
Expand Down Expand Up @@ -834,4 +844,4 @@ Task ("ci")
//.IsDependentOn ("merge")
.IsDependentOn ("samples");

RunTarget (TARGET);
RunTarget (TARGET);
13 changes: 7 additions & 6 deletions build/scripts/update-config.csx
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@

#r "nuget: MavenNet, 2.2.0"
#r "nuget: Newtonsoft.Json, 12.0.3"
#r "nuget: NuGet.Versioning, 5.8.0"
#r "nuget: NuGet.Versioning, 5.8.1"

// Usage:
// dotnet tool install -g dotnet-script
// dotnet script update-config.csx -- ../../config.json <update|bump>
// This script compares the versions of Java packages we are currently binding to the
// stable versions available in Google's Maven repository. The specified configuration
// file can be automatically updated by including the "update" argument. A revision bump
// stable versions available in Google's Maven repository. The specified configuration
// file can be automatically updated by including the "update" argument. A revision bump
// can be applied to all packages with the "bump" argument, which is mutually exclusive
// with "update".

using MavenNet;
using MavenNet.Models;
using Newtonsoft.Json;
Expand All @@ -34,8 +35,8 @@ var should_minor_bump = Args.Count > 1 && Args[1].ToLowerInvariant () == "bump";
var repo = MavenRepository.FromGoogle ();
await repo.Refresh ();

Console.WriteLine ("| Package (* = Needs Update) | Currently Bound | Latest Stable |");
Console.WriteLine ("|--------------------------------------------------------------|-----------------|-----------------|");
Console.WriteLine ("| Package (* = Needs Update) | Currently Bound | Latest Stable |");
Console.WriteLine ("|------------------------------------------------------------------------|-----------------|-----------------|");

// Find the Maven artifact for each package in our configuration file
foreach (var art in config[0].Artifacts.Where(a => !a.DependencyOnly)) {
Expand Down Expand Up @@ -91,7 +92,7 @@ foreach (var art in config[0].Artifacts.Where(a => !a.DependencyOnly)) {
art.NugetVersion = $"{version}.{revision}{release}";
}

Console.WriteLine ($"| {package_name.PadRight (60)} | {current_version.PadRight (15)} | {(GetLatestVersion (a)?.ToString () ?? string.Empty).PadRight (15)} |");
Console.WriteLine ($"| {package_name.PadRight (70)} | {current_version.PadRight (15)} | {(GetLatestVersion (a)?.ToString () ?? string.Empty).PadRight (15)} |");

if (should_update || should_minor_bump)
{
Expand Down
6 changes: 3 additions & 3 deletions global.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"msbuild-sdks":
"msbuild-sdks":
{
"MSBuild.Sdk.Extras": "3.0.23",
"Microsoft.Build.Traversal": "2.1.1",
"Microsoft.Build.NoTargets": "2.0.1"
"Microsoft.Build.Traversal": "3.0.23",
"Microsoft.Build.NoTargets": "3.0.4"
}
}
4 changes: 2 additions & 2 deletions source/GooglePlayServices-Firebase.Solution.proj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.Build.Traversal/2.1.1">
<Project Sdk="Microsoft.Build.Traversal">
<ItemGroup>
<SolutionConfiguration Include="Debug"/>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<!-- Build all projects recursively under the "src" folder -->
<ProjectReference Include=".\**\*.*proj" />
Expand Down
Loading