Merge branch 'release/dev17.7' into merges/main-to-release/dev17.7

This commit is contained in:
Vlad Zarytovskii 2023-05-18 14:06:19 +02:00 коммит произвёл GitHub
Родитель 5b74995780 e13b879f21
Коммит c426b76c06
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
83 изменённых файлов: 1125 добавлений и 1467 удалений

Просмотреть файл

@ -11,7 +11,8 @@
<add key="dotnet5" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json" /> <add key="dotnet5" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json" />
<add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" /> <add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
<add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" /> <add key="dotnet7" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json" />
<add key="dotnet7-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7-transport/nuget/v3/index.json" /> <add key="dotnet8" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json" />
<add key="dotnet8-transport" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8-transport/nuget/v3/index.json" />
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" /> <add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
<add key="vssdk" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk/nuget/v3/index.json" /> <add key="vssdk" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk/nuget/v3/index.json" />
<add key="vssdk-archived" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk-archived/nuget/v3/index.json" /> <add key="vssdk-archived" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk-archived/nuget/v3/index.json" />

Просмотреть файл

@ -86,11 +86,11 @@ stages:
# Signed build # # Signed build #
#-------------------------------------------------------------------------------------------------------------------# #-------------------------------------------------------------------------------------------------------------------#
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/release/dev17.6') }}: - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/release/dev17.7') }}:
- template: /eng/common/templates/job/onelocbuild.yml - template: /eng/common/templates/job/onelocbuild.yml
parameters: parameters:
MirrorRepo: fsharp MirrorRepo: fsharp
MirrorBranch: release/dev17.6 MirrorBranch: release/dev17.7
LclSource: lclFilesfromPackage LclSource: lclFilesfromPackage
LclPackageId: 'LCL-JUNO-PROD-FSHARP' LclPackageId: 'LCL-JUNO-PROD-FSHARP'
- template: /eng/common/templates/jobs/jobs.yml - template: /eng/common/templates/jobs/jobs.yml
@ -709,8 +709,8 @@ stages:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: eng/release/insert-into-vs.yml - template: eng/release/insert-into-vs.yml
parameters: parameters:
componentBranchName: refs/heads/release/dev17.6 componentBranchName: refs/heads/release/dev17.7
insertTargetBranch: rel/d17.6 insertTargetBranch: main
insertTeamEmail: fsharpteam@microsoft.com insertTeamEmail: fsharpteam@microsoft.com
insertTeamName: 'F#' insertTeamName: 'F#'
completeInsertion: 'auto' completeInsertion: 'auto'

Просмотреть файл

@ -1,5 +1,18 @@
<UsageData> <UsageData>
<IgnorePatterns> <IgnorePatterns>
<UsagePattern IdentityGlob="*/*" /> <UsagePattern IdentityGlob="Microsoft.SourceBuild.Intermediate.*/*" />
<!-- Ignoring the known prebuilts. -->
<!--
These will go away when repo updates targeting to net8.0
Tracked with https://github.com/dotnet/fsharp/issues/14765
-->
<UsagePattern IdentityGlob="Microsoft.AspNetCore.App.Ref/7.0.2" />
<UsagePattern IdentityGlob="Microsoft.NETCore.App.Host.linux-x64/7.0.2" />
<UsagePattern IdentityGlob="Microsoft.NETCore.App.Ref/7.0.2" />
<!-- Tracked in https://github.com/dotnet/source-build/issues/3438 -->
<UsagePattern IdentityGlob="Microsoft.VisualStudio.Setup.Configuration.Interop/3.2.2146" />
</IgnorePatterns> </IgnorePatterns>
</UsageData> </UsageData>

Просмотреть файл

@ -1,21 +1,48 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Dependencies> <Dependencies>
<ProductDependencies> <ProductDependencies>
<Dependency Name="Microsoft.SourceBuild.Intermediate.xliff-tasks" Version="1.0.0-beta.21126.1"> <Dependency Name="Microsoft.SourceBuild.Intermediate.xliff-tasks" Version="1.0.0-beta.23253.1" CoherentParentDependency="Microsoft.DotNet.Arcade.Sdk">
<Uri>https://github.com/dotnet/xliff-tasks</Uri> <Uri>https://github.com/dotnet/xliff-tasks</Uri>
<Sha>7e80445ee82adbf9a8e6ae601ac5e239d982afaa</Sha> <Sha>513000e77df5ec1f9b86397d8df6e3254703c636</Sha>
<SourceBuild RepoName="xliff-tasks" ManagedOnly="true" /> <SourceBuild RepoName="xliff-tasks" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="8.0.0-alpha.1.23262.1">
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
<Sha>d76c30028584fb1d02d9b27dc48e65ad87f4ecfe</Sha>
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.SourceBuild.Intermediate.msbuild" Version="17.7.0-preview-23217-02">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>2cbc8b6aef648cf21c6a68a0dab7fe09a614e475</Sha>
<SourceBuild RepoName="msbuild" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.Build" Version="17.7.0-preview-23217-02">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>2cbc8b6aef648cf21c6a68a0dab7fe09a614e475</Sha>
</Dependency>
<Dependency Name="Microsoft.Build.Framework" Version="17.7.0-preview-23217-02">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>2cbc8b6aef648cf21c6a68a0dab7fe09a614e475</Sha>
</Dependency>
<Dependency Name="Microsoft.Build.Tasks.Core" Version="17.7.0-preview-23217-02">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>2cbc8b6aef648cf21c6a68a0dab7fe09a614e475</Sha>
</Dependency>
<Dependency Name="Microsoft.Build.Utilities.Core" Version="17.7.0-preview-23217-02">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>2cbc8b6aef648cf21c6a68a0dab7fe09a614e475</Sha>
</Dependency>
</ProductDependencies> </ProductDependencies>
<ToolsetDependencies> <ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="8.0.0-beta.22554.2"> <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="8.0.0-beta.23255.2">
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>80b6be47e1425ea90c5febffac119250043a0c92</Sha> <Sha>5dff25b814b90abb85c847ed274cf4afb2c1b276</Sha>
<SourceBuild RepoName="arcade" ManagedOnly="true" /> <SourceBuild RepoName="arcade" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="8.0.0-beta.22554.2"> <Dependency Name="Microsoft.SourceLink.GitHub" Version="8.0.0-beta.23218.3" CoherentParentDependency="Microsoft.DotNet.Arcade.Sdk">
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/sourcelink</Uri>
<Sha>80b6be47e1425ea90c5febffac119250043a0c92</Sha> <Sha>47c52dd2ebf9edfd40abdcff999c13eb461f6ce2</Sha>
<SourceBuild RepoName="sourcelink" ManagedOnly="true" />
</Dependency> </Dependency>
</ToolsetDependencies> </ToolsetDependencies>
</Dependencies> </Dependencies>

Просмотреть файл

@ -15,7 +15,7 @@
<!-- F# Version components --> <!-- F# Version components -->
<FSMajorVersion>7</FSMajorVersion> <FSMajorVersion>7</FSMajorVersion>
<FSMinorVersion>0</FSMinorVersion> <FSMinorVersion>0</FSMinorVersion>
<FSBuildVersion>300</FSBuildVersion> <FSBuildVersion>400</FSBuildVersion>
<FSRevisionVersion>0</FSRevisionVersion> <FSRevisionVersion>0</FSRevisionVersion>
<!-- --> <!-- -->
<!-- F# Language version --> <!-- F# Language version -->
@ -47,8 +47,7 @@
<!-- --> <!-- -->
<!-- FSharp tools for Visual Studio version number --> <!-- FSharp tools for Visual Studio version number -->
<FSToolsMajorVersion>12</FSToolsMajorVersion> <FSToolsMajorVersion>12</FSToolsMajorVersion>
<FSToolsMinorVersion>7</FSToolsMinorVersion>
<FSToolsMinorVersion>5</FSToolsMinorVersion>
<FSToolsBuildVersion>0</FSToolsBuildVersion> <FSToolsBuildVersion>0</FSToolsBuildVersion>
<FSToolsRevisionVersion>$(FSRevisionVersion)</FSToolsRevisionVersion> <FSToolsRevisionVersion>$(FSRevisionVersion)</FSToolsRevisionVersion>
<FSProductVersionPrefix>$(FSToolsMajorVersion).$(FSToolsMinorVersion).$(FSToolsBuildVersion)</FSProductVersionPrefix> <FSProductVersionPrefix>$(FSToolsMajorVersion).$(FSToolsMinorVersion).$(FSToolsBuildVersion)</FSProductVersionPrefix>
@ -57,7 +56,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<VSMajorVersion>17</VSMajorVersion> <VSMajorVersion>17</VSMajorVersion>
<VSMinorVersion>6</VSMinorVersion> <VSMinorVersion>7</VSMinorVersion>
<VSGeneralVersion>$(VSMajorVersion).0</VSGeneralVersion> <VSGeneralVersion>$(VSMajorVersion).0</VSGeneralVersion>
<VSAssemblyVersionPrefix>$(VSMajorVersion).$(VSMinorVersion).0</VSAssemblyVersionPrefix> <VSAssemblyVersionPrefix>$(VSMajorVersion).$(VSMinorVersion).0</VSAssemblyVersionPrefix>
<VSAssemblyVersion>$(VSAssemblyVersionPrefix).0</VSAssemblyVersion> <VSAssemblyVersion>$(VSAssemblyVersionPrefix).0</VSAssemblyVersion>
@ -85,32 +84,31 @@
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json;
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json;
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json;
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7-transport/nuget/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json;
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8-transport/nuget/v3/index.json;
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json;
https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk-archived/nuget/v3/index.json; https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk-archived/nuget/v3/index.json;
https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-impl-archived/nuget/v3/index.json; https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-impl-archived/nuget/v3/index.json;
</RestoreSources> </RestoreSources>
<!-- System.* packages --> <!-- System.* packages -->
<!-- If a System.* package is stuck on version 4.3.x, targets .NET Standard 1.x and hasn't been <!-- If a System.* package is stuck on version 4.3.x, targets .NET Standard 1.x and hasn't been
updated in years, you most likely DON'T need it, please exercise caution when adding it to the list. --> updated in years, you most likely DON'T need it, please exercise caution when adding it to the list. -->
<SystemBuffersVersion>4.5.1</SystemBuffersVersion> <SystemBuffersVersion>4.5.1</SystemBuffersVersion>
<SystemCollectionsImmutableVersion>6.0.0</SystemCollectionsImmutableVersion> <SystemCollectionsImmutableVersion>7.0.0</SystemCollectionsImmutableVersion>
<MicrosoftDiaSymReaderPortablePdbVersion>1.6.0</MicrosoftDiaSymReaderPortablePdbVersion> <MicrosoftDiaSymReaderPortablePdbVersion>1.6.0</MicrosoftDiaSymReaderPortablePdbVersion>
<SystemDiagnosticsDiagnosticSourceVersion>7.0.0</SystemDiagnosticsDiagnosticSourceVersion> <SystemDiagnosticsDiagnosticSourceVersion>7.0.2</SystemDiagnosticsDiagnosticSourceVersion>
<SystemMemoryVersion>4.5.5</SystemMemoryVersion> <SystemMemoryVersion>4.5.5</SystemMemoryVersion>
<SystemReflectionEmitVersion>4.7.0</SystemReflectionEmitVersion> <SystemReflectionEmitVersion>4.7.0</SystemReflectionEmitVersion>
<SystemReflectionMetadataVersion>6.0.1</SystemReflectionMetadataVersion> <SystemReflectionMetadataVersion>7.0.0</SystemReflectionMetadataVersion>
<SystemThreadingTasksDataflow>4.11.1</SystemThreadingTasksDataflow> <SystemThreadingTasksDataflow>7.0.0</SystemThreadingTasksDataflow>
<SystemRuntimeCompilerServicesUnsafeVersion>6.0.0</SystemRuntimeCompilerServicesUnsafeVersion> <SystemRuntimeCompilerServicesUnsafeVersion>6.0.0</SystemRuntimeCompilerServicesUnsafeVersion>
<SystemValueTupleVersion>4.5.0</SystemValueTupleVersion> <SystemValueTupleVersion>4.5.0</SystemValueTupleVersion>
<!-- Versions for package groups --> <!-- Versions for package groups -->
<RoslynVersion>4.6.0-2.23126.2</RoslynVersion> <RoslynVersion>4.6.0-2.23126.2</RoslynVersion>
<VisualStudioEditorPackagesVersion>17.5.274-preview</VisualStudioEditorPackagesVersion> <VisualStudioEditorPackagesVersion>17.7.25-preview</VisualStudioEditorPackagesVersion>
<MicrosoftVisualStudioShellPackagesVersion>17.5.0-preview-2-33117-317</MicrosoftVisualStudioShellPackagesVersion> <MicrosoftVisualStudioShellPackagesVersion>17.7.35338-preview.1</MicrosoftVisualStudioShellPackagesVersion>
<VisualStudioProjectSystemPackagesVersion>17.5.202-pre-g89e17c9f72</VisualStudioProjectSystemPackagesVersion> <VisualStudioProjectSystemPackagesVersion>17.7.58-pre</VisualStudioProjectSystemPackagesVersion>
<MicrosoftVisualStudioThreadingPackagesVersion>17.5.10-alpha</MicrosoftVisualStudioThreadingPackagesVersion> <MicrosoftVisualStudioThreadingPackagesVersion>17.7.5-preview</MicrosoftVisualStudioThreadingPackagesVersion>
<MicrosoftBuildOverallPackagesVersion>17.5.0</MicrosoftBuildOverallPackagesVersion>
<!-- Roslyn packages --> <!-- Roslyn packages -->
<MicrosoftCodeAnalysisEditorFeaturesVersion>$(RoslynVersion)</MicrosoftCodeAnalysisEditorFeaturesVersion> <MicrosoftCodeAnalysisEditorFeaturesVersion>$(RoslynVersion)</MicrosoftCodeAnalysisEditorFeaturesVersion>
<MicrosoftCodeAnalysisEditorFeaturesTextVersion>$(RoslynVersion)</MicrosoftCodeAnalysisEditorFeaturesTextVersion> <MicrosoftCodeAnalysisEditorFeaturesTextVersion>$(RoslynVersion)</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
@ -143,10 +141,10 @@
<MicrosoftVisualStudioShellImmutable110Version>11.0.50727</MicrosoftVisualStudioShellImmutable110Version> <MicrosoftVisualStudioShellImmutable110Version>11.0.50727</MicrosoftVisualStudioShellImmutable110Version>
<MicrosoftVisualStudioShellImmutable150Version>15.0.25123-Dev15Preview</MicrosoftVisualStudioShellImmutable150Version> <MicrosoftVisualStudioShellImmutable150Version>15.0.25123-Dev15Preview</MicrosoftVisualStudioShellImmutable150Version>
<!-- Microsoft Build packages --> <!-- Microsoft Build packages -->
<MicrosoftBuildVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildVersion> <MicrosoftBuildVersion>17.7.0-preview-23217-02</MicrosoftBuildVersion>
<MicrosoftBuildFrameworkVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildFrameworkVersion> <MicrosoftBuildFrameworkVersion>17.7.0-preview-23217-02</MicrosoftBuildFrameworkVersion>
<MicrosoftBuildTasksCoreVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildTasksCoreVersion> <MicrosoftBuildTasksCoreVersion>17.7.0-preview-23217-02</MicrosoftBuildTasksCoreVersion>
<MicrosoftBuildUtilitiesCoreVersion>$(MicrosoftBuildOverallPackagesVersion)</MicrosoftBuildUtilitiesCoreVersion> <MicrosoftBuildUtilitiesCoreVersion>17.7.0-preview-23217-02</MicrosoftBuildUtilitiesCoreVersion>
<!-- Visual Studio Editor packages --> <!-- Visual Studio Editor packages -->
<MicrosoftVisualStudioCoreUtilityVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioCoreUtilityVersion> <MicrosoftVisualStudioCoreUtilityVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioCoreUtilityVersion>
<MicrosoftVisualStudioEditorVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioEditorVersion> <MicrosoftVisualStudioEditorVersion>$(VisualStudioEditorPackagesVersion)</MicrosoftVisualStudioEditorVersion>
@ -170,10 +168,9 @@
<MicrosoftVisualStudioProjectSystemManagedVersion>2.3.6152103</MicrosoftVisualStudioProjectSystemManagedVersion> <MicrosoftVisualStudioProjectSystemManagedVersion>2.3.6152103</MicrosoftVisualStudioProjectSystemManagedVersion>
<!-- Misc. Visual Studio packages --> <!-- Misc. Visual Studio packages -->
<MicrosoftVSSDKBuildToolsVersion>17.1.4054</MicrosoftVSSDKBuildToolsVersion> <MicrosoftVSSDKBuildToolsVersion>17.1.4054</MicrosoftVSSDKBuildToolsVersion>
<MicrosoftVisualStudioRpcContractsVersion>17.5.17-alpha</MicrosoftVisualStudioRpcContractsVersion> <MicrosoftVisualStudioRpcContractsVersion>17.7.3-preview</MicrosoftVisualStudioRpcContractsVersion>
<MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>17.0.0</MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion> <MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>17.0.0</MicrosoftVisualFSharpMicrosoftVisualStudioShellUIInternalVersion>
<MicrosoftVisualStudioValidationVersion>17.0.71</MicrosoftVisualStudioValidationVersion> <MicrosoftVisualStudioValidationVersion>17.6.11</MicrosoftVisualStudioValidationVersion>
<SystemRuntimeCompilerServicesUnsafeVersion>6.0.0</SystemRuntimeCompilerServicesUnsafeVersion>
<VSSDKDebuggerVisualizersVersion>12.0.4</VSSDKDebuggerVisualizersVersion> <VSSDKDebuggerVisualizersVersion>12.0.4</VSSDKDebuggerVisualizersVersion>
<VSSDKVSLangProjVersion>7.0.4</VSSDKVSLangProjVersion> <VSSDKVSLangProjVersion>7.0.4</VSSDKVSLangProjVersion>
<VSSDKVSLangProj8Version>8.0.4</VSSDKVSLangProj8Version> <VSSDKVSLangProj8Version>8.0.4</VSSDKVSLangProj8Version>
@ -188,20 +185,21 @@
<FsCheckVersion>2.16.5</FsCheckVersion> <FsCheckVersion>2.16.5</FsCheckVersion>
<FSharpDataTypeProvidersVersion>4.3.0.0</FSharpDataTypeProvidersVersion> <FSharpDataTypeProvidersVersion>4.3.0.0</FSharpDataTypeProvidersVersion>
<MicrosoftCompositionVersion>1.0.31</MicrosoftCompositionVersion> <MicrosoftCompositionVersion>1.0.31</MicrosoftCompositionVersion>
<SystemComponentModelCompositionVersion>6.0.0</SystemComponentModelCompositionVersion> <SystemComponentModelCompositionVersion>7.0.0</SystemComponentModelCompositionVersion>
<SystemCompositionVersion>7.0.0</SystemCompositionVersion>
<MicrosoftMSXMLVersion>8.0.0</MicrosoftMSXMLVersion> <MicrosoftMSXMLVersion>8.0.0</MicrosoftMSXMLVersion>
<MicrosoftNetCompilersVersion>4.3.0-1.22220.8</MicrosoftNetCompilersVersion> <MicrosoftNetCompilersVersion>4.3.0-1.22220.8</MicrosoftNetCompilersVersion>
<MicrosoftNETCoreAppRefVersion>3.1.0</MicrosoftNETCoreAppRefVersion> <MicrosoftNETCoreAppRefVersion>3.1.0</MicrosoftNETCoreAppRefVersion>
<MicrosoftNETCoreILDAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILDAsmVersion> <MicrosoftNETCoreILDAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILDAsmVersion>
<MicrosoftNETCoreILAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILAsmVersion> <MicrosoftNETCoreILAsmVersion>5.0.0-preview.7.20364.11</MicrosoftNETCoreILAsmVersion>
<MicrosoftNETTestSdkVersion>17.4.0</MicrosoftNETTestSdkVersion> <MicrosoftNETTestSdkVersion>17.4.0</MicrosoftNETTestSdkVersion>
<NewtonsoftJsonVersion>13.0.2</NewtonsoftJsonVersion> <NewtonsoftJsonVersion>13.0.3</NewtonsoftJsonVersion>
<NUnitVersion>3.13.2</NUnitVersion> <NUnitVersion>3.13.2</NUnitVersion>
<NUnit3TestAdapterVersion>4.1.0</NUnit3TestAdapterVersion> <NUnit3TestAdapterVersion>4.1.0</NUnit3TestAdapterVersion>
<NUnitLiteVersion>3.11.0</NUnitLiteVersion> <NUnitLiteVersion>3.11.0</NUnitLiteVersion>
<NunitXmlTestLoggerVersion>2.1.80</NunitXmlTestLoggerVersion> <NunitXmlTestLoggerVersion>2.1.80</NunitXmlTestLoggerVersion>
<RoslynToolsSignToolVersion>1.0.0-beta2-dev3</RoslynToolsSignToolVersion> <RoslynToolsSignToolVersion>1.0.0-beta2-dev3</RoslynToolsSignToolVersion>
<StreamJsonRpcVersion>2.14.20</StreamJsonRpcVersion> <StreamJsonRpcVersion>2.16.8-preview</StreamJsonRpcVersion>
<NerdbankStreamsVersion>2.9.112</NerdbankStreamsVersion> <NerdbankStreamsVersion>2.9.112</NerdbankStreamsVersion>
<XUnitVersion>2.4.1</XUnitVersion> <XUnitVersion>2.4.1</XUnitVersion>
<XUnitRunnerVersion>2.4.2</XUnitRunnerVersion> <XUnitRunnerVersion>2.4.2</XUnitRunnerVersion>

