Mailinglist Archive: opensuse-ruby (83 mails)

< Previous Next >
[opensuse-ruby] non-rubyabi-specific gem version dependencies
  • From: Adam Spiers <aspiers@xxxxxxxx>
  • Date: Wed, 21 Nov 2012 16:21:35 +0000
  • Message-id: <20121121162135.GC11510@pacific.linksys.moosehall>
rubygemsdeps.rb as provided by ruby-common-1.0 in d:l:r automatically
generates Provides: headers which, with one exception, contain the
rubyabi version:

# version without ruby version - asking for trouble
puts "rubygem(#{spec.name}) = #{spec.version}"
if rubyabi
puts "rubygem(#{rubyabi}:#{spec.name}) = #{spec.version}"
puts "rubygem(#{rubyabi}:#{spec.name}:#{versions[0]}) = #{spec.version}"
if versions.length > 1
puts "rubygem(#{rubyabi}:#{spec.name}:#{versions[0]}.#{versions[1]}) =
#{spec.version}" if versions.length > 2
puts
"rubygem(#{rubyabi}:#{spec.name}:#{versions[0]}.#{versions[1]}.#{versions[2]})
= #{spec.version}" if versions.length > 3
end

For example:

rubygem(oa-openid) = 0.3.2
rubygem(1.9.1:oa-openid) = 0.3.2
rubygem(1.9.1:oa-openid:0) = 0.3.2
rubygem(1.9.1:oa-openid:0.3) = 0.3.2

However I have just encountered a situation where I think it would
make sense if it also Provided:

rubygem(oa-openid) = 0.3.2
rubygem(oa-openid:0) = 0.3.2
rubygem(oa-openid:0.3) = 0.3.2

The "asking for trouble" comment above cryptically suggests that this
is a bad idea, but I would like to know why.

The situation I have is as follows:

- d:l:r:e provides both rubygem-erubis-2_6 and rubygem-erubis-2_7

- systemsmanagement:chef/rubygem-chef requires erubis >= 0

- systemsmanagement:chef/rubygem-chef which requires rubygem-chef
is in 'unresolvable' state because the Build Service doesn't know
how to choose between the two erubis versions.

The clean solution would be to add a hint to rubygem-chef.spec:

Requires: rubygem(%{rb_ver}:erubis:2.7)

but 'osc build' gets confused by %{rb_ver}. I don't want to manually
specify the Ruby version in the .spec file, because there is no
specific dependency on Ruby 1.9 and I want the .spec file to build
against 1.8 too (e.g. if we linkpac to another project which builds
against Ruby 1.8 on SLES11).

Another possibility for the hint is

Requires: rubygem-erubis >= 2.7

but it would be better if it was possible to use the pessimistic ~>
version since that is less likely to break in the future:

Requires: rubygem(erubis:2.7)

So can someone please explain why having extra automatic Provides:
which omit the rubyabi would be asking for trouble?

Thanks!
Adam
--
To unsubscribe, e-mail: opensuse-ruby+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-ruby+owner@xxxxxxxxxxxx

< Previous Next >
Follow Ups