proc-wait3 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,14 @@
1
+ == 1.5.4 - 7-Feb-2008
2
+ * ALERT! ALERT! Now auto-patches your mkmf.rb file to add the 'have_const'
3
+ method if it's not already found. This is necessary to determine if certain
4
+ enum values exist on your system. Your original mkmf.rb is backed up first
5
+ in case you ever need to restore it.
6
+ * Added lots of rdoc comments for the various constant values.
7
+ * Internal directory structure changes.
8
+ * Minor tweaks to the Rakefile and gem spec.
9
+ * Fixed the extconf.rb file so that it sets the target directory properly.
10
+ * No source code changes (except for comment updates and a version bump).
11
+
1
12
  == 1.5.3 - 25-Oct-2006
2
13
  * Because not all platforms support automatically converting signal names
3
14
  into their equivalent numbers, the Process.pause method now accepts names
@@ -0,0 +1,14 @@
1
+ CHANGES
2
+ MANIFEST
3
+ Rakefile
4
+ README
5
+ proc-wait3.gemspec
6
+ doc/wait3.txt
7
+ ext/extconf.rb
8
+ ext/proc/wait3.c
9
+ examples/test_getrusage.rb
10
+ examples/test_pause.rb
11
+ examples/test_wait3.rb
12
+ examples/test_wait4.rb
13
+ examples/test_waitid.rb
14
+ test/tc_wait3.rb
@@ -4,7 +4,7 @@
4
4
  and setrlimit methods.
5
5
 
6
6
  == Synopsis
7
- require "proc/wait3"
7
+ require 'proc/wait3'
8
8
 
9
9
  pid = fork{ sleep 1; exit 2 }
10
10
  p Time.now
@@ -23,7 +23,7 @@ Proc.pause(signals=nil)
23
23
  Returns the result of the pause() function, which should always be -1.
24
24
 
25
25
  Process.sigsend(idtype, id, signal=0)
26
- Sends a signal of type "idtype" to a process or process group "id". This
26
+ Sends a signal of type "idtype" to a process or process group "id". This
27
27
  is more versatile method of sending signals to processes than Process.kill.
28
28
 
29
29
  For a list of valid idtype values, see the "Process type constants" below.
@@ -33,11 +33,11 @@ Proc.wait3(flags=0)
33
33
  Delays its caller until a signal is received or one of its child processes
34
34
  terminates or stops due to tracing.
35
35
 
36
- The return value is a ProcStat structure. The special global $? is also
37
- set. Raises a SystemError if there are no child processes.
36
+ The return value is a ProcStat structure. The special global $? is also
37
+ set. Raises a SystemError if there are no child processes.
38
38
 
39
39
  Proc.wait4(pid, flags=0)
40
- Waits for the given child process to exit. Returns a ProcStat structure.
40
+ Waits for the given child process to exit. Returns a ProcStat structure.
41
41
  Also sets the $? special global variable.
42
42
 
43
43
  Proc.waitid(id_type, id_num=nil, options=nil)
@@ -46,12 +46,12 @@ Proc.waitid(id_type, id_num=nil, options=nil)
46
46
  The state of a child process will change if it terminates, stops because
47
47
  of a signal, becomes trapped or reaches a breakpoint.
48
48
 
49
- The id_num corresponds to a pid or pgid, depending on the value of id_type,
50
- which may be Process::P_PID, Process::P_PGID or Process::P_ALL. If
51
- Process::P_ALL, then the id_num is ignored.
49
+ The id_num corresponds to a process ID or process group ID, depending on
50
+ the value of +id_type+, which may be Process::P_PID, Process::P_PGID or
51
+ Process::P_ALL. If +id_type+ is Process::P_ALL, then the +id_num+ is ignored.
52
52
 
53
53
  The options argument is used to specify which state changes are to be
54
- waited for. It is constructed from the bitwise-OR of one or more of the
54
+ waited for. It is constructed from the bitwise-OR of one or more of the
55
55
  following constants:
56
56
 
57
57
  Process::WCONTINUED
@@ -106,13 +106,13 @@ Process::P_GID
106
106
  Any non-system effective process group id.
107
107
 
108
108
  Process::P_PROJID
109
- A project process id. Solaris 8 or later only.
109
+ A project process id. Solaris 8 or later only.
110
110
 
111
111
  Process::P_SID
112
112
  A session process id.
113
113
 
114
114
  Process::P_TASKID
115
- A task process id. Solaris 8 or later only.
115
+ A task process id. Solaris 8 or later only.
116
116
 
117
117
  Process::P_UID
118
118
  Any non-system effective process user id.
@@ -179,14 +179,14 @@ Process::RLIM_SAVED_MAX
179
179
  struct.
180
180
 
181
181
  == Known Bugs
182
- None that I'm aware of. Please log any bugs on the RubyForge project
182
+ None that I'm aware of. Please log any bugs on the RubyForge project
183
183
  page at http://www.rubyforge.org/projects/shards.
184
184
 
185
185
  == License
186
186
  Ruby's
187
187
 
188
188
  == Copyright
189
- (C) 2003-2006 Daniel J. Berger
189
+ (C) 2003-2008 Daniel J. Berger
190
190
  All Rights Reserved.
191
191
 
192
192
  == Warranty
@@ -0,0 +1,114 @@
1
+ ########################################################
2
+ # Use the mkmf.rb file that I provide, so I can use the
3
+ # have_enum_member method
4
+ ########################################################
5
+ require 'mkmf'
6
+
7
+ # Check to see if Ruby has already defined the various RLIMIT constants
8
+ # and set an appropriate macro in the source.
9
+ #
10
+ begin
11
+ Process::RLIMIT_AS
12
+ rescue
13
+ check_sizeof('int')
14
+ check_sizeof('long')
15
+ check_sizeof('long long')
16
+ unless check_sizeof('rlim_t', 'sys/resource.h')
17
+ if (2**33).is_a?(Fixnum)
18
+ $defs.push('-DSIZEOF_RLIM_T 8') # 64 bit
19
+ else
20
+ $defs.push('-DSIZEOF_RLIM_T 4') # 32 bit
21
+ end
22
+ end
23
+ else
24
+ $defs.push('-DRUBY_HAS_RLIMIT') # Used within wait.c
25
+ end
26
+
27
+ have_header('wait.h')
28
+
29
+ # wait3 is mandatory.
30
+ unless have_func('wait3')
31
+ STDERR.puts 'wait3() function not found'
32
+ exit
33
+ end
34
+
35
+ # Yay, Linux
36
+ have_func('str2sig')
37
+ have_func('strlcpy')
38
+
39
+ # wait4, waitid, etc, are optional (HPUX, et al)
40
+ have_func('wait4')
41
+ have_func('waitid')
42
+ have_func('sigsend')
43
+ have_func('getrusage')
44
+ have_func('getdtablesize')
45
+
46
+ have_struct_member('struct siginfo', 'si_trapno', 'signal.h')
47
+ have_struct_member('struct siginfo', 'si_pc', 'signal.h')
48
+ have_struct_member('struct siginfo', 'si_sysarg', 'signal.h')
49
+ have_struct_member('struct siginfo', 'si_mstate', 'signal.h')
50
+ have_struct_member('struct siginfo', 'si_faddr', 'signal.h')
51
+ have_struct_member('struct siginfo', 'si_syscall', 'signal.h')
52
+ have_struct_member('struct siginfo', 'si_nsysarg', 'signal.h')
53
+ have_struct_member('struct siginfo', 'si_fault', 'signal.h')
54
+ have_struct_member('struct siginfo', 'si_tstamp', 'signal.h')
55
+
56
+ count = 0
57
+
58
+ # Attempt to append the necessary method to the user's mkmf.rb file, after
59
+ # backing it up first.
60
+ begin
61
+ have_const('P_CID', 'signal.h')
62
+ have_const('P_GID', 'signal.h')
63
+ have_const('P_MYID', 'signal.h')
64
+ have_const('P_SID', 'signal.h')
65
+ have_const('P_UID', 'signal.h')
66
+
67
+ # These are only supported by Solaris 8 and later afaik
68
+ have_const('P_PROJID', 'signal.h')
69
+ have_const('P_TASKID', 'signal.h')
70
+ rescue NoMethodError
71
+ require 'rbconfig'
72
+ count += 1
73
+ file = File.join(Config::CONFIG['rubylibdir'], 'mkmf.rb')
74
+ FileUtils.cp(file, 'mkmf.orig') # Backup original
75
+ File.open(file, 'a+'){ |fh|
76
+ fh.puts %Q{
77
+ # Returns whether or not the constant +const+ can be found in the common
78
+ # header files, or within a +header+ that you provide. If found, a macro is
79
+ # passed as a preprocessor constant to the compiler using the constant name,
80
+ # in uppercase, prepended with 'HAVE_'. This method is also used to test
81
+ # for the presence of enum values.
82
+ #
83
+ # For example, if have_const('FOO') returned true, then the HAVE_CONST_FOO
84
+ # preprocessor macro would be passed to the compiler.
85
+ #
86
+ # This method was added automatically by the proc-wait3 library on
87
+ # #{Time.now}.
88
+ #
89
+ def have_const(const, header = nil, opt = "", &b)
90
+ checking_for const do
91
+ header = cpp_include(header)
92
+ if try_compile(<<"SRC", opt, &b)
93
+ #\{COMMON_HEADERS\}
94
+ #\{header\}
95
+ /* top */
96
+ static int t = #\{const\};
97
+ SRC
98
+ $defs.push(
99
+ format(
100
+ "-DHAVE_CONST_%s",
101
+ const.strip.upcase.tr_s("^A-Z0-9_", "_")
102
+ )
103
+ )
104
+ true
105
+ else
106
+ false
107
+ end
108
+ end
109
+ end}
110
+ }
111
+ retry unless count >= 2
112
+ end
113
+
114
+ create_makefile('proc/wait3', 'proc')
@@ -771,7 +771,7 @@ static VALUE proc_getrlimit(VALUE mod, VALUE v_resource){
771
771
  }
