DEB start
This commit is contained in:
parent
2db1997bc0
commit
5ffdcd5797
3 changed files with 147 additions and 119 deletions
15
build/package/Microsoft.DotNet.Cli.Installer.DEB.props
Normal file
15
build/package/Microsoft.DotNet.Cli.Installer.DEB.props
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<DotnetDebToolPackageId>dotnet-deb-tool</DotnetDebToolPackageId>
|
||||||
|
<DotnetDebToolVersion>1.0.0-*</DotnetDebToolVersion>
|
||||||
|
<DotnetDebToolConsumerProjectName>dotnet-deb-tool-consumer</DotnetDebToolConsumerProjectName>
|
||||||
|
<DotnetDebToolConfigJsonFileName>debian_config.json</DotnetDebToolConfigJsonFileName>
|
||||||
|
|
||||||
|
<DebLayoutPackageRootDirName>package_root</DebLayoutPackageRoot>
|
||||||
|
<DebLayoutAbsolutePlacementDirName>$</DebLayoutAbsolutePlacement>
|
||||||
|
<DebLayoutSamplesDirName>samples</DebLayoutSamplesDirName>
|
||||||
|
<DebLayoutDocsDirName>docs</DebLayoutDocsDirName>
|
||||||
|
<DebLayoutDebianFilesDirName>debian</DebLayoutDebianFilesDirName>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
|
@ -1,114 +1,151 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Target Name="SetupGenerateDebInputsOutputs">
|
<Import Project="Microsoft.DotNet.Cli.Installer.DEB.props" />
|
||||||
<Exec Command="/usr/bin/env debuild -h" ContinueOnError="true">
|
<Target Name="SetupGenerateDebInputsOutputs">
|
||||||
<Output TaskParameter="ExitCode" PropertyName="DebuildExitCode" />
|
<Exec Command="/usr/bin/env debuild -h" ContinueOnError="true">
|
||||||
</Exec>
|
<Output TaskParameter="ExitCode" PropertyName="DebuildExitCode" />
|
||||||
|
</Exec>
|
||||||
|
|
||||||
<!-- Workaround for Ubuntu16 Jenkins https://github.com/dotnet/core-setup/issues/167 -->
|
<!-- Workaround for Ubuntu16 Jenkins https://github.com/dotnet/core-setup/issues/167 -->
|
||||||
<Message Condition=" '$(DebuildPresent)' != 'true' "
|
<Message Condition=" '$(DebuildPresent)' != 'true' "
|
||||||
Text="Debuild Not found, Debian packages will not be built."
|
Text="Debuild Not found, Debian packages will not be built."
|
||||||
Importance="High" />
|
Importance="High" />
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<DebuildPresent>false</DebuildPresent>
|
<DebuildPresent>false</DebuildPresent>
|
||||||
<DebuildPresent Condition=" '$(DebuildExitCode)' == '0' ">true</DebuildPresent>
|
<DebuildPresent Condition=" '$(DebuildExitCode)' == '0' ">true</DebuildPresent>
|
||||||
|
|
||||||
<DebianPackagingScript>$(RepoRoot)/scripts/package/package-debian.sh</DebianPackagingScript>
|
<DotnetDebToolVersion></DotnetDebToolVersion>
|
||||||
<ManpagesDirectory>$(RepoRoot)/Documentation/manpages</ManpagesDirectory>
|
<DotnetDebToolPackageSource></DotnetDebToolPackageSource>
|
||||||
|
|
||||||
<InstallerOutputDirectory>$(PackagesDirectory)</InstallerOutputDirectory>
|
<DebianPackagingScript>$(RepoRoot)/scripts/package/package-debian.sh</DebianPackagingScript>
|
||||||
<SdkInstallerFile>$(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension)</SdkInstallerFile>
|
<ManpagesDirectory>$(RepoRoot)/Documentation/manpages</ManpagesDirectory>
|
||||||
|
|
||||||
<SdkDebianPackageName>dotnet-dev-$(SdkVersion)</SdkDebianPackageName>
|
<InstallerOutputDirectory>$(PackagesDirectory)</InstallerOutputDirectory>
|
||||||
<SharedFrameworkDebianPackageName>dotnet-sharedframework-$(SharedFrameworkName)-$(SharedFrameworkVersion)</SharedFrameworkDebianPackageName>
|
<SdkInstallerFile>$(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk)$(InstallerExtension)</SdkInstallerFile>
|
||||||
<SharedFrameworkDebianPackageName>$(SharedFrameworkDebianPackageName.ToLower())</SharedFrameworkDebianPackageName>
|
|
||||||
<HostFxrDebianPackageName>dotnet-hostfxr-$(HostFxrVersion)</HostFxrDebianPackageName>
|
|
||||||
<HostFxrDebianPackageName>$(HostFxrDebianPackageName.ToLower())</HostFxrDebianPackageName>
|
|
||||||
<SharedHostDebianPackageName>dotnet-host</SharedHostDebianPackageName>
|
|
||||||
|
|
||||||
<SdkDebianIntermediateDirectory>$(IntermediateDirectory)/debian/sdk</SdkDebianIntermediateDirectory>
|
<SdkDebianPackageName>dotnet-dev-$(SdkVersion)</SdkDebianPackageName>
|
||||||
|
<SharedFrameworkDebianPackageName>dotnet-sharedframework-$(SharedFrameworkName)-$(SharedFrameworkVersion)</SharedFrameworkDebianPackageName>
|
||||||
|
<SharedFrameworkDebianPackageName>$(SharedFrameworkDebianPackageName.ToLower())</SharedFrameworkDebianPackageName>
|
||||||
|
<HostFxrDebianPackageName>dotnet-hostfxr-$(HostFxrVersion)</HostFxrDebianPackageName>
|
||||||
|
<HostFxrDebianPackageName>$(HostFxrDebianPackageName.ToLower())</HostFxrDebianPackageName>
|
||||||
|
<SharedHostDebianPackageName>dotnet-host</SharedHostDebianPackageName>
|
||||||
|
|
||||||
<DebianTestResultsXmlFile>$(SdkDebianIntermediateDirectory)/debian-testResults.xml</DebianTestResultsXmlFile>
|
<SdkDebianIntermediateDirectory>$(IntermediateDirectory)/debian/sdk</SdkDebianIntermediateDirectory>
|
||||||
<DebianInstalledDirectory>/usr/share/dotnet</DebianInstalledDirectory>
|
|
||||||
<EndToEndTestDirectory>$(RepoRoot)/test/EndToEnd</EndToEndTestDirectory>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<DebianTestResultsXmlFile>$(SdkDebianIntermediateDirectory)/debian-testResults.xml</DebianTestResultsXmlFile>
|
||||||
<TestSdkDebTaskEnvironmentVariables Include="PATH=$(DebianInstalledDirectory)$(PathListSeparator)$(PATH)" />
|
<DebianInstalledDirectory>/usr/share/dotnet</DebianInstalledDirectory>
|
||||||
</ItemGroup>
|
<EndToEndTestDirectory>$(RepoRoot)/test/EndToEnd</EndToEndTestDirectory>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- Consumed By Publish -->
|
<ItemGroup>
|
||||||
<ItemGroup>
|
<TestSdkDebTaskEnvironmentVariables Include="PATH=$(DebianInstalledDirectory)$(PathListSeparator)$(PATH)" />
|
||||||
<GeneratedInstallers Include="$(SdkInstallerFile)" />
|
</ItemGroup>
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<!-- Consumed By Publish -->
|
||||||
<SdkDebInputFiles Include="$(SdkLayoutOutputDirectory)/**/*" />
|
<ItemGroup>
|
||||||
</ItemGroup>
|
<GeneratedInstallers Include="$(SdkInstallerFile)" />
|
||||||
</Target>
|
</ItemGroup>
|
||||||
|
|
||||||
<Target Name="GenerateSdkDeb"
|
<ItemGroup>
|
||||||
Condition=" '$(OSName)' == 'ubuntu' and '$(DebuildPresent)' == 'true' "
|
<SdkDebInputFiles Include="$(SdkLayoutOutputDirectory)/**/*" />
|
||||||
Inputs="@(SdkDebInputFiles);"
|
</ItemGroup>
|
||||||
Outputs="$(SdkInstallerFile)" >
|
</Target>
|
||||||
|
|
||||||
<!-- Install Packages -->
|
<Target Name="GenerateSdkDeb"
|
||||||
<Exec Command="sudo dpkg -i $(DownloadedSharedHostInstallerFile)" />
|
Condition=" '$(OSName)' == 'ubuntu' and '$(DebuildPresent)' == 'true' "
|
||||||
<Exec Command="sudo dpkg -i $(DownloadedHostFxrInstallerFile)" />
|
Inputs="@(SdkDebInputFiles);"
|
||||||
<Exec Command="sudo dpkg -i $(DownloadedSharedFrameworkInstallerFile)" />
|
Outputs="$(SdkInstallerFile)" >
|
||||||
|
|
||||||
<Exec Command="'$(DebianPackagingScript)'
|
<!-- Clean the workspace -->
|
||||||
-v '$(SdkVersion)'
|
<ItemGroup>
|
||||||
-i '$(SdkLayoutOutputDirectory)'
|
<SdkDebianFilesToClean Remove="*" />
|
||||||
-o '$(SdkInstallerFile)'
|
<SdkDebianFilesToClean Include="$(SdkInstallerFile)" />
|
||||||
-p '$(SdkDebianPackageName)'
|
|
||||||
-b '$(SdkBrandName)'
|
|
||||||
-m '$(ManpagesDirectory)'
|
|
||||||
--framework-debian-package-name '$(SharedFrameworkDebianPackageName)'
|
|
||||||
--framework-nuget-name '$(SharedFrameworkName)'
|
|
||||||
--framework-nuget-version '$(SharedFrameworkVersion)'
|
|
||||||
--obj-root '$(SdkDebianIntermediateDirectory)'" />
|
|
||||||
|
|
||||||
<!-- Remove Packages -->
|
<SdkDebianDirectoriesToClean Remove="*" />
|
||||||
<Exec Command="sudo dpkg -r $(SdkDebianPackageName)" />
|
<SdkDebianDirectoriesToClean Include="$(SdkDebianIntermediateDirectory)" />
|
||||||
<Exec Command="sudo dpkg -r $(SharedFrameworkDebianPackageName)" />
|
<SdkDebianDirectoriesToClean Include="$(SdkDebianLayoutOutputDirectory)" />
|
||||||
<Exec Command="sudo dpkg -r $(HostFxrDebianPackageName)" />
|
</ItemGroup>
|
||||||
<Exec Command="sudo dpkg -r $(SharedHostDebianPackageName)" />
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="TestSdkDeb"
|
<Delete Condition=" 'Exists(%(SdkDebianFilesToClean))' " Files="%(SdkDebianFilesToClean)" />
|
||||||
Condition=" '$(OSName)' == 'ubuntu' and '$(DebuildPresent)' == 'true' "
|
<RemoveDir Condition=" 'Exists(%(SdkDebianDirectoriesToClean))' " Directories="%(SdkDebianDirectoriesToClean)" />
|
||||||
Inputs="$(DownloadedSharedHostInstallerFile);
|
<MakeDir Directories="@(SdkDebianDirectoriesToClean)" />
|
||||||
$(DownloadedHostFxrInstallerFile);
|
|
||||||
$(DownloadedSharedFrameworkInstallerFile);
|
|
||||||
$(SdkInstallerFile);"
|
|
||||||
Outputs="$(DebianTestResultsXmlFile)" >
|
|
||||||
|
|
||||||
<!-- Install Packages -->
|
<!-- Install Packages -->
|
||||||
<Exec Command="sudo dpkg -i $(DownloadedSharedHostInstallerFile)" />
|
<Exec Command="sudo dpkg -i $(DownloadedSharedHostInstallerFile)" />
|
||||||
<Exec Command="sudo dpkg -i $(DownloadedHostFxrInstallerFile)" />
|
<Exec Command="sudo dpkg -i $(DownloadedHostFxrInstallerFile)" />
|
||||||
<Exec Command="sudo dpkg -i $(DownloadedSharedFrameworkInstallerFile)" />
|
<Exec Command="sudo dpkg -i $(DownloadedSharedFrameworkInstallerFile)" />
|
||||||
<Exec Command="sudo dpkg -i $(SdkInstallerFile)" />
|
|
||||||
|
|
||||||
<!-- Run E2E -->
|
<!-- Create layout -->
|
||||||
<DotNetTest WorkingDirectory="$(EndToEndTestDirectory)"
|
|
||||||
EnvironmentVariables="@(TestSdkDebTaskEnvironmentVariables)"
|
|
||||||
ToolPath="$(DebianInstalledDirectory)"
|
|
||||||
Xml="$(DebianTestResultsXmlFile)" />
|
|
||||||
|
|
||||||
<!-- Remove Packages -->
|
|
||||||
<Exec Command="sudo dpkg -r $(SdkDebianPackageName)" />
|
|
||||||
<Exec Command="sudo dpkg -r $(SharedFrameworkDebianPackageName)" />
|
|
||||||
<Exec Command="sudo dpkg -r $(HostFxrDebianPackageName)" />
|
|
||||||
<Exec Command="sudo dpkg -r $(SharedHostDebianPackageName)" />
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="GenerateDebs"
|
<Exec Command="'$(DebianPackagingScript)'
|
||||||
DependsOnTargets="Init;
|
-v '$(SdkVersion)'
|
||||||
Layout;
|
-i '$(SdkLayoutOutputDirectory)'
|
||||||
SetupGenerateDebInputsOutputs;
|
-o '$(SdkInstallerFile)'
|
||||||
GenerateSdkDeb;
|
-p '$(SdkDebianPackageName)'
|
||||||
TestSdkDeb;"
|
-b '$(SdkBrandName)'
|
||||||
Condition=" '$(OSName)' == 'ubuntu' " />
|
-m '$(ManpagesDirectory)'
|
||||||
|
--framework-debian-package-name '$(SharedFrameworkDebianPackageName)'
|
||||||
|
--framework-nuget-name '$(SharedFrameworkName)'
|
||||||
|
--framework-nuget-version '$(SharedFrameworkVersion)'
|
||||||
|
--obj-root '$(SdkDebianIntermediateDirectory)'" />
|
||||||
|
|
||||||
|
<!-- Remove Packages -->
|
||||||
|
<Exec Command="sudo dpkg -r $(SdkDebianPackageName)" />
|
||||||
|
<Exec Command="sudo dpkg -r $(SharedFrameworkDebianPackageName)" />
|
||||||
|
<Exec Command="sudo dpkg -r $(HostFxrDebianPackageName)" />
|
||||||
|
<Exec Command="sudo dpkg -r $(SharedHostDebianPackageName)" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="TestSdkDeb"
|
||||||
|
Condition=" '$(OSName)' == 'ubuntu' and '$(DebuildPresent)' == 'true' "
|
||||||
|
Inputs="$(DownloadedSharedHostInstallerFile);
|
||||||
|
$(DownloadedHostFxrInstallerFile);
|
||||||
|
$(DownloadedSharedFrameworkInstallerFile);
|
||||||
|
$(SdkInstallerFile);"
|
||||||
|
Outputs="$(DebianTestResultsXmlFile)" >
|
||||||
|
|
||||||
|
<!-- Install Packages -->
|
||||||
|
<Exec Command="sudo dpkg -i $(DownloadedSharedHostInstallerFile)" />
|
||||||
|
<Exec Command="sudo dpkg -i $(DownloadedHostFxrInstallerFile)" />
|
||||||
|
<Exec Command="sudo dpkg -i $(DownloadedSharedFrameworkInstallerFile)" />
|
||||||
|
<Exec Command="sudo dpkg -i $(SdkInstallerFile)" />
|
||||||
|
|
||||||
|
<!-- Run E2E -->
|
||||||
|
<DotNetTest WorkingDirectory="$(EndToEndTestDirectory)"
|
||||||
|
EnvironmentVariables="@(TestSdkDebTaskEnvironmentVariables)"
|
||||||
|
ToolPath="$(DebianInstalledDirectory)"
|
||||||
|
Xml="$(DebianTestResultsXmlFile)" />
|
||||||
|
|
||||||
|
<!-- Remove Packages -->
|
||||||
|
<Exec Command="sudo dpkg -r $(SdkDebianPackageName)" />
|
||||||
|
<Exec Command="sudo dpkg -r $(SharedFrameworkDebianPackageName)" />
|
||||||
|
<Exec Command="sudo dpkg -r $(HostFxrDebianPackageName)" />
|
||||||
|
<Exec Command="sudo dpkg -r $(SharedHostDebianPackageName)" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="GenerateDebs"
|
||||||
|
DependsOnTargets="Init;
|
||||||
|
Layout;
|
||||||
|
SetupGenerateDebInputsOutputs;
|
||||||
|
GenerateSdkDeb;
|
||||||
|
TestSdkDeb;"
|
||||||
|
Condition=" '$(OSName)' == 'ubuntu' " />
|
||||||
|
|
||||||
|
<Target Name="PrepareDotnetDebTool"
|
||||||
|
DependsOnTargets="WriteDotnetDebToolProjectJson;">
|
||||||
|
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="WriteDotnetDebToolProjectJson" >
|
||||||
|
<ItemGroup>
|
||||||
|
<AssemblyInfoLines Include="{" />
|
||||||
|
<AssemblyInfoLines Include="%20%20%20%20"version": "1.0.0-*"," />
|
||||||
|
<AssemblyInfoLines Include="%20%20%20%20"name": "$(DotnetDebToolConsumerProjectName)"," />
|
||||||
|
<AssemblyInfoLines Include="%20%20%20%20"frameworks": { "netcoreapp1.0": {} }," />
|
||||||
|
<AssemblyInfoLines Include="%20%20%20%20"tools": {{"$(DotnetDebToolPackageId)": "$(DotnetDebToolVersion)" }}" />
|
||||||
|
<AssemblyInfoLines Include="}" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -9,35 +9,22 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.DotNet.Cli.Build.Framework;
|
using Microsoft.DotNet.Cli.Build.Framework;
|
||||||
|
|
||||||
using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Cli.Build
|
namespace Microsoft.DotNet.Cli.Build
|
||||||
{
|
{
|
||||||
public class DebPackageCreator
|
public class DebPackageCreator
|
||||||
{
|
{
|
||||||
private static readonly string s_dotnetDebToolPackageId = "dotnet-deb-tool";
|
private string _dotnet;
|
||||||
private static readonly string s_toolConsumerProjectName = "dotnet-deb-tool-consumer";
|
|
||||||
private static readonly string s_debianConfigJsonFileName = "debian_config.json";
|
|
||||||
|
|
||||||
private DotNetCli _dotnet;
|
|
||||||
private string _intermediateDirectory;
|
private string _intermediateDirectory;
|
||||||
private string _dotnetDebToolVersion;
|
private string _dotnetDebToolVersion;
|
||||||
private string _dotnetDebToolPackageSource;
|
private string _dotnetDebToolPackageSource;
|
||||||
private string _consumingProjectDirectory;
|
private string _consumingProjectDirectory;
|
||||||
|
|
||||||
public DebPackageCreator(
|
public DebPackageCreator(
|
||||||
DotNetCli dotnet,
|
string dotnet,
|
||||||
string intermediateDirectory,
|
string intermediateDirectory,
|
||||||
string dotnetDebToolVersion = "1.0.0-*",
|
string dotnetDebToolVersion,
|
||||||
string dotnetDebToolPackageSource = null)
|
string dotnetDebToolPackageSource = null)
|
||||||
{
|
{
|
||||||
_dotnet = dotnet;
|
|
||||||
_intermediateDirectory = intermediateDirectory;
|
|
||||||
_dotnetDebToolVersion = dotnetDebToolVersion;
|
|
||||||
_dotnetDebToolPackageSource = dotnetDebToolPackageSource;
|
|
||||||
|
|
||||||
_consumingProjectDirectory = Path.Combine(_intermediateDirectory, s_toolConsumerProjectName);
|
|
||||||
|
|
||||||
InitializeDotnetDebTool();
|
InitializeDotnetDebTool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,11 +40,6 @@ namespace Microsoft.DotNet.Cli.Build
|
||||||
IEnumerable<string> debianFiles = null)
|
IEnumerable<string> debianFiles = null)
|
||||||
{
|
{
|
||||||
string debIntermediatesDirectory = Path.Combine(_intermediateDirectory, packageName, packageVersion);
|
string debIntermediatesDirectory = Path.Combine(_intermediateDirectory, packageName, packageVersion);
|
||||||
if (Directory.Exists(debIntermediatesDirectory))
|
|
||||||
{
|
|
||||||
FS.Rmdir(debIntermediatesDirectory);
|
|
||||||
}
|
|
||||||
FS.Mkdirp(debIntermediatesDirectory);
|
|
||||||
|
|
||||||
string layoutDirectory = Path.Combine(debIntermediatesDirectory, "debianLayoutDirectory");
|
string layoutDirectory = Path.Combine(debIntermediatesDirectory, "debianLayoutDirectory");
|
||||||
var debianLayoutDirectories = new DebianLayoutDirectories(layoutDirectory);
|
var debianLayoutDirectories = new DebianLayoutDirectories(layoutDirectory);
|
||||||
|
@ -77,12 +59,6 @@ namespace Microsoft.DotNet.Cli.Build
|
||||||
|
|
||||||
private void CreateEmptyDebianLayout(DebianLayoutDirectories layoutDirectories)
|
private void CreateEmptyDebianLayout(DebianLayoutDirectories layoutDirectories)
|
||||||
{
|
{
|
||||||
if (Directory.Exists(layoutDirectories.LayoutDirectory))
|
|
||||||
{
|
|
||||||
FS.Rmdir(layoutDirectories.LayoutDirectory);
|
|
||||||
}
|
|
||||||
Directory.CreateDirectory(layoutDirectories.LayoutDirectory);
|
|
||||||
|
|
||||||
Directory.CreateDirectory(layoutDirectories.AbsolutePlacement);
|
Directory.CreateDirectory(layoutDirectories.AbsolutePlacement);
|
||||||
Directory.CreateDirectory(layoutDirectories.PackageRoot);
|
Directory.CreateDirectory(layoutDirectories.PackageRoot);
|
||||||
Directory.CreateDirectory(layoutDirectories.Samples);
|
Directory.CreateDirectory(layoutDirectories.Samples);
|
||||||
|
|
Loading…
Reference in a new issue