## SYNOPSIS:
Build your gem so that it can be deployed on machines without a build chain
Note this is not a hoe/sow or newgem competitor, but rather a simple
tool to take a gem (mongrel for example) that has one or more C
extensions and then generate a platform specific gem with the
extensions compiled into it. Many gems include such a build for win32
as few win32 users have build chains, but while most Unix development
systems have build chains (C compilers), many Unix production systems
do not. If you find yourself in this situation gembuilder can be a
real help.
This is the first proper public release (I screwed up a couple along
the way <grin>). It is easy to use, just grab the gem you want to
build and use the gembuilder command on it.
Example:
[~/code/tmp] ls -l
total 312
-rw-r--r-- 1 phurley phurley 159232 May 19 18:14 mongrel-1.0.1.gem
[~/code/tmp] gembuilder mongrel-1.0.1.gem
Unpacking mongrel-1.0.1.gem
building extension(s)
Building native extensions. This could take a while...
adjusting gemspec
building binary gem
Successfully built RubyGem
Name: mongrel
Version: 1.0.1
File: mongrel-1.0.1-i686-darwin8.9.1.gem
cleaning up
[~/code/tmp] ls -l
total 664
-rw-r--r-- 1 phurley wheel 177664 May 23 20:15
mongrel-1.0.1-i686-darwin8.9.1.gem
-rw-r--r-- 1 phurley phurley 159232 May 19 18:14 mongrel-1.0.1.gem
What could be simpler?
Thanks to all the great gems people have made,
pth
Beautiful job, Patrick. Thanks.
···
On 5/23/07, Patrick Hurley <phurley@gmail.com> wrote:
## SYNOPSIS:
Build your gem so that it can be deployed on machines without a build
chain
do not. If you find yourself in this situation gembuilder can be a
real help.
What could be simpler?
AWESOME.
Just what RubyWorks project needed to have tomorrow.
···
On 5/23/07, Patrick Hurley <phurley@gmail.com> wrote:
Build your gem so that it can be deployed on machines without a build chain
--
Alex Verkhovsky
That's marvelous.
No doubt this has occurred to someone already, but wouldn't it be great
if something like Ruby Forge automatically compiled up the binaries for
a sensible range of target platforms?
Cheers,
Benj
···
On 5/23/07, Patrick Hurley <phurley@gmail.com> wrote:
## SYNOPSIS:
Build your gem so that it can be deployed on machines without a build
chain
do not. If you find yourself in this situation gembuilder can be a
real help.
What could be simpler?
Beautiful job, Patrick. Thanks.
Obviously one problem is resources. Another is that the most-broadly "right"
way to compile extensions on Windows is to use VC6, which isn't necessarily
easy to get anymore if you don't already have it. (Please please, no one
start a threadjack along the lines of "I don't know what's wrong with your
extensions, but mine compile fine on Express 2005"!)
I remember vaguely that we discussed this here about a year ago. I offered
to set up a build farm for compiling RubyForge gems but no one bit.
···
On 5/24/07, benjohn@fysh.org <benjohn@fysh.org> wrote:
No doubt this has occurred to someone already, but wouldn't it be great
if something like Ruby Forge automatically compiled up the binaries for
a sensible range of target platforms?
Thanks for posting the link Hope it works for everyone. I have
tested this out a few flavors of Linux (including zLinux ;-), a few
flavors of BSD and Win32. But if anyone has a problem certainly let me
know.
pth
···
On 5/24/07, Alexey Verkhovsky <alexey.verkhovsky@gmail.com> wrote:
Link: http://rubyforge.org/projects/gembuilder/
And, until gems implements automatic platform detection, I'd be
concerned that building multiple binary gems would drive some of us
nuts with the prompts when we tried to install a gem.
···
On 5/24/07, Francis Cianfrocca <garbagecat10@gmail.com> wrote:
On 5/24/07, benjohn@fysh.org <benjohn@fysh.org> wrote:
>
> No doubt this has occurred to someone already, but wouldn't it be great
> if something like Ruby Forge automatically compiled up the binaries for
> a sensible range of target platforms?
Obviously one problem is resources. Another is that the most-broadly "right"
way to compile extensions on Windows is to use VC6, which isn't necessarily
easy to get anymore if you don't already have it. (Please please, no one
start a threadjack along the lines of "I don't know what's wrong with your
extensions, but mine compile fine on Express 2005"!)
I remember vaguely that we discussed this here about a year ago. I offered
to set up a build farm for compiling RubyForge gems but no one bit.
--
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/
It can be even weirder than that. I often have to ship extension gems for
multiple versions of glibc, the crypto libraries, etc. The platform version
string is always i686-linux or some such thing, but they're still distinct
(and incompatible) binary gems. Even with gembuilder, I'll need to decorate
the gem filenames by hand. Still, it's a huge help. Up till now, I've had to
keep extra rake tasks around for each of my target platforms and
subplatforms.
···
On 5/24/07, Rick DeNatale <rick.denatale@gmail.com> wrote:
And, until gems implements automatic platform detection, I'd be
concerned that building multiple binary gems would drive some of us
nuts with the prompts when we tried to install a gem.
Yeah I was initially put off by the mac showing the platform as
darwin8.9.1, but I realized that was how it would avoid those sort of
glibc issues. It might be better if Linux was expanded out to
linux.glibc.4 or something to that effect, but I am (obviously?)
riding on the information in rbconfig.
I am in the simple position where I deploy to a large number of
homogeneous servers for a given client (although the platform will
vary client to client). So this is not a hardship for me. If anyone
has a solution/suggestion for better handling the wide variety of
binary combinations I would be happy to try and integrate it.
Would something as simple as allowing a command line option or
environment variable to set a user defined platform name be useful?
pth
···
On 5/24/07, Francis Cianfrocca <garbagecat10@gmail.com> wrote:
It can be even weirder than that. I often have to ship extension gems for
multiple versions of glibc, the crypto libraries, etc. The platform version
string is always i686-linux or some such thing, but they're still distinct
(and incompatible) binary gems. Even with gembuilder, I'll need to decorate
the gem filenames by hand. Still, it's a huge help. Up till now, I've had to
keep extra rake tasks around for each of my target platforms and
subplatforms.