unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* bug#26755: [PATCH v2 0/2] refresh: Add -m manifest option.
@ 2017-05-03 11:29 Mathieu Othacehe
  2017-05-03 11:29 ` bug#26757: [PATCH 1/2] profiles: Add manifest->packages Mathieu Othacehe
  2017-05-03 11:29 ` bug#26756: [PATCH 2/2] scripts: refresh: Add -m manifest option Mathieu Othacehe
  0 siblings, 2 replies; 3+ messages in thread
From: Mathieu Othacehe @ 2017-05-03 11:29 UTC (permalink / raw)
  To: 26755

Hi,

Here's the v2 of the serie, I added documentation.
I've been using this option for a few days and
found it quite handy.

Mathieu

Mathieu Othacehe (2):
  profiles: Add manifest->packages.
  scripts: refresh: Add -m manifest option.

 doc/guix.texi            |  5 +++++
 guix/profiles.scm        | 10 ++++++++++
 guix/scripts/refresh.scm | 29 ++++++++++++++++++++++++++---
 3 files changed, 41 insertions(+), 3 deletions(-)

-- 
2.12.2

^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#26757: [PATCH 1/2] profiles: Add manifest->packages.
  2017-05-03 11:29 bug#26755: [PATCH v2 0/2] refresh: Add -m manifest option Mathieu Othacehe
@ 2017-05-03 11:29 ` Mathieu Othacehe
  2017-05-03 11:29 ` bug#26756: [PATCH 2/2] scripts: refresh: Add -m manifest option Mathieu Othacehe
  1 sibling, 0 replies; 3+ messages in thread
From: Mathieu Othacehe @ 2017-05-03 11:29 UTC (permalink / raw)
  To: 26757

* guix/profiles.scm (manifest->packages): New exported procedure.
---
 guix/profiles.scm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/guix/profiles.scm b/guix/profiles.scm
index eb172ef45..157445407 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
 ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -94,6 +95,7 @@
             profile-manifest
             package->manifest-entry
             packages->manifest
+            manifest->packages
             ca-certificate-bundle
             %default-profile-hooks
             profile-derivation
@@ -203,6 +205,14 @@ denoting a specific output of a package."
           (package->manifest-entry package)))
         packages)))
 
+(define (manifest->packages manifest)
+  "Return the list of packages in MANIFEST."
+  (delete-duplicates
+   (filter-map (lambda (entry)
+                 (let ((item (manifest-entry-item entry)))
+                   (if (package? item) item #f)))
+               (manifest-entries manifest))))
+
 (define (manifest->gexp manifest)
   "Return a representation of MANIFEST as a gexp."
   (define (entry->gexp entry)
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#26756: [PATCH 2/2] scripts: refresh: Add -m manifest option.
  2017-05-03 11:29 bug#26755: [PATCH v2 0/2] refresh: Add -m manifest option Mathieu Othacehe
  2017-05-03 11:29 ` bug#26757: [PATCH 1/2] profiles: Add manifest->packages Mathieu Othacehe
@ 2017-05-03 11:29 ` Mathieu Othacehe
  1 sibling, 0 replies; 3+ messages in thread
From: Mathieu Othacehe @ 2017-05-03 11:29 UTC (permalink / raw)
  To: 26756

* guix/scripts/refresh.scm (%options): Add -m option,
(show-help): document it,
(get-manifest-packages): new procedure,
(guix-refresh): use packages from manifest if specified, otherwise
keep the previous behaviour.
* doc/guix.texi (Invoking guix refresh): document new option.
---
 doc/guix.texi            |  5 +++++
 guix/scripts/refresh.scm | 29 ++++++++++++++++++++++++++---
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 9b2fe3fdb..f04b3cafe 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5759,6 +5759,11 @@ The @code{non-core} subset refers to the remaining packages.  It is
 typically useful in cases where an update of the core packages would be
 inconvenient.
 
+@item --manifest=@var{file}
+@itemx -m @var{file}
+Select only packages specified in manifest @var{file}. This is useful to
+check if any packages of the user manifest can be updated.
+
 @item --type=@var{updater}
 @itemx -t @var{updater}
 Select only packages handled by @var{updater} (may be a comma-separated
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index c0d589af1..9dcb8d126 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,6 +28,7 @@
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module (guix packages)
+  #:use-module (guix profiles)
   #:use-module (guix upstream)
   #:use-module (guix graph)
   #:use-module (guix scripts graph)
@@ -87,6 +89,9 @@
         (option '(#\L "list-updaters") #f #f
                 (lambda args
                   (list-updaters-and-exit)))
+        (option '(#\m "manifest") #t #f
+                (lambda (opt name arg result)
+                  (alist-cons 'manifest arg result)))
         (option '(#\e "expression") #t #f
                 (lambda (opt name arg result)
                   (alist-cons 'expression arg result)))
@@ -133,6 +138,8 @@ specified with `--select'.\n"))
   -s, --select=SUBSET    select all the packages in SUBSET, one of
                          `core' or `non-core'"))
   (display (_ "
+  -m, --manifest=FILE    select all the packages in FILE manifest"))
+  (display (_ "
   -t, --type=UPDATER,... restrict to updates from the specified updaters
                          (e.g., 'gnu')"))
   (display (_ "
@@ -350,6 +357,17 @@ dependent packages are rebuilt: ~{~a~^ ~}~%"
 
 \f
 ;;;
+;;; Manifest.
+;;;
+
+(define (get-manifest-packages manifest)
+  "Return the list of packages in loaded MANIFEST."
+  (let* ((user-module (make-user-module '((guix profiles) (gnu))))
+         (manifest    (load* manifest user-module)))
+    (manifest->packages manifest)))
+
+\f
+;;;
 ;;; Entry point.
 ;;;
 
@@ -420,8 +438,11 @@ update would trigger a complete rebuild."
          ;; the command line.
          (warn?           (or (assoc-ref opts 'argument)
                               (assoc-ref opts 'expression)))
-
-         (packages
+         (manifest-packages
+          (match (assoc-ref opts 'manifest)
+            ((? string? manifest) (get-manifest-packages manifest))
+            (x                    #f)))
+         (args-packages
           (match (filter-map (match-lambda
                                (('argument . spec)
                                 ;; Take either the specified version or the
@@ -442,7 +463,9 @@ update would trigger a complete rebuild."
                                     result))
                               '())))
             (some                                 ; user-specified packages
-             some))))
+             some)))
+         (packages
+          (or manifest-packages args-packages)))
     (with-error-handling
       (with-store store
         (run-with-store store
-- 
2.12.2

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-05-03 11:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-03 11:29 bug#26755: [PATCH v2 0/2] refresh: Add -m manifest option Mathieu Othacehe
2017-05-03 11:29 ` bug#26757: [PATCH 1/2] profiles: Add manifest->packages Mathieu Othacehe
2017-05-03 11:29 ` bug#26756: [PATCH 2/2] scripts: refresh: Add -m manifest option Mathieu Othacehe

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).