Skip to content

Commit 76df50f

Browse files
omajidcrummel
authored andcommitted
[release/2.1] Enable portable builds on linux (#717)
* Enable portable builds on linux Most projects were already working fine. Only cli needed fixes to support $(PortableBuild). * Fix a couple more things with portable builds. - OSX should not try to use the portable linux shared framework. - Override target RID when portable to be correct from the start. This allows us to pass it in everywhere and remove a couple workarounds.
1 parent 4803ba2 commit 76df50f

File tree

8 files changed

+37
-16
lines changed

8 files changed

+37
-16
lines changed

dir.props

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,6 @@
8585

8686
<Import Project="$(TargetInfoProps)" Condition="$(GeneratingStaticPropertiesFile) != 'true' AND Exists('$(TargetInfoProps)')" />
8787

88-
<PropertyGroup>
89-
<!-- Always build portable runtime on OSX to match the CLI repo's filename expectations. https://github.com/dotnet/source-build/issues/438 -->
90-
<PortableBuild Condition="'$(TargetOS)' == 'OSX'">true</PortableBuild>
91-
</PropertyGroup>
92-
9388
<Import Project="$(ProjectDir)dependencies.props" />
9489

9590
<PropertyGroup>

repos/cli.proj

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@
22
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))/dir.props" />
44
<PropertyGroup>
5-
<RuntimeArg Condition="'$(TargetOS)' == 'Linux'">--runtime-id $(TargetRid)</RuntimeArg>
5+
<!-- CLI will always use the portable core-setup build for OSX anyway. Turning this on for
6+
an OSX build will make it try to use linux-x64 instead of osx-64. -->
7+
<UsePortableLinuxSharedFramework>$(PortableBuild)</UsePortableLinuxSharedFramework>
8+
<UsePortableLinuxSharedFramework Condition="'$(TargetOS)' == 'OSX'">false</UsePortableLinuxSharedFramework>
9+
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
10+
<OverrideTargetRid Condition="'$(TargetOS)' == 'OSX'">osx-x64</OverrideTargetRid>
11+
12+
<RuntimeArg>--runtime-id $(OverrideTargetRid)</RuntimeArg>
13+
614
<BuildCommandArgs>--stage0 $(DotNetCliToolDir) $(RuntimeArg)</BuildCommandArgs>
715

816
<!--
@@ -20,7 +28,7 @@
2028
<BuildCommandArgs>$(BuildCommandArgs) /p:SkipBuildingInstallers=true</BuildCommandArgs>
2129
<BuildCommandArgs>$(BuildCommandArgs) /p:IncludeNuGetPackageArchive=false</BuildCommandArgs>
2230
<BuildCommandArgs>$(BuildCommandArgs) /p:IncludeAdditionalSharedFrameworks=false</BuildCommandArgs>
23-
<BuildCommandArgs>$(BuildCommandArgs) /p:UsePortableLinuxSharedFramework=false</BuildCommandArgs>
31+
<BuildCommandArgs>$(BuildCommandArgs) /p:UsePortableLinuxSharedFramework=$(UsePortableLinuxSharedFramework)</BuildCommandArgs>
2432
<BuildCommandArgs>$(BuildCommandArgs) /p:IncludeSharedFrameworksForBackwardsCompatibilityTests=false</BuildCommandArgs>
2533
<BuildCommandArgs>$(BuildCommandArgs) /p:IncludeMSBuildSdkResolver=false</BuildCommandArgs>
2634
<BuildCommandArgs>$(BuildCommandArgs) /p:DefaultTargetLatestAspNetCoreRuntimePatch=true</BuildCommandArgs>
@@ -32,9 +40,7 @@
3240

3341
<BuildCommand>$(ProjectDirectory)build$(ShellExtension) $(BuildCommandArgs)</BuildCommand>
3442

35-
<PackageOutputRid Condition="'$(TargetOS)' == 'Windows_NT'">win-x64</PackageOutputRid>
36-
<PackageOutputRid Condition="'$(TargetOS)' == 'OSX'">osx-x64</PackageOutputRid>
37-
<PackageOutputRid Condition="'$(PackageOutputRid)' == ''">$(TargetRid)</PackageOutputRid>
43+
<PackageOutputRid Condition="'$(PackageOutputRid)' == ''">$(OverrideTargetRid)</PackageOutputRid>
3844
<PackagesOutput>$(ProjectDirectory)bin/2/$(PackageOutputRid)/packages/</PackagesOutput>
3945
<TarBallOutput>$(PackagesOutput)</TarBallOutput>
4046
<RepoApiImplemented>false</RepoApiImplemented>

