Hi, I obtain an error `Reference to undefined global ...' with ocamlbuild in the following situation (simplified example, attached as example.diff). [File] [Contents] example |-- Main.ml let _ = Pack.Packed.g () | |-- Pack.mlpack pack/Packed | |-- _tags : include | : for-pack(Pack) | |-- lib | |-- Lib.ml let f () = () | `-- Lib.mli val f : unit -> unit `-- pack `-- Packed.ml let g () = Lib.f () $ ocamlbuild -classic-display Main.byte /usr/pkg/bin/ocamldep.opt -modules Main.ml > Main.ml.depends /usr/pkg/bin/ocamldep.opt -modules pack/Packed.ml > pack/Packed.ml.depends /usr/pkg/bin/ocamldep.opt -modules lib/Lib.mli > lib/Lib.mli.depends /usr/pkg/bin/ocamlc.opt -c -I lib -o lib/Lib.cmi lib/Lib.mli /usr/pkg/bin/ocamlc.opt -c -I pack -I lib -o pack/Packed.cmo pack/Packed.ml /usr/pkg/bin/ocamlc.opt -pack pack/Packed.cmo -o Pack.cmo /usr/pkg/bin/ocamlc.opt -c -I lib -o Main.cmo Main.ml /usr/pkg/bin/ocamlc.opt Pack.cmo Main.cmo -o Main.byte + /usr/pkg/bin/ocamlc.opt Pack.cmo Main.cmo -o Main.byte File "_none_", line 1, characters 0-1: Error: Error while linking Pack.cmo: Reference to undefined global `Lib' Command exited with code 2. This is with ocaml 3.11.1, but I obtain the same result with ocaml 3.12.0+beta1. If I read the code correctly, this comes from the function prepare_link in ocaml_compiler.ml which derives the dependencies from the files .ml.depends and .mli.depends. But these files are not generated for packs, hence the required dependencies are not build. The attached small patch (patch-ocamlbuild-link-pack-deps.diff) simply treats the .mlpack files as dependency files for packs, which fixes the issue. This has been tested on a larger project with more nested dependencies. But I'm new to ocamlbuild, and I may have overlooked something. Alternatively, the problem can be fixed with an ocamlbuild plugin that generates appropriate %.ml.depends from %.mlpack. In case it helps others encountering the same issue, I attach an implementation of such a plugin. If there is a better/simpler solution to this problem, please let me know. Thanks, Grégoire Sutre p.s. This byte-code linking problem with packs was reported to the list two years ago [1], but with no answer. [1] http://caml.inria.fr/pub/ml-archives/caml-list/2008/06/784c154d0f7b53995c0167ac63fc5bb9.en.html