Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 645178 - www-apps/redmine-3.4.4 Unable to activate actionpack-4.2.10, because rack-2.0.3 conflicts with rack (~> 1.6)
Summary: www-apps/redmine-3.4.4 Unable to activate actionpack-4.2.10, because rack-2.0...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Normal normal
Assignee: Azamat H. Hackimov
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-01-20 21:09 UTC by Oleksandr Trotsenko
Modified: 2018-05-25 22:37 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
output of my emerge --info (emerge-info.txt,5.08 KB, text/plain)
2018-01-20 21:09 UTC, Oleksandr Trotsenko
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Oleksandr Trotsenko 2018-01-20 21:09:18 UTC
Created attachment 515522 [details]
output of my emerge --info

hello, guys!

This of one of my first bug reports in gentoo :)

So, on my ~amd64, after running emerge redmine and pulling in www-apps/redmine-3.4.4 (with this https://github.com/gentoo/gentoo/pull/6520 already patched in my local portage tree), the build and emerge --config "=www-apps/redmine-3.4.4" are successful.

However, when I hit the redmine app via HTTP in browser (I use passenger) I receive:
Unable to activate actionpack-4.2.10, because rack-2.0.3 conflicts with rack (~> 1.6) (Gem::ConflictError)
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/specification.rb:2290:in `raise_if_conflicts'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/specification.rb:1410:in `activate'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/specification.rb:1444:in `block in activate_dependencies'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/specification.rb:1430:in `each'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/specification.rb:1430:in `activate_dependencies'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/specification.rb:1412:in `activate'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:68:in `block in gem'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:67:in `synchronize'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:67:in `gem'
  /var/lib/redmine/config/application.rb:3:in `<top (required)>'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /var/lib/redmine/config/environment.rb:2:in `<top (required)>'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  /usr/lib64/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  config.ru:3:in `block in <main>'
  /usr/lib64/ruby/gems/2.2.0/gems/rack-2.0.3/lib/rack/builder.rb:55:in `instance_eval'
  /usr/lib64/ruby/gems/2.2.0/gems/rack-2.0.3/lib/rack/builder.rb:55:in `initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'

As far as I could tackle the problem, it comes from the fact that I have 2 versions of the package dev-ruby/rack: rack-1.6.7 & rack-2.0.3
Unmerging rack-2.0.3 solves the problem.

So I ran:
vps /etc/apache2/modules.d # equery depends rack
 * These packages depend on rack:
dev-ruby/actionpack-4.2.10 (ruby_targets_ruby22 ? >=dev-ruby/rack-1.6.0:1.6[ruby_targets_ruby22])
                           (ruby_targets_ruby23 ? >=dev-ruby/rack-1.6.0:1.6[ruby_targets_ruby23])
                           (ruby_targets_ruby24 ? >=dev-ruby/rack-1.6.0:1.6[ruby_targets_ruby24])
dev-ruby/actionpack-5.0.6 (ruby_targets_ruby22 ? dev-ruby/rack:2.0[ruby_targets_ruby22])
                          (ruby_targets_ruby23 ? dev-ruby/rack:2.0[ruby_targets_ruby23])
                          (ruby_targets_ruby24 ? dev-ruby/rack:2.0[ruby_targets_ruby24])
dev-ruby/actionpack-5.1.4 (ruby_targets_ruby22 ? dev-ruby/rack:2.0[ruby_targets_ruby22])
                          (ruby_targets_ruby23 ? dev-ruby/rack:2.0[ruby_targets_ruby23])
                          (ruby_targets_ruby24 ? dev-ruby/rack:2.0[ruby_targets_ruby24])
dev-ruby/activesupport-4.2.10 (test ? dev-ruby/rack[ruby_targets_ruby22])
                              (test ? dev-ruby/rack[ruby_targets_ruby23])
                              (test ? dev-ruby/rack[ruby_targets_ruby24])
dev-ruby/activesupport-5.0.6 (test ? dev-ruby/rack[ruby_targets_ruby22])
                             (test ? dev-ruby/rack[ruby_targets_ruby23])
                             (test ? dev-ruby/rack[ruby_targets_ruby24])
dev-ruby/activesupport-5.1.4 (test ? dev-ruby/rack[ruby_targets_ruby22])
                             (test ? dev-ruby/rack[ruby_targets_ruby23])
                             (test ? dev-ruby/rack[ruby_targets_ruby24])
dev-ruby/rack-openid-1.4.2 (ruby_targets_ruby22 ? >=dev-ruby/rack-1.1.0[ruby_targets_ruby22])
                           (ruby_targets_ruby23 ? >=dev-ruby/rack-1.1.0[ruby_targets_ruby23])
                           (ruby_targets_ruby24 ? >=dev-ruby/rack-1.1.0[ruby_targets_ruby24])
dev-ruby/rack-test-0.6.3 (ruby_targets_ruby22 ? >=dev-ruby/rack-1.0[ruby_targets_ruby22])
                         (ruby_targets_ruby23 ? >=dev-ruby/rack-1.0[ruby_targets_ruby23])
                         (ruby_targets_ruby24 ? >=dev-ruby/rack-1.0[ruby_targets_ruby24])
dev-ruby/sprockets-3.7.1 (ruby_targets_ruby22 ? >=dev-ruby/rack-1[ruby_targets_ruby22])
                         (ruby_targets_ruby22 ? <dev-ruby/rack-3[ruby_targets_ruby22])
                         (ruby_targets_ruby23 ? >=dev-ruby/rack-1[ruby_targets_ruby23])
                         (ruby_targets_ruby23 ? <dev-ruby/rack-3[ruby_targets_ruby23])
                         (ruby_targets_ruby24 ? >=dev-ruby/rack-1[ruby_targets_ruby24])
                         (ruby_targets_ruby24 ? <dev-ruby/rack-3[ruby_targets_ruby24])
www-apache/passenger-5.1.11 (ruby_targets_ruby22 ? >=dev-ruby/rack-1.0.0[ruby_targets_ruby22])
                            (ruby_targets_ruby23 ? >=dev-ruby/rack-1.0.0[ruby_targets_ruby23])
                            (ruby_targets_ruby24 ? >=dev-ruby/rack-1.0.0[ruby_targets_ruby24])

So the rack-2.0.3 is pulled by dev-ruby/actionpack-5.*; I tried to study who depends on dev-ruby/actionpack but to be honest it just leads to another set of inner ruby packages (and I am not a ruby developer to quickly navigate through them).

My emerge --info is enclosed

www-apps/redmine-3.4.4::gentoo was built with the following:
USE="passenger -fastcgi -imagemagick -ldap -markdown -test" ABI_X86="(64)" RUBY_TARGETS="ruby22 -ruby23"
Comment 1 devzero 2018-01-27 15:02:27 UTC
I ran in exactly the same issue.
Comment 2 Oleksandr Trotsenko 2018-01-28 08:59:39 UTC
I am not sure if you managed to address it (and for those who also face this issue and do not know what to do about it) - the solution that worked for me, and it's pretty apparent from the error message, is to mast rack 2.

I added the following into my package.mask:
>=dev-ruby/rack-2.0.0

and then make sure portage uninstalls rack 2 if you have it installed.
Comment 3 Oleksandr Trotsenko 2018-01-28 19:47:29 UTC
I am not sure if my pull request does the right thing (it's my 1st pull request in gentoo). Additionally, I see that rack is masked now https://packages.gentoo.org/packages/dev-ruby/rack - this puts even more doubts in my head; but I gave it a shot with the pull request :)
Comment 4 Azamat H. Hackimov 2018-01-29 06:09:05 UTC
I suspect that passenger pulls rack-2 due non-strict dependency. I'll try to play around with him.
Comment 5 Oleksandr Trotsenko 2018-04-25 15:56:09 UTC
Well, I was updating @world on my server today, so I have little more to say (truly hope it's useful to the package maintainer and others like me, innocent users Gentoo).

First of all, on my server I am accepting amd64 keyword. And then only for Redmine I selectively allow ~amd64 keywords for a bunch of packages (Redmine + all of its dependencies). I know :) you can write me off to go to hell just at this moment :) I know I am on my own and this voids any warranty :)

