GNU logs - #39162, boring messages


Message sent to bug-guile@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#39162: [PATCH] Fix file lookup of modules with a dot in their name.
Resent-From: Jan Nieuwenhuizen <janneke@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guile@HIDDEN
Resent-Date: Fri, 17 Jan 2020 15:29:01 +0000
Resent-Message-ID: <handler.39162.B.157927492928513 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 39162
X-GNU-PR-Package: guile
X-GNU-PR-Keywords: patch
To: 39162 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-guile@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.157927492928513
          (code B ref -1); Fri, 17 Jan 2020 15:29:01 +0000
Received: (at submit) by debbugs.gnu.org; 17 Jan 2020 15:28:49 +0000
Received: from localhost ([127.0.0.1]:39950 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1isTYC-0007Pe-Uv
	for submit <at> debbugs.gnu.org; Fri, 17 Jan 2020 10:28:49 -0500
Received: from lists.gnu.org ([209.51.188.17]:40280)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <janneke@HIDDEN>) id 1isTYB-0007PX-Aw
 for submit <at> debbugs.gnu.org; Fri, 17 Jan 2020 10:28:43 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:36515)
 by lists.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <janneke@HIDDEN>) id 1isTY9-0005mH-6W
 for bug-guile@HIDDEN; Fri, 17 Jan 2020 10:28:43 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
 URIBL_BLOCKED autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:470:142:3::e]:33321)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <janneke@HIDDEN>)
 id 1isTY9-0002Rr-0X; Fri, 17 Jan 2020 10:28:41 -0500
Received: from [2001:980:1b4f:1:42d2:832d:bb59:862] (port=50894
 helo=dundal.peder.onsbrabantnet.nl)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <janneke@HIDDEN>)
 id 1isTY6-0004u7-RF; Fri, 17 Jan 2020 10:28:39 -0500
From: Jan Nieuwenhuizen <janneke@HIDDEN>
Date: Fri, 17 Jan 2020 16:21:47 +0100
Message-ID: <875zhartv8.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

--=-=-=
Content-Type: text/plain

Hello Guile!

Much to my surprise, Guile (v2.2 and 3.0 alike) fail to load a module
that has a dot in its base name.  Directory names with dots
(e.g. ice.10/boot-10.scm => (ice.10 boot-10)) are fine.

The attached patch now makes this work:

--8<---------------cut here---------------start------------->8---
;;; foo.bar.scm
(display "foo.bar\n")
(define-module (foo.bar))
(display "module: foo.bar\n")

