diff options
| author | ruki <[email protected]> | 2026-02-19 22:41:40 +0800 |
|---|---|---|
| committer | Saikari <[email protected]> | 2026-02-20 16:31:35 +0300 |
| commit | 9f1c3a8e8115a0746a2f7de435fa660a9504978e (patch) | |
| tree | 0aeb0ba9aaba07e33a444ee9677248d9061577d8 | |
| parent | d98330b24d4897430a9f26680dbdc7f910b0e948 (diff) | |
improve os.tmpdir
| -rw-r--r-- | xmake/core/base/os.lua | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua index d50ce19f2..b8ce09f68 100644 --- a/xmake/core/base/os.lua +++ b/xmake/core/base/os.lua @@ -200,6 +200,15 @@ function os._ramdir() return ramdir_root or nil end +-- if tmpdir_root is a symbolic link, os.tmpdir() may return a path that differs +-- from the path style returned by os.curdir() (e.g. on Haiku). +function os._resolve_tmpdir(tmpdir_root) + if os.islink(tmpdir_root) then + tmpdir_root = os.readlink(tmpdir_root) or tmpdir_root + end + return tmpdir_root +end + -- set on change environments callback for scheduler function os._sched_chenvs_set(envs) os._SCHED_CHENVS = envs @@ -771,19 +780,14 @@ function os.tmpdir(opt) tmpdir_root = os._ROOT_TMPDIR if os._ROOT_TMPDIR == nil then tmpdir_root = (os.getenv("XMAKE_TMPDIR") or os.getenv("TMPDIR") or os._tmpdir()):trim() - -- TODO - if os.islink(tmpdir_root) then - tmpdir_root = os.readlink(tmpdir_root) or tmpdir_root - end + tmpdir_root = os._resolve_tmpdir(tmpdir_root) os._ROOT_TMPDIR = tmpdir_root end else tmpdir_root = os._ROOT_TMPDIR_RAM if os._ROOT_TMPDIR_RAM == nil then tmpdir_root = (os.getenv("XMAKE_TMPDIR") or os._ramdir() or os.getenv("TMPDIR") or os._tmpdir()):trim() - if os.islink(tmpdir_root) then - tmpdir_root = os.readlink(tmpdir_root) or tmpdir_root - end + tmpdir_root = os._resolve_tmpdir(tmpdir_root) os._ROOT_TMPDIR_RAM = tmpdir_root end end |
