Skip to content

Issues bundling psych related to the jar-dependencies bump #8488

@flavorjones

Description

@flavorjones

Environment Information

  • jruby 9.4.9.0 (3.1.4) 2024-11-04 547c6b150e OpenJDK 64-Bit Server VM 11.0.25+9 on 11.0.25+9 +jit [x86_64-linux] as installed by the github action setup-ruby

I've included links to CI builds below, which use setup-ruby and standard github actions ubuntu containers.

I can also reproduce on my local development machine (linux), and I haven't yet been able to figure out how to resolve the issue other than to stop bundling psych by dropping the dependency on its dependant, "rdoc".

This issue did not occur for the same applications last week, I believe this issue is related to the change in #8477

`bundle env` from the Loofah project

Environment

Bundler       2.5.22
  Platforms   ruby, universal-java-21
Ruby          3.1.4p0 (2024-11-04 revision 547c6b150eb2c15799349ba727d036cbb62a4069) [universal-java-21]
  Full Path   /home/flavorjones/.local/share/mise/installs/ruby/jruby-9.4.9.0/bin/jruby
  Config Dir  /home/flavorjones/.local/share/mise/installs/ruby/jruby-9.4.9.0/etc
RubyGems      3.3.26
  Gem Home    /home/flavorjones/.local/share/mise/installs/ruby/jruby-9.4.9.0/lib/ruby/gems/shared
  Gem Path    /home/flavorjones/.gem/jruby/3.1.0:/home/flavorjones/.local/share/mise/installs/ruby/jruby-9.4.9.0/lib/ruby/gems/shared
  User Home   /home/flavorjones
  User Path   /home/flavorjones/.gem/jruby/3.1.0
  Bin Dir     /home/flavorjones/.local/share/mise/installs/ruby/jruby-9.4.9.0/bin
Tools         
  Git         2.47.1
  RVM         not installed
  rbenv       not installed
  chruby      not installed
Gem.ruby      /home/flavorjones/.local/share/mise/installs/ruby/jruby-9.4.9.0/bin/jruby
bundle #!     /usr/bin/env jruby

Bundler Build Metadata

Built At          2024-10-16
Git SHA           342d4542fda
Released Version  true

Bundler settings

gem.changelog
  Set for the current user (/home/flavorjones/.bundle/config): true
gem.ci
  Set for the current user (/home/flavorjones/.bundle/config): "github"
gem.linter
  Set for the current user (/home/flavorjones/.bundle/config): "standard"
gem.test
  Set for the current user (/home/flavorjones/.bundle/config): "minitest"
ignore_funding_requests
  Set via BUNDLE_IGNORE_FUNDING_REQUESTS: "1"
jobs
  Set for the current user (/home/flavorjones/.bundle/config): 4

Gemfile

Gemfile

# frozen_string_literal: true

source "https://rubygems.org/"

gemspec

group :development do
  gem("hoe-markdown", ["~> 1.5", ">= 1.5.1"])
  gem("json", ["~> 2.2"])
  gem("minitest", ["~> 5.14"])
  gem("rake", ["~> 13.0"])
  gem("rdoc", [">= 4.0", "< 7"])

  if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.0.0")
    gem("rubocop", "1.65.0")
    gem("rubocop-minitest", "0.29.0")
    gem("rubocop-packaging", "0.5.2")
    gem("rubocop-performance", "1.16.0")
    gem("rubocop-rake", "0.6.0")
    gem("rubocop-shopify", "2.12.0")
  end
end

Gemfile.lock

PATH
  remote: .
  specs:
    loofah (2.23.1)
      crass (~> 1.0.2)
      nokogiri (>= 1.12.0)

