From d44dcd5d153ba0a4627c205f24a0741384f3d301 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Tue, 23 Feb 2021 14:24:39 +0100 Subject: [PATCH] describe: Add package-channels. * guix/describe.scm (package-channels): New procedure. --- guix/describe.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/guix/describe.scm b/guix/describe.scm index 03569b1db4..65e5772856 100644 --- a/guix/describe.scm +++ b/guix/describe.scm @@ -33,6 +33,7 @@ package-path-entries package-provenance + package-channels manifest-entry-with-provenance manifest-entry-provenance)) @@ -178,6 +179,26 @@ property of manifest entries, or #f if it could not be determined." `(,main ,@(if extra (list extra) '())))))))))) +(define (package-channels package) + "Return the list of channels providing PACKAGE or an empty list if it could +not be determined." + (match (and=> (package-location package) location-file) + (#f #f) + (file + (let ((file (if (string-prefix? "/" file) + file + (search-path %load-path file)))) + (and file + (string-prefix? (%store-prefix) file) + + (filter-map + (lambda (entry) + (let ((item (manifest-entry-item entry))) + (and (or (string-prefix? item file) + (string=? "guix" (manifest-entry-name entry))) + (manifest-entry-channel entry)))) + (current-profile-entries))))))) + (define (manifest-entry-with-provenance entry) "Return ENTRY with an additional 'provenance' property if it's not already there." -- 2.30.1