[opensuse-packaging] Ruby is driving me nutty......
Hi, A quick recap, in https://build.opensuse.org/project/show?project=Cloud%3AOpenNebula I link to a bunch of ruby packages from d:l:r:e. Most of these failed and I finally got everything building again, by locally commenting out the rdoc BuildRequires. This IMHO should not be necessary and shows that we have some kind of issue with ruby packaging, but that's another discussion. With everything building I figured install should work as well, but it doesn't. When I try to install the opennebula package which through the dependency chain pull ins rubygem-sinatra I get the message: Nothing provides rubygem(1.9.1:rack) >= 1.3.6 needed by rubygem-sinatra I have linked rubygem-rack from d:l:r:e and thus rubygem-sinatra should depend on the rubygem-rack package from the openNebula repo. rubygem-rack built successfully. Therefore, adding Cloud:OpenNebula as a repo should be sufiicient, but it is not. The spec file for sinatra also does not have an explicit "Requires:..." for rubygem-rack for version 1.3.6 or greater. Clearly frustrated by all of this and hope I am not producing too much noise between the detailed data. Help is appreciated. Thanks, Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU SUSE-IBM Software Integration Center LINUX Tech Lead rjschwei@suse.com rschweik@ca.ibm.com 781-464-8147 -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
Robert Schweikert (rjschwei@suse.com) wrote:
When I try to install the opennebula package which through the dependency chain pull ins rubygem-sinatra I get the message:
You are more likely to receive useful help if you provide steps to reproduce. How did you install? Which repo did you use - SP2, 12.1, 12.2, or Factory? Although in this case the problem is already clear:
Nothing provides rubygem(1.9.1:rack) >= 1.3.6 needed by rubygem-sinatra
Yes, that's correct: https://build.opensuse.org/package/binary?arch=x86_64&filename=rubygem-sinat... clearly shows that Sinatra requires rack ~> 1.3.6, but your project does not provide this, since its version of rubygem-rack-1_3 is only 1.3.5.
Nope, because it doesn't satisfy the version requirements as above.
The spec file for sinatra also does not have an explicit "Requires:..." for rubygem-rack for version 1.3.6 or greater.
Correct, it's an automatically generated dependency: https://build.opensuse.org/package/binary?arch=x86_64&filename=rubygem-sinat... I spent a lot of effort recently documenting how this works: http://en.opensuse.org/openSUSE:Packaging_Ruby#How_gem_dependencies_are_auto... -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On 12/06/2012 12:45 PM, Adam Spiers wrote:
Sorry, I thought I did that by stating: "When I try to install the opennebula package which through the dependency chain pull ins rubygem-sinatra"
How did you install?
zypper
Which repo did you use - SP2, 12.1, 12.2, or Factory?
touche, used openSUSE 12.2
OK, but how does it know it needs 1.3.6? I suppose that is in the Gemlock file that is part of the source?
OK, so can I get rid off rubygem-rack and link to rubygem_rack-1_4 instead? Is there no way to have system that "just works" i.e. where I do not have to chase after every version change? I'd like to just link to rubygem-rack (or rubygem-rack-latest or whatever the name may be) in my project and have it provide whatever version is needed by the other packages I link to. Thus, I can leave the ruby packaging and version fiddling to the ruby experts that work in d:l:r:e and do not have to become an expert myself.
Thanks for the pointer to the doc. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU SUSE-IBM Software Integration Center LINUX Tech Lead rjschwei@suse.com rschweik@ca.ibm.com 781-464-8147 -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
Robert Schweikert (rjschwei@suse.com) wrote:
Not really - reproduction steps contain precise technical details. "try to install" could mean many different things (zypper, yast etc.) and quite often the devil is in the details ...
(Sorry, that should have been >= 1.3.6 in this case, but it doesn't change my assertion ...)
Not quite, Gemfile.lock files are created by bundler. But it is in the gem's metadata which you can see via gem spec --ruby foo.gem
Yes that should probably do it. (Note that if sinatra had instead required ~> 1.3.6 then 1.4.x would not have fulfilled that requirement: http://docs.rubygems.org/read/chapter/16 )
Is there no way to have system that "just works" i.e. where I do not have to chase after every version change?
In theory I *think* it should "just work" if you build against d:l:r:e rather than the base distro repositories. That way you wouldn't even have to include rubygem packages in your project. There are disadvantages though - basically less control and stability over which packages get used, since d:l:r:e is constantly changing.
But the latest version will not always be the one you need. The dependency tree for your project has to be self-consistent. So you can either achieve this by providing the minimal set of packages which satisfy your tree, or by providing the whole rubygem universe and hoping that the various Provides: and Requires: symbols are enough information for OBS to resolve the tree for you. The former is done by manual linkpacs into your project and the latter by adding <path> to your project's meta config. BTW really this thread should be on opensuse-ruby ... -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
Robert Schweikert (rjschwei@suse.com) wrote:
When I try to install the opennebula package which through the dependency chain pull ins rubygem-sinatra I get the message:
You are more likely to receive useful help if you provide steps to reproduce. How did you install? Which repo did you use - SP2, 12.1, 12.2, or Factory? Although in this case the problem is already clear:
Nothing provides rubygem(1.9.1:rack) >= 1.3.6 needed by rubygem-sinatra
Yes, that's correct: https://build.opensuse.org/package/binary?arch=x86_64&filename=rubygem-sinat... clearly shows that Sinatra requires rack ~> 1.3.6, but your project does not provide this, since its version of rubygem-rack-1_3 is only 1.3.5.
Nope, because it doesn't satisfy the version requirements as above.
The spec file for sinatra also does not have an explicit "Requires:..." for rubygem-rack for version 1.3.6 or greater.
Correct, it's an automatically generated dependency: https://build.opensuse.org/package/binary?arch=x86_64&filename=rubygem-sinat... I spent a lot of effort recently documenting how this works: http://en.opensuse.org/openSUSE:Packaging_Ruby#How_gem_dependencies_are_auto... -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On 12/06/2012 12:45 PM, Adam Spiers wrote:
Sorry, I thought I did that by stating: "When I try to install the opennebula package which through the dependency chain pull ins rubygem-sinatra"
How did you install?
zypper
Which repo did you use - SP2, 12.1, 12.2, or Factory?
touche, used openSUSE 12.2
OK, but how does it know it needs 1.3.6? I suppose that is in the Gemlock file that is part of the source?
OK, so can I get rid off rubygem-rack and link to rubygem_rack-1_4 instead? Is there no way to have system that "just works" i.e. where I do not have to chase after every version change? I'd like to just link to rubygem-rack (or rubygem-rack-latest or whatever the name may be) in my project and have it provide whatever version is needed by the other packages I link to. Thus, I can leave the ruby packaging and version fiddling to the ruby experts that work in d:l:r:e and do not have to become an expert myself.
Thanks for the pointer to the doc. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU SUSE-IBM Software Integration Center LINUX Tech Lead rjschwei@suse.com rschweik@ca.ibm.com 781-464-8147 -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
Robert Schweikert (rjschwei@suse.com) wrote:
Not really - reproduction steps contain precise technical details. "try to install" could mean many different things (zypper, yast etc.) and quite often the devil is in the details ...
(Sorry, that should have been >= 1.3.6 in this case, but it doesn't change my assertion ...)
Not quite, Gemfile.lock files are created by bundler. But it is in the gem's metadata which you can see via gem spec --ruby foo.gem
Yes that should probably do it. (Note that if sinatra had instead required ~> 1.3.6 then 1.4.x would not have fulfilled that requirement: http://docs.rubygems.org/read/chapter/16 )
Is there no way to have system that "just works" i.e. where I do not have to chase after every version change?
In theory I *think* it should "just work" if you build against d:l:r:e rather than the base distro repositories. That way you wouldn't even have to include rubygem packages in your project. There are disadvantages though - basically less control and stability over which packages get used, since d:l:r:e is constantly changing.
But the latest version will not always be the one you need. The dependency tree for your project has to be self-consistent. So you can either achieve this by providing the minimal set of packages which satisfy your tree, or by providing the whole rubygem universe and hoping that the various Provides: and Requires: symbols are enough information for OBS to resolve the tree for you. The former is done by manual linkpacs into your project and the latter by adding <path> to your project's meta config. BTW really this thread should be on opensuse-ruby ... -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
participants (2)
-
Adam Spiers
-
Robert Schweikert