[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MirageOS-devel] [ANN] Topkg 0.7.0

Hello (last one today, promised),

I'd like to announce the first release of topkg. For those who know topkg, it 
is no longer an embedded script but a library that you add as a build 
dependency to your package. It now also comes with an optional tool that helps 
you to manage your package and make swift and correct releases.

Bla bla bla:
Topkg is a packager for distributing OCaml software. It provides an API to 
describe the files a package installs in a given build configuration and to 
specify information about the package's distribution creation and publication 

The optional topkg-care package provides the `topkg` command line tool which 
helps with various aspects of a package's life cycle: creating and linting a 
distribution, releasing it on the WWW, publish its documentation, add it to the 
OCaml OPAM repository, etc.

Topkg is distributed under the ISC license and has **no** dependencies. This is 
what your packages will need as a *build* dependency.

Topkg-care is distributed under the ISC license and depends on fmt, logs, bos, 
cmdliner and opam-lib.

Install: opam install topkg topkg-care
Homepage: http://erratique.ch/software/topkg
API docs & manual: http://erratique.ch/software/topkg/doc/Topkg.html#basics
See also `topkg help release` and `topkg help`

A few things worth noting:

* Topkg pretends to work on Windows (provided your build system does) but early 
users may need to give a hand, please do report issues if things go wrong.

* Topkg pretends to be able to work with hg source repositories, the same as 
for Windows applies.

* Topkg should be able to work with other build systems than ocamlbuild. But a 
few things (e.g. documentation support or dependency linting) do at the moment 
rely on ocamlbuild being used. It's not my priority but I'm not against 
improving it to make it easier to use with other build systems.

* Topkg only supports OCaml from 4.01 on and hence will also impose this limit 
on your packages.

* Topkg has toy, proof of concept, support to publish documentation and 
distributions via GitHub's pages and release system. I'm personally not using 
this so do not hesitate to report broken or suboptimal behaviour. Better 
support — especially gh issue interaction for 'topkg issue' and better 
authentication would be nice, but is left in the hands of a motivated github 
user. Someone should develop and distribute a good github topkg delegate (e.g. 
using ocaml-github) that github users can install; see 
'toy-github-topkg-delegate --help' and 'topkg help delegate'; the source of the 
toy delegate [1] can be used as a blueprint. Do not hesitate to get in touch 
for more information and/or design discussion.  

Topkg may not be the final word in OCaml building & packaging, however, 
depending on your needs, topkg's release workflow (see 'topkg help release') 
may come as a significant improvement over the current status quo.  

I have been using a similar but more ad-hoc system with my packages for a few 
years now since I realized that oasis was getting in my way to scale 
modularity. Except for the maintainability problem of having an embedded script 
which is now gone with this new incarnation of topkg, it has already been shown 
to work quite well in practice for me and a limited number of other persons, in 
a large range of software install scenarios, YMMV.



P.S. If you are on github and start to use `topkg` you can mention me 
(@dbuenzli) in the inaugural PR or commit, I'm interested to see how it is used 
and misused.

[1] https://github.com/dbuenzli/topkg/blob/v0.7.0/src-bin/toy_github_delegate.ml

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.