This target allows you to have git installed in one location, and have symbolic links to all of the programs installed in another location. For example, if git was installed to /opt/git with make prefix=/opt/git install you can install symbolic links in /usr/local/bin with make symlinkprefix=/usr/local prefix=/opt/git \ install-symlinks This makes it reasonably easy to remove such a package, by doing rm -rf /opt/git and then removing stale links with find /usr/local -xtype l -print0|xargs -0 rm (be sure to first see whether you indeed get only stale links listed). This works by copying the directory hierarchy of $prefix to $symlinkprefix (not copying or descending to any directories of the name git* matched case-insensitively), then linking all the rest. Signed-off-by: David Kastrup <dak@xxxxxxx> --- Makefile | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 73b487f..7e53378 100644 --- a/Makefile +++ b/Makefile @@ -142,6 +142,7 @@ ALL_LDFLAGS = $(LDFLAGS) STRIP ?= strip prefix = $(HOME) +symlinkprefix = /usr/local bindir = $(prefix)/bin gitexecdir = $(bindir) sharedir = $(prefix)/share @@ -996,7 +997,13 @@ install-doc: quick-install-doc: $(MAKE) -C Documentation quick-install - +# The somewhat strange looking lines start with an ignored $(MAKE) in +# order to be executed also in make -n calls. +install-symlinks: + @: $(MAKE) && cd '$(prefix_SQ)' && find . -type d ! \( -iname 'git*' -prune \) -exec echo $(INSTALL) -m 755 -d '$(symlinkprefix)/{}' \; + @cd '$(prefix_SQ)' && find . -type d ! \( -iname 'git*' -prune \) -exec $(INSTALL) -m 755 -d '$(symlinkprefix)/{}' \; + @: $(MAKE) && cd '$(prefix_SQ)' && find . \( -type d -iname 'git*' -prune -o ! -type d \) -exec echo $(RM) -r '$(symlinkprefix)/{}' \; -exec echo ln -s '$(prefix_SQ)/{}' '$(symlinkprefix)/{}' \; + @cd '$(prefix_SQ)' && find . \( -type d -iname 'git*' -prune -o ! -type d \) -exec $(RM) -r '$(symlinkprefix)/{}' \; -exec ln -s '$(prefix_SQ)/{}' '$(symlinkprefix)/{}' \; ### Maintainer's dist rules -- 1.5.3.rc2.41.gb47b1 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html