sys-cpu 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,4 +1,12 @@
1
- == 0.6.2 - ???
1
+ == 0.6.3 - 9-Oct-2010
2
+ * Fixed a bug in the install.rb file and refactored it a bit. Thanks go
3
+ to Di-an Jan for the spot. Note, however, that this file will eventually
4
+ be removed and/or integrated into the Linux source file.
5
+ * Fixed the example Rake task, and refactored some of the other tasks.
6
+ * Fixed and updated the CPU.architecture method on MS Windows to handle IA64
7
+ and x64 architectures.
8
+
9
+ == 0.6.2 - 1-Jan-2010
2
10
  * Fixed a bug in the cpu_freq function (which would only be noticed on
3
11
  certain platforms in cases where the CPU.freq method failed). Thanks
4
12
  go to Edho P Arief for the spot.
data/MANIFEST CHANGED
@@ -19,8 +19,8 @@
19
19
  * ext/bsd/bsd.c
20
20
  * ext/hpux/hpux.c
21
21
  * ext/sunos/sunos.c
22
- * lib/sys/linux.rb
23
- * lib/sys/windows.rb
22
+ * lib/linux/sys/cpu.rb
23
+ * lib/windows/sys/cpu.rb
24
24
  * test/test_sys_cpu.rb
25
25
  * test/test_sys_cpu_bsd.rb
26
26
  * test/test_sys_cpu_hpux.rb
data/README CHANGED
@@ -1,79 +1,76 @@
1
- == Description
1
+ = Description
2
2
  A Ruby interface for getting cpu information.
3
3
 
4
- == Installation
5
- gem install sys-cpu
6
- gem install sys-cpu --platform mswin32 # MS Windows
4
+ = Installation
5
+ gem install sys-cpu
6
+ gem install sys-cpu --platform mswin32 # MS Windows
7
7
 
8
- == Notes
9
- === All Platforms
10
- As of version 0.5.0 Ruby 1.8.0 or later is required. It may work with
11
- earlier versions, but I will not support it.
12
-
13
- I do not support any Ruby 1.8.x branch after 1.8.6. It should work on those
14
- versions of Ruby but if it breaks I'm not going to go out of my way to fix
15
- it. I will, however, support the 1.9.x/2.x branch.
8
+ = Notes
9
+ == All Platforms
10
+ I do not support any Ruby 1.8.x branch after 1.8.6. It should work on those
11
+ versions of Ruby but if it breaks I'm not going to go out of my way to fix
12
+ it. I will, however, support the 1.9.x/2.x branch.
16
13
 
17
- === Solaris
18
- Currently there is no 'processors()' iterative method for multi-cpu systems.
19
- I plan to add it this in a future release.
14
+ == Solaris
15
+ Currently there is no 'processors()' iterative method for multi-cpu systems.
16
+ I plan to add it this in a future release.
20
17
 
21
- === OS X
22
- The CPU.freq method is not supported at the moment. The sysctl() approach
23
- returns a bogus, hard coded value of some sort. I suspect it's possible
24
- by using kernel modules via kldload(), but I'm not sure how yet.
18
+ == OS X
19
+ The CPU.freq method is not supported at the moment. The sysctl() approach
20
+ returns a bogus, hard coded value of some sort. I suspect it's possible
21
+ by using kernel modules via kldload(), but I'm not sure how yet.
25
22
 
26
- === Linux
27
- This is pure Ruby. This version reads information out of /proc/cpuinfo and
28
- /proc/loadavg, so if /proc isn't mounted it won't work.
23
+ == Linux
24
+ This is pure Ruby. This version reads information out of /proc/cpuinfo and
25
+ /proc/loadavg, so if /proc isn't mounted it won't work.
29
26
 
