Skip to content

Commit 28f73b9

Browse files
authored
fsharp: Use net5.0 to avoid 3.1 apphost prebuilt (#1910)
1 parent 3724520 commit 28f73b9

File tree

2 files changed

+297
-0
lines changed

2 files changed

+297
-0
lines changed
Lines changed: 296 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,296 @@
1+
From c13763b3a2deba6cb48afd4e08157ae647d59a5a Mon Sep 17 00:00:00 2001
2+
From: Davis Goodin <[email protected]>
3+
Date: Fri, 20 Nov 2020 19:13:35 -0600
4+
Subject: [PATCH] Use net5.0 TFM to avoid 3.1 apphost prebuilt
5+
6+
See https://github.com/dotnet/source-build/issues/1905
7+
---
8+
FSharp.Profiles.props | 2 +-
9+
eng/Versions.props | 1 +
10+
eng/build.sh | 12 ++---
11+
proto.proj | 6 +--
12+
.../AssemblyCheck/AssemblyCheck.fsproj | 2 +-
13+
src/buildtools/fslex/fslex.fsproj | 2 +-
14+
src/buildtools/fsyacc/fsyacc.fsproj | 2 +-
15+
src/fsharp/FSharp.Build/FSharp.Build.fsproj | 2 +
16+
.../Microsoft.FSharp.Compiler.csproj | 8 ++--
17+
.../Microsoft.FSharp.Compiler.nuspec | 44 +++++++++----------
18+
src/fsharp/fsc/fsc.fsproj | 1 +
19+
src/fsharp/fsi/fsi.fsproj | 3 +-
20+
12 files changed, 46 insertions(+), 39 deletions(-)
21+
22+
diff --git a/FSharp.Profiles.props b/FSharp.Profiles.props
23+
index 1abb6c8a9..2d0c44752 100644
24+
--- a/FSharp.Profiles.props
25+
+++ b/FSharp.Profiles.props
26+
@@ -7,7 +7,7 @@
27+
<DefineConstants>$(DefineConstants);ENABLE_MONO_SUPPORT</DefineConstants>
28+
</PropertyGroup>
29+
30+
- <PropertyGroup Condition="$(TargetFramework.StartsWith('netstandard')) OR $(TargetFramework.StartsWith('netcoreapp'))">
31+
+ <PropertyGroup Condition="$(TargetFramework.StartsWith('netstandard')) OR $([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netcoreapp3.1'))">
32+
<DefineConstants>$(DefineConstants);NETSTANDARD</DefineConstants>
33+
<DefineConstants>$(DefineConstants);FX_NO_APP_DOMAINS</DefineConstants>
34+
<DefineConstants>$(DefineConstants);FX_NO_CORHOST_SIGNER</DefineConstants>
35+
diff --git a/eng/Versions.props b/eng/Versions.props
36+
index 14e6695d7..799efed6c 100644
37+
--- a/eng/Versions.props
38+
+++ b/eng/Versions.props
39+
@@ -82,6 +82,7 @@
40+
<!-- System.* packages -->
41+
<SystemBuffersVersion>4.5.1</SystemBuffersVersion>
42+
<SystemCollectionsImmutableVersion>1.5.0</SystemCollectionsImmutableVersion>
43+
+ <SystemConfigurationConfigurationManagerVersion>5.0.0</SystemConfigurationConfigurationManagerVersion>
44+
<SystemConsoleVersion>4.3.0</SystemConsoleVersion>
45+
<SystemDataSqlClientPackageVersion>4.3.0</SystemDataSqlClientPackageVersion>
46+
<SystemDesignVersion>4.0.0</SystemDesignVersion>
47+
diff --git a/eng/build.sh b/eng/build.sh
48+
index 32af25330..16d8c65a7 100755
49+
--- a/eng/build.sh
50+
+++ b/eng/build.sh
51+
@@ -246,20 +246,22 @@ function BuildSolution {
52+
MSBuild "$repo_root/src/buildtools/buildtools.proj" \
53+
/restore \
54+
/p:Configuration=$bootstrap_config \
55+
- /t:Publish
56+
+ /t:Publish \
57+
+ /bl:proto-fslex-tools.binlog
58+
59+
mkdir -p "$bootstrap_dir"
60+
- cp -pr $artifacts_dir/bin/fslex/$bootstrap_config/netcoreapp3.1/publish $bootstrap_dir/fslex
61+
- cp -pr $artifacts_dir/bin/fsyacc/$bootstrap_config/netcoreapp3.1/publish $bootstrap_dir/fsyacc
62+
+ cp -pr $artifacts_dir/bin/fslex/$bootstrap_config/net5.0/publish $bootstrap_dir/fslex
63+
+ cp -pr $artifacts_dir/bin/fsyacc/$bootstrap_config/net5.0/publish $bootstrap_dir/fsyacc
64+
fi
65+
if [ ! -f "$bootstrap_dir/fsc.exe" ]; then
66+
BuildMessage="Error building bootstrap"
67+
MSBuild "$repo_root/proto.proj" \
68+
/restore \
69+
/p:Configuration=$bootstrap_config \
70+
- /t:Publish
71+
+ /t:Publish \
72+
+ /bl:proto-fsc-bootstrap.binlog
73+
74+
- cp -pr $artifacts_dir/bin/fsc/$bootstrap_config/netcoreapp3.1/publish $bootstrap_dir/fsc
75+
+ cp -pr $artifacts_dir/bin/fsc/$bootstrap_config/net5.0/publish $bootstrap_dir/fsc
76+
fi
77+
78+
# do real build
79+
diff --git a/proto.proj b/proto.proj
80+
index f24b2580e..3179197be 100644
81+
--- a/proto.proj
82+
+++ b/proto.proj
83+
@@ -7,13 +7,13 @@
84+
85+
<ItemGroup>
86+
<Projects Include="src\fsharp\FSharp.Build\FSharp.Build.fsproj">
87+
- <AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=netcoreapp3.1</AdditionalProperties>
88+
+ <AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=net5.0</AdditionalProperties>
89+
</Projects>
90+
<Projects Include="src\fsharp\fsc\fsc.fsproj">
91+
- <AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=netcoreapp3.1</AdditionalProperties>
92+
+ <AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=net5.0</AdditionalProperties>
93+
</Projects>
94+
<Projects Include="src\fsharp\fsi\fsi.fsproj">
95+
- <AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=netcoreapp3.1</AdditionalProperties>
96+
+ <AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=net5.0</AdditionalProperties>
97+
</Projects>
98+
</ItemGroup>
99+
100+
diff --git a/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj b/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj
101+
index be43696d7..464b6ef78 100644
102+
--- a/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj
103+
+++ b/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj
104+
@@ -2,7 +2,7 @@
105+
106+
<PropertyGroup>
107+
<OutputType>Exe</OutputType>
108+
- <TargetFramework>netcoreapp3.1</TargetFramework>
109+
+ <TargetFramework>net5.0</TargetFramework>
110+
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
111+
</PropertyGroup>
112+
113+
diff --git a/src/buildtools/fslex/fslex.fsproj b/src/buildtools/fslex/fslex.fsproj
114+
index da7c52ba1..1959ce59c 100644
115+
--- a/src/buildtools/fslex/fslex.fsproj
116+
+++ b/src/buildtools/fslex/fslex.fsproj
117+
@@ -2,7 +2,7 @@
118+
119+
<PropertyGroup>
120+
<OutputType>Exe</OutputType>
121+
- <TargetFramework>netcoreapp3.1</TargetFramework>
122+
+ <TargetFramework>net5.0</TargetFramework>
123+
<DefineConstants>INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstants)</DefineConstants>
124+
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
125+
</PropertyGroup>
126+
diff --git a/src/buildtools/fsyacc/fsyacc.fsproj b/src/buildtools/fsyacc/fsyacc.fsproj
127+
index a2b8cb384..5d1b7141f 100644
128+
--- a/src/buildtools/fsyacc/fsyacc.fsproj
129+
+++ b/src/buildtools/fsyacc/fsyacc.fsproj
130+
@@ -2,7 +2,7 @@
131+
132+
<PropertyGroup>
133+
<OutputType>Exe</OutputType>
134+
- <TargetFramework>netcoreapp3.1</TargetFramework>
135+
+ <TargetFramework>net5.0</TargetFramework>
136+
<DefineConstants>INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstants)</DefineConstants>
137+
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
138+
</PropertyGroup>
139+
diff --git a/src/fsharp/FSharp.Build/FSharp.Build.fsproj b/src/fsharp/FSharp.Build/FSharp.Build.fsproj
140+
index c62b2c2d9..28323a704 100644
141+
--- a/src/fsharp/FSharp.Build/FSharp.Build.fsproj
142+
+++ b/src/fsharp/FSharp.Build/FSharp.Build.fsproj
143+
@@ -7,6 +7,7 @@
144+
<TargetFrameworks Condition="'$(ProtoTargetFramework)' != ''">$(ProtoTargetFramework)</TargetFrameworks>
145+
<TargetFrameworks Condition="'$(ProtoTargetFramework)' == ''">net472;netcoreapp3.1</TargetFrameworks>
146+
<TargetFrameworks Condition="'$(OS)' == 'Unix'">netcoreapp3.1</TargetFrameworks>
147+
+ <TargetFrameworks Condition="'$(DotNetBuildFromSource)' == 'true'">net5.0</TargetFrameworks>
148+
<AssemblyName>FSharp.Build</AssemblyName>
149+
<NoWarn>$(NoWarn);45;55;62;75;1204</NoWarn>
150+
<AllowCrossTargeting>true</AllowCrossTargeting>
151+
@@ -54,6 +55,7 @@
152+
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildTasksCoreVersion)" />
153+
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCoreVersion)" />
154+
<PackageReference Include="Microsoft.Win32.Registry" Version="$(MicrosoftWin32RegistryVersion)" />
155+
+ <PackageReference Include="System.Configuration.ConfigurationManager" Version="$(SystemConfigurationConfigurationManagerVersion)" />
156+
</ItemGroup>
157+
158+
</Project>
159+
diff --git a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj
160+
index 7424df113..545094b7a 100644
161+
--- a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj
162+
+++ b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj
163+
@@ -2,7 +2,7 @@
164+
165+
<PropertyGroup>
166+
<PreRelease>true</PreRelease>
167+
- <TargetFramework>netcoreapp3.1</TargetFramework>
168+
+ <TargetFramework>net5.0</TargetFramework>
169+
<NuspecFile>Microsoft.FSharp.Compiler.nuspec</NuspecFile>
170+
<IsPackable>true</IsPackable>
171+
<PackageDescription>.NET Core compatible version of the F# compiler fsc.exe.</PackageDescription>
172+
@@ -11,13 +11,13 @@
173+
174+
<ItemGroup>
175+
<ProjectReference Include="..\fsc\fsc.fsproj">
176+
- <AdditionalProperties>TargetFramework=netcoreapp3.1</AdditionalProperties>
177+
+ <AdditionalProperties>TargetFramework=net5.0</AdditionalProperties>
178+
</ProjectReference>
179+
<ProjectReference Include="..\fsi\fsi.fsproj">
180+
- <AdditionalProperties>TargetFramework=netcoreapp3.1</AdditionalProperties>
181+
+ <AdditionalProperties>TargetFramework=net5.0</AdditionalProperties>
182+
</ProjectReference>
183+
<ProjectReference Include="..\FSharp.Build\FSharp.Build.fsproj">
184+
- <AdditionalProperties>TargetFramework=netcoreapp3.1</AdditionalProperties>
185+
+ <AdditionalProperties>TargetFramework=net5.0</AdditionalProperties>
186+
</ProjectReference>
187+
<ProjectReference Include="..\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj">
188+
<AdditionalProperties>TargetFramework=netstandard2.0</AdditionalProperties>
189+
diff --git a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
190+
index 366488b47..f8bc431d1 100644
191+
--- a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
192+
+++ b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.nuspec
193+
@@ -4,7 +4,7 @@
194+
$CommonMetadataElements$
195+
<language>en-US</language>
196+
<dependencies>
197+
- <group targetFramework=".NETCoreApp3.1">
198+
+ <group targetFramework=".NETCoreApp5.0">
199+
<dependency id="Microsoft.NETCore.Platforms" version="2.0.0" />
200+
<dependency id="NETStandard.Library" version="2.0.0" />
201+
<dependency id="System.Collections.Immutable" version="1.5.0" />
202+
@@ -46,37 +46,37 @@
203+
this approach gives a very small deployment. Which is kind of necessary.
204+
-->
205+
<!-- assemblies -->
206+
- <file src="fsc\$Configuration$\netcoreapp3.1\fsc.exe" target="lib\netcoreapp3.1" />
207+
- <file src="fsi\$Configuration$\netcoreapp3.1\fsi.exe" target="lib\netcoreapp3.1" />
208+
- <file src="FSharp.Core\$Configuration$\netstandard2.0\FSharp.Core.dll" target="lib\netcoreapp3.1" />
209+
- <file src="FSharp.Core\$Configuration$\netstandard2.0\FSharp.Core.xml" target="lib\netcoreapp3.1" />
210+
- <file src="FSharp.Compiler.Private\$Configuration$\netstandard2.0\FSharp.Compiler.Private.dll" target="lib\netcoreapp3.1" />
211+
- <file src="FSharp.Build\$Configuration$\netcoreapp3.1\FSharp.Build.dll" target="lib\netcoreapp3.1" />
212+
+ <file src="fsc\$Configuration$\net5.0\fsc.exe" target="lib\net5.0" />
213+
+ <file src="fsi\$Configuration$\net5.0\fsi.exe" target="lib\net5.0" />
214+
+ <file src="FSharp.Core\$Configuration$\netstandard2.0\FSharp.Core.dll" target="lib\net5.0" />
215+
+ <file src="FSharp.Core\$Configuration$\netstandard2.0\FSharp.Core.xml" target="lib\net5.0" />
216+
+ <file src="FSharp.Compiler.Private\$Configuration$\netstandard2.0\FSharp.Compiler.Private.dll" target="lib\net5.0" />
217+
+ <file src="FSharp.Build\$Configuration$\net5.0\FSharp.Build.dll" target="lib\net5.0" />
218+
<file src="FSharp.DependencyManager.Nuget\$configuration$\netstandard2.0\FSharp.DependencyManager.Nuget.dll"
219+
- target="lib\netcoreapp3.1" />
220+
+ target="lib\net5.0" />
221+
<file src="Microsoft.DotNet.DependencyManager\$configuration$\netstandard2.0\Microsoft.DotNet.DependencyManager.dll"
222+
- target="lib\netcoreapp3.1" />
223+
+ target="lib\net5.0" />
224+
<file src="FSharp.Compiler.Interactive.Settings\$Configuration$\netstandard2.0\FSharp.Compiler.Interactive.Settings.dll"
225+
- target="lib\netcoreapp3.1" />
226+
+ target="lib\net5.0" />
227+
228+
<!-- additional files -->
229+
- <file src="fsc\$Configuration$\netcoreapp3.1\default.win32manifest" target="contentFiles\any\any" />
230+
- <file src="FSharp.Build\$Configuration$\netcoreapp3.1\Microsoft.FSharp.Targets" target="contentFiles\any\any" />
231+
- <file src="FSharp.Build\$Configuration$\netcoreapp3.1\Microsoft.Portable.FSharp.Targets" target="contentFiles\any\any" />
232+
- <file src="FSharp.Build\$Configuration$\netcoreapp3.1\Microsoft.FSharp.NetSdk.props" target="contentFiles\any\any" />
233+
- <file src="FSharp.Build\$Configuration$\netcoreapp3.1\Microsoft.FSharp.NetSdk.targets" target="contentFiles\any\any" />
234+
- <file src="FSharp.Build\$Configuration$\netcoreapp3.1\Microsoft.FSharp.Overrides.NetSdk.targets" target="contentFiles\any\any" />
235+
+ <file src="fsc\$Configuration$\net5.0\default.win32manifest" target="contentFiles\any\any" />
236+
+ <file src="FSharp.Build\$Configuration$\net5.0\Microsoft.FSharp.Targets" target="contentFiles\any\any" />
237+
+ <file src="FSharp.Build\$Configuration$\net5.0\Microsoft.Portable.FSharp.Targets" target="contentFiles\any\any" />
238+
+ <file src="FSharp.Build\$Configuration$\net5.0\Microsoft.FSharp.NetSdk.props" target="contentFiles\any\any" />
239+
+ <file src="FSharp.Build\$Configuration$\net5.0\Microsoft.FSharp.NetSdk.targets" target="contentFiles\any\any" />
240+
+ <file src="FSharp.Build\$Configuration$\net5.0\Microsoft.FSharp.Overrides.NetSdk.targets" target="contentFiles\any\any" />
241+
242+
<!-- resources -->
243+
- <file src="FSharp.Core\$Configuration$\netstandard2.0\**\FSharp.Core.resources.dll" target="lib\netcoreapp3.1" />
244+
+ <file src="FSharp.Core\$Configuration$\netstandard2.0\**\FSharp.Core.resources.dll" target="lib\net5.0" />
245+
<file src="FSharp.Compiler.Private\$Configuration$\netstandard2.0\**\FSharp.Compiler.Private.resources.dll"
246+
- target="lib\netcoreapp3.1" />
247+
+ target="lib\net5.0" />
248+
<file src="FSharp.Compiler.Interactive.Settings\$Configuration$\netstandard2.0\**\FSharp.Compiler.Interactive.Settings.resources.dll"
249+
- target="lib\netcoreapp3.1" />
250+
- <file src="FSharp.Build\$Configuration$\netcoreapp3.1\**\FSharp.Build.resources.dll" target="lib\netcoreapp3.1" />
251+
+ target="lib\net5.0" />
252+
+ <file src="FSharp.Build\$Configuration$\net5.0\**\FSharp.Build.resources.dll" target="lib\net5.0" />
253+
<file src="FSharp.DependencyManager.Nuget\$configuration$\netstandard2.0\**\FSharp.DependencyManager.Nuget.resources.dll"
254+
- target="lib\netcoreapp3.1" />
255+
+ target="lib\net5.0" />
256+
<file src="Microsoft.DotNet.DependencyManager\$Configuration$\netstandard2.0\**\Microsoft.DotNet.DependencyManager.resources.dll"
257+
- target="lib\netcoreapp3.1" />
258+
+ target="lib\net5.0" />
259+
</files>
260+
</package>
261+
diff --git a/src/fsharp/fsc/fsc.fsproj b/src/fsharp/fsc/fsc.fsproj
262+
index df16c1554..7bcc01024 100644
263+
--- a/src/fsharp/fsc/fsc.fsproj
264+
+++ b/src/fsharp/fsc/fsc.fsproj
265+
@@ -7,6 +7,7 @@
266+
<TargetFrameworks Condition="'$(ProtoTargetFramework)' != ''">$(ProtoTargetFramework)</TargetFrameworks>
267+
<TargetFrameworks Condition="'$(ProtoTargetFramework)' == ''">net472;netcoreapp3.1</TargetFrameworks>
268+
<TargetFrameworks Condition="'$(OS)' == 'Unix'">netcoreapp3.1</TargetFrameworks>
269+
+ <TargetFrameworks Condition="'$(DotNetBuildFromSource)' == 'true'">net5.0</TargetFrameworks>
270+
<TargetExt>.exe</TargetExt>
271+
<NoWarn>$(NoWarn);45;55;62;75;1204</NoWarn>
272+
<AllowCrossTargeting>true</AllowCrossTargeting>
273+
diff --git a/src/fsharp/fsi/fsi.fsproj b/src/fsharp/fsi/fsi.fsproj
274+
index bb2bcc73b..fa146ed38 100644
275+
--- a/src/fsharp/fsi/fsi.fsproj
276+
+++ b/src/fsharp/fsi/fsi.fsproj
277+
@@ -7,6 +7,7 @@
278+
<TargetFrameworks Condition="'$(ProtoTargetFramework)' != ''">$(ProtoTargetFramework)</TargetFrameworks>
279+
<TargetFrameworks Condition="'$(ProtoTargetFramework)' == ''">net472;netcoreapp3.1</TargetFrameworks>
280+
<TargetFrameworks Condition="'$(OS)' == 'Unix'">netcoreapp3.1</TargetFrameworks>
281+
+ <TargetFrameworks Condition="'$(DotNetBuildFromSource)' == 'true'">net5.0</TargetFrameworks>
282+
<TargetExt>.exe</TargetExt>
283+
<NoWarn>$(NoWarn);45;55;62;75;1204</NoWarn>
284+
<AllowCrossTargeting>true</AllowCrossTargeting>
285+
@@ -50,7 +51,7 @@
286+
<Reference Include="WindowsBase" />
287+
</ItemGroup>
288+
289+
- <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
290+
+ <ItemGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'netcoreapp3.1'))">
291+
<PackageReference Include="System.Diagnostics.Process" Version="$(SystemDiagnosticsProcessVersion)" />
292+
<PackageReference Include="System.Linq.Expressions" Version="$(SystemLinqExpressionsVersion)" />
293+
<PackageReference Include="System.Reflection.Emit" Version="$(SystemReflectionEmitVersion)" />
294+
--
295+
2.25.4
296+

repos/fsharp.proj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
<ItemGroup>
2222
<RepositoryReference Include="arcade" />
23+
<RepositoryReference Include="msbuild" />
2324
<RepositoryReference Include="newtonsoft-json901" />
2425
<RepositoryReference Include="newtonsoft-json" />
2526
<RepositoryReference Include="xliff-tasks" />

0 commit comments

Comments
 (0)