Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0006199OCamlOCaml internal build/install (Makefiles, configure)public2013-10-02 11:032013-10-03 14:56
Reporterfrisch 
Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusnewResolutionopen 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0006199: Allow generating bytecode executables without the header
Descriptionocamlc 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.
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
2013-10-02 11:03 frisch New Issue


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker