Merge pull request #132 from qmfrederik/features/rpm-dotnet-dependencies

Support implicit .NET dependencies for RPM packages, too
This commit is contained in:
Frederik Carlier
2019-11-26 20:06:23 +01:00
committed by GitHub
3 changed files with 61 additions and 32 deletions

View File

@@ -3,6 +3,7 @@ using Microsoft.Build.Utilities;
using Packaging.Targets.IO;
using Packaging.Targets.Rpm;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
@@ -89,6 +90,16 @@ namespace Packaging.Targets
set;
}
/// <summary>
/// Gets or sets a list of RPM packages on which the version of .NET Core
/// embedded in this RPM package dpeends.
/// </summary>
public ITaskItem[] RpmDotNetDependencies
{
get;
set;
}
/// <summary>
/// Gets or sets a list of RPM packages on which this RPM
/// package dpeends.
@@ -267,16 +278,20 @@ namespace Packaging.Targets
cpioStream.Position = 0;
// Prepare the list of dependencies
PackageDependency[] dependencies = Array.Empty<PackageDependency>();
List<PackageDependency> dependencies = new List<PackageDependency>();
if (this.RpmDotNetDependencies != null)
{
dependencies.AddRange(
this.RpmDotNetDependencies.Select(
d => GetPackageDependency(d)));
}
if (this.RpmDependencies != null)
{
dependencies = this.RpmDependencies.Select(
d => new PackageDependency(
d.ItemSpec,
RpmSense.RPMSENSE_EQUAL | RpmSense.RPMSENSE_GREATER,
d.GetVersion()))
.ToArray();
dependencies.AddRange(
this.RpmDependencies.Select(
d => GetPackageDependency(d)));
}
RpmPackageCreator rpmCreator = new RpmPackageCreator();
@@ -308,5 +323,18 @@ namespace Packaging.Targets
this.Log.LogMessage(MessageImportance.Normal, "Created RPM package '{0}' from folder '{1}'", this.RpmPath, this.PublishDir);
return true;
}
private static PackageDependency GetPackageDependency(ITaskItem dependency)
{
if (dependency == null)
{
return null;
}
return new PackageDependency(
dependency.ItemSpec,
RpmSense.RPMSENSE_EQUAL | RpmSense.RPMSENSE_GREATER,
dependency.GetVersion());
}
}
}

View File

@@ -61,22 +61,22 @@
- Upstream lists compat libraries for OpenSSL 1.0 instead of OpenSSL 1.1, that
seems like an oversight.
-->
<ItemGroup Condition="'@(RpmDependency)' == '' AND '$(RuntimeIdentifier)' == '' AND '$(TargetFramework)' == 'netcoreapp2.1'">
<RpmDependency Include="dotnet-runtime-2.1" Version="" />
<ItemGroup Condition="'@(RpmDotNetDependency)' == '' AND '$(RuntimeIdentifier)' == '' AND '$(TargetFramework)' == 'netcoreapp2.1'">
<RpmDotNetDependency Include="dotnet-runtime-2.1" Version="" />
</ItemGroup>
<ItemGroup Condition="'@(RpmDependency)' == '' AND '$(RuntimeIdentifier)' == '' AND '$(TargetFramework)' == 'netcoreapp2.2'">
<RpmDependency Include="dotnet-runtime-2.2" Version="" />
<ItemGroup Condition="'@(RpmDotNetDependency)' == '' AND '$(RuntimeIdentifier)' == '' AND '$(TargetFramework)' == 'netcoreapp2.2'">
<RpmDotNetDependency Include="dotnet-runtime-2.2" Version="" />
</ItemGroup>
<ItemGroup Condition="'@(RpmDependency)' == '' AND '$(RuntimeIdentifier)' == '' AND '$(TargetFramework)' == 'netcoreapp3.0'">
<RpmDependency Include="dotnet-runtime-3.0" Version="" />
<ItemGroup Condition="'@(RpmDotNetDependency)' == '' AND '$(RuntimeIdentifier)' == '' AND '$(TargetFramework)' == 'netcoreapp3.0'">
<RpmDotNetDependency Include="dotnet-runtime-3.0" Version="" />
</ItemGroup>
<ItemGroup Condition="'@(RpmDependency)' == '' AND '$(RuntimeIdentifier)' != ''">
<RpmDependency Include="openssl-libs" Version="" />
<RpmDependency Include="libicu" Version="" />
<RpmDependency Include="krb5-libs" Version="" />
<ItemGroup Condition="'@(RpmDotNetDependency)' == '' AND '$(RuntimeIdentifier)' != ''">
<RpmDotNetDependency Include="openssl-libs" Version="" />
<RpmDotNetDependency Include="libicu" Version="" />
<RpmDotNetDependency Include="krb5-libs" Version="" />
</ItemGroup>
<Message Text="Creating RPM package $(RpmPath)" Importance="high"/>
@@ -92,6 +92,7 @@
PackageName="$(PackageName)"
Content="@(Content)"
LinuxFolders="@(LinuxFolder)"
RpmDotNetDependencies="@(RpmDotNetDependency)"
RpmDependencies="@(RpmDependency)"
RpmPackageArchitecture="$(RpmPackageArchitecture)"
RuntimeIdentifier="$(RuntimeIdentifier)"

