guix package: -A and -s take supported systems into account.
authorLudovic Courtès <ludo@gnu.org>
Sun, 19 Apr 2015 17:12:22 +0000 (19:12 +0200)
committerLudovic Courtès <ludo@gnu.org>
Sun, 19 Apr 2015 21:34:53 +0000 (23:34 +0200)
* guix/scripts/package.scm (guix-package)[process-query]
  <list-available>: Restrict results to packages matching
  'supported-package?".
* guix/ui.scm (package->recutils): Print "systems:".
* tests/guix-package.sh: Add tests.
* doc/guix.texi (Invoking guix package): Adjust description of
  '--list-available' accordingly.

doc/guix.texi
guix/scripts/package.scm
guix/ui.scm
tests/guix-package.sh

index d47120d..09dcff5 100644 (file)
@@ -1105,7 +1105,7 @@ availability of packages:
 
 @item --search=@var{regexp}
 @itemx -s @var{regexp}
-List the available packages whose synopsis or description matches
+List the available packages whose name, synopsis, or description matches
 @var{regexp}.  Print all the meta-data of matching packages in
 @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils,
 GNU recutils manual}).
@@ -1171,7 +1171,7 @@ the store.
 
 @item --list-available[=@var{regexp}]
 @itemx -A [@var{regexp}]
-List packages currently available in the software distribution
+List packages currently available in the distribution for this system
 (@pxref{GNU Distribution}).  When @var{regexp} is specified, list only
 installed packages whose name matches @var{regexp}.
 
index 5ee3a89..a42452a 100644 (file)
@@ -960,11 +960,13 @@ more information.~%"))
                 (available (fold-packages
                             (lambda (p r)
                               (let ((n (package-name p)))
-                                (if regexp
-                                    (if (regexp-exec regexp n)
-                                        (cons p r)
-                                        r)
-                                    (cons p r))))
+                                (if (supported-package? p)
+                                    (if regexp
+                                        (if (regexp-exec regexp n)
+                                            (cons p r)
+                                            r)
+                                        (cons p r))
+                                    r)))
                             '())))
            (leave-on-EPIPE
             (for-each (lambda (p)
index 5ca5afe..f80ce37 100644 (file)
@@ -653,6 +653,8 @@ WIDTH columns."
   ;; Note: Don't i18n field names so that people can post-process it.
   (format port "name: ~a~%" (package-name p))
   (format port "version: ~a~%" (package-version p))
+  (format port "systems: ~a~%"
+          (string-join (package-transitive-supported-systems p)))
   (format port "dependencies: ~a~%"
           (match (package-direct-inputs p)
             (((labels inputs . _) ...)
index 6cfd50b..a732110 100644 (file)
@@ -212,9 +212,19 @@ cat > "$module_dir/foo.scm"<<EOF
               (patches (list (search-patch "emacs.patch")))))
     (name "emacs-foo-bar-patched")
     (version "42")))
+
+(define-public y
+  (package (inherit emacs)
+    (name "super-non-portable-emacs")
+    (supported-systems '("foobar64-hurd"))))
 EOF
 guix package -i emacs-foo-bar-patched -n
 
+# This one should not show up in searches since it's no supported on the
+# current system.
+test "`guix package -A super-non-portable-emacs`" = ""
+test "`guix package -s super-non-portable-emacs | grep ^systems:`" = "systems: "
+
 unset GUIX_PACKAGE_PATH
 
 # Using 'GUIX_BUILD_OPTIONS'.