[racket-dev] Racket doesn't compile without cairo

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Nov 12 08:19:21 EST 2012

At Mon, 12 Nov 2012 10:44:44 +0100, Marijn wrote:
> On 11-11-12 18:06, Eli Barzilay wrote:
> > Yesterday, Neil Toronto wrote:
> >> On 11/09/2012 08:33 AM, Eli Barzilay wrote:
> >>> 
> >>> Marijn: if this is a problem, you might get around it by
> >>> avoiding the documentation build, but maybe not -- I think that
> >>> the icon build also requires it.
> >> 
> >> Anything that renders icons at compile time needs Cairo. That 
> >> includes DrRacket, the macro stepper, algebraic stepper, 
> >> optimization coach, etc.
> > 
> > So in case Marijn cares: there might be hope for using the
> > -textual distribution...
> It was my understanding that the textual distribution results in
> artefacts that can similarly be obtained by building the ``normal''
> distribution but configuring it specifically ``without X''. By
> configuring ``without X'' in particular DrRacket doesn't get built, so
> there's no problem there.

Cairo is a real dependency for building the Racket documentation as
well as for certain libraries. A non-X variant of Cairo works fine for
both of those case, naturally.

Our "-textual" distribution doesn't need Cairo because the distribution
omits both the documentation and various libraries that use Cairo at
compile time.

There's currently no configuration option for Racket that will build
only the non-GUI and/or non-drawing parts. At the same time, building
Racket doesn't require that X or Gtk is installed; it's only when you
run a program that uses `racket/gui/base' that Racket even looks for
GUI libraries. We refrain from using `racket/gui/base' at compile time
(i.e., in macros) or to render documentation.

Similarly, Cairo isn't needed until you actually run a program that
uses `racket/draw'. Unlike `racket/gui/base', though, we sometimes use
`racket/draw' in compile-time code or when rendering documentation.

Posted on the dev mailing list.