Просмотреть файл

@ -0,0 +1,4 @@
{
"RetryCountLimit": 1,
"RetryByAnyError": false
}

Просмотреть файл

@ -8,4 +8,4 @@ deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse

Просмотреть файл

@ -1,35 +0,0 @@
#!/usr/bin/env bash
set -e
__ARM_HARDFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
__TIZEN_CROSSDIR="$__ARM_HARDFP_CrossDir/tizen"
if [[ -z "$ROOTFS_DIR" ]]; then
echo "ROOTFS_DIR is not defined."
exit 1;
fi
TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
mkdir -p $TIZEN_TMP_DIR
# Download files
echo ">>Start downloading files"
VERBOSE=1 $__ARM_HARDFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
echo "<<Finish downloading files"
echo ">>Start constructing Tizen rootfs"
TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
cd $ROOTFS_DIR
for f in $TIZEN_RPM_FILES; do
rpm2cpio $f | cpio -idm --quiet
done
echo "<<Finish constructing Tizen rootfs"
# Cleanup tmp
rm -rf $TIZEN_TMP_DIR
# Configure Tizen rootfs
echo ">>Start configuring Tizen rootfs"
ln -sfn asm-arm ./usr/include/asm
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
echo "<<Finish configuring Tizen rootfs"

Просмотреть файл

