[main] Update dependencies from dotnet/arcade (#19337)
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Jason Zhai <v-wuzhai@microsoft.com> Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
This commit is contained in:
parent
6d9d25aae3
commit
dd37cd48ea
9 changed files with 30 additions and 133 deletions
|
@ -238,17 +238,17 @@
|
||||||
</Dependency>
|
</Dependency>
|
||||||
</ProductDependencies>
|
</ProductDependencies>
|
||||||
<ToolsetDependencies>
|
<ToolsetDependencies>
|
||||||
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24203.1">
|
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24205.14">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>532f956a119bce77ca279994054d08dbc24418f7</Sha>
|
<Sha>f975f8677ccfd386a91acd3726cd3cbcdc6b57e0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="9.0.0-beta.24203.1">
|
<Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="9.0.0-beta.24205.14">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>532f956a119bce77ca279994054d08dbc24418f7</Sha>
|
<Sha>f975f8677ccfd386a91acd3726cd3cbcdc6b57e0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="9.0.0-beta.24203.1">
|
<Dependency Name="Microsoft.DotNet.Build.Tasks.Installers" Version="9.0.0-beta.24205.14">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>532f956a119bce77ca279994054d08dbc24418f7</Sha>
|
<Sha>f975f8677ccfd386a91acd3726cd3cbcdc6b57e0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.DotNet.Darc" Version="1.1.0-beta.24168.3">
|
<Dependency Name="Microsoft.DotNet.Darc" Version="1.1.0-beta.24168.3">
|
||||||
<Uri>https://github.com/dotnet/arcade-services</Uri>
|
<Uri>https://github.com/dotnet/arcade-services</Uri>
|
||||||
|
@ -258,14 +258,14 @@
|
||||||
<Uri>https://github.com/dotnet/arcade-services</Uri>
|
<Uri>https://github.com/dotnet/arcade-services</Uri>
|
||||||
<Sha>0e9abfee048404d9b994fc64235b42216ce68dad</Sha>
|
<Sha>0e9abfee048404d9b994fc64235b42216ce68dad</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.24203.1">
|
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.24205.14">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>532f956a119bce77ca279994054d08dbc24418f7</Sha>
|
<Sha>f975f8677ccfd386a91acd3726cd3cbcdc6b57e0</Sha>
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<!-- Intermediate is necessary for source build. -->
|
<!-- Intermediate is necessary for source build. -->
|
||||||
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.24203.1">
|
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.24205.14">
|
||||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||||
<Sha>532f956a119bce77ca279994054d08dbc24418f7</Sha>
|
<Sha>f975f8677ccfd386a91acd3726cd3cbcdc6b57e0</Sha>
|
||||||
<SourceBuild RepoName="arcade" ManagedOnly="true" />
|
<SourceBuild RepoName="arcade" ManagedOnly="true" />
|
||||||
</Dependency>
|
</Dependency>
|
||||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="9.0.0-alpha.1.23612.13">
|
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="9.0.0-alpha.1.23612.13">
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- Dependency from https://github.com/dotnet/arcade -->
|
<!-- Dependency from https://github.com/dotnet/arcade -->
|
||||||
<MicrosoftDotNetBuildTasksInstallersPackageVersion>9.0.0-beta.24203.1</MicrosoftDotNetBuildTasksInstallersPackageVersion>
|
<MicrosoftDotNetBuildTasksInstallersPackageVersion>9.0.0-beta.24205.14</MicrosoftDotNetBuildTasksInstallersPackageVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- Dependency from https://github.com/dotnet/arcade-services -->
|
<!-- Dependency from https://github.com/dotnet/arcade-services -->
|
||||||
|
|
|
@ -444,11 +444,18 @@ __RootfsDir="$( cd "$__RootfsDir" && pwd )"
|
||||||
|
|
||||||
if [[ "$__CodeName" == "alpine" ]]; then
|
if [[ "$__CodeName" == "alpine" ]]; then
|
||||||
__ApkToolsVersion=2.12.11
|
__ApkToolsVersion=2.12.11
|
||||||
__ApkToolsSHA512SUM=53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33
|
|
||||||
__ApkToolsDir="$(mktemp -d)"
|
__ApkToolsDir="$(mktemp -d)"
|
||||||
__ApkKeysDir="$(mktemp -d)"
|
__ApkKeysDir="$(mktemp -d)"
|
||||||
|
|
||||||
wget "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic//v$__ApkToolsVersion/x86_64/apk.static" -P "$__ApkToolsDir"
|
arch="$(uname -m)"
|
||||||
|
wget "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static" -P "$__ApkToolsDir"
|
||||||
|
if [[ "$arch" == "x86_64" ]]; then
|
||||||
|
__ApkToolsSHA512SUM="53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33"
|
||||||
|
elif [[ "$arch" == "aarch64" ]]; then
|
||||||
|
__ApkToolsSHA512SUM="9e2b37ecb2b56c05dad23d379be84fd494c14bd730b620d0d576bda760588e1f2f59a7fcb2f2080577e0085f23a0ca8eadd993b4e61c2ab29549fdb71969afd0"
|
||||||
|
else
|
||||||
|
echo "WARNING: add missing hash for your host architecture. To find the value, use: `find /tmp -name apk.static -exec sha512sum {} \;`"
|
||||||
|
fi
|
||||||
echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c
|
echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c
|
||||||
chmod +x "$__ApkToolsDir/apk.static"
|
chmod +x "$__ApkToolsDir/apk.static"
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ jobs:
|
||||||
# If it's not devdiv, it's dnceng
|
# If it's not devdiv, it's dnceng
|
||||||
${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
|
${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
|
||||||
name: $(DncEngInternalBuildPool)
|
name: $(DncEngInternalBuildPool)
|
||||||
image: 1es-windows-2022
|
image: 1es-windows-2022-pt
|
||||||
os: windows
|
os: windows
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
|
@ -52,7 +52,7 @@ jobs:
|
||||||
|
|
||||||
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
${{ if eq(variables['System.TeamProject'], 'internal') }}:
|
||||||
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
|
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
|
||||||
image: 1es-mariner-2
|
image: 1es-mariner-2-pt
|
||||||
os: linux
|
os: linux
|
||||||
|
|
||||||
${{ if ne(parameters.platform.pool, '') }}:
|
${{ if ne(parameters.platform.pool, '') }}:
|
||||||
|
|
|
@ -110,7 +110,7 @@ stages:
|
||||||
# If it's not devdiv, it's dnceng
|
# If it's not devdiv, it's dnceng
|
||||||
${{ else }}:
|
${{ else }}:
|
||||||
name: $(DncEngInternalBuildPool)
|
name: $(DncEngInternalBuildPool)
|
||||||
image: 1es-windows-2022
|
image: 1es-windows-2022-pt
|
||||||
os: windows
|
os: windows
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -150,7 +150,7 @@ stages:
|
||||||
# If it's not devdiv, it's dnceng
|
# If it's not devdiv, it's dnceng
|
||||||
${{ else }}:
|
${{ else }}:
|
||||||
name: $(DncEngInternalBuildPool)
|
name: $(DncEngInternalBuildPool)
|
||||||
image: 1es-windows-2022
|
image: 1es-windows-2022-pt
|
||||||
os: windows
|
os: windows
|
||||||
steps:
|
steps:
|
||||||
- template: setup-maestro-vars.yml
|
- template: setup-maestro-vars.yml
|
||||||
|
@ -208,7 +208,7 @@ stages:
|
||||||
# If it's not devdiv, it's dnceng
|
# If it's not devdiv, it's dnceng
|
||||||
${{ else }}:
|
${{ else }}:
|
||||||
name: $(DncEngInternalBuildPool)
|
name: $(DncEngInternalBuildPool)
|
||||||
image: 1es-windows-2022
|
image: 1es-windows-2022-pt
|
||||||
os: windows
|
os: windows
|
||||||
steps:
|
steps:
|
||||||
- template: setup-maestro-vars.yml
|
- template: setup-maestro-vars.yml
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#
|
#
|
||||||
# pool:
|
# pool:
|
||||||
# name: $(DncEngInternalBuildPool)
|
# name: $(DncEngInternalBuildPool)
|
||||||
# image: 1es-windows-2022
|
# image: 1es-windows-2022-pt
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
# Coalesce the target and source branches so we know when a PR targets a release branch
|
# Coalesce the target and source branches so we know when a PR targets a release branch
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
"cmake": "latest"
|
"cmake": "latest"
|
||||||
},
|
},
|
||||||
"msbuild-sdks": {
|
"msbuild-sdks": {
|
||||||
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24203.1",
|
"Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24205.14",
|
||||||
"Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24203.1",
|
"Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24205.14",
|
||||||
"Microsoft.Build.NoTargets": "3.7.0" }
|
"Microsoft.Build.NoTargets": "3.7.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,111 +0,0 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nikola Milosavljevic <nikolam@microsoft.com>
|
|
||||||
Date: Wed, 3 Apr 2024 21:23:27 +0000
|
|
||||||
Subject: [PATCH] Copy repo symbols to intermediates
|
|
||||||
|
|
||||||
Backport: https://github.com/dotnet/arcade/pull/14681
|
|
||||||
---
|
|
||||||
.../tools/Publish.proj | 8 -----
|
|
||||||
.../tools/SourceBuild/AfterSourceBuild.proj | 2 +-
|
|
||||||
.../SourceBuild/SourceBuildArcade.targets | 35 +++++++++++++++----
|
|
||||||
3 files changed, 29 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
|
|
||||||
index 43fadc322..bec1a4963 100644
|
|
||||||
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
|
|
||||||
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
|
|
||||||
@@ -118,14 +118,6 @@
|
|
||||||
<ItemsToSignPostBuild Include="@(SymbolPackagesToGenerate->'%(Filename)%(Extension)')" Condition="'$(PostBuildSign)' == 'true'" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
- <!-- Include Symbols.<repo>.tar.gz, if running in inner source-only build -->
|
|
||||||
- <ItemGroup Condition="'$(DotNetBuildSourceOnly)' == 'true' and '$(DotNetBuildInnerRepo)' == 'true'">
|
|
||||||
- <UnifiedSymbolsPackage Include="$(ArtifactsNonShippingPackagesDir)Symbols.*.tar.gz" />
|
|
||||||
- <Artifact Include="@(UnifiedSymbolsPackage)"
|
|
||||||
- RelativeBlobPath="Symbols/%(Filename)%(Extension)"
|
|
||||||
- IsShipping="false" />
|
|
||||||
- </ItemGroup>
|
|
||||||
-
|
|
||||||
<!--
|
|
||||||
If a symbol package doesn't exist yet we assume that the regular package contains Portable PDBs.
|
|
||||||
Such packages can act as symbol packages since they have the same structure.
|
|
||||||
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj
|
|
||||||
index c2ba0644b..6a1fd449d 100644
|
|
||||||
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj
|
|
||||||
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/AfterSourceBuild.proj
|
|
||||||
@@ -14,7 +14,7 @@
|
|
||||||
<Target Name="AfterSourceBuildInnerBuild"
|
|
||||||
Condition="('$(ArcadeInnerBuildFromSource)' == 'true' or '$(DotNetBuildInnerRepo)' == 'true') and
|
|
||||||
'$(DotNetBuildOrchestrator)' == 'true'"
|
|
||||||
- DependsOnTargets="CreateRepoSymbolsArchive;ClearPreviousSBRP" />
|
|
||||||
+ DependsOnTargets="CopyRepoSymbolsToIntermediates;ClearPreviousSBRP" />
|
|
||||||
|
|
||||||
<Target Name="ClearPreviousSBRP"
|
|
||||||
Condition="'$(GitHubRepositoryName)' == 'source-build-reference-packages'">
|
|
||||||
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets
|
|
||||||
index 41817c3a9..f06d33095 100644
|
|
||||||
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets
|
|
||||||
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SourceBuild/SourceBuildArcade.targets
|
|
||||||
@@ -159,20 +159,20 @@
|
|
||||||
|
|
||||||
Conditioning out for Windows as the tar execution below doesn't work cross-plat.
|
|
||||||
-->
|
|
||||||
+
|
|
||||||
<Target Name="CreateRepoSymbolsArchive"
|
|
||||||
+ Condition="'$(OS)' != 'Windows_NT' and ('$(DotNetBuildFromSourceFlavor)' == 'Product' or '$(DotNetBuildOrchestrator)' == 'true' or '$(SupplementalIntermediateNupkgCategory)' == '$(SymbolsIntermediateNupkgCategory)')"
|
|
||||||
+ DependsOnTargets="$(CreateRepoSymbolsArchiveDependsOn);
|
|
||||||
+ DiscoverRepoSymbols;
|
|
||||||
+ PackageRepoSymbols"/>
|
|
||||||
+
|
|
||||||
+ <Target Name="DiscoverRepoSymbols"
|
|
||||||
Condition="'$(OS)' != 'Windows_NT' and ('$(DotNetBuildFromSourceFlavor)' == 'Product' or '$(DotNetBuildOrchestrator)' == 'true' or '$(SupplementalIntermediateNupkgCategory)' == '$(SymbolsIntermediateNupkgCategory)')"
|
|
||||||
DependsOnTargets="$(CreateRepoSymbolsArchiveDependsOn)">
|
|
||||||
<PropertyGroup>
|
|
||||||
<SymbolsRoot>$(CurrentRepoSourceBuildArtifactsDir)</SymbolsRoot>
|
|
||||||
<!-- Fall back to repo root for source-build-externals or repos that don't have the regular SymbolsRoot as defined above -->
|
|
||||||
<SymbolsRoot Condition="!Exists('$(SymbolsRoot)') or '$(GitHubRepositoryName)' == 'source-build-externals'">$(RepoRoot)</SymbolsRoot>
|
|
||||||
- <SymbolsArchiveLocation>$(CurrentRepoSourceBuildArtifactsNonShippingPackagesDir)</SymbolsArchiveLocation>
|
|
||||||
- <SymbolsArchiveLocation Condition="'$(GitHubRepositoryName)' == 'nuget-client' and '$(PackageOutputPath)' != ''">$([MSBuild]::EnsureTrailingSlash('$(PackageOutputPath)'))</SymbolsArchiveLocation>
|
|
||||||
- <SymbolsList>$([MSBuild]::NormalizePath('$(SymbolsArchiveLocation)', 'symbols.lst'))</SymbolsList>
|
|
||||||
- <SymbolsArchivePrefix>Symbols.</SymbolsArchivePrefix>
|
|
||||||
- <!-- $(Version) and $(TargetRid) are only available when target is executed as part of intermediate package creation. -->
|
|
||||||
- <SymbolsArchiveSuffix Condition="'$(CreateIntermediatePackage)' == 'true'">.$(Version).$(TargetRid)</SymbolsArchiveSuffix>
|
|
||||||
- <SymbolsArchiveFile>$(SymbolsArchiveLocation)$(SymbolsArchivePrefix)$(GitHubRepositoryName)$(SymbolsArchiveSuffix)$(ArchiveExtension)</SymbolsArchiveFile>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
@@ -181,6 +181,20 @@
|
|
||||||
<RelativePath>$([MSBuild]::MakeRelative($(SymbolsRoot), %(FullPath)))</RelativePath>
|
|
||||||
</AbsoluteSymbolPath>
|
|
||||||
</ItemGroup>
|
|
||||||
+ </Target>
|
|
||||||
+
|
|
||||||
+ <Target Name="PackageRepoSymbols"
|
|
||||||
+ Condition="'$(OS)' != 'Windows_NT' and ('$(DotNetBuildFromSourceFlavor)' == 'Product' or '$(DotNetBuildOrchestrator)' == 'true' or '$(SupplementalIntermediateNupkgCategory)' == '$(SymbolsIntermediateNupkgCategory)')"
|
|
||||||
+ DependsOnTargets="$(CreateRepoSymbolsArchiveDependsOn);DiscoverRepoSymbols">
|
|
||||||
+ <PropertyGroup>
|
|
||||||
+ <SymbolsArchiveLocation>$(CurrentRepoSourceBuildArtifactsNonShippingPackagesDir)</SymbolsArchiveLocation>
|
|
||||||
+ <SymbolsArchiveLocation Condition="'$(GitHubRepositoryName)' == 'nuget-client' and '$(PackageOutputPath)' != ''">$([MSBuild]::EnsureTrailingSlash('$(PackageOutputPath)'))</SymbolsArchiveLocation>
|
|
||||||
+ <SymbolsList>$([MSBuild]::NormalizePath('$(SymbolsArchiveLocation)', 'symbols.lst'))</SymbolsList>
|
|
||||||
+ <SymbolsArchivePrefix>Symbols.</SymbolsArchivePrefix>
|
|
||||||
+ <!-- $(Version) and $(TargetRid) are only available when target is executed as part of intermediate package creation. -->
|
|
||||||
+ <SymbolsArchiveSuffix Condition="'$(CreateIntermediatePackage)' == 'true'">.$(Version).$(TargetRid)</SymbolsArchiveSuffix>
|
|
||||||
+ <SymbolsArchiveFile>$(SymbolsArchiveLocation)$(SymbolsArchivePrefix)$(GitHubRepositoryName)$(SymbolsArchiveSuffix)$(ArchiveExtension)</SymbolsArchiveFile>
|
|
||||||
+ </PropertyGroup>
|
|
||||||
|
|
||||||
<WriteLinesToFile
|
|
||||||
File="$(SymbolsList)"
|
|
||||||
@@ -203,6 +217,13 @@
|
|
||||||
<Delete Files="$(SymbolsList)" Condition="Exists($(SymbolsList))" />
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
+ <Target Name="CopyRepoSymbolsToIntermediates"
|
|
||||||
+ DependsOnTargets="DiscoverRepoSymbols">
|
|
||||||
+ <MakeDir Directories="$(SourceBuiltSymbolsDir)" />
|
|
||||||
+ <Copy
|
|
||||||
+ SourceFiles="@(AbsoluteSymbolPath)"
|
|
||||||
+ DestinationFolder="$(SourceBuiltSymbolsDir)%(RecursiveDir)" />
|
|
||||||
+ </Target>
|
|
||||||
<!--
|
|
||||||
This target can be removed once we enable standard repo assets manifests and SB orchestrator
|
|
||||||
starts using it - https://github.com/dotnet/source-build/issues/3970
|
|
Loading…
Add table
Add a link
Reference in a new issue