[racket-dev] current packages' docs, errors, and conflicts

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Tue Jul 8 07:46:02 EDT 2014

I've been working on a service that builds all packages listed at
"pkgs.racket-lang.org". The idea is to run builds regularly (at least
once a day) and link to documentation and build-status information from
"pkgs.racket-lang.org".

Here's a table showing the current results for each package:

  http://www.cs.utah.edu/~mflatt/tmp/pkg-build/

Overall, there's still some work to do before this service can can go
live, but I think it's getting close.

Currently, a package fails to install if it depends on a PLaneT package
--- even a compatibility variant from "planet-compats.racket-lang.org".
That limitation could be removed with more work, but I think it's
probably better to get all packages that we care about onto
"pkgs.racket-lang.org".

The rightmost column of the table may need some explanation. The column
highlights conflicts among names of package-installed executables,
foreign libraries, and documents. Currently, all the conflicts are
document names, because several packages have a documents named simply
"manual" or "main". Overlapping documentation names cause no trouble
among packages in user scope, which is why this problem has gone mostly
unnoticed. Packages in installation scope, however, must have distinct
document names, because installation-scope documentation goes to a
single directory. So, to support installation scope, various packages
need to be updated to give a more specific name to generated
documentation.


The implementation of the build service is `meta/pkg-build/main` in the
Racket repo. The build service relies on VirtualBox MV instances to
sandbox package builds, and the complexity is related to handling
failure and making the build incremental (so that a small amount of
work can be done if a small number of packages need to be rebuilt).
It's still a work in progress, but I'm happy to provide more details if
anyone wants to try it out. A full package build takes about an hour on
my laptop, in addition to the 45 minutes or so to build a snapshot
distribution from scratch.


Posted on the dev mailing list.