@ -1,170 +0,0 @@
#!/usr/bin/env bash
set -e
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
VERBOSE=0
fi
Log()
{
if [ $VERBOSE -ge $1 ]; then
echo ${@:2}
fi
}
Inform()
{
Log 1 -e "\x1B[0;34m$@\x1B[m"
}
Debug()
{
Log 2 -e "\x1B[0;32m$@\x1B[m"
}
Error()
{
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
}
Fetch()
{
URL=$1
FILE=$2
PROGRESS=$3
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
CURL_OPT="--progress-bar"
else
CURL_OPT="--silent"
fi
curl $CURL_OPT $URL > $FILE
}
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
TMPDIR=$1
if [ ! -d $TMPDIR ]; then
TMPDIR=./tizen_tmp
Debug "Create temporary directory : $TMPDIR"
mkdir -p $TMPDIR
fi
TIZEN_URL=http://download.tizen.org/snapshots/TIZEN/Tizen
BUILD_XML=build.xml
REPOMD_XML=repomd.xml
PRIMARY_XML=primary.xml
TARGET_URL="http://__not_initialized"
Xpath_get()
{
XPATH_RESULT=''
XPATH=$1
XML_FILE=$2
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
if [[ -z ${RESULT// } ]]; then
Error "Can not find target from $XML_FILE"
Debug "Xpath = $XPATH"
exit 1
fi
XPATH_RESULT=$RESULT
}
fetch_tizen_pkgs_init()
{
TARGET=$1
PROFILE=$2
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
mkdir -p $TMP_PKG_DIR
PKG_URL=$TIZEN_URL/$PROFILE/latest
BUILD_XML_URL=$PKG_URL/$BUILD_XML
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
Fetch $BUILD_XML_URL $TMP_BUILD
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
Xpath_get $TARGET_XPATH $TMP_BUILD
TARGET_PATH=$XPATH_RESULT
TARGET_URL=$PKG_URL/$TARGET_PATH
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
Fetch $REPOMD_URL $TMP_REPOMD
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
PRIMARY_XML_PATH=$XPATH_RESULT
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
gunzip $TMP_PRIMARYGZ
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
}
fetch_tizen_pkgs()
{
ARCH=$1
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
for pkg in ${@:2}
do
Inform "Fetching... $pkg"
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
PKG_PATH=$XPATH_RESULT
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
CHECKSUM=$XPATH_RESULT
PKG_URL=$TARGET_URL/$PKG_PATH
PKG_FILE=$(basename $PKG_PATH)
PKG_PATH=$TMPDIR/$PKG_FILE
Debug "Download $PKG_URL to $PKG_PATH"
Fetch $PKG_URL $PKG_PATH true
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
if [ $? -ne 0 ]; then
Error "Fail to fetch $PKG_URL to $PKG_PATH"
Debug "Checksum = $CHECKSUM"
exit 1
fi
done
}
Inform "Initialize arm base"
fetch_tizen_pkgs_init standard Tizen-Base
Inform "fetch common packages"
fetch_tizen_pkgs armv7hl gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
Inform "fetch coreclr packages"
fetch_tizen_pkgs armv7hl lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
Inform "fetch corefx packages"
fetch_tizen_pkgs armv7hl libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
Inform "Initialize standard unified"
fetch_tizen_pkgs_init standard Tizen-Unified
Inform "fetch corefx packages"
fetch_tizen_pkgs armv7hl gssdp gssdp-devel tizen-release

Просмотреть файл

@ -8,4 +8,4 @@ deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse

Просмотреть файл

@ -1,170 +0,0 @@
#!/usr/bin/env bash
set -e
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
VERBOSE=0
fi
Log()
{
if [ $VERBOSE -ge $1 ]; then
echo ${@:2}
fi
}
Inform()
{
Log 1 -e "\x1B[0;34m$@\x1B[m"
}
Debug()
{
Log 2 -e "\x1B[0;32m$@\x1B[m"
}
Error()
{
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
}
Fetch()
{
URL=$1
FILE=$2
PROGRESS=$3
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
CURL_OPT="--progress-bar"
else
CURL_OPT="--silent"
fi
curl $CURL_OPT $URL > $FILE
}
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
TMPDIR=$1
if [ ! -d $TMPDIR ]; then
TMPDIR=./tizen_tmp
Debug "Create temporary directory : $TMPDIR"
mkdir -p $TMPDIR
fi
TIZEN_URL=http://download.tizen.org/snapshots/TIZEN/Tizen
BUILD_XML=build.xml
REPOMD_XML=repomd.xml
PRIMARY_XML=primary.xml
TARGET_URL="http://__not_initialized"
Xpath_get()
{
XPATH_RESULT=''
XPATH=$1
XML_FILE=$2
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
if [[ -z ${RESULT// } ]]; then
Error "Can not find target from $XML_FILE"
Debug "Xpath = $XPATH"
exit 1
fi
XPATH_RESULT=$RESULT
}
fetch_tizen_pkgs_init()
{
TARGET=$1
PROFILE=$2
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
mkdir -p $TMP_PKG_DIR
PKG_URL=$TIZEN_URL/$PROFILE/latest
BUILD_XML_URL=$PKG_URL/$BUILD_XML
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
Fetch $BUILD_XML_URL $TMP_BUILD
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
Xpath_get $TARGET_XPATH $TMP_BUILD
TARGET_PATH=$XPATH_RESULT
TARGET_URL=$PKG_URL/$TARGET_PATH
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
Fetch $REPOMD_URL $TMP_REPOMD
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
PRIMARY_XML_PATH=$XPATH_RESULT
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
gunzip $TMP_PRIMARYGZ
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
}
fetch_tizen_pkgs()
{
ARCH=$1
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
for pkg in ${@:2}
do
Inform "Fetching... $pkg"
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
PKG_PATH=$XPATH_RESULT
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
CHECKSUM=$XPATH_RESULT
PKG_URL=$TARGET_URL/$PKG_PATH
PKG_FILE=$(basename $PKG_PATH)
PKG_PATH=$TMPDIR/$PKG_FILE
Debug "Download $PKG_URL to $PKG_PATH"
Fetch $PKG_URL $PKG_PATH true
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
if [ $? -ne 0 ]; then
Error "Fail to fetch $PKG_URL to $PKG_PATH"
Debug "Checksum = $CHECKSUM"
exit 1
fi
done
}
Inform "Initialize arm64 base"
fetch_tizen_pkgs_init standard Tizen-Base
Inform "fetch common packages"
fetch_tizen_pkgs aarch64 gcc glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
Inform "fetch coreclr packages"
fetch_tizen_pkgs aarch64 lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
Inform "fetch corefx packages"
fetch_tizen_pkgs aarch64 libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
Inform "Initialize standard unified"
fetch_tizen_pkgs_init standard Tizen-Unified
Inform "fetch corefx packages"
fetch_tizen_pkgs aarch64 gssdp gssdp-devel tizen-release

Просмотреть файл

@ -1,35 +0,0 @@
#!/usr/bin/env bash
set -e
__ARM_SOFTFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
__TIZEN_CROSSDIR="$__ARM_SOFTFP_CrossDir/tizen"
if [[ -z "$ROOTFS_DIR" ]]; then
echo "ROOTFS_DIR is not defined."
exit 1;
fi
TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
mkdir -p $TIZEN_TMP_DIR
# Download files
echo ">>Start downloading files"
VERBOSE=1 $__ARM_SOFTFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
echo "<<Finish downloading files"
echo ">>Start constructing Tizen rootfs"
TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
cd $ROOTFS_DIR
for f in $TIZEN_RPM_FILES; do
rpm2cpio $f | cpio -idm --quiet
done
echo "<<Finish constructing Tizen rootfs"
# Cleanup tmp
rm -rf $TIZEN_TMP_DIR
# Configure Tizen rootfs
echo ">>Start configuring Tizen rootfs"
ln -sfn asm-arm ./usr/include/asm
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
echo "<<Finish configuring Tizen rootfs"

Просмотреть файл

@ -1,170 +0,0 @@
#!/usr/bin/env bash
set -e
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
VERBOSE=0
fi
Log()
{
if [ $VERBOSE -ge $1 ]; then
echo ${@:2}
fi
}
Inform()
{
Log 1 -e "\x1B[0;34m$@\x1B[m"
}
Debug()
{
Log 2 -e "\x1B[0;32m$@\x1B[m"
}
Error()
{
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
}
Fetch()
{
URL=$1
FILE=$2
PROGRESS=$3
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
CURL_OPT="--progress-bar"
else
CURL_OPT="--silent"
fi
curl $CURL_OPT $URL > $FILE
}
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
TMPDIR=$1
if [ ! -d $TMPDIR ]; then
TMPDIR=./tizen_tmp
Debug "Create temporary directory : $TMPDIR"
mkdir -p $TMPDIR
fi
TIZEN_URL=http://download.tizen.org/snapshots/TIZEN/Tizen
BUILD_XML=build.xml
REPOMD_XML=repomd.xml
PRIMARY_XML=primary.xml
TARGET_URL="http://__not_initialized"
Xpath_get()
{
XPATH_RESULT=''
XPATH=$1
XML_FILE=$2
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
if [[ -z ${RESULT// } ]]; then
Error "Can not find target from $XML_FILE"
Debug "Xpath = $XPATH"
exit 1
fi
XPATH_RESULT=$RESULT
}
fetch_tizen_pkgs_init()
{
TARGET=$1
PROFILE=$2
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
mkdir -p $TMP_PKG_DIR
PKG_URL=$TIZEN_URL/$PROFILE/latest
BUILD_XML_URL=$PKG_URL/$BUILD_XML
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
Fetch $BUILD_XML_URL $TMP_BUILD
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
Xpath_get $TARGET_XPATH $TMP_BUILD
TARGET_PATH=$XPATH_RESULT
TARGET_URL=$PKG_URL/$TARGET_PATH
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
Fetch $REPOMD_URL $TMP_REPOMD
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
PRIMARY_XML_PATH=$XPATH_RESULT
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
gunzip $TMP_PRIMARYGZ
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
}
fetch_tizen_pkgs()
{
ARCH=$1
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
for pkg in ${@:2}
do
Inform "Fetching... $pkg"
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
PKG_PATH=$XPATH_RESULT
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
CHECKSUM=$XPATH_RESULT
PKG_URL=$TARGET_URL/$PKG_PATH
PKG_FILE=$(basename $PKG_PATH)
PKG_PATH=$TMPDIR/$PKG_FILE
Debug "Download $PKG_URL to $PKG_PATH"
Fetch $PKG_URL $PKG_PATH true
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
if [ $? -ne 0 ]; then
Error "Fail to fetch $PKG_URL to $PKG_PATH"
Debug "Checksum = $CHECKSUM"
exit 1
fi
done
}
Inform "Initialize armel base"
fetch_tizen_pkgs_init standard Tizen-Base
Inform "fetch common packages"
fetch_tizen_pkgs armv7l gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
Inform "fetch coreclr packages"
fetch_tizen_pkgs armv7l lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
Inform "fetch corefx packages"
fetch_tizen_pkgs armv7l libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
Inform "Initialize standard unified"
fetch_tizen_pkgs_init standard Tizen-Unified
Inform "fetch corefx packages"
fetch_tizen_pkgs armv7l gssdp gssdp-devel tizen-release

Просмотреть файл

@ -6,13 +6,15 @@ usage()
{ {
echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] --rootfsdir <directory>]" echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] --rootfsdir <directory>]"
echo "BuildArch can be: arm(default), arm64, armel, armv6, ppc64le, riscv64, s390x, x64, x86" echo "BuildArch can be: arm(default), arm64, armel, armv6, ppc64le, riscv64, s390x, x64, x86"
echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine, alpine3.13 or alpine3.14. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen." echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine"
echo " for FreeBSD can be: freebsd12, freebsd13" echo " for alpine can be specified with version: alpineX.YY or alpineedge"
echo " for illumos can be: illumos" echo " for FreeBSD can be: freebsd12, freebsd13"
echo " for Haiku can be: haiku." echo " for illumos can be: illumos"
echo " for Haiku can be: haiku."
echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD" echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD"
echo "llvmx[.y] - optional, LLVM version for LLVM related packages." echo "llvmx[.y] - optional, LLVM version for LLVM related packages."
echo "--skipunmount - optional, will skip the unmount of rootfs folder." echo "--skipunmount - optional, will skip the unmount of rootfs folder."
echo "--skipsigcheck - optional, will skip package signature checks (allowing untrusted packages)."
echo "--use-mirror - optional, use mirror URL to fetch resources, when available." echo "--use-mirror - optional, use mirror URL to fetch resources, when available."
echo "--jobs N - optional, restrict to N jobs." echo "--jobs N - optional, restrict to N jobs."
exit 1 exit 1
@ -48,12 +50,14 @@ __UbuntuPackages+=" symlinks"
__UbuntuPackages+=" libicu-dev" __UbuntuPackages+=" libicu-dev"
__UbuntuPackages+=" liblttng-ust-dev" __UbuntuPackages+=" liblttng-ust-dev"
__UbuntuPackages+=" libunwind8-dev" __UbuntuPackages+=" libunwind8-dev"
__UbuntuPackages+=" libnuma-dev"
__AlpinePackages+=" gettext-dev" __AlpinePackages+=" gettext-dev"
__AlpinePackages+=" icu-dev" __AlpinePackages+=" icu-dev"
__AlpinePackages+=" libunwind-dev" __AlpinePackages+=" libunwind-dev"
__AlpinePackages+=" lttng-ust-dev" __AlpinePackages+=" lttng-ust-dev"
__AlpinePackages+=" compiler-rt-static" __AlpinePackages+=" compiler-rt"
__AlpinePackages+=" numactl-dev"
# runtime libraries' dependencies # runtime libraries' dependencies
__UbuntuPackages+=" libcurl4-openssl-dev" __UbuntuPackages+=" libcurl4-openssl-dev"
@ -66,7 +70,7 @@ __AlpinePackages+=" krb5-dev"
__AlpinePackages+=" openssl-dev" __AlpinePackages+=" openssl-dev"
__AlpinePackages+=" zlib-dev" __AlpinePackages+=" zlib-dev"
__FreeBSDBase="12.3-RELEASE" __FreeBSDBase="12.4-RELEASE"
__FreeBSDPkg="1.17.0" __FreeBSDPkg="1.17.0"
__FreeBSDABI="12" __FreeBSDABI="12"
__FreeBSDPackages="libunwind" __FreeBSDPackages="libunwind"
@ -96,7 +100,27 @@ __HaikuPackages+=" mpfr_devel"
__UbuntuPackages+=" libomp5" __UbuntuPackages+=" libomp5"
__UbuntuPackages+=" libomp-dev" __UbuntuPackages+=" libomp-dev"
# Taken from https://github.com/alpinelinux/alpine-chroot-install/blob/6d08f12a8a70dd9b9dc7d997c88aa7789cc03c42/alpine-chroot-install#L85-L133
__AlpineKeys='
4a6a0840:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1yHJxQgsHQREclQu4Ohe\nqxTxd1tHcNnvnQTu/UrTky8wWvgXT+jpveroeWWnzmsYlDI93eLI2ORakxb3gA2O\nQ0Ry4ws8vhaxLQGC74uQR5+/yYrLuTKydFzuPaS1dK19qJPXB8GMdmFOijnXX4SA\njixuHLe1WW7kZVtjL7nufvpXkWBGjsfrvskdNA/5MfxAeBbqPgaq0QMEfxMAn6/R\nL5kNepi/Vr4S39Xvf2DzWkTLEK8pcnjNkt9/aafhWqFVW7m3HCAII6h/qlQNQKSo\nGuH34Q8GsFG30izUENV9avY7hSLq7nggsvknlNBZtFUcmGoQrtx3FmyYsIC8/R+B\nywIDAQAB
5243ef4b:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNijDxJ8kloskKQpJdx+\nmTMVFFUGDoDCbulnhZMJoKNkSuZOzBoFC94omYPtxnIcBdWBGnrm6ncbKRlR+6oy\nDO0W7c44uHKCFGFqBhDasdI4RCYP+fcIX/lyMh6MLbOxqS22TwSLhCVjTyJeeH7K\naA7vqk+QSsF4TGbYzQDDpg7+6aAcNzg6InNePaywA6hbT0JXbxnDWsB+2/LLSF2G\nmnhJlJrWB1WGjkz23ONIWk85W4S0XB/ewDefd4Ly/zyIciastA7Zqnh7p3Ody6Q0\nsS2MJzo7p3os1smGjUF158s6m/JbVh4DN6YIsxwl2OjDOz9R0OycfJSDaBVIGZzg\ncQIDAQAB
524d27bb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr8s1q88XpuJWLCZALdKj\nlN8wg2ePB2T9aIcaxryYE/Jkmtu+ZQ5zKq6BT3y/udt5jAsMrhHTwroOjIsF9DeG\ne8Y3vjz+Hh4L8a7hZDaw8jy3CPag47L7nsZFwQOIo2Cl1SnzUc6/owoyjRU7ab0p\niWG5HK8IfiybRbZxnEbNAfT4R53hyI6z5FhyXGS2Ld8zCoU/R4E1P0CUuXKEN4p0\n64dyeUoOLXEWHjgKiU1mElIQj3k/IF02W89gDj285YgwqA49deLUM7QOd53QLnx+\nxrIrPv3A+eyXMFgexNwCKQU9ZdmWa00MjjHlegSGK8Y2NPnRoXhzqSP9T9i2HiXL\nVQIDAQAB
5261cecb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlzMkl7b5PBdfMzGdCT0\ncGloRr5xGgVmsdq5EtJvFkFAiN8Ac9MCFy/vAFmS8/7ZaGOXoCDWbYVLTLOO2qtX\nyHRl+7fJVh2N6qrDDFPmdgCi8NaE+3rITWXGrrQ1spJ0B6HIzTDNEjRKnD4xyg4j\ng01FMcJTU6E+V2JBY45CKN9dWr1JDM/nei/Pf0byBJlMp/mSSfjodykmz4Oe13xB\nCa1WTwgFykKYthoLGYrmo+LKIGpMoeEbY1kuUe04UiDe47l6Oggwnl+8XD1MeRWY\nsWgj8sF4dTcSfCMavK4zHRFFQbGp/YFJ/Ww6U9lA3Vq0wyEI6MCMQnoSMFwrbgZw\nwwIDAQAB
58199dcc:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3v8/ye/V/t5xf4JiXLXa\nhWFRozsnmn3hobON20GdmkrzKzO/eUqPOKTpg2GtvBhK30fu5oY5uN2ORiv2Y2ht\neLiZ9HVz3XP8Fm9frha60B7KNu66FO5P2o3i+E+DWTPqqPcCG6t4Znk2BypILcit\nwiPKTsgbBQR2qo/cO01eLLdt6oOzAaF94NH0656kvRewdo6HG4urbO46tCAizvCR\nCA7KGFMyad8WdKkTjxh8YLDLoOCtoZmXmQAiwfRe9pKXRH/XXGop8SYptLqyVVQ+\ntegOD9wRs2tOlgcLx4F/uMzHN7uoho6okBPiifRX+Pf38Vx+ozXh056tjmdZkCaV\naQIDAQAB
58cbb476:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoSPnuAGKtRIS5fEgYPXD\n8pSGvKAmIv3A08LBViDUe+YwhilSHbYXUEAcSH1KZvOo1WT1x2FNEPBEFEFU1Eyc\n+qGzbA03UFgBNvArurHQ5Z/GngGqE7IarSQFSoqewYRtFSfp+TL9CUNBvM0rT7vz\n2eMu3/wWG+CBmb92lkmyWwC1WSWFKO3x8w+Br2IFWvAZqHRt8oiG5QtYvcZL6jym\nY8T6sgdDlj+Y+wWaLHs9Fc+7vBuyK9C4O1ORdMPW15qVSl4Lc2Wu1QVwRiKnmA+c\nDsH/m7kDNRHM7TjWnuj+nrBOKAHzYquiu5iB3Qmx+0gwnrSVf27Arc3ozUmmJbLj\nzQIDAQAB
58e4f17d:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvBxJN9ErBgdRcPr5g4hV\nqyUSGZEKuvQliq2Z9SRHLh2J43+EdB6A+yzVvLnzcHVpBJ+BZ9RV30EM9guck9sh\nr+bryZcRHyjG2wiIEoduxF2a8KeWeQH7QlpwGhuobo1+gA8L0AGImiA6UP3LOirl\nI0G2+iaKZowME8/tydww4jx5vG132JCOScMjTalRsYZYJcjFbebQQolpqRaGB4iG\nWqhytWQGWuKiB1A22wjmIYf3t96l1Mp+FmM2URPxD1gk/BIBnX7ew+2gWppXOK9j\n1BJpo0/HaX5XoZ/uMqISAAtgHZAqq+g3IUPouxTphgYQRTRYpz2COw3NF43VYQrR\nbQIDAQAB
60ac2099:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR4uJVtJOnOFGchnMW5Y\nj5/waBdG1u5BTMlH+iQMcV5+VgWhmpZHJCBz3ocD+0IGk2I68S5TDOHec/GSC0lv\n6R9o6F7h429GmgPgVKQsc8mPTPtbjJMuLLs4xKc+viCplXc0Nc0ZoHmCH4da6fCV\ntdpHQjVe6F9zjdquZ4RjV6R6JTiN9v924dGMAkbW/xXmamtz51FzondKC52Gh8Mo\n/oA0/T0KsCMCi7tb4QNQUYrf+Xcha9uus4ww1kWNZyfXJB87a2kORLiWMfs2IBBJ\nTmZ2Fnk0JnHDb8Oknxd9PvJPT0mvyT8DA+KIAPqNvOjUXP4bnjEHJcoCP9S5HkGC\nIQIDAQAB
6165ee59:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAutQkua2CAig4VFSJ7v54\nALyu/J1WB3oni7qwCZD3veURw7HxpNAj9hR+S5N/pNeZgubQvJWyaPuQDm7PTs1+\ntFGiYNfAsiibX6Rv0wci3M+z2XEVAeR9Vzg6v4qoofDyoTbovn2LztaNEjTkB+oK\ntlvpNhg1zhou0jDVYFniEXvzjckxswHVb8cT0OMTKHALyLPrPOJzVtM9C1ew2Nnc\n3848xLiApMu3NBk0JqfcS3Bo5Y2b1FRVBvdt+2gFoKZix1MnZdAEZ8xQzL/a0YS5\nHd0wj5+EEKHfOd3A75uPa/WQmA+o0cBFfrzm69QDcSJSwGpzWrD1ScH3AK8nWvoj\nv7e9gukK/9yl1b4fQQ00vttwJPSgm9EnfPHLAtgXkRloI27H6/PuLoNvSAMQwuCD\nhQRlyGLPBETKkHeodfLoULjhDi1K2gKJTMhtbnUcAA7nEphkMhPWkBpgFdrH+5z4\nLxy+3ek0cqcI7K68EtrffU8jtUj9LFTUC8dERaIBs7NgQ/LfDbDfGh9g6qVj1hZl\nk9aaIPTm/xsi8v3u+0qaq7KzIBc9s59JOoA8TlpOaYdVgSQhHHLBaahOuAigH+VI\nisbC9vmqsThF2QdDtQt37keuqoda2E6sL7PUvIyVXDRfwX7uMDjlzTxHTymvq2Ck\nhtBqojBnThmjJQFgZXocHG8CAwEAAQ==
61666e3f:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlEyxkHggKCXC2Wf5Mzx4\nnZLFZvU2bgcA3exfNPO/g1YunKfQY+Jg4fr6tJUUTZ3XZUrhmLNWvpvSwDS19ZmC\nIXOu0+V94aNgnhMsk9rr59I8qcbsQGIBoHzuAl8NzZCgdbEXkiY90w1skUw8J57z\nqCsMBydAueMXuWqF5nGtYbi5vHwK42PffpiZ7G5Kjwn8nYMW5IZdL6ZnMEVJUWC9\nI4waeKg0yskczYDmZUEAtrn3laX9677ToCpiKrvmZYjlGl0BaGp3cxggP2xaDbUq\nqfFxWNgvUAb3pXD09JM6Mt6HSIJaFc9vQbrKB9KT515y763j5CC2KUsilszKi3mB\nHYe5PoebdjS7D1Oh+tRqfegU2IImzSwW3iwA7PJvefFuc/kNIijfS/gH/cAqAK6z\nbhdOtE/zc7TtqW2Wn5Y03jIZdtm12CxSxwgtCF1NPyEWyIxAQUX9ACb3M0FAZ61n\nfpPrvwTaIIxxZ01L3IzPLpbc44x/DhJIEU+iDt6IMTrHOphD9MCG4631eIdB0H1b\n6zbNX1CXTsafqHRFV9XmYYIeOMggmd90s3xIbEujA6HKNP/gwzO6CDJ+nHFDEqoF\nSkxRdTkEqjTjVKieURW7Swv7zpfu5PrsrrkyGnsRrBJJzXlm2FOOxnbI2iSL1B5F\nrO5kbUxFeZUIDq+7Yv4kLWcCAwEAAQ==
616a9724:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnC+bR4bHf/L6QdU4puhQ\ngl1MHePszRC38bzvVFDUJsmCaMCL2suCs2A2yxAgGb9pu9AJYLAmxQC4mM3jNqhg\n/E7yuaBbek3O02zN/ctvflJ250wZCy+z0ZGIp1ak6pu1j14IwHokl9j36zNfGtfv\nADVOcdpWITFFlPqwq1qt/H3UsKVmtiF3BNWWTeUEQwKvlU8ymxgS99yn0+4OPyNT\nL3EUeS+NQJtDS01unau0t7LnjUXn+XIneWny8bIYOQCuVR6s/gpIGuhBaUqwaJOw\n7jkJZYF2Ij7uPb4b5/R3vX2FfxxqEHqssFSg8FFUNTZz3qNZs0CRVyfA972g9WkJ\nhPfn31pQYil4QGRibCMIeU27YAEjXoqfJKEPh4UWMQsQLrEfdGfb8VgwrPbniGfU\nL3jKJR3VAafL9330iawzVQDlIlwGl6u77gEXMl9K0pfazunYhAp+BMP+9ot5ckK+\nosmrqj11qMESsAj083GeFdfV3pXEIwUytaB0AKEht9DbqUfiE/oeZ/LAXgySMtVC\nsbC4ESmgVeY2xSBIJdDyUap7FR49GGrw0W49NUv9gRgQtGGaNVQQO9oGL2PBC41P\niWF9GLoX30HIz1P8PF/cZvicSSPkQf2Z6TV+t0ebdGNS5DjapdnCrq8m9Z0pyKsQ\nuxAL2a7zX8l5i1CZh1ycUGsCAwEAAQ==
616abc23:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0MfCDrhODRCIxR9Dep1s\neXafh5CE5BrF4WbCgCsevyPIdvTeyIaW4vmO3bbG4VzhogDZju+R3IQYFuhoXP5v\nY+zYJGnwrgz3r5wYAvPnLEs1+dtDKYOgJXQj+wLJBW1mzRDL8FoRXOe5iRmn1EFS\nwZ1DoUvyu7/J5r0itKicZp3QKED6YoilXed+1vnS4Sk0mzN4smuMR9eO1mMCqNp9\n9KTfRDHTbakIHwasECCXCp50uXdoW6ig/xUAFanpm9LtK6jctNDbXDhQmgvAaLXZ\nLvFqoaYJ/CvWkyYCgL6qxvMvVmPoRv7OPcyni4xR/WgWa0MSaEWjgPx3+yj9fiMA\n1S02pFWFDOr5OUF/O4YhFJvUCOtVsUPPfA/Lj6faL0h5QI9mQhy5Zb9TTaS9jB6p\nLw7u0dJlrjFedk8KTJdFCcaGYHP6kNPnOxMylcB/5WcztXZVQD5WpCicGNBxCGMm\nW64SgrV7M07gQfL/32QLsdqPUf0i8hoVD8wfQ3EpbQzv6Fk1Cn90bZqZafg8XWGY\nwddhkXk7egrr23Djv37V2okjzdqoyLBYBxMz63qQzFoAVv5VoY2NDTbXYUYytOvG\nGJ1afYDRVWrExCech1mX5ZVUB1br6WM+psFLJFoBFl6mDmiYt0vMYBddKISsvwLl\nIJQkzDwtXzT2cSjoj3T5QekCAwEAAQ==
616ac3bc:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvaaoSLab+IluixwKV5Od\n0gib2YurjPatGIbn5Ov2DLUFYiebj2oJINXJSwUOO+4WcuHFEqiL/1rya+k5hLZt\nhnPL1tn6QD4rESznvGSasRCQNT2vS/oyZbTYJRyAtFkEYLlq0t3S3xBxxHWuvIf0\nqVxVNYpQWyM3N9RIeYBR/euXKJXileSHk/uq1I5wTC0XBIHWcthczGN0m9wBEiWS\n0m3cnPk4q0Ea8mUJ91Rqob19qETz6VbSPYYpZk3qOycjKosuwcuzoMpwU8KRiMFd\n5LHtX0Hx85ghGsWDVtS0c0+aJa4lOMGvJCAOvDfqvODv7gKlCXUpgumGpLdTmaZ8\n1RwqspAe3IqBcdKTqRD4m2mSg23nVx2FAY3cjFvZQtfooT7q1ItRV5RgH6FhQSl7\n+6YIMJ1Bf8AAlLdRLpg+doOUGcEn+pkDiHFgI8ylH1LKyFKw+eXaAml/7DaWZk1d\ndqggwhXOhc/UUZFQuQQ8A8zpA13PcbC05XxN2hyP93tCEtyynMLVPtrRwDnHxFKa\nqKzs3rMDXPSXRn3ZZTdKH3069ApkEjQdpcwUh+EmJ1Ve/5cdtzT6kKWCjKBFZP/s\n91MlRrX2BTRdHaU5QJkUheUtakwxuHrdah2F94lRmsnQlpPr2YseJu6sIE+Dnx4M\nCfhdVbQL2w54R645nlnohu8CAwEAAQ==
616adfeb:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0BFD1D4lIxQcsqEpQzU\npNCYM3aP1V/fxxVdT4DWvSI53JHTwHQamKdMWtEXetWVbP5zSROniYKFXd/xrD9X\n0jiGHey3lEtylXRIPxe5s+wXoCmNLcJVnvTcDtwx/ne2NLHxp76lyc25At+6RgE6\nADjLVuoD7M4IFDkAsd8UQ8zM0Dww9SylIk/wgV3ZkifecvgUQRagrNUdUjR56EBZ\nraQrev4hhzOgwelT0kXCu3snbUuNY/lU53CoTzfBJ5UfEJ5pMw1ij6X0r5S9IVsy\nKLWH1hiO0NzU2c8ViUYCly4Fe9xMTFc6u2dy/dxf6FwERfGzETQxqZvSfrRX+GLj\n/QZAXiPg5178hT/m0Y3z5IGenIC/80Z9NCi+byF1WuJlzKjDcF/TU72zk0+PNM/H\nKuppf3JT4DyjiVzNC5YoWJT2QRMS9KLP5iKCSThwVceEEg5HfhQBRT9M6KIcFLSs\nmFjx9kNEEmc1E8hl5IR3+3Ry8G5/bTIIruz14jgeY9u5jhL8Vyyvo41jgt9sLHR1\n/J1TxKfkgksYev7PoX6/ZzJ1ksWKZY5NFoDXTNYUgzFUTOoEaOg3BAQKadb3Qbbq\nXIrxmPBdgrn9QI7NCgfnAY3Tb4EEjs3ON/BNyEhUENcXOH6I1NbcuBQ7g9P73kE4\nVORdoc8MdJ5eoKBpO8Ww8HECAwEAAQ==
616ae350:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyduVzi1mWm+lYo2Tqt/0\nXkCIWrDNP1QBMVPrE0/ZlU2bCGSoo2Z9FHQKz/mTyMRlhNqTfhJ5qU3U9XlyGOPJ\npiM+b91g26pnpXJ2Q2kOypSgOMOPA4cQ42PkHBEqhuzssfj9t7x47ppS94bboh46\nxLSDRff/NAbtwTpvhStV3URYkxFG++cKGGa5MPXBrxIp+iZf9GnuxVdST5PGiVGP\nODL/b69sPJQNbJHVquqUTOh5Ry8uuD2WZuXfKf7/C0jC/ie9m2+0CttNu9tMciGM\nEyKG1/Xhk5iIWO43m4SrrT2WkFlcZ1z2JSf9Pjm4C2+HovYpihwwdM/OdP8Xmsnr\nDzVB4YvQiW+IHBjStHVuyiZWc+JsgEPJzisNY0Wyc/kNyNtqVKpX6dRhMLanLmy+\nf53cCSI05KPQAcGj6tdL+D60uKDkt+FsDa0BTAobZ31OsFVid0vCXtsbplNhW1IF\nHwsGXBTVcfXg44RLyL8Lk/2dQxDHNHzAUslJXzPxaHBLmt++2COa2EI1iWlvtznk\nOk9WP8SOAIj+xdqoiHcC4j72BOVVgiITIJNHrbppZCq6qPR+fgXmXa+sDcGh30m6\n9Wpbr28kLMSHiENCWTdsFij+NQTd5S47H7XTROHnalYDuF1RpS+DpQidT5tUimaT\nJZDr++FjKrnnijbyNF8b98UCAwEAAQ==
616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ==
'
__Keyring= __Keyring=
__SkipSigCheck=0
__UseMirror=0 __UseMirror=0
__UnprocessedBuildArgs= __UnprocessedBuildArgs=
@ -143,47 +167,55 @@ while :; do
__Keyring="--keyring /usr/share/keyrings/raspbian-archive-keyring.gpg" __Keyring="--keyring /usr/share/keyrings/raspbian-archive-keyring.gpg"
fi fi
;; ;;
ppc64le)
__BuildArch=ppc64le
__UbuntuArch=ppc64el
__UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//')
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp-dev//')
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp5//')
unset __LLDB_Package
;;
riscv64) riscv64)
__BuildArch=riscv64 __BuildArch=riscv64
__AlpineArch=riscv64
__AlpinePackages="${__AlpinePackages// lldb-dev/}"
__QEMUArch=riscv64
__UbuntuArch=riscv64 __UbuntuArch=riscv64
__UbuntuRepo="http://deb.debian.org/debian-ports" __UbuntuRepo="http://deb.debian.org/debian-ports"
__CodeName=sid __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//')
unset __LLDB_Package unset __LLDB_Package
if [[ -e "/usr/share/keyrings/debian-ports-archive-keyring.gpg" ]]; then if [[ -e "/usr/share/keyrings/debian-ports-archive-keyring.gpg" ]]; then
__Keyring="--keyring /usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring" __Keyring="--keyring /usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring"
fi fi
;; ;;
ppc64le)
__BuildArch=ppc64le
__AlpineArch=ppc64le
__QEMUArch=ppc64le
__UbuntuArch=ppc64el
__UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
__UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
__UbuntuPackages="${__UbuntuPackages// libomp-dev/}"
__UbuntuPackages="${__UbuntuPackages// libomp5/}"
unset __LLDB_Package
;;
s390x) s390x)
__BuildArch=s390x __BuildArch=s390x
__AlpineArch=s390x
__QEMUArch=s390x
__UbuntuArch=s390x __UbuntuArch=s390x
__UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/" __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/"
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//') __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}"
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp-dev//') __UbuntuPackages="${__UbuntuPackages// libomp-dev/}"
__UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp5//') __UbuntuPackages="${__UbuntuPackages// libomp5/}"
unset __LLDB_Package unset __LLDB_Package
;; ;;
x64) x64)
__BuildArch=x64 __BuildArch=x64
__AlpineArch=x86_64
__UbuntuArch=amd64 __UbuntuArch=amd64
__FreeBSDArch=amd64 __FreeBSDArch=amd64
__FreeBSDMachineArch=amd64 __FreeBSDMachineArch=amd64
__illumosArch=x86_64 __illumosArch=x86_64
__UbuntuRepo= __UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
;; ;;
x86) x86)
__BuildArch=x86 __BuildArch=x86
__UbuntuArch=i386 __UbuntuArch=i386
__AlpineArch=x86
__UbuntuRepo="http://archive.ubuntu.com/ubuntu/" __UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
;; ;;
lldb*) lldb*)
@ -238,34 +270,59 @@ while :; do
;; ;;
jessie) # Debian 8 jessie) # Debian 8
__CodeName=jessie __CodeName=jessie
__UbuntuRepo="http://ftp.debian.org/debian/"
if [[ -z "$__UbuntuRepo" ]]; then
__UbuntuRepo="http://ftp.debian.org/debian/"
fi
;; ;;
stretch) # Debian 9 stretch) # Debian 9
__CodeName=stretch __CodeName=stretch
__UbuntuRepo="http://ftp.debian.org/debian/"
__LLDB_Package="liblldb-6.0-dev" __LLDB_Package="liblldb-6.0-dev"
if [[ -z "$__UbuntuRepo" ]]; then
__UbuntuRepo="http://ftp.debian.org/debian/"
fi
;; ;;
buster) # Debian 10 buster) # Debian 10
__CodeName=buster __CodeName=buster
__UbuntuRepo="http://ftp.debian.org/debian/"
__LLDB_Package="liblldb-6.0-dev" __LLDB_Package="liblldb-6.0-dev"
if [[ -z "$__UbuntuRepo" ]]; then
__UbuntuRepo="http://ftp.debian.org/debian/"
fi
;;
bullseye) # Debian 11
__CodeName=bullseye
if [[ -z "$__UbuntuRepo" ]]; then
__UbuntuRepo="http://ftp.debian.org/debian/"
fi
;;
sid) # Debian sid
__CodeName=sid
if [[ -z "$__UbuntuRepo" ]]; then
__UbuntuRepo="http://ftp.debian.org/debian/"
fi
;; ;;
tizen) tizen)
__CodeName= __CodeName=
__UbuntuRepo= __UbuntuRepo=
__Tizen=tizen __Tizen=tizen
;; ;;
alpine|alpine3.13) alpine*)
__CodeName=alpine __CodeName=alpine
__UbuntuRepo= __UbuntuRepo=
__AlpineVersion=3.13 version="${lowerI/alpine/}"
__AlpinePackages+=" llvm10-libs"
;; if [[ "$version" == "edge" ]]; then
alpine3.14) __AlpineVersion=edge
__CodeName=alpine else
__UbuntuRepo= parts=(${version//./ })
__AlpineVersion=3.14 __AlpineMajorVersion="${parts[0]}"
__AlpinePackages+=" llvm11-libs" __AlpineMinoVersion="${parts[1]}"
__AlpineVersion="$__AlpineMajorVersion.$__AlpineMinoVersion"
fi
;; ;;
freebsd12) freebsd12)
__CodeName=freebsd __CodeName=freebsd
@ -273,7 +330,7 @@ while :; do
;; ;;
freebsd13) freebsd13)
__CodeName=freebsd __CodeName=freebsd
__FreeBSDBase="13.0-RELEASE" __FreeBSDBase="13.2-RELEASE"
__FreeBSDABI="13" __FreeBSDABI="13"
__SkipUnmount=1 __SkipUnmount=1
;; ;;
@ -289,6 +346,9 @@ while :; do
--skipunmount) --skipunmount)
__SkipUnmount=1 __SkipUnmount=1
;; ;;
--skipsigcheck)
__SkipSigCheck=1
;;
--rootfsdir|-rootfsdir) --rootfsdir|-rootfsdir)
shift shift
__RootfsDir="$1" __RootfsDir="$1"
@ -308,10 +368,47 @@ while :; do
shift shift
done done
case "$__AlpineVersion" in
3.14) __AlpinePackages+=" llvm11-libs" ;;
3.15) __AlpinePackages+=" llvm12-libs" ;;
3.16) __AlpinePackages+=" llvm13-libs" ;;
3.17) __AlpinePackages+=" llvm15-libs" ;;
edge) __AlpineLlvmLibsLookup=1 ;;
*)
if [[ "$__AlpineArch" =~ s390x|ppc64le ]]; then
__AlpineVersion=3.15 # minimum version that supports lldb-dev
__AlpinePackages+=" llvm12-libs"
elif [[ "$__AlpineArch" == "x86" ]]; then
__AlpineVersion=3.17 # minimum version that supports lldb-dev
__AlpinePackages+=" llvm15-libs"
elif [[ "$__AlpineArch" == "riscv64" ]]; then
__AlpineLlvmLibsLookup=1
__AlpineVersion=edge # minimum version with APKINDEX.tar.gz (packages archive)
else
__AlpineVersion=3.13 # 3.13 to maximize compatibility
__AlpinePackages+=" llvm10-libs"
if [[ "$__AlpineArch" == "armv7" ]]; then
__AlpinePackages="${__AlpinePackages//numactl-dev/}"
fi
fi
esac
if [[ "$__AlpineVersion" =~ 3\.1[345] ]]; then
# compiler-rt--static was merged in compiler-rt package in alpine 3.16
# for older versions, we need compiler-rt--static, so replace the name
__AlpinePackages="${__AlpinePackages/compiler-rt/compiler-rt-static}"
fi
if [[ "$__BuildArch" == "armel" ]]; then if [[ "$__BuildArch" == "armel" ]]; then
__LLDB_Package="lldb-3.5-dev" __LLDB_Package="lldb-3.5-dev"
fi fi
if [[ "$__CodeName" == "xenial" && "$__UbuntuArch" == "armhf" ]]; then
# libnuma-dev is not available on armhf for xenial
__UbuntuPackages="${__UbuntuPackages//libnuma-dev/}"
fi
__UbuntuPackages+=" ${__LLDB_Package:-}" __UbuntuPackages+=" ${__LLDB_Package:-}"
if [[ -n "$__LLVM_MajorVersion" ]]; then if [[ -n "$__LLVM_MajorVersion" ]]; then
@ -337,18 +434,59 @@ mkdir -p "$__RootfsDir"
__RootfsDir="$( cd "$__RootfsDir" && pwd )" __RootfsDir="$( cd "$__RootfsDir" && pwd )"
if [[ "$__CodeName" == "alpine" ]]; then if [[ "$__CodeName" == "alpine" ]]; then
__ApkToolsVersion=2.9.1 __ApkToolsVersion=2.12.11
__ApkToolsSHA512SUM=53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33
__ApkToolsDir="$(mktemp -d)" __ApkToolsDir="$(mktemp -d)"
wget "https://github.com/alpinelinux/apk-tools/releases/download/v$__ApkToolsVersion/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz" -P "$__ApkToolsDir" __ApkKeysDir="$(mktemp -d)"
tar -xf "$__ApkToolsDir/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz" -C "$__ApkToolsDir"
mkdir -p "$__RootfsDir"/usr/bin
cp -v "/usr/bin/qemu-$__QEMUArch-static" "$__RootfsDir/usr/bin"
"$__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk" \ wget "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic//v$__ApkToolsVersion/x86_64/apk.static" -P "$__ApkToolsDir"
-X "http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/main" \ echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c
-X "http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/community" \ chmod +x "$__ApkToolsDir/apk.static"
-U --allow-untrusted --root "$__RootfsDir" --arch "$__AlpineArch" --initdb \
add $__AlpinePackages if [[ -f "/usr/bin/qemu-$__QEMUArch-static" ]]; then
mkdir -p "$__RootfsDir"/usr/bin
cp -v "/usr/bin/qemu-$__QEMUArch-static" "$__RootfsDir/usr/bin"
fi
if [[ "$__AlpineVersion" == "edge" ]]; then
version=edge
else
version="v$__AlpineVersion"
fi
for line in $__AlpineKeys; do
id="${line%%:*}"
content="${line#*:}"
echo -e "-----BEGIN PUBLIC KEY-----\n$content\n-----END PUBLIC KEY-----" > "$__ApkKeysDir/alpine-devel@lists.alpinelinux.org-$id.rsa.pub"
done
if [[ "$__SkipSigCheck" == "1" ]]; then
__ApkSignatureArg="--allow-untrusted"
else
__ApkSignatureArg="--keys-dir $__ApkKeysDir"
fi
# initialize DB
"$__ApkToolsDir/apk.static" \
-X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
-X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
-U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" --initdb add
if [[ "$__AlpineLlvmLibsLookup" == 1 ]]; then
__AlpinePackages+=" $("$__ApkToolsDir/apk.static" \
-X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
-X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
-U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \
search 'llvm*-libs' | sort | tail -1 | sed 's/-[^-]*//2g')"
fi
# install all packages in one go
"$__ApkToolsDir/apk.static" \
-X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \
-X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \
-U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \
add $__AlpinePackages
rm -r "$__ApkToolsDir" rm -r "$__ApkToolsDir"
elif [[ "$__CodeName" == "freebsd" ]]; then elif [[ "$__CodeName" == "freebsd" ]]; then
@ -483,7 +621,12 @@ elif [[ "$__CodeName" == "haiku" ]]; then
fi fi
done done
elif [[ -n "$__CodeName" ]]; then elif [[ -n "$__CodeName" ]]; then
qemu-debootstrap $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"
if [[ "$__SkipSigCheck" == "0" ]]; then
__Keyring="$__Keyring --force-check-gpg"
fi
debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"
cp "$__CrossDir/$__BuildArch/sources.list.$__CodeName" "$__RootfsDir/etc/apt/sources.list" cp "$__CrossDir/$__BuildArch/sources.list.$__CodeName" "$__RootfsDir/etc/apt/sources.list"
chroot "$__RootfsDir" apt-get update chroot "$__RootfsDir" apt-get update
chroot "$__RootfsDir" apt-get -f -y install chroot "$__RootfsDir" apt-get -f -y install
@ -501,7 +644,7 @@ elif [[ -n "$__CodeName" ]]; then
popd popd
fi fi
elif [[ "$__Tizen" == "tizen" ]]; then elif [[ "$__Tizen" == "tizen" ]]; then
ROOTFS_DIR="$__RootfsDir" "$__CrossDir/$__BuildArch/tizen-build-rootfs.sh" ROOTFS_DIR="$__RootfsDir" "$__CrossDir/tizen-build-rootfs.sh" "$__BuildArch"
else else
echo "Unsupported target platform." echo "Unsupported target platform."
usage; usage;

