unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Ken Raeburn <raeburn@raeburn.org>
Subject: Re: dynamic argv0 relocation
Date: Fri, 10 Jun 2005 22:03:14 -0400	[thread overview]
Message-ID: <a38015ab4a89a9cd3927e3ba6ccc8377@raeburn.org> (raw)
In-Reply-To: <87ll5hx4py.fsf@zip.com.au>

On Jun 10, 2005, at 17:49, Kevin Ryde wrote:
> No offence, but it sounds very dubious to me.  These things are meant
> to be settled at the "make all" build stage.  (The gnu standards have
> bits about that.)

Normally, it is, yes, if the application has to have that knowledge 
pre-compiled in.  But does it have to?  It's better still if it just 
doesn't need to do that.

I'd like to bring up a variant on the package-installation issue that 
Jan raised: Mac OS X applications.  An app is represented to the user 
as an object.  It can be moved around, opened (launched), or deleted, 
like any other object.  It just happens that its representation in the 
file system is a directory hierarchy with certain standard components, 
and some application-specific components.  The "Emacs" app, for 
example, includes all of the content of a normal Emacs installation 
buried under Emacs.app/Contents/MacOS and Emacs.app/Contents/Resources. 
  My copy lives in /Applications, but the string "/Applications" doesn't 
seem to live in the executable; it figures out where it is.  I can move 
it to my desktop and launch it from there, and it still works just 
fine.  Or I can copy it to an external drive or a network drive.  If I 
had a copy stored in a networked home directory for use from multiple 
machines, I could copy the *same* application to local disk on my 
office workstation and use it locally, without having to rebuild.  It's 
*very* nice to be able to copy/move an application from one place to 
another or rename it, like you could do for any other object, and have 
it Just Work.  (And it's not unheard of in other GNU software.  See 
GCC's GCC_EXEC_PREFIX environment variable, for example.)

I could see, maybe, creating a Guile.app which starts up a 
terminal-like window with a Guile interpreter running, or something 
like that.  Menu items for "load Scheme file", "new interpreter", etc.  
With all the Scheme support files buried inside, it too could be 
treated as a standalone object.

I think the thing that makes this case tricky is the Guile library.  
The other cases of this sort of thing that I'm familiar with are all 
applications, and don't have to worry about library search paths, or 
being used from within a different package located someplace else.  
(And in the case of Mac OS X, it appears that the "launch" protocol 
includes invoking the executable via an absolute path name and with 
some magic arguments.)  Unfortunately, I don't have any good ideas for 
how to make the library code path-independent without introducing 
environment variables or something like that which the user would have 
to manually set.

Ken


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


  reply	other threads:[~2005-06-11  2:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-10 13:05 dynamic argv0 relocation Jan Nieuwenhuizen
2005-06-10 15:52 ` Ken Raeburn
2005-06-10 21:49 ` Kevin Ryde
2005-06-11  2:03   ` Ken Raeburn [this message]
2005-06-12  4:20     ` Rob Browning
2005-06-15 14:38   ` Jan Nieuwenhuizen
2005-06-17  0:03     ` Kevin Ryde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a38015ab4a89a9cd3927e3ba6ccc8377@raeburn.org \
    --to=raeburn@raeburn.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).