772
772
 
773
773
  /*
774
- * call-seq;
774
+ * call-seq:
775
775
  * Process.setrlimit(resource, current, max=nil) => nil
776
776
  *
777
777
  * Sets the +current+ (soft) and +max+ (hard) limit for the given +resource+
@@ -895,22 +895,27 @@ void Init_wait3()
895
895
  rb_define_module_function(rb_mProcess, "waitid", proc_waitid, -1);
896
896
 
897
897
  #ifdef WCONTINUED
898
+ /* The status of any child that was stopped and then continued */
898
899
  rb_define_const(rb_mProcess, "WCONTINUED", INT2FIX(WCONTINUED));
899
900
  #endif
900
901
 
901
902
  #ifdef WEXITED
903
+ /* The status of any child that has terminated */
902
904
  rb_define_const(rb_mProcess, "WEXITED", INT2FIX(WEXITED));
903
905
  #endif
904
906
 
905
907
  #ifdef WNOWAIT
908
+ /* Keeps the process whose status was returned in a waitable state */
906
909
  rb_define_const(rb_mProcess, "WNOWAIT", INT2FIX(WNOWAIT));
907
910
  #endif
908
911
 
909
912
  #ifdef WSTOPPED
913
+ /* The status of any child that has stopped as the result of a signal */
910
914
  rb_define_const(rb_mProcess, "WSTOPPED", INT2FIX(WSTOPPED));
911
915
  #endif
912
916
 
913
917
  #ifdef WTRAPPED
918
+ /* Waits for any child process to become trapped or reach a breakpoint */
914
919
  rb_define_const(rb_mProcess, "WTRAPPED", INT2FIX(WTRAPPED));
915
920
  #endif
916
921
  #endif
@@ -918,64 +923,99 @@ void Init_wait3()
918
923
  /* Because core Ruby already defines a Process::GID and Process::UID,
919
924
  * I am forced to keep the leading 'P_' for these constants.
920
925
  */
926
+
927
+ /* Any child */
921
928
  rb_define_const(rb_mProcess, "P_ALL", INT2FIX(P_ALL));
929
+
930
+ /* Process group ID */
922
931
  rb_define_const(rb_mProcess, "P_PGID", INT2FIX(P_PGID));
932
+
933
+ /* Process ID */
923
934
  rb_define_const(rb_mProcess, "P_PID", INT2FIX(P_PID));
924
935
 
925
936
  #ifdef HAVE_CONST_P_CID
937
+ /* Process scheduler class ID */
926
938
  rb_define_const(rb_mProcess, "P_CID", INT2FIX(P_CID));
927
939
  #endif
928
940
 
929
941
  #ifdef HAVE_CONST_P_GID
942
+ /* Non-system process effective group ID */
930
943
  rb_define_const(rb_mProcess, "P_GID", INT2FIX(P_GID));
931
944
  #endif
