core: Build macOS ARM64 binaries. Resolves #12372 (#12569)

This commit is contained in:
Diego Heras 2021-11-17 20:22:18 +01:00 committed by GitHub
parent 607c3f6b0b
commit 987c68260b
5 changed files with 37 additions and 66 deletions

View File

@ -717,7 +717,7 @@ On an Ubuntu 16 system: [chrisjohnson00.jackett](https://galaxy.ansible.com/chri
macOS 10.13 or greater
### Install as service
1. Download and extract the latest `Jackett.Binaries.macOS.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases).
1. Download and extract the latest `Jackett.Binaries.macOS.tar.gz` or `Jackett.Binaries.macOSARM64.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases).
2. Open the extracted folder and double-click on `install_service_macos`.
3. If the installation was a success, you can close the Terminal window.
@ -725,7 +725,7 @@ The service will start on each logon. You can always stop it by running `launchc
Logs are stored as usual under `~/.config/Jackett/log.txt`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.macOS.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`.
Download and extract the latest `Jackett.Binaries.macOS.tar.gz` or `Jackett.Binaries.macOSARM64.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`.
## Installation using Docker

View File

@ -50,6 +50,13 @@ stages:
runtime: osx-x64
archiveType: tar
artifactName: Jackett.Binaries.macOS.tar.gz
macOSARM64:
buildDescription: macOS ARM64
imageName: macOS-10.15
framework: $(netCoreFramework)
runtime: osx-arm64
archiveType: tar
artifactName: Jackett.Binaries.macOSARM64.tar.gz
LinuxAMDx64:
buildDescription: Linux AMD x64
imageName: ubuntu-20.04

View File

@ -155,8 +155,9 @@ namespace Jackett.Common.Services
}
private string GetUpdaterPath(string tempDirectory) =>
variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64 ||
variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64
variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64 ||
variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32 ||
variant == Variants.JackettVariant.CoreLinuxArm64
? Path.Combine(tempDirectory, "Jackett", "JackettUpdater")
: Path.Combine(tempDirectory, "Jackett", "JackettUpdater.exe");
@ -258,9 +259,9 @@ namespace Jackett.Common.Services
gzipStream.Close();
inStream.Close();
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64
|| variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64
|| variant == Variants.JackettVariant.Mono)
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64
|| variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32
|| variant == Variants.JackettVariant.CoreLinuxArm64 || variant == Variants.JackettVariant.Mono)
{
//Calling the file permission service to limit usage to netcoreapp. The Mono.Posix.NETStandard library causes issues outside of .NET Core
//https://github.com/xamarin/XamarinComponents/issues/282
@ -273,7 +274,7 @@ namespace Jackett.Common.Services
var jackettUpdaterPath = tempDir + "/Jackett/JackettUpdater";
filePermissionService.MakeFileExecutable(jackettUpdaterPath);
if (variant == Variants.JackettVariant.CoreMacOs)
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64)
{
filePermissionService.MakeFileExecutable(tempDir + "/Jackett/install_service_macos");
filePermissionService.MakeFileExecutable(tempDir + "/Jackett/uninstall_jackett_macos");

View File

@ -12,6 +12,7 @@ namespace Jackett.Common.Utils
Mono,
CoreWindows,
CoreMacOs,
CoreMacOsArm64,
CoreLinuxAmdx64,
CoreLinuxArm32,
CoreLinuxArm64
@ -22,44 +23,25 @@ namespace Jackett.Common.Utils
if (DotNetCoreUtil.IsRunningOnDotNetCore)
{
//Dot Net Core
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return JackettVariant.CoreWindows;
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && RuntimeInformation.ProcessArchitecture == Architecture.X64)
return JackettVariant.CoreMacOs;
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
return JackettVariant.CoreMacOsArm64;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.X64)
{
return JackettVariant.CoreLinuxAmdx64;
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm)
{
return JackettVariant.CoreLinuxArm32;
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
{
return JackettVariant.CoreLinuxArm64;
}
}
else
{
//Full framework
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
return JackettVariant.FullFrameworkWindows;
}
else
{
return JackettVariant.Mono;
}
return JackettVariant.Mono;
}
return JackettVariant.NotFound;
@ -70,51 +52,31 @@ namespace Jackett.Common.Utils
switch (variant)
{
case JackettVariant.FullFrameworkWindows:
{
return "Jackett.Binaries.Windows.zip";
}
return "Jackett.Binaries.Windows.zip";
case JackettVariant.Mono:
{
return "Jackett.Binaries.Mono.tar.gz";
}
return "Jackett.Binaries.Mono.tar.gz";
case JackettVariant.CoreWindows:
{
return "Jackett.Binaries.Windows.zip";
}
return "Jackett.Binaries.Windows.zip";
case JackettVariant.CoreMacOs:
{
return "Jackett.Binaries.macOS.tar.gz";
}
return "Jackett.Binaries.macOS.tar.gz";
case JackettVariant.CoreMacOsArm64:
return "Jackett.Binaries.macOSARM64.tar.gz";
case JackettVariant.CoreLinuxAmdx64:
{
return "Jackett.Binaries.LinuxAMDx64.tar.gz";
}
return "Jackett.Binaries.LinuxAMDx64.tar.gz";
case JackettVariant.CoreLinuxArm32:
{
return "Jackett.Binaries.LinuxARM32.tar.gz";
}
return "Jackett.Binaries.LinuxARM32.tar.gz";
case JackettVariant.CoreLinuxArm64:
{
return "Jackett.Binaries.LinuxARM64.tar.gz";
}
return "Jackett.Binaries.LinuxARM64.tar.gz";
default:
{
return "";
}
return "";
}
}
public bool IsNonWindowsDotNetCoreVariant(JackettVariant variant)
{
if (variant == JackettVariant.CoreMacOs || variant == JackettVariant.CoreLinuxAmdx64
|| variant == JackettVariant.CoreLinuxArm32 || variant == JackettVariant.CoreLinuxArm64)
{
return true;
}
else
{
return false;
}
return (variant == JackettVariant.CoreMacOs || variant == JackettVariant.CoreMacOsArm64
|| variant == JackettVariant.CoreLinuxAmdx64 || variant == JackettVariant.CoreLinuxArm32
|| variant == JackettVariant.CoreLinuxArm64);
}
}
}

View File

@ -603,8 +603,9 @@ namespace Jackett.Updater
startInfo.FileName = "mono";
}
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64
|| variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64)
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64
|| variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32
|| variant == Variants.JackettVariant.CoreLinuxArm64)
{
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;