Bug 1464502

Summary: bundler install - rb-inotify (~> 0.9, >= 0.9.7) not satisfied by installed rubygem-rb-inotify-0.9.7-1.fc25.noarch ??
Product: [Fedora] Fedora Reporter: Alan Jenkins <alan.christopher.jenkins>
Component: rubygem-bundlerAssignee: Vít Ondruch <vondruch>
Status: CLOSED CANTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 25CC: besser82, s, strzibny, vondruch
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-06-23 15:32:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Alan Jenkins 2017-06-23 15:15:51 UTC
Description of problem:

Trying to start a fresh jekyll project, the user is asked to run `bundle install`.  But, it does not use the installed rubygem-rb-inotify and instead downloads it from the internet.  This does not make sense, the only reason `bundle install` was required was to install the minima theme.

Version-Release number of selected component (if applicable):

rubygem-bundler-1.12.5-1.fc25.noarch
rubygem-listen-3.1.5-1.fc25.noarch
rubygem-rb-inotify-0.9.7-1.fc25.noarch

How reproducible: always


Steps to Reproduce:
1. dnf install rubygem-jekyll
2. jekyll new testblog
3. cd testblog
4. bundle exec jekyll serve
5. run `bundle install` if suggested

Actual results:

$ bundle exec jekyll serve
Could not find gem 'minima' in any of the gem sources listed in your Gemfile or available on this machine.
Run `bundle install` to install missing gems.

$ bundle install
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Resolving dependencies...
Using colorator 1.1.0
Installing ffi 1.9.18 with native extensions
Using forwardable-extended 2.6.0
Installing sass 3.4.24
Using kramdown 1.13.2
Installing liquid 3.0.6
Using mercenary 0.3.6
Using rouge 1.11.1
Using safe_yaml 1.0.4
Installing minima 2.0.0
Using bundler 1.12.5
Installing rb-inotify 0.9.10
Using pathutil 0.14.0
Using jekyll-sass-converter 1.5.0
Using listen 3.1.5
Using jekyll-watch 1.5.0
Using jekyll 3.2.1
Bundle complete! 2 Gemfile dependencies, 17 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

Expected results:

bundler should not have installed rb-notify, when the jekyll RPM had already pulled in rubygem-rb-inotify-0.9.7-1.fc25.noarch.  See below.

Either this is a bug in bundler, or there is some issue with the rubygem packaging which I can't find.


Additional info:

Look in the Gemfile (below), and you see that

1. the only gem with a dependency on rb-inotify is `listen`.
2. `listen` requires `rb-inotify (~> 0.9, >= 0.9.7)`

$ gem list | grep rb-inotify
rb-inotify (0.9.10, 0.9.7)


$ cat Gemfile.lock

GEM
  remote: https://rubygems.org/
  specs:
    colorator (1.1.0)
    ffi (1.9.18)
    forwardable-extended (2.6.0)
    jekyll (3.2.1)
      colorator (~> 1.0)
      jekyll-sass-converter (~> 1.0)
      jekyll-watch (~> 1.1)
      kramdown (~> 1.3)
      liquid (~> 3.0)
      mercenary (~> 0.3.3)
      pathutil (~> 0.9)
      rouge (~> 1.7)
      safe_yaml (~> 1.0)
    jekyll-sass-converter (1.5.0)
      sass (~> 3.4)
    jekyll-watch (1.5.0)
      listen (~> 3.0)
    kramdown (1.13.2)
    liquid (3.0.6)
    listen (3.1.5)
      rb-inotify (~> 0.9, >= 0.9.7)
    mercenary (0.3.6)
    minima (2.0.0)
    pathutil (0.14.0)
      forwardable-extended (~> 2.6)
    rb-inotify (0.9.10)
      ffi (>= 0.5.0, < 2)
    rouge (1.11.1)
    safe_yaml (1.0.4)
    sass (3.4.24)
...

Comment 1 Vít Ondruch 2017-06-23 15:32:35 UTC
Well, this is misfeature of Bundler. I guess that following steps should help you to move forward:

1) dnf install rubygem-jekyll
2) gem install minima
3) jekyll new testblog
4) cd testblog
5) bundle install --local

We have tried several times to convince upstream, that it should prefer the already installed packages, but we always failed :/

I am closing this now and hope that the workaround helps you. But feel free to reopen in case I was wrong.

Comment 2 Alan Jenkins 2017-06-23 15:59:57 UTC
Hi, thanks for engaging.

The non-obvious part is how it's happy to use jekyll, jekyll-watch, and listen, but then balks at rb-inotify.

That workaround doesn't work, but I don't want to complain about that.  It seems more a bug in rubygem-jekyll, that we have it packaged, but none of the themes that you would need to actually use it are packaged.


Resolving dependencies...
Bundler could not find compatible versions for gem "jekyll":
  In Gemfile:
    jekyll (= 3.2.1)

    minima was resolved to 2.1.1, which depends on
      jekyll (~> 3.3)

Comment 3 Vít Ondruch 2017-06-26 09:47:20 UTC
(In reply to Alan Jenkins from comment #2)
> Resolving dependencies...
> Bundler could not find compatible versions for gem "jekyll":
>   In Gemfile:
>     jekyll (= 3.2.1)
> 
>     minima was resolved to 2.1.1, which depends on
>       jekyll (~> 3.3)

Ok, so the most recent minima requires more recent jekyll. Two options here:

1) Specify the version of minima compatible with Jekyll package in Fedora:
  a) "gem install minima -v 2.0.0"
  b) Restrict the minima version in the Gemfile
2) Ask rubygem-jekyll maintainers to update the Jekyll package in Fedora.