SHA256
10
0
forked from pool/lua-macros

fix: convert %lua_provides to pure Lua for better control

Converts the logic within the %lua_provides macro from a
multi-line string of RPM macros to native Lua code. This allows
for more robust conditional logic, especially when checking for
default Lua versions and handling provides/obsoletes.
This commit is contained in:
2025-10-31 18:16:57 +01:00
parent d1f0f1035b
commit 521e3b1dc4
2 changed files with 37 additions and 22 deletions

View File

@@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Nov 3 00:20:49 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Finally broke %lua_provides to be working. I got stumped by the
craziness of rpm which runs Lua interpreter with locales and
crazy reformatting of integers.
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Oct 20 21:30:36 UTC 2025 - Matej Cepl <mcepl@cepl.eu> Mon Oct 20 21:30:36 UTC 2025 - Matej Cepl <mcepl@cepl.eu>

View File

@@ -44,14 +44,14 @@ print(rpm.expand("%{_datadir}/lua/%{lua_version}"))
print(result) print(result)
} }
%lua_version_default %{lua: %lua_version_default %{lua:
local result = 5.4 local result = "5.4"
local ver = rpm.expand("%{?suse_version}") local ver = rpm.expand("%{?suse_version}")
if #ver > 0 then if #ver > 0 then
ver = tonumber(ver) ver = tonumber(ver)
if ver < 1500 then if ver < 1500 then
result = 5.1 result = "5.1"
elseif ver < 1600 then elseif ver < 1600 then
result = 5.3 result = "5.3"
end end
end end
print(result) print(result)
@@ -63,31 +63,39 @@ print(result)
print(nodots) print(nodots)
} }
# Lua default version # Lua default version
# This REQUIRES macro %{mod_name} to be defined. # This REQUIRES macro %%{mod_name} to be defined.
# -e: Exclude lua prefix # -e: Exclude lua prefix
# -n: Specify name # -n: Specify name
%lua_provides(en:) %{lua: %lua_provides(en:) %{lua:
local mod_name = rpm.expand("%{?mod_name}") local mod_name = rpm.expand("%{?mod_name}")
if mod_name == "" then if mod_name == "" or mod_name == "%{?mod_name}" then
print("-- Error: %{mod_name} is not defined!") print("-- Error: %%{mod_name} is not defined!")
return return
end end
print([[
%if "%{lua_version_nodots}" == "%{lua_version_default_nodots}" local lua_ver_nodots = rpm.expand("%{lua_version_nodots}")
%if 0%{?-n:1} local lua_ver_default_nodots = rpm.expand("%{lua_version_default_nodots}")
Provides: %{-n*} = %{version}-%{release} local flavor = rpm.expand("%{flavor}")
Obsoletes: %{-n*} < %{version}-%{release} local version = rpm.expand("%{version}")
%else local release = rpm.expand("%{release}")
%if 0%{?-e:1}
Provides: %{mod_name} = %{version}-%{release} local provides_name
Obsoletes: %{mod_name} < %{version}-%{release} if rpm.expand("%{-n*}") ~= "" then
%else provides_name = rpm.expand("%{-n*}")
Provides: lua-%{mod_name} = %{version}-%{release} elseif rpm.expand("%{-e:1}") == "1" then
Obsoletes: lua-%{mod_name} < %{version}-%{release} provides_name = mod_name
%endif else
%endif provides_name = "lua-" .. mod_name
%endif end
]])
if lua_ver_nodots == lua_ver_default_nodots then
print("Provides: " .. provides_name .. " = " .. version .. "-" .. release .. "\\n")
print("Obsoletes: " .. provides_name .. " < " .. version .. "-" .. release .. "\\n")
end
if flavor == "luajit" then
print("Obsoletes: lua51-" .. mod_name .. " <= " .. version .. "-" .. release .. "\\n")
end
} }
# LuaRocks # LuaRocks