mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-07 22:54:11 -05:00
Do not reinstall from source on gem upgrades when a built gem is available. — py3_libxml2 → 2.15.1 (#13158)
* Do not reinstall from source on gem upgrades when a built gem is available. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Fix py3_libxml2 build. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Document changes in-line. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * libxml2: Package File Update Run on linux/386 container. * Allow def archive to overwrite output file. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * libxml2: Package File Update Run on linux/arm/v7 container. --------- Signed-off-by: Satadru Pramanik <satadru@gmail.com> Co-authored-by: chromebrew-actions[bot] <chromebrew-actions[bot]@users.noreply.github.com> Co-authored-by: satmandu <satmandu@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
a6683c95a8
commit
fc08f3c26c
@@ -21,6 +21,24 @@ def check_gem_binary_build_needed(ruby_gem_name = nil, ruby_gem_version = nil)
|
||||
return @build_needed
|
||||
end
|
||||
|
||||
def gem_info(ruby_gem_name = nil)
|
||||
# @ruby_gem_version comes from the set_vars function.
|
||||
installed_gem_search = [`gem list --no-update-sources -l -e #{ruby_gem_name}`.chomp.to_s].grep(/#{ruby_gem_name}/)[0]
|
||||
if installed_gem_search
|
||||
installed_gem_info = installed_gem_search.delete('()').gsub('default:', '').gsub(',', '').split
|
||||
@gem_installed_version = installed_gem_info[1]
|
||||
@gem_outdated = (Gem::Version.new(@ruby_gem_version) > Gem::Version.new(@gem_installed_version))
|
||||
@gem_latest_version_installed = Gem::Version.new(@ruby_gem_version) <= Gem::Version.new(@gem_installed_version)
|
||||
else
|
||||
# If the current gem being installed is not installed this should
|
||||
# be false. This will also handle cases of the current installed
|
||||
# gem as per 'gem list' being the same version as the version
|
||||
# being upgraded to.
|
||||
@gem_latest_version_installed = false
|
||||
end
|
||||
crewlog "@ruby_gem_version: #{@ruby_gem_version} gem_installed_version: #{@gem_installed_version} @gem_outdated: #{@gem_outdated} @gem_latest_version_installed: #{@gem_latest_version_installed}"
|
||||
end
|
||||
|
||||
def set_vars(passed_name = nil, passed_version = nil)
|
||||
# crewlog "Setting gem variables... name: #{passed_name}, version: #{passed_version}"
|
||||
# This assumes the package class name starts with 'Ruby_' and
|
||||
@@ -67,7 +85,12 @@ def set_vars(passed_name = nil, passed_version = nil)
|
||||
end
|
||||
|
||||
def save_gem_filelist(gem_name = nil, gem_filelist_path = nil)
|
||||
files = `gem install #{gem_name} &>/dev/null ; gem contents #{gem_name}`.chomp.split
|
||||
crewlog "@gem_latest_version_installed: #{@gem_latest_version_installed}"
|
||||
files = if @gem_latest_version_installed
|
||||
`gem contents #{gem_name}`.chomp.split
|
||||
else
|
||||
`gem install #{gem_name} &>/dev/null ; gem contents #{gem_name}`.chomp.split
|
||||
end
|
||||
exes = files.grep(%r{/exe/|/bin/})
|
||||
# Gem.bindir should end up being #{CREW_PREFIX}/bin.
|
||||
exes&.map! { |x| x.gsub(%r{^.*(/exe/|/bin/)}, "#{Gem.bindir}/") }
|
||||
@@ -97,14 +120,7 @@ class RUBY < Package
|
||||
set_vars(name, version)
|
||||
puts "Examining #{@ruby_gem_name} gem...".orange
|
||||
@gem_filelist_path = File.join(CREW_META_PATH, "#{name}.filelist")
|
||||
installed_gem_search = [`gem list -l -e #{@ruby_gem_name}`.chomp.to_s].grep(/#{@ruby_gem_name}/)[0]
|
||||
if installed_gem_search
|
||||
installed_gem_info = installed_gem_search.delete('()').gsub('default:', '').gsub(',', '').split
|
||||
@gem_installed_version = installed_gem_info[1]
|
||||
@gem_outdated = (Gem::Version.new(@ruby_gem_version) > Gem::Version.new(@gem_installed_version))
|
||||
@gem_latest_version_installed = Gem::Version.new(@ruby_gem_version) <= Gem::Version.new(@gem_installed_version)
|
||||
crewlog "@ruby_gem_version: #{@ruby_gem_version} @gem_installed_version: #{@gem_installed_version} @gem_outdated: #{@gem_outdated} @gem_latest_version_installed: #{@gem_latest_version_installed}"
|
||||
end
|
||||
gem_info(@ruby_gem_name)
|
||||
|
||||
# Create a filelist from the gem if the latest gem version is
|
||||
# installed.
|
||||
@@ -149,20 +165,7 @@ class RUBY < Package
|
||||
puts "#{@ruby_gem_name} #{@gem_installed_version} is properly installed.".lightgreen
|
||||
return
|
||||
end
|
||||
installed_gem_search = [`gem list --no-update-sources -l -e #{@ruby_gem_name}`.chomp.to_s].grep(/#{@ruby_gem_name}/)[0]
|
||||
if installed_gem_search
|
||||
installed_gem_info = installed_gem_search.delete('()').gsub('default:', '').gsub(',', '').split
|
||||
@gem_installed_version = installed_gem_info[1]
|
||||
@gem_outdated = (Gem::Version.new(@ruby_gem_version) > Gem::Version.new(@gem_installed_version))
|
||||
@gem_latest_version_installed = Gem::Version.new(@ruby_gem_version) <= Gem::Version.new(@gem_installed_version)
|
||||
crewlog "@ruby_gem_version: #{@ruby_gem_version} @gem_installed_version: #{@gem_installed_version} @gem_outdated: #{@gem_outdated} @gem_latest_version_installed: #{@gem_latest_version_installed}"
|
||||
else
|
||||
# If the current gem being installed is not installed this should
|
||||
# be false. This will also handle cases of the current installed
|
||||
# gem as per 'gem list' being the same version as the version
|
||||
# being upgraded to.
|
||||
@gem_latest_version_installed = false
|
||||
end
|
||||
gem_info(@ruby_gem_name)
|
||||
|
||||
crewlog "no_compile_needed?: #{no_compile_needed?} @gem_binary_build_needed.blank?: #{@gem_binary_build_needed.blank?}, gem_compile_needed?: #{gem_compile_needed?}"
|
||||
puts "#{@ruby_gem_name.capitalize} needs a binary gem built!".orange unless @gem_binary_build_needed.blank?
|
||||
@@ -181,6 +184,8 @@ class RUBY < Package
|
||||
puts "Installing #{@ruby_gem_name} gem #{@ruby_gem_version}...".orange
|
||||
Kernel.system "gem install --no-update-sources -N #{@ruby_gem_name} --conservative"
|
||||
end
|
||||
# Check gem versions again.
|
||||
gem_info(@ruby_gem_name)
|
||||
@gems_needing_cleanup = Array(@gems_needing_cleanup) << @ruby_gem_name unless @gem_latest_version_installed
|
||||
save_gem_filelist(@ruby_gem_name, @gem_filelist_path)
|
||||
@ruby_install_extras&.call
|
||||
|
||||
@@ -4,7 +4,7 @@ require 'etc'
|
||||
require 'open3'
|
||||
|
||||
OLD_CREW_VERSION ||= defined?(CREW_VERSION) ? CREW_VERSION : '1.0'
|
||||
CREW_VERSION ||= '1.67.7' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
|
||||
CREW_VERSION ||= '1.67.8' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
|
||||
|
||||
# Kernel architecture.
|
||||
KERN_ARCH ||= Etc.uname[:machine]
|
||||
|
||||
15
lib/fixup.rb
15
lib/fixup.rb
@@ -13,15 +13,16 @@ require_gem('highline')
|
||||
# All needed constants & variables should be defined here in case they
|
||||
# have not yet been loaded or fixup is being run standalone.
|
||||
|
||||
CREW_VERBOSE ||= ARGV.intersect?(%w[-v --verbose]) unless defined?(CREW_VERBOSE)
|
||||
CREW_UNATTENDED ||= ENV.fetch('CREW_UNATTENDED', false) unless defined?(CREW_UNATTENDED)
|
||||
CREW_VERBOSE ||= ARGV.intersect?(%w[-v --verbose]) unless defined?(CREW_VERBOSE)
|
||||
|
||||
CREW_PREFIX ||= '/usr/local'
|
||||
CREW_LIB_PATH ||= File.join(CREW_PREFIX, 'lib/crew')
|
||||
CREW_PREFIX ||= '/usr/local'
|
||||
CREW_LIB_PATH ||= File.join(CREW_PREFIX, 'lib/crew')
|
||||
|
||||
CREW_CONFIG_PATH ||= File.join(CREW_PREFIX, 'etc/crew')
|
||||
CREW_META_PATH ||= File.join(CREW_CONFIG_PATH, 'meta')
|
||||
CREW_REPO ||= ENV.fetch('CREW_REPO', 'https://github.com/chromebrew/chromebrew.git') unless defined?(CREW_REPO)
|
||||
CREW_BRANCH ||= ENV.fetch('CREW_BRANCH', 'master') unless defined?(CREW_BRANCH)
|
||||
CREW_META_PATH ||= File.join(CREW_CONFIG_PATH, 'meta')
|
||||
CREW_REPO ||= ENV.fetch('CREW_REPO', 'https://github.com/chromebrew/chromebrew.git') unless defined?(CREW_REPO)
|
||||
CREW_BRANCH ||= ENV.fetch('CREW_BRANCH', 'master') unless defined?(CREW_BRANCH)
|
||||
|
||||
load "#{CREW_LIB_PATH}/lib/const.rb"
|
||||
load "#{CREW_LIB_PATH}/lib/package.rb"
|
||||
@@ -277,7 +278,7 @@ if File.exist?("#{CREW_PREFIX}/bin/upx") && File.exist?("#{CREW_PREFIX}/bin/patc
|
||||
# errors on arm.
|
||||
# Running find twice because it involves less ruby overhead than saving
|
||||
# the output in memory, and also doing that in ruby is VERY SLOW.
|
||||
puts 'Please wait while upx is run to uncompress binaries...'.lightblue
|
||||
puts 'Please wait while upx is run to uncompress binaries...'.lightblue unless CREW_UNATTENDED
|
||||
Kernel.system "#{CREW_PREFIX}/bin/find #{CREW_PREFIX}/bin -type f -print0 | xargs -0 -P#{CREW_NPROC} -n1 -r bash -c 'header=$(head -c4 ${0}); elfheader='$(printf '\\\177ELF')' ; arheader=\\!\\<ar ; case $header in $elfheader|$arheader) upx -qq -d ${0} ;; esac'", %i[err] => File::NULL, exception: false
|
||||
|
||||
unless CREW_GLIBC_INTERPRETER.blank?
|
||||
|
||||
Reference in New Issue
Block a user