From 64cd20ff5d0d6af33fdd974c9cfdc4623105b83f Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Thu, 17 Sep 2020 13:38:31 +0200 Subject: [PATCH] Add support for recommended packages on Debian --- Packaging.Targets/Deb/DebPackageCreator.cs | 8 +++++++- Packaging.Targets/DebTask.cs | 15 +++++++++++++++ Packaging.Targets/build/Packaging.Targets.targets | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Packaging.Targets/Deb/DebPackageCreator.cs b/Packaging.Targets/Deb/DebPackageCreator.cs index dfc94dd..2ac3d31 100644 --- a/Packaging.Targets/Deb/DebPackageCreator.cs +++ b/Packaging.Targets/Deb/DebPackageCreator.cs @@ -33,6 +33,7 @@ namespace Packaging.Targets.Deb string preRemoveScript, string postRemoveScript, IEnumerable additionalDependencies, + IEnumerable recommends, Action 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; diff --git a/Packaging.Targets/DebTask.cs b/Packaging.Targets/DebTask.cs index ad4daea..586873e 100644 --- a/Packaging.Targets/DebTask.cs +++ b/Packaging.Targets/DebTask.cs @@ -88,6 +88,12 @@ namespace Packaging.Targets /// public ITaskItem[] DebDependencies { get; set; } + /// + /// Gets or sets a list of Debian packages which this Debian + /// package recommends. + /// + public ITaskItem[] DebRecommends { get; set; } + /// /// 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 recommends = new List(); + + 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( diff --git a/Packaging.Targets/build/Packaging.Targets.targets b/Packaging.Targets/build/Packaging.Targets.targets index 6f895b8..384ff15 100644 --- a/Packaging.Targets/build/Packaging.Targets.targets +++ b/Packaging.Targets/build/Packaging.Targets.targets @@ -176,6 +176,7 @@ DebDependencies="@(DebDependency)" DebDotNetDependencies="@(DebDotNetDependencies)" DebPackageArchitecture="$(DebPackageArchitecture)" + DebRecommends="@(DebRecommends)" RuntimeIdentifier="$(RuntimeIdentifier)" CreateUser="$(CreateUser)" Maintainer="$(PackageMaintainer)"