提交 af018f8b 编写于 作者: D Don Syme

Merge branch 'master' of http://github.com/Microsoft/visualfsharp into anon-1

phases:
- phase: Linux
queue:
name: Hosted Linux Preview
timeoutInMinutes: 90
parallel: 2
jobs:
- job: Linux
pool:
vmImage: ubuntu-16.04
timeoutInMinutes: 90
strategy:
maxParallel: 2
matrix:
release_default:
_command: ./mono/cibuild.sh
......@@ -13,20 +14,21 @@ phases:
# _command: ./fcs/build.sh
# _args: Build
steps:
- script: $(_command) $(_args)
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/tests/TestResults'
ArtifactName: 'Linux $(_command) $(_args)'
publishLocation: Container
continueOnError: true
condition: failed()
- script: $(_command) $(_args)
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/tests/TestResults'
ArtifactName: 'Linux $(_command) $(_args)'
publishLocation: Container
continueOnError: true
condition: failed()
- phase: Windows
queue:
name: Hosted VS2017
timeoutInMinutes: 90
parallel: 7
- job: Windows
pool:
vmImage: vs2017-win2016
timeoutInMinutes: 90
strategy:
maxParallel: 7
matrix:
ci_part1:
_command: build.cmd
......@@ -50,11 +52,11 @@ phases:
_command: fcs\build.cmd
_args: TestAndNuget
steps:
- script: $(_command) $(_args)
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.SourcesDirectory)\tests\TestResults'
ArtifactName: 'Windows $(_command) $(_args)'
publishLocation: Container
continueOnError: true
condition: failed()
- script: $(_command) $(_args)
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.SourcesDirectory)\tests\TestResults'
ArtifactName: 'Windows $(_command) $(_args)'
publishLocation: Container
continueOnError: true
condition: failed()
queue:
name: VSEng-MicroBuildVS2017
jobs:
- job: Full_Signed
pool:
name: VSEng-MicroBuildVS2017
timeoutInMinutes: 300
demands:
- visualstudio
- DotNetFramework
- msbuild
variables:
MSBuildConfiguration: 'Release'
steps:
# Install Signing Plugin
- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1
displayName: Install Signing Plugin
inputs:
signType: real
condition: and(succeeded(), in(variables['PB_SignType'], 'test', 'real'))
variables:
MSBuildConfiguration: 'Release'
# Install Swix Plugin
- task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1
displayName: Install Swix Plugin
steps:
# Install Signing Plugin
- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1
displayName: Install Signing Plugin
inputs:
signType: real
condition: and(succeeded(), in(variables['PB_SignType'], 'test', 'real'))
# Run build.cmd
- task: CmdLine@1
displayName: Run build.cmd
inputs:
filename: build.cmd
arguments: microbuild
# Install Swix Plugin
- task: ms-vseng.MicroBuildTasks.32f78468-e895-4f47-962c-58a699361df8.MicroBuildSwixPlugin@1
displayName: Install Swix Plugin
# Publish nightly package to MyGet
- task: PowerShell@1
displayName: Publish nightly package to MyGet
inputs:
scriptName: 'setup\publish-assets.ps1'
arguments: '-binariesPath $(MSBuildConfiguration) -branchName $(Build.SourceBranch) -apiKey $(FSharp.MyGetApiKey)'
condition: and(succeeded(), contains(variables['PB_PublishType'], 'myget'))
# Run build.cmd
- task: CmdLine@1
displayName: Run build.cmd
inputs:
filename: build.cmd
arguments: microbuild
# Publish packages to Azure Blob Storage
- task: MSBuild@1
displayName: Publish packages to Azure Blob Storage
inputs:
solution: PublishToBlob.proj
msbuildArguments: '/t:Build /p:ExpectedFeedUrl=$(PB_PublishBlobFeedUrl) /p:AccountKey=$(PB_PublishBlobFeedKey) /p:ManifestBranch=$(SourceBranch) /p:ManifestCommit=$(SourceVersion) /p:ManifestBuildId=$(OfficialBuildId)'
condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
# Publish nightly package to MyGet
- task: PowerShell@1
displayName: Publish nightly package to MyGet
inputs:
scriptName: 'setup\publish-assets.ps1'
arguments: '-binariesPath $(MSBuildConfiguration) -branchName $(Build.SourceBranch) -apiKey $(FSharp.MyGetApiKey)'
condition: and(succeeded(), contains(variables['PB_PublishType'], 'myget'))
# Create static drop
- task: PublishBuildArtifacts@1
displayName: Create static drop
inputs:
PathtoPublish: '$(MSBuildConfiguration)'
ArtifactName: '$(Build.BuildNumber)'
publishLocation: FilePath
TargetPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)'
Parallel: true
ParallelCount: 64
condition: and(succeeded(), contains(variables['PB_PublishType'], 'drop'))
# Publish packages to Azure Blob Storage
- task: MSBuild@1
displayName: Publish packages to Azure Blob Storage
inputs:
solution: PublishToBlob.proj
msbuildArguments: '/t:Build /p:ExpectedFeedUrl=$(PB_PublishBlobFeedUrl) /p:AccountKey=$(PB_PublishBlobFeedKey) /p:ManifestBranch=$(SourceBranch) /p:ManifestCommit=$(SourceVersion) /p:ManifestBuildId=$(OfficialBuildId)'
condition: and(succeeded(), contains(variables['PB_PublishType'], 'blob'))
# Publish symbols
- task: PublishSymbols@1
displayName: Publish symbols
inputs:
SymbolsPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
SearchPattern: '**\*.dll;**\*.exe;**\*.pdb'
SymbolsFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)'
TreatNotIndexedAsWarning: true
SymbolsProduct: '$(Build.DefinitionName)'
SymbolsVersion: '$(Build.BuildNumber)'
continueOnError: true
condition: and(succeeded(), contains(variables['PB_PublishType'], 'symbols'))
# Create static drop
- task: PublishBuildArtifacts@1
displayName: Create static drop
inputs:
PathtoPublish: '$(MSBuildConfiguration)'
ArtifactName: '$(Build.BuildNumber)'
publishLocation: FilePath
TargetPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)'
Parallel: true
ParallelCount: 64
condition: and(succeeded(), contains(variables['PB_PublishType'], 'drop'))
# Upload VSTS Drop
- task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1
displayName: Upload VSTS Drop
inputs:
DropFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)\insertion'
condition: and(succeeded(), contains(variables['PB_PublishType'], 'vsts'))
# Publish symbols
- task: PublishSymbols@1
displayName: Publish symbols
inputs:
SymbolsPath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
SearchPattern: '**\*.dll;**\*.exe;**\*.pdb'
SymbolsFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)'
TreatNotIndexedAsWarning: true
SymbolsProduct: '$(Build.DefinitionName)'
SymbolsVersion: '$(Build.BuildNumber)'
continueOnError: true
condition: and(succeeded(), contains(variables['PB_PublishType'], 'symbols'))
# Execute cleanup tasks
- task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
displayName: Execute cleanup tasks
condition: succeededOrFailed()
# Upload VSTS Drop
- task: ms-vseng.MicroBuildTasks.4305a8de-ba66-4d8b-b2d1-0dc4ecbbf5e8.MicroBuildUploadVstsDropFolder@1
displayName: Upload VSTS Drop
inputs:
DropFolder: '$(Build.SourcesDirectory)\$(MSBuildConfiguration)\insertion'
condition: and(succeeded(), contains(variables['PB_PublishType'], 'vsts'))
# Publish Artifact: MicroBuildOutputs
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: MicroBuildOutputs'
inputs:
PathtoPublish: '$(Build.StagingDirectory)\MicroBuild\Output'
ArtifactName: MicroBuildOutputs
publishLocation: Container
condition: and(succeeded(), contains(variables['PB_PublishType'], 'microbuild'))
# Execute cleanup tasks
- task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
displayName: Execute cleanup tasks
condition: succeededOrFailed()
# Publish Artifact: MicroBuildOutputs
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: MicroBuildOutputs'
inputs:
PathtoPublish: '$(Build.StagingDirectory)\MicroBuild\Output'
ArtifactName: MicroBuildOutputs
publishLocation: Container
condition: and(succeeded(), contains(variables['PB_PublishType'], 'microbuild'))
# Publish Symbols to Symweb
- task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0
displayName: Publish symbols to SymWeb
inputs:
symbolServiceURI: 'https://microsoft.artifacts.visualstudio.com/DefaultCollection'
sourcePath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
usePat: false
condition: and(succeeded(), contains(variables['PB_PublishType'], 'symweb'))
# Publish Symbols to Symweb
- task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0
displayName: Publish symbols to SymWeb
inputs:
symbolServiceURI: 'https://microsoft.artifacts.visualstudio.com/DefaultCollection'
sourcePath: '$(DropRoot)\$(Build.DefinitionName)\$(Build.SourceBranchName)\$(Build.BuildNumber)\Symbols'
usePat: false
condition: and(succeeded(), contains(variables['PB_PublishType'], 'symweb'))
......@@ -5279,25 +5279,32 @@ and ComputeFlagFixupsForMemberBinding cenv (v:Val,memberInfo:ValMemberInfo) =
let otcref = tcrefOfAppTy cenv.g oty
let tcref = v.MemberApparentEntity
let useMethodImpl =
// REVIEW: it would be good to get rid of this special casing of Compare and GetHashCode during code generation
let isCompare =
(Option.isSome tcref.GeneratedCompareToValues && typeEquiv cenv.g oty cenv.g.mk_IComparable_ty) ||
(Option.isSome tcref.GeneratedCompareToValues && tyconRefEq cenv.g cenv.g.system_GenericIComparable_tcref otcref)
let isGenericEquals =
(Option.isSome tcref.GeneratedHashAndEqualsWithComparerValues && tyconRefEq cenv.g cenv.g.system_GenericIEquatable_tcref otcref)
let isStructural =
(Option.isSome tcref.GeneratedCompareToWithComparerValues && typeEquiv cenv.g oty cenv.g.mk_IStructuralComparable_ty) ||
(Option.isSome tcref.GeneratedHashAndEqualsWithComparerValues && typeEquiv cenv.g oty cenv.g.mk_IStructuralEquatable_ty)
isInterfaceTy cenv.g oty && not isCompare && not isStructural && not isGenericEquals
let useMethodImpl =
// REVIEW: it would be good to get rid of this special casing of Compare and GetHashCode during code generation
isInterfaceTy cenv.g oty &&
(let isCompare =
Option.isSome tcref.GeneratedCompareToValues &&
(typeEquiv cenv.g oty cenv.g.mk_IComparable_ty ||
tyconRefEq cenv.g cenv.g.system_GenericIComparable_tcref otcref)
not isCompare) &&
(let isGenericEquals =
Option.isSome tcref.GeneratedHashAndEqualsWithComparerValues && tyconRefEq cenv.g cenv.g.system_GenericIEquatable_tcref otcref
not isGenericEquals) &&
(let isStructural =
(Option.isSome tcref.GeneratedCompareToWithComparerValues && typeEquiv cenv.g oty cenv.g.mk_IStructuralComparable_ty) ||
(Option.isSome tcref.GeneratedHashAndEqualsWithComparerValues && typeEquiv cenv.g oty cenv.g.mk_IStructuralEquatable_ty)
not isStructural)
let nameOfOverridingMethod = GenNameOfOverridingMethod cenv (useMethodImpl,slotsig)
(if useMethodImpl then fixupMethodImplFlags >> renameMethodDef nameOfOverridingMethod
else fixupVirtualSlotFlags >> renameMethodDef nameOfOverridingMethod))
if useMethodImpl then
fixupMethodImplFlags >> renameMethodDef nameOfOverridingMethod
else
fixupVirtualSlotFlags >> renameMethodDef nameOfOverridingMethod)
and ComputeMethodImplAttribs cenv (_v:Val) attrs =
let implflags =
......
......@@ -60,15 +60,15 @@ module Scripting =
let (++) a b = Path.Combine(a,b)
let getBasename a = Path.GetFileNameWithoutExtension a
let getFullPath a = Path.GetFullPath a
let getFilename a = Path.GetFileName a
let getDirectoryName a = Path.GetDirectoryName a
let getBasename (a: string) = Path.GetFileNameWithoutExtension(a)
let getFullPath a = Path.GetFullPath(a)
let getFilename (a: string) = Path.GetFileName(a)
let getDirectoryName (a: string) = Path.GetDirectoryName(a)
let copyFile source dir =
let dest =
if not (Directory.Exists dir) then Directory.CreateDirectory dir |>ignore
let result = Path.Combine(dir, Path.GetFileName source)
let result = Path.Combine(dir, getFilename source)
result
//printfn "Copy %s --> %s" source dest
File.Copy(source, dest, true)
......@@ -96,7 +96,7 @@ module Scripting =
let processExePath baseDir exe =
if Path.IsPathRooted(exe) then exe
else
match Path.GetDirectoryName(exe) with
match getDirectoryName exe with
| "" -> exe
| _ -> Path.Combine(baseDir,exe) |> Path.GetFullPath
......
......@@ -22,11 +22,6 @@
<Link>License.txt</Link>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="$(FSharpSourcesRoot)\..\packages\System.ValueTuple.4.4.0\System.ValueTuple.4.4.0.nupkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>packages\System.ValueTuple.4.4.0.nupkg</Link>
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="$(FSharpSourcesRoot)\..\packages\Microsoft.VisualFSharp.Type.Providers.Redist\$(MicrosoftVisualFSharpTypeProvidersRedistPackageVersion)\content\4.3.0.0\FSharp.Data.TypeProviders.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Link>FSharp.Data.TypeProviders.dll</Link>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册