diagnostic: check kernel, glibc versions [Linux]

This commit is contained in:
Jonathan Chang 2019-01-01 15:51:32 -08:00
parent 03597404af
commit 76d7b586ce
2 changed files with 46 additions and 0 deletions

View File

@ -1,6 +1,8 @@
require "tempfile"
require "utils/shell"
require "os/linux/diagnostic"
require "os/linux/glibc"
require "os/linux/kernel"
module Homebrew
module Diagnostic
@ -59,6 +61,33 @@ module Homebrew
echo 'umask 002' >> #{shell_profile}
EOS
end
def check_glibc_minimum_version
return unless OS::Linux::Glibc.below_minimum_version?
<<~EOS
Your system glibc #{OS::Linux::Glibc.system_version} is too old.
We only support glibc #{OS::Linux::Glibc.minimum_version} or later.
#{please_create_pull_requests}
We recommend updating to a newer version via your distribution's
package manager, upgrading your distribution to the latest version,
or changing distributions.
EOS
end
def check_kernel_minimum_version
return unless OS::Linux::Kernel.below_minimum_version?
<<~EOS
Your Linux kernel #{OS::Linux::Kernel.version} is too old.
We only support kernel #{OS::Linux::Kernel.minimum_version} or later.
You will be unable to use binary packages (bottles).
#{please_create_pull_requests}
We recommend updating to a newer version via your distribution's
package manager, upgrading your distribution to the latest version,
or changing distributions.
EOS
end
end
end
end

View File

@ -0,0 +1,17 @@
require "diagnostic"
describe Homebrew::Diagnostic::Checks do
specify "#check_glibc_minimum_version" do
allow(OS::Linux::Glibc).to receive(:below_minimum_version?).and_return(true)
expect(subject.check_glibc_minimum_version)
.to match(/Your system glibc .+ is too old/)
end
specify "#check_kernel_minimum_version" do
allow(OS::Linux::Kernel).to receive(:below_minimum_version?).and_return(true)
expect(subject.check_kernel_minimum_version)
.to match(/Your Linux kernel .+ is too old/)
end
end