all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: julien lepiller <julien@lepiller.eu>
To: guix-devel@gnu.org
Subject: [PATCH] Re: The usability of Guix configurations
Date: Tue, 07 Nov 2017 17:25:33 +0100	[thread overview]
Message-ID: <ae132af1ad45b1d4c18cdd1356ec3b1f@lepiller.eu> (raw)
In-Reply-To: <86efpat6z6.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 822 bytes --]

Le 2017-11-07 16:59, myglc2 a écrit :
> On 11/07/2017 at 15:52 julien lepiller writes:
>> 
>> Maybe that's too much?
> 
> Not for me. Looks great! Just a couple minor suggestions:
> 
> 1) How about narrowing search to locations like this:
> 
> Hint: You may use `guix package --show=foo | grep location` to search
> for foo's location.

Oh, I didn't know this option, good idea, thanks :D

> 
> 2) I think you mean to say "foo" where you say "ssh" in the last two 
> HINTs

You're right, though I prefer to use "bar" to show there is no relation 
between
the package name and its module.

I added "[PATCH]" to the subject to get others look at this message. I 
plan to
push it in a few days unless it gets more comments. If an experienced 
schemer
could look at that, I'm sure the coding style could be improved a lot ;)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Catch-use-modules-errors-in-configuration.patch --]
[-- Type: text/x-diff; name=0001-Catch-use-modules-errors-in-configuration.patch, Size: 2844 bytes --]

From e092725c05625f1b6c5705177b3f080471611e85 Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Tue, 7 Nov 2017 11:46:34 +0100
Subject: [PATCH] Catch use-modules errors in configuration.

* gnu.scm (use-package-modules, use-service-modules, use-system-modules):
Catch use-modules errors and show a small explanation about it.
---
 gnu.scm | 42 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 39 insertions(+), 3 deletions(-)

diff --git a/gnu.scm b/gnu.scm
index 913ce6160..1ae5f2d1d 100644
--- a/gnu.scm
+++ b/gnu.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Joshua S. Grant <jgrant@parenthetical.io>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -52,13 +53,48 @@
                   (module-use! i (resolve-interface m))))
               %public-modules)))
 
+(define (import-error type module syntax)
+  (define package-hint
+    (string-append
+      "Hint: You may use `guix package --show=foo | grep location` to search\n"
+      "Hint: for foo's location.\n"
+      "Hint: If you get the line \"location: gnu/packages/bar.scm:174:2\",\n"
+      "Hint: you want to add bar in use-package-modules."))
+  (define service-hint
+    (string-append
+      "Hint: You may use `guix system search foo` to search for foo's location.\n"
+      "Hint: If you get the line \"location: gnu/services/bar.scm:188:2\",\n"
+      "Hint: you want to add bar in use-service-modules."))
+  (error (string-append
+           type " module \"" module "\" does not exist.\n"
+           "Check the \"" syntax "\" line in your configuration.\n"
+           (if (equal? type "Package")
+               package-hint
+               (if (equal? type "Service")
+                   service-hint
+                   "")))))
+
 (define-syntax-rule (use-package-modules module ...)
-  (use-modules (gnu packages module) ...))
+  (begin
+    (catch #t (lambda () (use-modules (gnu packages module)))
+           (lambda _
+             (import-error "Package" (symbol->string 'module) "use-package-modules")))
+    ...))
 
 (define-syntax-rule (use-service-modules module ...)
-  (use-modules (gnu services module) ...))
+  (begin
+    (catch #t (lambda () (use-modules (gnu services module)))
+           (lambda _
+             (import-error "Service" (symbol->string 'module) "use-service-modules")))
+    ...))
+
 
 (define-syntax-rule (use-system-modules module ...)
-  (use-modules (gnu system module) ...))
+  (begin
+    (catch #t (lambda () (use-modules (gnu system module)))
+           (lambda _
+             (import-error "System" (symbol->string 'module) "use-system-modules")))
+    ...))
+
 
 ;;; gnu.scm ends here
-- 
2.13.6


  reply	other threads:[~2017-11-07 16:25 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-06 20:12 The usability of Guix configurations myglc2
2017-11-06 22:16 ` Leo Famulari
2017-11-06 23:26   ` bug#29072: " myglc2
2017-11-06 23:26   ` myglc2
2017-11-07  1:56   ` bug#29072: " myglc2
2017-11-07  1:56   ` myglc2
2017-11-07 11:05     ` julien lepiller
2017-11-07 12:52       ` Hartmut Goebel
2017-11-07 13:13         ` julien lepiller
2017-11-07 14:11           ` myglc2
2017-11-07 14:52             ` julien lepiller
2017-11-07 15:59               ` myglc2
2017-11-07 16:25                 ` julien lepiller [this message]
     [not found]                   ` <867ev2t13i.fsf@gmail.com>
2017-11-07 21:27                     ` [PATCH] " Julien Lepiller
2017-11-07 22:56                       ` myglc2
2017-11-07 22:47                   ` Reporting module errors Ludovic Courtès
2017-11-08  1:26                     ` myglc2
2017-11-08 10:52                     ` Hartmut Goebel
2017-11-08 14:02                       ` Ludovic Courtès
2017-11-08 13:09                     ` [PATCH 0/6] Error reporting and hints for missing modules Ludovic Courtès
2017-11-08 13:09                       ` [PATCH 1/6] ui: Introduce (guix i18n) Ludovic Courtès
2017-11-08 13:09                       ` [PATCH 2/6] ui: Define and honor '&error-location' and '&fix-hint' conditions Ludovic Courtès
2017-11-08 13:09                       ` [PATCH 3/6] services: 'fold-service-types' honors its seed Ludovic Courtès
2017-11-08 13:09                       ` [PATCH 4/6] services: 'fold-service-types' includes (gnu services) Ludovic Courtès
2017-11-08 13:09                       ` [PATCH 5/6] services: Add 'lookup-service-types' Ludovic Courtès
2017-11-08 13:09                       ` [PATCH 6/6] gnu: Improve error reporting of the use-.*modules macros Ludovic Courtès
2017-11-11  2:02                         ` Chris Marusich
2017-11-11 13:56                           ` Ludovic Courtès
2017-11-11 17:00                             ` Chris Marusich
2017-11-08 15:33                       ` [PATCH 0/6] Error reporting and hints for missing modules julien lepiller
2017-11-08 17:42                         ` myglc2
2017-11-08 19:07                           ` myglc2
2017-11-08 21:42                             ` Ludovic Courtès
2017-11-09 23:04                             ` Ludovic Courtès
2017-11-10 14:47                               ` myglc2
2017-11-10 23:01                                 ` Julien Lepiller
2017-11-11 22:00                                   ` Ludovic Courtès
2017-11-11 22:02                                 ` Ludovic Courtès
2017-11-14  1:12                                   ` myglc2
2017-11-30 10:44                                     ` Ludovic Courtès
2017-11-07 14:45           ` The usability of Guix configurations Hartmut Goebel
2017-11-07  2:30   ` myglc2
2017-11-07  3:03     ` myglc2
2017-11-07  2:30   ` bug#29072: " myglc2
2017-11-07  2:59   ` myglc2
2017-11-07 20:54   ` myglc2
2017-11-06 22:16 ` bug#29072: " Leo Famulari
2017-11-07 10:23 ` Ludovic Courtès
2017-11-08 19:40   ` myglc2
2017-11-07 10:23 ` bug#29072: " Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ae132af1ad45b1d4c18cdd1356ec3b1f@lepiller.eu \
    --to=julien@lepiller.eu \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.