932
945
 
933
946
  #ifdef HAVE_CONST_P_MYID
947
+ /* Process ID of the calling process */
934
948
  rb_define_const(rb_mProcess, "P_MYID", INT2FIX(P_MYID));
935
949
  #endif
936
950
 
937
951
  #ifdef HAVE_CONST_P_SID
952
+ /* Non-system process session ID */
938
953
  rb_define_const(rb_mProcess, "P_SID", INT2FIX(P_SID));
939
954
  #endif
940
955
 
941
956
  #ifdef HAVE_CONST_P_UID
957
+ /* Non-system process effective user ID */
942
958
  rb_define_const(rb_mProcess, "P_UID", INT2FIX(P_UID));
943
959
  #endif
944
960
 
945
961
  #ifdef HAVE_CONST_P_TASKID
962
+ /* Process task ID */
946
963
  rb_define_const(rb_mProcess, "P_TASKID", INT2FIX(P_TASKID));
947
964
  #endif
948
965
 
949
966
  #ifdef HAVE_CONST_P_PROJID
967
+ /* Process project ID */
950
968
  rb_define_const(rb_mProcess, "P_PROJID", INT2FIX(P_PROJID));
951
969
  #endif
952
970
 
953
971
  /* Constants for getrlimit, setrlimit. It appears that these are defined
954
- * by Ruby as of 1.8.5. We'll only set the RLIMIT constants for Ruby 1.8.4
972
+ * by Ruby as of 1.8.5. We'll only set the RLIMIT constants for Ruby 1.8.4
955
973
  * or earlier.
956
974
  */
957
975
  #ifndef RUBY_HAS_RLIMIT
976
+ /* Maximum size of the process' mapped address space, in bytes */
958
977
  rb_define_const(rb_mProcess, "RLIMIT_AS", INT2FIX(RLIMIT_AS));
978
+
979
+ /* Maximum size of a core file in bytes that may be created */
959
980
  rb_define_const(rb_mProcess, "RLIMIT_CORE", INT2FIX(RLIMIT_CORE));
981
+
982
+ /* Maximum amount of CPU time, in seconds, the process is allowed to use */
960
983
  rb_define_const(rb_mProcess, "RLIMIT_CPU", INT2FIX(RLIMIT_CPU));
984
+
985
+ /* Maximum size of the process' heap, in bytes */
961
986
  rb_define_const(rb_mProcess, "RLIMIT_DATA", INT2FIX(RLIMIT_DATA));
987
+
988
+ /* Maximum size of a file, in bytes, that the process may create */
962
989
  rb_define_const(rb_mProcess, "RLIMIT_FSIZE", INT2FIX(RLIMIT_FSIZE));
990
+
991
+ /* The maximum value that the kernel may assign to a file descriptor */
963
992
  rb_define_const(rb_mProcess, "RLIMIT_NOFILE", INT2FIX(RLIMIT_NOFILE));
993
+
994
+ /* The maximum size of the process' stack, in bytes */
964
995
  rb_define_const(rb_mProcess, "RLIMIT_STACK", INT2FIX(RLIMIT_STACK));
996
+
997
+ /* No limit on the resource */
965
998
  rb_define_const(rb_mProcess, "RLIM_INFINITY", RLIM2NUM(RLIM_INFINITY));
999
+
1000
+ /* Set the limit to the corresponding saved hard limit */
966
1001
  rb_define_const(rb_mProcess, "RLIM_SAVED_MAX", RLIM2NUM(RLIM_SAVED_MAX));
1002
+
1003
+ /* Set the limit to the corresponding saved soft limit */
967
1004
  rb_define_const(rb_mProcess, "RLIM_SAVED_CUR", RLIM2NUM(RLIM_SAVED_CUR));
968
1005
 
969
1006
  #ifdef RLIMIT_MEMLOCK
1007
+ /* The maximum number of bytes that may be locked into RAM */
970
1008
  rb_define_const(rb_mProcess, "RLIMIT_MEMLOCK", INT2FIX(RLIMIT_MEMLOCK));
971
1009
  #endif
972
1010
 
973
1011
  #ifdef RLIMIT_VMEM
1012
+ /* Synonym for RLIMIT_AS */
974
1013
  rb_define_const(rb_mProcess, "RLIMIT_VMEM", INT2FIX(RLIMIT_VMEM));
975
1014
  #endif
