mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-08 23:18:10 -05:00
* Ruby => 3.4.0, and remove old kernel workarounds. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Add built packages for linux/386 to ruby * Add built packages for linux/amd64 to ruby * Add built packages for linux/arm/v7 to ruby * dep adjustment for Ruby 3.4 Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Add gem adjustment for ruby 3.4. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Update ruby gems deps. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Adjust ruby_resolv_replace requirements. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Update rubygems package name. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Add repl_type_completor package. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Update ruby => 3.4.1 Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Adjust build to prevent breakage. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Adjust build workflow script. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Add workaround for broken rubocop from ruby upgrade. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Handle case of gem compiler not being installed. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Add built packages for linux/386 to ruby * Add built packages for linux/amd64 to ruby * Add built packages for linux/arm/v7 to ruby * Update lib/downloader.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update packages/ruby_repl_type_completor.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update tools/build_updated_packages.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update packages/ruby_repl_type_completor.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update tools/build_updated_packages.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add broken rake invocation workaround. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Update Rubygems. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Update gems and fix gem updater to account for rubygems.org/versions appending updates during the month to the bottom of the file. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Sync up logic in buildsystems/ruby.rb and tools/update_ruby_gem_packages.rb Signed-off-by: Satadru Pramanik <satadru@gmail.com> --------- Signed-off-by: Satadru Pramanik <satadru@gmail.com> Co-authored-by: Satadru Pramanik <satadru@gmail.com> Co-authored-by: satmandu <satmandu@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
79 lines
3.7 KiB
Ruby
Executable File
79 lines
3.7 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# update_ruby_gem_packages version 1.9 (for Chromebrew)
|
|
# Author: Satadru Pramanik (satmandu) satadru at gmail dot com
|
|
# Usage in root of cloned chromebrew repo:
|
|
# tools/update_ruby_gem_packages.rb
|
|
|
|
# Add >LOCAL< lib to LOAD_PATH
|
|
$LOAD_PATH.unshift '../lib'
|
|
require_relative '../lib/color'
|
|
require_relative '../lib/gem_compact_index_client'
|
|
CREW_NPROC = `nproc`.chomp
|
|
CREW_RUBY_VER = "ruby#{RUBY_VERSION.slice(/(?:.*(?=\.))/)}"
|
|
CREW_VERBOSE = false
|
|
|
|
def require_gem(gem_name_and_require = nil, require_override = nil)
|
|
# Allow only loading gems when needed.
|
|
return if gem_name_and_require.nil?
|
|
|
|
gem_name = gem_name_and_require.split('/')[0]
|
|
begin
|
|
gem gem_name
|
|
rescue LoadError
|
|
puts " -> install #{gem_name} gem".orange
|
|
Gem.install(gem_name)
|
|
gem gem_name
|
|
end
|
|
requires = if require_override.nil?
|
|
gem_name_and_require.split('/')[1].nil? ? gem_name_and_require.split('/')[0] : gem_name_and_require
|
|
else
|
|
require_override
|
|
end
|
|
require requires
|
|
end
|
|
require_gem('activesupport', 'active_support/core_ext/object/blank')
|
|
require_gem 'concurrent-ruby'
|
|
|
|
gems ||= BasicCompactIndexClient.new.gems
|
|
|
|
pool = Concurrent::ThreadPoolExecutor.new(
|
|
min_threads: 1,
|
|
max_threads: CREW_NPROC.to_i + 1,
|
|
max_queue: 0, # unbounded work queue
|
|
fallback_policy: :caller_runs
|
|
)
|
|
relevant_gem_packages = Dir['packages/ruby_*.rb']
|
|
total_files_to_check = relevant_gem_packages.length
|
|
numlength = total_files_to_check.to_s.length
|
|
relevant_gem_packages.each_with_index do |package, index|
|
|
pool.post do
|
|
untested_package_name = package.gsub(%r{^packages/ruby_}, '').gsub(/.rb$/, '')
|
|
gem_test = gems.grep(/#{"^#{untested_package_name}\\s.*$"}/).last.blank? ? gems.grep(/#{"^#{untested_package_name.gsub('_', '-')}\\s.*$"}/).last : gems.grep(/#{"^#{untested_package_name}\\s.*$"}/).last
|
|
gem_test_name = gem_test.split.first
|
|
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(',')
|
|
# Any version with a letter is considered a prerelease as per
|
|
# https://github.com/rubygems/rubygems/blob/b5798efd348935634d4e0e2b846d4f455582db48/lib/rubygems/version.rb#L305
|
|
gem_test_versions.delete_if { |i| i.match?(/[a-zA-Z]/) }
|
|
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
|
|
gem_version = gem_test_name.blank? ? Gem.latest_version_for(untested_package_name).to_s : gem_test_version
|
|
|
|
puts "[#{(index + 1).to_s.rjust(numlength)}/#{total_files_to_check}] Checking rubygems for updates to #{gem_name} in #{package}...".orange
|
|
pkg_version = `sed -n -e 's/^\ \ version //p' #{package}`.chomp.delete("'").delete('"').gsub(/-\#{CREW_RUBY_VER}/, '').split('-').first
|
|
next package if gem_version.blank?
|
|
if Gem::Version.new(gem_version) > Gem::Version.new(pkg_version)
|
|
puts "Updating #{gem_name} from #{pkg_version} to #{gem_version}".lightblue
|
|
system "sed -i \"s,^\ \ version\ .*,\ \ version \\\"#{gem_version}-\#{CREW_RUBY_VER}\\\",\" #{package}"
|
|
end
|
|
relevant_gem_packages.delete(package)
|
|
end
|
|
end
|
|
pool.shutdown
|
|
pool.wait_for_termination
|
|
puts "Done checking for updates to #{total_files_to_check} ruby gems.\r".orange
|
|
return if relevant_gem_packages.blank?
|
|
|
|
puts "Updated version#{relevant_gem_packages.length > 1 ? 's were' : ' was'} could not be found for: #{relevant_gem_packages.map { |i| i.gsub('.rb', '').sub('ruby_', '').gsub('_', '-').gsub('packages/', '') }.join(' ')}".orange
|