htools: switch hail to the generic binary
[ganeti-local] / Makefile.am
index 4a4b9bf..9c7a33a 100644 (file)
@@ -46,7 +46,8 @@ docdir = $(datadir)/doc/$(PACKAGE)
 HTOOLS_DIRS = \
        htools \
        htools/Ganeti \
-       htools/Ganeti/HTools
+       htools/Ganeti/HTools \
+       htools/Ganeti/HTools/Program
 
 DIRS = \
        autotools \
@@ -82,6 +83,7 @@ BUILDTIME_DIR_AUTOCREATE = \
        $(APIDOC_PY_DIR) \
        $(APIDOC_HS_DIR) \
        $(APIDOC_HS_DIR)/Ganeti $(APIDOC_HS_DIR)/Ganeti/HTools \
+       $(APIDOC_HS_DIR)/Ganeti/HTools/Program \
        $(COVERAGE_DIR) \
        $(COVERAGE_PY_DIR) \
        $(COVERAGE_HS_DIR) \
@@ -278,12 +280,15 @@ docrst = \
        doc/design-2.4.rst \
        doc/design-draft.rst \
        doc/design-oob.rst \
+       doc/design-cpu-pinning.rst \
        doc/design-query2.rst \
        doc/design-x509-ca.rst \
        doc/design-http-server.rst \
        doc/design-impexp2.rst \
        doc/design-lu-generated-jobs.rst \
        doc/design-multi-reloc.rst \
+       doc/design-network.rst \
+       doc/design-chained-jobs.rst \
        doc/cluster-merge.rst \
        doc/design-shared-storage.rst \
        doc/devnotes.rst \
@@ -304,8 +309,8 @@ docrst = \
 HS_PROGS = \
        htools/hbal \
        htools/hscan \
-       htools/hail \
-       htools/hspace
+       htools/hspace \
+       htools/htools
 
 HS_ALL_PROGS = $(HS_PROGS) htools/test
 HS_PROG_SRCS = $(patsubst %,%.hs,$(HS_ALL_PROGS))
@@ -314,11 +319,14 @@ HFLAGS = -O -Wall -fwarn-monomorphism-restriction -fwarn-tabs -ihtools
 # extra flags that can be overriden on the command line
 HEXTRA =
 # exclude options for coverage reports
-HPCEXCL = --exclude Main --exclude Ganeti.HTools.QC
+HPCEXCL = --exclude Main --exclude Ganeti.HTools.QC \
+       --exclude Ganeti.Constants \
+       --exclude Ganeti.HTools.Version
 
 HS_LIB_SRCS = \
        htools/Ganeti/HTools/CLI.hs \
        htools/Ganeti/HTools/Cluster.hs \
+       htools/Ganeti/HTools/Compat.hs \
        htools/Ganeti/HTools/Container.hs \
        htools/Ganeti/HTools/ExtLoader.hs \
        htools/Ganeti/HTools/Group.hs \
@@ -334,6 +342,7 @@ HS_LIB_SRCS = \
        htools/Ganeti/HTools/Text.hs \
        htools/Ganeti/HTools/Types.hs \
        htools/Ganeti/HTools/Utils.hs \
+       htools/Ganeti/HTools/Program/Hail.hs \
        htools/Ganeti/Jobs.hs \
        htools/Ganeti/Luxi.hs \
        htools/Ganeti/OpCodes.hs
@@ -440,10 +449,12 @@ qa_scripts = \
        qa/qa_utils.py
 
 bin_SCRIPTS =
-iallocators_SCRIPTS =
 if WANT_HTOOLS
 bin_SCRIPTS += $(filter-out htools/hail,$(HS_PROGS))
-iallocators_SCRIPTS += $(filter htools/hail,$(HS_PROGS))
+install-exec-hook:
+       @mkdir_p@ $(DESTDIR)$(iallocatorsdir)
+       $(LN_S) -f $(DESTDIR)$(bindir)/htools \
+                  $(DESTDIR)$(iallocatorsdir)/hail
 endif
 
 $(HS_ALL_PROGS): %: %.hs $(HS_LIB_SRCS) $(HS_BUILT_SRCS) Makefile
@@ -457,7 +468,8 @@ $(HS_ALL_PROGS): %: %.hs $(HS_LIB_SRCS) $(HS_BUILT_SRCS) Makefile
          exit 1; \
        fi
        BINARY=$(@:htools/%=%); $(GHC) --make \
-         $(HFLAGS) $(HEXTRA) $(HTOOLS_NOCURL) \
+         $(HFLAGS) $(HEXTRA) \
+         $(HTOOLS_NOCURL) $(HTOOLS_PARALLEL3) \
          -osuf $$BINARY.o -hisuf $$BINARY.hi $@
 
 # for the htools/test binary, we need to enable profiling/coverage
@@ -472,7 +484,7 @@ nodist_sbin_SCRIPTS = \
        $(PYTHON_BOOTSTRAP_SBIN) \
        daemons/ganeti-cleaner
 
-dist_tools_SCRIPTS = \
+dist_tools_PYTHON = \
        tools/burnin \
        tools/cfgshell \
        tools/cfgupgrade \
@@ -483,6 +495,11 @@ dist_tools_SCRIPTS = \
        tools/setup-ssh \
        tools/sanitize-config
 
+dist_tools_SCRIPTS = \
+       $(dist_tools_PYTHON) \
+       tools/kvm-console-wrapper \
+       tools/xm-console-wrapper
+
 pkglib_python_scripts = \
        daemons/import-export \
        tools/check-cert-expired
