mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-09 15:37:56 -05:00
Ruby gem install adjustments. (#10580)
Signed-off-by: Satadru Pramanik <satadru@gmail.com>
This commit is contained in:
committed by
GitHub
parent
a4394867e1
commit
8a99729ed0
@@ -41,10 +41,10 @@ def set_vars(passed_name = nil, passed_version = nil)
|
||||
# This assumes the package class name starts with 'Ruby_' and
|
||||
# version is in the form '(gem version)-ruby-(ruby version)'.
|
||||
# For example, name 'Ruby_awesome' and version '1.0.0-ruby-3.3'.
|
||||
gem_name_test = passed_name.gsub(/^ruby_/, '')
|
||||
@remote_gem_ver = Gem.latest_version_for(gem_name_test).to_s
|
||||
@remote_gem_ver = Gem.latest_version_for(gem_name_test.gsub!('_', '-')).to_s if @remote_gem_ver.empty?
|
||||
@gem_name = gem_name_test
|
||||
# Just use the fetcher.suggest_gems_from_name function to figure out
|
||||
# proper gem name with the appropriate dashes and underscores.
|
||||
@gem_name = Gem::SpecFetcher.fetcher.suggest_gems_from_name(passed_name.gsub(/^ruby_/, '')).first
|
||||
@remote_gem_ver = Gem.latest_version_for(@gem_name).to_s
|
||||
@gem_ver = passed_version.split('-').first.to_s
|
||||
@gem_package_ver = @gem_ver.dup
|
||||
# Use latest gem version.
|
||||
@@ -58,25 +58,14 @@ class RUBY < Package
|
||||
|
||||
def self.preflight
|
||||
@install_gem ||= true
|
||||
@force_gem_build ||= false
|
||||
set_vars(name, version)
|
||||
puts "Examining #{@gem_name} gem...".orange
|
||||
@gem_filelist_path = File.join(CREW_META_PATH, "#{name}.filelist")
|
||||
@gem_latest_version_installed = Kernel.system "gem list -i \"^#{@gem_name}\$\" -v #{@gem_ver}", %i[out err] => File::NULL
|
||||
@gem_latest_version_installed = Kernel.system "gem search -l -i \"^#{@gem_name}\$\" -v #{@gem_ver}", %i[out err] => File::NULL
|
||||
crewlog "preflight: @gem_name: #{@gem_name}, @gem_ver: #{@gem_ver}, @gem_latest_version_installed: #{@gem_latest_version_installed} && @remote_gem_ver.to_s: #{Gem::Version.new(@remote_gem_ver.to_s)} == Gem::Version.new(@gem_ver): #{Gem::Version.new(@gem_ver)} && File.file?(@gem_filelist_path): #{File.file?(@gem_filelist_path)}"
|
||||
# Create a filelist from the gem if the latest gem version is
|
||||
# installed but the filelist doesn't exist.
|
||||
if @gem_latest_version_installed && !File.file?(@gem_filelist_path)
|
||||
# Verify gem is installed before trying to get files from the gem...
|
||||
begin
|
||||
gem @gem_name
|
||||
rescue LoadError
|
||||
puts " -> install #{@gem_name} gem".orange
|
||||
Gem.install(@gem_name)
|
||||
gem @gem_name
|
||||
end
|
||||
system "gem contents #{@gem_name} > #{@gem_filelist_path}"
|
||||
end
|
||||
Kernel.system "gem contents #{@gem_name}", %i[out] => [@gem_filelist_path, 'w'] if @gem_latest_version_installed && !File.file?(@gem_filelist_path)
|
||||
# If the version number gem reports isn't the same as the version
|
||||
# number that Chromebrew has recorded, force an install.
|
||||
# Otherwise we can skip the install and bail.
|
||||
@@ -104,7 +93,7 @@ class RUBY < Package
|
||||
end
|
||||
|
||||
def self.install
|
||||
gem_anyversion_installed = Kernel.system "gem list -i \"^#{@gem_name}\$\"", %i[out err] => File::NULL
|
||||
gem_anyversion_installed = Kernel.system "gem search -l -i \"^#{@gem_name}\$\"", %i[out err] => File::NULL
|
||||
crewlog "install: @gem_name: #{@gem_name}, @gem_ver: #{@gem_ver}, !@gem_latest_version_installed && gem_anyversion_installed: #{!@gem_latest_version_installed && gem_anyversion_installed}, @gem_latest_version_installed: #{@gem_latest_version_installed} && @remote_gem_ver.to_s: #{Gem::Version.new(@remote_gem_ver.to_s)} == Gem::Version.new(@gem_ver): #{Gem::Version.new(@gem_ver)} && File.file?(@gem_filelist_path): #{File.file?(@gem_filelist_path)}"
|
||||
crewlog "no_compile_needed?: #{no_compile_needed?} @gem_binary_build_needed.blank?: #{@gem_binary_build_needed.blank?}, gem_compile_needed?: #{gem_compile_needed?}"
|
||||
unless @install_gem
|
||||
@@ -123,13 +112,13 @@ class RUBY < Package
|
||||
end
|
||||
elsif gem_anyversion_installed
|
||||
puts "Updating #{@gem_name} gem to #{@gem_ver}...".orange
|
||||
system "gem update -N #{@gem_name} --conservative"
|
||||
Kernel.system "gem update -N #{@gem_name} --conservative"
|
||||
else
|
||||
puts "Installing #{@gem_name} gem #{@gem_ver}...".orange
|
||||
system "gem install -N #{@gem_name} --conservative"
|
||||
Kernel.system "gem install -N #{@gem_name} --conservative"
|
||||
end
|
||||
system "gem cleanup #{@gem_name}"
|
||||
system "gem contents #{@gem_name} > #{@gem_filelist_path}"
|
||||
@gems_needing_cleanup = Array(@gems_needing_cleanup) << @gem_name
|
||||
Kernel.system "gem contents #{@gem_name}", %i[out] => [@gem_filelist_path, 'w']
|
||||
@ruby_install_extras&.call
|
||||
@install_gem = false
|
||||
@just_built_gem = false
|
||||
|
||||
Reference in New Issue
Block a user