repos/core-setup.proj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))/dir.props" />
44
<PropertyGroup>
5-
<BuildArguments>-ConfigurationGroup=$(Configuration) -PortableBuild=$(PortableBuild) -SkipTests=true </BuildArguments>
5+
<!-- CLI uses the portable RID for OSX all the time, so override -->
6+
<OverridePortableBuild>$(PortableBuild)</OverridePortableBuild>
7+
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
8+
<OverridePortableBuild Condition="'$(TargetOS)' == 'OSX'">true</OverridePortableBuild>
9+
<OverrideTargetRid Condition="'$(TargetOS)' == 'OSX'">osx-x64</OverrideTargetRid>
10+
11+
<BuildArguments>-ConfigurationGroup=$(Configuration) -PortableBuild=$(OverridePortableBuild) -SkipTests=true </BuildArguments>
612
<BuildArguments Condition="$(Platform.Contains('arm'))">$(BuildArguments) -TargetArchitecture=$(Platform) -DisableCrossgen=true -CrossBuild=true</BuildArguments>
7-
<BuildCommand>$(ProjectDirectory)/build$(ShellExtension) $(BuildArguments) -- /p:BuildDebPackage=false /p:BuildAllPackages=true /bl</BuildCommand>
13+
<BuildCommand>$(ProjectDirectory)/build$(ShellExtension) $(BuildArguments) -- /p:BuildDebPackage=false /p:BuildAllPackages=true /p:OutputRid=$(OverrideTargetRid) /bl</BuildCommand>
814
<BuildCommand Condition="$(Platform.Contains('arm'))">$(ArmEnvironmentVariables) $(BuildCommand)</BuildCommand>
915
<OfficialBuildId>20180814-02</OfficialBuildId>
1016

repos/coreclr.proj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))/dir.props" />
44
<PropertyGroup>
5-
<BuildArguments>$(Platform) $(Configuration) skiptests -PortableBuild=$(PortableBuild) </BuildArguments>
5+
<!-- core-setup uses the portable RID for OSX all the time, so override -->
6+
<OverridePortableBuild>$(PortableBuild)</OverridePortableBuild>
7+
<OverridePortableBuild Condition="'$(TargetOS)' == 'OSX'">true</OverridePortableBuild>
8+
9+
<BuildArguments>$(Platform) $(Configuration) skiptests -PortableBuild=$(OverridePortableBuild) </BuildArguments>
610
<BuildArguments Condition="'$(SkipDisablePgo)' != 'true'">$(BuildArguments) -nopgooptimize</BuildArguments>
711
<BuildArguments Condition="'$(OS)' != 'Windows_NT'">$(BuildArguments) msbuildonunsupportedplatform</BuildArguments>
812
<BuildArguments Condition="'$(UseSystemLibraries)' == 'true'">$(BuildArguments) cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE</BuildArguments>

repos/corefx.proj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@
22
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))/dir.props" />
44
<PropertyGroup>
5-
<BuildArguments>-$(Configuration) -buildArch=$(Platform) -portable=$(PortableBuild) -BuildTests=false</BuildArguments>
5+
<!-- OSX core-setup build always uses the portable RID, so override it -->
6+
<OverridePortableBuild>$(PortableBuild)</OverridePortableBuild>
7+
<OverridePortableBuild Condition="'$(TargetOS)' == 'OSX'">true</OverridePortableBuild>
8+
<OverrideTargetRid>$(TargetRid)</OverrideTargetRid>
9+
<OverrideTargetRid Condition="'$(TargetOS)' == 'OSX'">osx-x64</OverrideTargetRid>
10+
11+
<BuildArguments>-$(Configuration) -buildArch=$(Platform) -portable=$(OverridePortableBuild) -BuildTests=false -PackageRid=$(OverrideTargetRid)</BuildArguments>
612
<BuildCommand>$(ProjectDirectory)/build$(ShellExtension) $(BuildArguments) -- /p:ILLinkTrimAssembly=false /bl</BuildCommand>
713
<BuildCommand Condition="$(Platform.Contains('arm'))">$(ArmEnvironmentVariables) $(BuildCommand)</BuildCommand>
814
<PackagesOutput>$(ProjectDirectory)/bin/packages/$(Configuration)</PackagesOutput>

repos/dir.props

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
</PropertyGroup>
4343

4444
<ItemGroup>
45-
<EnvironmentVariables Include="DOTNET_RUNTIME_ID=$(TargetRid)" />
4645
<EnvironmentVariables Include="DOTNET_TOOL_DIR=$(DotNetCliToolDir)" />
4746
<EnvironmentVariables Include="BUILD_TOOLS_TOOL_DIR=$(ProjectDir)Tools/" />
4847
<EnvironmentVariables Include="BUILDTOOLS_SKIP_CROSSGEN=1" />

repos/roslyn.proj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
</PropertyGroup>
1414

1515
<ItemGroup>
16-
<EnvironmentVariables Include="DOTNET_RUNTIME_ID=$(TargetRid)" />
1716
<EnvironmentVariables Include="COMMIT_SHA=$(GitCommitHash)" />
1817
<EnvironmentVariables Include="NUGET_PACKAGE_VERSION=$(NuGetPackageVersion)" />
1918
</ItemGroup>

tools-local/init-build.proj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@
7575
<Output PropertyName="TargetOS" TaskParameter="OSName" />
7676
</GetHostInformation>
7777

78+
<PropertyGroup Condition="'$(PortableBuild)' == 'true'">
79+
<TargetRid Condition="'$(TargetOS)' == 'OSX'">osx-$(Platform)</TargetRid>
80+
<TargetRid Condition="'$(TargetOS)' == 'Linux'">linux-$(Platform)</TargetRid>
81+
<TargetRid Condition="'$(TargetOS)' == 'Windows_NT'">win-$(Platform)</TargetRid>
82+
</PropertyGroup>
83+
7884
<PropertyGroup>
7985
<TargetInfoPropsContent>&lt;Project ToolsVersion=&quot;15.0&quot;&gt;
8086
&lt;PropertyGroup&gt;

0 commit comments

Comments
 (0)