caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Doug Bagley <doug@bagley.org>
To: John Malecki <johnm@artisan.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] error messages to stdout?
Date: Thu, 17 Jan 2002 13:15:12 -0600	[thread overview]
Message-ID: <15431.8896.687093.692408@ns.bagley.org> (raw)
In-Reply-To: <15431.6370.86918.38285@reggie.artisan.com>

John Malecki wrote:
> Doug Bagley wrote (2002-01-16T14:09:48-0600):
>  > 
>  > Anyway, I have a workaround, I wrote a "trampoline" program that can
>  > be used in place of the toplevel interpreter and does the compilation
>  > transparently for lazy persons such as myself.
>  > 
>  > It essentially turns any compiled language into a scripting language.
>  > If anyone is interested in it ... I could clean it up for public
>  > consumption.
> 
> Hi Doug,
> 
> I'd be interested in the trampoline program.

Well, it's pre-release, and uses some pre-requesite libs of mine that
are also pre-release :-)  And I haven't had anyone else test out the
build process yet, and so on and so forth, but if you are adventurous,
you are welcome to take a look and give me feedback, as long as you
realize it is a very raw work-in-progress :)

It is currently here:

 http://www.bagley.org/~doug/ocaml/scriptomatic/

It basically hands off the build work to make, and I have a very
simple makefile included whichs needs a lot of polishing, but the
basic idea seems sound, and I can write "scripts" that compile to
byte or optimized Ocaml, or even write "scripts" in C :) The built
executables are cached, and only rebuilt if the original script
changes.

> At the moment we are operating in a homogeneous computing environment.
> Sooner or later we will add some a different computer architecture to
> our pool and I was thinking about how to take advantage of compiling
> byte-code once and using it on all platforms.  This has the advantage
> that a developer can compile once, on any one platform, and make that
> program immediately available on all other machine architectures.
> 
> I'm not sure of the best way to do this.  I was thinking of using the
> bash MACHTYPE environment variable and then install the byte-code
> program in /usr/local/bin but have the 1st line of that file say
> 
>    #! /usr/local/bin/ocamlrun.$MACHTYPE
> 
> Unfortunately the loader does not perform environment variable
> expansion.  I tried other tricks but I couldn't find a simple "1
> liner".  I'm still looking for something simple.  If anyone has any
> ideas I'd like to hear them.

I think that simply doing what you want above is a little easier than
what I have implemented, and you may wish to use the simplest solution.
I've appended an idea for a replacement interpreter that is an "almost
one-liner" in C below. It switches the toplevel interpreter based on
the machine type environement variable. Maybe it will give you an idea.

(Note that on Linux, the program execed by the trampoline may not see
itself in argv[0], I sent a note to caml-bugs about an old fix (557),
which I think is related to the problem).

cheers,
doug
-- 
trampo.c:
/* gcc trampo.c -o trampo */
#include <stdio.h>
main (int argc, char **argv) {
    char exe[256];
    if (snprintf(exe, 256, "ocamlrun.%s", getenv("MACHTYPE")) > -1)
	execvp(exe, argv);
    else fprintf(stderr, "ouch\n");
}
/* end */

int the shell:
export MACHTYPE=MACLISA  # or whatever

tramptest:
#! ./trampo
let _ = print_endline "Hello World"
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


  reply	other threads:[~2002-01-18 20:35 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-16  5:12 Doug Bagley
2002-01-16 18:50 ` Warp
2002-01-16 19:06   ` Doug Bagley
2002-01-16 19:49 ` Remi VANICAT
2002-01-16 20:09   ` Doug Bagley
2002-01-17 18:33     ` John Malecki
2002-01-17 19:15       ` Doug Bagley [this message]
2002-01-19  8:11       ` Stefano Zacchiroli
2002-01-19  8:46       ` Florian Douetteau

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

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

  git send-email \
    --in-reply-to=15431.8896.687093.692408@ns.bagley.org \
    --to=doug@bagley.org \
    --cc=caml-list@inria.fr \
    --cc=johnm@artisan.com \
    /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 NNTP newsgroup(s).