Add support for recommended packages on Debian

This commit is contained in:
Frederik Carlier
2020-09-17 13:38:31 +02:00
parent 24dbd125d5
commit 64cd20ff5d
3 changed files with 23 additions and 1 deletions

View File

@@ -33,6 +33,7 @@ namespace Packaging.Targets.Deb
string preRemoveScript,
string postRemoveScript,
IEnumerable<string> additionalDependencies,
IEnumerable<string> recommends,
Action<DebPackage> additionalMetadata)
{
var pkg = new DebPackage
@@ -130,11 +131,16 @@ namespace Packaging.Targets.Deb
}
}
if (additionalDependencies != null)
if (additionalDependencies != null && additionalDependencies.Any())
{
pkg.ControlFile["Depends"] = string.Join(", ", additionalDependencies);
}
if (recommends != null && recommends.Any())
{
pkg.ControlFile["Recommends"] = string.Join(", ", recommends);
}
additionalMetadata?.Invoke(pkg);
return pkg;

View File

@@ -88,6 +88,12 @@ namespace Packaging.Targets
/// </summary>
public ITaskItem[] DebDependencies { get; set; }
/// <summary>
/// Gets or sets a list of Debian packages which this Debian
/// package recommends.
/// </summary>
public ITaskItem[] DebRecommends { get; set; }
/// <summary>
/// Gets or sets a value indicating whether to create a Linux
/// user and group when installing the package.
@@ -230,6 +236,14 @@ namespace Packaging.Targets
dependencies.AddRange(debDotNetDependencies);
}
// Prepare the list of recommended dependencies
List<string> recommends = new List<string>();
if (this.DebRecommends != null)
{
recommends.AddRange(this.DebRecommends.Select(d => d.ItemSpec));
}
// XZOutputStream class has low quality (doesn't even know it's current position,
// needs to be disposed to finish compression, etc),
// So we are doing compression in a separate step
@@ -261,6 +275,7 @@ namespace Packaging.Targets
this.PreRemoveScript,
this.PostRemoveScript,
dependencies,
recommends,
null);
DebPackageCreator.WriteDebPackage(

View File

@@ -176,6 +176,7 @@
DebDependencies="@(DebDependency)"
DebDotNetDependencies="@(DebDotNetDependencies)"
DebPackageArchitecture="$(DebPackageArchitecture)"
DebRecommends="@(DebRecommends)"
RuntimeIdentifier="$(RuntimeIdentifier)"
CreateUser="$(CreateUser)"
Maintainer="$(PackageMaintainer)"