emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#36555: closed ([PATCH 0/2] Refactor out common beh


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#36555: closed ([PATCH 0/2] Refactor out common behavior for system reconfiguration.)
Date: Fri, 26 Jul 2019 17:01:02 +0000

Your message dated Fri, 26 Jul 2019 18:59:50 +0200
with message-id <address@hidden>
and subject line Re: [bug#36555] [PATCH v6 3/3] tests: Add reconfigure system 
test.
has caused the debbugs.gnu.org bug report #36555,
regarding [PATCH 0/2] Refactor out common behavior for system reconfiguration.
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden.)


-- 
36555: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=36555
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: [PATCH 0/2] Refactor out common behavior for system reconfiguration. Date: Mon, 08 Jul 2019 15:52:12 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
Hello, Guix!

This is the preliminary version of a patch series to turn the behavior
common between 'guix deploy' and 'guix system reconfigure' into a module
that both can use. I am submitting it as-is both for comments and for
tracking the refactoring effort.

Note that this is _not_ ready to be merged. There are several things
that I need to do before I would consider it ready for upstream Guix:

- This passes my old test suite for 'guix deploy', but I haven't dared
  to run the new 'guix system reconfigure'. I'll set up a new virtual
  machine so I don't put myself out of a working laptop.
- 'switch-system-program', 'upgrade-services-program', and
  'install-bootloader-program' omit some of the features that were
  present in the procedures they replace. For example,
  'install-bootloader' previously supported installing the bootloader
  configuration without actually running the installation script. This
  was fine for 'guix deploy', but I'll need to add it back in for
  'guix system reconfigure'.
- I plan to implement system tests for '(guix scripts system
  reconfigure)'. I suppose I can always submit them as a separate patch,
  but I'll likely finish them before we're through with code review, so
  it may make sense to include them with as part of this patch series,
  albeit as a distinct commit.
- I suspect that some of the effectful procedures in 'system.scm' could
  be refactored out in a similar fashion. Not that 'guix deploy' would
  necessarily be using them, but it would be more consistent to have
  them as 'program-file' objects, and those procedures could then also
  be tested.

I look forward to your comments.

Regards,
Jakob


Jakob L. Kreuze (2):
  guix system: Add 'reconfigure' module.
  guix system: Reimplement 'reconfigure'.

 Makefile.am                         |   1 +
 gnu/machine/ssh.scm                 | 235 ++++++++--------------------
 guix/scripts/system.scm             | 140 +++++------------
 guix/scripts/system/reconfigure.scm | 158 +++++++++++++++++++
 4 files changed, 255 insertions(+), 279 deletions(-)
 create mode 100644 guix/scripts/system/reconfigure.scm

--
2.22.0

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message --- Subject: Re: [bug#36555] [PATCH v6 3/3] tests: Add reconfigure system test. Date: Fri, 26 Jul 2019 18:59:50 +0200 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)
Hi there!

I’ve applied the whole series with the change below.  \o/

Because of the monadic style, the ‘guard’ clause had no effect:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,run-in-store (guard (c (#t 'caught)) (mbegin %store-monad 
(return 1)(return (raise (condition (&message (message "oh!")))))))
While executing meta-command:
Throw to key `srfi-34' with args `(#<condition &message [message: "oh!"] 
1cab2c0>)'.
--8<---------------cut here---------------end--------------->8---

I thought about adding it in some other way, but it turns out not to be
needed at all because error conditions are guarded against in
‘guix-system’.  Hence the patch.

Thank you for the hard work on this series!

I’ll be away from keyboard roughly until August 17th.  Hopefully you can
get feedback from David or Chris, and maybe you can get others on board
as well.  :-)  If my opinion on changes to the core is needed, you can
always push to a separate branch in the meantime.  Anyway, I’m confident!

Ludo’.

diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 115da665b4..9fc3a10e98 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -804,19 +804,16 @@ static checks."
             ((reconfigure)
              (newline)
              (format #t (G_ "activating system...~%"))
-             (guard (c ((message-condition? c)
-                        (leave (G_ "failed to reconfigure system:~%~a~%")
-                               (condition-message c))))
-               (mbegin %store-monad
-                 (switch-to-system local-eval os)
-                 (mwhen install-bootloader?
-                   (install-bootloader local-eval bootloader bootcfg
-                                       #:target (or target "/"))
-                   (return
-                    (info (G_ "bootloader successfully installed on '~a'~%")
-                          (bootloader-configuration-target bootloader))))
-                 (with-shepherd-error-handling
-                  (upgrade-shepherd-services local-eval os)))))
+             (mbegin %store-monad
+               (switch-to-system local-eval os)
+               (mwhen install-bootloader?
+                 (install-bootloader local-eval bootloader bootcfg
+                                     #:target (or target "/"))
+                 (return
+                  (info (G_ "bootloader successfully installed on '~a'~%")
+                        (bootloader-configuration-target bootloader))))
+               (with-shepherd-error-handling
+                  (upgrade-shepherd-services local-eval os))))
             ((init)
              (newline)
              (format #t (G_ "initializing operating system under '~a'...~%")

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]