|Anonymous | Login | Signup for a new account||2013-05-25 13:58 CEST|
|Main | My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004422||OCaml||OCamlbuild (the tool)||public||2007-10-16 05:17||2012-09-06 19:22|
|Target Version||4.00.2+dev||Fixed in Version|
|Summary||0004422: ocamlbuild doesn't rebuild some targets even though dependencies are rebuilt|
|Description||This is probably user-error, as I can't find quite enough documentation on ocamlbuild, being how new and experimental it is... ;-)|
I have a myocamlbuild plugin that replaces the link step using ocamlopt to a custom command using ld, but sometimes it doesn't perform this part of the build even if dependencies were rebuilt.
My ocamlbuild plugin looks something like:
let ld_linker tags deps out =
Cmd (S [A"ld"; A"-nostdlib"; A"-export-dynamic"; A"-T";
A"../libkernel/kernel.lds"; flags_of_pathname out;
A"-s"; P"startup/stage1.o"; P"startup/stage2.o";
atomize_paths deps; T tags; A"-o"; Px out]);;
let ld_native_link x =
OComp.link_gen "cmx" "cmxa" "a" ["o"; "cmi"] ld_linker
(fun tags -> tags++"ocaml"++"link"++"native"++"program") x;;
rule "cmx* & o* -> native"
~tags:["ocaml"; "native"; "program"]
~deps:["%.cmx"; "%.o"; "%.startup"]
(ld_native_link "%.cmx" "%.native");;
Pathname.define_context "" ["snowflake"; "snowflake/net"];;
In the root dir, I have snowflake.ml, that calls a function in a module, snowflake/soundblaster16.ml.
Often times, when I make changes to soundblaster16.ml and run ocamlbuild, it will rebuild soundblaster16.ml, but it doesn't rebuild snowflake.native.
I often end up having to clean my tree and start building from scratch to get a successful build, which is frustrating. Things like changing the values of constants always fails to trigger a rebuild of snowflake.native.
|Tags||No tags attached.|
I cannot reproduce the bug. Please provide sources and a method to trigger the bug, i.e. some changes that are not detected by ocamlbuild.
There used to be a problem because .cmx files don't change when you just modify constants in the code, so digest-base build tools don't rebuild in this case, but this is fixed in ocamlbuild thanks to a dependency towards the .o file.
|2007-10-16 05:17||jessicah||New Issue|
|2007-11-10 14:09||xleroy||Status||new => assigned|
|2007-11-10 14:09||xleroy||Assigned To||=> ertai|
|2008-10-06 11:46||ertai||Category||OCaml general => OCamlbuild|
|2010-07-22 11:45||ertai||Assigned To||ertai => xclerc|
|2012-02-02 15:17||protz||Category||OCamlbuild => OCamlbuild (the tool)|
|2012-07-04 17:15||doligez||Target Version||=> 4.00.0+dev|
|2012-07-12 17:34||lefessan||Note Added: 0007740|
|2012-07-12 17:34||lefessan||Status||assigned => feedback|
|2012-07-12 21:59||doligez||Target Version||4.00.0+dev => 4.01.0+dev|
|2012-07-31 13:37||doligez||Target Version||4.01.0+dev => 4.00.1+dev|
|2012-09-06 19:22||frisch||Target Version||4.00.1+dev => 4.00.2+dev|
|Copyright © 2000 - 2011 MantisBT Group|