243 lines
11 KiB
XML
243 lines
11 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Import Project='Installer.RPM.props'/>
|
|
|
|
<UsingTask TaskName="ReplaceFileContents" AssemblyFile="$(CLIBuildDll)"/>
|
|
<UsingTask TaskName="BuildFPMToolPreReqs" AssemblyFile="$(CLIBuildDll)"/>
|
|
|
|
<PropertyGroup>
|
|
<BuildRpmPackage Condition=" '$(IsRPMBasedDistro)' == 'True' ">True</BuildRpmPackage>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="GenerateRpms"
|
|
DependsOnTargets="TestFPMTool;BuildRpms;TestSdkRpm"
|
|
Condition=" '$(BuildRpmPackage)' == 'True' "
|
|
Outputs="@(GeneratedInstallers)"/>
|
|
|
|
<Target Name="BuildRpms"
|
|
DependsOnTargets="GenerateSdkRpm"
|
|
Condition=" '$(BuildRpmPackage)' == 'True' and '$(FPMPresent)' == 'True' "/>
|
|
|
|
<Target Name="GenerateSdkRpm"
|
|
DependsOnTargets="SetupRpmProps">
|
|
|
|
<RemoveDir Condition="Exists('$(RpmIntermediatesDir)')" Directories="$(RpmIntermediatesDir)"/>
|
|
<MakeDir Directories="$(RpmIntermediatesDir)"/>
|
|
|
|
<!-- Create empty rpm layout -->
|
|
<RemoveDir Condition="Exists('$(RpmLayoutDirectory)')" Directories="$(RpmLayoutDirectory)"/>
|
|
<MakeDir Directories="$(RpmLayoutDirectory)"/>
|
|
<MakeDir Directories="$(RpmLayoutPackageRoot)"/>
|
|
<MakeDir Directories="$(RpmLayoutSDK)"/>
|
|
<MakeDir Directories="$(RpmLayoutDocs)"/>
|
|
<MakeDir Directories="$(RpmLayoutTemplates)"/>
|
|
<MakeDir Directories="$(RpmLayoutScripts)"/>
|
|
|
|
<!-- Copy files to rpm layout -->
|
|
<ItemGroup>
|
|
<SDKFiles Include="$(InputRoot)/**/*"/>
|
|
<SDKManpages Include="$(ManPagesDir)/**/*"/>
|
|
<SDKTemplatesFiles Include="$(TemplatesDir)/**/*"/>
|
|
<SDKScriptsFiles Include="$(ScriptsDir)/after_remove_host.sh"/>
|
|
</ItemGroup>
|
|
|
|
<Copy SourceFiles="@(SDKFiles)"
|
|
DestinationFiles="@(SDKFiles->'$(RpmLayoutSDK)/%(RecursiveDir)%(Filename)%(Extension)')"
|
|
OverwriteReadOnlyFiles="True"
|
|
SkipUnchangedFiles="False"
|
|
UseHardlinksIfPossible="False"/>
|
|
|
|
<Copy SourceFiles="@(SDKManpages)"
|
|
DestinationFiles="@(SDKManpages->'$(RpmLayoutDocs)/%(RecursiveDir)%(Filename)%(Extension)')"
|
|
OverwriteReadOnlyFiles="True"
|
|
SkipUnchangedFiles="False"
|
|
UseHardlinksIfPossible="False"/>
|
|
|
|
<Copy SourceFiles="@(SDKTemplatesFiles)"
|
|
DestinationFiles="@(SDKTemplatesFiles->'$(RpmLayoutTemplates)/%(RecursiveDir)%(Filename)%(Extension)')"
|
|
OverwriteReadOnlyFiles="True"
|
|
SkipUnchangedFiles="False"
|
|
UseHardlinksIfPossible="False"/>
|
|
|
|
<Copy SourceFiles="@(SDKScriptsFiles)"
|
|
DestinationFiles="@(SDKScriptsFiles->'$(RpmLayoutScripts)/%(RecursiveDir)%(Filename)%(Extension)')"
|
|
OverwriteReadOnlyFiles="True"
|
|
SkipUnchangedFiles="False"
|
|
UseHardlinksIfPossible="False"/>
|
|
|
|
<!-- Replace config json variables -->
|
|
<ItemGroup>
|
|
<SDKTokenValue Include="%SHARED_HOST_RPM_VERSION%">
|
|
<ReplacementString>$(MicrosoftNETCoreAppPackageVersion)</ReplacementString>
|
|
</SDKTokenValue>
|
|
<SDKTokenValue Include="%ASPNETCORE_SHAREDFX_RPM_PACKAGE_NAME%">
|
|
<ReplacementString>$(AspNetCoreSharedFxRpmPackageName)</ReplacementString>
|
|
</SDKTokenValue>
|
|
<SDKTokenValue Include="%ASPNETCORE_SHAREDFX_RPM_PACKAGE_VERSION%">
|
|
<ReplacementString>$(AspNetCoreVersion)</ReplacementString>
|
|
</SDKTokenValue>
|
|
<SDKTokenValue Include="%SHARED_HOST_RPM_NAME%">
|
|
<ReplacementString>$(SharedFxRpmPackageName)</ReplacementString>
|
|
</SDKTokenValue>
|
|
<SDKTokenValue Include="%SDK_NUGET_VERSION%">
|
|
<ReplacementString>$(SdkVersion)</ReplacementString>
|
|
</SDKTokenValue>
|
|
<SDKTokenValue Include="%CLI_SDK_BRAND_NAME%">
|
|
<ReplacementString>$(SdkBrandName)</ReplacementString>
|
|
</SDKTokenValue>
|
|
<SDKTokenValue Include="%SDK_RPM_PACKAGE_NAME%">
|
|
<ReplacementString>$(SdkRpmPackageName)</ReplacementString>
|
|
</SDKTokenValue>
|
|
|
|
<AfterInstallHostTokenValue Include="%SDK_VERSION%">
|
|
<ReplacementString>$(SdkVersion)</ReplacementString>
|
|
</AfterInstallHostTokenValue>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<TestSdkRpmTaskEnvironmentVariables Include="PATH=$(RpmInstalledDirectory)$(PathListSeparator)$(PATH)" />
|
|
<TestSdkRpmTaskEnvironmentVariables Include="TEST_ARTIFACTS=$(TestArtifactsDir)" />
|
|
<TestSdkRpmTaskEnvironmentVariables Include="TEST_PACKAGES=$(TestPackagesDir)" />
|
|
<TestSdkRpmTaskEnvironmentVariables Include="PreviousStageProps=$(NextStagePropsPath)" />
|
|
|
|
<!-- Consumed By Publish -->
|
|
<GeneratedInstallers Include="$(SdkInstallerFile)" />
|
|
</ItemGroup>
|
|
|
|
<ReplaceFileContents InputFile="$(AfterInstallHostScriptTemplateFile)"
|
|
DestinationFile="$(AfterInstallHostScriptDestinationFile)"
|
|
ReplacementItems="@(AfterInstallHostTokenValue)"/>
|
|
|
|
<Chmod
|
|
Glob="$(AfterInstallHostScriptDestinationFile)"
|
|
Mode="ugo+x" />
|
|
|
|
<ReplaceFileContents InputFile="$(ConfigJsonFile)"
|
|
DestinationFile="$(RpmLayoutDirectory)$(RpmConfigJsonName)"
|
|
ReplacementItems="@(SDKTokenValue)"/>
|
|
|
|
<!-- Call the task to build the pre-reqs (parameters, copyright, changelog) for calling the FPM tool -->
|
|
<BuildFPMToolPreReqs InputDir="$(RpmLayoutDirectory)"
|
|
OutputDir="$(RpmIntermediatesDir)"
|
|
PackageVersion="$(RpmPackageVersion)"
|
|
ConfigJsonFile="$(RpmLayoutDirectory)$(RpmConfigJsonName)">
|
|
<Output TaskParameter="FPMParameters" PropertyName="FPMCmdParameters"/>
|
|
</BuildFPMToolPreReqs>
|
|
|
|
<!-- Build the RPM package by calling the FPM tool and passing the parameter list -->
|
|
<Exec Command="fpm $(FPMCmdParameters)" WorkingDirectory="$(RpmIntermediatesDir)"/>
|
|
|
|
<!-- Copy package to output -->
|
|
<ItemGroup>
|
|
<GeneratedRpmFiles Remove="@(GeneratedRpmFiles)"/>
|
|
<GeneratedRpmFiles Include="$(RpmIntermediatesDir)/*.rpm"/>
|
|
</ItemGroup>
|
|
|
|
<Error Text="@(GeneratedRpmFiles->Count()) .rpm files generated." Condition="'@(GeneratedRpmFiles->Count())' != 1"/>
|
|
|
|
<Copy SourceFiles="@(GeneratedRpmFiles)"
|
|
DestinationFiles="$(RpmFile)"
|
|
OverwriteReadOnlyFiles="True"
|
|
SkipUnchangedFiles="False"
|
|
UseHardlinksIfPossible="False"/>
|
|
|
|
</Target>
|
|
|
|
<Target Name="SetupRpmProps">
|
|
<PropertyGroup>
|
|
<RpmPackageVersion>$(SdkVersion)</RpmPackageVersion>
|
|
<InputRoot>$(OutputDirectory)/sdk</InputRoot>
|
|
<SdkInstallerFile>$(InstallerOutputDirectory)/$(DistroSpecificArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension)</SdkInstallerFile>
|
|
<RpmFile>$(SdkInstallerFile)</RpmFile>
|
|
<ManPagesDir>$(RepoRoot)/Documentation/manpages</ManPagesDir>
|
|
<ConfigJsonFile>$(RepoRoot)/packaging/rpm/dotnet-config.json</ConfigJsonFile>
|
|
<RpmIntermediatesDir>$(IntermediateDirectory)/$(RpmPackageName)/$(RpmPackageVersion)</RpmIntermediatesDir>
|
|
<RpmTestResultsXmlFile>$(RpmIntermediatesDir)/debian-testResults.xml</RpmTestResultsXmlFile>
|
|
<RpmInstalledDirectory>/usr/share/dotnet</RpmInstalledDirectory>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<RpmLayoutDirectory>$(RpmIntermediatesDir)/RpmLayoutDirectory/</RpmLayoutDirectory>
|
|
<RpmLayoutPackageRoot>$(RpmLayoutDirectory)package_root</RpmLayoutPackageRoot>
|
|
<RpmLayoutSDK>$(RpmLayoutPackageRoot)/sdk</RpmLayoutSDK>
|
|
<RpmLayoutDocs>$(RpmLayoutDirectory)docs</RpmLayoutDocs> <!-- Man Pages -->
|
|
<RpmLayoutTemplates>$(RpmLayoutDirectory)templates</RpmLayoutTemplates> <!-- Copyright, Changelog -->
|
|
<RpmLayoutScripts>$(RpmLayoutDirectory)scripts</RpmLayoutScripts>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<SdkRpmPackageVersion>$(SdkVersion)</SdkRpmPackageVersion>
|
|
<SdkRpmPackageName>$(ArtifactNameCombinedHostHostFxrFrameworkSdk)-$(SdkRpmPackageVersion)</SdkRpmPackageName>
|
|
<SharedFxRpmPackageVersion>$(MicrosoftNETCoreAppPackageVersion)</SharedFxRpmPackageVersion>
|
|
<SharedFxRpmPackageName>dotnet-runtime-$(SharedFxRpmPackageVersion)</SharedFxRpmPackageName>
|
|
<SharedFxRpmPackageName>$(SharedFxRpmPackageName.ToLower())</SharedFxRpmPackageName>
|
|
<HostFxrRpmPackageVersion>$(HostFxrVersion)</HostFxrRpmPackageVersion>
|
|
<HostFxrRpmPackageName>dotnet-hostfxr-$(HostFxrRpmPackageVersion)</HostFxrRpmPackageName>
|
|
<HostFxrRpmPackageName>$(HostFxrRpmPackageName.ToLower())</HostFxrRpmPackageName>
|
|
<HostRpmPackageName>dotnet-host</HostRpmPackageName>
|
|
<AspNetCoreSharedFxRpmPackageName>aspnetcore-runtime-$(AspNetCoreVersion)</AspNetCoreSharedFxRpmPackageName>
|
|
<AspNetCoreSharedFxRpmPackageName>$(AspNetCoreSharedFxRpmPackageName.ToLower())</AspNetCoreSharedFxRpmPackageName>
|
|
<AfterInstallHostScriptTemplateFile>$(ScriptsDir)/$(AfterInstallHostScriptName)</AfterInstallHostScriptTemplateFile>
|
|
<AfterInstallHostScriptDestinationFile>$(RpmLayoutScripts)/$(AfterInstallHostScriptName)</AfterInstallHostScriptDestinationFile>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<EndToEndTestProject>$(RepoRoot)/test/EndToEnd/EndToEnd.csproj</EndToEndTestProject>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<Target Name="TestFPMTool">
|
|
|
|
<!-- run FPM -->
|
|
<Exec Command="fpm --help > /dev/null" ContinueOnError="True">
|
|
<Output TaskParameter="ExitCode" PropertyName="FPMExitCode"/>
|
|
</Exec>
|
|
|
|
<!-- Check if it returned 0 -->
|
|
<PropertyGroup>
|
|
<FPMPresent>false</FPMPresent>
|
|
<FPMPresent Condition=" '$(FPMExitCode)' == '0' ">True</FPMPresent>
|
|
</PropertyGroup>
|
|
|
|
<!-- Workaround for Jenkins machines that don't have the necessary packages https://github.com/dotnet/core-setup/issues/2260 -->
|
|
<Message Condition=" '$(FPMPresent)' != 'True' "
|
|
Text="FPM tool Not found, RPM packages will not be built."
|
|
Importance="High"/>
|
|
</Target>
|
|
|
|
<Target Name="TestSdkRpm"
|
|
DependsOnTargets="RestoreTests"
|
|
Condition=" '$(CLIBUILD_SKIP_TESTS)' != 'true' and '$(IsRPMBasedDistro)' == 'True' and '$(FPMPresent)' == 'True' "
|
|
Inputs="$(DownloadedSharedHostInstallerFile);
|
|
$(DownloadedHostFxrInstallerFile);
|
|
$(DownloadedSharedFrameworkInstallerFile);
|
|
$(DownloadedAspNetCoreSharedFxInstallerFile);
|
|
$(RpmTestResultsXmlFile);"
|
|
Outputs="$(RpmTestResultsXmlFile)" >
|
|
|
|
<!-- Install Dependencies and SDK Packages -->
|
|
<Exec Command="sudo yum -y install $(DownloadedSharedHostInstallerFile)" />
|
|
<Exec Command="sudo yum -y install $(DownloadedHostFxrInstallerFile)" />
|
|
<Exec Command="sudo yum -y install $(DownloadedSharedFrameworkInstallerFile)" />
|
|
<!-- Ignore dependencies, which may have an incoherent dependency on dotnet-runtime -->
|
|
<Exec Command="sudo rpm --install --nodeps $(DownloadedAspNetCoreSharedFxInstallerFile)" />
|
|
|
|
<Exec Command="sudo yum -y install $(SdkInstallerFile)" />
|
|
|
|
<!-- Run Tests -->
|
|
<DotNetRestore ProjectPath="$(EndToEndTestProject)"
|
|
ToolPath="$(RpmInstalledDirectory)" />
|
|
|
|
<DotNetTest ProjectPath="$(EndToEndTestProject)"
|
|
EnvironmentVariables="@(TestSdkRpmTaskEnvironmentVariables)"
|
|
ToolPath="$(RpmInstalledDirectory)" />
|
|
|
|
<!-- Clean up Packages -->
|
|
<Exec Command="sudo yum remove -y $(SdkRpmPackageName)" />
|
|
|
|
<Exec Command="sudo yum remove -y $(AspNetCoreSharedFxRpmPackageName)" />
|
|
<Exec Command="sudo yum remove -y $(SharedFxRpmPackageName)" />
|
|
<Exec Command="sudo yum remove -y $(HostFxrRpmPackageName)" />
|
|
<Exec Command="sudo yum remove -y $(HostRpmPackageName)" />
|
|
</Target>
|
|
</Project>
|