Просмотреть файл

@ -1,8 +1,34 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
ARCH=$1
LINK_ARCH=$ARCH
case "$ARCH" in
arm)
TIZEN_ARCH="armv7hl"
;;
armel)
TIZEN_ARCH="armv7l"
LINK_ARCH="arm"
;;
arm64)
TIZEN_ARCH="aarch64"
;;
x86)
TIZEN_ARCH="i686"
;;
x64)
TIZEN_ARCH="x86_64"
LINK_ARCH="x86"
;;
*)
echo "Unsupported architecture for tizen: $ARCH"
exit 1
esac
__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) __CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
__TIZEN_CROSSDIR="$__CrossDir/tizen" __TIZEN_CROSSDIR="$__CrossDir/${ARCH}/tizen"
if [[ -z "$ROOTFS_DIR" ]]; then if [[ -z "$ROOTFS_DIR" ]]; then
echo "ROOTFS_DIR is not defined." echo "ROOTFS_DIR is not defined."
@ -14,7 +40,7 @@ mkdir -p $TIZEN_TMP_DIR
# Download files # Download files
echo ">>Start downloading files" echo ">>Start downloading files"
VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR $TIZEN_ARCH
echo "<<Finish downloading files" echo "<<Finish downloading files"
echo ">>Start constructing Tizen rootfs" echo ">>Start constructing Tizen rootfs"
@ -30,6 +56,6 @@ rm -rf $TIZEN_TMP_DIR
# Configure Tizen rootfs # Configure Tizen rootfs
echo ">>Start configuring Tizen rootfs" echo ">>Start configuring Tizen rootfs"
ln -sfn asm-arm64 ./usr/include/asm ln -sfn asm-${LINK_ARCH} ./usr/include/asm
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
echo "<<Finish configuring Tizen rootfs" echo "<<Finish configuring Tizen rootfs"

Просмотреть файл

@ -0,0 +1,172 @@
#!/usr/bin/env bash
set -e
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
VERBOSE=0
fi
Log()
{
if [ $VERBOSE -ge $1 ]; then
echo ${@:2}
fi
}
Inform()
{
Log 1 -e "\x1B[0;34m$@\x1B[m"
}
Debug()
{
Log 2 -e "\x1B[0;32m$@\x1B[m"
}
Error()
{
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
}
Fetch()
{
URL=$1
FILE=$2
PROGRESS=$3
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
CURL_OPT="--progress-bar"
else
CURL_OPT="--silent"
fi
curl $CURL_OPT $URL > $FILE
}
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
TMPDIR=$1
if [ ! -d $TMPDIR ]; then
TMPDIR=./tizen_tmp
Debug "Create temporary directory : $TMPDIR"
mkdir -p $TMPDIR
fi
TIZEN_ARCH=$2
TIZEN_URL=http://download.tizen.org/snapshots/TIZEN/Tizen
BUILD_XML=build.xml
REPOMD_XML=repomd.xml
PRIMARY_XML=primary.xml
TARGET_URL="http://__not_initialized"
Xpath_get()
{
XPATH_RESULT=''
XPATH=$1
XML_FILE=$2
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
if [[ -z ${RESULT// } ]]; then
Error "Can not find target from $XML_FILE"
Debug "Xpath = $XPATH"
exit 1
fi
XPATH_RESULT=$RESULT
}
fetch_tizen_pkgs_init()
{
TARGET=$1
PROFILE=$2
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
mkdir -p $TMP_PKG_DIR
PKG_URL=$TIZEN_URL/$PROFILE/latest
BUILD_XML_URL=$PKG_URL/$BUILD_XML
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
Fetch $BUILD_XML_URL $TMP_BUILD
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
Xpath_get $TARGET_XPATH $TMP_BUILD
TARGET_PATH=$XPATH_RESULT
TARGET_URL=$PKG_URL/$TARGET_PATH
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
Fetch $REPOMD_URL $TMP_REPOMD
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
PRIMARY_XML_PATH=$XPATH_RESULT
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
gunzip $TMP_PRIMARYGZ
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
}
fetch_tizen_pkgs()
{
ARCH=$1
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
for pkg in ${@:2}
do
Inform "Fetching... $pkg"
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
PKG_PATH=$XPATH_RESULT
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
CHECKSUM=$XPATH_RESULT
PKG_URL=$TARGET_URL/$PKG_PATH
PKG_FILE=$(basename $PKG_PATH)
PKG_PATH=$TMPDIR/$PKG_FILE
Debug "Download $PKG_URL to $PKG_PATH"
Fetch $PKG_URL $PKG_PATH true
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
if [ $? -ne 0 ]; then
Error "Fail to fetch $PKG_URL to $PKG_PATH"
Debug "Checksum = $CHECKSUM"
exit 1
fi
done
}
Inform "Initialize ${TIZEN_ARCH} base"
fetch_tizen_pkgs_init standard Tizen-Base
Inform "fetch common packages"
fetch_tizen_pkgs ${TIZEN_ARCH} gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
Inform "fetch coreclr packages"
fetch_tizen_pkgs ${TIZEN_ARCH} lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
Inform "fetch corefx packages"
fetch_tizen_pkgs ${TIZEN_ARCH} libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
Inform "Initialize standard unified"
fetch_tizen_pkgs_init standard Tizen-Unified
Inform "fetch corefx packages"
fetch_tizen_pkgs ${TIZEN_ARCH} gssdp gssdp-devel tizen-release

Просмотреть файл

@ -1,5 +1,12 @@
set(CROSS_ROOTFS $ENV{ROOTFS_DIR}) set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
# reset platform variables (e.g. cmake 3.25 sets LINUX=1)
unset(LINUX)
unset(FREEBSD)
unset(ILLUMOS)
unset(ANDROID)
unset(TIZEN)
set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH}) set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH})
if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version) if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version)
set(CMAKE_SYSTEM_NAME FreeBSD) set(CMAKE_SYSTEM_NAME FreeBSD)
@ -60,16 +67,30 @@ elseif(TARGET_ARCH_NAME STREQUAL "armv6")
endif() endif()
elseif(TARGET_ARCH_NAME STREQUAL "ppc64le") elseif(TARGET_ARCH_NAME STREQUAL "ppc64le")
set(CMAKE_SYSTEM_PROCESSOR ppc64le) set(CMAKE_SYSTEM_PROCESSOR ppc64le)
set(TOOLCHAIN "powerpc64le-linux-gnu") if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/powerpc64le-alpine-linux-musl)
set(TOOLCHAIN "powerpc64le-alpine-linux-musl")
else()
set(TOOLCHAIN "powerpc64le-linux-gnu")
endif()
elseif(TARGET_ARCH_NAME STREQUAL "riscv64") elseif(TARGET_ARCH_NAME STREQUAL "riscv64")
set(CMAKE_SYSTEM_PROCESSOR riscv64) set(CMAKE_SYSTEM_PROCESSOR riscv64)
set(TOOLCHAIN "riscv64-linux-gnu") if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/riscv64-alpine-linux-musl)
set(TOOLCHAIN "riscv64-alpine-linux-musl")
else()
set(TOOLCHAIN "riscv64-linux-gnu")
endif()
elseif(TARGET_ARCH_NAME STREQUAL "s390x") elseif(TARGET_ARCH_NAME STREQUAL "s390x")
set(CMAKE_SYSTEM_PROCESSOR s390x) set(CMAKE_SYSTEM_PROCESSOR s390x)
set(TOOLCHAIN "s390x-linux-gnu") if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/s390x-alpine-linux-musl)
set(TOOLCHAIN "s390x-alpine-linux-musl")
else()
set(TOOLCHAIN "s390x-linux-gnu")
endif()
elseif(TARGET_ARCH_NAME STREQUAL "x64") elseif(TARGET_ARCH_NAME STREQUAL "x64")
set(CMAKE_SYSTEM_PROCESSOR x86_64) set(CMAKE_SYSTEM_PROCESSOR x86_64)
if(LINUX) if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/x86_64-alpine-linux-musl)
set(TOOLCHAIN "x86_64-alpine-linux-musl")
elseif(LINUX)
set(TOOLCHAIN "x86_64-linux-gnu") set(TOOLCHAIN "x86_64-linux-gnu")
if(TIZEN) if(TIZEN)
set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0") set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0")
@ -83,7 +104,11 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64")
endif() endif()
elseif(TARGET_ARCH_NAME STREQUAL "x86") elseif(TARGET_ARCH_NAME STREQUAL "x86")
set(CMAKE_SYSTEM_PROCESSOR i686) set(CMAKE_SYSTEM_PROCESSOR i686)
set(TOOLCHAIN "i686-linux-gnu") if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
set(TOOLCHAIN "i586-alpine-linux-musl")
else()
set(TOOLCHAIN "i686-linux-gnu")
endif()
if(TIZEN) if(TIZEN)
set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0") set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0")
endif() endif()
@ -113,6 +138,10 @@ if(TIZEN)
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu) include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu)
endif() endif()
if(TARGET_ARCH_NAME STREQUAL "x64")
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/x86_64-tizen-linux-gnu)
endif()
endif() endif()
if(ANDROID) if(ANDROID)
@ -241,7 +270,7 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
endif() endif()
elseif(TARGET_ARCH_NAME STREQUAL "arm64") elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64)$")
if(TIZEN) if(TIZEN)
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64")
@ -253,8 +282,11 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64")
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
endif() endif()
elseif(TARGET_ARCH_NAME STREQUAL "x86") elseif(TARGET_ARCH_NAME STREQUAL "x86")
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
add_toolchain_linker_flag("--target=${TOOLCHAIN}")
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
endif()
add_toolchain_linker_flag(-m32) add_toolchain_linker_flag(-m32)
if(TIZEN) if(TIZEN)
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
@ -268,7 +300,7 @@ endif()
# Specify compile options # Specify compile options
if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU) if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN})
set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN})
set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN})
@ -287,10 +319,16 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
add_definitions (-DCLR_ARM_FPU_CAPABILITY=${CLR_ARM_FPU_CAPABILITY}) add_definitions (-DCLR_ARM_FPU_CAPABILITY=${CLR_ARM_FPU_CAPABILITY})
# persist variables across multiple try_compile passes
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CLR_ARM_FPU_TYPE CLR_ARM_FPU_CAPABILITY)
if(TARGET_ARCH_NAME STREQUAL "armel") if(TARGET_ARCH_NAME STREQUAL "armel")
add_compile_options(-mfloat-abi=softfp) add_compile_options(-mfloat-abi=softfp)
endif() endif()
elseif(TARGET_ARCH_NAME STREQUAL "x86") elseif(TARGET_ARCH_NAME STREQUAL "x86")
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
add_compile_options(--target=${TOOLCHAIN})
endif()
add_compile_options(-m32) add_compile_options(-m32)
add_compile_options(-Wno-error=unused-command-line-argument) add_compile_options(-Wno-error=unused-command-line-argument)
endif() endif()

