72a91d74ce
* gnu/packages/virtualization.scm (system->qemu-target, ganeti): New variables. * gnu/packages/patches/ganeti-deterministic-manual.patch, gnu/packages/patches/ganeti-disable-version-symlinks.patch, gnu/packages/patches/ganeti-drbd-compat.patch, gnu/packages/patches/ganeti-haskell-pythondir.patch, gnu/packages/patches/ganeti-os-disk-size.patch, gnu/packages/patches/ganeti-preserve-PYTHONPATH.patch, gnu/packages/patches/ganeti-shepherd-master-failover.patch, gnu/packages/patches/ganeti-shepherd-support.patch: New files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly.
136 lines
4.8 KiB
Diff
136 lines
4.8 KiB
Diff
This patch adds a new "--disable-version-links" configuration option
|
|
that allows installing to the standard GNU installation directories
|
|
instead of having to add symlinks in /etc/ganeti/{lib,share} that
|
|
points to the right $ganeti/{lib,share}/$version. Mainly to reduce
|
|
service complexity, and because Guix users can install as many versions
|
|
of Ganeti they can muster without resorting to such hacks.
|
|
|
|
diff --git a/Makefile.am b/Makefile.am
|
|
--- a/Makefile.am
|
|
+++ b/Makefile.am
|
|
@@ -66,11 +66,16 @@ SHELL_ENV_INIT = autotools/shell-env-init
|
|
# so, if some currently architecture-independent executable is replaced by an
|
|
# architecture-dependent one (and hence has to go under $(versiondir)), add a link
|
|
# under $(versionedsharedir) but do not change the external links.
|
|
+#
|
|
+# As of Ganeti 3.0, it is possible to disable this behavior by passing
|
|
+# --disable-version-links, in which case the standard GNU installation
|
|
+# directories are used.
|
|
if USE_VERSION_FULL
|
|
DIRVERSION=$(VERSION_FULL)
|
|
else
|
|
DIRVERSION=$(VERSION_MAJOR).$(VERSION_MINOR)
|
|
endif
|
|
+if USE_VERSION_LINKS
|
|
versiondir = $(libdir)/ganeti/$(DIRVERSION)
|
|
defaultversiondir = $(libdir)/ganeti/default
|
|
versionedsharedir = $(prefix)/share/ganeti/$(DIRVERSION)
|
|
@@ -90,6 +95,18 @@ gntpythondir = $(versionedsharedir)
|
|
pkgpython_bindir = $(versionedsharedir)
|
|
gnt_python_sbindir = $(versionedsharedir)
|
|
tools_pythondir = $(versionedsharedir)
|
|
+else
|
|
+myexeclibdir = $(pkglibdir)
|
|
+pkgpython_rpc_stubdir = $(pkgpythondir)/rpc/stub
|
|
+gntpythondir = $(sbindir)
|
|
+pkgpython_bindir = $(pkglibdir)
|
|
+gnt_python_sbindir = $(sbindir)
|
|
+tools_pythondir = $(pkglibdir)
|
|
+versionedsharedir = $(pkglibdir)
|
|
+# This is a hack but works because the only user does $(versiondir)$(datadir).
|
|
+versiondir =
|
|
+endif !USE_VERSION_LINKS
|
|
+
|
|
|
|
clientdir = $(pkgpythondir)/client
|
|
cmdlibdir = $(pkgpythondir)/cmdlib
|
|
@@ -2356,6 +2373,7 @@ src/AutoConf.hs: Makefile src/AutoConf.hs.in $(PRINT_PY_CONSTANTS) \
|
|
-DVERSION_SUFFIX="$(VERSION_SUFFIX)" \
|
|
-DVERSION_FULL="$(VERSION_FULL)" \
|
|
-DDIRVERSION="$(DIRVERSION)" \
|
|
+ -DUSE_VERSION_LINKS="$(USE_VERSION_LINKS)" \
|
|
-DLOCALSTATEDIR="$(localstatedir)" \
|
|
-DSYSCONFDIR="$(sysconfdir)" \
|
|
-DSSH_CONFIG_DIR="$(SSH_CONFIG_DIR)" \
|
|
@@ -2857,6 +2875,7 @@ install-exec-local:
|
|
@mkdir_p@ "$(DESTDIR)${localstatedir}/lib/ganeti" \
|
|
"$(DESTDIR)${localstatedir}/log/ganeti" \
|
|
"$(DESTDIR)${localstatedir}/run/ganeti"
|
|
+if USE_VERSION_LINKS
|
|
for dir in $(SYMLINK_TARGET_DIRS); do \
|
|
@mkdir_p@ $(DESTDIR)$$dir; \
|
|
done
|
|
@@ -2892,7 +2911,8 @@ install-exec-local:
|
|
if INSTALL_SYMLINKS
|
|
$(LN_S) -f $(versionedsharedir) $(DESTDIR)$(sysconfdir)/ganeti/share
|
|
$(LN_S) -f $(versiondir) $(DESTDIR)$(sysconfdir)/ganeti/lib
|
|
-endif
|
|
+endif INSTALL_SYMLINKS
|
|
+endif USE_VERSION_LINKS
|
|
|
|
.PHONY: apidoc
|
|
if WANT_HSAPIDOC
|
|
diff --git a/configure.ac b/configure.ac
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -29,6 +29,23 @@ AC_SUBST([BINDIR], $bindir)
|
|
AC_SUBST([SBINDIR], $sbindir)
|
|
AC_SUBST([MANDIR], $mandir)
|
|
|
|
+# --enable-version-links
|
|
+AC_ARG_ENABLE([version-links],
|
|
+ [AS_HELP_STRING([--enable-version-links],
|
|
+ m4_normalize([install ganeti to version-specific
|
|
+ subdirectories to allow installing multiple versions
|
|
+ in parallel (default: enabled)]))],
|
|
+ [[if test "$enableval" != no; then
|
|
+ USE_VERSION_LINKS=True
|
|
+ else
|
|
+ USE_VERSION_LINKS=False
|
|
+ fi
|
|
+ ]],
|
|
+ [USE_VERSION_LINKS=True
|
|
+ ])
|
|
+AC_SUBST(USE_VERSION_LINKS, $USE_VERSION_LINKS)
|
|
+AM_CONDITIONAL([USE_VERSION_LINKS], [test "$USE_VERSION_LINKS" = True])
|
|
+
|
|
# --enable-versionfull
|
|
AC_ARG_ENABLE([versionfull],
|
|
[AS_HELP_STRING([--enable-versionfull],
|
|
diff --git a/lib/bootstrap.py b/lib/bootstrap.py
|
|
--- a/lib/bootstrap.py
|
|
+++ b/lib/bootstrap.py
|
|
@@ -944,7 +944,7 @@ def SetupNodeDaemon(opts, cluster_name, node, ssh_port):
|
|
debug=opts.debug, verbose=opts.verbose,
|
|
use_cluster_key=True, ask_key=opts.ssh_key_check,
|
|
strict_host_check=opts.ssh_key_check,
|
|
- ensure_version=True)
|
|
+ ensure_version=constants.USE_VERSION_LINKS)
|
|
|
|
_WaitForSshDaemon(node, ssh_port)
|
|
_WaitForNodeDaemon(node)
|
|
diff --git a/src/AutoConf.hs.in b/src/AutoConf.hs.in
|
|
--- a/src/AutoConf.hs.in
|
|
+++ b/src/AutoConf.hs.in
|
|
@@ -64,6 +64,9 @@ versionFull = "VERSION_FULL"
|
|
dirVersion :: String
|
|
dirVersion = "DIRVERSION"
|
|
|
|
+useVersionLinks :: Bool
|
|
+useVersionLinks = USE_VERSION_LINKS
|
|
+
|
|
localstatedir :: String
|
|
localstatedir = "LOCALSTATEDIR"
|
|
|
|
diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
|
|
--- a/src/Ganeti/Constants.hs
|
|
+++ b/src/Ganeti/Constants.hs
|
|
@@ -164,5 +164,8 @@ versionRevision = AutoConf.versionRevision
|
|
dirVersion :: String
|
|
dirVersion = AutoConf.dirVersion
|
|
|
|
+useVersionLinks :: Bool
|
|
+useVersionLinks = AutoConf.useVersionLinks
|
|
+
|
|
osApiV10 :: Int
|
|
osApiV10 = 10
|