|Anonymous | Login | Signup for a new account||2015-03-05 09:11 CET|
|Main | My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0006199||OCaml||OCaml internal build/install (Makefiles, configure)||public||2013-10-02 11:03||2014-06-04 22:05|
|Priority||normal||Severity||feature||Reproducibility||have not tried|
|Target Version||Fixed in Version|
|Summary||0006199: Allow generating bytecode executables without the header|
|Description||ocamlc generates bytecode executable starting with a header in charge of launching ocamlrun. Under Unix, this is a simple #! header (containing the absolute path of ocamlrun) and under Windows, this is an ad hoc program obtained from stdlib/header.c. This creates some issues:|
- Bootstrapping the compiler produces ocamlc/ocamllex executables (stored in the SVN) which depend on the machine where bootstrapping was done. Simply bootstrapping the same version on two different working copies will give different results.
- The header encourages to not call ocamlrun explicitly, but this makes it difficult to provide a relocatable binary distribution of the toolchain, or simply to distribute a bytecode executable (if not compiled with -custom, we really need to call ocamlrun anyway).
- Under Windows, the header is not tiny (about 223kB). (Arguably, we don't really care.) More importantly, maybe, is that calling a bytecode executable with the header creates two Windows processes, while using ocamlrun explicitly creates only one.
I propose to add a link-time flag to ocamlc to avoid inserting an header in the resulting program (and probably stop setting its executable flag). Or maybe this could simply be a special value for use_runtime. We would then use this flag so that the bootstrap tools (boot/ocamlc, boot/ocamllex) don't contain this header.
This will not fix the idempotency problem completely (because some local configuration values are hardcoded in config.ml), but it will be a good step in this direction. Having real idempotency of the bootstrap procedure would allow a nice application: checking in a CI server that the bootstrap fixpoint is reached in the SVN.
|Tags||No tags attached.|
|2013-10-02 11:03||frisch||New Issue|
|2014-06-04 22:05||doligez||Severity||minor => feature|
|2014-06-04 22:05||doligez||Status||new => confirmed|
|Copyright © 2000 - 2011 MantisBT Group|