30
- The key-value information in /proc/cpuinfo is stored internally (i.e. in
31
- memory) as an array of hashes when you first 'require' this package. This
32
- overhead is exceptionally minimal, given that your average cpuinfo file
33
- contains less than 1k of text (and I don't store whitespace or newlines).
27
+ The key-value information in /proc/cpuinfo is stored internally (i.e. in
28
+ memory) as an array of hashes when you first 'require' this package. This
29
+ overhead is exceptionally minimal, given that your average cpuinfo file
30
+ contains less than 1k of text (and I don't store whitespace or newlines).
34
31
 
35
- The text documentation for Linux is dynamically generated during the
36
- build process because the fields vary depending on your setup. So, don't
37
- look at it until *after* you've installed it. You will see a doc/linux.txt
38
- file after you run 'rake install' (via install.rb).
32
+ The text documentation for Linux is dynamically generated during the
33
+ build process because the fields vary depending on your setup. So, don't
34
+ look at it until *after* you've installed it. You will see a doc/linux.txt
35
+ file after you run 'rake install' (via install.rb).
39
36
 
40
- === HP-UX
41
- Unlike other platforms, you can get load averages for an individual cpu in
42
- multi-cpu systems. See documentation for more details.
37
+ == HP-UX
38
+ Unlike other platforms, you can get load averages for an individual cpu in
39
+ multi-cpu systems. See documentation for more details.
43
40
 
44
- === MS Windows
45
- This is a pure Ruby implementation using the win32ole package + WMI. The C
46
- version has been scrapped.
41
+ == MS Windows
42
+ This is a pure Ruby implementation using the win32ole package + WMI. The C
43
+ version has been scrapped.
47
44
 
48
- As of version 0.5.0, the CPU.usage method has been removed in favor of the
49
- CPU.load_avg method. This does not (currently) use a perf counter, so there
50
- is no longer any delay. Also, the 'processors' method has been
51
- added and the 'supported' method has been dropped. See the documentation
52
- for other changes.
45
+ As of version 0.5.0, the CPU.usage method has been removed in favor of the
46
+ CPU.load_avg method. This does not (currently) use a perf counter, so there
47
+ is no longer any delay. Also, the 'processors' method has been
48
+ added and the 'supported' method has been dropped. See the documentation
49
+ for other changes.
53
50
 
54
- == Acknowledgements
55
- Thanks go to the MPlayer team for some source code that helped me on
56
- certain versions of FreeBSD.
51
+ = Acknowledgements
52
+ Thanks go to the MPlayer team for some source code that helped me on
53
+ certain versions of FreeBSD.
57
54
 
58
- == Known Bugs
59
- None that I'm aware of. Please report bugs on the project page at
60
- http://www.rubyforge.org/projects/sysutils.
55
+ = Known Bugs
56
+ None that I'm aware of. Please report bugs on the project page at
57
+ http://www.rubyforge.org/projects/sysutils.
61
58
 
62
- == Future Plans
63
- Add iterative CPU.processors method.
64
- Make CPU.freq work on OS X.
65
- Add more information in general, such as what 'prtdiag' shows.
59
+ = Future Plans
60
+ Add iterative CPU.processors method.
61
+ Make CPU.freq work on OS X.
62
+ Add more information in general, such as what 'prtdiag' shows.
66
63
 
67
- == License
68
- Artistic 2.0
64
+ = License
65
+ Artistic 2.0
69
66
 
70
- == Copyright
71
- (C) 2003-2009 Daniel J. Berger, All Rights Reserved
67
+ = Copyright
68
+ (C) 2003-2009 Daniel J. Berger, All Rights Reserved
72
69
 
73
- == Warranty
74
- This package is provided "as is" and without any express or
75
- implied warranties, including, without limitation, the implied
76
- warranties of merchantability and fitness for a particular purpose.
70
+ = Warranty
71
+ This package is provided "as is" and without any express or
72
+ implied warranties, including, without limitation, the implied
73
+ warranties of merchantability and fitness for a particular purpose.
77
74
 
78
- == Author
79
- Daniel J. Berger
75
+ = Author
76
+ Daniel J. Berger
data/Rakefile CHANGED
@@ -3,50 +3,50 @@ require 'rake/clean'
3
3
  require 'rake/testtask'
4
4
  require 'rbconfig'
5
5
 
6
- desc "Clean the build files for the sys-cpu source for UNIX systems"
7
- task :clean do
8
- FileUtils.rm_rf('sys') if File.exists?('sys')
9
- FileUtils.rm_rf('lib/sys/cpu.rb') if File.exists?('lib/sys/cpu.rb')
10
- Dir.chdir('ext') do
11
- unless Config::CONFIG['host_os'] =~ /mswin|win32|mingw|cygwin|dos|linux/i
12
- FileUtils.rm_rf('sys') if File.exists?('sys')
13
- FileUtils.rm_rf('cpu.c') if File.exists?('cpu.c')
14
- build_file = 'cpu.' + Config::CONFIG['DLEXT']
15
- sh 'make distclean' if File.exists?(build_file)
6
+ namespace 'C' do
7
+ desc "Clean the build files for the sys-cpu source for UNIX systems"
8
+ task :clean do
9
+ Dir["*.gem"].each{ |f| File.delete(f) }
10
+
11
+ rm_rf('sys') if File.exists?('sys')
12
+ rm_rf('lib/sys/cpu.rb') if File.exists?('lib/sys/cpu.rb')
13
+
14
+ Dir.chdir('ext') do
15
+ unless Config::CONFIG['host_os'] =~ /mswin|win32|mingw|cygwin|dos|linux/i
16
+ rm_rf('conftest.dSYM') if File.exists?('conftest.dSYM') # OS X
17
+ rm_rf('sys') if File.exists?('sys')
18
+ rm_rf('cpu.c') if File.exists?('cpu.c')
19
+ build_file = 'cpu.' + Config::CONFIG['DLEXT']
20
+ sh 'make distclean' if File.exists?(build_file)
21
+ end
16
22
  end
17
23
  end
18
- end
19
24
 
20
- desc "Build the sys-cpu library on UNIX systems (but don't install it)"
21
- task :build => [:clean] do
22
- Dir.chdir('ext') do
23
- unless Config::CONFIG['host_os'] =~ /mswin|win32|mingw|cygwin|dos|linux/i
24
- ruby 'extconf.rb'
25
- sh 'make'
26
- build_file = 'cpu.' + Config::CONFIG['DLEXT']
27
- Dir.mkdir('sys') unless File.exists?('sys')
28
- FileUtils.cp(build_file, 'sys')
25
+ desc "Build the sys-cpu library on UNIX systems"
26
+ task :build => [:clean] do
27
+ Dir.chdir('ext') do
28
+ unless Config::CONFIG['host_os'] =~ /mswin|win32|mingw|cygwin|dos|linux/i
29
+ ruby 'extconf.rb'
30
+ sh 'make'
31
+ build_file = 'cpu.' + Config::CONFIG['DLEXT']
32
+ Dir.mkdir('sys') unless File.exists?('sys')
33
+ FileUtils.cp(build_file, 'sys')
34
+ end
29
35
  end
30
36
  end
31
37
  end
32
38
 
33
- desc "Build the gem."
34
- task :gem do
35
- spec = eval(IO.read('sys-cpu.gemspec'))
36
- Gem::Builder.new(spec).build
37
- end
38
-
39
- if Config::CONFIG['host_os'] =~ /mswin|win32|mingw|cygwin|dos|linux/i
40
- desc "Install the sys-cpu library"
41
- task :install do
42
- sh 'ruby install.rb'
39
+ namespace 'gem' do
40
+ desc "Create the sys-cpu gem"
41
+ task :create => ['C:clean'] do
42
+ spec = eval(IO.read('sys-cpu.gemspec'))
43
+ Gem::Builder.new(spec).build
43
44
  end
44
- else
45
- desc "Install the sys-cpu library"
46
- task :install => [:build] do
47
- Dir.chdir('ext') do
48
- sh 'make install'
49
- end
45
+
46
+ desc "Install the sys-cpu gem"
47
+ task :install => [:create] do
48
+ file = Dir["*.gem"].first
49
+ sh "gem install #{file}"
50
50
  end
51
51
  end
52
52
 
@@ -55,26 +55,26 @@ task :example => [:build] do
55
55
  Dir.mkdir('sys') unless File.exists?('sys')
56
56
  if Config::CONFIG['host_os'] =~ /mswin|win32|mingw|cygwin|dos|linux/i
57
57
  if Config::CONFIG['host_os'].match('linux')
58
- FileUtils.cp('lib/sys/linux.rb', 'sys/cpu.rb')
58
+ cp 'lib/linux/sys/cpu.rb', 'sys'
59
59
  else
60
- FileUtils.cp('lib/sys/windows.rb', 'sys/cpu.rb')
60
+ cp 'lib/windows/sys/cpu.rb', 'sys'
61
61
  end
62
62
  else
63
63
  build_file = 'ext/cpu.' + Config::CONFIG['DLEXT']
64
- FileUtils.cp(build_file, 'sys')
64
+ cp build_file, 'sys'
65
65
  end
66
66
 
67
67
  case Config::CONFIG['host_os']
68
68
  when /bsd|darwin|mach|osx/i
69
- file = 'examples/test_cpu_bsd.rb'
69
+ file = 'examples/example_sys_cpu_bsd.rb'
70
70
  when /hpux/i
71
- file = 'examples/test_cpu_hpux.rb'
71
+ file = 'examples/example_sys_cpu_hpux.rb'
72
72
  when /linux/i
73
- file = 'examples/test_cpu_linux.rb'
73
+ file = 'examples/example_sys_cpu_linux.rb'
74
74
  when /sunos|solaris/i
75
- file = 'examples/test_cpu_sunos.rb'
75
+ file = 'examples/example_sys_cpu_sunos.rb'
76
76
  when /mswin|win32|cygwin|mingw|dos/i
77
- file = 'examples/test_cpu_windows.rb'
77
+ file = 'examples/example_sys_cpu_windows.rb'
78
78
  end
79
79
  sh "ruby -I. -Iext -Ilib #{file}"
80
80
  end
@@ -85,7 +85,7 @@ Rake::TestTask.new do |t|
85
85
  elsif Config::CONFIG['host_os'] =~ /linux/i
86
86
  t.libs << 'lib/linux'
87
87
  else
88
- task :test => :build
88
+ task :test => 'C:build'
89
89
  t.libs << 'ext'
90
90
  t.libs.delete('lib')
91
91
  end
@@ -93,3 +93,6 @@ Rake::TestTask.new do |t|
93
93
  t.libs << 'test'
94
94
  t.test_files = FileList['test/test_sys_cpu.rb']
95
95
  end
96
+
97
+ task :default => :test
98
+ task :clean => 'C:clean'
@@ -1,25 +1,24 @@
1
1
  #######################################################################
2
2
  # example_sys_cpu_linux.rb
3
3
  #
4
- # Sample cript for general futzing. You can run this code via the
4
+ # Sample cript for general futzing. You should run this code via the
5
5
  # 'rake example' task.
6
6
  #
7
7
  # Modify as you see fit.
8
8
  #######################################################################
9
9
  require "sys/cpu"
10
10
  require "pp"
11
- include Sys
12
11
 
13
- puts "VERSION: " + CPU::VERSION
12
+ puts "VERSION: " + Sys::CPU::VERSION
14
13
  puts "========"
15
14
 
16
- puts "Load Average: " + CPU.load_avg.join(", ")
15
+ puts "Load Average: " + Sys::CPU.load_avg.join(", ")
17
16
 
18
17
  puts "Processor Info:"
19
18
  puts "==============="
20
- pp CPU.processors
19
+ pp Sys::CPU.processors
21
20
 
22
21
  puts "CPU STATS:"
23
22
  puts "=========:"
24
23
 
25
- pp CPU.cpu_stats
24
+ pp Sys::CPU.cpu_stats
data/ext/bsd/bsd.c CHANGED
@@ -281,7 +281,7 @@ void Init_cpu()
281
281
  */
282
282
  cCPUError = rb_define_class_under(cCPU, "Error", rb_eStandardError);
283
283
 
284
- /* 0.6.2: The version of the sys-cpu library */
284
+ /* 0.6.3: The version of the sys-cpu library */
285
285
  rb_define_const(cCPU, "VERSION", rb_str_new2(SYS_CPU_VERSION));
286
286
 
287
287
  /* Class Methods */
data/ext/extconf.rb CHANGED
@@ -1,9 +1,10 @@
1
- require "mkmf"
2
- require "fileutils"
1
+ require 'mkmf'
2
+ require 'fileutils'
3
+ require 'rbconfig'
3
4
 
4
5
  File.delete('cpu.c') if File.exists?('cpu.c')
5
6
 
6
- case RUBY_PLATFORM
7
+ case Config::CONFIG['host_os']
7
8
  when /hpux/i
8
9
  FileUtils.cp("hpux/hpux.c", "cpu.c")
9
10
  when /sunos|solaris/i
@@ -17,7 +18,7 @@ case RUBY_PLATFORM
17
18
  have_library("kvm")
18
19
  have_header("kvm.h")
19
20
  when /linux|dos|windows|win32|mingw|cygwin/i
20
- STDERR.puts "Run 'ruby install.rb' instead for this platform"
21
+ STDERR.puts "Run 'rake gem:install' instead for this platform"
21
22
  else
22
23
  STDERR.puts "This platform is not currently supported. Exiting..."
23
24
  end
data/ext/hpux/hpux.c CHANGED
@@ -203,7 +203,7 @@ void Init_cpu()
203
203
  */
204
204
  cCPUError = rb_define_class_under(cCPU, "Error", rb_eStandardError);
205
205
 
206
- /* 0.6.2: The version of the sys-cpu library */
206
+ /* 0.6.3: The version of the sys-cpu library */
207
207
  rb_define_const(cCPU, "VERSION", rb_str_new2(SYS_CPU_VERSION));
208
208
 
209
209
  /* Class Methods */
data/ext/sunos/sunos.c CHANGED
@@ -262,7 +262,7 @@ void Init_cpu()
262
262
  */
263
263
  cCPUError = rb_define_class_under(cCPU, "Error", rb_eStandardError);
264
264
 
265
- /* 0.6.2: The version of the sys-cpu library */
265
+ /* 0.6.3: The version of the sys-cpu library */
266
266
  rb_define_const(cCPU, "VERSION", rb_str_new2(SYS_CPU_VERSION));
267
267
 
268
268
  /* Class Methods */
data/ext/version.h CHANGED
@@ -1,2 +1,2 @@
1
1
  /* version.h - one version to rule them all */
2
- #define SYS_CPU_VERSION "0.6.2"
2
+ #define SYS_CPU_VERSION "0.6.3"
data/install.rb CHANGED
@@ -30,42 +30,43 @@ end
30
30
  # has already been written at some point previously and skip it.
31
31
  #######################################################################
32
32
  if CONFIG['host_os'] =~ /linux/
33
- cpu_file = "/proc/cpuinfo"
34
- text_file = "doc/linux.txt"
35
- rb_file = "lib/linux/sys/cpu.rb"
33
+ cpu_file = "/proc/cpuinfo"
34
+ text_file = "doc/linux.txt"
35
+ rb_file = "lib/linux/sys/cpu.rb"
36
36
 
37
- if File.size(text_file) > 1400
38
- puts "You appear to have already created the documentation."
39
- puts "Skipping..."
40
- else
41
- puts "Dynamically generating documentation..."
42
- fh = File.open(text_file,"a+")
37
+ if File.size(text_file) > 1400
38
+ puts "You appear to have already created the documentation."
39
+ puts "Skipping..."
40
+ else
41
+ puts "Dynamically generating documentation..."
42
+ fh = File.open(text_file, 'a')
43
+
44
+ IO.foreach(cpu_file){ |line|
45
+ next if line =~ /^$/
46
+ k,v = line.split(":")
47
+
48
+ v = v.strip.chomp
49
+ k = k.strip.gsub(/\s+/, '_').downcase
50
+
51
+ k += "?" if v =~ /yes|no/i
43
52
 
44
- IO.foreach(cpu_file){ |line|
45
- next if line =~ /^$/
46
- k,v = line.split(":")
47
- v.strip!.chomp!
48
- k.strip!.gsub!(/\s+/,"_")
49
- k.downcase!
50
- if v =~ /yes|no/i
51
- k += "?"
52
- end
53
- fh.puts("CPU.#{k}")
54
- if v =~ /yes|no/i
55
- k.chop!
56
- msg = " Returns true if a " + k.gsub(/_/," ") + "exists on"
57
- msg << " this system"
58
- fh.puts(msg)
59
- else
60
- fh.puts(" Returns the " + k.gsub(/_/," "))
61
- end
62
- fh.puts # Add a blank line
63
- }
53
+ fh.puts("CPU.#{k}")
64
54
 
65
- fh.puts(doc)
66
- fh.close
67
- puts "Documentation creation complete"
68
- end
55
+ if v =~ /yes|no/i
56
+ k.chop!
57
+ msg = " Returns true if a " + k.gsub(/_/," ") + "exists on"
58
+ msg << " this system"
59
+ fh.puts(msg)
60
+ else
61
+ fh.puts(" Returns the " + k.gsub(/_/," "))
62
+ end
63
+
64
+ fh.puts # Add a blank line
65
+ }
66
+
67
+ fh.close
68
+ puts "Documentation creation complete"
69
+ end
69
70
  end
70
71
 
71
72
  # Create the 'sys' toplevel directory if it doesn't already exist