3 ms·
The package manager in Julia is great, but the process of making a package needs much better documentation. It looks like Bindeps is the intended way of buildi
by wbhart 12y ago
The package manager in Julia is great, but the process of making a package needs much better documentation.
It looks like Bindeps is the intended way of building packages that have external dependencies, but last time I checked the "documentation" for bindeps was another Julia package called Cairo, which apparently did a good job.
The other problem is that when Googling around to find the standard way of putting together packages, almost all the results that come back are list posts or things from the issue tracker which tell you the old way of doing things (which no longer works).
Things like how to build things differently for Windows, Linux, OSX, Unix, how to deal with paths, how to use the OpenSUSE binary production system, etc., all need documentation, with examples.
Also needed is documentation on linking against external libraries that have their own dependencies. Where should libraries be canonically installed. How does the linker resolve dependencies (this is especially difficult to work out on Windows).
Including all the .h files for Julia's own shared library dependencies in the repo would also be useful, along with documentation of which versions of external libraries Julia currently uses.
I also find the documentation on how to peg to a commit or tag difficult to understand, as is the documentation on the path to becoming an official Julia package, with explicit examples of what needs to be done at each step.
Finally, I find it annoying that you can do Pkg.update("Mypkg") and Pkg.build("Mypkg") but not Pkg.test("Mypkg") (or is it the other way around, I always forget). One should be able to selectively update, build and test any particular package, without having to do so for every package you currently have installed.
Some of my comments might be out-of-date by now. I'm simply trying to recall some of the issues I had with building a package when I last put effort into that part of my development cycle.
- wallnuss 12y agoYou cannot do Pkg.update("MyPackage", but you are able to do Pkg.build("MyPackage") and Pkg.test("MyPackage"). Pkg.update() is currently designed to update the local METADATA snapshot and then update all packages. You can also update one package at a time manually with Pkg.checkout.