[racket-dev] The repository is now split

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Sat Dec 6 13:28:47 EST 2014

At Fri, 5 Dec 2014 14:04:47 -0800, John Clements wrote:
> 1) compilation failed because it couldn't find the 'racket' collection, but
> I noticed that it was referring to a nonexistent path, presumably because I
> had moved the root of the installation.  Has that always been a bad idea?

Ok, yes, it has always been a bad idea to do that without re-running

When I tried moving my checkout and using `make`, I got

 ../racket/racket3m -G /Users/mflatt/splt/build/config -cqu \
    "../../gracket/../mac/rename-app.rkt" \
    "/Users/mflatt/plt/racket/lib/GRacket.app" "GRacket3m" "GRacket"
 standard-module-name-resolver: collection not found
   for module path: (submod racket/base reader)
   collection: "racket"
   in collection directories: [...]

That's because a makefile generated by `configure` includes an absolute
path. Getting rid of absolute paths in the makefiles is difficult and
probably not worthwhile.

In contrast, a `raco setup` or `raco pkg update` should work after
moving a checkout, because an in-place build is supposed to be movable
at the Racket level.

Continuing with your report at step 2, you deleted "racket/src/build",
which should allow `make` to work, because it re-runs `configure`. You
ran into trouble, but the error message told you how to recover --- and
that won't happen again, since the way `make` links packages has

At steps 3 and 4, `make` didn't do enough work, but I've since changed
the makefile to fix that problem.

At step 5, you ran `make setup`, and it still failed -- but it should
have worked, as noted above. I'm still stumped about that failure,
because `raco setup` (which is now run by `make`) worked for me at that
point. I'll just have to keep an eye out for similar problems.

Posted on the dev mailing list.