16:15:31 janneke@dundal:~/src/guile [env]
$ GUILE=meta/guile ./meta/guild compile foo.bar.scm -o foo.bar.go
wrote `foo.bar.go'
16:15:46 janneke@dundal:~/src/guile [env]
$ ./meta/guile -q -L . -C . -c '(use-modules (foo.bar))'
foo.bar
module: foo.bar
16:16:03 janneke@dundal:~/src/guile [env]
--8<---------------cut here---------------end--------------->8---

The patch applies to 2.2 as 3.0 as well.  The code that I removed has
some comments about what the code is doing, but I fail to grasp any sort
of why.

Greetings,
janneke


--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline;
 filename=0001-Fix-file-lookup-of-modules-with-a-dot-in-their-name.patch

From ad64e3e93b3f5f749d3e3949458ef9d19710b2ee Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@HIDDEN>
Date: Fri, 17 Jan 2020 16:03:13 +0100
Subject: [PATCH] Fix file lookup of modules with a dot in their name.

This fixes lookup of file foo.bar.go, loading

    (define-module (foo.bar))
    ...

* libguile/load.c (load_thunk_from_path): Remove code that decides
foo.bar is not a valid module file base name.
---
 libguile/load.c | 35 +----------------------------------
 1 file changed, 1 insertion(+), 34 deletions(-)

diff --git a/libguile/load.c b/libguile/load.c
index e95c36db1..23409ebd5 100644
--- a/libguile/load.c
+++ b/libguile/load.c
@@ -649,7 +649,6 @@ load_thunk_from_path (SCM filename, SCM source_file_name,
   struct stringbuf buf;
   struct stat stat_buf;
   char *filename_chars;
-  size_t filename_len;
   SCM path, extensions;
   SCM result = SCM_BOOL_F;
   char initial_buffer[256];
@@ -667,7 +666,6 @@ load_thunk_from_path (SCM filename, SCM source_file_name,
   scm_dynwind_begin (0);
 
   filename_chars = scm_to_locale_string (filename);
-  filename_len = strlen (filename_chars);
   scm_dynwind_free (filename_chars);
 
   /* If FILENAME is absolute and is still valid, return it unchanged.  */
@@ -680,38 +678,7 @@ load_thunk_from_path (SCM filename, SCM source_file_name,
       goto end;
     }
 
-  /* If FILENAME has an extension, don't try to add EXTENSIONS to it.  */
-  {
-    char *endp;
-
-    for (endp = filename_chars + filename_len - 1;
-	 endp >= filename_chars;
-	 endp--)
-      {
-	if (*endp == '.')
-	  {
-            if (!string_has_an_ext (filename, extensions))
-              {
-                /* This filename has an extension, but not one of the right
-                   ones... */
-                goto end;
-              }
-	    /* This filename already has an extension, so cancel the
-               list of extensions.  */
-	    extensions = SCM_EOL;
-	    break;
-	  }
-	else if (is_file_name_separator (SCM_MAKE_CHAR (*endp)))
-	  /* This filename has no extension, so keep the current list
-             of extensions.  */
-	  break;
-      }
-  }
-
-  /* This simplifies the loop below a bit.
-   */
-  if (scm_is_null (extensions))
-    extensions = scm_listofnullstr;
+  extensions = scm_append (scm_list_2 (extensions, scm_listofnullstr));
 
   buf.buf_len = sizeof initial_buffer;
   buf.buf = initial_buffer;
-- 
2.24.1


--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable


--=20
Jan Nieuwenhuizen <janneke@HIDDEN> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com

--=-=-=--




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Jan Nieuwenhuizen <janneke@HIDDEN>
Subject: bug#39162: Acknowledgement ([PATCH] Fix file lookup of modules
 with a dot in their name.)
Message-ID: <handler.39162.B.157927492928513.ack <at> debbugs.gnu.org>
References: <875zhartv8.fsf@HIDDEN>
X-Gnu-PR-Message: ack 39162
X-Gnu-PR-Package: guile
X-Gnu-PR-Keywords: patch
Reply-To: 39162 <at> debbugs.gnu.org
Date: Fri, 17 Jan 2020 15:29:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-guile@HIDDEN

If you wish to submit further information on this problem, please
send it to 39162 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
39162: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D39162
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-guile@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#39162: [PATCH] Fix file lookup of modules with a dot in their name.
Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-guile@HIDDEN
Resent-Date: Sat, 21 Mar 2020 21:47:02 +0000
Resent-Message-ID: <handler.39162.B39162.158482719429306 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 39162
X-GNU-PR-Package: guile
X-GNU-PR-Keywords: patch
To: Jan Nieuwenhuizen <janneke@HIDDEN>
Cc: 39162 <at> debbugs.gnu.org
Received: via spool by 39162-submit <at> debbugs.gnu.org id=B39162.158482719429306
          (code B ref 39162); Sat, 21 Mar 2020 21:47:02 +0000
Received: (at 39162) by debbugs.gnu.org; 21 Mar 2020 21:46:34 +0000
Received: from localhost ([127.0.0.1]:48312 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jFlww-0007cb-Iz
	for submit <at> debbugs.gnu.org; Sat, 21 Mar 2020 17:46:34 -0400
Received: from eggs.gnu.org ([209.51.188.92]:40501)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1jFlwv-0007cM-Ek
 for 39162 <at> debbugs.gnu.org; Sat, 21 Mar 2020 17:46:33 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:51567)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <ludo@HIDDEN>)
 id 1jFlwq-0008BI-8T; Sat, 21 Mar 2020 17:46:28 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=56246 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1jFlwn-0002sa-31; Sat, 21 Mar 2020 17:46:28 -0400
From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
References: <875zhartv8.fsf@HIDDEN>
Date: Sat, 21 Mar 2020 22:46:20 +0100
In-Reply-To: <875zhartv8.fsf@HIDDEN> (Jan Nieuwenhuizen's message of "Fri, 17
 Jan 2020 16:21:47 +0100")
Message-ID: <878sjtxtxv.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Spam-Score: -0.7 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi!

Jan Nieuwenhuizen <janneke@HIDDEN> skribis:

> Much to my surprise, Guile (v2.2 and 3.0 alike) fail to load a module
> that has a dot in its base name.  Directory names with dots
> (e.g. ice.10/boot-10.scm =3D> (ice.10 boot-10)) are fine.

[...]

> -  /* If FILENAME has an extension, don't try to add EXTENSIONS to it.  */
> -  {
> -    char *endp;
> -
> -    for (endp =3D filename_chars + filename_len - 1;
> -	 endp >=3D filename_chars;
> -	 endp--)
> -      {
> -	if (*endp =3D=3D '.')
> -	  {
> -            if (!string_has_an_ext (filename, extensions))
> -              {
> -                /* This filename has an extension, but not one of the ri=
ght
> -                   ones... */
> -                goto end;
> -              }
> -	    /* This filename already has an extension, so cancel the
> -               list of extensions.  */
> -	    extensions =3D SCM_EOL;
> -	    break;
> -	  }
> -	else if (is_file_name_separator (SCM_MAKE_CHAR (*endp)))
> -	  /* This filename has no extension, so keep the current list
> -             of extensions.  */
> -	  break;
> -      }
> -  }

This code mostly dates back to 1999 (commit
563841768b8659dad87296be4ae9ce589cbe99d4).  It has to do with the fact
that you can omit the extension when loading a file, in which case one
of those in =E2=80=98%load-extensions=E2=80=99 is picked up:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (primitive-load-path "ice-9/q")
scheme@(ice-9 q)>
--8<---------------cut here---------------end--------------->8---

The usefulness of this mechanism is debatable :-), but I don=E2=80=99t thin=
k we
can change it during a stable release.

I wonder if there are other ways we could support file names with dots.

However, note that symbols containing dots are non-standard (R5RS does
not allow it.)

Thoughts?

Ludo=E2=80=99.





Last modified: Sat, 21 Mar 2020 22:00:01 UTC

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