Skip to content
Cecil Coupe edited this page Apr 12, 2017 · 16 revisions

Building Shoes from source

I'm going to apologize right up top. This is not as easy as you expect nor as easy as we would like. Ruby 1.9.3 introduced some internal changes that profoundly changed things for building Shoes. That led to a very important concept in Shoes 3.2: Tight Shoes and Loose Shoes.

_BEWARE: Things change a lot in this corner of the world. It's guidelines below - not absolute rules.

Shoes fit

Tight Shoes is one you can bundle up and send to someone else. It lives in its own sandbox and includes a copy of Ruby (the Ruby it was built with). Your Ruby is probably not built to do that successfully. It's called Tight because its a very controlled setup.

Loose Shoes doesn't have those restrictions it just uses whatever it can find for a Ruby and it links against that Ruby's libs. It doesn't have to carry around a copy of Ruby or bundle up dependencies and gems. That makes it small and quick to compile and you can install it (on your system) if you like it. It allows Shoes access to all the gems you've installed. What you can't do is distribute that Shoes.

In Windows, the tight/loose distinction is a little more subtle because you have to have all the DLL's in any Shoes but the distinction still exists (gems primarily), even on Windows.

In OSX there is no difference between tight and loose - it's always tight.

Dependencies

Here is where the bulk of ugly lives. Shoes uses lots of open source libraries which we call dependencies. Ruby is a dependency and the the libraries Ruby needs are also dependencies. We need to build A Ruby our way and it lib's and then the libs Shoes wants. It's not hard if you know how to read error messages (some folks do get confused - so it's a skill to learn). It may not be hard but it is a lenghty process - give your self a couple of full days OR you can download prebuild dependencies for OSX 10.9, 10.6 and Windows.

Linux is not a free walk either because we setup chroots and install an older version of Linux in it before we build Ruby in it and apt-get all the easy stuff. It's even more interesting settup up chroot that runs QEMU before we install the armhf debian and use it to build dependencies (including Ruby). It takes time and some Linux knowledge to set things up for a Tight Shoes build.

Rake files and yaml

Just to confuse you more, you need a Ruby to build Shoes and it may not be the Ruby you include in the built Shoes. There is a Ruby to build with and a Ruby to build for and include with Shoes.

Show me the stuff:

Clone this wiki locally