Просмотреть файл

@ -0,0 +1,11 @@
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe
deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted
deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse

Просмотреть файл

@ -0,0 +1,9 @@
diff -u -r a/usr/lib64/libc.so b/usr/lib64/libc.so
--- a/usr/lib64/libc.so 2016-12-30 23:00:08.284951863 +0900
+++ b/usr/lib64/libc.so 2016-12-30 23:00:32.140951815 +0900
@@ -2,4 +2,4 @@
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-x86-64)
-GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) )
+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-x86-64.so.2 ) )

Просмотреть файл

@ -1,35 +0,0 @@
#!/usr/bin/env bash
set -e
__X86_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
__TIZEN_CROSSDIR="$__X86_CrossDir/tizen"
if [[ -z "$ROOTFS_DIR" ]]; then
echo "ROOTFS_DIR is not defined."
exit 1;
fi
TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
mkdir -p $TIZEN_TMP_DIR
# Download files
echo ">>Start downloading files"
VERBOSE=1 $__X86_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
echo "<<Finish downloading files"
echo ">>Start constructing Tizen rootfs"
TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
cd $ROOTFS_DIR
for f in $TIZEN_RPM_FILES; do
rpm2cpio $f | cpio -idm --quiet
done
echo "<<Finish constructing Tizen rootfs"
# Cleanup tmp
rm -rf $TIZEN_TMP_DIR
# Configure Tizen rootfs
echo ">>Start configuring Tizen rootfs"
ln -sfn asm-x86 ./usr/include/asm
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
echo "<<Finish configuring Tizen rootfs"

Просмотреть файл

@ -1,170 +0,0 @@
#!/usr/bin/env bash
set -e
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
VERBOSE=0
fi
Log()
{
if [ $VERBOSE -ge $1 ]; then
echo ${@:2}
fi
}
Inform()
{
Log 1 -e "\x1B[0;34m$@\x1B[m"
}
Debug()
{
Log 2 -e "\x1B[0;32m$@\x1B[m"
}
Error()
{
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
}
Fetch()
{
URL=$1
FILE=$2
PROGRESS=$3
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
CURL_OPT="--progress-bar"
else
CURL_OPT="--silent"
fi
curl $CURL_OPT $URL > $FILE
}
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
TMPDIR=$1
if [ ! -d $TMPDIR ]; then
TMPDIR=./tizen_tmp
Debug "Create temporary directory : $TMPDIR"
mkdir -p $TMPDIR
fi
TIZEN_URL=http://download.tizen.org/snapshots/TIZEN/Tizen
BUILD_XML=build.xml
REPOMD_XML=repomd.xml
PRIMARY_XML=primary.xml
TARGET_URL="http://__not_initialized"
Xpath_get()
{
XPATH_RESULT=''
XPATH=$1
XML_FILE=$2
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
if [[ -z ${RESULT// } ]]; then
Error "Can not find target from $XML_FILE"
Debug "Xpath = $XPATH"
exit 1
fi
XPATH_RESULT=$RESULT
}
fetch_tizen_pkgs_init()
{
TARGET=$1
PROFILE=$2
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
mkdir -p $TMP_PKG_DIR
PKG_URL=$TIZEN_URL/$PROFILE/latest
BUILD_XML_URL=$PKG_URL/$BUILD_XML
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
Fetch $BUILD_XML_URL $TMP_BUILD
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
Xpath_get $TARGET_XPATH $TMP_BUILD
TARGET_PATH=$XPATH_RESULT
TARGET_URL=$PKG_URL/$TARGET_PATH
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
Fetch $REPOMD_URL $TMP_REPOMD
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
PRIMARY_XML_PATH=$XPATH_RESULT
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
gunzip $TMP_PRIMARYGZ
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
}
fetch_tizen_pkgs()
{
ARCH=$1
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
for pkg in ${@:2}
do
Inform "Fetching... $pkg"
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
PKG_PATH=$XPATH_RESULT
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
XPATH=${XPATH/_ARCH_/$ARCH}
Xpath_get $XPATH $TMP_PRIMARY
CHECKSUM=$XPATH_RESULT
PKG_URL=$TARGET_URL/$PKG_PATH
PKG_FILE=$(basename $PKG_PATH)
PKG_PATH=$TMPDIR/$PKG_FILE
Debug "Download $PKG_URL to $PKG_PATH"
Fetch $PKG_URL $PKG_PATH true
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
if [ $? -ne 0 ]; then
Error "Fail to fetch $PKG_URL to $PKG_PATH"
Debug "Checksum = $CHECKSUM"
exit 1
fi
done
}
Inform "Initialize i686 base"
fetch_tizen_pkgs_init standard Tizen-Base
Inform "fetch common packages"
fetch_tizen_pkgs i686 gcc gcc-devel-static glibc glibc-devel libicu libicu-devel libatomic linux-glibc-devel keyutils keyutils-devel libkeyutils
Inform "fetch coreclr packages"
fetch_tizen_pkgs i686 lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
Inform "fetch corefx packages"
fetch_tizen_pkgs i686 libcom_err libcom_err-devel zlib zlib-devel libopenssl11 libopenssl1.1-devel krb5 krb5-devel
Inform "Initialize standard unified"
fetch_tizen_pkgs_init standard Tizen-Unified
Inform "fetch corefx packages"
fetch_tizen_pkgs i686 gssdp gssdp-devel tizen-release

Просмотреть файл

@ -34,6 +34,25 @@ $jsonTemplateFiles | ForEach-Object {
$jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern $jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern
$wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them $wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them
if (-not $wxlFiles) {
$wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } # pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files
if ($wxlEnFiles) {
$wxlFiles = @()
$wxlEnFiles | ForEach-Object {
$destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
$wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
}
}
}
$macosHtmlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\.lproj\\.+\.html$" } # add installer HTML files
$macosHtmlFiles = @()
if ($macosHtmlEnFiles) {
$macosHtmlEnFiles | ForEach-Object {
$destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
$macosHtmlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
}
}
$xlfFiles = @() $xlfFiles = @()
@ -99,8 +118,7 @@ $locJson = @{
$outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
$continue = $true $continue = $true
foreach ($exclusion in $exclusions.Exclusions) { foreach ($exclusion in $exclusions.Exclusions) {
if ($_.FullName.Contains($exclusion)) if ($_.FullName.Contains($exclusion)) {
{
$continue = $false $continue = $false
} }
} }
@ -115,6 +133,35 @@ $locJson = @{
} }
} }
) )
},
@{
LanguageSet = $LanguageSet
CloneLanguageSet = "VS_macOS_CloneLanguages"
LssFiles = @( ".\eng\common\loc\P22DotNetHtmlLocalization.lss" )
LocItems = @(
$macosHtmlFiles | ForEach-Object {
$outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
$continue = $true
foreach ($exclusion in $exclusions.Exclusions) {
if ($_.FullName.Contains($exclusion)) {
$continue = $false
}
}
$sourceFile = ($_.FullName | Resolve-Path -Relative)
$lciFile = $sourceFile + ".lci"
if ($continue) {
$result = @{
SourceFile = $sourceFile
CopyOption = "LangIDOnPath"
OutputPath = $outputPath
}
if (Test-Path $lciFile -PathType Leaf) {
$result["LciFile"] = $lciFile
}
return $result
}
}
)
} }
) )
} }

Просмотреть файл

@ -83,7 +83,8 @@ try {
Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue
if ($NativeTools) { if ($NativeTools) {
if ($PathPromotion -eq $True) { if ($PathPromotion -eq $True) {
if ($env:SYSTEM_TEAMPROJECT) { # check to see if we're in an Azure pipelines build $ArcadeToolsDirectory = "$env:SYSTEMDRIVE\arcade-tools"
if (Test-Path $ArcadeToolsDirectory) { # if this directory exists, we should use native tools on machine
$NativeTools.PSObject.Properties | ForEach-Object { $NativeTools.PSObject.Properties | ForEach-Object {
$ToolName = $_.Name $ToolName = $_.Name
$ToolVersion = $_.Value $ToolVersion = $_.Value
@ -93,11 +94,6 @@ try {
if ($ToolVersion -eq "latest") { if ($ToolVersion -eq "latest") {
$ToolVersion = "" $ToolVersion = ""
} }
$ArcadeToolsDirectory = "C:\arcade-tools"
if (-not (Test-Path $ArcadeToolsDirectory)) {
Write-Error "Arcade tools directory '$ArcadeToolsDirectory' was not found; artifacts were not properly installed."
exit 1
}
$ToolDirectories = (Get-ChildItem -Path "$ArcadeToolsDirectory" -Filter "$ToolName-$ToolVersion*" | Sort-Object -Descending) $ToolDirectories = (Get-ChildItem -Path "$ArcadeToolsDirectory" -Filter "$ToolName-$ToolVersion*" | Sort-Object -Descending)
if ($ToolDirectories -eq $null) { if ($ToolDirectories -eq $null) {
Write-Error "Unable to find directory for $ToolName $ToolVersion; please make sure the tool is installed on this image." Write-Error "Unable to find directory for $ToolName $ToolVersion; please make sure the tool is installed on this image."
@ -125,6 +121,7 @@ try {
if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) { if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) {
Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "$ToolName not found on path. Please install $ToolName $ToolVersion before proceeding." Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "$ToolName not found on path. Please install $ToolName $ToolVersion before proceeding."
Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "If this is running on a build machine, the arcade-tools directory was not found, which means there's an error with the image."
} }
} }
exit 0 exit 0

Двоичные данные
eng/common/loc/P22DotNetHtmlLocalization.lss Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -1,30 +1,25 @@
#!/usr/bin/env bash #!/bin/sh
# #
# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables # This file detects the C/C++ compiler and exports it to the CC/CXX environment variables
# #
# NOTE: some scripts source this file and rely on stdout being empty, make sure to not output anything here! # NOTE: some scripts source this file and rely on stdout being empty, make sure to not output anything here!
if [[ "$#" -lt 3 ]]; then if [ -z "$build_arch" ] || [ -z "$compiler" ]; then
echo "Usage..." echo "Usage..."
echo "init-compiler.sh <script directory> <Architecture> <compiler>" echo "build_arch=<ARCH> compiler=<NAME> init-compiler.sh"
echo "Specify the script directory."
echo "Specify the target architecture." echo "Specify the target architecture."
echo "Specify the name of compiler (clang or gcc)." echo "Specify the name of compiler (clang or gcc)."
exit 1 exit 1
fi fi
nativescriptroot="$1"
build_arch="$2"
compiler="$3"
case "$compiler" in case "$compiler" in
clang*|-clang*|--clang*) clang*|-clang*|--clang*)
# clangx.y or clang-x.y # clangx.y or clang-x.y
version="$(echo "$compiler" | tr -d '[:alpha:]-=')" version="$(echo "$compiler" | tr -d '[:alpha:]-=')"
parts=(${version//./ }) majorVersion="${version%%.*}"
majorVersion="${parts[0]}" [ -z "${version##*.*}" ] && minorVersion="${version#*.}"
minorVersion="${parts[1]}"
if [[ -z "$minorVersion" && "$majorVersion" -le 6 ]]; then if [ -z "$minorVersion" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -le 6 ]; then
minorVersion=0; minorVersion=0;
fi fi
compiler=clang compiler=clang
@ -33,23 +28,20 @@ case "$compiler" in
gcc*|-gcc*|--gcc*) gcc*|-gcc*|--gcc*)
# gccx.y or gcc-x.y # gccx.y or gcc-x.y
version="$(echo "$compiler" | tr -d '[:alpha:]-=')" version="$(echo "$compiler" | tr -d '[:alpha:]-=')"
parts=(${version//./ }) majorVersion="${version%%.*}"
majorVersion="${parts[0]}" [ -z "${version##*.*}" ] && minorVersion="${version#*.}"
minorVersion="${parts[1]}"
compiler=gcc compiler=gcc
;; ;;
esac esac
cxxCompiler="$compiler++" cxxCompiler="$compiler++"
. "$nativescriptroot"/../pipeline-logging-functions.sh
# clear the existing CC and CXX from environment # clear the existing CC and CXX from environment
CC= CC=
CXX= CXX=
LDFLAGS= LDFLAGS=
if [[ "$compiler" == "gcc" ]]; then cxxCompiler="g++"; fi if [ "$compiler" = "gcc" ]; then cxxCompiler="g++"; fi
check_version_exists() { check_version_exists() {
desired_version=-1 desired_version=-1
@ -66,40 +58,41 @@ check_version_exists() {
echo "$desired_version" echo "$desired_version"
} }
if [[ -z "$CLR_CC" ]]; then if [ -z "$CLR_CC" ]; then
# Set default versions # Set default versions
if [[ -z "$majorVersion" ]]; then if [ -z "$majorVersion" ]; then
# note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero. # note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero.
if [[ "$compiler" == "clang" ]]; then versions=( 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 ) if [ "$compiler" = "clang" ]; then versions="16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5"
elif [[ "$compiler" == "gcc" ]]; then versions=( 12 11 10 9 8 7 6 5 4.9 ); fi elif [ "$compiler" = "gcc" ]; then versions="13 12 11 10 9 8 7 6 5 4.9"; fi
for version in "${versions[@]}"; do for version in $versions; do
parts=(${version//./ }) _major="${version%%.*}"
desired_version="$(check_version_exists "${parts[0]}" "${parts[1]}")" [ -z "${version##*.*}" ] && _minor="${version#*.}"
if [[ "$desired_version" != "-1" ]]; then majorVersion="${parts[0]}"; break; fi desired_version="$(check_version_exists "$_major" "$_minor")"
if [ "$desired_version" != "-1" ]; then majorVersion="$_major"; break; fi
done done
if [[ -z "$majorVersion" ]]; then if [ -z "$majorVersion" ]; then
if command -v "$compiler" > /dev/null; then if command -v "$compiler" > /dev/null; then
if [[ "$(uname)" != "Darwin" ]]; then if [ "$(uname)" != "Darwin" ]; then
Write-PipelineTelemetryError -category "Build" -type "warning" "Specific version of $compiler not found, falling back to use the one in PATH." echo "Warning: Specific version of $compiler not found, falling back to use the one in PATH."
fi fi
CC="$(command -v "$compiler")" CC="$(command -v "$compiler")"
CXX="$(command -v "$cxxCompiler")" CXX="$(command -v "$cxxCompiler")"
else else
Write-PipelineTelemetryError -category "Build" "No usable version of $compiler found." echo "No usable version of $compiler found."
exit 1 exit 1
fi fi
else else
if [[ "$compiler" == "clang" && "$majorVersion" -lt 5 ]]; then if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ]; then
if [[ "$build_arch" == "arm" || "$build_arch" == "armel" ]]; then if [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; then
if command -v "$compiler" > /dev/null; then if command -v "$compiler" > /dev/null; then
Write-PipelineTelemetryError -category "Build" -type "warning" "Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH." echo "Warning: Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH."
CC="$(command -v "$compiler")" CC="$(command -v "$compiler")"
CXX="$(command -v "$cxxCompiler")" CXX="$(command -v "$cxxCompiler")"
else else
Write-PipelineTelemetryError -category "Build" "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH." echo "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH."
exit 1 exit 1
fi fi
fi fi
@ -107,33 +100,33 @@ if [[ -z "$CLR_CC" ]]; then
fi fi
else else
desired_version="$(check_version_exists "$majorVersion" "$minorVersion")" desired_version="$(check_version_exists "$majorVersion" "$minorVersion")"
if [[ "$desired_version" == "-1" ]]; then if [ "$desired_version" = "-1" ]; then
Write-PipelineTelemetryError -category "Build" "Could not find specific version of $compiler: $majorVersion $minorVersion." echo "Could not find specific version of $compiler: $majorVersion $minorVersion."
exit 1 exit 1
fi fi
fi fi
if [[ -z "$CC" ]]; then if [ -z "$CC" ]; then
CC="$(command -v "$compiler$desired_version")" CC="$(command -v "$compiler$desired_version")"
CXX="$(command -v "$cxxCompiler$desired_version")" CXX="$(command -v "$cxxCompiler$desired_version")"
if [[ -z "$CXX" ]]; then CXX="$(command -v "$cxxCompiler")"; fi if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler")"; fi
fi fi
else else
if [[ ! -f "$CLR_CC" ]]; then if [ ! -f "$CLR_CC" ]; then
Write-PipelineTelemetryError -category "Build" "CLR_CC is set but path '$CLR_CC' does not exist" echo "CLR_CC is set but path '$CLR_CC' does not exist"
exit 1 exit 1
fi fi
CC="$CLR_CC" CC="$CLR_CC"
CXX="$CLR_CXX" CXX="$CLR_CXX"
fi fi
if [[ -z "$CC" ]]; then if [ -z "$CC" ]; then
Write-PipelineTelemetryError -category "Build" "Unable to find $compiler." echo "Unable to find $compiler."
exit 1 exit 1
fi fi
# Only lld version >= 9 can be considered stable # Only lld version >= 9 can be considered stable. lld doesn't support s390x.
if [[ "$compiler" == "clang" && "$majorVersion" -ge 9 ]]; then if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && [ "$build_arch" != "s390x" ]; then
if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then
LDFLAGS="-fuse-ld=lld" LDFLAGS="-fuse-ld=lld"
fi fi

Просмотреть файл

@ -64,7 +64,7 @@ try {
$GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty
} }
if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) { if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) {
$GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.3.1" -MemberType NoteProperty $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.4.1" -MemberType NoteProperty
} }
if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") {
$xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true

Просмотреть файл

@ -2,7 +2,7 @@
# and some (Microbuild) should only be applied to non-PR cases for internal builds. # and some (Microbuild) should only be applied to non-PR cases for internal builds.
parameters: parameters:
# Job schema parameters - https://learn.microsoft.com/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job # Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
cancelTimeoutInMinutes: '' cancelTimeoutInMinutes: ''
condition: '' condition: ''
container: '' container: ''
@ -24,7 +24,8 @@ parameters:
enablePublishBuildAssets: false enablePublishBuildAssets: false
enablePublishTestResults: false enablePublishTestResults: false
enablePublishUsingPipelines: false enablePublishUsingPipelines: false
disableComponentGovernance: false enableBuildRetry: false
disableComponentGovernance: ''
componentGovernanceIgnoreDirectories: '' componentGovernanceIgnoreDirectories: ''
mergeTestResults: false mergeTestResults: false
testRunTitle: '' testRunTitle: ''
@ -87,10 +88,20 @@ jobs:
- ${{ if ne(variable.group, '') }}: - ${{ if ne(variable.group, '') }}:
- group: ${{ variable.group }} - group: ${{ variable.group }}
# handle template variable syntax
# example:
# - template: path/to/template.yml
# parameters:
# [key]: [value]
- ${{ if ne(variable.template, '') }}:
- template: ${{ variable.template }}
${{ if ne(variable.parameters, '') }}:
parameters: ${{ variable.parameters }}
# handle key-value variable syntax. # handle key-value variable syntax.
# example: # example:
# - [key]: [value] # - [key]: [value]
- ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}: - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}:
- ${{ each pair in variable }}: - ${{ each pair in variable }}:
- name: ${{ pair.key }} - name: ${{ pair.key }}
value: ${{ pair.value }} value: ${{ pair.value }}
@ -123,7 +134,7 @@ jobs:
- ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}:
- task: NuGetAuthenticate@0 - task: NuGetAuthenticate@0
- ${{ if or(eq(parameters.artifacts.download, 'true'), ne(parameters.artifacts.download, '')) }}: - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}:
- task: DownloadPipelineArtifact@2 - task: DownloadPipelineArtifact@2
inputs: inputs:
buildType: current buildType: current
@ -144,11 +155,16 @@ jobs:
uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }}
continueOnError: true continueOnError: true
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(parameters.disableComponentGovernance, 'true')) }}: - template: /eng/common/templates/steps/component-governance.yml
- task: ComponentGovernanceComponentDetection@0 parameters:
continueOnError: true ${{ if eq(parameters.disableComponentGovernance, '') }}:
inputs: ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}:
ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} disableComponentGovernance: false
${{ else }}:
disableComponentGovernance: true
${{ else }}:
disableComponentGovernance: ${{ parameters.disableComponentGovernance }}
componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
- ${{ if eq(parameters.enableMicrobuild, 'true') }}: - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
@ -160,7 +176,7 @@ jobs:
TeamName: $(_TeamName) TeamName: $(_TeamName)
- ${{ if ne(parameters.artifacts.publish, '') }}: - ${{ if ne(parameters.artifacts.publish, '') }}:
- ${{ if or(eq(parameters.artifacts.publish.artifacts, 'true'), ne(parameters.artifacts.publish.artifacts, '')) }}: - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
- task: CopyFiles@2 - task: CopyFiles@2
displayName: Gather binaries for publish to artifacts displayName: Gather binaries for publish to artifacts
inputs: inputs:
@ -181,7 +197,7 @@ jobs:
ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
continueOnError: true continueOnError: true
condition: always() condition: always()
- ${{ if or(eq(parameters.artifacts.publish.logs, 'true'), ne(parameters.artifacts.publish.logs, '')) }}: - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
- publish: artifacts/log - publish: artifacts/log
artifact: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} artifact: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }}
displayName: Publish logs displayName: Publish logs
@ -228,3 +244,8 @@ jobs:
BuildDropPath: ${{ parameters.buildDropPath }} BuildDropPath: ${{ parameters.buildDropPath }}
IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
- ${{ if eq(parameters.enableBuildRetry, 'true') }}:
- publish: $(Build.SourcesDirectory)\eng\common\BuildConfiguration
artifact: BuildConfiguration
displayName: Publish build retry configuration
continueOnError: true

