mirror of
https://github.com/quamotion/dotnet-packaging.git
synced 2026-02-04 05:35:40 +00:00
Merge pull request #132 from qmfrederik/features/rpm-dotnet-dependencies
Support implicit .NET dependencies for RPM packages, too
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)"
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user