summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-04-21 10:53:53 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-04-21 22:24:55 +0900
commitde5cd5a635e3b975ca7acc5caf0363f2811abd95 (patch)
tree71b2c2485d803f245f96b8b8ab3e52ba1483ce5a
parente956052fa953d7e312a2f524127b2ac6ae1b0da2 (diff)
Use shorter path as `SPEC_TEMP_DIR`
The temporary directory under the build directory may be too long as a UNIX socket path. On macOS, the default `TMPDIR` per user is also very long.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/7749
-rw-r--r--common.mk3
-rw-r--r--tool/rubyspec_temp.rb13
2 files changed, 15 insertions, 1 deletions
diff --git a/common.mk b/common.mk
index 38af553992..8baa5be82b 100644
--- a/common.mk
+++ b/common.mk
@@ -873,7 +873,8 @@ test-spec: $(TEST_RUNNABLE)-test-spec
yes-test-spec: test-spec-precheck
$(ACTIONS_GROUP)
$(gnumake_recursive)$(Q) \
- $(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT) $(SPECOPTS)
+ $(RUNRUBY) -r./$(arch)-fake -r$(tooldir)/rubyspec_temp \
+ $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT) $(SPECOPTS)
$(ACTIONS_ENDGROUP)
no-test-spec:
diff --git a/tool/rubyspec_temp.rb b/tool/rubyspec_temp.rb
new file mode 100644
index 0000000000..339bfce211
--- /dev/null
+++ b/tool/rubyspec_temp.rb
@@ -0,0 +1,13 @@
+require "tmpdir"
+require "fileutils"
+
+if (tmpdir = Dir.mktmpdir("rubyspec_temp.")).size > 80
+ # On macOS, the default TMPDIR is very long, inspite of UNIX socket
+ # path length is limited.
+ Dir.rmdir(tmpdir)
+ tmpdir = Dir.mktmpdir("rubyspec_temp.", "/tmp")
+end
+# warn "tmpdir(#{tmpdir.size}) = #{tmpdir}"
+END {FileUtils.rm_rf(tmpdir)}
+
+ENV["TMPDIR"] = ENV["SPEC_TEMP_DIR"] = tmpdir