Просмотреть файл

@ -2,7 +2,7 @@ parameters:
# Optional: dependencies of the job # Optional: dependencies of the job
dependsOn: '' dependsOn: ''
# Optional: A defined YAML pool - https://learn.microsoft.com/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
pool: '' pool: ''
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
@ -14,6 +14,7 @@ parameters:
ReusePr: true ReusePr: true
UseLfLineEndings: true UseLfLineEndings: true
UseCheckedInLocProjectJson: false UseCheckedInLocProjectJson: false
SkipLocProjectJsonGeneration: false
LanguageSet: VS_Main_Languages LanguageSet: VS_Main_Languages
LclSource: lclFilesInRepo LclSource: lclFilesInRepo
LclPackageId: '' LclPackageId: ''
@ -56,12 +57,13 @@ jobs:
demands: ImageOverride -equals windows.vs2019.amd64 demands: ImageOverride -equals windows.vs2019.amd64
steps: steps:
- task: Powershell@2 - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}:
inputs: - task: Powershell@2
filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1 inputs:
arguments: $(_GenerateLocProjectArguments) filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1
displayName: Generate LocProject.json arguments: $(_GenerateLocProjectArguments)
condition: ${{ parameters.condition }} displayName: Generate LocProject.json
condition: ${{ parameters.condition }}
- task: OneLocBuild@2 - task: OneLocBuild@2
displayName: OneLocBuild displayName: OneLocBuild

Просмотреть файл

@ -13,7 +13,7 @@ parameters:
# Optional: Include PublishBuildArtifacts task # Optional: Include PublishBuildArtifacts task
enablePublishBuildArtifacts: false enablePublishBuildArtifacts: false
# Optional: A defined YAML pool - https://learn.microsoft.com/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
pool: {} pool: {}
# Optional: should run as a public build even in the internal project # Optional: should run as a public build even in the internal project
@ -34,6 +34,7 @@ jobs:
- job: Asset_Registry_Publish - job: Asset_Registry_Publish
dependsOn: ${{ parameters.dependsOn }} dependsOn: ${{ parameters.dependsOn }}
timeoutInMinutes: 150
${{ if eq(parameters.publishAssetsImmediately, 'true') }}: ${{ if eq(parameters.publishAssetsImmediately, 'true') }}:
displayName: Publish Assets displayName: Publish Assets
@ -73,12 +74,6 @@ jobs:
- task: NuGetAuthenticate@0 - task: NuGetAuthenticate@0
- task: PowerShell@2
displayName: Enable cross-org NuGet feed authentication
inputs:
filePath: $(Build.SourcesDirectory)/eng/common/enable-cross-org-publishing.ps1
arguments: -token $(dn-bot-all-orgs-artifact-feeds-rw)
- task: PowerShell@2 - task: PowerShell@2
displayName: Publish Build Assets displayName: Publish Build Assets
inputs: inputs:

Просмотреть файл

@ -46,20 +46,12 @@ jobs:
# source-build builds run in Docker, including the default managed platform. # source-build builds run in Docker, including the default managed platform.
# /eng/common/templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic # /eng/common/templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic
pool: pool:
# Main environments ${{ if eq(variables['System.TeamProject'], 'public') }}:
${{ if and(eq(variables['System.TeamProject'], 'public'), ne(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), true)) }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
name: NetCore-Public
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), true)) }}:
name: NetCore1ESPool-Internal
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
# Servicing build environments ${{ if eq(variables['System.TeamProject'], 'internal') }}:
${{ if and(eq(variables['System.TeamProject'], 'public'), contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release')) }}: 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: NetCore-Svc-Public
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
${{ if and(eq(variables['System.TeamProject'], 'internal'), contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release')) }}:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64 demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
${{ if ne(parameters.platform.pool, '') }}: ${{ if ne(parameters.platform.pool, '') }}:

Просмотреть файл

@ -1,6 +1,6 @@
parameters: parameters:
runAsPublic: false runAsPublic: false
sourceIndexPackageVersion: 1.0.1-20220804.1 sourceIndexPackageVersion: 1.0.1-20230228.2
sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
preSteps: [] preSteps: []
@ -40,10 +40,10 @@ jobs:
- ${{ preStep }} - ${{ preStep }}
- task: UseDotNet@2 - task: UseDotNet@2
displayName: Use .NET Core sdk 3.1 displayName: Use .NET Core SDK 6
inputs: inputs:
packageType: sdk packageType: sdk
version: 3.1.x version: 6.0.x
installationPath: $(Agent.TempDirectory)/dotnet installationPath: $(Agent.TempDirectory)/dotnet
workingDirectory: $(Agent.TempDirectory) workingDirectory: $(Agent.TempDirectory)

Просмотреть файл

@ -1,7 +1,7 @@
parameters: parameters:
# See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
continueOnError: false continueOnError: false
# Required: A collection of jobs to run - https://learn.microsoft.com/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
jobs: [] jobs: []
# Optional: if specified, restore and use this version of Guardian instead of the default. # Optional: if specified, restore and use this version of Guardian instead of the default.
overrideGuardianVersion: '' overrideGuardianVersion: ''

Просмотреть файл

@ -21,7 +21,7 @@ parameters:
# Optional: Include toolset dependencies in the generated graph files # Optional: Include toolset dependencies in the generated graph files
includeToolset: false includeToolset: false
# Required: A collection of jobs to run - https://learn.microsoft.com/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
jobs: [] jobs: []
# Optional: Override automatically derived dependsOn value for "publish build assets" job # Optional: Override automatically derived dependsOn value for "publish build assets" job

Просмотреть файл

@ -1,8 +1,4 @@
variables: variables:
- group: AzureDevOps-Artifact-Feeds-Pats
- group: DotNet-Blob-Feed
- group: DotNet-DotNetCli-Storage
- group: DotNet-MSRC-Storage
- group: Publish-Build-Assets - group: Publish-Build-Assets
# Whether the build is internal or not # Whether the build is internal or not

Просмотреть файл

@ -172,12 +172,6 @@ stages:
- task: NuGetAuthenticate@0 - task: NuGetAuthenticate@0
displayName: 'Authenticate to AzDO Feeds' displayName: 'Authenticate to AzDO Feeds'
- task: PowerShell@2
displayName: Enable cross-org publishing
inputs:
filePath: eng\common\enable-cross-org-publishing.ps1
arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
# Signing validation will optionally work with the buildmanifest file which is downloaded from # Signing validation will optionally work with the buildmanifest file which is downloaded from
# Azure DevOps above. # Azure DevOps above.
- task: PowerShell@2 - task: PowerShell@2

Просмотреть файл

@ -0,0 +1,13 @@
parameters:
disableComponentGovernance: false
componentGovernanceIgnoreDirectories: ''
steps:
- ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
- script: "echo ##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
displayName: Set skipComponentGovernanceDetection variable
- ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
- task: ComponentGovernanceComponentDetection@0
continueOnError: true
inputs:
ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}

Просмотреть файл

@ -16,7 +16,7 @@
# First, import the template in an arcade-ified repo to pick up the variables, e.g.: # First, import the template in an arcade-ified repo to pick up the variables, e.g.:
# #
# variables: # variables:
# - template: eng/common/templates/variables/pool-providers.yml # - template: /eng/common/templates/variables/pool-providers.yml
# #
# ... then anywhere specifying the pool provider use the runtime variables, # ... then anywhere specifying the pool provider use the runtime variables,
# $(DncEngInternalBuildPool) and $ (DncEngPublicBuildPool), e.g.: # $(DncEngInternalBuildPool) and $ (DncEngPublicBuildPool), e.g.:
@ -26,23 +26,32 @@
# demands: ImageOverride -equals windows.vs2019.amd64 # demands: ImageOverride -equals windows.vs2019.amd64
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
# If these variables are somehow missing, fall back to main (tends to have more capacity) # If these variables are somehow missing, fall back to main (tends to have more capacity)
- name: BranchNameForPoolSelection
value: ${{ coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main') }}
# Any new -Svc alternative pools should have variables added here to allow for splitting work # Any new -Svc alternative pools should have variables added here to allow for splitting work
# Main branch pools
- ${{ if ne(contains(variables['BranchNameForPoolSelection'], 'release'), true) }}:
- name: DncEngPublicBuildPool - name: DncEngPublicBuildPool
value: NetCore-Public value: $[
- name: DncEngInternalBuildPool replace(
value: NetCore1ESPool-Internal replace(
eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'),
True,
'NetCore-Svc-Public'
),
False,
'NetCore-Public'
)
]
# Release branch pools
- ${{ if contains(variables['BranchNameForPoolSelection'], 'release') }}:
- name: DncEngPublicBuildPool
value: NetCore-Svc-Public
- name: DncEngInternalBuildPool - name: DncEngInternalBuildPool
value: NetCore1ESPool-Svc-Internal value: $[
replace(
replace(
eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'),
True,
'NetCore1ESPool-Svc-Internal'
),
False,
'NetCore1ESPool-Internal'
)
]

Просмотреть файл

@ -287,6 +287,25 @@ function InstallDotNet([string] $dotnetRoot,
[string] $runtimeSourceFeedKey = '', [string] $runtimeSourceFeedKey = '',
[switch] $noPath) { [switch] $noPath) {
$dotnetVersionLabel = "'sdk v$version'"
if ($runtime -ne '' -and $runtime -ne 'sdk') {
$runtimePath = $dotnetRoot
$runtimePath = $runtimePath + "\shared"
if ($runtime -eq "dotnet") { $runtimePath = $runtimePath + "\Microsoft.NETCore.App" }
if ($runtime -eq "aspnetcore") { $runtimePath = $runtimePath + "\Microsoft.AspNetCore.App" }
if ($runtime -eq "windowsdesktop") { $runtimePath = $runtimePath + "\Microsoft.WindowsDesktop.App" }
$runtimePath = $runtimePath + "\" + $version
$dotnetVersionLabel = "runtime toolset '$runtime/$architecture v$version'"
if (Test-Path $runtimePath) {
Write-Host " Runtime toolset '$runtime/$architecture v$version' already installed."
$installSuccess = $true
Exit
}
}
$installScript = GetDotNetInstallScript $dotnetRoot $installScript = GetDotNetInstallScript $dotnetRoot
$installParameters = @{ $installParameters = @{
Version = $version Version = $version
@ -323,18 +342,18 @@ function InstallDotNet([string] $dotnetRoot,
} else { } else {
$location = "public location"; $location = "public location";
} }
Write-Host "Attempting to install dotnet from $location." Write-Host " Attempting to install $dotnetVersionLabel from $location."
try { try {
& $installScript @variation & $installScript @variation
$installSuccess = $true $installSuccess = $true
break break
} }
catch { catch {
Write-Host "Failed to install dotnet from $location." Write-Host " Failed to install $dotnetVersionLabel from $location."
} }
} }
if (-not $installSuccess) { if (-not $installSuccess) {
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install dotnet from any of the specified locations." Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install $dotnetVersionLabel from any of the specified locations."
ExitWithExitCode 1 ExitWithExitCode 1
} }
} }
@ -365,8 +384,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
# If the version of msbuild is going to be xcopied, # If the version of msbuild is going to be xcopied,
# use this version. Version matches a package here: # use this version. Version matches a package here:
# https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&package=RoslynTools.MSBuild&protocolType=NuGet&version=17.3.1view=overview # https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&package=RoslynTools.MSBuild&protocolType=NuGet&version=17.4.1&view=overview
$defaultXCopyMSBuildVersion = '17.3.1' $defaultXCopyMSBuildVersion = '17.4.1'
if (!$vsRequirements) { if (!$vsRequirements) {
if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') {
@ -399,7 +418,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
# Locate Visual Studio installation or download x-copy msbuild. # Locate Visual Studio installation or download x-copy msbuild.
$vsInfo = LocateVisualStudio $vsRequirements $vsInfo = LocateVisualStudio $vsRequirements
if ($vsInfo -ne $null) { if ($vsInfo -ne $null) {
$vsInstallDir = $vsInfo.installationPath # Ensure vsInstallDir has a trailing slash
$vsInstallDir = Join-Path $vsInfo.installationPath "\"
$vsMajorVersion = $vsInfo.installationVersion.Split('.')[0] $vsMajorVersion = $vsInfo.installationVersion.Split('.')[0]
InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion
@ -413,6 +433,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
if($vsMinVersion -lt $vsMinVersionReqd){ if($vsMinVersion -lt $vsMinVersionReqd){
Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible" Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible"
$xcopyMSBuildVersion = $defaultXCopyMSBuildVersion $xcopyMSBuildVersion = $defaultXCopyMSBuildVersion
$vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0]
} }
else{ else{
# If the VS version IS compatible, look for an xcopy msbuild package # If the VS version IS compatible, look for an xcopy msbuild package
@ -497,7 +518,7 @@ function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) {
# Two part minimal VS version, e.g. "15.9", "16.0", etc. # Two part minimal VS version, e.g. "15.9", "16.0", etc.
# "components": ["componentId1", "componentId2", ...] # "components": ["componentId1", "componentId2", ...]
# Array of ids of workload components that must be available in the VS instance. # Array of ids of workload components that must be available in the VS instance.
# See e.g. https://learn.microsoft.com/visualstudio/install/workload-component-id-vs-enterprise?view=vs-2017 # See e.g. https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-enterprise?view=vs-2017
# #
# Returns JSON describing the located VS instance (same format as returned by vswhere), # Returns JSON describing the located VS instance (same format as returned by vswhere),
# or $null if no instance meeting the requirements is found on the machine. # or $null if no instance meeting the requirements is found on the machine.
@ -580,7 +601,7 @@ function InitializeBuildTool() {
ExitWithExitCode 1 ExitWithExitCode 1
} }
$dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet') $dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet')
$buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net7.0' } $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net8.0' }
} elseif ($msbuildEngine -eq "vs") { } elseif ($msbuildEngine -eq "vs") {
try { try {
$msbuildPath = InitializeVisualStudioMSBuild -install:$restore $msbuildPath = InitializeVisualStudioMSBuild -install:$restore
@ -742,6 +763,8 @@ function MSBuild() {
(Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll')) (Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
(Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')), (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')),
(Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll')) (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
(Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.ArcadeLogging.dll')),
(Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll'))
) )
$selectedPath = $null $selectedPath = $null
foreach ($path in $possiblePaths) { foreach ($path in $possiblePaths) {
@ -814,7 +837,8 @@ function MSBuild-Core() {
Write-Host "See log: $buildLog" -ForegroundColor DarkGray Write-Host "See log: $buildLog" -ForegroundColor DarkGray
} }
if ($ci) { # When running on Azure Pipelines, override the returned exit code to avoid double logging.
if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null) {
Write-PipelineSetResult -Result "Failed" -Message "msbuild execution failed." Write-PipelineSetResult -Result "Failed" -Message "msbuild execution failed."
# Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error
# The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error
@ -909,11 +933,13 @@ if (!$disableConfigureToolsetImport) {
function Enable-Nuget-EnhancedRetry() { function Enable-Nuget-EnhancedRetry() {
if ($ci) { if ($ci) {
Write-Host "Setting NUGET enhanced retry environment variables" Write-Host "Setting NUGET enhanced retry environment variables"
$env:NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY = 'true' $env:NUGET_ENABLE_ENHANCED_HTTP_RETRY = 'true'
$env:NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT = 6 $env:NUGET_ENHANCED_MAX_NETWORK_TRY_COUNT = 6
$env:NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS = 1000 $env:NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS = 1000
Write-PipelineSetVariable -Name 'NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY' -Value 'true' $env:NUGET_RETRY_HTTP_429 = 'true'
Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT' -Value '6' Write-PipelineSetVariable -Name 'NUGET_ENABLE_ENHANCED_HTTP_RETRY' -Value 'true'
Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS' -Value '1000' Write-PipelineSetVariable -Name 'NUGET_ENHANCED_MAX_NETWORK_TRY_COUNT' -Value '6'
Write-PipelineSetVariable -Name 'NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS' -Value '1000'
Write-PipelineSetVariable -Name 'NUGET_RETRY_HTTP_429' -Value 'true'
} }
} }

Просмотреть файл

@ -184,6 +184,35 @@ function InstallDotNetSdk {
function InstallDotNet { function InstallDotNet {
local root=$1 local root=$1
local version=$2 local version=$2
local runtime=$4
local dotnetVersionLabel="'$runtime v$version'"
if [[ -n "${4:-}" ]] && [ "$4" != 'sdk' ]; then
runtimePath="$root"
runtimePath="$runtimePath/shared"
case "$runtime" in
dotnet)
runtimePath="$runtimePath/Microsoft.NETCore.App"
;;
aspnetcore)
runtimePath="$runtimePath/Microsoft.AspNetCore.App"
;;
windowsdesktop)
runtimePath="$runtimePath/Microsoft.WindowsDesktop.App"
;;
*)
;;
esac
runtimePath="$runtimePath/$version"
dotnetVersionLabel="runtime toolset '$runtime/$architecture v$version'"
if [ -d "$runtimePath" ]; then
echo " Runtime toolset '$runtime/$architecture v$version' already installed."
local installSuccess=1
return
fi
fi
GetDotNetInstallScript "$root" GetDotNetInstallScript "$root"
local install_script=$_GetDotNetInstallScript local install_script=$_GetDotNetInstallScript
@ -228,17 +257,17 @@ function InstallDotNet {
for variationName in "${variations[@]}"; do for variationName in "${variations[@]}"; do
local name="$variationName[@]" local name="$variationName[@]"
local variation=("${!name}") local variation=("${!name}")
echo "Attempting to install dotnet from $variationName." echo " Attempting to install $dotnetVersionLabel from $variationName."
bash "$install_script" "${variation[@]}" && installSuccess=1 bash "$install_script" "${variation[@]}" && installSuccess=1
if [[ "$installSuccess" -eq 1 ]]; then if [[ "$installSuccess" -eq 1 ]]; then
break break
fi fi
echo "Failed to install dotnet from $variationName." echo " Failed to install $dotnetVersionLabel from $variationName."
done done
if [[ "$installSuccess" -eq 0 ]]; then if [[ "$installSuccess" -eq 0 ]]; then
Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from any of the specified locations." Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install $dotnetVersionLabel from any of the specified locations."
ExitWithExitCode 1 ExitWithExitCode 1
fi fi
} }
@ -312,7 +341,7 @@ function InitializeBuildTool {
# return values # return values
_InitializeBuildTool="$_InitializeDotNetCli/dotnet" _InitializeBuildTool="$_InitializeDotNetCli/dotnet"
_InitializeBuildToolCommand="msbuild" _InitializeBuildToolCommand="msbuild"
_InitializeBuildToolFramework="net7.0" _InitializeBuildToolFramework="net8.0"
} }
# Set RestoreNoCache as a workaround for https://github.com/NuGet/Home/issues/3116 # Set RestoreNoCache as a workaround for https://github.com/NuGet/Home/issues/3116
@ -416,12 +445,6 @@ function MSBuild {
export NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS=20 export NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS=20
Write-PipelineSetVariable -name "NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS" -value "20" Write-PipelineSetVariable -name "NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS" -value "20"
Write-PipelineSetVariable -name "NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS" -value "20" Write-PipelineSetVariable -name "NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS" -value "20"
# https://github.com/dotnet/arcade/issues/11369 - disable new MSBuild server feature on linux
# This feature is new and can result in build failures from connection timeout errors.
export DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER=1
Write-PipelineSetVariable -name "DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER" -value "1"
fi fi
local toolset_dir="${_InitializeToolset%/*}" local toolset_dir="${_InitializeToolset%/*}"
@ -434,6 +457,8 @@ function MSBuild {
possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.Arcade.Sdk.dll" ) possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.Arcade.Sdk.dll" )
possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.ArcadeLogging.dll" ) possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.ArcadeLogging.dll" )
possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.Arcade.Sdk.dll" ) possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.Arcade.Sdk.dll" )
possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.ArcadeLogging.dll" )
possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.Arcade.Sdk.dll" )
for path in "${possiblePaths[@]}"; do for path in "${possiblePaths[@]}"; do
if [[ -f $path ]]; then if [[ -f $path ]]; then
selectedPath=$path selectedPath=$path
@ -478,7 +503,9 @@ function MSBuild-Core {
# We should not Write-PipelineTaskError here because that message shows up in the build summary # We should not Write-PipelineTaskError here because that message shows up in the build summary
# The build already logged an error, that's the reason it failed. Producing an error here only adds noise. # The build already logged an error, that's the reason it failed. Producing an error here only adds noise.
echo "Build failed with exit code $exit_code. Check errors above." echo "Build failed with exit code $exit_code. Check errors above."
if [[ "$ci" == "true" ]]; then
# When running on Azure Pipelines, override the returned exit code to avoid double logging.
if [[ "$ci" == "true" && -n ${SYSTEM_TEAMPROJECT:-} ]]; then
Write-PipelineSetResult -result "Failed" -message "msbuild execution failed." Write-PipelineSetResult -result "Failed" -message "msbuild execution failed."
# Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error
# The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error

Просмотреть файл

@ -1,14 +1,16 @@
{ {
"sdk": { "sdk": {
"version": "7.0.203", "version": "8.0.100-preview.3.23178.7",
"allowPrerelease": true, "allowPrerelease": true,
"rollForward": "latestPatch" "rollForward": "latestPatch"
}, },
"tools": { "tools": {
"dotnet": "7.0.203", "dotnet": "8.0.100-preview.3.23178.7",
"vs": { "vs": {
"version": "17.5", "version": "17.5",
"components": ["Microsoft.VisualStudio.Component.FSharp"] "components": [
"Microsoft.VisualStudio.Component.FSharp"
]
}, },
"xcopy-msbuild": "17.4.1" "xcopy-msbuild": "17.4.1"
}, },
@ -16,7 +18,7 @@
"perl": "5.32.1.1" "perl": "5.32.1.1"
}, },
"msbuild-sdks": { "msbuild-sdks": {
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.22554.2", "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23255.2",
"Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.22554.2" "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
} }
} }

Просмотреть файл

@ -104,6 +104,7 @@ module internal FSharpEnvironment =
let toolingCompatibleVersions = let toolingCompatibleVersions =
if typeof<obj>.Assembly.GetName().Name = "mscorlib" then if typeof<obj>.Assembly.GetName().Name = "mscorlib" then
[| [|
"net481"
"net48" "net48"
"net472" "net472"
"net471" "net471"
@ -117,6 +118,7 @@ module internal FSharpEnvironment =
|] |]
elif typeof<obj>.Assembly.GetName().Name = "System.Private.CoreLib" then elif typeof<obj>.Assembly.GetName().Name = "System.Private.CoreLib" then
[| [|
"net8.0"
"net7.0" "net7.0"
"net6.0" "net6.0"
"net5.0" "net5.0"

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Nerozpoznaná možnost: {0}</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Unbekannte Option: "{0}"</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Opción no reconocida: '{0}'.</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Option non reconnue : '{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Opzione non riconosciuta: '{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">認識されないオプション:'{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">인식할 수 없는 옵션: '{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Nierozpoznana opcja: „{0}”</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Opção não reconhecida: '{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Нераспознанный параметр: '{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">Tanınmayan seçenek: '{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">无法识别的选项:“{0}”</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -1599,7 +1599,7 @@
</trans-unit> </trans-unit>
<trans-unit id="buildUnrecognizedOption"> <trans-unit id="buildUnrecognizedOption">
<source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source> <source>Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</source>
<target state="needs-review-translation">選項無法辨認: '{0}'</target> <target state="new">Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="buildInvalidModuleOrNamespaceName"> <trans-unit id="buildInvalidModuleOrNamespaceName">

Просмотреть файл

@ -2,6 +2,7 @@
<PropertyGroup> <PropertyGroup>
<FSharpTestCompilerVersion Condition = " '$(FSharpTestCompilerVersion)' == '' ">net40</FSharpTestCompilerVersion> <FSharpTestCompilerVersion Condition = " '$(FSharpTestCompilerVersion)' == '' ">net40</FSharpTestCompilerVersion>
<RollForward>LatestMajor</RollForward>
</PropertyGroup> </PropertyGroup>
<Import Project="$([MSBuild]::GetPathOfFileAbove('FSharpTests.Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" /> <Import Project="$([MSBuild]::GetPathOfFileAbove('FSharpTests.Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />

Просмотреть файл

@ -99,9 +99,3 @@
} }
} }

Просмотреть файл

@ -7369,9 +7369,3 @@
} }
} }

Просмотреть файл

@ -7333,9 +7333,3 @@
} }
} }

Просмотреть файл

@ -1619,9 +1619,3 @@
} }
} }

