Simplify logic in Node operations
[ganeti-local] / Makefile.am
index d538a84..aa0d2f9 100644 (file)
@@ -252,7 +252,8 @@ rapi_PYTHON = \
        lib/rapi/client.py \
        lib/rapi/client_utils.py \
        lib/rapi/connector.py \
-       lib/rapi/rlib2.py
+       lib/rapi/rlib2.py \
+       lib/rapi/testutils.py
 
 http_PYTHON = \
        lib/http/__init__.py \
@@ -346,7 +347,7 @@ docrst = \
        doc/walkthrough.rst
 
 HS_PROGS = htools/htools
-HS_BIN_ROLES = hbal hscan hspace
+HS_BIN_ROLES = hbal hscan hspace hinfo
 
 HS_ALL_PROGS = $(HS_PROGS) htools/test
 HS_PROG_SRCS = $(patsubst %,%.hs,$(HS_ALL_PROGS))
@@ -354,6 +355,8 @@ HS_PROG_SRCS = $(patsubst %,%.hs,$(HS_ALL_PROGS))
 HFLAGS = -O -Wall -fwarn-monomorphism-restriction -fwarn-tabs -ihtools
 # extra flags that can be overriden on the command line
 HEXTRA =
+# internal extra flags (used for htools/test mainly)
+HEXTRA_INT =
 # exclude options for coverage reports
 HPCEXCL = --exclude Main \
        --exclude Ganeti.Constants \
@@ -383,10 +386,13 @@ HS_LIB_SRCS = \
        htools/Ganeti/HTools/Text.hs \
        htools/Ganeti/HTools/Types.hs \
        htools/Ganeti/HTools/Utils.hs \
+       htools/Ganeti/HTools/Program.hs \
        htools/Ganeti/HTools/Program/Hail.hs \
        htools/Ganeti/HTools/Program/Hbal.hs \
+       htools/Ganeti/HTools/Program/Hinfo.hs \
        htools/Ganeti/HTools/Program/Hscan.hs \
        htools/Ganeti/HTools/Program/Hspace.hs \
+       htools/Ganeti/BasicTypes.hs \
        htools/Ganeti/Jobs.hs \
        htools/Ganeti/Luxi.hs \
        htools/Ganeti/OpCodes.hs \
@@ -511,13 +517,27 @@ $(HS_ALL_PROGS): %: %.hs $(HS_LIB_SRCS) $(HS_BUILT_SRCS) Makefile
          $(HFLAGS) \
          $(HTOOLS_NOCURL) $(HTOOLS_PARALLEL3) \
          -osuf $$BINARY.o -hisuf $$BINARY.hi \
-         $(HEXTRA) $@
+         $(HEXTRA) $(HEXTRA_INT) $@
 
 # for the htools/test binary, we need to enable profiling/coverage
-htools/test: HEXTRA=-fhpc -Wwarn -fno-warn-missing-signatures \
+htools/test: HEXTRA_INT=-fhpc -Wwarn -fno-warn-missing-signatures \
        -fno-warn-monomorphism-restriction -fno-warn-orphans \
        -fno-warn-missing-methods -fno-warn-unused-imports
 
+# rules for building profiling-enabled versions of the haskell
+# programs: hs-prof does the full two-step build, whereas
+# hs-prof-quick does only the final rebuild (hs-prof must have been
+# run before)
+.PHONY: hs-prof hs-prof-quick
+hs-prof:
+       $(MAKE) clean
+       $(MAKE) $(HS_ALL_PROGS) HEXTRA="-osuf .o"
+       rm -f $(HS_ALL_PROGS)
+       $(MAKE) hs-prof-quick
+
+hs-prof-quick:
+       $(MAKE) $(HS_ALL_PROGS) HEXTRA="-osuf .prof_o -prof -auto-all"
+
 dist_sbin_SCRIPTS = \
        tools/ganeti-listrunner
 
@@ -532,6 +552,7 @@ python_scripts = \
        tools/cfgupgrade12 \
        tools/cluster-merge \
        tools/confd-client \
+       tools/fmtjson \
        tools/lvmstrap \
        tools/move-instance \
        tools/ovfconverter \
@@ -629,6 +650,7 @@ man_MANS = \
        man/gnt-os.8 \
        man/hail.1 \
        man/hbal.1 \
+       man/hinfo.1 \
        man/hscan.1 \
        man/hspace.1 \
        man/htools.1
@@ -731,6 +753,7 @@ python_tests = \
        test/ganeti.rapi.client_unittest.py \
        test/ganeti.rapi.resources_unittest.py \
        test/ganeti.rapi.rlib2_unittest.py \
+       test/ganeti.rapi.testutils_unittest.py \
        test/ganeti.rpc_unittest.py \
        test/ganeti.runtime_unittest.py \
        test/ganeti.serializer_unittest.py \