Reduce use of alternatives

Attempt to fix #2277689 without reintroducing #684447.  We shouldn’t need to use alternatives for the versioned binaries, since there should only ever be one version installed at a time.
This commit is contained in:
Peter Oliver 2024-07-03 00:55:41 +01:00
parent 9bbdcd5307
commit 21c4c1004d
2 changed files with 39 additions and 29 deletions

View File

@ -4,16 +4,15 @@
# using if there is an alternative.
if [ "$XDG_SESSION_TYPE" = 'x11' ]; then
emacs="$(readlink -f /usr/bin/emacs)"
emacs="${emacs##*/}"
emacs="${emacs%-*.*}"
if [ "$emacs" = 'emacs' ]; then
case "$(readlink -f /usr/bin/emacs)" in
*/emacs-*.*-pgtk)
if type emacs-gtk+x11 >/dev/null; then
exec emacs-gtk+x11 "$@"
elif type emacs-lucid >/dev/null; then
exec emacs-lucid "$@"
fi
fi
;;
esac
fi
exec emacs "$@"

View File

@ -413,16 +413,23 @@ touch %{buildroot}%{_bindir}/emacs
gunzip %{buildroot}%{_datadir}/emacs/%{version}/lisp/jka-compr.el.gz
gunzip %{buildroot}%{_datadir}/emacs/%{version}/lisp/jka-cmpr-hook.el.gz
# Install the emacs with GTK toolkit
# Install the emacs binary with pure GTK toolkit
mv %{buildroot}%{_bindir}/emacs-%{version} %{buildroot}%{_bindir}/emacs-%{version}-pgtk
ln -s emacs-%{version}-pgtk %{buildroot}%{_bindir}/emacs-pgtk
# Install the emacs binary using mixed GTK and X11
install -p -m 0755 build-gtk+x11/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-gtk+x11
ln -s emacs-%{version}-gtk+x11 %{buildroot}%{_bindir}/emacs-gtk+x11
# Install the emacs with Lucid toolkit
install -p -m 0755 build-lucid/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-lucid
ln -s emacs-%{version}-lucid %{buildroot}%{_bindir}/emacs-lucid
# Install the emacs without graphical display
install -p -m 0755 build-nw/src/emacs %{buildroot}%{_bindir}/emacs-%{version}-nw
ln -s emacs-%{version}-nw %{buildroot}%{_bindir}/emacs-%{version}-nox
ln -s emacs-nw %{buildroot}%{_bindir}/emacs-nox
ln -s emacs-%{version}-nw %{buildroot}%{_bindir}/emacs-nox
ln -s emacs-%{version}-nw %{buildroot}%{_bindir}/emacs-nw
# Make sure movemail isn't setgid
chmod 755 %{buildroot}%{emacs_libexecdir}/movemail
@ -567,63 +574,67 @@ appstream-util validate-relax --nonet %{buildroot}/%{_metainfodir}/*.metainfo.xm
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%preun
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version} || :
if [ $1 = 0 ]; then
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-pgtk || :
fi
%posttrans
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version} 80 || :
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-pgtk 80 || :
%preun lucid
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version}-lucid || :
/usr/sbin/alternatives --remove emacs-lucid %{_bindir}/emacs-%{version}-lucid || :
if [ $1 = 0 ]; then
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-lucid || :
fi
%posttrans lucid
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version}-lucid 70 || :
/usr/sbin/alternatives --install %{_bindir}/emacs-lucid emacs-lucid %{_bindir}/emacs-%{version}-lucid 60 || :
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-lucid 70 || :
%preun gtk+x11
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version}-gtk+x11 || :
/usr/sbin/alternatives --remove emacs-gtk+x11 %{_bindir}/emacs-%{version}-gtk+x11 || :
if [ $1 = 0 ]; then
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-gtk+x11 || :
fi
%posttrans gtk+x11
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version}-gtk+x11 75 || :
/usr/sbin/alternatives --install %{_bindir}/emacs-gtk+x11 emacs-gtk+x11 %{_bindir}/emacs-%{version}-gtk+x11 60 || :
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-gtk+x11 75 || :
%preun nw
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-%{version}-nw || :
/usr/sbin/alternatives --remove emacs-nw %{_bindir}/emacs-%{version}-nw || :
if [ $1 = 0 ]; then
/usr/sbin/alternatives --remove emacs %{_bindir}/emacs-nw || :
fi
%posttrans nw
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-%{version}-nw 70 || :
/usr/sbin/alternatives --install %{_bindir}/emacs-nw emacs-nw %{_bindir}/emacs-%{version}-nw 60 || :
/usr/sbin/alternatives --install %{_bindir}/emacs emacs %{_bindir}/emacs-nw 70 || :
%preun common
/usr/sbin/alternatives --remove emacs.etags %{_bindir}/etags.emacs || :
if [ $1 = 0 ]; then
/usr/sbin/alternatives --remove emacs.etags %{_bindir}/etags.emacs || :
fi
%posttrans common
/usr/sbin/alternatives --install %{_bindir}/etags emacs.etags %{_bindir}/etags.emacs 80 \
--slave %{_mandir}/man1/etags.1.gz emacs.etags.man %{_mandir}/man1/etags.emacs.1.gz || :
%files -f pgtk-eln-filelist -f pgtk-dirs
%{_bindir}/emacs-%{version}
%{_bindir}/emacs-%{version}-pgtk
%attr(0755,-,-) %ghost %{_bindir}/emacs
%{_datadir}/glib-2.0/schemas/org.gnu.emacs.defaults.gschema.xml
%files gtk+x11 -f gtk+x11-eln-filelist -f gtk+x11-dirs
%{_bindir}/emacs-%{version}-gtk+x11
%attr(0755,-,-) %ghost %{_bindir}/emacs
%attr(0755,-,-) %ghost %{_bindir}/emacs-gtk+x11
%{_bindir}/emacs-%{version}-gtk+x11
%{_bindir}/emacs-gtk+x11
%files lucid -f lucid-eln-filelist -f lucid-dirs
%{_bindir}/emacs-%{version}-lucid
%attr(0755,-,-) %ghost %{_bindir}/emacs
%attr(0755,-,-) %ghost %{_bindir}/emacs-lucid
%{_bindir}/emacs-%{version}-lucid
%{_bindir}/emacs-lucid
%files nw -f nw-eln-filelist -f nw-dirs
%attr(0755,-,-) %ghost %{_bindir}/emacs
%{_bindir}/emacs-%{version}-nox
%{_bindir}/emacs-%{version}-nw
%{_bindir}/emacs-nox
%attr(0755,-,-) %ghost %{_bindir}/emacs
%attr(0755,-,-) %ghost %{_bindir}/emacs-nw
%{_bindir}/emacs-nw
%files -n emacsclient
%license etc/COPYING