[前][次][番号順一覧][スレッド一覧]

ruby-changes:74376

From: Nobuyoshi <ko1@a...>
Date: Mon, 7 Nov 2022 10:12:20 +0900 (JST)
Subject: [ruby-changes:74376] b02b8e7756 (master): Let other test runners follow the change of GNU make 4.4 jobserver

https://git.ruby-lang.org/ruby.git/commit/?id=b02b8e7756

From b02b8e77562661865b380d78e7621edfd8149a8f Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Mon, 7 Nov 2022 10:08:30 +0900
Subject: Let other test runners follow the change of GNU make 4.4 jobserver

---
 bootstraptest/runner.rb                | 12 +++++++++---
 spec/default.mspec                     | 14 +++++++++++---
 spec/ruby/optional/capi/spec_helper.rb | 14 +++++++++++---
 3 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
index 1d219be71e..f9b3e919b8 100755
--- a/bootstraptest/runner.rb
+++ b/bootstraptest/runner.rb
@@ -108,10 +108,16 @@ BT = Class.new(bt) do https://github.com/ruby/ruby/blob/trunk/bootstraptest/runner.rb#L108
 
   def wn=(wn)
     unless wn == 1
-      if /(?:\A|\s)--jobserver-(?:auth|fds)=\K(\d+),(\d+)/ =~ ENV.delete("MAKEFLAGS")
+      if /(?:\A|\s)--jobserver-(?:auth|fds)=(?:(\d+),(\d+)|fifo:((?:\\.|\S)+))/ =~ ENV.delete("MAKEFLAGS")
         begin
-          r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
-          w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
+          if fifo = $3
+            fifo.gsub!(/\\(?=.)/, '')
+            r = File.open(fifo, IO::RDONLY|IO::NONBLOCK|IO::BINARY)
+            w = File.open(fifo, IO::WRONLY|IO::NONBLOCK|IO::BINARY)
+          else
+            r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
+            w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
+          end
         rescue => e
           r.close if r
         else
diff --git a/spec/default.mspec b/spec/default.mspec
index 0dba98306c..33ac691b94 100644
--- a/spec/default.mspec
+++ b/spec/default.mspec
@@ -29,11 +29,19 @@ end https://github.com/ruby/ruby/blob/trunk/spec/default.mspec#L29
 
 module MSpecScript::JobServer
   def cores(max = 1)
-    if max > 1 and /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
+    if max > 1 and /(?:\A|\s)--jobserver-(?:auth|fds)=(?:(\d+),(\d+)|fifo:((?:\\.|\S)+))/ =~ ENV["MAKEFLAGS"]
       cores = 1
       begin
-        r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
-        w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
+        if fifo = $3
+          fifo.gsub!(/\\(?=.)/, '')
+          r = File.open(fifo, IO::RDONLY|IO::NONBLOCK|IO::BINARY)
+          w = File.open(fifo, IO::WRONLY|IO::NONBLOCK|IO::BINARY)
+        else
+          r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
+          w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
+        end
+        r.close_on_exec = true
+        w.close_on_exec = true
         jobtokens = r.read_nonblock(max - 1)
         cores = jobtokens.size
         if cores > 0
diff --git a/spec/ruby/optional/capi/spec_helper.rb b/spec/ruby/optional/capi/spec_helper.rb
index ec6b909397..9c85751974 100644
--- a/spec/ruby/optional/capi/spec_helper.rb
+++ b/spec/ruby/optional/capi/spec_helper.rb
@@ -113,12 +113,20 @@ def setup_make https://github.com/ruby/ruby/blob/trunk/spec/ruby/optional/capi/spec_helper.rb#L113
   end
 
   opts = {}
-  if /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ make_flags
+  if /(?:\A|\s)--jobserver-(?:auth|fds)=(?:(\d+),(\d+)|fifo:((?:\\.|\S)+))/ =~ make_flags
     begin
-      r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
-      w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
+      if fifo = $3
+        fifo.gsub!(/\\(?=.)/, '')
+        r = File.open(fifo, IO::RDONLY|IO::NONBLOCK|IO::BINARY)
+        w = File.open(fifo, IO::WRONLY|IO::NONBLOCK|IO::BINARY)
+      else
+        r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
+        w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
+      end
     rescue Errno::EBADF
     else
+      r.close_on_exec = true
+      w.close_on_exec = true
       opts[r] = r
       opts[w] = w
     end
-- 
cgit v1.2.3


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]