From patchwork Sun Oct 27 18:16:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 69541 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 68E2327BBEA; Sun, 27 Oct 2024 18:20:54 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id A0BD027BBE2 for ; Sun, 27 Oct 2024 18:20:52 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t57sZ-0003iY-9c; Sun, 27 Oct 2024 14:20:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t57sM-0003hO-Gk for guix-patches@gnu.org; Sun, 27 Oct 2024 14:20:31 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1t57sJ-0007kT-Kl for guix-patches@gnu.org; Sun, 27 Oct 2024 14:20:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=g4nQcyMzK+ts0qpKy2VcVEnJTWvYP6tNVttgy8sUZOc=; b=ZTQN+Bkgkr9rNpUZ+wlP235GGcWSqCDnHRfes8qfV69fyOQaOU6ngKgStuTV7EEHX3Gmyl9Q1Y3/osVLwn/OywwJup6RHojOnniwPpFOK/RIO1jvetgCb0D7vLSaNy3aYkHgOMHERyRmW8VY5F4dpHoWm1SrYQ4b4XLlwnPXFAjNSWsiUEnxMGWoRJS2XHGTY8mewrQdX2Wk1HOhPqfxWb071l4b+YxxdvWol5ZevUnL/vRhJRGRgTG6YPUXjP8fH6o+q7eJt6MSwJiI2H6IqYvj/3V9BOkUTzH8Q5Q4g/1z986g7RSc8E7YNfpHpQFcZpAA/0bQfC7z2659cFf1bQ==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1t57ss-0003OZ-KH for guix-patches@gnu.org; Sun, 27 Oct 2024 14:21:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#74034] [PATCH v2 01/16] guix: cve: Add cpe-vendor and lint-hidden-cpe-vendors properties. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 27 Oct 2024 18:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74034 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: moreinfo patch To: 74034@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 74034-submit@debbugs.gnu.org id=B74034.173005324512893 (code B ref 74034); Sun, 27 Oct 2024 18:21:02 +0000 Received: (at 74034) by debbugs.gnu.org; 27 Oct 2024 18:20:45 +0000 Received: from localhost ([127.0.0.1]:46183 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t57sa-0003LQ-80 for submit@debbugs.gnu.org; Sun, 27 Oct 2024 14:20:45 -0400 Received: from 8.mo582.mail-out.ovh.net ([178.33.42.204]:53063) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t57sS-0003HL-NQ for 74034@debbugs.gnu.org; Sun, 27 Oct 2024 14:20:38 -0400 Received: from director7.ghost.mail-out.ovh.net (unknown [10.108.17.219]) by mo582.mail-out.ovh.net (Postfix) with ESMTP id 4Xc4Yr0NxVz1L9d for <74034@debbugs.gnu.org>; Sun, 27 Oct 2024 18:19:59 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-gd6bc (unknown [10.110.168.82]) by director7.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 5CBF11FD86; Sun, 27 Oct 2024 18:19:59 +0000 (UTC) Received: from ngraves.fr ([37.59.142.110]) by ghost-submission-5b5ff79f4f-gd6bc with ESMTPSA id KOG8DU+EHmcLCwAA1rbj1A (envelope-from ); Sun, 27 Oct 2024 18:19:59 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-110S004dfcdbf46-b2c8-4e38-bf77-7a49922079c6, E6BF9B87AE7FBE7894246B3B643E76DCC103CD4C) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 86.246.19.221 Date: Sun, 27 Oct 2024 19:16:57 +0100 Message-ID: <20241027181946.25348-2-ngraves@ngraves.fr> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241027181946.25348-1-ngraves@ngraves.fr> References: <20241027181946.25348-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 9533838940269175522 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeftddrvdejiedgledvucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdekiedrvdegiedrudelrddvvddupdefjedrheelrddugedvrdduuddtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepuddprhgtphhtthhopeejgedtfeegseguvggssghughhsrdhgnhhurdhorhhgpdfovfetjfhoshhtpehmohehkedvpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=g4nQcyMzK+ts0qpKy2VcVEnJTWvYP6tNVttgy8sUZOc=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1730053200; v=1; b=eTIYBOFQSWxX4bAp35UeFgdi1nyMr6qkZ1LQjg1tzIPqD/tVy9vBxBqZ80MrZ+mcU3h4sktH R+CuIph/NNP5MMv1PYLUET1HBJFlEhA/rOjQ/FncA5B724lixYKIluRk+1SrcBNKhF/p+NBotV2 SRIgPLYXpWY+UtCqxG/DrkO+jv7QOKs2KdoI+PMtFNTAx/WkPM4zvqQZD5KUX9nHz65b45RhHTV BQcWyHMQsv9Pf3Du5aXij2dhmpHoUsI4BrajJ9SdOYLUQCWYh3YIRno6BW7Dz/AN+TWlhaEsHci orCFZiSKkt+0Hz2AZkAx9VbAh0VLVhLQn2rTXwFt5HHJQ== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/cve.scm: Exploit cpe vendors information. (cpe->package-name): Rename to cpe->package and use cpe_vendor:cpe_name in place or cpe_name. (filter-vendors): Add helper function. (vulnerabilities->lookup-proc): Extract cpe_name for table hashes. Add vendor and hidden-vendor arguments. Adapt condition to pass vulnerabilities to result in the fold. * guix/lint.scm (package-vulnerabilities): Use additional arguments from vulnerabilities->lookup-proc. * tests/cve.scm: Adapt tests. --- guix/cve.scm | 71 +++++++++++++++++++++++++++++++++------------------ guix/lint.scm | 11 ++++++-- tests/cve.scm | 30 +++++++++++----------- 3 files changed, 70 insertions(+), 42 deletions(-) diff --git a/guix/cve.scm b/guix/cve.scm index 9e1cf5b587..a2335f15ef 100644 --- a/guix/cve.scm +++ b/guix/cve.scm @@ -106,22 +106,22 @@ (define (reference-data->cve-references alist) (define %cpe-package-rx ;; For applications: "cpe:2.3:a:VENDOR:PACKAGE:VERSION", or sometimes ;; "cpe:2.3:a:VENDOR:PACKAGE:VERSION:PATCH-LEVEL". - (make-regexp "^cpe:2\\.3:a:([^:]+):([^:]+):([^:]+):([^:]+):")) + (make-regexp "^cpe:2\\.3:a:([^:]+:[^:]+):([^:]+):([^:]+):")) -(define (cpe->package-name cpe) +(define (cpe->package cpe) "Converts the Common Platform Enumeration (CPE) string CPE to a package -name, in a very naive way. Return two values: the package name, and its -version string. Return #f and #f if CPE does not look like an application CPE -string." +name, in a very naive way. Return two values: the package identifier +(composed from the CPE vendor and the package name), and its version string. +Return #f and #f if CPE does not look like an application CPE string." (cond ((regexp-exec %cpe-package-rx cpe) => (lambda (matches) - (values (match:substring matches 2) - (match (match:substring matches 3) + (values (match:substring matches 1) + (match (match:substring matches 2) ("*" '_) (version (string-append version - (match (match:substring matches 4) + (match (match:substring matches 3) ("" "") (patch-level ;; Drop the colon from things like @@ -142,7 +142,7 @@ (define (cpe-match->cve-configuration alist) ;; Normally "cpe23Uri" is here in each "cpe_match" item, but CVE-2020-0534 ;; has a configuration that lacks it. (and cpe - (let-values (((package version) (cpe->package-name cpe))) + (let-values (((package version) (cpe->package cpe))) (and package `(,package ,(cond ((and (or starti starte) (or endi ende)) @@ -228,6 +228,24 @@ (define (version-matches? version sexp) (('>= min) (version>=? version min)))) +(define (filter-vendors vuln vendor hidden-vendors) + + (define (vendor-matches? vendor+name) + (if vendor + (string-prefix? (string-append vendor ":") vendor+name) + (if hidden-vendors + (not (any (lambda (v) + (string-prefix? (string-append v ":") vendor+name)) + hidden-vendors)) + #t))) + + (match vuln + (($ id packages) + (any (match-lambda + (((? vendor-matches? vendor+name) . _) #t) + (_ #f)) + packages)))) + ;;; ;;; High-level interface. @@ -404,28 +422,31 @@ (define table (($ id packages) (fold (lambda (package table) (match package - ((name . versions) - (vhash-cons name (cons vuln versions) + ((vendor+name . versions) + (vhash-cons (match (string-split vendor+name #\:) + ((vendor name) name) + ((name) name)) + (cons vuln versions) table)))) table packages)))) vlist-null vulnerabilities)) - (lambda* (package #:optional version) - (vhash-fold* (if version - (lambda (pair result) - (match pair - ((vuln sexp) - (if (version-matches? version sexp) - (cons vuln result) - result)))) - (lambda (pair result) - (match pair - ((vuln . _) - (cons vuln result))))) - '() - package table))) + (lambda* (package #:key (version #f) (vendor #f) (hidden-vendors #f)) + (vhash-fold* + (lambda (pair result) + (match pair + ((vuln sexp) + (if (and (or (not (or vendor hidden-vendors)) + (and (or vendor hidden-vendors) + (filter-vendors vuln vendor hidden-vendors))) + (or (not version) + (and version (version-matches? version sexp)))) + (cons vuln result) + result)))) + '() + package table))) ;;; cve.scm ends here diff --git a/guix/lint.scm b/guix/lint.scm index 8c6c20c723..db3f59e3ec 100644 --- a/guix/lint.scm +++ b/guix/lint.scm @@ -1551,8 +1551,15 @@ (define package-vulnerabilities (package-name package))) (version (or (assoc-ref (package-properties package) 'cpe-version) - (package-version package)))) - ((force lookup) name version))))) + (package-version package))) + (vendor (assoc-ref (package-properties package) + 'cpe-vendor)) + (hidden-vendors (assoc-ref (package-properties package) + 'lint-hidden-cpe-vendors))) + ((force lookup) name + #:version version + #:vendor vendor + #:hidden-vendors hidden-vendors))))) ;; Prevent Guile 3 from inlining this procedure so we can mock it in tests. (set! package-vulnerabilities package-vulnerabilities) diff --git a/tests/cve.scm b/tests/cve.scm index b69da0e120..0b6346a4d4 100644 --- a/tests/cve.scm +++ b/tests/cve.scm @@ -34,19 +34,19 @@ (define %expected-vulnerabilities (vulnerability "CVE-2019-0001" ;; Only the "a" CPE configurations are kept; the "o" ;; configurations are discarded. - '(("junos" (or "18.21-s4" (or "18.21-s3" "18.2"))))) + '(("juniper:junos" (or "18.21-s4" (or "18.21-s3" "18.2"))))) (vulnerability "CVE-2019-0005" - '(("junos" (or "18.11" "18.1")))) + '(("juniper:junos" (or "18.11" "18.1")))) ;; CVE-2019-0005 has no "a" configurations. (vulnerability "CVE-2019-14811" - '(("ghostscript" (< "9.28")))) + '(("artifex:ghostscript" (< "9.28")))) (vulnerability "CVE-2019-17365" - '(("nix" (<= "2.3")))) + '(("nixos:nix" (<= "2.3")))) (vulnerability "CVE-2019-1010180" - '(("gdb" _))) ;any version + '(("gnu:gdb" _))) ;any version (vulnerability "CVE-2019-1010204" - '(("binutils" (and (>= "2.21") (<= "2.31.1"))) - ("binutils_gold" (and (>= "1.11") (<= "1.16"))))) + '(("gnu:binutils" (and (>= "2.21") (<= "2.31.1"))) + ("gnu:binutils_gold" (and (>= "1.11") (<= "1.16"))))) ;; CVE-2019-18192 has no associated configurations. )) @@ -92,15 +92,15 @@ (define %expected-vulnerabilities (let* ((vulns (call-with-input-file %sample json->vulnerabilities)) (lookup (vulnerabilities->lookup-proc vulns))) (list (lookup "ghostscript") - (lookup "ghostscript" "9.27") - (lookup "ghostscript" "9.28") + (lookup "ghostscript" #:version "9.27") + (lookup "ghostscript" #:version "9.28") (lookup "gdb") - (lookup "gdb" "42.0") + (lookup "gdb" #:version "42.0") (lookup "nix") - (lookup "nix" "2.4") - (lookup "binutils" "2.31.1") - (lookup "binutils" "2.10") - (lookup "binutils_gold" "1.11") - (lookup "binutils" "2.32")))) + (lookup "nix" #:version "2.4") + (lookup "binutils" #:version "2.31.1") + (lookup "binutils" #:version "2.10") + (lookup "binutils_gold" #:version "1.11") + (lookup "binutils" #:version "2.32")))) (test-end "cve") From patchwork Sun Oct 27 18:16:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 69542 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 9EB1727BBEA; Sun, 27 Oct 2024 18:21:02 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 2CFB527BBE2 for ; Sun, 27 Oct 2024 18:21:02 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t57sb-0003jB-LL; Sun, 27 Oct 2024 14:20:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t57sM-0003hQ-H2 for guix-patches@gnu.org; Sun, 27 Oct 2024 14:20:31 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1t57sK-0007kU-Ar for guix-patches@gnu.org; Sun, 27 Oct 2024 14:20:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=i/vOn6LHbD5yjjM7DQIb3c+uyoyiSr60FZcExoJfTcE=; b=QRFKKYFTo1XKsA8Fg8ETvqN13n9ZWDQHcVdnmyepbjIQTnqy6MfzW/Q+1WVe0zQSF1evY2ujGNbOXCRVWl9uX8mhbDangqf3qUtKRCch2KVwT0RF69Wo7JWFtqAXRUMPjL2zVei7UlNB4yDUa4CXUirnnssq+MvnGTIvpH/MlFAo5pfAtbvA1glk7QpKlUToUOt+uQyYoBDnSTFNp447cl/PuxF9tw132iUCZqTWTp99hvrzBmNUCOnuqMwh37Pe3ODx54Ixhs9+HRoZMCgEmQ4Tn0BLTY08UeJbn2lBrB0kMnttVMjniaNHLb5uEnIrLD4AgokOEaCpO7X0Hr4Ewg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1t57st-0003Oh-68 for guix-patches@gnu.org; Sun, 27 Oct 2024 14:21:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#74034] [PATCH v2 02/16] gnu: halibut: Add cpe-vendor property. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 27 Oct 2024 18:21:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74034 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: moreinfo patch To: 74034@debbugs.gnu.org Cc: Nicolas Graves Received: via spool by 74034-submit@debbugs.gnu.org id=B74034.173005325813026 (code B ref 74034); Sun, 27 Oct 2024 18:21:03 +0000 Received: (at 74034) by debbugs.gnu.org; 27 Oct 2024 18:20:58 +0000 Received: from localhost ([127.0.0.1]:46188 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t57so-0003O1-3U for submit@debbugs.gnu.org; Sun, 27 Oct 2024 14:20:58 -0400 Received: from 10.mo583.mail-out.ovh.net ([46.105.52.148]:44079) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t57sl-0003No-CL for 74034@debbugs.gnu.org; Sun, 27 Oct 2024 14:20:56 -0400 Received: from director7.ghost.mail-out.ovh.net (unknown [10.109.148.116]) by mo583.mail-out.ovh.net (Postfix) with ESMTP id 4Xc4ZC0PXwz1QVx for <74034@debbugs.gnu.org>; Sun, 27 Oct 2024 18:20:18 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-dl7mp (unknown [10.110.101.93]) by director7.ghost.mail-out.ovh.net (Postfix) with ESMTPS id A84101FDE6; Sun, 27 Oct 2024 18:20:18 +0000 (UTC) Received: from ngraves.fr ([37.59.142.103]) by ghost-submission-5b5ff79f4f-dl7mp with ESMTPSA id BrGhImKEHmf7rQAA3xC93Q (envelope-from ); Sun, 27 Oct 2024 18:20:18 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-103G0057c3c618f-5bb9-41cf-9447-26c4ff6a63db, E6BF9B87AE7FBE7894246B3B643E76DCC103CD4C) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 86.246.19.221 Date: Sun, 27 Oct 2024 19:16:58 +0100 Message-ID: <20241027181946.25348-3-ngraves@ngraves.fr> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241027181946.25348-1-ngraves@ngraves.fr> References: <20241027181946.25348-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 9539186964594090722 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeftddrvdejiedgleeiucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnheptdehtedvteejgfdtfeeuveelfeefvdfhfeejleduteefffeffffggfethfejhedvnecuffhomhgrihhnpehgrhgvvghnvghnugdrohhrghdruhhknecukfhppeduvdejrddtrddtrddupdekiedrvdegiedrudelrddvvddupdefjedrheelrddugedvrddutdefnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepuddprhgtphhtthhopeejgedtfeegseguvggssghughhsrdhgnhhurdhorhhgpdfovfetjfhoshhtpehmohehkeefpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=i/vOn6LHbD5yjjM7DQIb3c+uyoyiSr60FZcExoJfTcE=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1730053219; v=1; b=HFOhr+sO3EZGotrGc9rSXh+pZSOgaoD4abikUXssC6lRC4TV0YnE62bNPcaOVpbkVZ1jMTLc cOUFtocypXNzYmzOqMXeTkM3tY3jRnTlbLzAlpQebF9Ndp3a/WMO0E2uKEmW3XuQqoCq3E96jqf w7bRZnY6VXsnhuqo9RRLriU9OOeZ7+zPOL4VzrNP8Bb84ijyMC52eBVCF8kutl5BD3fedMUV0jF Dfe/ZqRTY49NRcWtScZVhyT9npAsGBD+RkdlZUNyteodAs2r7EnH6sZYdCD3H/HB1jsNY3KD6q+ s/SGX+OibdQ81PMXrfET2Ok/ctzqIrrMAIGIPg9dpEGWQ== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/documentation.scm (halibut) [description]: Reformat field to match max chars. [properties]: Add cpe-vendor property. --- gnu/packages/documentation.scm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm index f0e37561f7..e1d563945a 100644 --- a/gnu/packages/documentation.scm +++ b/gnu/packages/documentation.scm @@ -264,12 +264,14 @@ (define-public halibut (home-page "https://www.chiark.greenend.org.uk/~sgtatham/halibut/") (synopsis "Documentation production system for software manuals") (description - "Halibut is a text formatting system designed primarily for writing software -documentation. It accepts a single source format and outputs any combination of -plain text, HTML, Unix man or info pages, PostScript or PDF. It has extensive -support for indexing and cross-referencing, and generates hyperlinks within output -documents wherever possible. It supports Unicode, with the ability to fall back to -an alternative representation if Unicode output is not available.") + "Halibut is a text formatting system designed primarily for writing +software documentation. It accepts a single source format and outputs any +combination of plain text, HTML, Unix man or info pages, PostScript or PDF. +It has extensive support for indexing and cross-referencing, and generates +hyperlinks within output documents wherever possible. It supports Unicode, +with the ability to fall back to an alternative representation if Unicode +output is not available.") + (properties `((cpe-vendor . "halibut_project"))) (license license:expat))) (define-public doc++