Bug 202688 - dev-ruby/activesupport-2.0.2 installation fails
|
Bug#:
202688
|
Product: Gentoo Linux
|
Version: 2007.0
|
Platform: All
|
|
OS/Version: Linux
|
Status: RESOLVED
|
Severity: normal
|
Priority: P2
|
|
Resolution: FIXED
|
Assigned To: ruby@gentoo.org
|
Reported By: fmccor@gentoo.org
|
|
Component: Ebuilds
|
|
|
URL:
|
|
Summary: dev-ruby/activesupport-2.0.2 installation fails
|
|
Keywords:
|
|
Status Whiteboard:
|
|
Opened: 2007-12-18 13:25 0000
|
Upgrade to actionpack-2.0.2 fails for me on sparc and 2 different amd64s with:
* gem install failed (spec file
/var/tmp/portage/dev-ruby/activesupport-2.0.2/image///usr/lib/ruby/gems/1.8/specifications/activesupport-2.0.2.gemspec
missing)
(on amd64, the "lib" bit is "lib64")
Relevant to this, perhaps, on both systems, I have:
Sat Aug 18 13:55:39 2007 >>> sys-devel/autoconf-2.61-r1
Mon Oct 22 11:31:49 2007 >>> dev-lang/ruby-1.8.6_p110-r2
Mon Nov 19 12:44:11 2007 >>> dev-ruby/rubygems-0.9.4-r2
(Dates are perhaps different on the two systems, but that sequence of events is
the same on both.)
Note that "emerge =dev-ruby/activesupport-1.4.4" works fine.
All systems are pretty standard at profile 2007.0
Just a note: One of the failing systems (amd64) did not have rails installed
on it at all, and an installation of rails (stable for amd64) went fine on that
system.
It appears to be because gems creates with rubygems-0.9.5 are not backwards
compatible.
*** Bug 202728 has been marked as a duplicate of this bug. ***
After unmasking and installing rubygems-0.9.5 everything installs properly on
amd64. I haven't tested anything yet.
I've just masked Rails 2.0.2 and its dependencies while we figure out what the
right approach is. No need to generate tons of duplicates for this.
Looks like gem is not finding activesupport-2.0.2.gemspec. A quick look in
/var/tmp/portage/dev-ruby/activesupport-2.0.2/image///usr/lib/ruby/gems/1.8/specifications/
revels that the file is named activesupport-2.0.2-.gemspec.
I'm guessing it might be line 114 in
/var/tmp/portage/dev-ruby/activesupport-2.0.2/temp/environment,
conf=activesupport-2.0.2-r0 that gets parsed wrong.
The problem is that the rails gems don't set a particular setting that seems to
have become mandatory with rubygems 0.9.5. See upstream bug
http://dev.rubyonrails.org/ticket/10541 for details. It's fixed in upstream's
source repository, but no new gems have been generated yet.
The same buf on ~x86.
Solutions:
- Mask rails 2.0 (noooo ;) ) and add dependence to rubygems?
- Unmask rubygems and add depencence for rubygem?
I already masked Rails 2.0.x. Complain to upstream who messed up and didn't do
proper testing.
Unmasking rubygems 0.9.5 isn't an option right now because it seems to be
broken in more ways then one.
My solution is to wait for a new upstream release, since the problem has been
fixed upstream I suspect this won't take long.
(In reply to comment #9)
> I already masked Rails 2.0.x. Complain to upstream who messed up and didn't do
> proper testing.
Having users complaining upstream is exactly what you took on to prevent when
you got onboard the Ruby team. As for laying the blame, that's an entirely
different matter :)
*** Bug 202838 has been marked as a duplicate of this bug. ***
(In reply to comment #9)
> Unmasking rubygems 0.9.5 isn't an option right now because it seems to be
> broken in more ways then one.
Hans,
Any pointers what to look out for? Is it just the problem at
http://bugs.gentoo.org/show_bug.cgi?id=202109#c5 - not able to find YAML? I'm
running ruby and rubygems~x86 and using gem install for everything else (rails
2.0.2 etc) with my /etc/package.unmask as
=dev-ruby/rubygems-0.9.5
and so far everything is running sweetly.
`gem outdated` worked fine; `gem update` works fine, results in `gem outdated`
producing clean (empty) output. I have activesupport-2.0.2 showing as installed
ok.
Current app has clean Test::Unit and RSpec output:
units: 103 tests, 365 assertions, 0 failures, 0 errors
functionals: 1198 tests, 13204 assertions, 0 failures, 0 errors
integration: 2 tests, 11 assertions, 0 failures, 0 errors
so I'm not sure where to look for potential problems.
Anything I could productively test?
Regards,
Thomas.
`gem list` output:
# gem list
*** LOCAL GEMS ***
actionmailer (2.0.2, 2.0.1, 1.3.6, 1.3.3)
actionpack (2.0.2, 2.0.1, 1.13.6, 1.13.3)
actionwebservice (1.2.6, 1.2.3)
activerecord (2.0.2, 2.0.1, 1.15.6, 1.15.3)
activeresource (2.0.2, 2.0.1)
activesupport (2.0.2, 2.0.1, 1.4.4, 1.4.2)
builder (2.1.2)
capistrano (2.1.0, 2.0.0, 1.4.1)
cgi_multipart_eof_fix (2.5.0, 2.1)
daemons (1.0.9, 1.0.7)
fastthread (1.0.1, 1.0)
ferret (0.11.6)
gem_plugin (0.2.3, 0.2.2)
gettext (1.10.0)
highline (1.4.0)
maruku (0.5.7, 0.5.6)
mime-types (1.15)
money (1.7.1)
mongrel (1.1.2, 1.1.1, 1.0.1)
mongrel_cluster (1.0.5, 1.0.2)
needle (1.3.0)
net-sftp (1.1.0)
net-ssh (1.1.2)
payment (1.0.1)
postgres (0.7.9.2007.12.12, 0.7.1)
rails (2.0.2, 2.0.1, 1.2.6, 1.2.3)
rake (0.7.3)
RedCloth (3.0.4)
rmagick (1.15.11, 1.15.7)
rspec (1.1.1, 1.0.8, 1.0.5)
ruby-lsapi (2.8, 2.5)
rubygems-update (1.0.0, 0.9.5, 0.9.4)
shipping (1.5.1)
spreadsheet-excel (0.3.5.1)
syntax (1.0.0)
To install actionpack-2.0.2, line 5 of metadata file in activerecord-2.0.2.gem
must be deleted. The line is:
platform: ""
It handles incorrectly dy gem installator, it creates file
var/tmp/portage/dev-ruby/activesupport-2.0.2/image///usr/lib/ruby/gems/1.8/specifications/activesupport-2.0.2-.gemspec
instead of
var/tmp/portage/dev-ruby/activesupport-2.0.2/image///usr/lib/ruby/gems/1.8/specifications/activesupport-2.0.2.gemspec
Looks like gems.eclass is incorrect, not gem:
file /usr/portage/eclass/gems.eclass, line51
spec_path=${D}/${GEMSDIR}/specifications/${P}.gemspec
But gem creates file like "#{@name}-#{@version}-#{platform}", not
"#{@name}-#{@version}". (See specification.rb, lines 495-501)
So bug can be also fixed by fixing gems.eclass
I had a brief look at this just know, but I don't think the situation is as
clear-cut as comment 14 seems to make out. The actual name that is generated
for a gem is dependant on the value of platform, and may in fact be left off.
This should be the default for gems installed for Gentoo, as far as I can tell,
because we compile any extensions anyway. This is the same as the platform
Ruby.
The problem with the Rails ebuilds was that platform was actually the empty
string, and thus the platform was not default and thus not dropped. This has
been fixed in upstream's SVN and will hopefully be released shortly. Too bad we
don't have an easy way to patch gems...
Alexey, perhaps I'm misunderstanding your proposed fix? It would be great to
see a patch that works with rubygems 0.9.4 and rubygems 1.0.1 and gems created
with either version.
*** Bug 203372 has been marked as a duplicate of this bug. ***
I did some preliminary work for an eclass to build gems from source, so we
could apply the upstream patch. I got it enough so it does build and install
the gem... but it fails at the same place.
It's failing at the line in the eclass where it checks for the spec, but
doesn't find it because it's named activesupport-2.0.2-.spec instead of spec.
This line looks like it was added as a workaround for an old, old version of
rubygems, 0.9.0.8, not properly returning exit status. So, checking the
prescence of the gemspec was a way to verify it being around.
Since we have 0.9.4 stable, I think we could safely turn up the dependency in
the eclass, and remove the workaround.
I just tested emerging every ~x86 gem in the tree with the patch with both
rubygems 0.9.4 and 1.0.1 without any issue.
The only remaining problem I see is that mips is still on rubygems 0.8.6. The
good news, however, is that rubygems 1.0.1 is now keyworded by mips, so we have
an upgrade path. mips would have to mark rubygems 1.0.1 stable, though, to keep
a stable version...
Proposed steps:
1. unmask rubygems 1.0.1 (Richard, you mentioned that this was good to go?)
2. remove rubygems 0.8.11-r6
3. apply this patch to gems.eclass
4. unmask rails 2.0.2
(In reply to comment #20)
> mips would have to mark rubygems 1.0.1 stable, though, to keep
> a stable version...
So, we'd have to wait 30 days after it gets unmasked. That's pretty
undesirable.
I looked at the changelog, and I don't really see a reason why 0.9.x wouldn't
have had ~mips, which is a little annoying.
It may be worth checking how many packages which use gems have stable keywords
for mips. Maybe there aren't any, in which case we'd be alright without a
stable rubygems on mips.
Only one package, ruby-postgres, was stable with mips keywords. After talking
with Redhatter, apparently postgres is broken on mips, so it was ok to drop.
Doing some final testing, but I plan on going ahead with the patch.