@@ -568,7 +585,8 @@ man_MANS = \
        man/hail.1 \
        man/hbal.1 \
        man/hscan.1 \
-       man/hspace.1
+       man/hspace.1 \
+       man/htools.1
 
 manrst = $(patsubst %.1,%.rst,$(patsubst %.7,%.rst,$(patsubst %.8,%.rst,$(man_MANS))))
 manhtml = $(patsubst %.rst,%.html,$(manrst))
@@ -663,7 +681,7 @@ dist_TESTS = \
        $(python_tests)
 
 nodist_TESTS =
-if WANT_HTOOLS
+if WANT_HTOOLSTESTS
 nodist_TESTS += $(haskell_tests)
 endif
 
@@ -679,7 +697,7 @@ TESTS_ENVIRONMENT = \
 
 all_python_code = \
        $(dist_sbin_SCRIPTS) \
-       $(dist_tools_SCRIPTS) \
+       $(dist_tools_PYTHON) \
        $(pkglib_python_scripts) \
        $(nodist_pkglib_python_scripts) \
        $(python_tests) \
@@ -716,7 +734,7 @@ lint_python_code = \
        ganeti \
        ganeti/http/server.py \
        $(dist_sbin_SCRIPTS) \
-       $(dist_tools_SCRIPTS) \
+       $(dist_tools_PYTHON) \
        $(pkglib_python_scripts) \
        $(BUILD_BASH_COMPLETION) \
        $(DOCPP) \
@@ -818,7 +836,8 @@ htools/Ganeti/HTools/Version.hs: htools/Ganeti/HTools/Version.hs.in vcs-version
 
 htools/Ganeti/Constants.hs: htools/Ganeti/Constants.hs.in \
        lib/constants.py lib/_autoconf.py $(CONVERT_CONSTANTS)
-       set -e; { cat $< ; $(CONVERT_CONSTANTS); } > $@
+       set -e; \
+       { cat $< ; PYTHONPATH=. $(CONVERT_CONSTANTS); } > $@
 
 lib/_autoconf.py: Makefile vcs-version | lib/.dir
        set -e; \
@@ -876,6 +895,7 @@ lib/_autoconf.py: Makefile vcs-version | lib/.dir
          echo "CONFD_USER = '$(CONFD_USER)'"; \
          echo "CONFD_GROUP = '$(CONFD_GROUP)'"; \
          echo "NODED_USER = '$(NODED_USER)'"; \
+         echo "NODED_GROUP = '$(NODED_GROUP)'"; \
          echo "VCS_VERSION = '$$VCSVER'"; \
          echo "DISK_SEPARATOR = '$(DISK_SEPARATOR)'"; \
          if [ "$(HTOOLS)" ]; then \
@@ -989,6 +1009,11 @@ check-local: check-dirs
        if test "`head -n 1 $(top_srcdir)/README`" != "Ganeti $$expver"; then \
                echo "Incorrect version in README, expected $$expver"; \
                exit 1; \
+       fi; \
+       if test "`sed -ne '4 p' $(top_srcdir)/doc/iallocator.rst`" != \
+                                       "Documents Ganeti version $$expver"; then \
+               echo "Incorrect version in iallocator.rst, expected $$expver"; \
+               exit 1; \
        fi
 
 .PHONY: hs-check
@@ -1087,7 +1112,7 @@ hs-apidoc: $(HS_BUILT_SRCS)
        @test -n "$(HADDOCK)" || \
            { echo 'haddock' not found during configure; exit 1; }
        rm -rf $(APIDOC_HS_DIR)/*
-       @mkdir_p@ $(APIDOC_HS_DIR)/Ganeti/HTools
+       @mkdir_p@ $(APIDOC_HS_DIR)/Ganeti/HTools/Program
        $(HSCOLOUR) -print-css > $(APIDOC_HS_DIR)/Ganeti/hscolour.css
        ln -s ../hscolour.css $(APIDOC_HS_DIR)/Ganeti/HTools/hscolour.css
        set -e ; \
@@ -1096,7 +1121,10 @@ hs-apidoc: $(HS_BUILT_SRCS)
        then OPTGHC="--optghc=$(HTOOLS_NOCURL)"; \
        else OPTGHC=""; \
        fi; \
-       RELSRCS="$(HS_LIB_SRCS:htools/%=%)"; \
+       if [ "$(HTOOLS_PARALLEL3)" ]; \
+       then OPTGHC="$$OPTGHC --optghc=$(HTOOLS_PARALLEL3)"; \
+       fi; \
+       RELSRCS="$(HS_LIB_SRCS:htools/%=%)  $(HS_BUILT_SRCS:htools/%=%)"; \
        for file in $$RELSRCS; do \
                hfile=`echo $$file|sed 's/\\.hs$$//'`.html; \
                $(HSCOLOUR) -css -anchor $$file > ../$(APIDOC_HS_DIR)/$$hfile ; \
@@ -1135,7 +1163,7 @@ py-coverage: $(BUILT_SOURCES) $(python_tests)
 .PHONY: hs-coverage
 hs-coverage: $(haskell_tests)
        cd htools && rm -f *.tix *.mix && ./test
-       mkdir -p $(COVERAGE_HS_DIR)
+       @mkdir_p@ $(COVERAGE_HS_DIR)
        hpc markup --destdir=$(COVERAGE_HS_DIR) htools/test $(HPCEXCL)
        hpc report htools/test $(HPCEXCL)
        ln -sf hpc_index.html $(COVERAGE_HS_DIR)/index.html