Skip to content

Commit

Permalink
utils: Use os_uname when it's available to detect Linux
Browse files Browse the repository at this point in the history
  • Loading branch information
squeek502 committed Jan 17, 2024
1 parent 58e71b6 commit 7877a22
Showing 1 changed file with 25 additions and 20 deletions.
45 changes: 25 additions & 20 deletions lib/utils.lua
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,20 @@ else
usecolors = false
end

function utils.uvVersionGEQ(min_version)
if not min_version then return true end
local min_version_num = min_version
if type(min_version) == "string" then
local version_parts = {}
for part in min_version:gmatch("%d+") do
table.insert(version_parts, tonumber(part))
end
assert(#version_parts == 3, "malformed version string: " .. min_version)
min_version_num = version_parts[1]*0x10000 + version_parts[2]*0x100 + version_parts[3]
end
return uv.version() >= min_version_num
end

if _G.jit and _G.jit.os then
-- Luajit provides explicit platform detection
utils.isWindows = _G.jit.os == "Windows"
Expand All @@ -22,12 +36,17 @@ else
utils.isLinux = false

if not utils.isWindows then
-- TODO Use uv.os_uname() when the minimum required libuv provides it
local popen_handle = io.popen('uname -s')
if popen_handle then
local uname_os = assert(popen_handle:read('*a'))
popen_handle:close()
utils.isLinux = uname_os:lower() == 'linux'
-- Use os_uname if it's available, fallback to popen
if utils.uvVersionGEQ("1.25.0") then
local uname = uv.os_uname()
utils.isLinux = uname.sysname:lower() == 'linux'
else
local popen_handle = io.popen('uname -s')
if popen_handle then
local uname_os = assert(popen_handle:read('*a'))
popen_handle:close()
utils.isLinux = uname_os:lower() == 'linux'
end
end
end
end
Expand Down Expand Up @@ -181,19 +200,5 @@ function utils.prettyPrint(...)
print(table.concat(arguments, "\t"))
end

function utils.uvVersionGEQ(min_version)
if not min_version then return true end
local min_version_num = min_version
if type(min_version) == "string" then
local version_parts = {}
for part in min_version:gmatch("%d+") do
table.insert(version_parts, tonumber(part))
end
assert(#version_parts == 3, "malformed version string: " .. min_version)
min_version_num = version_parts[1]*0x10000 + version_parts[2]*0x100 + version_parts[3]
end
return uv.version() >= min_version_num
end

return utils

0 comments on commit 7877a22

Please sign in to comment.