Received: (at 39162) by debbugs.gnu.org; 21 Mar 2020 21:46:34 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 21 17:46:34 2020 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: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: Jan Nieuwenhuizen <janneke@HIDDEN> Subject: Re: bug#39162: [PATCH] Fix file lookup of modules with a dot in their name. 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-Debbugs-Envelope-To: 39162 Cc: 39162 <at> debbugs.gnu.org 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.
bug-guile@HIDDEN
:bug#39162
; Package guile
.
Full text available.Received: (at submit) by debbugs.gnu.org; 17 Jan 2020 15:28:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 17 10:28:49 2020 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> To: bug-guile@HIDDEN Subject: [PATCH] Fix file lookup of modules with a dot in their name. 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-Debbugs-Envelope-To: submit 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 --=-=-=--
Jan Nieuwenhuizen <janneke@HIDDEN>
:bug-guile@HIDDEN
.
Full text available.bug-guile@HIDDEN
:bug#39162
; Package guile
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.