976
1015
  #endif
977
1016
 
978
- rb_define_const(rb_mProcess, "WAIT3_VERSION", rb_str_new2("1.5.3"));
1017
+ /* 1.5.4: The version of this library */
1018
+ rb_define_const(rb_mProcess, "WAIT3_VERSION", rb_str_new2("1.5.4"));
979
1019
 
980
1020
  /* Define this last in our Init_wait3 function */
981
1021
  rb_define_readonly_variable("$?", &v_last_status);
@@ -1,27 +1,13 @@
1
1
  ##################################################################
2
2
  # tc_wait3.rb
3
3
  #
4
- # Test suite for the Ruby proc-wait3 package.
4
+ # Test suite for the Ruby proc-wait3 package. You should run this
5
+ # via the 'test' rake task.
5
6
  ##################################################################
6
- base = File.basename(Dir.pwd)
7
-
8
- if base == "test" || base =~ /proc-wait3/
9
- require "ftools"
10
- ext = ".so"
11
- ext = ".sl" if RUBY_PLATFORM =~ /hpux/i
12
- ext = ".bundle" if RUBY_PLATFORM =~ /darwin|powerpc/i
13
- file = "wait3" + ext
14
- Dir.chdir("..") if base == "test"
15
- Dir.mkdir("proc") rescue nil
16
- File.copy(file,"proc")
17
- $LOAD_PATH.unshift(Dir.pwd)
18
- Dir.chdir("test") rescue nil
19
- end
20
-
21
7
  require "proc/wait3"
22
8
  require "test/unit"
23
9
 
24
- class TC_Wait3 < Test::Unit::TestCase
10
+ class TC_Wait3 < Test::Unit::TestCase
25
11
  def setup
26
12
  @proc_stat = nil
