108 lines
4.5 KiB
Diff
108 lines
4.5 KiB
Diff
|
--- a/flavor.in
|
||
|
+++ b/flavor.in
|
||
|
@@ -127,14 +127,11 @@
|
||
|
# Commands for RPM scriptlets: These must not be empty even if there is no operation for
|
||
|
# either update-alternatives or libalternatives.
|
||
|
|
||
|
-%#FLAVOR#_install_alternative() \# #FLAVOR#_install_alternative: \
|
||
|
-%{?!with_libalternatives:%{_python_macro_init}%{lua:python_install_ualternative("#FLAVOR#") \
|
||
|
-}}%{?with_libalternatives:\: \# no install scriptlet action for libalternatives}
|
||
|
+%#FLAVOR#_install_alternative() %{_python_macro_init} \
|
||
|
+%{lua:python_install_alternative("#FLAVOR#")}
|
||
|
|
||
|
-%#FLAVOR#_uninstall_alternative() \# #FLAVOR#_uninstall_alternative: \
|
||
|
-%{?!with_libalternatives:%{uninstall_alternative -n %1 -t %{_bindir}/%1-%{#FLAVOR#_bin_suffix} \
|
||
|
-}}%{?with_libalternatives:\: \# no uninstall scriptlet action for libalternatives}
|
||
|
+%#FLAVOR#_uninstall_alternative() \
|
||
|
+%{uninstall_alternative -n %1 -t %{_bindir}/%1-%#FLAVOR#_bin_suffix}
|
||
|
|
||
|
-%#FLAVOR#_reset_alternative() \# #FLAVOR#_reset_alternative: \
|
||
|
-%{?!with_libalternatives:\: \# reset action only for libalternatives \
|
||
|
-}%{?with_libalternatives:%{reset_alternative -n %1 -t %{_bindir}/%1-%{#FLAVOR#_bin_suffix}}}
|
||
|
+%#FLAVOR#_reset_alternative() \
|
||
|
+%{reset_alternative -n %1 -t %{_bindir}/%1-%#FLAVOR#_bin_suffix}
|
||
|
--- a/functions.lua
|
||
|
+++ b/functions.lua
|
||
|
@@ -116,6 +116,70 @@
|
||
|
end
|
||
|
return prio
|
||
|
end
|
||
|
+function python_install_alternative(flavor)
|
||
|
+ local prio = alternative_prio(flavor)
|
||
|
+ local binsuffix = rpm.expand("%" .. flavor .. "_bin_suffix")
|
||
|
+ local libalternatives = rpm.expand("%{with libalternatives}")
|
||
|
+
|
||
|
+ local params = {}
|
||
|
+ for p in string.gmatch(rpm.expand("%*"), "%S+") do
|
||
|
+ table.insert(params, p)
|
||
|
+ end
|
||
|
+
|
||
|
+ if #params == 0 then
|
||
|
+ print("error")
|
||
|
+ return
|
||
|
+ end
|
||
|
+
|
||
|
+ if libalternatives == "1" then
|
||
|
+ for _, v in ipairs(params) do
|
||
|
+ local link, name, path = python_alternative_names(v, binsuffix)
|
||
|
+ if not v:match(".+%.%d") then
|
||
|
+ local group = ""
|
||
|
+ local man = ""
|
||
|
+ for _, v2 in ipairs(params) do
|
||
|
+ local man_match = v2:match(".+%.%d")
|
||
|
+ if man_match then
|
||
|
+ if string.sub(man_match,1,-3) == v then
|
||
|
+ local man_entry = v .. "-" .. binsuffix .. "." .. string.sub(man_match,man_match:len())
|
||
|
+ if man:len() > 0 then
|
||
|
+ man = man .. ", " .. man_entry
|
||
|
+ else
|
||
|
+ man = man_entry
|
||
|
+ end
|
||
|
+ end
|
||
|
+ else
|
||
|
+ if group:len() > 0 then
|
||
|
+ group = group .. ", " .. v2
|
||
|
+ else
|
||
|
+ group = v2
|
||
|
+ end
|
||
|
+ end
|
||
|
+ end
|
||
|
+ local bindir = rpm.expand("%_bindir")
|
||
|
+ local datadir = rpm.expand("%_datadir")
|
||
|
+ print(string.format("mkdir -p %s/libalternatives/%s\n", datadir, v))
|
||
|
+ print(string.format("echo binary=%s/%s-%s >%s/libalternatives/%s/%s.conf\n",
|
||
|
+ bindir, v, binsuffix, datadir, v, prio))
|
||
|
+ if man:len() > 0 then
|
||
|
+ print(string.format("echo man=%s >>%s/libalternatives/%s/%s.conf\n",
|
||
|
+ man, datadir, v, prio))
|
||
|
+ end
|
||
|
+ if group:len() > 0 then
|
||
|
+ print(string.format("echo group=%s >>%s/libalternatives/%s/%s.conf\n",
|
||
|
+ group, datadir, v, prio))
|
||
|
+ end
|
||
|
+ end
|
||
|
+ end
|
||
|
+ else
|
||
|
+ local link, name, path = python_alternative_names(params[1], binsuffix)
|
||
|
+ print(string.format("update-alternatives --quiet --install %s %s %s %s", link, name, path, prio))
|
||
|
+ table.remove(params, 1)
|
||
|
+ for _, v in ipairs(params) do
|
||
|
+ print(string.format(" \\\n --slave %s %s %s", python_alternative_names(v, binsuffix)))
|
||
|
+ end
|
||
|
+ end
|
||
|
+end
|
||
|
function python_install_ualternative(flavor)
|
||
|
local prio = alternative_prio(flavor)
|
||
|
local binsuffix = rpm.expand("%" .. flavor .. "_bin_suffix")
|
||
|
--- a/macros/001-alternatives
|
||
|
+++ b/macros/001-alternatives
|
||
|
@@ -41,7 +41,7 @@
|
||
|
%define alternative_name %{-n:%{-n*}}%{!-n:%1} \
|
||
|
%define alternative_target %{-t:%{-t*}}%{!-t:%2} \
|
||
|
if [ "$1" -gt 0 ] && [ -f %{_sbindir}/update-alternatives ]; then \
|
||
|
- update-alternatives --quiet --remove "%{alternative_name}" "%{alternative_target}" \
|
||
|
+ update-alternatives --quiet --remove "%{alternative_name}" "%{alternative_target}" || true \
|
||
|
fi \
|
||
|
%{nil}
|
||
|
|