[racket-dev] advice on the 6.x build system.

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Fri Oct 17 08:51:32 EDT 2014

At Fri, 17 Oct 2014 07:43:17 +0200, David Bremner wrote:
> Matthew Flatt <mflatt at cs.utah.edu> writes:
> 
> >
> > That said, is there a particular reason that basing the build on the
> > git repo would be better?
> >
> 
> One reason is that I need I need to track from release to release the
> files that are removed from the racket source by debian for
> licensing-related reasons. Currently this looks like:
> 
> ╰─ (git)-[new-master]-% git diff --stat dfsg..upstream
>  .../drdr/static/jquery-1.6.2.min.js    |   18 +
>  .../resources/js/libs/gumby.min.js     |    1 +
>  .../js/libs/jquery-1.9.1.min.js        |    5 +
>  .../libs/jquery.mobile.custom.min.js   |    3 +
>  .../js/libs/modernizr-2.6.2.min.js     |    4 +
>  .../resources/js/plugins.js            |    8 +
>  .../racket/benchmarks/common/maze.sch  |  680 ++
>  .../racket/benchmarks/common/maze2.sch |  695 ++
>  .../common/psyntax-input.txt           | 4296 ++++++++++++
>  .../benchmarks/common/typed/maze2.rktl |  772 ++
>  .../racket-test/tests/xml/xmltest.zip  |  Bin 0 -> 107060 bytes

Happily, none of those are the main-distribution bundles. I don't think
that's a coincidence, and in any case, it should be a goal that we
don't include troublesome files in the distribution.

> A second reason is that I want to be able to able to backport patches to
> older releases of racket running on Debian.  This is much easier if I
> can just use "git cherry-pick".

I can see that `git cherry-pick` is more convenient than creating patch
files, at least until we split the Racket repo. In the near future,
when the main distribution is spread out over 60-90 repos, then it
sounds less convenient.

> A third reason (related) is that from time to time I need to test the
> Debian packaging of an as yet unreleased racket version, e.g. to check
> if a build failure is fixed in the upcoming 6.1.1 branch.

The daily snapshot builds have the same shape as a release, as do the
test builds at http://pre-release.racket-lang.org/. So, I think a source
build will be available when you need one.

Also, you can always create your own source bundle from the git repo by
using `make installer SOURCE_MODE=--source`. That begs the question of
what it means to use a source distribution instead the repo, but the
point is that `make installer` is likely to change shape in the near
future, while the source distribution is not (so a build based on the
source distribution may be a more reusable component.)


You can add a "FWIW" in front of all of those, since you know the
constraints and problems of Debian packaging better. I just worry about
the mismatch between the idea of "get a Racket distribution from a
single git repo" versus the more distributed and package-based
direction that we're heading.


Meanwhile, I haven't answered your original question. Can you remind me
of the specific steps that I'd need to follow to try the script that
you sent before?



Posted on the dev mailing list.