So, I've been working for a while with a library and I've made a good iteration. My code compiles and is nice, it does what is expected, but it depends on a library, Piqi, that doesn't want to play nice in the interpreter. I want to be a good citizen and do my homework and due diligence, but nothing I do seems to make utop want to play nice with piqi.

Here goes:

When I execute utop -require mypackage repository with the newly built package mypackage, but I get this error:

File "_none_", line 1:
Error: The external function `camlidl_piqi_c_piqi_strtoull' is not available

I checked out piqi locally, and pinned the package to my local build, where I tried to ensure that the appropriate .c file is getting compiled and linked into the cma and cmxa. They are without a shadow of a doubt. I then thought maybe I would add an include directive to utop to tell it to pick up the mli where the the external func : type = "name" is. Nope.

I've done everything I can, from adding all combinations of additional piqirun/piqilib/piqirun.pb/piqirun.ext combinations to the _oasis file that specifies the serialization to trying to build my own utop to adding additional require statements and include statements in the utop script. So after trying to add the dependency to BuildDepends for myouterlib, I had backed off to just adding the mylibrary to the specific binary that consumes it, which is where my changes are (in that binary).

I even went so far as to just try and get the changes compiled into a custom utop. Nope. I got errors and errors; I built it with:
ocamlbuild -use-ocamlfind -pkg threads -pkg utop -pkg myouterlib -pkg camlp4 -pkg core_kernel customtop.top

(At the time I ran this, I had bap package's _oasis updated with the appropriate compile BuildDepends so that it would link mylibrary too)

and I had the let () = Utop_main.main ();; in "utopmain.ml" and customary customtop.mltop containing just "Utopmain". I got: 

(Unbound value <everything I need *and* that's contained in mylibrary which is specified in -pkg!>)

I don't know what else to do besides ship code that is watered down without an interactive component. :/