Redmine-3.4.4 wouldn't start if dev-ruby/rack is >=2.0.0 (even if you install slotted dev-ruby/rack-1.6.7:1.6 and dev-ruby/rack-2.0.3:2.0). It would only start if your only installed rack is version 1.6.*

I tried to dig a little bit into dependencies and determine who exactly pulls in dev-ruby/rack-2.*.

First of all, I discovered dev-ruby/actionpack got stabilized at version 5.1.4 and my Gentoo was choosing that one over unstable dev-ruby/actionpack-4.2.10. The dev-ruby/actionpack-5.* was pulling in dev-ruby/rack-2.*

Then I also saw dev-ruby/railties-5.1.4 gets pulled in by Redmine-3.4.4 and it also in its own turn pulls in rack-2.*. Turns out same story - dev-ruby/railties-5.1.4 is stable, but Redmine-3.4.4 actually would only run on dev-ruby/railties-4.2.10 which is unstable.

Basically I got myself back in business with these 3 lines in package.mask:

# This one because there is stable actionpack-5.* but we prefer to use unstable actionpack-4.*
>=dev-ruby/actionpack-5.0.0
# Same as above, dev-ruby/railties-5.1.4 is stabilized but we prefer unstable 4.2.10
>=dev-ruby/railties-5.1.4
# I explicitly mask >=rack-2.0.0 so Gentoo prefers rack-1.6.* 
>=dev-ruby/rack-2.0.0

