From adf544bb374f8f5da410f44a2b98a4ebcbb5b859edebee1c3125d9f9aad233e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= Date: Sat, 18 Oct 2025 21:29:36 +0200 Subject: [PATCH] WIP fix: make macros.lua work with RPM 4.14.3 on Leap 15.5 --- macros.lua | 59 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/macros.lua b/macros.lua index bef1151..56716e0 100644 --- a/macros.lua +++ b/macros.lua @@ -6,12 +6,12 @@ local f = io.popen("lua -e 'print(_VERSION)'") local output = f:read("*a") f:close() local ver = output:match("Lua (%d%.%d)") -print(ver) +print(ver:gsub("^%s*(.-)%s*$", "%1")) } %lua_version_nodots %{lua: local ver = rpm.expand("%{lua_version}") local nodots = ver:gsub("%.", "") - print(nodots) + print(nodots:gsub("^%s*(.-)%s*$", "%1")) } # compiled modules should go here %lua_archdir %{lua: @@ -64,30 +64,47 @@ print(result) } # Lua default version # This REQUIRES macro %{mod_name} to be defined. -# -e: Exclude lua prefix -# -n: Specify name -%lua_provides(en:) %{lua: +# Optionally you can define macro `lua_provides_type`, which can +# have two different values: +# 'exclude-prefix' which excludes lua prefix, or +# anything else which is used as the provided symbol +%lua_provides %{lua: local mod_name = rpm.expand("%{?mod_name}") if 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 current_ver = rpm.expand("%{lua_version_nodots}"):gsub("^%s*(.-)%s*$", "%1") +local default_ver = rpm.expand("%{lua_version_default_nodots}"):gsub("^%s*(.-)%s*$", "%1") + +local output = "" + +-- Check if we are building for the default Lua version +if current_ver == default_ver then + + local package_type = rpm.expand("%{?lua_provides_type}"):gsub("^%s*(.-)%s*$", "%1") + local package_name = mod_name + + -- Check for type defined externally (e.g., via --define 'lua_provides_type package-name') + if package_type == "exclude-prefix" then + -- Use name without "lua-" prefix + package_name = mod_name + elseif package_type ~= "" then + -- Use custom name defined by package_type + package_name = package_type + else + -- Default: Use 'lua-' prefix + package_name = "lua-" .. mod_name + end + + local version = rpm.expand("%{version}") + local release = rpm.expand("%{release}") + + output = "Provides: " .. package_name .. " = " .. version .. "-" .. release .. " Obsoletes: " .. package_name .. " < " .. version .. "-" .. release +end + +print(output) } # LuaRocks