[racket-dev] snapshot builds

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Tue Jul 2 15:40:18 EDT 2013

Here's a rough cut at a snapshot build with the new package
organization:

  http://www.cs.utah.edu/plt/snapshots/20130702-c90365e/

While there are plenty of rough edges, enough is in place to show how I
see distributions and packages working with the new organization.

The snapshot page has

 * "Racket" installers with the usual stuff: DrRacket, HtDP support,
   etc.

 * "Minimal Racket" installers for just the core build.

Each Minimal installer is configured to refer back to the snapshot site
for package installations; each package that is included in the
distribution is available from the snapshot site in pre-built form. (If
a package is not available from the snapshot site, then a package
search will continue with "pkg.racket-lang.org", etc.)

For example, starting with with a Minimal installation and running
`raco pkg install -i --deps search-auto gui' gets you `racket/gui' in
compiled form (in about 1 minute on my machine), along with the
necessary native libraries, the `gracket' launcher, documentation, and
so on.

 [Using `-u' or `-s' doesn't yet work, because the installation-wide
  catalog configuration is not used as the default for `-u' or `-s'.
  I'll fix that.]

After installing `gui', then `raco pkg install -i --deps search-auto
drracket' gets you DrRacket (in about 30 seconds).

 [Unfortunately, the `drraccket' step also deletes some documentation
  that was installed by the `gui' step, so I have more work to do
  there, too.]


I image that releases will ultimately work the same way: installers
will be configured to start with a catalog server that provides
pre-built packages compatible with the release --- and those packages
will be the responsibility of the distribution server, not
"pkg.racket-lang.org".

The set of packages available in pre-built form need not be just the
ones in a distribution. The choice of available pre-built packages is
separate from the choice of packages into include in a distribution, so
pre-built packages can be available and useful for a "Racket" installer
as well as a "Minimal Racket" installer. I expect that our release and
snapshot sites will provide pre-built versions of all ring-0 packages.

 [A piece that's missing: online documentation as a fall-back for
  installed documentation. For example, suppose you install "gui",
  search installed documentation for "WXME", go to the "WXME Decoding"
  section, find "htdp" on that page, and click `htdp/image'. Then, you
  get a link that goes back to the snapshot site (because you don't
  have the relevant package installed), which is as intended. But the
  link doesn't yet give you documentation.]


I expect to make

  http://www.cs.utah.edu/plt/snapshots/

updated daily or so with a new snapshot (and a front page that points
to the latest snapshot). Each snapshot will be available for some
amount of time (a week?) to serve packages before it is removed.

That's not to say that "www.cs.utah.edu" will be home to the main
PLT-provided snapshots, but I imagine that it will be around as an
option. The process is designed to make it as easy as possible set up
extra snapshot sites.


Posted on the dev mailing list.