GEM
  remote: https://rubygems.org/
  specs:
    ast (2.4.2)
    crass (1.0.6)
    hoe-markdown (1.6.0)
      rake (> 0)
    jar-dependencies (0.5.0)
    json (2.7.3)
    json (2.7.3-java)
    language_server-protocol (3.17.0.3)
    minitest (5.25.1)
    nokogiri (1.16.7-aarch64-linux)
      racc (~> 1.4)
    nokogiri (1.16.7-arm-linux)
      racc (~> 1.4)
    nokogiri (1.16.7-arm64-darwin)
      racc (~> 1.4)
    nokogiri (1.16.7-java)
      racc (~> 1.4)
    nokogiri (1.16.7-x86-linux)
      racc (~> 1.4)
    nokogiri (1.16.7-x86_64-darwin)
      racc (~> 1.4)
    nokogiri (1.16.7-x86_64-linux)
      racc (~> 1.4)
    parallel (1.26.3)
    parser (3.3.5.0)
      ast (~> 2.4.1)
      racc
    psych (5.1.2)
      stringio
    psych (5.1.2-java)
      jar-dependencies (>= 0.1.7)
    racc (1.8.1)
    racc (1.8.1-java)
    rainbow (3.1.1)
    rake (13.2.1)
    rdoc (6.7.0)
      psych (>= 4.0.0)
    regexp_parser (2.9.2)
    rexml (3.3.9)
    rubocop (1.65.0)
      json (~> 2.3)
      language_server-protocol (>= 3.17.0)
      parallel (~> 1.10)
      parser (>= 3.3.0.2)
      rainbow (>= 2.2.2, < 4.0)
      regexp_parser (>= 2.4, < 3.0)
      rexml (>= 3.2.5, < 4.0)
      rubocop-ast (>= 1.31.1, < 2.0)
      ruby-progressbar (~> 1.7)
      unicode-display_width (>= 2.4.0, < 3.0)
    rubocop-ast (1.32.3)
      parser (>= 3.3.1.0)
    rubocop-minitest (0.29.0)
      rubocop (>= 1.39, < 2.0)
    rubocop-packaging (0.5.2)
      rubocop (>= 1.33, < 2.0)
    rubocop-performance (1.16.0)
      rubocop (>= 1.7.0, < 2.0)
      rubocop-ast (>= 0.4.0)
    rubocop-rake (0.6.0)
      rubocop (~> 1.0)
    rubocop-shopify (2.12.0)
      rubocop (~> 1.44)
    ruby-progressbar (1.13.0)
    stringio (3.1.1)
    unicode-display_width (2.6.0)

PLATFORMS
  aarch64-linux
  arm-linux
  arm64-darwin
  universal-java-21
  x86-linux
  x86_64-darwin
  x86_64-linux

DEPENDENCIES
  hoe-markdown (~> 1.5, >= 1.5.1)
  json (~> 2.2)
  loofah!
  minitest (~> 5.14)
  rake (~> 13.0)
  rdoc (>= 4.0, < 7)
  rubocop (= 1.65.0)
  rubocop-minitest (= 0.29.0)
  rubocop-packaging (= 0.5.2)
  rubocop-performance (= 1.16.0)
  rubocop-rake (= 0.6.0)
  rubocop-shopify (= 2.12.0)

BUNDLED WITH
   2.5.22

Gemspecs

loofah.gemspec

# frozen_string_literal: true

require "./lib/loofah/version"

Gem::Specification.new do |spec|
  spec.name = "loofah"
  spec.version = Loofah::VERSION

  spec.authors = ["Mike Dalessio", "Bryan Helmkamp"]
  spec.email = ["mike.dalessio@gmail.com", "bryan@brynary.com"]

  spec.summary = <<~TEXT
    Loofah is a general library for manipulating and transforming HTML/XML documents and fragments,
    built on top of Nokogiri.
  TEXT
  spec.description = <<~TEXT
    Loofah is a general library for manipulating and transforming HTML/XML documents and fragments,
    built on top of Nokogiri.

    Loofah also includes some HTML sanitizers based on `html5lib`'s safelist, which are a specific
    application of the general transformation functionality.
  TEXT

  spec.homepage = "https://github.com/flavorjones/loofah"
  spec.license = "MIT"

  spec.metadata = {
    "homepage_uri" => spec.homepage,
    "source_code_uri" => spec.homepage,
    "bug_tracker_uri" => "#{spec.homepage}/issues",
    "changelog_uri" => "#{spec.homepage}/blob/main/CHANGELOG.md",
    "documentation_uri" => "https://www.rubydoc.info/gems/loofah/",
  }

  spec.require_paths = ["lib"]
  Dir.chdir(File.expand_path("..", __FILE__)) do
    spec.files = [
      "CHANGELOG.md",
      "MIT-LICENSE.txt",
      "README.md",
      "SECURITY.md",
    ] + Dir.glob("lib/**/*.*")
  end

  spec.required_ruby_version = ">= 2.5.0"

  spec.add_dependency("crass", ["~> 1.0.2"])
  spec.add_dependency("nokogiri", [">= 1.12.0"])
end

Expected Behavior

I expect to be able to run bundle exec ... on projects that have not changed.

Actual Behavior

I regularly run CI against JRuby for almost all of the projects I maintain. Starting very recently, CI started failing on projects that have not changed with an error message like:

bundler: failed to load command: rake (/home/runner/work/mechanize/mechanize/vendor/bundle/jruby/3.1.0/bin/rake)
Gem::LoadError: You have already activated jar-dependencies 0.4.1, but your Gemfile requires jar-dependencies 0.[5](https://github.com/sparklemotion/mechanize/actions/runs/12195190964/job/34020371191#step:4:6).0. Since jar-dependencies is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports jar-dependencies as a default gem.

I'm able to bundle install without error, but bundle exec ... will raise this error.

Examples:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions