From 521e3b1dc4df1038c5dbf9a8b71c2a16fcd44edd1bb7e3027630f6fc0d491129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= Date: Fri, 31 Oct 2025 18:16:57 +0100 Subject: [PATCH] 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. --- lua-macros.changes | 7 +++++++ macros.lua | 52 ++++++++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/lua-macros.changes b/lua-macros.changes index 212fcad..d929442 100644 --- a/lua-macros.changes +++ b/lua-macros.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Nov 3 00:20:49 UTC 2025 - Matej Cepl + +- 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 diff --git a/macros.lua b/macros.lua index 5d4307f..9f5c711 100644 --- a/macros.lua +++ b/macros.lua @@ -44,14 +44,14 @@ print(rpm.expand("%{_datadir}/lua/%{lua_version}")) print(result) } %lua_version_default %{lua: -local result = 5.4 +local result = "5.4" local ver = rpm.expand("%{?suse_version}") if #ver > 0 then ver = tonumber(ver) if ver < 1500 then - result = 5.1 + result = "5.1" elseif ver < 1600 then - result = 5.3 + result = "5.3" end end print(result) @@ -63,31 +63,39 @@ print(result) print(nodots) } # Lua default version -# This REQUIRES macro %{mod_name} to be defined. +# This REQUIRES macro %%{mod_name} to be defined. # -e: Exclude lua prefix # -n: Specify name %lua_provides(en:) %{lua: local mod_name = rpm.expand("%{?mod_name}") -if mod_name == "" then - print("-- Error: %{mod_name} is not defined!") +if mod_name == "" or mod_name == "%{?mod_name}" then + print("-- Error: %%{mod_name} is not defined!") return end -print([[ -%if "%{lua_version_nodots}" == "%{lua_version_default_nodots}" -%if 0%{?-n:1} -Provides: %{-n*} = %{version}-%{release} -Obsoletes: %{-n*} < %{version}-%{release} -%else -%if 0%{?-e:1} -Provides: %{mod_name} = %{version}-%{release} -Obsoletes: %{mod_name} < %{version}-%{release} -%else -Provides: lua-%{mod_name} = %{version}-%{release} -Obsoletes: lua-%{mod_name} < %{version}-%{release} -%endif -%endif -%endif -]]) + +local lua_ver_nodots = rpm.expand("%{lua_version_nodots}") +local lua_ver_default_nodots = rpm.expand("%{lua_version_default_nodots}") +local flavor = rpm.expand("%{flavor}") +local version = rpm.expand("%{version}") +local release = rpm.expand("%{release}") + +local provides_name +if rpm.expand("%{-n*}") ~= "" then + provides_name = rpm.expand("%{-n*}") +elseif rpm.expand("%{-e:1}") == "1" then + provides_name = mod_name +else + provides_name = "lua-" .. mod_name +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