Show installed gem version during gem update, add CREW_RUBY_VER to gem json entry in install.sh . (#10605)

Signed-off-by: Satadru Pramanik <satadru@gmail.com>
This commit is contained in:
Satadru Pramanik, DO, MPH, MEng
2024-10-13 19:11:56 -04:00
committed by GitHub
parent c06b30fa1c
commit 83535dd853
4 changed files with 12 additions and 7 deletions

View File

@@ -274,13 +274,12 @@ function update_device_json () {
}
function install_ruby_gem () {
rubymajorversion=$(ruby -e "puts RUBY_VERSION.slice(/(?:.*(?=\.))/)")
for gem in "$@"; do
ruby_gem="${gem}"
echo_intra "Installing ${ruby_gem^} gem..."
gem install -N "${ruby_gem}" --conservative
gem_version="$(ruby -e "gem('${ruby_gem}')" -e "puts Gem.loaded_specs['${ruby_gem}'].version.to_s")"
json_gem_version="${gem_version}-ruby${rubymajorversion}"
json_gem_version="${gem_version}-${CREW_RUBY_VER}"
crew_gem_package="ruby_${ruby_gem//-/_}"
update_device_json "${crew_gem_package}" "${json_gem_version}" ""
gem_filelist_path="${CREW_META_PATH}/${crew_gem_package}.filelist"
@@ -334,10 +333,10 @@ echo "export CREW_PREFIX=${CREW_PREFIX}" >> "${CREW_PREFIX}/etc/env.d/profile"
echo_info 'Updating RubyGems...'
gem sources -u
gem update --no-update-sources -N --system
gem cleanup
# Mark packages as installed for pre-installed gems.
mapfile -t installed_gems < <(gem list | awk -F ' \(' '{print $1, $2}' | sed -e 's/default://' -e 's/)//' -e 's/,//' | awk '{print $1, $2}')
CREW_RUBY_VER="ruby$(ruby -e 'puts RUBY_VERSION.slice(/(?:.*(?=\.))/)')"
for i in "${!installed_gems[@]}"
do
j="${installed_gems[$i]}"
@@ -345,7 +344,7 @@ for i in "${!installed_gems[@]}"
crew_gem_package="ruby_${gem_package//-/_}"
gem_version="${j#* }"
gem contents "${gem_package}" > "${CREW_META_PATH}/${crew_gem_package}.filelist"
update_device_json "ruby_${gem_package//-/_}" "${gem_version}" ""
update_device_json "ruby_${gem_package//-/_}" "${gem_version}-${CREW_RUBY_VER}" ""
done
echo_info "Installing essential ruby gems...\n"
@@ -404,7 +403,9 @@ else
# Set mtimes of files to when the file was committed.
git-restore-mtime -sq 2>/dev/null
OWNER=${OWNER} REPO=${REPO} crew update
OWNER=${OWNER} REPO=${REPO} crew update && yes | crew upgrade
echo_info "Cleaning up older ruby gem versions...\n"
gem cleanup
fi
echo -e "${RESET}"

View File

@@ -63,6 +63,7 @@ def set_vars(passed_name = nil, passed_version = nil)
gem_test_name = gem_test.split.first
gem_test_versions = gem_test.split[1].split(',')
gem_test_versions.delete_if { |i| i.include?('beta') }
gem_test_versions.delete_if { |i| i.include?('pre') }
gem_test_version = gem_test_versions.max
@gem_name = gem_test_name.blank? ? Gem::SpecFetcher.fetcher.suggest_gems_from_name(passed_name.gsub(/^ruby_/, '')).first : gem_test_name
@remote_gem_ver = gem_test_name.blank? ? Gem.latest_version_for(@gem_name).to_s : gem_test_version
@@ -133,7 +134,9 @@ class RUBY < Package
Kernel.system "gem install --no-update-sources -N --local #{CREW_DEST_DIR}/#{@gem_name}-#{@gem_ver}-#{GEM_ARCH}.gem --conservative"
end
elsif gem_anyversion_installed
puts "Updating #{@gem_name} gem to #{@gem_ver}...".orange
installed_gem_info = [`gem list -l -e #{@gem_name}`.chomp.to_s].grep(/#{@gem_name}/)[0].delete('()').gsub('default:', '').split
@gem_installed_version = installed_gem_info[1]
puts "Updating #{@gem_name} gem to #{@gem_ver} from #{@gem_installed_version}...".orange
Kernel.system "gem update --no-update-sources -N #{@gem_name} --conservative"
else
puts "Installing #{@gem_name} gem #{@gem_ver}...".orange

View File

@@ -3,7 +3,7 @@
require 'etc'
OLD_CREW_VERSION ||= defined?(CREW_VERSION) ? CREW_VERSION : '1.0'
CREW_VERSION ||= '1.54.6' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
CREW_VERSION ||= '1.54.7' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
# Kernel architecture.
KERN_ARCH ||= Etc.uname[:machine]

View File

@@ -47,6 +47,7 @@ relevant_gem_packages.each_with_index do |package, index|
puts "#{untested_package_name} versions for #{gem_test_name} are #{gem_test.split[1].split(',')}" if CREW_VERBOSE
gem_test_versions = gem_test.split[1].split(',')
gem_test_versions.delete_if { |i| i.include?('beta') }
gem_test_versions.delete_if { |i| i.include?('pre') }
gem_test_version = gem_test_versions.max
puts "#{untested_package_name} is #{gem_test_name} version #{gem_test_version}".lightpurple if CREW_VERBOSE
gem_name = gem_test_name.blank? ? Gem::SpecFetcher.fetcher.suggest_gems_from_name(untested_package_name).first : gem_test_name