From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34753) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edxiG-0005zR-3x for guix-patches@gnu.org; Tue, 23 Jan 2018 07:30:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edxiE-000878-UY for guix-patches@gnu.org; Tue, 23 Jan 2018 07:30:04 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:59473) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edxiE-000872-Ql for guix-patches@gnu.org; Tue, 23 Jan 2018 07:30:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1edxiE-0001lX-Kw for guix-patches@gnu.org; Tue, 23 Jan 2018 07:30:02 -0500 Subject: [bug#30147] Simplify =?UTF-8?Q?=E2=80=9Cscripts/guix=E2=80=9D?= Resent-Message-ID: From: Mathieu Lirzin References: <87inc0i8yt.fsf@gnu.org> <87fu6x7x9m.fsf@gnu.org> Date: Tue, 23 Jan 2018 13:29:17 +0100 In-Reply-To: <87fu6x7x9m.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Tue, 23 Jan 2018 10:13:57 +0100") Message-ID: <87efmg92si.fsf@gnu.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 30147@debbugs.gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Mathieu Lirzin skribis: > >> From 342444897673d5f9d9a475986e76ca2e912f6674 Mon Sep 17 00:00:00 2001 >> From: Mathieu Lirzin >> Date: Wed, 17 Jan 2018 17:14:24 +0100 >> Subject: [PATCH 1/2] =3D?UTF-8?q?build:=3D20Expand=3D20=3DE2=3D80=3D98sc= ripts/guix?=3D >> =3D?UTF-8?q?=3DE2=3D80=3D99=3D20at=3D20Make=3D20time.?=3D >> MIME-Version: 1.0 >> Content-Type: text/plain; charset=3DUTF-8 >> Content-Transfer-Encoding: 8bit >> >> This moves the complexity of Autotools variable expansion outside of the >> application code. >> >> * scripts/guix.in (config-lookup): Delete. >> (maybe-augment-load-paths!, run-guix-main): Use fully expanded variables >> instead of calling =E2=80=98config-lookup=E2=80=99. >> * configure.ac: Don't use AC_CONFIG_FILES for =E2=80=98scripts/guix=E2= =80=99. >> * Makefile.am (scripts/guix): New rule. >> (do_subst): New variable. >> (CLEANFILES, EXTRA_DIST): Adapt. > > That=E2=80=99s a good idea. I applied it with the changes below, mostly = to > account for Eric=E2=80=99s suggestions. Thanks. >> From b6f8331455da1ffc4896b06cd2ee98e09b05be43 Mon Sep 17 00:00:00 2001 >> From: Mathieu Lirzin >> Date: Wed, 17 Jan 2018 19:55:49 +0100 >> Subject: [PATCH 2/2] guix: Refactor script. >> MIME-Version: 1.0 >> Content-Type: text/plain; charset=3DUTF-8 >> Content-Transfer-Encoding: 8bit >> >> * scripts/guix.in: Use =E2=80=98and-let*=E2=80=99 and remove empty surro= unding =E2=80=98let=E2=80=99. >> (run-guix-main, maybe-augment-load-paths!): Inline them. > > This is entirely subjective but I prefer the current style (in fact I > never use SRFI-2), so I=E2=80=99d rather skip this patch. WDYT? :-) I tried to avoid it, but the pipelining of checks for #f makes it very tempting to use it. But indeed this is a matter of style, so let's not use it. Here is an alternative patch that beside the pedantic issue of replacing (and updates-dir (file-exists? updates-dir)) with (and=3D> updates-dir file-exists?) removes the surrounding empty 'let' that doesn't make sense to me. Additionaly the compilation of the script is now possible which is convenient for basic syntax checks. This is done by using the =E2=80=98-e = main -s=E2=80=99 command-line switches. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-guix-Refactor-script.patch Content-Transfer-Encoding: quoted-printable >From 77379bbf2642762927c01cc7f10eb5761626f172 Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Tue, 23 Jan 2018 12:52:33 +0100 Subject: [PATCH] guix: Refactor script. MIME-Version: 1.0 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: 8bit * scripts/guix.in: Remove empty surrounding =E2=80=98let=E2=80=99. Define = 'main' as the procedure called when running the script. (maybe-augment-load-paths!): Rename to ... (augment-load-paths!): ... this. Use 'and=3D>' for 'file-exists?'. (run-guix-main): Rename to ... (main): ... this. Call 'augment-load-paths!'. --- scripts/guix.in | 57 +++++++++++++++++++++++++++++------------------------= ---- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/scripts/guix.in b/scripts/guix.in index af50a782b..e0f0ae7e0 100644 --- a/scripts/guix.in +++ b/scripts/guix.in @@ -1,4 +1,5 @@ -#!@GUILE@ --no-auto-compile +#!@GUILE@ \ +--no-auto-compile -e main -s -*- scheme -*- !# ;;; GNU Guix --- Functional package management for GNU @@ -25,34 +26,34 @@ ;; It's okay to import modules from core Guile though. (use-modules (srfi srfi-26)) =20 -(let () - (define-syntax-rule (push! elt v) (set! v (cons elt v))) +(define-syntax-rule (push! elt v) (set! v (cons elt v))) =20 - (define (maybe-augment-load-paths!) - (unless (getenv "GUIX_UNINSTALLED") - (push! "@guilemoduledir@" %load-path) - (push! "@guileobjectdir@" %load-compiled-path) - (let ((updates-dir (and=3D> (or (getenv "XDG_CONFIG_HOME") - (and=3D> (getenv "HOME") - (cut string-append <> "/.config= "))) - (cut string-append <> "/guix/latest")))) - (when (and updates-dir (file-exists? updates-dir)) - ;; XXX: Currently 'guix pull' puts both .scm and .go files in - ;; UPDATES-DIR. - (push! updates-dir %load-path) - (push! updates-dir %load-compiled-path))))) +(define (augment-load-paths!) + ;; Add installed modules to load-path. + (push! "@guilemoduledir@" %load-path) + (push! "@guileobjectdir@" %load-compiled-path) =20 - (define (run-guix-main) - (let ((guix-main (module-ref (resolve-interface '(guix ui)) - 'guix-main))) - (bindtextdomain "guix" "@localedir@") - (bindtextdomain "guix-packages" "@localedir@") - (apply guix-main (command-line)))) + ;; Add modules fetched by 'guix pull' to load-path. + (let ((updates-dir (and=3D> (or (getenv "XDG_CONFIG_HOME") + (and=3D> (getenv "HOME") + (cut string-append <> "/.config"))) + (cut string-append <> "/guix/latest")))) + (when (and=3D> updates-dir file-exists?) + ;; XXX: Currently 'guix pull' puts both .scm and .go files in + ;; UPDATES-DIR. + (push! updates-dir %load-path) + (push! updates-dir %load-compiled-path)))) =20 - (maybe-augment-load-paths!) +(define* (main #:optional (args (command-line))) + (unless (getenv "GUIX_UNINSTALLED") + (augment-load-paths!)) =20 - ;; XXX: It would be more convenient to change it to: - ;; (exit (run-guix-main)) - ;; but since the 'guix' command is not updated by 'guix pull', we cannot - ;; really do it now. - (run-guix-main)) + (let ((guix-main (module-ref (resolve-interface '(guix ui)) + 'guix-main))) + (bindtextdomain "guix" "@localedir@") + (bindtextdomain "guix-packages" "@localedir@") + ;; XXX: It would be more convenient to change it to: + ;; (exit (apply guix-main (command-line))) + ;; but since the 'guix' command is not updated by 'guix pull', we cann= ot + ;; really do it now. + (apply guix-main args))) --=20 2.16.0 --=-=-= Content-Type: text/plain -- Mathieu Lirzin GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37 --=-=-=--