As I said, I am running mostly amd64 with just Redmine + its dependencies keyworded to ~amd64.

Azamat, if you follow my logic and you do not see any pitfalls in it, I can put these dependency constraints into redmine-3.4.4 ebuild and update my pull request. I do seek to hear someone else's feedback because of "funny" amd64 vs ~amd64 setup that I am running :)
Comment 6 Azamat H. Hackimov 2018-05-24 06:35:21 UTC
Hello.

I pushed PR that should fix that bug, and passenger should take rack 1.6 as part of application.
Comment 7 Larry the Git Cow gentoo-dev 2018-05-25 22:37:58 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5a985b6fcfa46754da0d7dda4f797996dcd7f037

commit 5a985b6fcfa46754da0d7dda4f797996dcd7f037
Author:     Azamat H. Hackimov <azamat.hackimov@gmail.com>
AuthorDate: 2018-05-23 20:08:00 +0000
Commit:     Aaron Bauman <bman@gentoo.org>
CommitDate: 2018-05-25 22:37:45 +0000

    www-apps/redmine: version bump and fixes
    
    Bump to 3.3.7 and 3.4.5. Branch 3.2 support officialy discontinued,
    removed. Fixes dependencies conflict that prevents launch application
    with installed but unsupported gems (#645178 and #652880). Fixes bug
    when fresh installation cannot be configured.
    
    Closes: https://bugs.gentoo.org/645178
    Closes: https://bugs.gentoo.org/652880
    Package-Manager: Portage-2.3.24, Repoman-2.3.6
    Closes: https://github.com/gentoo/gentoo/pull/8539

 www-apps/redmine/Manifest                          |   5 +-
 .../files/redmine-3.3.7_gemfile_versions.patch     |  44 +++++
 .../redmine/files/redmine-3.4.3_requires.patch     |  73 -------
 .../files/redmine-3.4.5_gemfile_versions.patch     |  41 ++++
 www-apps/redmine/redmine-3.3.6.ebuild              | 219 ---------------------
 .../{redmine-3.4.4.ebuild => redmine-3.3.7.ebuild} |  36 ++--
 .../{redmine-3.2.9.ebuild => redmine-3.4.5.ebuild} |  39 ++--
 7 files changed, 130 insertions(+), 327 deletions(-)