|Anonymous | Login | Signup for a new account||2013-05-22 10:46 CEST|
|Main | My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004613||OCaml||OCamlbuild (the tool)||public||2008-09-14 10:45||2012-09-10 14:23|
|Target Version||4.00.2+dev||Fixed in Version|
|Summary||0004613: Tries to build cmo files for native target(s)|
|Description||Invoking: ocamlbuild snowflake/asm.cmx, it tries to build snowflake/asm.cmo|
I have also seen this issue in 3.10.0 & 3.10.2.
From what I can tell, ocamlbuild forces building of cmo when building cmi if no mli file is present.
Not only is it unnecessary work, ocamlbuild appears to throw away the cmo at some point, and rebuilds the cmo everytime ocamlbuild is run on a target that invokes this behaviour.
|Additional Information||Part of the output from ocamlbuild with -verbose 10|
Doing sanity checks
include directories are: [ "." ]
kernel/asm.ml exists and up to date
kernel/asm.ml already built
start rule ocaml dependencies ml (%=kernel/asm )
new dyndep for "ocaml: ml -> cmo & cmi (%=kernel/asm )"([ kernel/asm.cmo;
kernel/asm.cmi ]): "libraries/stdlib/pervasives.cmi"
|Tags||No tags attached.|
|Attached Files||ocamlbuild.snowflake.patch [^] (946 bytes) 2008-09-14 23:42 [Show Content]|
Attached a patch to avoid use of ocamlc in native-only projects.
Also tested building ocaml source tree with patch applied using build/fastworld.sh without error.
This should also resolve issue 0004421.
Might also be better to make condition more explicit, e.g. (Tags.mem "native" tags) and not (Tags.mem "byte" tags).
Wouldn't it be sufficient to add native counterpart for the following rule (the only one that produces cmi currently, hence the problem):
rule "ocaml: ml -> cmo & cmi"
(Ocaml_compiler.byte_compile_ocaml_implem "%.ml" "%.cmo");;
rule "ocaml: ml -> cmx & o & cmi"
~prods:["%.cmx"; x_o; "%.cmi"]
And add "%.mli" to the ~deps of rule "ocaml: ml & cmi -> cmx & o" (for the same purpose it is done for byte rules, to handle the situation when mli is provided).
Currently default rules suggest that cmi is required to build cmx, but this is not true, isn't it?
That doesn't work. There is also the rule "ocaml: mli -> cmi" that'll trigger ocamlc over ocamlopt as well.
Given in normal circumstances, it doesn't affect anybody, might as well close issue.
|2008-09-14 10:45||jessicah||New Issue|
|2008-09-14 23:42||jessicah||File Added: ocamlbuild.snowflake.patch|
|2008-09-15 01:13||jessicah||Note Added: 0004614|
|2008-09-23 02:09||doligez||Status||new => assigned|
|2008-09-23 02:09||doligez||Assigned To||=> ertai|
|2010-03-04 18:07||ygrek||Note Added: 0005256|
|2010-05-01 12:03||jessicah||Note Added: 0005434|
|2010-07-22 11:40||ertai||Assigned To||ertai => xclerc|
|2011-06-06 09:08||xclerc||Relationship added||has duplicate 0005282|
|2012-02-02 15:17||protz||Category||OCamlbuild => OCamlbuild (the tool)|
|2012-07-04 13:54||doligez||Relationship added||related to 0004421|
|2012-07-06 16:38||doligez||Target Version||=> 4.01.0+dev|
|2012-07-31 13:36||doligez||Target Version||4.01.0+dev => 4.00.1+dev|
|2012-09-10 14:05||frisch||Target Version||4.00.1+dev => 4.00.2+dev|
|Copyright © 2000 - 2011 MantisBT Group|