View File

@@ -42,34 +42,34 @@
<!-- Fedora, CentOS, and RHEL dependencies -->
<ItemGroup Condition="$(RuntimeIdentifier.StartsWith('rhel')) OR $(RuntimeIdentifier.StartsWith('fedora')) OR $(RuntimeIdentifier.StartsWith('ol'))">
<RpmDependency Include="libstdc++" Version="" />
<RpmDependency Include="libunwind" Version="" />
<RpmDependency Include="libicu" Version="" />
<RpmDotNetDependency Include="libstdc++" Version="" />
<RpmDotNetDependency Include="libunwind" Version="" />
<RpmDotNetDependency Include="libicu" Version="" />
</ItemGroup>
<ItemGroup Condition="$(RuntimeIdentifier.StartsWith('rhel')) OR $(RuntimeIdentifier.StartsWith('fedora'))">
<RpmDependency Include="compat-openssl10" Version="" />
<RpmDotNetDependency Include="compat-openssl10" Version="" />
</ItemGroup>
<ItemGroup Condition="$(RuntimeIdentifier.StartsWith('ol'))">
<RpmDependency Include="openssl-libs" Version="" />
<RpmDotNetDependency Include="openssl-libs" Version="" />
</ItemGroup>
<ItemGroup Condition="$(RuntimeIdentifier.StartsWith('centos'))">
<!-- <RpmDependency Include="lttng-ust" Version=""/> -->
<RpmDependency Include="libcurl" Version="" />
<RpmDependency Include="openssl-libs" Version="" />
<RpmDependency Include="krb5-libs" Version="" />
<RpmDependency Include="libicu" Version="" />
<RpmDependency Include="zlib" Version="" />
<RpmDependency Include="libunwind" Version="" Condition="'$(TargetFramework)'=='netcoreapp2.0'" />
<RpmDependency Include="libuuid" Version="" Condition="'$(TargetFramework)'=='netcoreapp2.0'" />
<RpmDotNetDependency Include="libcurl" Version="" />
<RpmDotNetDependency Include="openssl-libs" Version="" />
<RpmDotNetDependency Include="krb5-libs" Version="" />
<RpmDotNetDependency Include="libicu" Version="" />
<RpmDotNetDependency Include="zlib" Version="" />
<RpmDotNetDependency Include="libunwind" Version="" Condition="'$(TargetFramework)'=='netcoreapp2.0'" />
<RpmDotNetDependency Include="libuuid" Version="" Condition="'$(TargetFramework)'=='netcoreapp2.0'" />
</ItemGroup>
<ItemGroup Condition="$(RuntimeIdentifier.StartsWith('opensuse'))">
<RpmDependency Include="libopenssl1_0_0" Version="" />
<RpmDependency Include="libicu52_1" Version="" />
<RpmDependency Include="krb5" Version="" />
<RpmDotNetDependency Include="libopenssl1_0_0" Version="" />
<RpmDotNetDependency Include="libicu52_1" Version="" />
<RpmDotNetDependency Include="krb5" Version="" />
</ItemGroup>
<PropertyGroup>