octopress / genesis-theme

A Jekyll theme build on Octopress Ink
MIT License
24 stars 16 forks source link

Gem has come to have accidentally self-contradictory dependencies. #45

Open MrJoy opened 8 years ago

MrJoy commented 8 years ago
Bundler could not find compatible versions for gem "octopress-date-format":
  In Gemfile:
    octopress-genesis-theme (>= 0) ruby depends on
      octopress-date-format (~> 2.0) ruby

    octopress-genesis-theme (>= 0) ruby depends on
      octopress-ink (>= 0) ruby depends on
        octopress-date-format (~> 3.0) ruby

An easy workaround to mitigate risks like this would be to remove the explicit dependency on octopress-date-format, or widen the range of allowed values of course but that just risks semantic breakage down the road.

A more rigorous adherence to SemVer might help a bit, but I think at the end of the day the only real solution to this is to be very active in considering the impact of updating when you have lopsided loop dependencies like this.

Also, I'd love to try fixing and contributing but without some sort of toe-hold for onboarding with the new Octopress it's becoming a time-sink for me to even try. Do you have a scaffold Octopress 3.0.x project in a working state, using this theme, that I could perhaps try?

Thoughts?

jemus42 commented 8 years ago

I ran into the same(?) issue when I tried to use the theme, however I'm not very familiar with the ruby world, so I'm hoping a solution to this surfaces soonish.

clayh53 commented 8 years ago

Running into the same issue with using the octopress-genesis-theme gem with jekyll 3.0 and octopress 3.0. Bottom line: doesn't work because of dependencies for octopress-date-format (~> 2.0) . Any fixes? Can we just hack the source to change the dependencies since there is now a octopress-date-format (3.0.3)

jemus42 commented 8 years ago

Oh, you can run jekyll 3? I tried it and it failed, so I hat to fix it at ~> 2. (Blog for reference)

There might be a general need to update the dependencies and/or update to use jekyll 3, maybe?

clayh53 commented 8 years ago

I’ve updated my gems to Jekyll 3 and had no problems. Getting Octopress 3 to run. It's the Octopress-ink theme part that is broken.

On Nov 9, 2015, at 5:47 PM, Lukas Burk notifications@github.com wrote:

Oh, you can run jekyll 3? I tried it and it failed, so I hat to fix it at ~> 2. (Blog for reference https://github.com/jemus42/blog.jemu.name)

There might be a general need to update the dependencies and/or update to use jekyll 3, maybe?

— Reply to this email directly or view it on GitHub https://github.com/octopress/genesis-theme/issues/45#issuecomment-155223323.

jingsam commented 8 years ago

Many libraries denpend on jekyll 2, which are

octopress-assign-tag
octopress-comment-tag
octopress-content-for
octopress-escape-code
octopress-autoprefixer

I think @imathis should update these libraries

jez commented 8 years ago

I just made a PR that I believe fixes this bug.

@jingsam In fact, all of the libraries you mention there except octopress-content-for have support for Jekyll 2 & 3 in the most recent version. It seems that octopress-content-for was merely missed when doing a mass upgrade back in May.

I'm not sure that fixing it at gem 'jekyll', '~> 2.0' is a good idea. There's the obvious argument for up-to-date software, but a practical consideration as well: some of the most recent octopress plugin versions require Jekyll 3.0 explicitly (for various reasons).

As it turns out, the octopress-date-format library already supports Jekyll 3.0 in it's gemspec as of version 3.0.3. My guess (I was running into this issue as well) is that bundler doesn't do a good job of telling you all your options for correctly resolving dependency mismatches; it just picks one of the many errors.

For anyone willing to play around with this theme immediately (winter break side projects? :stuck_out_tongue:), I've forked and updated the errant dep to https://github.com/jez/content-for. Here's a sample Gemfile that shows how to use it:

source "http://rubygems.org"

gem 'jekyll', '>= 3.0'
gem 'octopress', '>= 3.0'
gem 'octopress-ink'

group :jekyll_plugins do
  gem 'octopress-content-for', git: 'https://github.com/jez/content-for.git'
  gem 'octopress-genesis-theme'
end

Happy hacking.