From 48c9dd020c599c31514bbab996941dd3b48d0c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Duarte?= Date: Wed, 22 Jan 2025 15:35:50 +0000 Subject: [PATCH] fix jars installer for new maven and pin psych to 5.2.2 (#16919) handle maven output that can carry "garbage" information after the jar's name. this patch deletes that extra information, also pins psych to 5.2.2 until jruby ships with snakeyaml-engine 2.9 and jar-dependencies 0.5.2 Related to: https://github.com/jruby/jruby/issues/8579 (cherry picked from commit 52b7fb0ae6709df83625d5e72d4c6c5678950025) --- Gemfile.template | 1 + lib/bootstrap/bundler.rb | 3 +++ lib/bootstrap/patches/jar_dependencies.rb | 28 ++++++++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Gemfile.template b/Gemfile.template index e810b45370b..bc2c7a7d394 100644 --- a/Gemfile.template +++ b/Gemfile.template @@ -43,3 +43,4 @@ gem "murmurhash3", "= 0.1.6" # Pins until version 0.1.7-java is released gem "date", "= 3.3.3" gem "thwait" gem "bigdecimal", "~> 3.1" +gem "psych", "5.2.2" diff --git a/lib/bootstrap/bundler.rb b/lib/bootstrap/bundler.rb index 3252220212b..f02f92c0387 100644 --- a/lib/bootstrap/bundler.rb +++ b/lib/bootstrap/bundler.rb @@ -15,6 +15,9 @@ # specific language governing permissions and limitations # under the License. +# work around https://github.com/jruby/jruby/issues/8579 +require_relative './patches/jar_dependencies' + module LogStash module Bundler extend self diff --git a/lib/bootstrap/patches/jar_dependencies.rb b/lib/bootstrap/patches/jar_dependencies.rb index d83cbf3d943..0aaa4694162 100644 --- a/lib/bootstrap/patches/jar_dependencies.rb +++ b/lib/bootstrap/patches/jar_dependencies.rb @@ -21,7 +21,7 @@ def require_jar(*args) return nil unless Jars.require? result = Jars.require_jar(*args) if result.is_a? String - # JAR_DEBUG=1 will now show theses + # JARS_VERBOSE=true will show these Jars.debug { "--- jar coordinate #{args[0..-2].join(':')} already loaded with version #{result} - omit version #{args[-1]}" } Jars.debug { " try to load from #{caller.join("\n\t")}" } return false @@ -29,3 +29,29 @@ def require_jar(*args) Jars.debug { " register #{args.inspect} - #{result == true}" } result end + +# work around https://github.com/jruby/jruby/issues/8579 +# the ruby maven 3.9.3 + maven-libs 3.9.9 gems will output unnecessary text we need to trim down during `load_from_maven` +# remove everything from "--" until the end of the line +# the `[...-5]` is just to remove the color changing characters from the end of the string that exist before "--" +require 'jars/installer' + +class ::Jars::Installer + def self.load_from_maven(file) + Jars.debug { "[load_from_maven] called with arguments: #{file.inspect}" } + result = [] + ::File.read(file).each_line do |line| + if line.match?(/ --/) + Jars.debug { "[load_from_maven] line: #{line.inspect}" } + fixed_line = line.strip.gsub(/ --.+?$/, "")[0...-5] + Jars.debug { "[load_from_maven] fixed_line: #{fixed_line.inspect}" } + dep = ::Jars::Installer::Dependency.new(fixed_line) + else + dep = ::Jars::Installer::Dependency.new(line) + end + result << dep if dep && dep.scope == :runtime + end + Jars.debug { "[load_from_maven] returned: #{result.inspect}" } + result + end +end