mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
72 lines
2.2 KiB
Ruby
72 lines
2.2 KiB
Ruby
![]() |
# Copyright 2009 Max Howell and other contributors.
|
||
|
#
|
||
|
# Redistribution and use in source and binary forms, with or without
|
||
|
# modification, are permitted provided that the following conditions
|
||
|
# are met:
|
||
|
#
|
||
|
# 1. Redistributions of source code must retain the above copyright
|
||
|
# notice, this list of conditions and the following disclaimer.
|
||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||
|
# notice, this list of conditions and the following disclaimer in the
|
||
|
# documentation and/or other materials provided with the distribution.
|
||
|
#
|
||
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||
|
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||
|
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||
|
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||
|
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||
|
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||
|
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
#
|
||
|
|
||
|
class Hardware
|
||
|
# These methods use info spewed out by sysctl.
|
||
|
# Look in <mach/machine.h> for decoding info.
|
||
|
|
||
|
def self.cpu_type
|
||
|
@@cpu_type ||= `/usr/sbin/sysctl -n hw.cputype`.to_i
|
||
|
|
||
|
case @@cpu_type
|
||
|
when 7
|
||
|
:intel
|
||
|
when 18
|
||
|
:ppc
|
||
|
else
|
||
|
:dunno
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def self.intel_family
|
||
|
@@intel_family ||= `/usr/sbin/sysctl -n hw.cpufamily`.to_i
|
||
|
|
||
|
case @@intel_family
|
||
|
when 0x73d67300 # Yonah: Core Solo/Duo
|
||
|
:core
|
||
|
when 0x426f69ef # Merom: Core 2 Duo
|
||
|
:core2
|
||
|
when 0x78ea4fbc # Penryn
|
||
|
:penryn
|
||
|
when 0x6b5a4cd2 # Nehalem
|
||
|
:nehalem
|
||
|
else
|
||
|
:dunno
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def self.processor_count
|
||
|
@@processor_count ||= `/usr/sbin/sysctl -n hw.ncpu`.to_i
|
||
|
end
|
||
|
|
||
|
protected
|
||
|
def self.sysctl_bool(property)
|
||
|
result = nil
|
||
|
IO.popen("/usr/sbin/sysctl -n #{property} 2>/dev/null") do |f|
|
||
|
result = f.gets.to_i # should be 0 or 1
|
||
|
end
|
||
|
$?.success? && result == 1 # sysctl call succeded and printed 1
|
||
|
end
|
||
|
end
|