Skip to content

Commit

Permalink
Merge pull request #314 from unoplatform/dev/jela/netcore-build
Browse files Browse the repository at this point in the history
Adjust SkiaSharp loading
  • Loading branch information
jeromelaban committed Sep 12, 2024
2 parents dce3eab + 7cafc18 commit fe37862
Show file tree
Hide file tree
Showing 4 changed files with 507 additions and 263 deletions.
142 changes: 115 additions & 27 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ on:
- legacy/**

env:
UnoCheck_Version: '1.21.1'
UnoCheck_Version: '1.26.0-dev.28'

jobs:
build_tool:
Expand All @@ -32,10 +32,10 @@ jobs:
with:
dotnet-version: '5.0.408'

- name: Setup .NET 7
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '7.0.100'
dotnet-version: '8.0.401'

- name: Setup GitVersion
uses: gittools/actions/gitversion/[email protected]
Expand All @@ -55,8 +55,8 @@ jobs:
gci -r -File -Include *.cs,*.targets,*.props,*.csproj | foreach-object { $a = $_.fullname; ( get-content $a ) | foreach-object { $_ -replace "v0","${{steps.gitversion.outputs.sha}}" } | set-content $a }
- run: |
& dotnet tool update --global uno.check --version ${{ env.UnoCheck_Version }} --add-source https://api.nuget.org/v3/index.json
& uno-check -v --ci --non-interactive --fix --skip xcode --skip androidemulator --skip gtk3 --skip vswin --skip vsmac
& dotnet tool update --global uno.check --version ${{ env.UnoCheck_Version }} --add-source https://api.nuget.org/v3/index.json
& uno-check -v --ci --non-interactive --fix --skip xcode --skip androidemulator --skip gtk3 --skip vswin --skip vsmac
name: Install .NET Workloads
- name: Build - CI
Expand All @@ -74,15 +74,113 @@ jobs:
run: |
dotnet test src/Resizetizer/test/UnitTests/Resizetizer.UnitTests.csproj -c Release -p:PackageVersion=$adjustedPackageVersion -p:Version=${{ steps.gitversion.outputs.assemblySemVer }} --logger GitHubActions --blame-crash --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
validation_5_2:
name: Validate 5.2 Samples
validation_5_2_nix:
name: Validate 5.2
needs: build_tool

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
config: [Debug, Release]

runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: NuGet
path: samples/packages

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.401'

- run: |
ubuntu_release=`lsb_release -rs`
wget https://packages.microsoft.com/config/ubuntu/${ubuntu_release}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install -y msopenjdk-11
sudo update-alternatives --list java
echo "JAVA_HOME=/usr/lib/jvm/msopenjdk-11-amd64" >> "$GITHUB_ENV"
if: runner.os == 'Linux'
name: Install OpenJDK 11
- run: |
& dotnet tool update --global uno.check --version ${{ env.UnoCheck_Version }} --add-source https://api.nuget.org/v3/index.json
& uno-check -v --ci --non-interactive --fix --skip xcode --skip androidemulator --skip gtk3 --skip vswin --skip vsmac
shell: pwsh
name: Install .NET Workloads
- name: Restore 5.2 Sample App (${{ matrix.config }})
shell: pwsh
run: |
cd samples/5.2/Uno52ResizetizerTests
& dotnet restore
- name: Delete nupkg files
run: |
Remove-Item -Recurse -Path $env:USERPROFILE\.nuget\packages\*.nupkg -Force
if: runner.os == 'Windows'
shell: pwsh

- name: Delete nupkg files
run: |
Remove-Item -Recurse -Path $env:HOME\.nuget\packages\*.nupkg -Force
if: runner.os != 'Windows'
shell: pwsh

- name: Validate 5.2 Samples app (${{ matrix.config }})
shell: pwsh

# Skip the macOS release build, the agent does not have
# enough disk space to handle it.
if: matrix.os == 'macos-latest' && matrix.config != 'Release'

run: |
& dotnet build -c ${{ matrix.config }} -p:RunAOTCompilation=false -p:WasmShellILLinkerEnabled=false /p:WindowsAppSDKSelfContained=false /p:WindowsPackageType=None -bl:./logs/sample-5.2-${{ matrix.config }}.binlog samples/5.2/Uno52ResizetizerTests/Uno52ResizetizerTests.sln
- name: Validate 5.2 Samples app (${{ matrix.config }} Incremental)

# Skip the macOS release build, the agent does not have
# enough disk space to handle it.
if: matrix.os == 'macos-latest' && matrix.config != 'Release'

shell: pwsh
run: |
& dotnet build -c ${{ matrix.config }} /p:RunAOTCompilation=false /p:WasmShellILLinkerEnabled=false /p:WindowsAppSDKSelfContained=false /p:WindowsPackageType=None /bl:.\logs\sample-5.2-${{ matrix.config }}-incremental.binlog samples\5.2\Uno52ResizetizerTests\Uno52ResizetizerTests.sln
- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: logs_5_2_${{ matrix.config }}_${{ matrix.os }}
path: .\logs


validation_5_2_win:
name: Validate 5.2 Samples (msbuild)
needs: build_tool
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.401'

- name: Download Artifact
uses: actions/download-artifact@v4
with:
Expand All @@ -105,22 +203,6 @@ jobs:
& $msbuild $sampleSolution /p:TargetFramework=net8.0-android /p:Configuration=Debug /p:AndroidInstallAfterBuild=False /p:BuildingInsideVisualStudio=true /p:DefineExplicitDefaults=true /p:RunConfiguration=Default /t:GetAndroidDependencies
& $msbuild $sampleSolution /p:TargetFramework= /p:Configuration=Debug /p:AndroidInstallAfterBuild=False /p:BuildingInsideVisualStudio=true /p:UseHostCompilerIfAvailable=false /p:DefineExplicitDefaults=true /p:RunConfiguration=Default /t:rebuild
- name: Validate 5.2 Samples app (Debug)
run: |
& dotnet build -c Debug /p:RunAOTCompilation=false /p:WasmShellILLinkerEnabled=false /bl:.\logs\sample-5.2-Debug.binlog samples\5.2\Uno52ResizetizerTests\Uno52ResizetizerTests.sln
- name: Validate 5.2 Samples app (Debug Incremental)
run: |
& dotnet build -c Debug /p:RunAOTCompilation=false /p:WasmShellILLinkerEnabled=false /bl:.\logs\sample-5.2-Debug-incremental.binlog samples\5.2\Uno52ResizetizerTests\Uno52ResizetizerTests.sln
- name: Validate 5.2 Samples app (Release)
run: |
& dotnet build -c Release /p:WindowsAppSDKSelfContained=false /p:WindowsPackageType=None /p:RunAOTCompilation=false /p:WasmShellILLinkerEnabled=false /bl:.\logs\sample-5.2-Release.binlog samples\5.2\Uno52ResizetizerTests\Uno52ResizetizerTests.sln
- name: Validate 5.2 Samples app (Release Incremental)
run: |
& dotnet build -c Release /p:WindowsAppSDKSelfContained=false /p:WindowsPackageType=None /p:RunAOTCompilation=false /p:WasmShellILLinkerEnabled=false /bl:.\logs\sample-5.2-Release-incremental.binlog samples\5.2\Uno52ResizetizerTests\Uno52ResizetizerTests.sln
- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: always()
Expand All @@ -142,7 +224,12 @@ jobs:
with:
name: NuGet
path: samples/packages


- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.401'

- run: |
& dotnet tool update --global uno.check --version ${{ env.UnoCheck_Version }} --add-source https://api.nuget.org/v3/index.json
& uno-check -v --ci --non-interactive --fix --skip xcode --skip androidemulator --skip gtk3 --skip vswin --skip vsmac
Expand All @@ -151,12 +238,12 @@ jobs:
- name: Validate 5.1 Samples app
run: |
$msbuild = vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
& $msbuild /r /bl:.\logs\samples.binlog samples\NewTemplate\build.slnf /p:AotAssemblies=false /p:WasmShellILLinkerEnabled=false
& $msbuild /r /bl:.\logs\samples.binlog samples\NewTemplate\build.slnf /p:AotAssemblies=false /p:WindowsPackageType=None /p:WasmShellILLinkerEnabled=false
- name: Validate 5.1 Samples (incremental)
run: |
$msbuild = vswhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
& $msbuild /r /bl:.\logs\samples-incremental.binlog samples\NewTemplate\build.slnf /p:AotAssemblies=false /p:WasmShellILLinkerEnabled=false
& $msbuild /r /bl:.\logs\samples-incremental.binlog samples\NewTemplate\build.slnf /p:AotAssemblies=false /p:WindowsPackageType=None /p:WasmShellILLinkerEnabled=false
- name: Upload Artifacts
uses: actions/upload-artifact@v4
Expand All @@ -172,7 +259,8 @@ jobs:
needs:
- build_tool
- validation_5_1
- validation_5_2
- validation_5_2_win
- validation_5_2_nix
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
62 changes: 2 additions & 60 deletions src/.nuspec/Uno.Resizetizer.targets
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</ItemGroup>

<PropertyGroup>
<_UnoResizetizerTaskAssemblyName>$(MSBuildThisFileDirectory)netstandard2.0\Uno.Resizetizer_v0.dll</_UnoResizetizerTaskAssemblyName>
<_UnoResizetizerTaskAssemblyName>$(MSBuildThisFileDirectory)netstandard2.0\Uno.Resizetizer_v0.dll</_UnoResizetizerTaskAssemblyName>
</PropertyGroup>

<UsingTask
Expand Down Expand Up @@ -273,8 +273,7 @@


<Target Name="ValidateAvailableItems"
BeforeTargets="UnoResizetizeCollectItems"
DependsOnTargets="_ResizetizerInitialize">
BeforeTargets="UnoResizetizeCollectItems">

<Warning
Condition="'%(UnoIcon.Link)' != ''"
Expand Down Expand Up @@ -619,61 +618,4 @@
</ItemGroup>
</Target>

<!--
This is used to get and copy the native runtime assets. This is a workaround as the assets aren't properly loading
Executed before UnoResizetizeImages for TargetFrameworks=='' and TargetFramework!=''
Executed before _SetBuildInnerTarget;_ComputeTargetFrameworkItems for TargetFrameworks!='' and TargetFramework==''
-->
<Target Name="_ResizetizerInitialize"
BeforeTargets="UnoResizetizeImages;_SetBuildInnerTarget;_ComputeTargetFrameworkItems">
<PropertyGroup>
<_ResizetizerRuntimeIdentifier>$(NETCoreSdkPortableRuntimeIdentifier)</_ResizetizerRuntimeIdentifier>
<!-- NOTE: We may need to adjust this in the future if we end up with assets compiled for osx-arm64 and osx-x64 -->
<_ResizetizerRuntimeIdentifier Condition=" $(_ResizetizerRuntimeIdentifier.Contains('osx')) ">osx</_ResizetizerRuntimeIdentifier>
<_ResizetizerRuntimeIdentifierDirectory>$([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)', 'netstandard2.0', 'runtimes', '$(_ResizetizerRuntimeIdentifier)'))</_ResizetizerRuntimeIdentifierDirectory>
<_ResizetizerRuntimeAssetsOutput>$([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)', 'netstandard2.0'))</_ResizetizerRuntimeAssetsOutput>
</PropertyGroup>

<ItemGroup>
<_ResiztizerRuntimeAssets Include="$(_ResizetizerRuntimeIdentifierDirectory)\**\*"
OutputDirectory="$(_ResizetizerRuntimeAssetsOutput)" />
</ItemGroup>

<Error Text="No Runtime was found."
Condition="$(_ResizetizerRuntimeIdentifier) == ''" />

<Error Text="The selected runtime directory does not exist"
Condition="!Exists('$(_ResizetizerRuntimeIdentifierDirectory)')" />

<!--
Try to copy files with one retry, fail fast and ignore the error if this happens, then retry
copying the files in a second time. This is present to avoid a race condition during
cross-targeted builds when this current target is executed concurrently.
When running, the Copy task may detect that files are not present for two
threads/processes, then assume it's safe to copy, while only one of them can do
so. Later on, the copied files may be locked by dotnet/msbuild and the other copy
instance never finishes sucessfully, regardless of SkipUnchangedFiles.
-->
<Copy SourceFiles="@(_ResiztizerRuntimeAssets)"
DestinationFiles="@(_ResiztizerRuntimeAssets->'%(OutputDirectory)\%(Filename)%(Extension)')"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="true"
Condition="Exists('$(_ResizetizerRuntimeIdentifierDirectory)')"
UseHardlinksIfPossible="true"
ContinueOnError="true"
Retries="1"
UseSymboliclinksIfPossible="true" />

<Copy SourceFiles="@(_ResiztizerRuntimeAssets)"
DestinationFiles="@(_ResiztizerRuntimeAssets->'%(OutputDirectory)\%(Filename)%(Extension)')"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="true"
Condition="Exists('$(_ResizetizerRuntimeIdentifierDirectory)')"
UseHardlinksIfPossible="true"
UseSymboliclinksIfPossible="true" />

</Target>

</Project>
Loading

0 comments on commit fe37862

Please sign in to comment.