88 lines
4.2 KiB
C#
88 lines
4.2 KiB
C#
using Actions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Build {
|
|
public static class Dependencies {
|
|
static readonly string APR_VERSION = "1.7.5";
|
|
static readonly string APU_VERSION = "1.6.3";
|
|
static readonly string PY3C_VERSION = "1.1";
|
|
static readonly string SERF_VERSION = "1.3.10";
|
|
static readonly string ZLIB_VERSION = "1.2.8";
|
|
static readonly string SQLITE_VERSION = "3.39.4";
|
|
static readonly int SQLITE_VERSION_REL_YEAR = 2022;
|
|
static readonly string APACHE_MIRROR = "https://archive.apache.org/dist";
|
|
|
|
|
|
public static async Task<string?> DownloadIfNotExist(string url, string outPath) {
|
|
string? result = outPath;
|
|
if (!File.Exists(outPath)) {
|
|
Console.Write($"Downloading: {url}");
|
|
result = await Download.FileFromUrl(url, outPath);
|
|
Console.WriteLine($" Done");
|
|
} else {
|
|
Console.WriteLine($"Skip downloading: {url}");
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public static async Task<string> GetZLib(string dir) {
|
|
var ZLIB = $"zlib-{ZLIB_VERSION}";
|
|
var archiveFile = await DownloadIfNotExist($"https://github.com/madler/zlib/archive/refs/tags/v{ZLIB_VERSION}.tar.gz", Path.Combine(dir, $"{ZLIB}.tar.gz"));
|
|
Archive.UnpackTarGz(archiveFile, dir);
|
|
return Path.Combine(dir, ZLIB);
|
|
}
|
|
|
|
public static async Task<string> GetSqlite(string dir) {
|
|
var SQLITE_VERSION_LIST = SQLITE_VERSION.Split(".");
|
|
var SQLITE = string.Format("sqlite-amalgamation-{0}{1}{2}00", SQLITE_VERSION_LIST[0], SQLITE_VERSION_LIST[1].PadLeft(2, '0'), SQLITE_VERSION_LIST[2].PadLeft(2, '0'));
|
|
var archiveFile = await DownloadIfNotExist($"https://www.sqlite.org/{SQLITE_VERSION_REL_YEAR}/{SQLITE}.zip", Path.Combine(dir, $"{SQLITE}.zip"));
|
|
Archive.UnpackZip(archiveFile, dir);
|
|
return Path.Combine(dir, $"{SQLITE}");
|
|
}
|
|
|
|
public static async Task<string> GetSerf(string dir) {
|
|
var SERF = $"serf-{SERF_VERSION}";
|
|
var archiveFile = await DownloadIfNotExist($"https://archive.apache.org/dist/serf/{SERF}.tar.bz2", Path.Combine(dir, $"{SERF}.tar.bz2"));
|
|
Archive.UnpackTarBz2(archiveFile, dir);
|
|
return Path.Combine(dir, $"{SERF}");
|
|
}
|
|
|
|
public static async Task<string> GetExpat(string dir) {
|
|
|
|
var archiveFile = await DownloadIfNotExist($"https://github.com/libexpat/libexpat/releases/download/R_2_6_4/expat-win64bin-2.6.4.zip", Path.Combine(dir, $"expat-win64bin-2.6.4.zip"));
|
|
var resultDir = Path.Combine(dir, "expat-win64bin-2.6.4");
|
|
Directory.CreateDirectory(resultDir);
|
|
Archive.UnpackZip(archiveFile, resultDir);
|
|
return Path.Combine(dir, resultDir);
|
|
}
|
|
|
|
public static async Task<string> GetOpenssl(string dir) {
|
|
var archiveFile = await DownloadIfNotExist($"https://github.com/openssl/openssl/releases/download/openssl-3.2.3/openssl-3.2.3.tar.gz", Path.Combine(dir, $"openssl-3.2.3.tar.gz"));
|
|
Archive.UnpackTarGz(archiveFile, dir);
|
|
return Path.Combine(dir, $"openssl-3.2.3");
|
|
}
|
|
|
|
public static async Task<string> GetApr(string dir) {
|
|
var APR = $"apr-{APR_VERSION}";
|
|
var archiveFile = await DownloadIfNotExist($"{APACHE_MIRROR}/apr/{APR}.tar.bz2", Path.Combine(dir, $"{APR}.tar.bz2"));
|
|
Archive.UnpackTarBz2(archiveFile, dir);
|
|
return Path.Combine(dir, $"{APR}");
|
|
}
|
|
|
|
public static async Task<string> GetAprUtil(string dir) {
|
|
var APR_UTIL = $"apr-util-{APU_VERSION}";
|
|
var archiveFile = await DownloadIfNotExist($"{APACHE_MIRROR}/apr/{APR_UTIL}.tar.bz2", Path.Combine(dir, $"{APR_UTIL}.tar.bz2"));
|
|
Archive.UnpackTarBz2(archiveFile, dir);
|
|
return Path.Combine(dir, $"{APR_UTIL}");
|
|
}
|
|
|
|
public static async Task<string> GetSubversion(string projectRootDir) {
|
|
return Path.GetFullPath(Path.Combine(projectRootDir, "Dependencies", "subversion"));
|
|
}
|
|
}
|
|
}
|