| Anonymous | Login | Signup for a new account | 2013-05-18 16:32 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||||
| 0005099 | OCaml | OCamlbuild (the tool) | public | 2010-07-08 23:19 | 2010-07-22 11:39 | ||||||
| Reporter | gsutre | ||||||||||
| Assigned To | xclerc | ||||||||||
| Priority | normal | Severity | feature | Reproducibility | always | ||||||
| Status | assigned | Resolution | open | ||||||||
| Platform | OS | OS Version | |||||||||
| Product Version | 3.12.0+beta1 or 3.12.0+rc1 | ||||||||||
| Target Version | Fixed in Version | ||||||||||
| Summary | 0005099: Dependencies at byte-code link with mlpack | ||||||||||
| Description | I obtain an error `Reference to undefined global ...' with ocamlbuild in the following situation. [File] [Contents] example |-- Main.ml let _ = Pack.Packed.g () | |-- Pack.mlpack pack/Packed | |-- _tags <lib>: include | <pack/*.cmx>: 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. 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. | ||||||||||
| Additional Information | This byte-code linking problem with packs was reported to the list two years ago, but with no answer: http://caml.inria.fr/pub/ml-archives/caml-list/2008/06/784c154d0f7b53995c0167ac63fc5bb9.en.html [^] I also recently sent a message (with attachments) to the Caml mailing list regarding this issue: http://groups.google.com/group/fa.caml/browse_thread/thread/73943caba65dbc3c [^] | ||||||||||
| Tags | No tags attached. | ||||||||||
| Attached Files | |||||||||||
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2010-07-08 23:19 | gsutre | New Issue | |
| 2010-07-08 23:19 | gsutre | File Added: patch-ocamlbuild-link-pack-deps.diff | |
| 2010-07-08 23:21 | gsutre | File Added: example.diff | |
| 2010-07-22 11:39 | ertai | Status | new => assigned |
| 2010-07-22 11:39 | ertai | Assigned To | => xclerc |
| 2012-02-02 15:17 | protz | Category | OCamlbuild => OCamlbuild (the tool) |
| Copyright © 2000 - 2011 MantisBT Group |