Skip to content

Commit

Permalink
fix jars installer for new maven and pin psych to 5.2.2 (#16920)
Browse files Browse the repository at this point in the history
8.x backport of #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: jruby/jruby#8579
  • Loading branch information
jsvd authored Jan 22, 2025
1 parent 5b9e23c commit 5063d8a
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Gemfile.template
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,5 @@ gem "logstash-output-stdout", "~> 3.1", :require => false
gem "logstash-output-tcp", "~> 6.2", :require => false
gem "logstash-output-udp", "~> 3.2", :require => false
gem "logstash-output-webhdfs", "~> 3.1", :require => false

gem "psych", "5.2.2"
2 changes: 2 additions & 0 deletions lib/bootstrap/bundler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
# specific language governing permissions and limitations
# under the License.

require_relative './patches/jar_dependencies'

module LogStash
module Bundler
extend self
Expand Down
28 changes: 27 additions & 1 deletion lib/bootstrap/patches/jar_dependencies.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,37 @@ 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
end
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

0 comments on commit 5063d8a

Please sign in to comment.