Inconsistent assumptions

I have the following inconsistent assumptions error. I carefully checked that there were no compiled files before I called make. Is there any way this error message could be improved to give more information? I see a previous request for this in October of last year, but I couldn’t find any answer.

thanks,
julia

Makefile:83: .depend: No such file or directory
ocamlfind ocamldep -I /home/julia/.opam/4.07.0/lib/parmap -I commons -I commons/ocamlextra -I globals -I parsing_c -I parsing_cocci -I split -I select *.mli *.ml > .depend
set -e; for i in commons globals parsing_c parsing_cocci split select; do make -C $i all; done 
make[1]: Entering directory '/home/julia/prequel/src/commons'
ocamlfind ocamldep -I ocamlextra  common.mli common.ml  > .depend
for i in ocamlextra; do ocamlfind ocamldep -I ocamlextra  $i/*.ml $i/*.mli >> .depend; done
ocamlfind ocamlc -g -I ocamlextra   -c ocamlextra/dumper.mli
ocamlfind ocamlc -g -I ocamlextra   -c ocamlextra/dumper.ml
ocamlfind ocamlc -g -I ocamlextra   -c common.mli
ocamlfind ocamlc -g -I ocamlextra   -c common.ml
ocamlfind ocamlc -g -I ocamlextra  -a -o commons.cma ocamlextra/dumper.cmo common.cmo
make[1]: Leaving directory '/home/julia/prequel/src/commons'
make[1]: Entering directory '/home/julia/prequel/src/globals'
ocamlfind ocamldep -I ../commons *.mli *.ml > .depend
ocamlfind ocamlc -g -I ../commons -c flag.ml
ocamlfind ocamlc -g -I ../commons -a -o globals.cma flag.cmo
make[1]: Leaving directory '/home/julia/prequel/src/globals'
make[1]: Entering directory '/home/julia/prequel/src/parsing_c'
ocamllex lexer_c.mll
463 states, 21960 transitions, table size 90618 bytes
ocamlfind ocamldep *.mli *.ml > .depend
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -c lexer_c.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -c matcher.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -c matcher.ml
File "matcher.ml", line 58, characters 7-9:
Warning 26: unused variable mx.
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -a -o parser_c.cma lexer_c.cmo matcher.cmo
make[1]: Leaving directory '/home/julia/prequel/src/parsing_c'
make[1]: Entering directory '/home/julia/prequel/src/parsing_cocci'
ocamllex lexer_cocci.mll
382 states, 7178 transitions, table size 31004 bytes
3383 additional bytes used for bindings
ocamllex lexer_cli.mll
14 states, 681 transitions, table size 2808 bytes
ocamllex lexer_script.mll
22 states, 272 transitions, table size 1220 bytes
menhir --ocamlc "ocamlfind ocamlc" --ocamldep "ocamlfind ocamldep" --table --base parser_cocci_menhir parser_cocci_menhir.mly
ocamlfind ocamldep *.mli *.ml > .depend
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c flag_parsing_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c type_cocci.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c type_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c ast_cocci.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c ast_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c ast0_cocci.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c ast0_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c pretty_print_cocci.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c pretty_print_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c unparse_ast0.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c unparse_ast0.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c visitor_ast0_types.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c visitor_ast.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c visitor_ast.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c visitor_ast0.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c visitor_ast0.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c adjacency.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c adjacency.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c compute_lines.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c compute_lines.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c ast0toast.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c ast0toast.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c check_meta.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c check_meta.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c top_level.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c top_level.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c type_infer.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c type_infer.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c test_exps.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c test_exps.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c arity.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c arity.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c adjust_pragmas.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c adjust_pragmas.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c semantic_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c data.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c data.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c free_vars.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c free_vars.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c parse_aux.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c parser_cocci_menhir.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c lexer_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c parser_cocci_menhir.ml
File "parser_cocci_menhir.mly", line 673, characters 29-44:
Warning 52: Code should not depend on the actual values of
this constructor's arguments. They are only for information
and may change in future versions. (See manual section 9.5)
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c lexer_cli.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c lexer_script.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c cocci_grep.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c cocci_grep.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c get_constants2.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c get_constants2.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c parse_cocci.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -c parse_cocci.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I `ocamlfind query menhirLib` -I /home/julia/.opam/4.07.0/lib/menhirLib -a -o cocci_parser.cma menhirLib.cma flag_parsing_cocci.cmo type_cocci.cmo ast_cocci.cmo ast0_cocci.cmo pretty_print_cocci.cmo unparse_ast0.cmo visitor_ast0_types.cmo visitor_ast.cmo visitor_ast0.cmo adjacency.cmo compute_lines.cmo ast0toast.cmo check_meta.cmo top_level.cmo type_infer.cmo test_exps.cmo arity.cmo adjust_pragmas.cmo semantic_cocci.cmo data.cmo free_vars.cmo parse_aux.cmo lexer_cocci.cmo parser_cocci_menhir.cmo lexer_cli.cmo lexer_script.cmo cocci_grep.cmo get_constants2.cmo parse_cocci.cmo
make[1]: Leaving directory '/home/julia/prequel/src/parsing_cocci'
make[1]: Entering directory '/home/julia/prequel/src/split'
ocamlfind ocamldep -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci *.mli *.ml > .depend
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c flag_split.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c library.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c library.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c library_word.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c parser.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c parser.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c classify_rules.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c cleanup_helper.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c cleanup_helper.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c free.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c free.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c classify_rules.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c insert_positions.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c insert_positions.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c drop_enders.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c drop_enders.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c disjunctions.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c disjunctions.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c managed_fixed.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c managed_fixed.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c cleanup.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c cleanup.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c add_checks.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c add_checks.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c collect_rule_refs.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c collect_rule_refs.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c split.mli
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -c split.ml
ocamlfind ocamlc -g -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_cocci -a -o split.cma   flag_split.cmo library.cmo library_word.cmo parser.cmo cleanup_helper.cmo free.cmo classify_rules.cmo insert_positions.cmo drop_enders.cmo disjunctions.cmo managed_fixed.cmo cleanup.cmo add_checks.cmo collect_rule_refs.cmo split.cmo
make[1]: Leaving directory '/home/julia/prequel/src/split'
make[1]: Entering directory '/home/julia/prequel/src/select'
ocamlfind ocamldep -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split *.mli *.ml > .depend
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c setup.mli
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c setup.ml
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c get_data.mli
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c get_data.ml
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c select_commits.mli
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c select_commits.ml
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c run_cocci.mli
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c run_cocci.ml
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c check_results.mli
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -c check_results.ml
ocamlfind ocamlc -g -I /home/julia/.opam/4.07.0/lib/parmap -I ../commons -I ../commons/ocamlextra -I ../globals -I ../parsing_c -I ../parsing_cocci -I ../split -a -o select.cma setup.cmo get_data.cmo select_commits.cmo run_cocci.cmo check_results.cmo
make[1]: Leaving directory '/home/julia/prequel/src/select'
ocamlfind ocamlc -I /home/julia/.opam/4.07.0/lib/parmap -I commons -I commons/ocamlextra -I globals -I parsing_c -I parsing_cocci -I split -I select -c flag_cocci.ml
ocamlfind ocamlc -I /home/julia/.opam/4.07.0/lib/parmap -I commons -I commons/ocamlextra -I globals -I parsing_c -I parsing_cocci -I split -I select -c main.ml
ocamlfind ocamlc -o prequel -I /home/julia/.opam/4.07.0/lib/parmap -I commons -I commons/ocamlextra -I globals -I parsing_c -I parsing_cocci -I split -I select -cclib -lparmap_stubs str.cma unix.cma bigarray.cma nums.cma /home/julia/.opam/4.07.0/lib/parmap/parmap.cma commons/commons.cma globals/globals.cma parsing_c/parser_c.cma parsing_cocci/cocci_parser.cma split/split.cma select/select.cma \
flag_cocci.cmo main.cmo
File "_none_", line 1:
Error: Files select/select.cma(Select_commits)
       and /home/julia/.opam/4.07.0/lib/parmap/parmap.cma(Parmap)
       make inconsistent assumptions over interface Parmap
Makefile:45: recipe for target 'prequel' failed
make: *** [prequel] Error 2

For this particular error, you can use ocamlobjinfo to get more useful information. Running it on select.cma, select_commits.cmi, parmap.cma and parmap.cmi, and looking at the Parmap lines in the section “Interfaces imported”, you should see two different hashes (which is why the compiler is complaining).
If parmap.cmi and parmap.cma have different hashes for Parmap, then the parmap package is in an inconsistent state and you’ll likely need to reinstall it.
Otherwise, if select.cma and parmap.cma have different hashes, it likely means that another parmap.cmi was found in the load path when compiling select_commits.cmi. I don’t know any way to get the compiler to print the paths of loaded .cmis, but the directories used to look up files are the standard library (that you can get with ocamlc -where), the current working directory of the compilation command, and the ones passed with the -I flag on the command line. If there is an extra parmap.cmi somewhere in one of those directories, that would explain the error you get.

If you actually get the same hash for Parmap in all the mentioned files, then it’s possibly a bug in the compiler’s error reporting mechanism, and I would encourage you to submit a bug report.

1 Like

[45.png]
vlaviron
July 4

For this particular error, you can use ocamlobjinfo to get more useful information. Running it on select.cma, select_commits.cmi, parmap.cma and parmap.cmi, and looking at the Parmap lines in the section “Interfaces imported”, you should see two
different hashes (which is why the compiler is complaining).
If parmap.cmi and parmap.cma have different hashes for Parmap, then the parmap package is in an inconsistent state and you’ll likely need to reinstall it.

parmap.cma and parmap.cmi have different hashes:

ocamlobjinfo /home/julia/.opam/4.07.0/lib/parmap/parmap.cmi > pmi

ocamlobjinfo /home/julia/.opam/4.07.0/lib/parmap/parmap.cma > pma

grep Parmap pmi
Unit name: Parmap
445724926e7591dec6cf57ccfb150eb6 Parmap

grep Parmap pma
Unit name: Parmap_utils
ca263e0aeab04d24c71d36e0113db3ee Parmap_utils
Unit name: Parmap_compat
eff462d296226479593a90644f9a89f7 Parmap_compat
eff462d296226479593a90644f9a89f7 Parmap_compat
Parmap_compat
Unit name: Parmap
ca263e0aeab04d24c71d36e0113db3ee Parmap_utils
eff462d296226479593a90644f9a89f7 Parmap_compat
c852749566ae24af3a8d570bfe7fc8d7 Parmap
Parmap_compat
Parmap_utils

I tried

opam uninstall parmap
opam install parmap

with no improvement. Also opam remove and then opam install. Is there a
more forceful way to reinstall it?

thanks,
julia

Can you show which version of parmap you’re using, with opam show parmap for instance ?
If you’re using a pinned version, or at some point installed it with the --keep-build-dir flag, it’s possible that opam is installing files from an improperly built directory.

If you’re using the latest version from the official repo, I’m afraid I don’t really know what could have gone wrong; I would try opam remove parmap, then looking at the files installed in your opam switch to check that no parmap.cmi remains (with find ~/.opam/4.07.0 -name parmap.cmi, for instance). If there is one such file remaining, it’s probably the cause of the problem and you should delete it manually before re-installing parmap. If it’s not the case, I’m out of ideas. I’ve tried opam install parmap on a 4.07.0 switch on my side, and the parmap.cmi and parmap.cma I get are consistent. If you’ve got time to investigate, knowing if the issue remains with different versions of ocaml, parmap and opam could be useful.

Thanks for the help. opam clean removes parmap from the cache, and then
when I do an opam install, everything appears to be fine. But then when I
run my makefile, somehow it changes the hashcode of the cmi file.

I did have a previous non opam installation of parmap on the machine, but
I removed its cmi file.

I guess the problem is on my side somewhere. I’ll check my makefile in
more detail.

Thanks for your help.

julia

OK, I see that the problem is on my side. Thanks for the help.

julia