unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* -I for guile command line
@ 2004-07-02  1:35 Richard Todd
  2004-07-10  0:12 ` Kevin Ryde
  2004-08-15 21:27 ` Marius Vollmer
  0 siblings, 2 replies; 9+ messages in thread
From: Richard Todd @ 2004-07-02  1:35 UTC (permalink / raw)
  Cc: Richard Todd

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

any interest in this patch?  It lets you put -I on the guile command 
line, to add directories to the load path.

as in:
   guile -I ..  -I . script-in-development.scm

I find this easier than mucking with that environment variable.


[-- Attachment #2: dash_i.patch --]
[-- Type: application/octet-stream, Size: 1734 bytes --]

Index: libguile/script.c
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/script.c,v
retrieving revision 1.61
diff -u -r1.61 script.c
--- libguile/script.c	16 Jun 2004 04:08:25 -0000	1.61
+++ libguile/script.c	2 Jul 2004 01:29:05 -0000
@@ -361,6 +361,7 @@
            "remaining arguments as the value of (command-line).\n"
            "If FILE begins with `-' the -s switch is mandatory.\n"
            "\n"
+           "  -I DIRECTORY   add DIRECTORY to the module load path\n"
            "  -l FILE        load Scheme source code from FILE\n"
            "  -e FUNCTION    after reading script, apply FUNCTION to\n"
            "                 command line arguments\n"
@@ -395,7 +396,10 @@
 SCM_SYMBOL (sym_top_repl, "top-repl");
 SCM_SYMBOL (sym_quit, "quit");
 SCM_SYMBOL (sym_use_srfis, "use-srfis");
-
+SCM_SYMBOL (sym_load_path, "%load-path");
+SCM_SYMBOL (sym_set_x, "set!");
+SCM_SYMBOL (sym_cons, "cons");
+ 
 
 /* Given an array of command-line switches, return a Scheme expression
    to carry out the actions specified by the switches.
@@ -485,6 +489,18 @@
 	  break;
 	}
 
+      else if (! strcmp (argv[i], "-I"))
+        {
+         if (++i < argc)
+           tail = scm_cons (SCM_LIST3 (sym_set_x, sym_load_path,
+                                       SCM_LIST3 (sym_cons,
+                                                  scm_makfrom0str(argv[i]),
+                                                  sym_load_path)),
+                            tail);
+         else
+           scm_shell_usage (1, "missing argument to -I switch");
+         }
+      
       else if (! strcmp (argv[i], "-l")) /* load a file */
 	{
 	  if (++i < argc)

[-- Attachment #3: Type: text/plain, Size: 143 bytes --]

_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
@ 2004-07-05 17:56 Andy Wingo
  0 siblings, 0 replies; 9+ messages in thread
From: Andy Wingo @ 2004-07-05 17:56 UTC (permalink / raw)


On Thu, 2004-07-01 at 20:35 -0500, Richard Todd wrote:
> any interest in this patch?  It lets you put -I on the guile command 
> line, to add directories to the load path.

I'm interested. I think that environment variable sucks, too.
(Especially given the recent discussion about "/foo/dir:" including the
current dir, in relation to hacking LD_LIBRARY_PATH and security
vulnerabilities.)

One thing: since guile scripts can chdir, perhaps the paths should be
resolved to absolute paths. But ++votes for it to be included in
guile :)

Cheers,
-- 
Andy Wingo <wingo@pobox.com>
http://ambient.2y.net/wingo/


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
  2004-07-02  1:35 -I for guile command line Richard Todd
@ 2004-07-10  0:12 ` Kevin Ryde
  2004-07-10  1:28   ` Richard Todd
  2004-08-15 21:27 ` Marius Vollmer
  1 sibling, 1 reply; 9+ messages in thread
From: Kevin Ryde @ 2004-07-10  0:12 UTC (permalink / raw)
  Cc: guile-devel

Richard Todd <rwtodd@mac.com> writes:
>
>    guile -I ..  -I . script-in-development.scm

Or call it -L, like emacs takes (ld and cc too of course).  Might be
easy to remember as L for load-path.

(I know -I is used by perl, I guess that makes sense there since it's
the @INC variable which gets munged.)


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
  2004-07-10  0:12 ` Kevin Ryde
@ 2004-07-10  1:28   ` Richard Todd
  0 siblings, 0 replies; 9+ messages in thread
From: Richard Todd @ 2004-07-10  1:28 UTC (permalink / raw)
  Cc: Richard Todd, guile-devel

On Jul 9, 2004, at 7:12 PM, Kevin Ryde wrote:
> (I know -I is used by perl, I guess that makes sense there since it's
> the @INC variable which gets munged.)
>

Yeah, I was just matching perl, since I'm used to it.  I don't care 
which letter gets used, as long as the facility is there.  (well, as 
long as everyone agrees that '-classpath' is right out!)



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
  2004-07-02  1:35 -I for guile command line Richard Todd
  2004-07-10  0:12 ` Kevin Ryde
@ 2004-08-15 21:27 ` Marius Vollmer
  2004-08-15 21:36   ` Richard Todd
  1 sibling, 1 reply; 9+ messages in thread
From: Marius Vollmer @ 2004-08-15 21:27 UTC (permalink / raw)
  Cc: guile-devel

Richard Todd <rwtodd@mac.com> writes:

> any interest in this patch?  It lets you put -I on the guile command
> line, to add directories to the load path.
>
> as in:
>    guile -I ..  -I . script-in-development.scm
>
> I find this easier than mucking with that environment variable.

That's a nice feature, we should add it.

But, in which order should the arguments be added to the load path?
The usual way would be to add them in such a way that the first
argument is searched first, I'd say.  You patch makes the frist one be
searched last.

Also, the command-line dirs should probably be searched before the
environment ones, which you patch does, but we need to document this
all properly.

I'd say we should use '-L' instead of '-I'.

Sooo, could you make a new patch that addresses the issues above, if
you agree?

-- 
GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
  2004-08-15 21:27 ` Marius Vollmer
@ 2004-08-15 21:36   ` Richard Todd
  2004-08-15 23:17     ` Richard Todd
  0 siblings, 1 reply; 9+ messages in thread
From: Richard Todd @ 2004-08-15 21:36 UTC (permalink / raw)
  Cc: Richard Todd, guile-devel

On Aug 15, 2004, at 4:27 PM, Marius Vollmer wrote:

> Sooo, could you make a new patch that addresses the issues above, if
> you agree?

Sure.



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
  2004-08-15 21:36   ` Richard Todd
@ 2004-08-15 23:17     ` Richard Todd
  2004-08-15 23:18       ` Richard Todd
  2004-08-21 17:45       ` Marius Vollmer
  0 siblings, 2 replies; 9+ messages in thread
From: Richard Todd @ 2004-08-15 23:17 UTC (permalink / raw)
  Cc: guile-devel, Marius Vollmer

On Aug 15, 2004, at 4:36 PM, Richard Todd wrote:

> On Aug 15, 2004, at 4:27 PM, Marius Vollmer wrote:
>
>> Sooo, could you make a new patch that addresses the issues above, if
>> you agree?
>
> Sure.

Try this patch... I think it addresses everything you mentioned.   I 
use '-L' now, and the paths end up in %load-path in command-line 
left-to-right order.  I made an attempt at documenting it in the .texi 
files.

I chose to make the -L flags take effect _after_ loading the user's 
.guile file, since I assume it'd be rare that a user actually wants to 
redirect their standard startup modules on a per-run basis.  If you 
disagree with me, just move the place where I do the scm_append_x down 
a couple lines.

Richard



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
  2004-08-15 23:17     ` Richard Todd
@ 2004-08-15 23:18       ` Richard Todd
  2004-08-21 17:45       ` Marius Vollmer
  1 sibling, 0 replies; 9+ messages in thread
From: Richard Todd @ 2004-08-15 23:18 UTC (permalink / raw)
  Cc: Marius Vollmer, guile-devel

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

this time, with the actual patch...sorry!


[-- Attachment #2: dash_L.patch --]
[-- Type: application/octet-stream, Size: 4790 bytes --]

Index: doc/ref/ChangeLog
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/doc/ref/ChangeLog,v
retrieving revision 1.220
diff -u -r1.220 ChangeLog
--- doc/ref/ChangeLog	14 Aug 2004 01:06:13 -0000	1.220
+++ doc/ref/ChangeLog	15 Aug 2004 23:04:27 -0000
@@ -1,3 +1,7 @@
+2004-08-15  Richard Todd  <rwtodd@mac.com>
+
+	* scheme-scripts.texi (Invoking Guile): documented new '-L' switch.
+
 2004-08-14  Kevin Ryde  <user42@zip.com.au>
 
 	* api-scheduling.texi (Mutexes): New datatype-centric section, adding
Index: doc/ref/scheme-scripts.texi
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/doc/ref/scheme-scripts.texi,v
retrieving revision 1.1
diff -u -r1.1 scheme-scripts.texi
--- doc/ref/scheme-scripts.texi	2 Aug 2004 12:29:00 -0000	1.1
+++ doc/ref/scheme-scripts.texi	15 Aug 2004 23:04:28 -0000
@@ -103,6 +103,12 @@
 @code{(@var{guile} @var{arg...})}, where @var{guile} is the path of the
 Guile executable.
 
+@item -L @var{directory}
+Add @var{directory} to the front of Guile's module load path.  The 
+given directory is searched before any directories in the GUILE_LOAD_PATH
+environment variable.  Paths added here are @emph{not} in effect during
+execution of the user's @file{.guile} file.
+
 @item -l @var{file}
 Load Scheme source code from @var{file}, and continue processing the
 command line.
Index: libguile/ChangeLog
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/ChangeLog,v
retrieving revision 1.2119
diff -u -r1.2119 ChangeLog
--- libguile/ChangeLog	13 Aug 2004 12:28:38 -0000	1.2119
+++ libguile/ChangeLog	15 Aug 2004 23:04:41 -0000
@@ -1,3 +1,8 @@
+2004-08-15  Richard Todd  <rwtodd@mac.com>
+
+	* script.c (scm_compile_shell_switches): added '-L' switch to
+	add to the %load-path.
+
 2004-08-13  Marius Vollmer  <marius.vollmer@uni-dortmund.de>
 
 	* load.c (scm_init_load_path): Do not pass NULL to
Index: libguile/script.c
===================================================================
RCS file: /cvsroot/guile/guile/guile-core/libguile/script.c,v
retrieving revision 1.64
diff -u -r1.64 script.c
--- libguile/script.c	12 Aug 2004 17:35:53 -0000	1.64
+++ libguile/script.c	15 Aug 2004 23:04:42 -0000
@@ -361,6 +361,7 @@
            "remaining arguments as the value of (command-line).\n"
            "If FILE begins with `-' the -s switch is mandatory.\n"
            "\n"
+           "  -L DIRECTORY   add DIRECTORY to the front of the module load path\n"
            "  -l FILE        load Scheme source code from FILE\n"
            "  -e FUNCTION    after reading script, apply FUNCTION to\n"
            "                 command line arguments\n"
@@ -395,7 +396,9 @@
 SCM_SYMBOL (sym_top_repl, "top-repl");
 SCM_SYMBOL (sym_quit, "quit");
 SCM_SYMBOL (sym_use_srfis, "use-srfis");
-
+SCM_SYMBOL (sym_load_path, "%load-path");
+SCM_SYMBOL (sym_set_x, "set!");
+SCM_SYMBOL (sym_cons, "cons");
 
 /* Given an array of command-line switches, return a Scheme expression
    to carry out the actions specified by the switches.
@@ -418,6 +421,7 @@
 				   the "load" command, in case we get
 				   the "-ds" switch.  */
   SCM entry_point = SCM_EOL;	/* for -e switch */
+  SCM user_load_path = SCM_EOL; /* for -L switch */
   int interactive = 1;		/* Should we go interactive when done? */
   int inhibit_user_init = 0;	/* Don't load user init file */
   int use_emacs_interface = 0;
@@ -496,6 +500,19 @@
 	    scm_shell_usage (1, "missing argument to `-l' switch");
 	}	  
 
+      else if (! strcmp (argv[i], "-L")) /* add to %load-path */
+	{
+	  if (++i < argc)
+	    user_load_path = scm_cons (scm_list_3 (sym_set_x, 
+                                                   sym_load_path, 
+                                                   scm_list_3(sym_cons,
+                                                              scm_makfrom0str (argv[i]),
+                                                              sym_load_path)),
+                                       user_load_path);
+	  else
+	    scm_shell_usage (1, "missing argument to `-L' switch");
+	}	  
+
       else if (! strcmp (argv[i], "-e")) /* entry point */
 	{
 	  if (++i < argc)
@@ -629,6 +646,13 @@
 
   /* After the following line, actions will be added to the front. */
   tail = scm_reverse_x (tail, SCM_UNDEFINED);
+
+  /* add the user-specified load path here, so it won't be in effect
+     during the loading of the user's customization file. */
+  if(!SCM_NULLP(user_load_path)) 
+    {
+      tail = scm_append_x( scm_cons2(user_load_path, tail, SCM_EOL) );
+    }
   
   /* If we didn't end with a -c or a -s and didn't supply a -q, load
      the user's customization file.  */

[-- Attachment #3: Type: text/plain, Size: 812 bytes --]




On Aug 15, 2004, at 6:17 PM, Richard Todd wrote:

> On Aug 15, 2004, at 4:36 PM, Richard Todd wrote:
>
>> On Aug 15, 2004, at 4:27 PM, Marius Vollmer wrote:
>>
>>> Sooo, could you make a new patch that addresses the issues above, if
>>> you agree?
>>
>> Sure.
>
> Try this patch... I think it addresses everything you mentioned.   I 
> use '-L' now, and the paths end up in %load-path in command-line 
> left-to-right order.  I made an attempt at documenting it in the .texi 
> files.
>
> I chose to make the -L flags take effect _after_ loading the user's 
> .guile file, since I assume it'd be rare that a user actually wants to 
> redirect their standard startup modules on a per-run basis.  If you 
> disagree with me, just move the place where I do the scm_append_x down 
> a couple lines.
>
> Richard
>

[-- Attachment #4: Type: text/plain, Size: 143 bytes --]

_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: -I for guile command line
  2004-08-15 23:17     ` Richard Todd
  2004-08-15 23:18       ` Richard Todd
@ 2004-08-21 17:45       ` Marius Vollmer
  1 sibling, 0 replies; 9+ messages in thread
From: Marius Vollmer @ 2004-08-21 17:45 UTC (permalink / raw)
  Cc: guile-devel

Richard Todd <rwtodd@mac.com> writes:

> Try this patch... I think it addresses everything you mentioned.

Yep, excellent, thanks!  I have applied it.

-- 
GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2004-08-21 17:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-02  1:35 -I for guile command line Richard Todd
2004-07-10  0:12 ` Kevin Ryde
2004-07-10  1:28   ` Richard Todd
2004-08-15 21:27 ` Marius Vollmer
2004-08-15 21:36   ` Richard Todd
2004-08-15 23:17     ` Richard Todd
2004-08-15 23:18       ` Richard Todd
2004-08-21 17:45       ` Marius Vollmer
  -- strict thread matches above, loose matches on Subject: below --
2004-07-05 17:56 Andy Wingo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).