diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 13905fa3d..e8e2ae0c7 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -15,7 +15,7 @@ variables: buildName: '$(Build.SourceBranchName).$(lidarrVersion)' sentryOrg: 'servarr' sentryUrl: 'https://sentry.servarr.com' - dotnetVersion: '6.0.201' + dotnetVersion: '6.0.202' nodeVersion: '16.X' innoVersion: '6.2.0' windowsImage: 'windows-2022' @@ -97,15 +97,14 @@ stages: - bash: | BUNDLEDVERSIONS=${AGENT_TOOLSDIRECTORY}/dotnet/sdk/${DOTNETVERSION}/Microsoft.NETCoreSdk.BundledVersions.props echo $BUNDLEDVERSIONS - grep osx-x64 $BUNDLEDVERSIONS if grep -q freebsd-x64 $BUNDLEDVERSIONS; then - echo "BSD already enabled" + echo "Extra platforms already enabled" else - echo "Enabling BSD support" - sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64/' $BUNDLEDVERSIONS + echo "Enabling extra platform support" + sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64;linux-x86/' $BUNDLEDVERSIONS fi - displayName: Enable FreeBSD Support - - bash: ./build.sh --backend --enable-bsd + displayName: Enable Extra Platform Support + - bash: ./build.sh --backend --enable-extra-platforms displayName: Build Lidarr Backend - bash: | find ${OUTPUTFOLDER} -type f ! -path "*/publish/*" -exec rm -rf {} \; @@ -119,24 +118,28 @@ stages: displayName: Publish Backend condition: and(succeeded(), eq(variables['osName'], 'Windows')) - publish: '$(testsFolder)/net6.0/win-x64/publish' - artifact: WindowsCoreTests - displayName: Publish Windows Test Package + artifact: win-x64-tests + displayName: Publish win-x64 Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) - publish: '$(testsFolder)/net6.0/linux-x64/publish' - artifact: LinuxCoreTests - displayName: Publish Linux Test Package + artifact: linux-x64-tests + displayName: Publish linux-x64 Test Package + condition: and(succeeded(), eq(variables['osName'], 'Windows')) + - publish: '$(testsFolder)/net6.0/linux-x86/publish' + artifact: linux-x86-tests + displayName: Publish linux-x86 Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) - publish: '$(testsFolder)/net6.0/linux-musl-x64/publish' - artifact: LinuxMuslCoreTests - displayName: Publish Linux Musl Test Package + artifact: linux-musl-x64-tests + displayName: Publish linux-musl-x64 Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) - publish: '$(testsFolder)/net6.0/freebsd-x64/publish' - artifact: FreebsdCoreTests - displayName: Publish FreeBSD Test Package + artifact: freebsd-x64-tests + displayName: Publish freebsd-x64 Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) - publish: '$(testsFolder)/net6.0/osx-x64/publish' - artifact: MacCoreTests - displayName: Publish MacOS Test Package + artifact: osx-x64-tests + displayName: Publish osx-x64 Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) - stage: Build_Frontend @@ -239,7 +242,7 @@ stages: artifactName: WindowsFrontend targetPath: _output displayName: Fetch Frontend - - bash: ./build.sh --packages --enable-bsd + - bash: ./build.sh --packages --enable-extra-platforms displayName: Create Packages - bash: | find . -name "fpcalc" -exec chmod a+x {} \; @@ -247,28 +250,28 @@ stages: find . -name "Lidarr.Update" -exec chmod a+x {} \; displayName: Set executable bits - task: ArchiveFiles@2 - displayName: Create Windows Core zip + displayName: Create win-x64 zip inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).windows-core-x64.zip' archiveType: 'zip' includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/win-x64/net6.0 - task: ArchiveFiles@2 - displayName: Create Windows x86 Core zip + displayName: Create win-x86 zip inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).windows-core-x86.zip' archiveType: 'zip' includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/win-x86/net6.0 - task: ArchiveFiles@2 - displayName: Create MacOS x64 Core app + displayName: Create osx-x64 app inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-app-core-x64.zip' archiveType: 'zip' includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/osx-x64-app/net6.0 - task: ArchiveFiles@2 - displayName: Create MacOS x64 Core tar + displayName: Create osx-x64 tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-core-x64.tar.gz' archiveType: 'tar' @@ -276,14 +279,14 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/osx-x64/net6.0 - task: ArchiveFiles@2 - displayName: Create MacOS arm64 Core app + displayName: Create osx-arm64 app inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-app-core-arm64.zip' archiveType: 'zip' includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/osx-arm64-app/net6.0 - task: ArchiveFiles@2 - displayName: Create MacOS arm64 Core tar + displayName: Create osx-arm64 tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-core-arm64.tar.gz' archiveType: 'tar' @@ -291,7 +294,7 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/osx-arm64/net6.0 - task: ArchiveFiles@2 - displayName: Create Linux Core tar + displayName: Create linux-x64 tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-x64.tar.gz' archiveType: 'tar' @@ -299,7 +302,7 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/linux-x64/net6.0 - task: ArchiveFiles@2 - displayName: Create Linux Musl Core tar + displayName: Create linux-musl-x64 tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-musl-core-x64.tar.gz' archiveType: 'tar' @@ -307,7 +310,15 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/linux-musl-x64/net6.0 - task: ArchiveFiles@2 - displayName: Create ARM32 Linux Core tar + displayName: Create linux-x86 tar + inputs: + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-x86.tar.gz' + archiveType: 'tar' + tarCompression: 'gz' + includeRootFolder: false + rootFolderOrFile: $(artifactsFolder)/linux-x86/net6.0 + - task: ArchiveFiles@2 + displayName: Create linux-arm tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-arm.tar.gz' archiveType: 'tar' @@ -315,7 +326,7 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/linux-arm/net6.0 - task: ArchiveFiles@2 - displayName: Create ARM32 Linux Musl Core tar + displayName: Create linux-musl-arm tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-musl-core-arm.tar.gz' archiveType: 'tar' @@ -323,7 +334,7 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/linux-musl-arm/net6.0 - task: ArchiveFiles@2 - displayName: Create ARM64 Linux Core tar + displayName: Create linux-arm64 tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-arm64.tar.gz' archiveType: 'tar' @@ -331,7 +342,7 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/linux-arm64/net6.0 - task: ArchiveFiles@2 - displayName: Create ARM64 Linux Musl Core tar + displayName: Create linux-musl-arm64 tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-musl-core-arm64.tar.gz' archiveType: 'tar' @@ -339,7 +350,7 @@ stages: includeRootFolder: false rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net6.0 - task: ArchiveFiles@2 - displayName: Create FreeBSD Core Core tar + displayName: Create freebsd-x64 tar inputs: archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).freebsd-core-x64.tar.gz' archiveType: 'tar' @@ -406,22 +417,22 @@ stages: matrix: MacCore: osName: 'Mac' - testName: 'MacCore' + testName: 'osx-x64' poolName: 'Azure Pipelines' imageName: ${{ variables.macImage }} WindowsCore: osName: 'Windows' - testName: 'WindowsCore' + testName: 'win-x64' poolName: 'Azure Pipelines' imageName: ${{ variables.windowsImage }} LinuxCore: osName: 'Linux' - testName: 'LinuxCore' + testName: 'linux-x64' poolName: 'Azure Pipelines' imageName: ${{ variables.linuxImage }} FreebsdCore: osName: 'Linux' - testName: 'FreebsdCore' + testName: 'freebsd-x64' poolName: 'FreeBSD' imageName: @@ -440,7 +451,7 @@ stages: displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: '$(testName)Tests' + artifactName: '$(testName)-tests' targetPath: $(testsFolder) - powershell: Set-Service SCardSvr -StartupType Manual displayName: Enable Windows Test Service @@ -448,7 +459,7 @@ stages: - bash: | chmod a+x _tests/fpcalc displayName: Make fpcalc Executable - condition: and(succeeded(), or(eq(variables['osName'], 'Mac'), eq(variables['testName'], 'LinuxCore'))) + condition: and(succeeded(), or(eq(variables['osName'], 'Mac'), eq(variables['testName'], 'linux-x64'))) - bash: find ${TESTSFOLDER} -name "Lidarr.Test.Dummy" -exec chmod a+x {} \; displayName: Make Test Dummy Executable condition: and(succeeded(), ne(variables['osName'], 'Windows')) @@ -474,8 +485,12 @@ stages: matrix: alpine: testName: 'Musl Net Core' - artifactName: LinuxMuslCoreTests + artifactName: linux-musl-x64-tests containerImage: ghcr.io/servarr/testimages:alpine + linux-x86: + testName: 'linux-x86' + artifactName: linux-x86-tests + containerImage: ghcr.io/servarr/testimages:linux-x86 pool: vmImage: ${{ variables.linuxImage }} @@ -486,9 +501,15 @@ stages: steps: - task: UseDotNet@2 - displayName: 'Install .net core' + displayName: 'Install .NET' inputs: version: $(dotnetVersion) + condition: and(succeeded(), ne(variables['testName'], 'linux-x86')) + - bash: | + SDKURL=$(curl -s https://api.github.com/repos/Servarr/dotnet-linux-x86/releases | jq -rc '.[].assets[].browser_download_url' | grep sdk-${DOTNETVERSION}.*gz$) + curl -fsSL $SDKURL | tar xzf - -C /opt/dotnet + displayName: 'Install .NET' + condition: and(succeeded(), eq(variables['testName'], 'linux-x86')) - checkout: none - task: DownloadPipelineArtifact@2 displayName: Download Test Artifact @@ -539,17 +560,17 @@ stages: matrix: MacCore: osName: 'Mac' - testName: 'MacCore' + testName: 'osx-x64' imageName: ${{ variables.macImage }} pattern: 'Lidarr.*.osx-core-x64.tar.gz' WindowsCore: osName: 'Windows' - testName: 'WindowsCore' + testName: 'win-x64' imageName: ${{ variables.windowsImage }} pattern: 'Lidarr.*.windows-core-x64.zip' LinuxCore: osName: 'Linux' - testName: 'LinuxCore' + testName: 'linux-x64' imageName: ${{ variables.linuxImage }} pattern: 'Lidarr.*.linux-core-x64.tar.gz' @@ -566,7 +587,7 @@ stages: displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: '$(testName)Tests' + artifactName: '$(testName)-tests' targetPath: $(testsFolder) - task: DownloadPipelineArtifact@2 displayName: Download Build Artifact @@ -613,7 +634,7 @@ stages: displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: 'FreebsdCoreTests' + artifactName: 'freebsd-x64-tests' targetPath: $(testsFolder) - task: DownloadPipelineArtifact@2 displayName: Download Build Artifact @@ -649,11 +670,15 @@ stages: strategy: matrix: alpine: - testName: 'Musl Net Core' - artifactName: LinuxMuslCoreTests + testName: 'linux-musl-x64' + artifactName: linux-musl-x64-tests containerImage: ghcr.io/servarr/testimages:alpine pattern: 'Lidarr.*.linux-musl-core-x64.tar.gz' - + linux-x86: + testName: 'linux-x86' + artifactName: linux-x86-tests + containerImage: ghcr.io/servarr/testimages:linux-x86 + pattern: 'Lidarr.*.linux-core-x86.tar.gz' pool: vmImage: ${{ variables.linuxImage }} @@ -663,9 +688,15 @@ stages: steps: - task: UseDotNet@2 - displayName: 'Install .net core' + displayName: 'Install .NET' inputs: version: $(dotnetVersion) + condition: and(succeeded(), ne(variables['testName'], 'linux-x86')) + - bash: | + SDKURL=$(curl -s https://api.github.com/repos/Servarr/dotnet-linux-x86/releases | jq -rc '.[].assets[].browser_download_url' | grep sdk-${DOTNETVERSION}.*gz$) + curl -fsSL $SDKURL | tar xzf - -C /opt/dotnet + displayName: 'Install .NET' + condition: and(succeeded(), eq(variables['testName'], 'linux-x86')) - checkout: none - task: DownloadPipelineArtifact@2 displayName: Download Test Artifact @@ -711,16 +742,19 @@ stages: matrix: Linux: osName: 'Linux' + artifactName: 'linux-x64' imageName: ${{ variables.linuxImage }} pattern: 'Lidarr.*.linux-core-x64.tar.gz' failBuild: true Mac: osName: 'Mac' + artifactName: 'osx-x64' imageName: ${{ variables.macImage }} pattern: 'Lidarr.*.osx-core-x64.tar.gz' failBuild: true Windows: osName: 'Windows' + artifactName: 'win-x64' imageName: ${{ variables.windowsImage }} pattern: 'Lidarr.*.windows-core-x64.zip' failBuild: true @@ -738,7 +772,7 @@ stages: displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: '$(osName)CoreTests' + artifactName: '$(artifactName)-tests' targetPath: $(testsFolder) - task: DownloadPipelineArtifact@2 displayName: Download Build Artifact diff --git a/build.sh b/build.sh index 90942f88d..e8e90d006 100755 --- a/build.sh +++ b/build.sh @@ -25,14 +25,22 @@ UpdateVersionNumber() fi } -EnableBsdSupport() +EnableExtraPlatformsInSDK() { - #todo enable sdk with - #SDK_PATH=$(dotnet --list-sdks | grep -P '5\.\d\.\d+' | head -1 | sed 's/\(5\.[0-9]*\.[0-9]*\).*\[\(.*\)\]/\2\/\1/g') - # BUNDLED_VERSIONS="${SDK_PATH}/Microsoft.NETCoreSdk.BundledVersions.props" + SDK_PATH=$(dotnet --list-sdks | grep -P '6\.\d\.\d+' | head -1 | sed 's/\(6\.[0-9]*\.[0-9]*\).*\[\(.*\)\]/\2\/\1/g') + BUNDLEDVERSIONS="${SDK_PATH}/Microsoft.NETCoreSdk.BundledVersions.props" + if grep -q freebsd-x64 $BUNDLEDVERSIONS; then + echo "Extra platforms already enabled" + else + echo "Enabling extra platform support" + sed -i.ORI 's/osx-x64/osx-x64;freebsd-x64;linux-x86/' $BUNDLEDVERSIONS + fi +} +EnableExtraPlatforms() +{ if grep -qv freebsd-x64 src/Directory.Build.props; then - sed -i'' -e "s^\(.*\)^\1;freebsd-x64^g" src/Directory.Build.props + sed -i'' -e "s^\(.*\)^\1;freebsd-x64;linux-x86^g" src/Directory.Build.props fi } @@ -292,7 +300,8 @@ if [ $# -eq 0 ]; then PACKAGES=YES INSTALLER=NO LINT=YES - ENABLE_BSD=NO + ENABLE_EXTRA_PLATFORMS=NO + ENABLE_EXTRA_PLATFORMS_IN_SDK=NO fi while [[ $# -gt 0 ]] @@ -304,8 +313,12 @@ case $key in BACKEND=YES shift # past argument ;; - --enable-bsd) - ENABLE_BSD=YES + --enable-bsd|--enable-extra-platforms) + ENABLE_EXTRA_PLATFORMS=YES + shift # past argument + ;; + --enable-extra-platforms-in-sdk) + ENABLE_EXTRA_PLATFORMS_IN_SDK=YES shift # past argument ;; -r|--runtime) @@ -349,12 +362,17 @@ esac done set -- "${POSITIONAL[@]}" # restore positional parameters +if [ "$ENABLE_EXTRA_PLATFORMS_IN_SDK" = "YES" ]; +then + EnableExtraPlatformsInSDK +fi + if [ "$BACKEND" = "YES" ]; then UpdateVersionNumber - if [ "$ENABLE_BSD" = "YES" ]; + if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ]; then - EnableBsdSupport + EnableExtraPlatforms fi Build if [[ -z "$RID" || -z "$FRAMEWORK" ]]; @@ -364,9 +382,10 @@ then PackageTests "net6.0" "linux-x64" PackageTests "net6.0" "linux-musl-x64" PackageTests "net6.0" "osx-x64" - if [ "$ENABLE_BSD" = "YES" ]; + if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ]; then PackageTests "net6.0" "freebsd-x64" + PackageTests "net6.0" "linux-x86" fi else PackageTests "$FRAMEWORK" "$RID" @@ -405,9 +424,10 @@ then Package "net6.0" "linux-musl-arm" Package "net6.0" "osx-x64" Package "net6.0" "osx-arm64" - if [ "$ENABLE_BSD" = "YES" ]; + if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ]; then Package "net6.0" "freebsd-x64" + Package "net6.0" "linux-x86" fi else Package "$FRAMEWORK" "$RID" diff --git a/package.json b/package.json index 09519c316..8900183e1 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@fortawesome/free-regular-svg-icons": "6.1.0", "@fortawesome/free-solid-svg-icons": "6.1.0", "@fortawesome/react-fontawesome": "0.1.18", - "@microsoft/signalr": "6.0.3", + "@microsoft/signalr": "6.0.4", "@sentry/browser": "6.18.2", "@sentry/integrations": "6.18.2", "ansi-colors": "4.1.1", diff --git a/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj b/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj index 62d2464e9..1758fa00e 100644 --- a/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj +++ b/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj @@ -4,7 +4,7 @@ Library - + diff --git a/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj b/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj index e4304df24..913473a70 100644 --- a/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj +++ b/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj @@ -3,7 +3,7 @@ net6.0 - + diff --git a/src/NzbDrone.Mono/Lidarr.Mono.csproj b/src/NzbDrone.Mono/Lidarr.Mono.csproj index 6ceb75afd..1367d290f 100644 --- a/src/NzbDrone.Mono/Lidarr.Mono.csproj +++ b/src/NzbDrone.Mono/Lidarr.Mono.csproj @@ -5,7 +5,7 @@ - + diff --git a/src/Runtimes/linux-x86/fpcalc b/src/Runtimes/linux-x86/fpcalc new file mode 100755 index 000000000..60ccc6c5d Binary files /dev/null and b/src/Runtimes/linux-x86/fpcalc differ diff --git a/yarn.lock b/yarn.lock index 43c9fc262..978f978e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1110,15 +1110,15 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@microsoft/signalr@6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@microsoft/signalr/-/signalr-6.0.3.tgz#9904efd48cd488e3c1c80930ff9fbb3c9f55895d" - integrity sha512-wWGVC2xi8OxNjyir8iQWuyxWHy3Dkakk2Q3VreCE7pDzFAgZ4pId6abJlRPMVIQxkUvUGc8knMW5l3sv2bJ/yw== +"@microsoft/signalr@6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@microsoft/signalr/-/signalr-6.0.4.tgz#ae9fc0b35ae6a125913a056a640589a661900174" + integrity sha512-YeWRh4LxfYnq4I5CKw17/HOq8rY+ouTv6Bq+s55122StE3pK29j8j2OpP+1PA3D1ksHPfy7dFIgC33yr/E+01A== dependencies: abort-controller "^3.0.0" eventsource "^1.0.7" fetch-cookie "^0.11.0" - node-fetch "^2.6.1" + node-fetch "^2.6.7" ws "^7.4.5" "@mrmlnc/readdir-enhanced@^2.2.1": @@ -4734,7 +4734,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@^2.6.1: +node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==