hi,

i didnt have much time lately to look deeply into the scripts. at first i 
thought that one has to add some add_dependencies, which was my first strategy, 
before i wrote useocaml.cmake. but then i saw, that i removed them, because i 
got the DEPENDS right. so my guess was wrong.

what you write seems plausible. i got the messages with your script when i 
compiled with make -j 2 while my computer was busy. for some reason i didnt get 
them with my scripts yet, which could just be by chance.

i do not know how to proceed from here on. 

anyone got an idea?

cheers,
keyan



On 22 Jan 2010, at 02:16, Judicaël Bedouet wrote:

> Hello,
> 
> I try to compare Makefiles generated by your scripts and mine. I don't see 
> any big differences, except the copy rules.
> 
> While trying your scripts, I also reproduced a similar bug.
> 
> Generating file_node.cmx
> Generating message_node.cmi
> Generating file_node.cmi
> File "/Users/judi/src/ocaml/cmake/
> code-analysis/build/file_node.ml", line 1, characters 0-1:
> Error: Corrupted compiled interface
> file_node.cmi
> make[2]: *** [file_node.cmx] Error 2
> 
> Try with
> while true; do make clean; make -j; done
> and you will reproduce it.
> 
> I think dependencies in our scripts are good (or almost good). The reason may 
> be elsewhere.
> 
> 
> I don't see a solution yet but I have found a promising lead. When two 
> targets depends on the same object, make tries to build the object twice.
> 
> If make builds the same object twice at the same time, the command 'cmake -E 
> copy_if_different' may be called at the same time and one of the cmake 
> command fails because it can't open the file. I suppose it's the reason of
> 
> > Error copying file (if different) from 
> > "[...]/code-analysis-build/Dependencies/message_node.ml.dep.cmake.tmp"
> > to "[...]/code-analysis-build/Dependencies/message_node.ml.dep.cmake".
> 
> In your code, the loc and messages executables depends both on io.cmo. 
> Sometimes, it tries to link loc and build io.cmo (probably for messages) at 
> the same time. I suppose it's the reason of
> 
> 
> > Building OCaml object io.cmo
> > Building OCaml object files.cmo
> > [  0%] Linking OCaml executable loc
> > File "_none_", line 1, characters 0-1:
> > Error: The file /Users/judi/src/ocaml/cmake/code-analysis/build/io.cmo is 
> > not a bytecode object file
> 
> 
> I add a third target which depends on io.cmo (create a common library and 
> make loc and messages depend on this library). It appears that make tries to 
> build the object io.cmo three times and build fails are almost systematic.
> 
> 
> If you keep only one target, there is never no problems.
> 
> 
> An idea ? Too late in the night for me :-(
> 
> 
> Bye,
> 
> J. Bedouet
> 
> 
> 
> 
> 2010/1/20 Keyan <m...@pulsschlag.net>
> hi,
> 
> i started to work on your scripts. very nice work!
> 
> unfortunately, i couldnt find the problem, and i cant reproduce it with my 
> scripts. there must be a difference somewhere.
> 
> cheers,
> keyan
> 
> 
> 
> On 19 Jan 2010, at 00:30, Judicaël Bedouet wrote:
> 
> > Hi,
> >
> > Effectively, I have reproduced your two bugs by using make -j. It's not 
> > systematic (once in ten).
> >
> > >> Error: The file /Users/zahedi/Downloads/code-analysis-build/io.cmo is 
> > >> not a bytecode object file
> > When this error occurs, it also appears that the object is being built. And 
> > if I rerun make, linking is correct, without rebuilding io.cmo.
> >
> > Building OCaml object io.cmo
> > Building OCaml object files.cmo
> > [  0%] Linking OCaml executable loc
> > File "_none_", line 1, characters 0-1:
> > Error: The file /Users/judi/src/ocaml/cmake/code-analysis/build/io.cmo is 
> > not a bytecode object file
> >
> > Dependencies in the generated Makefile seem to be correct :
> > loc: file_node.cmo
> > loc: files.cmo
> > loc: io.cmo
> > loc: file_statistics.cmo
> > loc: message_node.cmo
> > loc: loc.cmo
> >
> > Is OCaml parallel make safe ? I'm not sure... I readd CMake address : maybe 
> > someone has an idea...
> >
> > To speed up compilation, I could look for ocamlc.opt and if not found 
> > ocamlc. Bytecode compilations should be faster.
> >
> > J. Bedouet
> >
> >
> >
> > 2010/1/18 Keyan <m...@pulsschlag.net>
> > hi,
> >
> > i am just trying to reproduce the message i posted. i cant, but i got 
> > something else:
> >
> > Error: The file /Users/zahedi/Downloads/code-analysis-build/io.cmo is not a 
> > bytecode object file
> >
> > i use make -j 2 (at least 2), and my guess is that it has to do with 
> > parallel compilation. could that be the case?
> >
> > cheers,
> > keyan
> >
> > On 18 Jan 2010, at 18:01, Judicaël Bedouet wrote:
> >
> > > Hi,
> > >
> > > >> first of all, wow, good job! very nice scripts, much more 
> > > >> sophisticated then mine :)
> > > Thanks :-)
> > >
> > > >> I only had one error when first trying: Error copying file (if 
> > > >> different) from "[...]/code-analysis-build/Dependencies
> > > >> /message_node.ml.dep.cmake.tmp" to 
> > > >> "[...]/code-analysis-build/Dependencies/message_node.ml.dep.cmake".
> > > Maybe the Dependencies directory is not created. It is done at line 32 of 
> > > OCamlDep, though. Let me know if you find something.
> > >
> > > I have tested my scripts with OCaml 3.10 and I have found that ocamlfind 
> > > is officially distributed with OCaml since 3.11. Maybe, I should put 
> > > ocamlfind stuff in a FindOCamlFind script...
> > >
> > > J. Bedouet
> > >
> > >
> > >
> > > 2010/1/18 Keyan <m...@pulsschlag.net>
> > > Hi,
> > >
> > > i am sorry that i could not reply any sooner.
> > >
> > > first of all, wow, good job! very nice scripts, much more sophisticated 
> > > then mine :)
> > >
> > > i only had one error when first trying:
> > >
> > > Error copying file (if different) from 
> > > "[...]/code-analysis-build/Dependencies/message_node.ml.dep.cmake.tmp" to 
> > > "[...]/code-analysis-build/Dependencies/message_node.ml.dep.cmake".
> > >
> > > i will try to solve that myself. this way i know if i understand your 
> > > scripts.
> > >
> > > cheers,
> > > keyan
> > >
> > > On 16 Jan 2010, at 14:51, Judicaël Bedouet wrote:
> > >
> > > > Hi,
> > > >
> > > > Here are my OCaml scripts, with your OCaml code (it helped me to find a 
> > > > bug about a source file included in two targets).
> > > >
> > > > I have kept your idea about an only macro to compile and link, reused 
> > > > your macro ocaml_parse_arguments (I should use for my other macros :-) 
> > > > ) and added a macro find_ocaml_package to find ocaml packages with 
> > > > ocamlfind.
> > > >
> > > > Tell me what you think,
> > > >
> > > > J. Bedouet
> > > >
> > > >
> > > >
> > > > 2010/1/15 Keyan <m...@pulsschlag.net>
> > > >
> > > > hi,
> > > >
> > > > > Indeed, it is much more sophisticated, so it may be more bugged ;-)
> > > >
> > > > i can help debugging :)
> > > >
> > > > > >> shell i send you my scripts to take a look?
> > > > > It's not necessary. I have downloaded the refactoring branch of yars. 
> > > > > Thanks.
> > > >
> > > > oh, ok, then you should have the newest version (last yars revision is 
> > > > 513).
> > > >
> > > > > I comment my OCaml scripts and I send you, so that you could also 
> > > > > have a look.
> > > >
> > > > great.
> > > >
> > > > > I have took a look at your UseOCaml script. I can't see why you copy 
> > > > > ML files into the current binary dir before compiling them. Is there 
> > > > > a reason ?
> > > >
> > > > no. i copied most of the stuff from the UseLATEX.cmake. it was done so 
> > > > there, and at the time i wrote the script, i thought its a good idea. 
> > > > don't ask me why :)
> > > >
> > > > > Keep in touch,
> > > >
> > > > let me know when i can jump in and help. looking forward.
> > > >
> > > > cheers,
> > > > keyan
> > > >
> > > > > J. Bedouet
> > > > >
> > > > >
> > > > > On Fri, Jan 15, 2010 at 8:26 AM, Keyan <m...@pulsschlag.net> wrote:
> > > > > I totally agree.
> > > > >
> > > > > Judicaël: how should we proceed? my first impression is that your 
> > > > > usecaml.cmake is much more sophisticated then mine :) same for the 
> > > > > findocaml.cmake scripts, as mine up to now does nothing more than to 
> > > > > call a bunch of find_program commands.
> > > > >
> > > > > shell i send you my scripts to take a look?
> > > > >
> > > > > i have no problem with merging my stuff into your scripts, keeping 
> > > > > you as main author, if there is anything useful for you.
> > > > >
> > > > > cheers,
> > > > > keyan
> > > > >
> > > > >
> > > > > On 15 Jan 2010, at 02:39, Philip Lowman wrote:
> > > > >
> > > > > > On Thu, Jan 14, 2010 at 5:11 AM, Keyan <m...@pulsschlag.net> wrote:
> > > > > >> hi,
> > > > > >>
> > > > > >> ups ... i thought i replied to the list. thanks for the link. i 
> > > > > >> will adapt my find-script to the requirements and maintain the 
> > > > > >> package.
> > > > > >
> > > > > > You should work with Judicaël to combine the best of both of your
> > > > > > works together into one FindOCaml and UseOCaml script.  There is no
> > > > > > sense having two of them out there.
> > > > > >
> > > > > > --
> > > > > > Philip Lowman
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> >
> >
> 
> 
> 

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to