Skip to content

Commit

Permalink
XDG desktop files: handle make's DESTDIR to allow for staged installs
Browse files Browse the repository at this point in the history
Update the calls to `desktop-file-install` to pass $DESTDIR as its `--dir`
argument so installing into a staging directory as a non-root user will place
the .desktop files into their proper location. The installation of icon files
with `xdg-icon-resource` into a staging directory will require some equivalent
logic to be applied (working on that).
Also add dashes in front of the calls to `update-desktop-database` to have
`make` ignore the failure of said program when not running as root.
See bug #2127.


git-svn-id: https://svn.code.sf.net/p/vice-emu/code/trunk@45506 379a1393-f5fb-40a0-bcee-ef074d9b53f7
  • Loading branch information
Compyx committed Feb 24, 2025
1 parent 0392ad0 commit d3e1394
Showing 1 changed file with 49 additions and 21 deletions.
70 changes: 49 additions & 21 deletions vice/data/common/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -348,37 +348,65 @@ uninstall-icons:
# this work for the canonical emulator names, alternate names will be a TODO.
install-desktop-files:
if SUPPORT_X64
desktop-file-install $(top_srcdir)/data/common/x64.desktop
if test -n "$(DESTDIR)"; then \
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/x64.desktop ;\
else \
desktop-file-install $(top_srcdir)/data/common/x64.desktop ;\
fi
endif
desktop-file-install $(top_srcdir)/data/common/x64sc.desktop
desktop-file-install $(top_srcdir)/data/common/x64dtv.desktop
desktop-file-install $(top_srcdir)/data/common/xscpu64.desktop
desktop-file-install $(top_srcdir)/data/common/x128.desktop
desktop-file-install $(top_srcdir)/data/common/xplus4.desktop
desktop-file-install $(top_srcdir)/data/common/xvic.desktop
desktop-file-install $(top_srcdir)/data/common/xpet.desktop
desktop-file-install $(top_srcdir)/data/common/xcbm2.desktop
desktop-file-install $(top_srcdir)/data/common/xcbm5x0.desktop
desktop-file-install $(top_srcdir)/data/common/vsid.desktop
if test -n "$(DESTDIR)"; then \
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/x64sc.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/x64dtv.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/xscpu64.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/x128.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/xplus4.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/xvic.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/xpet.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/xcbm2.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/xcbm5x0.desktop ;\
desktop-file-install --dir=$(DESTDIR)/usr/share/applications $(top_srcdir)/data/common/vsid.desktop ;\
else \
desktop-file-install $(top_srcdir)/data/common/x64sc.desktop ;\
desktop-file-install $(top_srcdir)/data/common/x64dtv.desktop ;\
desktop-file-install $(top_srcdir)/data/common/xscpu64.desktop ;\
desktop-file-install $(top_srcdir)/data/common/x128.desktop ;\
desktop-file-install $(top_srcdir)/data/common/xplus4.desktop ;\
desktop-file-install $(top_srcdir)/data/common/xvic.desktop ;\
desktop-file-install $(top_srcdir)/data/common/xpet.desktop ;\
desktop-file-install $(top_srcdir)/data/common/xcbm2.desktop ;\
desktop-file-install $(top_srcdir)/data/common/xcbm5x0.desktop ;\
desktop-file-install $(top_srcdir)/data/common/vsid.desktop ;\
fi

# No `desktop-file-uninstall` exists, nor is there an uninstall option for
# `desktop-file-install` or `desktop-file-uninstall`, so a simple `rm` will
# have to do.
uninstall-desktop-files:
rm -f /usr/share/applications/x64{,dtv,sc}.desktop
rm -f /usr/share/applications/xscpu64.desktop
rm -f /usr/share/applications/x128.desktop
rm -f /usr/share/applications/xplus4.desktop
rm -f /usr/share/applications/xpet.desktop
rm -f /usr/share/applications/xcbm{2,5x0}.desktop
rm -f /usr/share/applications/xvic.desktop
rm -f /usr/share/applications/vsid.desktop
if test -n "$(DESTDIR)"; then \
rm -f $(DESTDIR)/share/applications/x64{,dtv,sc}.desktop ;\
rm -f $(DESTDIR)/share/applications/xscpu64.desktop ;\
rm -f $(DESTDIR)/share/applications/x128.desktop ;\
rm -f $(DESTDIR)/share/applications/xplus4.desktop ;\
rm -f $(DESTDIR)/share/applications/xpet.desktop ;\
rm -f $(DESTDIR)/share/applications/xcbm{2,5x0}.desktop ;\
rm -f $(DESTDIR)/share/applications/xvic.desktop ;\
rm -f $(DESTDIR)/share/applications/vsid.desktop ;\
else \
rm -f /usr/share/applications/x64{,dtv,sc}.desktop ;\
rm -f /usr/share/applications/xscpu64.desktop ;\
rm -f /usr/share/applications/x128.desktop ;\
rm -f /usr/share/applications/xplus4.desktop ;\
rm -f /usr/share/applications/xpet.desktop ;\
rm -f /usr/share/applications/xcbm{2,5x0}.desktop ;\
rm -f /usr/share/applications/xvic.desktop ;\
rm -f /usr/share/applications/vsid.desktop ;\
fi

install-data-hook: install-icons install-desktop-files
update-desktop-database
-update-desktop-database

uninstall-hook: uninstall-icons uninstall-desktop-files
update-desktop-database
-update-desktop-database

# if INSTALL_DESKTOP_FILES
endif
Expand Down

0 comments on commit d3e1394

Please sign in to comment.