From de5cd5a635e3b975ca7acc5caf0363f2811abd95 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 21 Apr 2023 10:53:53 +0900 Subject: [PATCH] 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. --- common.mk | 3 ++- tool/rubyspec_temp.rb | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 tool/rubyspec_temp.rb 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