From df87d738e5dc3696bfacabed1b34b710cff849cf Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Sat, 17 Oct 2020 13:30:14 +0200 Subject: [PATCH] [master] Update dependencies from dotnet/arcade dotnet/xharness dotnet/llvm-project dotnet/icu mono/linker (#43355) Co-authored-by: dotnet-maestro[bot] Co-authored-by: Viktor Hofer Co-authored-by: Jeremy Koritzinsky Co-authored-by: Marek Safar --- eng/Version.Details.xml | 104 +++--- eng/Versions.props | 50 +-- .../post-build/sourcelink-validation.ps1 | 15 +- .../templates/post-build/post-build.yml | 306 +++++++++--------- global.json | 10 +- .../UnmanagedCallersOnly/InvalidCallbacks.il | 92 +++++- .../UnmanagedCallersOnlyTest.cs | 19 +- 7 files changed, 347 insertions(+), 249 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 47be5cc9b3c..9ee584e737d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -4,67 +4,67 @@ https://github.com/dotnet/standard cfe95a23647c7de1fe1a349343115bd7720d6949 - + https://github.com/dotnet/icu - 0b965227ab9c360bdd700c101c0d771846a1ca0a + 79fe4952def79fbf76a07a8ee7c0a43798ab5699 - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d - + https://github.com/dotnet/arcade - ee39cd1573dbb8011f343e1037af51d4fc00a747 + d3cea00bba6539c68436ac9b3d9665318d76b47d https://dev.azure.com/dnceng/internal/_git/dotnet-optimization @@ -126,37 +126,37 @@ https://github.com/dotnet/runtime-assets ed9af8227ff01d9ab010cab1f32f0f362b81cb1f - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 - + https://github.com/dotnet/llvm-project - 98467d795ced4b00d9cb890b9fabeb52fe373798 + 57e96f31cf9115bd0ae2f5318338984abd2bbd88 https://github.com/dotnet/runtime @@ -186,17 +186,17 @@ https://github.com/dotnet/runtime 38017c3935de95d0335bac04f4901ddfc2718656 - + https://github.com/mono/linker - 24c3616ee88623bea1e068605eba15009a8a3043 + 388d3905692d220e758f2f76987bf41aa8a8bb85 - + https://github.com/dotnet/xharness - 8961af0d9f363a4023bc180eea7619f773e0d6e2 + 653143a33490a41e52d366669515dc8bb158db8b - + https://github.com/dotnet/xharness - 8961af0d9f363a4023bc180eea7619f773e0d6e2 + 653143a33490a41e52d366669515dc8bb158db8b diff --git a/eng/Versions.props b/eng/Versions.props index 1a3373ee672..fba8cc2613e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -50,19 +50,19 @@ - - 6.0.0-preview1.20513.4 + 6.0.0-preview1.20513.4 3.8.0-4.20503.2 - 5.0.0-beta.20506.7 - 5.0.0-beta.20506.7 - 5.0.0-beta.20506.7 - 5.0.0-beta.20506.7 - 5.0.0-beta.20506.7 - 5.0.0-beta.20506.7 - 2.5.1-beta.20506.7 - 5.0.0-beta.20506.7 - 5.0.0-beta.20506.7 - 5.0.0-beta.20506.7 + + 6.0.0-beta.20514.1 + 6.0.0-beta.20514.1 + 6.0.0-beta.20514.1 + 6.0.0-beta.20514.1 + 6.0.0-beta.20514.1 + 6.0.0-beta.20514.1 + 2.5.1-beta.20514.1 + 6.0.0-beta.20514.1 + 6.0.0-beta.20514.1 + 6.0.0-beta.20514.1 5.0.0-rc.1.20451.14 6.0.0-alpha.1.20501.4 @@ -71,7 +71,7 @@ 5.0.0-preview.8.20359.4 - 1.2.0-beta.205 + 1.2.0-beta.205 4.5.1 4.3.0 4.3.0 @@ -137,8 +137,8 @@ 4.9.4 16.8.0-release-20201009-01 - 1.0.0-prerelease.20512.5 - 1.0.0-prerelease.20512.5 + 1.0.0-prerelease.20516.1 + 1.0.0-prerelease.20516.1 2.4.1 2.4.2 1.3.0 @@ -149,18 +149,18 @@ 5.0.0-preview-20201009.2 - 6.0.0-alpha.1.20512.2 + 6.0.0-alpha.1.20516.1 - 6.0.0-alpha.1.20506.2 + 6.0.0-alpha.1.20512.1 - 9.0.1-alpha.1.20506.1 - 9.0.1-alpha.1.20506.1 - 9.0.1-alpha.1.20506.1 - 9.0.1-alpha.1.20506.1 - 9.0.1-alpha.1.20506.1 - 9.0.1-alpha.1.20506.1 - 9.0.1-alpha.1.20506.1 - 9.0.1-alpha.1.20506.1 + 9.0.1-alpha.1.20512.1 + 9.0.1-alpha.1.20512.1 + 9.0.1-alpha.1.20512.1 + 9.0.1-alpha.1.20512.1 + 9.0.1-alpha.1.20512.1 + 9.0.1-alpha.1.20512.1 + 9.0.1-alpha.1.20512.1 + 9.0.1-alpha.1.20512.1 diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1 index c7e7ae67d81..1728b742b3b 100644 --- a/eng/common/post-build/sourcelink-validation.ps1 +++ b/eng/common/post-build/sourcelink-validation.ps1 @@ -161,9 +161,12 @@ $ValidatePackage = { function CheckJobResult( $result, $packagePath, - [ref]$ValidationFailures) { - if ($jobResult.result -ne '0') { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links." + [ref]$ValidationFailures, + [switch]$logErrors) { + if ($result -ne '0') { + if ($logError) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links." + } $ValidationFailures.Value++ } } @@ -228,16 +231,14 @@ function ValidateSourceLinkLinks { foreach ($Job in @(Get-Job -State 'Completed')) { $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors Remove-Job -Id $Job.Id } } foreach ($Job in @(Get-Job)) { $jobResult = Wait-Job -Id $Job.Id | Receive-Job - if ($jobResult -ne '0') { - $ValidationFailures++ - } + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) Remove-Job -Id $Job.Id } if ($ValidationFailures -gt 0) { diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 0854e489615..761fb1a29c3 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -67,176 +67,180 @@ parameters: VSMasterChannelId: 1012 stages: -- stage: Validate - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Validate Build Assets - variables: - - template: common-variables.yml - jobs: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} +- ${{ if or(and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')), eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + - stage: Validate + dependsOn: ${{ parameters.validateDependsOn }} + displayName: Validate Build Assets + variables: + - template: common-variables.yml + jobs: + - template: setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + + - ${{ if and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')) }}: + - job: + displayName: Post-build Checks + dependsOn: setupMaestroVars + variables: + - name: TargetChannels + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'] ] + pool: + vmImage: 'windows-2019' + steps: + - task: PowerShell@2 + displayName: Maestro Channels Consistency + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/check-channel-consistency.ps1 + arguments: -PromoteToChannels "$(TargetChannels)" + -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetDev5ChannelId}},${{parameters.NetDev6ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.Net5Preview8ChannelId}},${{parameters.Net5RC1ChannelId}},${{parameters.Net5RC2ChannelId}},${{parameters.NetCoreSDK313xxChannelId}},${{parameters.NetCoreSDK313xxInternalChannelId}},${{parameters.NetCoreSDK314xxChannelId}},${{parameters.NetCoreSDK314xxInternalChannelId}},${{parameters.VS166ChannelId}},${{parameters.VS167ChannelId}},${{parameters.VS168ChannelId}},${{parameters.VSMasterChannelId}} - - ${{ if and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')) }}: - job: - displayName: Post-build Checks + displayName: NuGet Validation dependsOn: setupMaestroVars - variables: - - name: TargetChannels - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'] ] + condition: eq( ${{ parameters.enableNugetValidation }}, 'true') pool: vmImage: 'windows-2019' + variables: + - name: AzDOProjectName + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ] + - name: AzDOPipelineId + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ] + - name: AzDOBuildId + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ] steps: + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + - task: PowerShell@2 - displayName: Maestro Channels Consistency + displayName: Validate inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/check-channel-consistency.ps1 - arguments: -PromoteToChannels "$(TargetChannels)" - -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetDev5ChannelId}},${{parameters.NetDev6ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.Net5Preview8ChannelId}},${{parameters.Net5RC1ChannelId}},${{parameters.Net5RC2ChannelId}},${{parameters.NetCoreSDK313xxChannelId}},${{parameters.NetCoreSDK313xxInternalChannelId}},${{parameters.NetCoreSDK314xxChannelId}},${{parameters.NetCoreSDK314xxInternalChannelId}},${{parameters.VS166ChannelId}},${{parameters.VS167ChannelId}},${{parameters.VS168ChannelId}},${{parameters.VSMasterChannelId}} - - - job: - displayName: NuGet Validation - dependsOn: setupMaestroVars - condition: eq( ${{ parameters.enableNugetValidation }}, 'true') - pool: - vmImage: 'windows-2019' - variables: - - name: AzDOProjectName - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ] - - name: AzDOPipelineId - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ] - - name: AzDOBuildId - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ] - steps: - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1 - arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ - -ToolDestinationPath $(Agent.BuildDirectory)/Extract/ - - - job: - displayName: Signing Validation - dependsOn: setupMaestroVars - condition: eq( ${{ parameters.enableSigningValidation }}, 'true') - variables: - - template: common-variables.yml - - name: AzDOProjectName - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ] - - name: AzDOPipelineId - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ] - - name: AzDOBuildId - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ] - pool: - vmImage: 'windows-2019' - steps: - - ${{ if eq(parameters.useBuildManifest, true) }}: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1 + arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ + -ToolDestinationPath $(Agent.BuildDirectory)/Extract/ + + - job: + displayName: Signing Validation + dependsOn: setupMaestroVars + condition: eq( ${{ parameters.enableSigningValidation }}, 'true') + variables: + - template: common-variables.yml + - name: AzDOProjectName + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ] + - name: AzDOPipelineId + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ] + - name: AzDOBuildId + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ] + pool: + vmImage: 'windows-2019' + steps: + - ${{ if eq(parameters.useBuildManifest, true) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download build manifest + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: BuildManifests - task: DownloadBuildArtifacts@0 - displayName: Download build manifest + displayName: Download Package Artifacts inputs: buildType: specific buildVersionToDownload: specific project: $(AzDOProjectName) pipeline: $(AzDOPipelineId) buildId: $(AzDOBuildId) - artifactName: BuildManifests - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - - # This is necessary whenever we want to publish/restore to an AzDO private feed - # Since sdk-task.ps1 tries to restore packages we need to do this authentication here - # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@0 - 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 - # Azure DevOps above. - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task SigningValidation -restore -msbuildEngine vs - /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' - /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt' - ${{ parameters.signingValidationAdditionalParameters }} - - - template: ../steps/publish-logs.yml - parameters: - StageLabel: 'Validation' - JobLabel: 'Signing' - - - job: - displayName: SourceLink Validation - dependsOn: setupMaestroVars - condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') - variables: - - template: common-variables.yml - - name: AzDOProjectName - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ] - - name: AzDOPipelineId - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ] - - name: AzDOBuildId - value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ] - pool: - vmImage: 'windows-2019' - steps: - - task: DownloadBuildArtifacts@0 - displayName: Download Blob Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: BlobArtifacts - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1 - arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ - -ExtractPath $(Agent.BuildDirectory)/Extract/ - -GHRepoName $(Build.Repository.Name) - -GHCommit $(Build.SourceVersion) - -SourcelinkCliVersion $(SourceLinkCLIVersion) - continueOnError: true - - - template: /eng/common/templates/job/execute-sdl.yml - parameters: - enable: ${{ parameters.SDLValidationParameters.enable }} + artifactName: PackageArtifacts + + # This is necessary whenever we want to publish/restore to an AzDO private feed + # Since sdk-task.ps1 tries to restore packages we need to do this authentication here + # otherwise it'll complain about accessing a private feed. + - task: NuGetAuthenticate@0 + 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 + # Azure DevOps above. + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task SigningValidation -restore -msbuildEngine vs + /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' + /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt' + ${{ parameters.signingValidationAdditionalParameters }} + + - template: ../steps/publish-logs.yml + parameters: + StageLabel: 'Validation' + JobLabel: 'Signing' + + - job: + displayName: SourceLink Validation dependsOn: setupMaestroVars - additionalParameters: ${{ parameters.SDLValidationParameters.params }} - continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }} - artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }} - downloadArtifacts: ${{ parameters.SDLValidationParameters.downloadArtifacts }} + condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') + variables: + - template: common-variables.yml + - name: AzDOProjectName + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ] + - name: AzDOPipelineId + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ] + - name: AzDOBuildId + value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ] + pool: + vmImage: 'windows-2019' + steps: + - task: DownloadBuildArtifacts@0 + displayName: Download Blob Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: BlobArtifacts + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1 + arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ + -ExtractPath $(Agent.BuildDirectory)/Extract/ + -GHRepoName $(Build.Repository.Name) + -GHCommit $(Build.SourceVersion) + -SourcelinkCliVersion $(SourceLinkCLIVersion) + continueOnError: true + + - template: /eng/common/templates/job/execute-sdl.yml + parameters: + enable: ${{ parameters.SDLValidationParameters.enable }} + dependsOn: setupMaestroVars + additionalParameters: ${{ parameters.SDLValidationParameters.params }} + continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }} + artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }} + downloadArtifacts: ${{ parameters.SDLValidationParameters.downloadArtifacts }} - ${{ if or(ge(parameters.publishingInfraVersion, 3), eq(parameters.inline, 'false')) }}: - stage: publish_using_darc - dependsOn: Validate + ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + dependsOn: Validate + ${{ if and(ne(parameters.enableNugetValidation, 'true'), ne(parameters.enableSigningValidation, 'true'), ne(parameters.enableSourceLinkValidation, 'true'), ne(parameters.SDLValidationParameters.enable, 'true')) }}: + dependsOn: ${{ parameters.validateDependsOn }} displayName: Publish using Darc variables: - template: common-variables.yml diff --git a/global.json b/global.json index 6692397bbcc..75c15a7544e 100644 --- a/global.json +++ b/global.json @@ -5,17 +5,17 @@ "rollForward": "major" }, "tools": { - "dotnet": "5.0.100-rc.1.20454.5" + "dotnet": "5.0.100-rc.2.20479.15" }, "native-tools": { "cmake": "3.14.5", "python3": "3.7.1" }, "msbuild-sdks": { - "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.20508.4", - "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20506.7", - "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "5.0.0-beta.20506.7", - "Microsoft.DotNet.Helix.Sdk": "5.0.0-beta.20506.7", + "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.20514.1", + "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.20514.1", + "Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk": "6.0.0-beta.20514.1", + "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.20514.1", "Microsoft.FIX-85B6-MERGE-9C38-CONFLICT": "1.0.0", "Microsoft.NET.Sdk.IL": "5.0.0-preview.8.20359.4", "Microsoft.Build.NoTargets": "2.0.1", diff --git a/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il b/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il index bd391367f52..9eac36900a7 100644 --- a/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il +++ b/src/tests/Interop/UnmanagedCallersOnly/InvalidCallbacks.il @@ -7,7 +7,7 @@ .assembly InvalidCSharp { } .class public auto ansi beforefieldinit InvalidCSharp.GenericClass`1 - extends System.Object + extends [System.Runtime]System.Object { .method public hidebysig static void CallbackMethod ( @@ -73,3 +73,93 @@ IL_0006: ret } } + +.class public auto ansi beforefieldinit InvalidCSharp.CallingUnmanagedCallersOnlyDirectly + extends [System.Runtime]System.Object +{ + .method public hidebysig specialname rtspecialname + instance void .ctor () cil managed + { + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [System.Runtime]System.Object::.ctor() + IL_0006: ret + } + + .method public hidebysig static + int32 ManagedDoubleCallback ( + int32 n + ) cil managed + { + .custom instance void [System.Runtime.InteropServices]System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute::.ctor() = ( + 01 00 00 00 + ) + .maxstack 1 + .locals init ( + [0] int32 + ) + + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: call int32 InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::DoubleImpl(int32) + IL_0007: stloc.0 + IL_0008: br.s IL_000a + + IL_000a: ldloc.0 + IL_000b: ret + } + + .method private hidebysig static + int32 DoubleImpl ( + int32 n + ) cil managed + { + .maxstack 2 + .locals init ( + [0] int32 + ) + + IL_0000: nop + IL_0001: ldc.i4.2 + IL_0002: ldarg.0 + IL_0003: mul + IL_0004: stloc.0 + IL_0005: br.s IL_0007 + + IL_0007: ldloc.0 + IL_0008: ret + } + + .method public hidebysig static + class [System.Runtime]System.Func`2 GetDoubleDelegate () cil managed + { + .maxstack 8 + + IL_0000: ldnull + IL_0001: ldftn int32 InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::ManagedDoubleCallback(int32) + IL_0007: newobj instance void class [System.Runtime]System.Func`2::.ctor(object, native int) + IL_000c: ret + } + + .method public hidebysig static pinvokeimpl("UnmanagedCallersOnlyDll" as "DoesntExist" winapi) + int32 PInvokeMarkedWithUnmanagedCallersOnly ( + int32 n + ) cil managed preservesig + { + .custom instance void [System.Runtime.InteropServices]System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute::.ctor() = ( + 01 00 00 00 + ) + } + + .method public hidebysig static + int32 CallPInvokeMarkedWithUnmanagedCallersOnly ( + int32 n + ) cil managed + { + .maxstack 1 + + ldarg.0 + call int32 InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::PInvokeMarkedWithUnmanagedCallersOnly(int32) + ret + } +} \ No newline at end of file diff --git a/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs b/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs index 0a2b5307da3..1ebe513e456 100644 --- a/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs +++ b/src/tests/Interop/UnmanagedCallersOnly/UnmanagedCallersOnlyTest.cs @@ -29,10 +29,6 @@ public static class UnmanagedCallersOnlyDll [DllImport(nameof(UnmanagedCallersOnlyDll))] // Returns -1 if exception was throw and caught. public static extern int CallManagedProcCatchException(IntPtr callbackProc, int n); - - [UnmanagedCallersOnly] - [DllImport(nameof(UnmanagedCallersOnlyDll), EntryPoint = "DoesntExist")] - public static extern int PInvokeMarkedWithUnmanagedCallersOnly(int n); } private const string InvalidCSharpAssemblyName = "InvalidCSharp"; @@ -49,6 +45,12 @@ public static Type GetGenericClassOfIntType() return asm.GetType("InvalidCSharp.GenericClass`1").MakeGenericType(typeof(int)); } + public static Type GetCallingUnmanagedCallersOnlyDirectlyType() + { + var asm = Assembly.Load(InvalidCSharpAssemblyName); + return asm.GetType("InvalidCSharp.CallingUnmanagedCallersOnlyDirectly"); + } + private delegate int IntNativeMethodInvoker(); private delegate void NativeMethodInvoker(); @@ -347,7 +349,7 @@ public static void NegativeTest_ViaDelegate() // Local function to delay exception thrown during JIT void CallAsDelegate() { - Func invoker = ManagedDoubleCallback; + Func invoker = (Func)GetCallingUnmanagedCallersOnlyDirectlyType().GetMethod("GetDoubleDelegate").Invoke(null, BindingFlags.DoNotWrapExceptions, null, null, null); invoker(0); } } @@ -716,10 +718,11 @@ public static void TestPInvokeMarkedWithUnmanagedCallersOnly() Console.WriteLine($"Running {nameof(TestPInvokeMarkedWithUnmanagedCallersOnly)}..."); // Call P/Invoke directly - Assert.Throws(() => UnmanagedCallersOnlyDll.PInvokeMarkedWithUnmanagedCallersOnly(0)); + var pInvokeWrapperMethod = GetCallingUnmanagedCallersOnlyDirectlyType().GetMethod("CallPInvokeMarkedWithUnmanagedCallersOnly"); + Assert.Throws(() => pInvokeWrapperMethod.Invoke(null, BindingFlags.DoNotWrapExceptions, null, new[] { (object)0 }, null)); // Call P/Invoke via reflection - var method = typeof(UnmanagedCallersOnlyDll).GetMethod(nameof(UnmanagedCallersOnlyDll.PInvokeMarkedWithUnmanagedCallersOnly)); + var method = GetCallingUnmanagedCallersOnlyDirectlyType().GetMethod("PInvokeMarkedWithUnmanagedCallersOnly"); Assert.Throws(() => method.Invoke(null, BindingFlags.DoNotWrapExceptions, null, new[] { (object)0 }, null)); // Call P/Invoke as a function pointer @@ -728,7 +731,7 @@ void TestPInvokeMarkedWithUnmanagedCallersOnly_Throws() { .locals init (native int V_0) IL_0000: nop - IL_0001: ldftn int UnmanagedCallersOnlyDll.PInvokeMarkedWithUnmanagedCallersOnly(int32) + IL_0001: ldftn int InvalidCSharp.CallingUnmanagedCallersOnlyDirectly::PInvokeMarkedWithUnmanagedCallersOnly(int32) IL_0007: stloc.0 IL_0008: ldc.i4 1234 -- GitLab