buildr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Guymon <>
Subject warbler 1.2 and buildr .1.4.3
Date Fri, 12 Nov 2010 21:25:40 GMT


The spoiler: Warbler wants rubyzip 0.9.4, buildr demands 0.9.1. If 
buildr gemspec is updated to >=, a type error pops up due to autoload 
:Zip, 'buildr/packaging/zip' in lib/buildr/packaging.rb. What is the 
autoload providing? Changing it to a require makes the specs angry, so 
there is some magic going into the sauce.

The yarn: So I kicked maven to the curb for buildr on a spring web + 
jruby rails project. Oh man, a breath of fresh air. When trying to use 
the latest warbler to package the project, I got the following:

RubyGem version error: rubyzip(0.9.4 not = 0.9.1) (Gem::LoadError)

buildr is pinned at rubyzip 0.9.1 and warbler is looking for the latest. 
Ok, that is simple enough. I cloned buildr at github and updated the 
gemspec to allow rubyzip >= 0.9.1. Unfortunately, that turned up:

TypeError : superclass mismatch for class ZipFile

Hrm, odd. I started poking around buildr a little and figured out the 
lib/buildr/packaging.rb is calling autoload :Zip, 'buildr/packaging/zip' 
which is causing problems when warbler is requiring rubyzip. So I 
blindly changed the autoload to require 'buildr/packaging/zip' and that 
fixed that issue, but another error sprung up directly from rubyzip:

NoMethodError : undefined method `length' for -1:Fixnum

Cuuuuurses! Rubyzip's Zip::ZipEntry#write_c_dir_entry has comment = -1 
when it expects a string, the angry line of code:

732: @comment ? comment.length : 0,

Somehow, the entry's comment being produced from buildr returns a -1. 
Yet again, swinging in the dark, I override the write_c_dir_entry method 
in buildr and simply add a to_s method call to comment:

@comment ? comment.to_s.length : 0,

Horray, the project builds! I thought about directly patching rubyzip, 
but it is crammed in cvs under sourceforge and I have had enough abuse 
for the time being. I added the override to lb/buildr/packaging/zip.rb

My fork of buildr on github -


zinger@imperator:~/devel/src/ruby/mguymon-buildr$ java -version
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
zinger@imperator:~/devel/src/ruby/mguymon-buildr$ jruby -v
jruby 1.1.6 (ruby 1.8.6 patchlevel 114) (2009-06-12 rev 6586) [amd64-java]
zinger@imperator:~/devel/src/ruby/mguymon-buildr$ buildr --version
Buildr 1.4.3


View raw message