This is a vague question, but I would be interested in tips on using libraries that are not in opam, or using a newer version of a library that hasn’t yet been upgraded in opam. I’m a little bit worried about this because at one point I managed to put a new version of a library in my opam directory tree and ended up with a confused configuration that didn’t work when I was able to upgrade the same package via opam. I resorted to deleting .opam and starting over from scratch.
I’m not asking about how to use git or make or oasis. Is there a standard way to take a compiled library from a git repo and install it in my opam tree? Or is this a bad idea? Or how does one tell utop or the compilers how to find something that’s not in the local opam system?
I feel as if I’m asking somewhat stupid questions. I feel as if I almost know enough, but have no idea what the next step is.
Thanks @zozozo, @dbuenzli. That looks like some very useful and convenient opam magic.
I think I’ve misunderstood what pin does until now. I thought that it was a way to have, in effect, different opam switches for different packages–so that for example I could have develop multiple packages, each of which automatically remembered which packages and versions it needed when I cd to a particular development directory.
My understanding now is that that was just false. I can have different groups of packages by creating different switches, but I have to run opam switch to change those for different development configurations, if that’s what I want.
Instead, opam pin is a way to take control of versioning and sources of packages, rather than letting opam decide what are the best versions of a package and its dependencies for a given version of OCaml. (Feel free to let me know if that’s not quite right.)
(Ah, now I see–local switches are what I thought pin was doing.)