docker/platform_assertion.rb
Rama develop · réplica de lectura del repositorio original.
# frozen_string_literal: true
# Invariant: every installed gem is the ruby platform (built/generated
# locally) or a musl-native variant (*-linux-musl). Anything else is a
# foreign artifact: -gnu binaries can never load on musl, and legacy
# bare-Linux binaries (e.g. x86_64-linux) are glibc-linked yet still match
# the local platform.
def valid_platform?(platform)
platform == "ruby" || platform.end_with?("-linux-musl")
end
def platform_check_offenders(specs)
specs.reject { |spec| valid_platform?(spec.platform.to_s) }
.map { |spec| "#{spec.name} #{spec.version} #{spec.platform}" }
end
specs = Bundler.load.specs
offenders = platform_check_offenders(specs)
if offenders.empty?
puts "Platform assertion passed: #{specs.size} specs installed, all ruby or *-linux-musl"
else
warn "Platform assertion FAILED: #{offenders.size} gem(s) are neither ruby nor musl platform:"
offenders.sort.each { |offender| warn " #{offender}" }
exit 1
end