From 83535dd8536012c236303fd44b277b49a706378f Mon Sep 17 00:00:00 2001 From: "Satadru Pramanik, DO, MPH, MEng" Date: Sun, 13 Oct 2024 19:11:56 -0400 Subject: [PATCH] Show installed gem version during gem update, add CREW_RUBY_VER to gem json entry in install.sh . (#10605) Signed-off-by: Satadru Pramanik --- install.sh | 11 ++++++----- lib/buildsystems/ruby.rb | 5 ++++- lib/const.rb | 2 +- tools/update_ruby_gem_packages.rb | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index bc3c4350d..4170cab94 100755 --- a/install.sh +++ b/install.sh @@ -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}" diff --git a/lib/buildsystems/ruby.rb b/lib/buildsystems/ruby.rb index 54a4eb8d9..8fb0b2a15 100644 --- a/lib/buildsystems/ruby.rb +++ b/lib/buildsystems/ruby.rb @@ -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 diff --git a/lib/const.rb b/lib/const.rb index afdaabdf3..b2d84deb3 100644 --- a/lib/const.rb +++ b/lib/const.rb @@ -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] diff --git a/tools/update_ruby_gem_packages.rb b/tools/update_ruby_gem_packages.rb index 2f5994777..3758b0017 100755 --- a/tools/update_ruby_gem_packages.rb +++ b/tools/update_ruby_gem_packages.rb @@ -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