describe: 'current-channel-entries' ignores non-channel profile entries.
authorLudovic Courtès <ludo@gnu.org>
Sun, 13 Jun 2021 10:31:02 +0000 (12:31 +0200)
committerLudovic Courtès <ludo@gnu.org>
Sun, 13 Jun 2021 21:57:44 +0000 (23:57 +0200)
Fixes <https://bugs.gnu.org/48778>.

A side effect of c47f3fc13562d82edfd2d47342574154c452843a is that
(@ (guix describe) current-profile) provides the correct answer when the
'guix' package is installed in a profile.  Consequently, the 'guix'
package installed in /run/current-system/profile (for instance) would
end up loading all the .scm files in that directory.

* guix/describe.scm (current-channel-entries): Remove ENTRY if it lacks
the 'source' property.

guix/describe.scm

index 711b7b4..65cd790 100644 (file)
@@ -115,7 +115,11 @@ lives in, or the empty list if this is not applicable."
     "Return manifest entries corresponding to extra channels--i.e., not the
 'guix' channel."
     (remove (lambda (entry)
-              (string=? (manifest-entry-name entry) "guix"))
+              (or (string=? (manifest-entry-name entry) "guix")
+
+                  ;; If ENTRY lacks the 'source' property, it's not an entry
+                  ;; from 'guix pull'.  See <https://bugs.gnu.org/48778>.
+                  (not (assq 'source (manifest-entry-properties entry)))))
             (current-profile-entries))))
 
 (define current-channels