APIDOC_HS_DIR = $(APIDOC_DIR)/hs
MAINTAINERCLEANFILES = \
- $(docpng) \
$(maninput) \
doc/install-quick.rst \
doc/news.rst \
doc/virtual-cluster.rst \
doc/walkthrough.rst
-HS_PROGS = src/htools src/mon-collector
+# Haskell programs to be installed in $PREFIX/bin
+HS_BIN_PROGS=src/htools
+
+# Haskell programs to be installed in the MYEXECLIB dir
+HS_MYEXECLIB_PROGS=src/mon-collector
+
+# Haskell programs to compiled but not installed automatically
+# Usually they have their own specific installation rules
+HS_COMPILE_PROGS= \
+ src/hconfd \
+ src/rpc-test
+
+# All Haskell non-test programs to be compiled but not automatically installed
+HS_PROGS = $(HS_BIN_PROGS) $(HS_MYEXECLIB_PROGS)
+
HS_BIN_ROLES = hbal hscan hspace hinfo hcheck hroller
HS_HTOOLS_PROGS = $(HS_BIN_ROLES) hail
test/hs/hpc-htools \
test/hs/hpc-mon-collector \
test/hs/htest \
- src/hconfd \
- src/rpc-test
+ $(HS_COMPILE_PROGS)
HS_PROG_SRCS = $(patsubst %,%.hs,$(HS_ALL_PROGS))
HS_BUILT_TEST_HELPERS = $(HS_BIN_ROLES:%=test/hs/%) test/hs/hail
src/Ganeti/HTools/Loader.hs \
src/Ganeti/HTools/Node.hs \
src/Ganeti/HTools/PeerMap.hs \
- src/Ganeti/HTools/Program.hs \
src/Ganeti/HTools/Program/Hail.hs \
src/Ganeti/HTools/Program/Hbal.hs \
src/Ganeti/HTools/Program/Hcheck.hs \
src/Ganeti/HTools/Program/Hscan.hs \
src/Ganeti/HTools/Program/Hspace.hs \
src/Ganeti/HTools/Program/Hroller.hs \
+ src/Ganeti/HTools/Program/Main.hs \
src/Ganeti/HTools/Types.hs \
src/Ganeti/Hash.hs \
src/Ganeti/JQueue.hs \
# has to exist in order for the sphinx module to be loaded
# successfully, but we certainly don't want the docs to be rebuilt if
# it changes
-doc/html/index.html: $(docrst) $(docpng) doc/conf.py configure.ac \
+doc/html/index.html: $(docrst) doc/conf.py configure.ac \
$(RUN_IN_TEMPDIR) lib/build/sphinx_ext.py \
lib/build/shell_example_lexer.py lib/opcodes.py lib/ht.py \
| $(BUILT_PYTHON_SOURCES)
-d . \
-D version="$(VERSION_MAJOR).$(VERSION_MINOR)" \
-D release="$(PACKAGE_VERSION)" \
+ -D graphviz_dot="$(DOT)" \
$(abs_top_srcdir)/doc $(CURDIR)/doc/html
rm -f doc/html/.buildinfo doc/html/objects.inv
touch $@
cat $<; \
} > $@
-docdot = \
- doc/arch-2.0.dot \
- doc/design-2.1-lock-acquire.dot \
- doc/design-2.1-lock-release.dot
-
-docpng = $(patsubst %.dot,%.png,$(docdot))
-
# Things to build but not to install (add it to EXTRA_DIST if it should be
# distributed)
noinst_DATA = \
bin_SCRIPTS =
if WANT_HTOOLS
-bin_SCRIPTS += $(filter-out src/hail,$(HS_PROGS))
+bin_SCRIPTS += $(HS_BIN_PROGS)
install-exec-hook:
@mkdir_p@ $(DESTDIR)$(iallocatorsdir)
# FIXME: this is a hardcoded logic, instead of auto-resolving
daemons/daemon-util \
tools/kvm-ifup \
$(pkglib_python_scripts) \
- src/mon-collector
+ $(HS_MYEXECLIB_PROGS)
nodist_myexeclib_SCRIPTS = \
$(nodist_pkglib_python_scripts)
autotools/check-version \
autotools/convert-constants \
autotools/docpp \
- autotools/gen-coverage \
+ autotools/gen-py-coverage \
autotools/testrunner \
autotools/wrong-hardcoded-paths \
$(RUN_IN_TEMPDIR) \
daemons/ganeti-cleaner.in \
$(pkglib_python_scripts) \
devel/upload \
+ devel/webserver \
tools/kvm-ifup.in \
tools/vcluster-setup.in \
- $(docdot) \
- $(docpng) \
$(docrst) \
doc/conf.py \
doc/html \
maninput = \
$(patsubst %.1,%.1.in,$(patsubst %.7,%.7.in,$(patsubst %.8,%.8.in,$(man_MANS)))) \
$(patsubst %.html,%.html.in,$(manhtml)) \
- man/footer.man man/footer.html $(mangen)
+ $(mangen)
TEST_FILES = \
test/data/htools/clean-nonzero-score.data \
PYTHONPATH=. $(RUN_IN_TEMPDIR) \
$(CURDIR)/$(BUILD_BASH_COMPLETION) $(BC_ARGS) > $@
-doc/%.png: doc/%.dot
- @test -n "$(DOT)" || { echo 'dot' not found during configure; exit 1; }
- $(DOT) -Tpng -o $@ $<
-
-man/footer.man: man/footer.rst
- @test -n "$(PANDOC)" || \
- { echo 'pandoc' not found during configure; exit 1; }
- $(PANDOC) -f rst -t man -o $@ $<
-
-man/footer.html: man/footer.rst
- @test -n "$(PANDOC)" || \
- { echo 'pandoc' not found during configure; exit 1; }
- $(PANDOC) -f rst -t html -o $@ $<
-
man/%.gen: man/%.rst lib/query.py lib/build/sphinx_ext.py \
lib/build/shell_example_lexer.py \
| $(RUN_IN_TEMPDIR) $(BUILT_PYTHON_SOURCES)
PYTHONPATH=. $(RUN_IN_TEMPDIR) $(CURDIR)/$(DOCPP) < $< > $@ ;\
trap - EXIT
-man/%.7.in man/%.8.in man/%.1.in: man/%.gen man/footer.man
+man/%.7.in man/%.8.in man/%.1.in: man/%.gen man/footer.rst
@test -n "$(PANDOC)" || \
{ echo 'pandoc' not found during configure; exit 1; }
set -o pipefail ; \
trap 'echo auto-removing $@; rm $@' EXIT; \
- $(PANDOC) -s -f rst -t man -A man/footer.man $< | \
+ $(PANDOC) -s -f rst -t man $< man/footer.rst | \
sed -e 's/\\@/@/g' > $@; \
if test -n "$(MAN_HAS_WARNINGS)"; then $(CHECK_MAN_WARNINGS) $@; fi; \
$(CHECK_MAN_DASHES) $@; \
trap - EXIT
-
-man/%.html.in: man/%.gen man/footer.html
+man/%.html.in: man/%.gen man/footer.rst
@test -n "$(PANDOC)" || \
{ echo 'pandoc' not found during configure; exit 1; }
set -o pipefail ; \
- $(PANDOC) -s -f rst -t html -A man/footer.html $< | \
+ $(PANDOC) --toc -s -f rst -t html $< man/footer.rst | \
sed -e 's/\\@/@/g' > $@
man/%: man/%.in $(REPLACE_VARS_SED)
src/Ganeti/Constants.hs: src/Ganeti/Constants.hs.in \
lib/constants.py lib/_autoconf.py lib/luxi.py lib/errors.py \
- lib/jstore.py $(RUN_IN_TEMPDIR)\
+ lib/jstore.py $(RUN_IN_TEMPDIR) \
$(CONVERT_CONSTANTS) $(built_base_sources) \
| lib/_vcsversion.py
set -e; \
done; \
test -z "$$error"
-.PHONY: hs-check
-hs-check: test/hs/htest test/hs/hpc-htools test/hs/hpc-mon-collector $(HS_BUILT_TEST_HELPERS) \
- | $(BUILT_PYTHON_SOURCES)
- @rm -f *.tix
+.PHONY: hs-tests
+hs-tests: test/hs/htest | $(BUILT_PYTHON_SOURCES)
+ @rm -f htest.tix
./test/hs/htest
+
+.PHONY: hs-shell
+hs-shell: test/hs/hpc-htools test/hs/hpc-mon-collector $(HS_BUILT_TEST_HELPERS)
+ @rm -f hpc-htools.tix hpc-mon-collector.tix
HBINARY="./test/hs/hpc-htools" ./test/hs/offline-test.sh
+.PHONY: hs-check
+hs-check: hs-tests hs-shell
+
# E111: indentation is not a multiple of four
# E121: continuation line indentation is not a multiple of four
# (since our indent level is not 4)
COVERAGE_FILE=$(CURDIR)/$(COVERAGE_PY_DIR)/data \
TEXT_COVERAGE=$(CURDIR)/$(COVERAGE_PY_DIR)/report.txt \
HTML_COVERAGE=$(CURDIR)/$(COVERAGE_PY_DIR) \
- $(PLAIN_TESTS_ENVIRONMENT) $(abs_top_srcdir)/autotools/gen-coverage \
+ $(PLAIN_TESTS_ENVIRONMENT) \
+ $(abs_top_srcdir)/autotools/gen-py-coverage \
$(python_tests)
.PHONY: hs-coverage
$(MAKE) $(AM_MAKEFLAGS) hs-check
@mkdir_p@ $(COVERAGE_HS_DIR)
hpc sum --union $(HPCEXCL) \
- htest.tix hpc-htools.tix hpc-mon-collector.tix > coverage-htools.tix
- hpc markup --destdir=$(COVERAGE_HS_DIR) coverage-htools.tix
- hpc report coverage-htools.tix
+ htest.tix hpc-htools.tix hpc-mon-collector.tix > coverage-hs.tix
+ hpc markup --destdir=$(COVERAGE_HS_DIR) coverage-hs.tix
+ hpc report coverage-hs.tix
$(LN_S) -f hpc_index.html $(COVERAGE_HS_DIR)/index.html
# Special "kind-of-QA" target for htools, needs special setup (all
exit 1; \
fi
+# target to rebuild all man pages (both groff and html output)
+.PHONY: man
+man: $(man_MANS) $(manhtml)
+
# Target that builds all binaries (including those that are not
# rebuilt except when running the tests)
.PHONY: really-all