From f0125734d0f57b15976ed829226a2ba4232f1386 Mon Sep 17 00:00:00 2001 From: Aaron Gyes Date: Thu, 8 Sep 2016 22:26:40 -0700 Subject: [PATCH] Improve make install and make uninstall experience Show the gist of what is going on during uninstall. I had overlooked the uninstall target, with it mislabled as having to do translations. Give make uninstall the full treatment here. In addition to showing what is going on, give the user a 5^H7 second warning before we blast away /usr/local/share/fish/ - it's not unthinkable they might have a script or two in there. --- Makefile.in | 72 +++++++++++++++++++++++++++++++++++++++------------- configure.ac | 4 +-- 2 files changed, 56 insertions(+), 20 deletions(-) diff --git a/Makefile.in b/Makefile.in index 07f2948cf..9fa76c2bb 100644 --- a/Makefile.in +++ b/Makefile.in @@ -633,20 +633,20 @@ xcode-install: # from failing for (e.g.) missing man pages or extra_dirs outside the # writeable prefix. # -install-force: all install-translations - @echo +install-force: all install-translations | show-datadir show-sysconfdir show-extra_completionsdir show-extra_functionsdir show-extra_confdir show-mandir $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(bindir) $(v)for i in $(PROGRAMS); do\ $(INSTALL) -m 755 $$i $(DESTDIR)$(bindir);\ echo " Installing $(T_BOLD)$$i$(T_RESET)";\ true ;\ done; + @echo "Creating sysconfdir tree" $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(sysconfdir)/fish + $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(sysconfdir)/fish/conf.d + $(v)$(INSTALL) -m 644 etc/config.fish $(DESTDIR)$(sysconfdir)/fish/ + @echo "Creating datadir tree" $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/completions - $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(extra_completionsdir) ||: - $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(extra_functionsdir) ||: - $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(extra_confdir) ||: $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/functions $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/man/man1 $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/tools @@ -654,27 +654,31 @@ install-force: all install-translations $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/tools/web_config/js $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/tools/web_config/partials $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/fish/tools/web_config/sample_prompts - $(v)$(INSTALL) -m 644 etc/config.fish $(DESTDIR)$(sysconfdir)/fish/ $(v)$(INSTALL) -m 644 share/config.fish $(DESTDIR)$(datadir)/fish/ $(v)$(INSTALL) -m 644 share/__fish_build_paths.fish $(DESTDIR)$(datadir)/fish/ $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/pkgconfig + @echo "Creating empty vendor/'extra_' directories" + $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(extra_completionsdir) ||: + $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(extra_functionsdir) ||: + $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(extra_confdir) ||: + @echo "Installing pkgconfig file" $(v)$(INSTALL) -m 644 fish.pc $(DESTDIR)$(datadir)/pkgconfig - @echo " Installing completions..."; + @echo "Installing the $(T_BOLD)fish completion libraryn$(T_RESET)..."; $(v)for i in $(COMPLETIONS_DIR_FILES:%='%'); do \ $(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/completions/; \ true; \ done; - @echo " Installing functions..."; + @echo "Installing $(T_BOLD)fish functions$(T_RESET)"; $(v)for i in $(FUNCTIONS_DIR_FILES:%='%'); do \ $(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/functions/; \ true; \ done; - @echo " Installing man pages..."; + @echo "Installing $(T_BOLD)man pages$(T_RESET)"; $(v)for i in share/man/man1/*.1; do \ $(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/fish/man/man1/; \ true; \ done; - @echo " Installing tools..."; + @echo "Installing $(T_BOLD)fish tools$(T_RESET)"; $(v)for i in share/tools/*.py; do\ $(INSTALL) -m 755 $$i $(DESTDIR)$(datadir)/fish/tools/; \ true; \ @@ -699,14 +703,14 @@ install-force: all install-translations $(INSTALL) -m 755 $$i $(DESTDIR)$(datadir)/fish/tools/web_config/; \ true; \ done; - @echo " Installing user documentation..."; + @echo "Installing HTML documentation"; $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(docdir) $(v) for i in user_doc/html/* CHANGELOG.md; do \ if test -f $$i; then \ $(INSTALL) -m 644 $$i $(DESTDIR)$(docdir); \ fi; \ done; - @echo " Installing main man pages..."; + @echo "Installing more man pages"; $(v)$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1; $(v) for i in $(MANUALS); do \ $(INSTALL) -m 644 $$i $(DESTDIR)$(mandir)/man1/; \ @@ -717,24 +721,58 @@ install-force: all install-translations # # Uninstall this fish version # -uninstall: uninstall-translations - @echo "Uninstalling translations..." - -$(v) for i in $(PROGRAMS); do \ +uninstall: uninstall-translations | show-prefix show-bindir show-sysconfdir show-datadir show-docdir show-mandir + @echo + @echo "$(T_BOLD)$(T_YELLOWB)Uninstalling fish$(T_RESET) from configured \$$prefix: $(T_BOLD)$(prefix)$(T_RESET)" + @echo + @echo "Deleting programs: [ $(T_BOLD)$(PROGRAMS)$(T_RESET) ] in $(T_ITALIC)$(bindir)$(T_RESET)" + -$(v)for i in $(PROGRAMS); do \ rm -f $(DESTDIR)$(bindir)/$$i; \ done; - -$(v) rm -rf $(DESTDIR)$(sysconfdir)/fish + @echo "Deleting configuration: $(T_BOLD)$(DESTDIR)$(sysconfdir)/fish/*$(T_RESET)" + -$(v)rm -rf $(DESTDIR)$(sysconfdir)/fish + @echo + @echo "In 5 seconds, $(T_RED)all data$(T_RESET) (includes functions, completions, tools) in" + @echo $$"\t$(T_BOLD)$(DESTDIR)$(datadir)/fish$(T_RESET) will be deleted!" + @echo + @echo $$"If you put things there, $(T_RED)stop now!$(T_RESET) $(T_BOLD)\\c" + @echo $$"$(T_BOLD)5$(T_RESET) \\c" + @sleep 1 + @echo $$"$(T_BOLD)4$(T_RESET) \\c" + @sleep 1 + @echo $$"$(T_BOLD)3$(T_RESET) \\c" + @sleep 1 + @echo $$"$(T_BOLD)2$(T_RESET) \\c" + @sleep 1 + @echo $$"$(T_BOLD)1$(T_RESET) \\c" + @sleep 1 + @echo ... + @sleep 2 + @echo "... deleting $(T_BOLD)$(DESTDIR)$(datadir)/fish/*$(T_RESET)" -$(v) if test -d $(DESTDIR)$(datadir)/fish; then \ - rm -r $(DESTDIR)$(datadir)/fish; \ + rm -rf $(DESTDIR)$(datadir)/fish; \ fi + @echo + @echo "Deleting documentation: $(T_BOLD)$(DESTDIR)$(docdir)/*$(T_RESET)" -$(v) if test -d $(DESTDIR)$(docdir); then \ rm -rf $(DESTDIR)$(docdir);\ fi + @echo + @echo "Deleting pkgconfig file: $(T_BOLD)$(DESTDIR)$(datadir)/pkgconfig/fish.pc$(T_RESET)" -$(v) if test -f $(DESTDIR)$(datadir)/pkgconfig/fish.pc; then \ rm -f $(DESTDIR)$(datadir)/pkgconfig/fish.pc;\ fi + @echo + @echo $$"Deleting \\c" + @echo "[ $(T_BOLD)"`basename $(MANUALS)`$(T_RESET) $$"] in \\c" + @echo "$(T_ITALIC)$(mandir)/man1$(T_RESET)" -$(v) for i in $(MANUALS); do \ rm -rf $(DESTDIR)$(mandir)/man1/`basename $$i`*; \ done; + @echo + @echo "$(T_GREEN)Fish (likely) unintalled$(T_RESET)" + @echo + @echo "$(T_BOLD)./configure --prefix=$(T_RESET) to uninstall fish from a different prefix" .PHONY: uninstall install-translations: $(TRANSLATIONS) diff --git a/configure.ac b/configure.ac index 55ab43b72..ff451ab87 100644 --- a/configure.ac +++ b/configure.ac @@ -11,9 +11,7 @@ m4_syscmd([build_tools/git_version_gen.sh 2>/dev/null]) AC_PREREQ([2.68]) -AC_INIT(fish, - m4_esyscmd([cut -f 3 -d ' ' FISH-BUILD-VERSION-FILE | tr -d '\n']), - fish-users@lists.sourceforge.net) +AC_INIT([fish], m4_esyscmd([cut -f 3 -d ' ' FISH-BUILD-VERSION-FILE | tr -d '\n']),[fish-users@lists.sourceforge.net]) # fish does not use exceptions # Disabling exceptions saves about 20% (!) of the compiled code size