GNU bug report logs - #30147
Simplify “scripts/guix”

Previous Next

Package: guix-patches;

Reported by: Mathieu Lirzin <mthl <at> gnu.org>

Date: Wed, 17 Jan 2018 19:26:01 UTC

Severity: normal

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 30147 in the body.
You can then email your comments to 30147 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#30147; Package guix-patches. (Wed, 17 Jan 2018 19:26:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Mathieu Lirzin <mthl <at> gnu.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Wed, 17 Jan 2018 19:26:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Mathieu Lirzin <mthl <at> gnu.org>
To: guix-patches <at> gnu.org
Subject: Simplify “scripts/guix”
Date: Wed, 17 Jan 2018 20:25:14 +0100
[Message part 1 (text/plain, inline)]
Hi,

Here are some improvements for “scripts/guix”.

[0001-build-Expand-scripts-guix-at-Make-time.patch (text/x-patch, attachment)]
[0002-guix-Refactor-script.patch (text/x-patch, attachment)]
[Message part 4 (text/plain, inline)]
Thanks.

-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

Information forwarded to guix-patches <at> gnu.org:
bug#30147; Package guix-patches. (Mon, 22 Jan 2018 23:20:01 GMT) Full text and rfc822 format available.

Message #8 received at 30147 <at> debbugs.gnu.org (full text, mbox):

From: Eric Bavier <ericbavier <at> centurylink.net>
To: Mathieu Lirzin <mthl <at> gnu.org>
Cc: 30147 <at> debbugs.gnu.org
Subject: Re: [bug#30147] Simplify “scripts/guix”
Date: Mon, 22 Jan 2018 12:19:58 -0600
[Message part 1 (text/plain, inline)]
On Wed, 17 Jan 2018 20:25:14 +0100
Mathieu Lirzin <mthl <at> gnu.org> wrote:

> 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 ‘config-lookup’.
> * configure.ac: Don't use AC_CONFIG_FILES for ‘scripts/guix’.
> * Makefile.am (scripts/guix): New rule.
> (do_subst): New variable.
> (CLEANFILES, EXTRA_DIST): Adapt.

FWIW this is what my Joy compiler does for its entry script.  It works
well.

https://notabug.org/bavier/joy-in-the-morning.git

> +scripts/guix: scripts/guix.in Makefile
> +	$(AM_V_GEN)rm -f $@ $@-t \
> +	  && $(MKDIR_P) $(@D) \
> +	  && $(do_subst) <$(srcdir)/$@.in >$@-t \
> +	  && chmod a+x,a-w $@-t && mv -f $@-t $@

I think. since there's no state variables that needs to carry accross
commands, that this would read better without the line continuations and
appropriate use of $(AM_V_at).

While we're looking at it: I'm not certain, but I think Guix currently
work if one overrides the "prefix" variable when invoking 'make
install', which is a use-case suggested by the GNU Coding Standards
(Section 7.2.5).  I bring it up because adding '$(prefix)/bin/guix' to
the above rule might be a start.

> +;; Run Guix.
> +(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 (run-guix-main))
>    ;; but since the 'guix' command is not updated by 'guix pull', we cannot
>    ;; really do it now.
> -  (run-guix-main))
> +  (apply guix-main (command-line)))

If we're going to be patching scripts/guix.in, would now be the time to
add the '(exit ...)'?

Otherwise LGTM!

