Add configure option on whether to install symlinks
authorKlaus Aehlig <aehlig@google.com>
Wed, 21 Aug 2013 09:30:01 +0000 (11:30 +0200)
committerKlaus Aehlig <aehlig@google.com>
Thu, 22 Aug 2013 15:02:04 +0000 (17:02 +0200)
As of Ganeti 2.10, all files are installed into a single, version
specific, directory. In this way, several Ganeti versions can be
installed in parallel. Appropriate symbolic links in the search path
will be added by the Ganeti upgrade procedure. For the initial
installation, however, links in the search path are needed. So make
the installation of symbolic links a configure-time option, defaulting
to the current behavior, that that installation is visible in the
path.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Thomas Thrainer <thomasth@google.com>

Makefile.am
configure.ac

index a4ae5ee..e99707e 100644 (file)
@@ -70,6 +70,17 @@ iallocatorsdir = $(pkglibdir)/iallocators
 pytoolsdir = $(pkgpythondir)/tools
 docdir = $(versiondir)$(datadir)/doc/$(PACKAGE)
 
+SYMLINK_TARGET_DIRS = \
+       $(pythondir) \
+       $(libdir)/ganeti/iallocators \
+       $(exec_prefix)/bin \
+       $(exec_prefix)/sbin \
+       $(datarootdir)/man/man1 \
+       $(datarootdir)/man/man7 \
+       $(datarootdir)/man/man8
+SYMLINK_DIRS = \
+       $(pythondir)/ganeti \
+       $(libdir)/ganeti/tools
 
 # Delete output file if an error occurred while building it
 .DELETE_ON_ERROR:
@@ -936,6 +947,11 @@ nodist_sbin_SCRIPTS = \
        $(PYTHON_BOOTSTRAP_SBIN) \
        daemons/ganeti-cleaner
 
+# strip path prefixes off the sbin scripts
+all_sbin_scripts = \
+       $(patsubst tools/%,%,$(patsubst daemons/%,%,$(patsubst scripts/%,%,\
+       $(patsubst src/%,%,$(dist_sbin_SCRIPTS) $(nodist_sbin_SCRIPTS)))))
+
 if ENABLE_CONFD
 src/ganeti-confd: src/hconfd
        cp -f $< $@
@@ -995,6 +1011,11 @@ myexeclib_SCRIPTS = \
        $(pkglib_python_scripts) \
        $(HS_MYEXECLIB_PROGS)
 
+# strip path prefixes off the sbin scripts
+all_myexeclib_scripts = \
+       $(patsubst tools/%,%,$(patsubst daemons/%,%,\
+       $(patsubst src/%,%,$(myexeclib_SCRIPTS))))
+
 nodist_myexeclib_SCRIPTS = \
        $(nodist_pkglib_python_scripts)
 
@@ -1101,6 +1122,10 @@ maninput = \
        $(patsubst %.html,%.html.in,$(manhtml)) \
        $(mangen)
 
+manfullpath = $(patsubst man/%.1,man1/%.1,\
+       $(patsubst man/%.7,man7/%.7,\
+       $(patsubst man/%.8,man8/%.8,$(man_MANS))))
+
 TEST_FILES = \
        test/autotools/autotools-check-news.test \
        test/data/htools/clean-nonzero-score.data \
@@ -2066,6 +2091,29 @@ install-exec-local:
        @mkdir_p@ "$(DESTDIR)${localstatedir}/lib/ganeti" \
          "$(DESTDIR)${localstatedir}/log/ganeti" \
          "$(DESTDIR)${localstatedir}/run/ganeti"
+if INSTALL_SYMLINKS
+       for dir in $(SYMLINK_TARGET_DIRS); do \
+         @mkdir_p@  $(DESTDIR)$$dir; \
+       done
+       for prog in $(HS_HTOOLS_PROGS); do \
+         $(LN_S) $(bindir)/$$prog $(DESTDIR)$(exec_prefix)/bin/$$prog; \
+       done
+       $(LN_S) $(bindir)/htools $(DESTDIR)$(libdir)/ganeti/iallocators/hail
+       for prog in $(all_sbin_scripts); do \
+         $(LN_S) $(sbindir)/$$prog $(DESTDIR)$(exec_prefix)/sbin/$$prog; \
+       done
+       for link in $(SYMLINK_DIRS); do \
+         $(LN_S) $(versiondir)$$link $(DESTDIR)$$link; \
+       done
+       for prog in $(all_myexeclib_scripts); do \
+         $(LN_S) $(pkglibdir)/$$prog $(DESTDIR)$(libdir)/ganeti/$$prog; \
+       done
+       if ! test -n '$(ENABLE_MANPAGES)'; then \
+         for man in $(manfullpath); do \
+           $(LN_S) $(versiondir)$(datarootdir)/man/$$man $(DESTDIR)$(datarootdir)/man/$$man; \
+         done; \
+       fi
+endif
 
 .PHONY: apidoc
 if WANT_HSAPIDOC
index 1ecfc8d..1672306 100644 (file)
@@ -20,6 +20,22 @@ AC_SUBST([VERSION_REVISION], gnt_version_revision)
 AC_SUBST([VERSION_SUFFIX], gnt_version_suffix)
 AC_SUBST([VERSION_FULL], gnt_version_full)
 
+# --enable-symlinks
+AC_ARG_ENABLE([symlinks],
+  [AS_HELP_STRING([--enable-symlinks],
+                  m4_normalize([also install symlinks under $PREFIX pointing
+                  into the Ganeti package directory (default: enabled)]))],
+  [[if test "$enableval" != no; then
+      INSTALL_SYMLINKS=yes
+    else
+      INSTALL_SYMLINKS=no
+    fi
+  ]],
+  [INSTALL_SYMLINKS=yes
+  ])
+AC_SUBST(INSTALL_SYMLINKS, $INSTALL_SYMLINKS)
+AM_CONDITIONAL([INSTALL_SYMLINKS], [test "$INSTALL_SYMLINKS" = yes])
+
 # --with-ssh-initscript=...
 AC_ARG_WITH([ssh-initscript],
   [AS_HELP_STRING([--with-ssh-initscript=SCRIPT],