[racket] How to create Linux AMD64 installer from source?

From: Eli Barzilay (eli at barzilay.org)
Date: Tue Nov 23 14:01:07 EST 2010

An hour ago, Todd O'Bryan wrote:
> This is probably mostly addressed to Eli, but sent through the list
> for posterity's sake.
> 
> I have a few 64-bit servers that I need to install Racket on when
> new versions come out. I've been using the i386 installer, but would
> like to avoid installing the 32-bit compatibility packages, if I
> can.
> 
> Building from source takes a long time, but I'm guessing that
> there's a target in the Makefile that can build the installer, which
> i can then run on each of the servers.
> 
> Assuming I've downloaded the source and all the dependencies, how
> would I do that?

There's no makefile target to build the installers (the process of
doing that goes well beyond that), but here's what you can do --
assuming you're working with Linux:

* First thing to try is to use our 64 build -- it's done on an old
  Fedora 7 setup, but if it works fine then you don't need anything
  else.  If it doesn't, you might still find it easier to install some
  compatibility libc version that can make it run.  Two things to
  consider here is (a) the current repository version has switched to
  GTK via racket glue code, which makes it rely on much less; (b) I'll
  be upgrading this Fedora machine sometime soon, probably during
  winter break, so it'll be even more likely usable on other 64 linux
  distros.

Otherwise:

* Get the usual distribution and the source distribution.

* Run `make && make plain-install' in a build directory, to create the
  executables and the libraries in the "bin" and "lib" directories
  respectively.

* You'll probably also want to run `strip -S' on the executables,
  since otherwise they're big enough to make a noticeable delay on
  startup.

* Copy the executables and the libraries on top the tree you get from
  the normal distribution.  Note that that tree will have many more
  "executables" -- but those are all launcher scripts on top of the
  real ones which you just copied over.

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!


Posted on the users mailing list.