Просмотреть файл

@ -1619,9 +1619,3 @@
} }
} }

Просмотреть файл

@ -1369,9 +1369,3 @@
} }
} }

Просмотреть файл

@ -1369,9 +1369,3 @@
} }
} }

Просмотреть файл

@ -1463,9 +1463,3 @@
} }
} }

Просмотреть файл

@ -1463,9 +1463,3 @@
} }
} }

Просмотреть файл

@ -619,9 +619,3 @@
} }
} }

Просмотреть файл

@ -242,9 +242,3 @@
extends [runtime]System.Object extends [runtime]System.Object
{ {
} }

Просмотреть файл

@ -838,7 +838,7 @@ type ListProperties () =
let check = xs |> List.collect (List.replicate ys.Length) let check = xs |> List.collect (List.replicate ys.Length)
pairsFst = check pairsFst = check
[<Fact(Skip="Test is flaky and bugged on .NET7, will be re-enabled when https://github.com/dotnet/fsharp/issues/13563 is fixed")>] [<Fact>]
member this.``List.allPairs first elements are correct`` () = member this.``List.allPairs first elements are correct`` () =
Check.QuickThrowOnFailure this.allPairsFst<int, int> Check.QuickThrowOnFailure this.allPairsFst<int, int>
Check.QuickThrowOnFailure this.allPairsFst<string, string> Check.QuickThrowOnFailure this.allPairsFst<string, string>

Просмотреть файл

@ -1,134 +1,134 @@
{ {
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": { "metadata": {
"dotnet_interactive": { "dotnet_interactive": {
"language": "fsharp" "language": "fsharp"
},
"vscode": {
"languageId": "dotnet-interactive.fsharp"
}
},
"outputs": [],
"source": [
"#r \"nuget: NuGet.Protocol, 6.2.1\"\n",
"#r \"nuget: Plotly.NET, 3.0.0\"\n",
"#r \"nuget: Plotly.NET.Interactive, 3.0.0\"\n",
"#r \"nuget: LibGit2Sharp, 0.26.2\"\n",
"#r \"nuget: BenchmarkDotnet, 0.13.1\"\n",
"#r \"../../../../artifacts/bin/HistoricalBenchmark.Runner/Release/net7.0/HistoricalBenchmark.Runner.dll\"\n",
"\n",
"open HistoricalBenchmark.Runner\n",
"\n",
"let config =\n",
" {\n",
" RunConfig.Time = DateTime(2022, 7, 12, 8, 19, 0)\n",
" // Set to a valid local absolute path\n",
" BaseDir = \"d:/benchmarks\"\n",
" Parallelism = 3\n",
" ResultsSuffix = \"results\"\n",
" BuildLocalCodebases = false\n",
" }"
]
}, },
"vscode": { {
"languageId": "dotnet-interactive.fsharp" "cell_type": "code",
} "execution_count": null,
}, "metadata": {
"outputs": [], "dotnet_interactive": {
"source": [ "language": "fsharp"
"#r \"nuget: NuGet.Protocol, 6.2.1\"\n", },
"#r \"nuget: Plotly.NET, 3.0.0\"\n", "vscode": {
"#r \"nuget: Plotly.NET.Interactive, 3.0.0\"\n", "languageId": "dotnet-interactive.fsharp"
"#r \"nuget: LibGit2Sharp, 0.26.2\"\n", }
"#r \"nuget: BenchmarkDotnet, 0.13.1\"\n", },
"#r \"../../../../artifacts/bin/HistoricalBenchmark.Runner/Release/net7.0/HistoricalBenchmark.Runner.dll\"\n", "outputs": [],
"\n", "source": [
"open HistoricalBenchmark.Runner\n", "// let newerVersion = findVersion \"40.0.1-preview.21352.5\"\n",
"\n", "// let olderVersion = findVersion \"40.0.0\"\n",
"let config =\n", "// let newerRevision = NuGet.resolvePackageRevision newerVersion\n",
" {\n", "// let olderVersion = NuGet.resolvePackageRevision olderVersion\n",
" RunConfig.Time = DateTime(2022, 7, 12, 8, 19, 0)\n", "\n",
" // Set to a valid local absolute path\n", "// Find all commits between the two\n",
" BaseDir = \"d:/benchmarks\"\n", "let newerRevision = \"cb3692bf5d5af46b075c50d4f802f09152fb6b67\"\n",
" Parallelism = 3\n", "let olderRevision = \"4d330f37ae740adccd2586d568b6d45d2c408fad\"\n",
" ResultsSuffix = \"results\"\n", "let cNewer, cOlder = Git.findCommit config newerRevision, Git.findCommit config olderRevision\n",
" BuildLocalCodebases = false\n", "let versions =\n",
" }" " Git.findCommitsBetweenInclusive config cOlder cNewer |> Seq.toList\n",
] " |> Git.excludeBadCommits [\"679e11c533ad6c408723cf9b227a57be23fb51db\"]\n",
}, " |> List.map (fun c -> FCSVersion.Git c.Sha)\n",
{ "// Fetch, build and run benchmarks for all of them\n",
"cell_type": "code", "Runner.runAll {config with ResultsSuffix = \"between_2_nuget_versions\"} versions"
"execution_count": null, ]
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
}, },
"vscode": { {
"languageId": "dotnet-interactive.fsharp" "cell_type": "code",
} "execution_count": null,
}, "metadata": {
"outputs": [], "dotnet_interactive": {
"source": [ "language": "fsharp"
"// let newerVersion = findVersion \"40.0.1-preview.21352.5\"\n", },
"// let olderVersion = findVersion \"40.0.0\"\n", "vscode": {
"// let newerRevision = NuGet.resolvePackageRevision newerVersion\n", "languageId": "dotnet-interactive.fsharp"
"// let olderVersion = NuGet.resolvePackageRevision olderVersion\n", }
"\n", },
"// Find all commits between the two\n", "outputs": [],
"let newerRevision = \"cb3692bf5d5af46b075c50d4f802f09152fb6b67\"\n", "source": [
"let olderRevision = \"4d330f37ae740adccd2586d568b6d45d2c408fad\"\n", "// Find two latest NuGet versions of FCS (including prereleases), run benchmarks and export results\n",
"let cNewer, cOlder = Git.findCommit config newerRevision, Git.findCommit config olderRevision\n", "NuGet.allVersionsMetadata.Value()\n",
"let versions =\n", "|> List.take 10\n",
" Git.findCommitsBetweenInclusive config cOlder cNewer |> Seq.toList\n", "|> List.map (fun metadata -> FCSVersion.NuGet metadata.Identity.Version)\n",
" |> Git.excludeBadCommits [\"679e11c533ad6c408723cf9b227a57be23fb51db\"]\n", "|> Runner.runAll {config with ResultsSuffix = \"10_latest_nuget_versions\"}"
" |> List.map (fun c -> FCSVersion.Git c.Sha)\n", ]
"// Fetch, build and run benchmarks for all of them\n",
"Runner.runAll {config with ResultsSuffix = \"between_2_nuget_versions\"} versions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
}, },
"vscode": { {
"languageId": "dotnet-interactive.fsharp" "cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
},
"vscode": {
"languageId": "dotnet-interactive.fsharp"
}
},
"outputs": [],
"source": [
"let versions =\n",
" [\n",
" FCSVersion.Local\n",
" FCSVersion.Git \"4edcbb45365f96d4858f438a556b93d4a32ae219\"\n",
" FCSVersion.NuGet (NuGet.findVersion \"41.0.5-preview.22329.3\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"41.0.5\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"40.0.0\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"35.0.0\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"30.0.0\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"25.0.1\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"20.0.1\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"13.0.0\")\n",
" ]\n",
" \n",
"Runner.runAll {config with ResultsSuffix = \"sample_versions\"} versions"
]
} }
}, ],
"outputs": [], "metadata": {
"source": [ "kernelspec": {
"// Find two latest NuGet versions of FCS (including prereleases), run benchmarks and export results\n", "display_name": ".NET (C#)",
"NuGet.allVersionsMetadata.Value()\n", "language": "C#",
"|> List.take 10\n", "name": ".net-csharp"
"|> List.map (fun metadata -> FCSVersion.NuGet metadata.Identity.Version)\n",
"|> Runner.runAll {config with ResultsSuffix = \"10_latest_nuget_versions\"}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
}, },
"vscode": { "language_info": {
"languageId": "dotnet-interactive.fsharp" "file_extension": ".cs",
} "mimetype": "text/x-csharp",
}, "name": "C#",
"outputs": [], "pygments_lexer": "csharp",
"source": [ "version": "9.0"
"let versions =\n", },
" [\n", "orig_nbformat": 4
" FCSVersion.Local\n",
" FCSVersion.Git \"4edcbb45365f96d4858f438a556b93d4a32ae219\"\n",
" FCSVersion.NuGet (NuGet.findVersion \"41.0.5-preview.22329.3\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"41.0.5\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"40.0.0\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"35.0.0\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"30.0.0\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"25.0.1\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"20.0.1\")\n",
" FCSVersion.NuGet (NuGet.findVersion \"13.0.0\")\n",
" ]\n",
" \n",
"Runner.runAll {config with ResultsSuffix = \"sample_versions\"} versions"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".NET (C#)",
"language": "C#",
"name": ".net-csharp"
}, },
"language_info": { "nbformat": 4,
"file_extension": ".cs", "nbformat_minor": 2
"mimetype": "text/x-csharp",
"name": "C#",
"pygments_lexer": "csharp",
"version": "9.0"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
} }