27
13
  @proc_stat_members = ["pid", "status", "utime", "stime", "maxrss",
@@ -32,7 +18,7 @@ class TC_Wait3 < Test::Unit::TestCase
32
18
  end
33
19
 
34
20
  def test_wait3_version
35
- assert_equal('1.5.3', Process::WAIT3_VERSION)
21
+ assert_equal('1.5.4', Process::WAIT3_VERSION)
36
22
  end
37
23
 
38
24
  def test_wait3_basic
@@ -76,50 +62,58 @@ unless RUBY_PLATFORM =~ /hpux/i
76
62
  end
77
63
 
78
64
  def test_waitid_basic
79
- assert_respond_to(Process, :waitid)
65
+ if RUBY_PLATFORM =~ /mach|darwin|osx/i
66
+ STDOUT.puts "Skipping 'test_waitid_basic' on this platform"
67
+ else
68
+ assert_respond_to(Process, :waitid)
69
+ end
80
70
  end
81
71
 
82
72
  def test_waitid_in_action
83
- pid = fork{ sleep 1 }
84
-
85
- assert_nothing_raised{
86
- Process.waitid(Process::P_PID, pid, Process::WEXITED)
87
- }
73
+ if RUBY_PLATFORM =~ /mach|darwin|osx/i
74
+ STDOUT.puts "Skipping 'test_waitid_in_action' on this platform"
75
+ else
76
+ pid = fork{ sleep 1 }
88
77
 
89
- assert_raises(TypeError){
90
- Process.waitid("foo", pid, Process::WEXITED)
91
- }
78
+ assert_nothing_raised{
79
+ Process.waitid(Process::P_PID, pid, Process::WEXITED)
80
+ }
92
81
 
93
- assert_raises(TypeError){
94
- Process.waitid(Process::P_PID, pid, "foo")
95
- }
82
+ assert_raises(TypeError){
83
+ Process.waitid("foo", pid, Process::WEXITED)
84
+ }
96
85
 
97
- assert_raises(TypeError){
98
- Process.waitid(Process::P_PID, "foo", Process::WEXITED)
99
- }
86
+ assert_raises(TypeError){
87
+ Process.waitid(Process::P_PID, pid, "foo")
88
+ }
100
89
 
101
- if RUBY_PLATFORM.match("linux")
102
- assert_raises(Errno::ECHILD){
103
- Process.waitid(Process::P_PID, 99999999, Process::WEXITED)
90
+ assert_raises(TypeError){
91
+ Process.waitid(Process::P_PID, "foo", Process::WEXITED)
104
92
  }
105
- else
106
- assert_raises(Errno::EINVAL){
107
- Process.waitid(Process::P_PID, 99999999, Process::WEXITED)
108
- }
93
+
94
+ if RUBY_PLATFORM.match("linux")
95
+ assert_raises(Errno::ECHILD){
96
+ Process.waitid(Process::P_PID, 99999999, Process::WEXITED)
97
+ }
98
+ else
99
+ assert_raises(Errno::EINVAL){
100
+ Process.waitid(Process::P_PID, 99999999, Process::WEXITED)
101
+ }
102
+ end
109
103
  end
110
104
  end
111
105
 
112
106
  def test_sigsend_basic
113
107
  if RUBY_PLATFORM.match("linux")
114
- puts "test_sigsend_basic skipped on this platform"
108
+ puts "Skipping 'test_sigsend_basic' on this platform"
115
109
  else
116
110
  assert_respond_to(Process,:send)
117
111
  end
118
112
  end
119
113
 
120
114
  def test_sigsend_in_action
121
- if RUBY_PLATFORM.match("linux")
122
- puts "test_sigsend_in_action skipped on this platform"
115
+ if RUBY_PLATFORM =~ /linux|mach|darwin|osx/i
116
+ puts "Skipping 'test_sigsend_in_action' on this platform"
123
117
  else
124
118
  pid = fork{ sleep 1 }
125
119
 
@@ -151,11 +145,15 @@ end
151
145
  msg = "Don't panic. It simply appears that this constant is not defined"
152
146
  msg += "on your particular platform. Ignore"
153
147
 
154
- assert_not_nil(Process::WCONTINUED, msg)
155
- assert_not_nil(Process::WEXITED, msg)
156
- assert_not_nil(Process::WNOWAIT, msg)
157
- assert_not_nil(Process::WSTOPPED, msg)
158
- assert_not_nil(Process::WTRAPPED, msg) unless RUBY_PLATFORM.match("linux")
148
+ unless RUBY_PLATFORM =~ /darwin/i
149
+ assert_not_nil(Process::WCONTINUED, msg)
150
+ assert_not_nil(Process::WEXITED, msg)
151
+ assert_not_nil(Process::WNOWAIT, msg)
152
+ assert_not_nil(Process::WSTOPPED, msg)
153
+ unless RUBY_PLATFORM.match("linux")
154
+ assert_not_nil(Process::WTRAPPED, msg)
155
+ end
156
+ end
159
157
  end
160
158
 
161
159
  # Skip these tests on Ruby 1.8.5 or later
@@ -214,7 +212,7 @@ end
214
212
  end
215
213
 
216
214
  def test_process_type_flags
217
- unless RUBY_PLATFORM.match("linux")
215
+ unless RUBY_PLATFORM =~ /linux|mach|darwin|osx/i
218
216
  assert_not_nil(Process::P_ALL)
219
217
  assert_not_nil(Process::P_CID)
220
218
  assert_not_nil(Process::P_GID)
metadata CHANGED
@@ -1,51 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
3
- specification_version: 1
4
2
  name: proc-wait3
5
3
  version: !ruby/object:Gem::Version
6
- version: 1.5.3
7
- date: 2006-10-25 00:00:00 -06:00
8
- summary: Adds the wait3, wait4, waitid, pause, sigsend, and getrusage methods to the Process module. It also adds the getrlimit and setrlimit methods for Ruby 1.8.4 or earlier.
9
- require_paths:
10
- - lib
11
- email: djberg96@gmail.com
12
- homepage: http://www.rubyforge.org/projects/shards
13
- rubyforge_project: shards
14
- description: Adds the wait3, wait4, waitid, pause, sigsend, and getrusage methods to the Process module. It also adds the getrlimit and setrlimit methods for Ruby 1.8.4 or earlier.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.8.0
24
- version:
4
+ version: 1.5.4
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Daniel J. Berger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-02-08 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Adds the wait3, wait4, waitid, pause, sigsend, and getrusage methods to the Process module. It also adds the getrlimit and setrlimit methods for Ruby 1.8.4 or earlier.
17
+ email: djberg96@gmail.com
18
+ executables: []
19
+
20
+ extensions:
21
+ - ext/extconf.rb
22
+ extra_rdoc_files:
23
+ - CHANGES
24
+ - README
25
+ - MANIFEST
26
+ - ext/proc/wait3.c
31
27
  files:
32
28
  - doc/wait3.txt
33
29
  - test/tc_wait3.rb
34
- - lib/proc/wait3.c
30
+ - ext/proc/wait3.c
35
31
  - CHANGES
36
32
  - README
37
- test_files:
38
- - test/tc_wait3.rb
33
+ - MANIFEST
34
+ has_rdoc: true
35
+ homepage: http://www.rubyforge.org/projects/shards
36
+ post_install_message:
39
37
  rdoc_options: []
40
38
 
41
- extra_rdoc_files:
42
- - CHANGES
43
- - README
44
- executables: []
45
-
46
- extensions:
47
- - extconf.rb
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 1.8.0
46
+ version:
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ version:
48
53
  requirements: []
49
54
 
50
- dependencies: []
51
-
55
+ rubyforge_project: shards
56
+ rubygems_version: 1.0.1
57
+ signing_key:
58
+ specification_version: 2
59
+ summary: Adds the wait3, wait4, waitid, pause, sigsend, and getrusage methods to the Process module. It also adds the getrlimit and setrlimit methods for Ruby 1.8.4 or earlier.
60
+ test_files:
61
+ - test/tc_wait3.rb
data/extconf.rb DELETED
@@ -1,78 +0,0 @@
1
- ########################################################
2
- # Use the mkmf.rb file that I provide, so I can use the
3
- # have_enum_member method
4
- ########################################################
5
- require "mkmf"
6
- require "ftools"
7
-
8
- File.copy("lib/proc/wait3.c",".")
9
-
10
- # Check to see if Ruby has already defined the various RLIMIT constants
11
- # and set an appropriate macro in the source.
12
- begin
13
- Process::RLIMIT_AS
14
- rescue
15
- check_sizeof("int")
16
- check_sizeof("long")
17
- check_sizeof("long long")
18
- unless check_sizeof("rlim_t", "sys/resource.h")
19
- if (2**33).is_a?(Fixnum)
20
- $defs.push("-DSIZEOF_RLIM_T 8") # 64 bit
21
- else
22
- $defs.push("-DSIZEOF_RLIM_T 4") # 32 bit
23
- end
24
- end
25
- else
26
- $defs.push("-DRUBY_HAS_RLIMIT") # Used within wait.c
27
- end
28
-
29
- have_header("wait.h")
30
-
31
- # wait3 is mandatory.
32
- unless have_func("wait3")
33
- STDERR.puts "wait3() function not found"
34
- exit
35
- end
36
-
37
- # Yay, Linux
38
- have_func("str2sig")
39
- have_func("strlcpy")
40
-
41
- # wait4, waitid, etc, are optional (HPUX, et al)
42
- have_func("wait4")
43
- have_func("waitid")
44
- have_func("sigsend")
45
- have_func("getrusage")
46
- have_func("getdtablesize")
47
-
48
- have_struct_member("struct siginfo", "si_trapno", "signal.h")
49
- have_struct_member("struct siginfo", "si_pc", "signal.h")
50
- have_struct_member("struct siginfo", "si_sysarg", "signal.h")
51
- have_struct_member("struct siginfo", "si_mstate", "signal.h")
52
- have_struct_member("struct siginfo", "si_faddr", "signal.h")
53
- have_struct_member("struct siginfo", "si_syscall", "signal.h")
54
- have_struct_member("struct siginfo", "si_nsysarg", "signal.h")
55
- have_struct_member("struct siginfo", "si_fault", "signal.h")
56
- have_struct_member("struct siginfo", "si_tstamp", "signal.h")
57
-
58
- begin
59
- have_const("P_CID", "signal.h")
60
- have_const("P_GID", "signal.h")
61
- have_const("P_MYID", "signal.h")
62
- have_const("P_SID", "signal.h")
63
- have_const("P_UID", "signal.h")
64
-
65
- # These are only supported by Solaris 8 and later afaik
66
- have_const("P_PROJID", "signal.h")
67
- have_const("P_TASKID", "signal.h")
68
- rescue NoMethodError
69
- STDERR.puts
70
- STDERR.puts "STOP!"
71
- STDERR.puts
72
- STDERR.puts "Please run the patch.rb program and try again"
73
- STDERR.puts "See the README file for more details"
74
- STDERR.puts "Makefile NOT created"
75
- exit
76
- end
77
-
78
- create_makefile("proc/wait3")