David Thompson

Ruby build system frustrations

David Thompson at

The Ruby gem build system is really awful. I think Ruby is a pretty good language overall and I've been writing Ruby on a regular basis for 3 years now, but I can't defend this garbage.

First off, there's a widespread problem that could have been avoided: Everyone assumes you are building from a git checkout. Building from a source tarball? Go back to the 80's, neckbeard! All of our gemspecs have stuff like this in them: https://github.com/dchelimsky/rspec/blob/master/rspec.gemspec#L17

The unfortunate side-effect of requiring a git checkout is that you can kiss reproducibility goodbye. Every time someone commits to the repo, the hash of the source tree's contents changes because the .git directory contains new data.

The other big problem is the large amount of circular dependencies. rspec depends on fakefs, but if you want to build fakefs and run its test suite, you need rspec! So, I guess that to build rspec, you would have to build a special version of fakefs whose recipe does not run tests.

<paroneayea> *sad trombone*

How can this problem be solved for purely functional package managers?

Christopher Allan Webber, Douglas Perkins likes this.

jrobertson, Christopher Allan Webber, Douglas Perkins, Douglas Perkins shared this.

I have solved the git problem by initializing a new git repo and staging all the files in the build environment.  This should work for the vast majority of packages.

David Thompson at 2015-02-23T02:08:06Z

In other bad news, I have found a small testing library that requires rails in order to run the test suite.  Hilarious!

David Thompson at 2015-02-23T02:08:36Z

Douglas Perkins likes this.

Also, I have a fever and probably have a cold/flu.  Hopefully unrelated to this project.

David Thompson at 2015-02-23T02:11:53Z

Douglas Perkins likes this.