Просмотреть файл

@ -1,166 +1,117 @@
{ {
"cells": [ "cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "pwsh"
},
"vscode": {
"languageId": "dotnet-interactive.pwsh"
}
},
"outputs": [],
"source": [
"#!pwsh\n",
"dotnet build -c release\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
},
"vscode": {
"languageId": "dotnet-interactive.fsharp"
}
},
"outputs": [],
"source": [
"#r \"../../../artifacts/bin/FSharp.Compiler.Benchmarks/Release/net7.0/FSharp.Compiler.Benchmarks.dll\"\n",
"#r \"../../../artifacts/bin/FSharp.Compiler.Benchmarks/Release/net7.0/BenchmarkDotNet.dll\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
},
"vscode": {
"languageId": "dotnet-interactive.fsharp"
}
},
"outputs": [],
"source": [
"open BenchmarkDotNet.Running\n",
"open FSharp.Compiler.Benchmarks\n",
"\n",
"let summary = BenchmarkRunner.Run<TypeCheckingBenchmark1>()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
},
"vscode": {
"languageId": "dotnet-interactive.fsharp"
}
},
"outputs": [
{ {
"data": { "cell_type": "code",
"text/html": [ "execution_count": null,
"<div><div></div><div></div><div></div></div>" "metadata": {
"dotnet_interactive": {
"language": "pwsh"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"#!pwsh\n",
"dotnet build -c release\n"
] ]
},
"metadata": {},
"output_type": "display_data"
}, },
{ {
"data": { "cell_type": "code",
"text/html": [ "execution_count": null,
"<!DOCTYPE html>\r\n", "metadata": {
"<div style=\"width: 900px; height: 500px;\" id=\"163f19ca-77b0-427f-9b32-cf9bb001d3da\"></div><script type=\"text/javascript\">\r\n", "dotnet_interactive": {
"\n", "language": "fsharp"
"var renderPlotly = function() {\n", },
" var xplotRequire = require.config({context:'xplot-3.0.1',paths:{plotly:'https://cdn.plot.ly/plotly-1.49.2.min'}}) || require;\n", "vscode": {
" xplotRequire(['plotly'], function(Plotly) { \r\n", "languageId": "polyglot-notebook"
"\n", }
" var data = [{\"type\":\"bar\",\"y\":[15],\"name\":\"Gen 0\"},{\"type\":\"bar\",\"y\":[8],\"name\":\"Gen 1\"},{\"type\":\"bar\",\"y\":[5],\"name\":\"Gen 2\"}];\n", },
" var layout = {\"title\":\"F# Type-Checking Benchmark 1 - GC Collection Counts\"};\n", "outputs": [],
" Plotly.newPlot('163f19ca-77b0-427f-9b32-cf9bb001d3da', data, layout);\n", "source": [
" \r\n", "#r \"../../../artifacts/bin/FSharp.Compiler.Benchmarks/Release/net7.0/FSharp.Compiler.Benchmarks.dll\"\n",
"});\n", "#r \"../../../artifacts/bin/FSharp.Compiler.Benchmarks/Release/net7.0/BenchmarkDotNet.dll\""
"};\r\n", ]
"// ensure `require` is available globally\r\n", },
"if ((typeof(require) !== typeof(Function)) || (typeof(require.config) !== typeof(Function))) {\r\n", {
" let require_script = document.createElement('script');\r\n", "cell_type": "code",
" require_script.setAttribute('src', 'https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js');\r\n", "execution_count": null,
" require_script.setAttribute('type', 'text/javascript');\r\n", "metadata": {
" \r\n", "dotnet_interactive": {
" \r\n", "language": "fsharp"
" require_script.onload = function() {\r\n", },
" renderPlotly();\r\n", "vscode": {
" };\r\n", "languageId": "polyglot-notebook"
"\r\n", }
" document.getElementsByTagName('head')[0].appendChild(require_script);\r\n", },
"}\r\n", "outputs": [],
"else {\r\n", "source": [
" renderPlotly();\r\n", "open BenchmarkDotNet.Running\n",
"}\r\n", "open FSharp.Compiler.Benchmarks\n",
"\r\n", "\n",
"</script>\r\n" "let summary = BenchmarkRunner.Run<TypeCheckingBenchmark1>()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "fsharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"// https://benchmarkdotnet.org/api/BenchmarkDotNet.Reports.BenchmarkReport.html\n",
"#r \"nuget: XPlot.Plotly.Interactive, 4.0.2\"\n",
"\n",
"open XPlot.Plotly\n",
"\n",
"let gcStats = summary.Reports |> Seq.map (fun x -> x.GcStats)\n",
"\n",
"let gen0Series =\n",
" Bar(\n",
" name = \"Gen 0\",\n",
" y = (gcStats |> Seq.map (fun x -> x.Gen0Collections))\n",
" )\n",
"\n",
"let gen1Series =\n",
" Bar(\n",
" name = \"Gen 1\",\n",
" y = (gcStats |> Seq.map (fun x -> x.Gen1Collections))\n",
" )\n",
"\n",
"let gen2Series =\n",
" Bar(\n",
" name = \"Gen 2\",\n",
" y = (gcStats |> Seq.map (fun x -> x.Gen2Collections))\n",
" )\n",
"\n",
"[gen0Series;gen1Series;gen2Series]\n",
"|> Chart.Plot\n",
"|> Chart.WithTitle(\"F# Type-Checking Benchmark 1 - GC Collection Counts\")"
] ]
},
"metadata": {},
"output_type": "display_data"
} }
], ],
"source": [ "metadata": {
"// https://benchmarkdotnet.org/api/BenchmarkDotNet.Reports.BenchmarkReport.html\n", "kernelspec": {
"#r \"nuget: XPlot.Plotly.Interactive, 4.0.2\"\n", "display_name": ".NET (C#)",
"\n", "language": "C#",
"open XPlot.Plotly\n", "name": ".net-csharp"
"\n", },
"let gcStats = summary.Reports |> Seq.map (fun x -> x.GcStats)\n", "language_info": {
"\n", "file_extension": ".cs",
"let gen0Series =\n", "mimetype": "text/x-csharp",
" Bar(\n", "name": "C#",
" name = \"Gen 0\",\n", "pygments_lexer": "csharp",
" y = (gcStats |> Seq.map (fun x -> x.Gen0Collections))\n", "version": "9.0"
" )\n", },
"\n", "orig_nbformat": 4
"let gen1Series =\n",
" Bar(\n",
" name = \"Gen 1\",\n",
" y = (gcStats |> Seq.map (fun x -> x.Gen1Collections))\n",
" )\n",
"\n",
"let gen2Series =\n",
" Bar(\n",
" name = \"Gen 2\",\n",
" y = (gcStats |> Seq.map (fun x -> x.Gen2Collections))\n",
" )\n",
"\n",
"[gen0Series;gen1Series;gen2Series]\n",
"|> Chart.Plot\n",
"|> Chart.WithTitle(\"F# Type-Checking Benchmark 1 - GC Collection Counts\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".NET (C#)",
"language": "C#",
"name": ".net-csharp"
}, },
"language_info": { "nbformat": 4,
"file_extension": ".cs", "nbformat_minor": 2
"mimetype": "text/x-csharp",
"name": "C#",
"pygments_lexer": "csharp",
"version": "9.0"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
} }

Просмотреть файл

@ -38,18 +38,16 @@ Display return type hints (preview);
Display inline parameter name hints (preview); Display inline parameter name hints (preview);
Live Buffers; Live Buffers;
Use live (unsaved) buffers for checking</source> Use live (unsaved) buffers for checking</source>
<target state="needs-review-translation">Vodítka struktury bloků; <target state="new">Block Structure Guides;
Show structure guidelines for F# code;
Zobrazit pokyny pro strukturu kódu F#; Outlining;
Osnova; Show outlining and collapsible nodes for F# code;
Zobrazit sbalitelné a sbalitelné uzly pro kód F#; Inline hints;
Vložené tipy; Display inline type hints (preview);
Zobrazovat pomocné parametry vloženého typu (Preview); Display return type hints (preview);
Zobrazit pomocné parametry návratového typu (Preview); Display inline parameter name hints (preview);
Zobrazit vložené nápovědy k názvům parametrů (Preview); Pivo; Live Buffers;
Use live (unsaved) buffers for checking</target>
Živé vyrovnávací paměti;
Pro kontrolu použijte živé (neuložené) vyrovnávací paměti.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="CodeFixesPageKeywords"> <trans-unit id="CodeFixesPageKeywords">

Просмотреть файл

@ -38,16 +38,16 @@ Display return type hints (preview);
Display inline parameter name hints (preview); Display inline parameter name hints (preview);
Live Buffers; Live Buffers;
Use live (unsaved) buffers for checking</source> Use live (unsaved) buffers for checking</source>
<target state="needs-review-translation">Guías de estructura de bloques; <target state="new">Block Structure Guides;
Mostrar guías de estructura para código F#; Show structure guidelines for F# code;
Esquema; Outlining;
Mostrar contorno y nodos colapsables para código F#; Show outlining and collapsible nodes for F# code;
Sugerencias inline; Inline hints;
Mostrar sugerencias de tipo en línea (vista previa); Display inline type hints (preview);
Mostrar sugerencias de tipo retorno (vista previa); Display return type hints (preview);
Mostrar sugerencias de nombres de parámetros en línea (vista previa); Beer; Display inline parameter name hints (preview);
Búferes activos; Live Buffers;
Usar buffers vivos (no guardados) para comprobar</target> Use live (unsaved) buffers for checking</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="CodeFixesPageKeywords"> <trans-unit id="CodeFixesPageKeywords">

Просмотреть файл

@ -38,16 +38,16 @@ Display return type hints (preview);
Display inline parameter name hints (preview); Display inline parameter name hints (preview);
Live Buffers; Live Buffers;
Use live (unsaved) buffers for checking</source> Use live (unsaved) buffers for checking</source>
<target state="needs-review-translation">ブロック構造ガイド; <target state="new">Block Structure Guides;
F# コードの構造ガイドラインを表示します。 Show structure guidelines for F# code;
アウトライン; Outlining;
F# コードのアウトラインと折りたたみ可能なノードを表示します。 Show outlining and collapsible nodes for F# code;
インライン ヒント; Inline hints;
インライン型のヒントを表示する (プレビュー); Display inline type hints (preview);
戻り値型のヒントを表示する (プレビュー); Display return type hints (preview);
インライン パラメーター名のヒントを表示する (プレビュー);ビール; Display inline parameter name hints (preview);
ライブ バッファー; Live Buffers;
ライブ (未保存) バッファーをチェックに使用する</target> Use live (unsaved) buffers for checking</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="CodeFixesPageKeywords"> <trans-unit id="CodeFixesPageKeywords">

Просмотреть файл

@ -38,16 +38,16 @@ Display return type hints (preview);
Display inline parameter name hints (preview); Display inline parameter name hints (preview);
Live Buffers; Live Buffers;
Use live (unsaved) buffers for checking</source> Use live (unsaved) buffers for checking</source>
<target state="needs-review-translation">Guias de Estrutura de Bloco; <target state="new">Block Structure Guides;
Mostrar diretrizes de estrutura para código F#; Show structure guidelines for F# code;
Estrutura de tópicos; Outlining;
Mostrar nós de estrutura de tópicos e recolhíveis para código F#; Show outlining and collapsible nodes for F# code;
Dicas embutidas; Inline hints;
Exibir dicas de tipo embutido (versão prévia); Display inline type hints (preview);
Exibir dicas de tipo de retorno (versão prévia); Display return type hints (preview);
Exibir dicas de nome de parâmetro embutido (versão prévia);Cerveja; Display inline parameter name hints (preview);
Buffers Dinâmicos; Live Buffers;
Usar buffers dinâmicos (não salvos) para verificação</target> Use live (unsaved) buffers for checking</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="CodeFixesPageKeywords"> <trans-unit id="CodeFixesPageKeywords">

Просмотреть файл

@ -38,16 +38,16 @@ Display return type hints (preview);
Display inline parameter name hints (preview); Display inline parameter name hints (preview);
Live Buffers; Live Buffers;
Use live (unsaved) buffers for checking</source> Use live (unsaved) buffers for checking</source>
<target state="needs-review-translation">Руководства по блочной структуре; <target state="new">Block Structure Guides;
Показать рекомендации по структуре для кода F#; Show structure guidelines for F# code;
Структурирование; Outlining;
Показать структурные и сворачиваемые узлы для кода F#; Show outlining and collapsible nodes for F# code;
Встроенные подсказки; Inline hints;
Отображение подсказок встроенного типа (предварительная версия); Display inline type hints (preview);
Отображение подсказок типа возвращаемого значения (предварительная версия); Display return type hints (preview);
Отображение встроенных подсказок имени параметра (предварительная версия);пиво; Display inline parameter name hints (preview);
Динамические буферы; Live Buffers;
Использовать динамические (несохраненные) буферы для проверки</target> Use live (unsaved) buffers for checking</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="CodeFixesPageKeywords"> <trans-unit id="CodeFixesPageKeywords">

Просмотреть файл

@ -38,16 +38,16 @@ Display return type hints (preview);
Display inline parameter name hints (preview); Display inline parameter name hints (preview);
Live Buffers; Live Buffers;
Use live (unsaved) buffers for checking</source> Use live (unsaved) buffers for checking</source>
<target state="needs-review-translation">块结构指南; <target state="new">Block Structure Guides;
显示 F# 代码的结构指南; Show structure guidelines for F# code;
大纲; Outlining;
显示 F# 代码的大纲和可折叠节点; Show outlining and collapsible nodes for F# code;
内联提示; Inline hints;
显示内联类型提示(预览); Display inline type hints (preview);
显示返回类型提示(预览); Display return type hints (preview);
显示内联参数名称提示(预览);啤酒; Display inline parameter name hints (preview);
实时缓冲区; Live Buffers;
使用实时(未保存)缓冲区进行检查</target> Use live (unsaved) buffers for checking</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="CodeFixesPageKeywords"> <trans-unit id="CodeFixesPageKeywords">

Просмотреть файл

@ -114,7 +114,7 @@
</trans-unit> </trans-unit>
<trans-unit id="Show_Return_Type_Hints"> <trans-unit id="Show_Return_Type_Hints">
<source>Display return type hints (preview)</source> <source>Display return type hints (preview)</source>
<target state="new">Display return type hints (preview)</target> <target state="translated">Hinweise zum Rückgabetyp anzeigen (Vorschau)</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="Show_all_symbols"> <trans-unit id="Show_all_symbols">

Просмотреть файл

@ -114,7 +114,7 @@
</trans-unit> </trans-unit>
<trans-unit id="Show_Return_Type_Hints"> <trans-unit id="Show_Return_Type_Hints">
<source>Display return type hints (preview)</source> <source>Display return type hints (preview)</source>
<target state="new">Display return type hints (preview)</target> <target state="translated">Afficher les conseils de type de retour en ligne (préversion)</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="Show_all_symbols"> <trans-unit id="Show_all_symbols">

Просмотреть файл

@ -114,7 +114,7 @@
</trans-unit> </trans-unit>
<trans-unit id="Show_Return_Type_Hints"> <trans-unit id="Show_Return_Type_Hints">
<source>Display return type hints (preview)</source> <source>Display return type hints (preview)</source>
<target state="new">Display return type hints (preview)</target> <target state="translated">Visualizza suggerimenti di tipo restituito (anteprima)</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="Show_all_symbols"> <trans-unit id="Show_all_symbols">

Просмотреть файл

@ -114,7 +114,7 @@
</trans-unit> </trans-unit>
<trans-unit id="Show_Return_Type_Hints"> <trans-unit id="Show_Return_Type_Hints">
<source>Display return type hints (preview)</source> <source>Display return type hints (preview)</source>
<target state="new">Display return type hints (preview)</target> <target state="translated">반환 형식 힌트 표시(미리 보기)</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="Show_all_symbols"> <trans-unit id="Show_all_symbols">

Просмотреть файл

@ -114,7 +114,7 @@
</trans-unit> </trans-unit>
<trans-unit id="Show_Return_Type_Hints"> <trans-unit id="Show_Return_Type_Hints">
<source>Display return type hints (preview)</source> <source>Display return type hints (preview)</source>
<target state="new">Display return type hints (preview)</target> <target state="translated">Wyświetlaj wskazówki dotyczące typu zwrotu (wersja zapoznawcza)</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="Show_all_symbols"> <trans-unit id="Show_all_symbols">

Просмотреть файл

@ -114,7 +114,7 @@
</trans-unit> </trans-unit>
<trans-unit id="Show_Return_Type_Hints"> <trans-unit id="Show_Return_Type_Hints">
<source>Display return type hints (preview)</source> <source>Display return type hints (preview)</source>
<target state="new">Display return type hints (preview)</target> <target state="translated">Dönüş türü ipuçlarını görüntüle (önizleme)</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="Show_all_symbols"> <trans-unit id="Show_all_symbols">

Просмотреть файл

@ -114,7 +114,7 @@
</trans-unit> </trans-unit>
<trans-unit id="Show_Return_Type_Hints"> <trans-unit id="Show_Return_Type_Hints">
<source>Display return type hints (preview)</source> <source>Display return type hints (preview)</source>
<target state="new">Display return type hints (preview)</target> <target state="translated">顯示傳回類型提示 (預覽)</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="Show_all_symbols"> <trans-unit id="Show_all_symbols">

Просмотреть файл

@ -58,6 +58,7 @@
<PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> <PackageReference Include="Microsoft.VisualStudio.Interop" Version="$(MicrosoftVisualStudioInteropVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
<PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> <PackageReference Include="Microsoft.Composition" Version="$(MicrosoftCompositionVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
<PackageReference Include="System.ComponentModel.Composition" Version="$(SystemComponentModelCompositionVersion)" /> <PackageReference Include="System.ComponentModel.Composition" Version="$(SystemComponentModelCompositionVersion)" />
<PackageReference Include="System.Composition" Version="$(SystemCompositionVersion)" />
<PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> <PackageReference Include="Microsoft.VisualStudio.ComponentModelHost" Version="$(MicrosoftVisualStudioComponentModelHostVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
<PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> <PackageReference Include="Microsoft.VisualStudio.Editor" Version="$(MicrosoftVisualStudioEditorVersion)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />
<PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" /> <PackageReference Include="Microsoft.VisualStudio.Package.LanguageService.15.0" Version="$(MicrosoftVisualStudioPackageLanguageService150Version)" PrivateAssets="all" ExcludeAssets="runtime;contentFiles;build;analyzers;native" />