`~Eric
[Message part 2 (application/pgp-signature, inline)]

Reply sent to ludo <at> gnu.org (Ludovic Courtès):
You have taken responsibility. (Tue, 23 Jan 2018 09:15:01 GMT) Full text and rfc822 format available.

Notification sent to Mathieu Lirzin <mthl <at> gnu.org>:
bug acknowledged by developer. (Tue, 23 Jan 2018 09:15:02 GMT) Full text and rfc822 format available.

Message #13 received at 30147-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Mathieu Lirzin <mthl <at> gnu.org>
Cc: 30147-done <at> debbugs.gnu.org
Subject: Re: [bug#30147] Simplify “scripts/guix”
Date: Tue, 23 Jan 2018 10:13:57 +0100
[Message part 1 (text/plain, inline)]
Hello,

Mathieu Lirzin <mthl <at> gnu.org> skribis:

> From 342444897673d5f9d9a475986e76ca2e912f6674 Mon Sep 17 00:00:00 2001
> From: Mathieu Lirzin <mthl <at> gnu.org>
> Date: Wed, 17 Jan 2018 17:14:24 +0100
> Subject: [PATCH 1/2] =?UTF-8?q?build:=20Expand=20=E2=80=98scripts/guix?=
>  =?UTF-8?q?=E2=80=99=20at=20Make=20time.?=
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-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 ‘config-lookup’.
> * configure.ac: Don't use AC_CONFIG_FILES for ‘scripts/guix’.
> * Makefile.am (scripts/guix): New rule.
> (do_subst): New variable.
> (CLEANFILES, EXTRA_DIST): Adapt.

That’s a good idea.  I applied it with the changes below, mostly to
account for Eric’s suggestions.

[Message part 2 (text/x-patch, inline)]
diff --git a/Makefile.am b/Makefile.am
index 5e36dbf44..9bafdab49 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -29,17 +29,17 @@
 bin_SCRIPTS = scripts/guix
 
 # Handle substitution of fully-expanded Autoconf variables.
-do_subst = sed \
-  -e 's,[@]GUILE[@],$(GUILE),g' \
-  -e 's,[@]guilemoduledir[@],$(guilemoduledir),g' \
-  -e 's,[@]guileobjectdir[@],$(guileobjectdir),g' \
+do_subst = $(SED)					\
+  -e 's,[@]GUILE[@],$(GUILE),g'				\
+  -e 's,[@]guilemoduledir[@],$(guilemoduledir),g'	\
+  -e 's,[@]guileobjectdir[@],$(guileobjectdir),g'	\
   -e 's,[@]localedir[@],$(localedir),g'
 
 scripts/guix: scripts/guix.in Makefile
-	$(AM_V_GEN)rm -f $@ $@-t \
-	  && $(MKDIR_P) $(@D) \
-	  && $(do_subst) <$(srcdir)/$@.in >$@-t \
-	  && chmod a+x,a-w $@-t && mv -f $@-t $@
+	$(AM_V_at)rm -f $@ $@-t
+	$(AM_V_at)$(MKDIR_P) "$(@D)"
+	$(AM_V_GEN)$(do_subst) < "$(srcdir)/$@.in" > "$@-t"
+	$(AM_V_at)chmod a+x,a-w "$@-t" && mv -f "$@-t" "$@"
 
 nodist_noinst_SCRIPTS =				\
   pre-inst-env					\
diff --git a/configure.ac b/configure.ac
index c50dcaf2e..f69f79648 100644
--- a/configure.ac
+++ b/configure.ac
@@ -124,6 +124,8 @@ dnl Make sure we don't suffer from the bug in 'equal?' wrt. syntax objects
 dnl found in 2.2.1.  See <https://bugs.gnu.org/29903>.
 GUIX_ASSERT_SYNTAX_OBJECT_EQUAL
 
+AC_PROG_SED
+
 dnl Decompressors, for use by the substituter and other modules.
 AC_PATH_PROG([GZIP], [gzip])
 AC_PATH_PROG([BZIP2], [bzip2])
[Message part 3 (text/plain, inline)]
> From b6f8331455da1ffc4896b06cd2ee98e09b05be43 Mon Sep 17 00:00:00 2001
> From: Mathieu Lirzin <mthl <at> gnu.org>
> 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=UTF-8
> Content-Transfer-Encoding: 8bit
>
> * scripts/guix.in: Use ‘and-let*’ and remove empty surrounding ‘let’.
> (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’d rather skip this patch.  WDYT?  :-)

Thank you!

Ludo’.

Information forwarded to guix-patches <at> gnu.org:
bug#30147; Package guix-patches. (Tue, 23 Jan 2018 11:08:02 GMT) Full text and rfc822 format available.

Message #16 received at 30147 <at> debbugs.gnu.org (full text, mbox):

From: Mathieu Lirzin <mthl <at> gnu.org>
To: Eric Bavier <ericbavier <at> centurylink.net>
Cc: 30147 <at> debbugs.gnu.org
Subject: Re: [bug#30147] Simplify “scripts/guix”
Date: Tue, 23 Jan 2018 12:06:40 +0100
Eric Bavier <ericbavier <at> centurylink.net> writes:

> On Wed, 17 Jan 2018 20:25:14 +0100
> Mathieu Lirzin <mthl <at> gnu.org> wrote:
>
>> 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 ‘config-lookup’.
>> * configure.ac: Don't use AC_CONFIG_FILES for ‘scripts/guix’.
>> * Makefile.am (scripts/guix): New rule.
>> (do_subst): New variable.
>> (CLEANFILES, EXTRA_DIST): Adapt.
>
> FWIW this is what my Joy compiler does for its entry script.  It works
> well.
>
> https://notabug.org/bavier/joy-in-the-morning.git

Thanks for sharing your Joy. :-)

>> +scripts/guix: scripts/guix.in Makefile
>> +	$(AM_V_GEN)rm -f $@ $@-t \
>> +	  && $(MKDIR_P) $(@D) \
>> +	  && $(do_subst) <$(srcdir)/$@.in >$@-t \
>> +	  && chmod a+x,a-w $@-t && mv -f $@-t $@
>
> I think. since there's no state variables that needs to carry accross
> commands, that this would read better without the line continuations and
> appropriate use of $(AM_V_at).
>
> While we're looking at it: I'm not certain, but I think Guix currently
> work if one overrides the "prefix" variable when invoking 'make
> install', which is a use-case suggested by the GNU Coding Standards
> (Section 7.2.5).

I had this in mind too, but I am not sure how to achieve that.
Generating scripts that depend on $(prefix) at make time is indeed a
first start in conforming to that GCS requirement.  However in practice
I don't know any GNU package that conform to it.

> I bring it up because adding '$(prefix)/bin/guix' to the above rule
> might be a start.

If you mean:

--8<---------------cut here---------------start------------->8---
$(prefix)/bin/guix scripts/guix: scripts/guix.in Makefile
	...
--8<---------------cut here---------------end--------------->8---

I don't think it would work.  Installed files are not part of the
dependency graph, so I don't think this rule would be triggered when
doing ‘make install’.

-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37




Information forwarded to guix-patches <at> gnu.org:
bug#30147; Package guix-patches. (Tue, 23 Jan 2018 12:30:02 GMT) Full text and rfc822 format available.

Message #19 received at 30147 <at> debbugs.gnu.org (full text, mbox):

From: Mathieu Lirzin <mthl <at> gnu.org>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 30147 <at> debbugs.gnu.org
Subject: Re: [bug#30147] Simplify “scripts/guix”
Date: Tue, 23 Jan 2018 13:29:17 +0100
[Message part 1 (text/plain, inline)]
Hello,

ludo <at> gnu.org (Ludovic Courtès) writes:

> Mathieu Lirzin <mthl <at> gnu.org> skribis:
>
>> From 342444897673d5f9d9a475986e76ca2e912f6674 Mon Sep 17 00:00:00 2001
>> From: Mathieu Lirzin <mthl <at> gnu.org>
>> Date: Wed, 17 Jan 2018 17:14:24 +0100
>> Subject: [PATCH 1/2] =?UTF-8?q?build:=20Expand=20=E2=80=98scripts/guix?=
>>  =?UTF-8?q?=E2=80=99=20at=20Make=20time.?=
>> MIME-Version: 1.0
>> Content-Type: text/plain; charset=UTF-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 ‘config-lookup’.
>> * configure.ac: Don't use AC_CONFIG_FILES for ‘scripts/guix’.
>> * Makefile.am (scripts/guix): New rule.
>> (do_subst): New variable.
>> (CLEANFILES, EXTRA_DIST): Adapt.
>
> That’s a good idea.  I applied it with the changes below, mostly to
> account for Eric’s suggestions.

Thanks.

>> From b6f8331455da1ffc4896b06cd2ee98e09b05be43 Mon Sep 17 00:00:00 2001
>> From: Mathieu Lirzin <mthl <at> gnu.org>
>> 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=UTF-8
>> Content-Transfer-Encoding: 8bit
>>
>> * scripts/guix.in: Use ‘and-let*’ and remove empty surrounding ‘let’.
>> (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’d 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=> 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 ‘-e main
-s’ command-line switches.

[0001-guix-Refactor-script.patch (text/x-patch, inline)]
From 77379bbf2642762927c01cc7f10eb5761626f172 Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl <at> gnu.org>
Date: Tue, 23 Jan 2018 12:52:33 +0100
Subject: [PATCH] guix: Refactor script.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* scripts/guix.in: Remove empty surrounding ‘let’.  Define 'main' as the
procedure called when running the script.
(maybe-augment-load-paths!): Rename to ...
(augment-load-paths!): ... this.  Use 'and=>' 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))
 
-(let ()
-  (define-syntax-rule (push! elt v) (set! v (cons elt v)))
+(define-syntax-rule (push! elt v) (set! v (cons elt v)))
 
-  (define (maybe-augment-load-paths!)
-    (unless (getenv "GUIX_UNINSTALLED")
-      (push! "@guilemoduledir@" %load-path)
-      (push! "@guileobjectdir@" %load-compiled-path)
-      (let ((updates-dir (and=> (or (getenv "XDG_CONFIG_HOME")
-                                    (and=> (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)
 
-  (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=> (or (getenv "XDG_CONFIG_HOME")
+                                (and=> (getenv "HOME")
+                                       (cut string-append <> "/.config")))
+                            (cut string-append <> "/guix/latest"))))
+    (when (and=> 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))))
 
-  (maybe-augment-load-paths!)
+(define* (main #:optional (args (command-line)))
+  (unless (getenv "GUIX_UNINSTALLED")
+    (augment-load-paths!))
 
-  ;; 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 cannot
+    ;; really do it now.
+    (apply guix-main args)))
-- 
2.16.0

[Message part 3 (text/plain, inline)]
-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

Information forwarded to guix-patches <at> gnu.org:
bug#30147; Package guix-patches. (Tue, 23 Jan 2018 14:02:02 GMT) Full text and rfc822 format available.

Message #22 received at 30147-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Mathieu Lirzin <mthl <at> gnu.org>
Cc: 30147-done <at> debbugs.gnu.org
Subject: Re: [bug#30147] Simplify “scripts/guix”
Date: Tue, 23 Jan 2018 15:01:53 +0100
Mathieu Lirzin <mthl <at> gnu.org> skribis:

>>> From b6f8331455da1ffc4896b06cd2ee98e09b05be43 Mon Sep 17 00:00:00 2001
>>> From: Mathieu Lirzin <mthl <at> gnu.org>
>>> 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=UTF-8
>>> Content-Transfer-Encoding: 8bit
>>>
>>> * scripts/guix.in: Use ‘and-let*’ and remove empty surrounding ‘let’.
>>> (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’d 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=> 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 ‘-e main
> -s’ command-line switches.
>
> From 77379bbf2642762927c01cc7f10eb5761626f172 Mon Sep 17 00:00:00 2001
> From: Mathieu Lirzin <mthl <at> gnu.org>
> Date: Tue, 23 Jan 2018 12:52:33 +0100
> Subject: [PATCH] guix: Refactor script.
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> * scripts/guix.in: Remove empty surrounding ‘let’.  Define 'main' as the
> procedure called when running the script.
> (maybe-augment-load-paths!): Rename to ...
> (augment-load-paths!): ... this.  Use 'and=>' for 'file-exists?'.
> (run-guix-main): Rename to ...
> (main): ... this.  Call 'augment-load-paths!'.

Works for me.  Applied and pushed, thanks!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#30147; Package guix-patches. (Wed, 24 Jan 2018 11:46:01 GMT) Full text and rfc822 format available.

Message #25 received at 30147-done <at> debbugs.gnu.org (full text, mbox):

From: Mathieu Lirzin <mthl <at> gnu.org>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 30147-done <at> debbugs.gnu.org
Subject: Re: [bug#30147] Simplify “scripts/guix”
Date: Wed, 24 Jan 2018 12:45:16 +0100
[Message part 1 (text/plain, inline)]
Hello again,

ludo <at> gnu.org (Ludovic Courtès) writes:

> Mathieu Lirzin <mthl <at> gnu.org> skribis:
>
>> From 77379bbf2642762927c01cc7f10eb5761626f172 Mon Sep 17 00:00:00 2001
>> From: Mathieu Lirzin <mthl <at> gnu.org>
>> Date: Tue, 23 Jan 2018 12:52:33 +0100
>> Subject: [PATCH] guix: Refactor script.
>> MIME-Version: 1.0
>> Content-Type: text/plain; charset=UTF-8
>> Content-Transfer-Encoding: 8bit
>>
>> * scripts/guix.in: Remove empty surrounding ‘let’.  Define 'main' as the
>> procedure called when running the script.
>> (maybe-augment-load-paths!): Rename to ...
>> (augment-load-paths!): ... this.  Use 'and=>' for 'file-exists?'.
>> (run-guix-main): Rename to ...
>> (main): ... this.  Call 'augment-load-paths!'.
>
> Works for me.  Applied and pushed, thanks!

Thanks for applying this.

I didn't notice that Emacs stopped setting ‘scheme-mode’ automatically
due to the extra line implied by the use of the Guile meta switch.

Here is a fix to please Emacs.

[0001-guix-Let-Emacs-detect-scripts-guix.in-appropriate-mo.patch (text/x-patch, inline)]
From a798d6b7fa3b71faf85b4d415de99abccbfe7aab Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl <at> gnu.org>
Date: Wed, 24 Jan 2018 12:29:17 +0100
Subject: [PATCH] =?UTF-8?q?guix:=20Let=20Emacs=20detect=20=E2=80=9Cscripts?=
 =?UTF-8?q?/guix.in=E2=80=9D=20appropriate=20mode.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Since commit 6f774d481839f87178c5895ac2d661e141f879b8 which introduces the use
of Guile's meta switch in “scripts/guix.in”, Emacs was not using ‘scheme-mode’
for this file.

* scripts/guix.in: Replace "-*- scheme -*-" with a local variable.
---
 scripts/guix.in | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/scripts/guix.in b/scripts/guix.in
index e0f0ae7e0..d1c12eae5 100644
--- a/scripts/guix.in
+++ b/scripts/guix.in
@@ -1,6 +1,5 @@
 #!@GUILE@ \
 --no-auto-compile -e main -s
--*- scheme -*-
 !#
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Mark H Weaver <mhw <at> netris.org>
@@ -57,3 +56,7 @@
     ;; but since the 'guix' command is not updated by 'guix pull', we cannot
     ;; really do it now.
     (apply guix-main args)))
+
+;;; Local Variables:
+;;; mode: scheme
+;;; End:
-- 
2.16.0

[Message part 3 (text/plain, inline)]
Sorry for the mess.

-- 
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

Information forwarded to guix-patches <at> gnu.org:
bug#30147; Package guix-patches. (Wed, 24 Jan 2018 13:47:02 GMT) Full text and rfc822 format available.

Message #28 received at 30147-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Mathieu Lirzin <mthl <at> gnu.org>
Cc: 30147-done <at> debbugs.gnu.org
Subject: Re: [bug#30147] Simplify “scripts/guix”
Date: Wed, 24 Jan 2018 14:46:41 +0100
Mathieu Lirzin <mthl <at> gnu.org> skribis:

> I didn't notice that Emacs stopped setting ‘scheme-mode’ automatically
> due to the extra line implied by the use of the Guile meta switch.
>
> Here is a fix to please Emacs.

Perfect, thanks!

Ludo'.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 22 Feb 2018 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 57 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.