Skip to content

pkg: ocamlbuild -where returns a sandbox path when ocamlbuild is built by dune #10290

@gridbugs

Description

@gridbugs

E.g.

$ _build/_private/default/.pkg/ocamlbuild/target/bin/ocamlbuild -where
/home/s/tmp/bonsai/_build/.sandbox/7158a9da761d39477e414a6f2dd9d3fc/_private/default/.pkg/ocamlbuild/target/lib/ocamlbuild

This creates problems when packages use ocamlbuild -where to find the file ocamlbuild.cmo which causes these build failures when trying to compile ocaml.org:

Warning: Won't be able to compile a native plugin
Failure: Cannot find "ocamlbuild.cmo" in ocamlbuild -where directory.
pkg.ml: [ERROR] cmd ['ocamlbuild' '-use-ocamlfind' '-classic-display' '-j' '4' '-tag' 'debug'
     '-build-dir' '_build' 'opam' 'pkg/META' 'CHANGES.md' 'LICENSE.md'
     'README.md' 'src/ptime.a' 'src/ptime.cmxs' 'src/ptime.cmxa'
     'src/ptime.cma' 'src/ptime.cmx' 'src/ptime.cmi' 'src/ptime.mli'
     'src/ptime_top.a' 'src/ptime_top.cmxs' 'src/ptime_top.cmxa'
     'src/ptime_top.cma' 'src/ptime_top.cmx' 'src/ptime_top_init.ml'
     'src-clock/ptime_clock.a' 'src-clock/ptime_clock.cmxs'
     'src-clock/ptime_clock.cmxa' 'src-clock/ptime_clock.cma'
     'src-clock/ptime_clock.cmx' 'src-clock/ptime_clock.cmi'
     'src-clock/ptime_clock.mli' 'src-clock/dllptime_clock_stubs.so'
     'src-clock/libptime_clock_stubs.a' 'src-clock/runtime.js'
     'doc/index.mld' 'test/min_clock.ml']: exited with 2
-> required by _build/_private/default/.pkg/ptime/target/cookie
-> required by - package crunch
Warning: Won't be able to compile a native plugin
Failure: Cannot find "ocamlbuild.cmo" in ocamlbuild -where directory.
pkg.ml: [ERROR] cmd ['ocamlbuild' '-use-ocamlfind' '-classic-display' '-j' '4' '-tag' 'debug'
     '-build-dir' '_build' 'opam' 'pkg/META' 'CHANGES.md' 'LICENSE.md'
     'README.md' 'src/mtime.a' 'src/mtime.cmxs' 'src/mtime.cmxa'
     'src/mtime.cma' 'src/mtime.cmx' 'src/mtime.cmi' 'src/mtime.mli'
     'src/mtime_top.a' 'src/mtime_top.cmxs' 'src/mtime_top.cmxa'
     'src/mtime_top.cma' 'src/mtime_top.cmx' 'src/mtime_top_init.ml'
     'src-clock/mtime_clock.a' 'src-clock/mtime_clock.cmxs'
     'src-clock/mtime_clock.cmxa' 'src-clock/mtime_clock.cma'
     'src-clock/mtime_clock.cmx' 'src-clock/mtime_clock.cmi'
     'src-clock/mtime_clock.mli' 'src-clock/dllmtime_clock_stubs.so'
     'src-clock/libmtime_clock_stubs.a' 'src-clock/runtime.js'
     'doc/index.mld' 'test/min_clock.ml']: exited with 2
-> required by _build/_private/default/.pkg/mtime/target/cookie
-> required by - package mirage-crypto-rng-lwt

A temporary hack to work around this problem is to use a regexp to remove the sandbox from paths in the generated file ocamlbuild_config.ml before compilation: gridbugs/ocamlbuild@39c27f0

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions