diff --git a/fence/agents/Makefile.am b/fence/agents/Makefile.am index 3b276b87..9f0964ca 100644 --- a/fence/agents/Makefile.am +++ b/fence/agents/Makefile.am @@ -1,85 +1,85 @@ MAINTAINERCLEANFILES = Makefile.in TARGET = $(AGENTS_LIST:%.py=%) SRC = $(TARGET:=.py) -CLEAN_TARGET_ADDITIONAL = kdump/fence_kdump_send manual/fence_ack_manual +CLEAN_TARGET_ADDITIONAL = kdump/fence_kdump_send manual/fence_ack_manual */*.o -EXTRA_DIST = $(SRC) manual/fence_ack_manual.in manual/fence_ack_manual.8 +EXTRA_DIST = $(SRC) manual/fence_ack_manual.in manual/fence_ack_manual.8 zvm/fence_zvm_man_page sbin_SCRIPTS = $(TARGET) manual/fence_ack_manual EXTRA_SCRIPTS = man_MANS = $(sbin_SCRIPTS:=.8) sbin_PROGRAMS = kdump/fence_kdump zvm/fence_zvm libexec_PROGRAMS = kdump/fence_kdump_send -noinst_HEADERS = kdump/list.h kdump/message.h kdump/options.h kdump/version.h +noinst_HEADERS = kdump/list.h kdump/message.h kdump/options.h kdump/version.h zvm/fence_zvm.h kdump_fence_kdump_SOURCES = kdump/fence_kdump.c kdump_fence_kdump_CFLAGS = -D_GNU_SOURCE -Ikdump kdump_fence_kdump_send_SOURCES = kdump/fence_kdump_send.c kdump_fence_kdump_send_CFLAGS = -D_GNU_SOURCE -Ikdump -dist_man_MANS = kdump/fence_kdump.8 kdump/fence_kdump_send.8 +dist_man_MANS = kdump/fence_kdump.8 kdump/fence_kdump_send.8 zvm/fence_zvm.8 scsidatadir = $(CLUSTERDATA) scsidata_SCRIPTS = scsi/fence_scsi_check scsi/fence_scsi_check_hardreboot zvm_fence_zvm_SOURCES = zvm/fence_zvm.c -zvm_fence_zvm_CFLAGS = -D_GNU_SOURCE +zvm_fence_zvm_CFLAGS = -D_GNU_SOURCE -Izvm FENCE_TEST_ARGS = \ login=test\n\ passwd=test\n\ ipaddr=test\n\ port=1\n\ managed=1\n\ devices=test\n\ session_url=http://test\n\ email=test@test.te manual/fence_ack_manual: manual/fence_ack_manual.in mkdir -p $(@D) cat $^ | sed \ -e 's#@clustervarrun@#${CLUSTERVARRUN}#g' \ > $@ scsi/fence_scsi_check: scsi/fence_scsi cp $^ $@ scsi/fence_scsi_check_hardreboot: scsi/fence_scsi cp $^ $@ kdump/fence_kdump.8: kdump/fence_kdump $(top_srcdir)/fence/agents/lib/fence2man.xsl set -e && \ ./$(@:%.8=%) -o metadata > $(@D)/.$(@F).tmp && \ xmllint --noout --relaxng $(top_srcdir)/fence/agents/lib/metadata.rng $(@D)/.$(@F).tmp && \ xsltproc $(top_srcdir)/fence/agents/lib/fence2man.xsl $(@D)/.$(@F).tmp > $@ xsltproc $(top_srcdir)/fence/agents/lib/fence2wiki.xsl $(@D)/.$(@F).tmp | grep -v ' $(@D)/$(@F:%.8=%.wiki) kdump/fence_kdump_send.8: true manual/fence_ack_manual.8: true zvm/fence_zvm.8: zvm/fence_zvm cp $(top_srcdir)/fence/agents/zvm/fence_zvm_man_page $(@D)/fence_zvm.8 cisco_mds/fence_cisco_mds.delay-check: cisco_mds/fence_cisco_mds $(eval INPUT=$(subst .delay-check,,$@)) FENCE_TEST_ARGS_CISCO_MDS=$$(/bin/echo -e '$(FENCE_TEST_ARGS)' | sed 's#port=1#port=fc1/1#'); \ test `PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/lib /usr/bin/time -f "%e" \ sh -c "/bin/echo -e 'delay=10\n $$FENCE_TEST_ARGS_CISCO_MDS' | $(PYTHON) ./$(INPUT)" 2>&1 |\ sed 's/\.//' | tail -n 1` -ge 1000 || ( \ PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/lib /usr/bin/time -f "%e" \ sh -c "/bin/echo -e "delay=0\n $$FENCE_TEST_ARGS_CISCO_MDS" | $(PYTHON) ./$(INPUT)"; false ) include $(top_srcdir)/make/fencebuild.mk include $(top_srcdir)/make/fenceman.mk include $(top_srcdir)/make/agentpycheck.mk diff --git a/make/fencebuild.mk b/make/fencebuild.mk index 1d503985..859e2a76 100644 --- a/make/fencebuild.mk +++ b/make/fencebuild.mk @@ -1,49 +1,82 @@ -$(TARGET): $(SRC) +define gen_agent_from_py mkdir -p `dirname $@` bash $(top_srcdir)/scripts/fenceparse \ $(top_srcdir)/make/copyright.cf REDHAT_COPYRIGHT \ $(VERSION) \ $(abs_srcdir) $@ | \ sed \ -e 's#@''PYTHON@#${PYTHON}#g' \ -e 's#@''FENCEAGENTSLIBDIR@#${FENCEAGENTSLIBDIR}#g' \ -e 's#@''LOGDIR@#${LOGDIR}#g' \ -e 's#@''SBINDIR@#${sbindir}#g' \ -e 's#@''LIBEXECDIR@#${libexecdir}#g' \ -e 's#@''IPMITOOL_PATH@#${IPMITOOL_PATH}#g' \ -e 's#@''AMTTOOL_PATH@#${AMTTOOL_PATH}#g' \ -e 's#@''GNUTLSCLI_PATH@#${GNUTLSCLI_PATH}#g' \ -e 's#@''COROSYNC_CMAPCTL_PATH@#${COROSYNC_CMAPCTL_PATH}#g' \ -e 's#@''SG_PERSIST_PATH@#${SG_PERSIST_PATH}#g' \ -e 's#@''SG_TURS_PATH@#${SG_TURS_PATH}#g' \ -e 's#@''VGS_PATH@#${VGS_PATH}#g' \ -e 's#@''SUDO_PATH@#${SUDO_PATH}#g' \ -e 's#@''SSH_PATH@#${SSH_PATH}#g' \ -e 's#@''TELNET_PATH@#${TELNET_PATH}#g' \ -e 's#@''MPATH_PATH@#${MPATH_PATH}#g' \ -e 's#@''SBD_PATH@#${SBD_PATH}#g' \ -e 's#@''STORE_PATH@#${CLUSTERVARRUN}#g' \ -e 's#@''SUDO_PATH@#${SUDO_PATH}#g' \ -e 's#@''SNMPWALK_PATH@#${SNMPWALK_PATH}#g' \ -e 's#@''SNMPSET_PATH@#${SNMPSET_PATH}#g' \ -e 's#@''SNMPGET_PATH@#${SNMPGET_PATH}#g' \ -e 's#@''NOVA_PATH@#${NOVA_PATH}#g' \ > $@ if [ 0 -eq `echo "$(@)" | grep fence_ &> /dev/null; echo $$?` ]; then \ PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/lib $(top_srcdir)/fence/agents/lib/check_used_options.py $@; \ else true ; fi for x in `PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/lib $(PYTHON) $(@) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \ - cp $(@) $(@D)/$$x; \ + cp -f $(@) $(@D)/$$x; \ $(MAKE) $(@D)/$$x.8; \ done +endef + +# dependency, one on one +$(foreach t,$(TARGET),$(eval $(t) : $(t:=.py))) + +# rule +$(TARGET): + $(call gen_agent_from_py) clean: clean-man rm -f $(CLEAN_TARGET:%.8=%) $(CLEAN_TARGET_ADDITIONAL) $(scsidata_SCRIPTS) */*.pyc */*.wiki if [ "$(abs_builddir)" = "$(abs_top_builddir)/fence/agents/lib" ]; then \ rm -f $(TARGET); \ fi clean-local: clean + +install-exec-hook: $(TARGET) + if [ -n "$(man8dir)" ]; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ + fi + for p in $(TARGET); do \ + dir=`dirname $$p`; \ + for x in `PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/lib $(PYTHON) $$p -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \ + echo " $(INSTALL_SCRIPT) $$dir/$$x '$(DESTDIR)$(sbindir)'"; \ + $(INSTALL_SCRIPT) $$dir/$$x "$(DESTDIR)$(sbindir)" || exit $$?; \ + echo " $(INSTALL_DATA) '$$dir/$$x.8' '$(DESTDIR)$(man8dir)'"; \ + $(INSTALL_DATA) "$$dir/$$x.8" "$(DESTDIR)$(man8dir)" || exit $$?; \ + done; \ + done + +uninstall-hook: $(TARGET) + files=`for p in $(TARGET); do \ + for x in \`PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/lib $(PYTHON) $$p -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"\`; do \ + echo " rm -f '$(DESTDIR)$(sbindir)/$$x'"; \ + rm -f "$(DESTDIR)$(sbindir)/$$x"; \ + echo " rm -f '$(DESTDIR)$(man8dir)/$$x.8'"; \ + rm -f "$(DESTDIR)$(man8dir)/$$x.8"; \ + done; \ + done` diff --git a/make/fenceman.mk b/make/fenceman.mk index 1496eb4a..4bfc33c1 100644 --- a/make/fenceman.mk +++ b/make/fenceman.mk @@ -1,11 +1,11 @@ -%.8: $(TARGET) $(top_srcdir)/fence/agents/lib/fence2man.xsl +%.8: % $(top_srcdir)/fence/agents/lib/fence2man.xsl set -e && \ PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/../lib:$(abs_builddir)/lib \ - $(PYTHON) $(@:%.8=%) -o metadata > $(@D)/.$(@F).tmp && \ + $(PYTHON) $* -o metadata > $(@D)/.$(@F).tmp && \ xmllint --noout --relaxng $(abs_srcdir)/lib/metadata.rng $(@D)/.$(@F).tmp && \ xsltproc $(top_srcdir)/fence/agents/lib/fence2man.xsl $(@D)/.$(@F).tmp > $@ xsltproc $(top_srcdir)/fence/agents/lib/fence2wiki.xsl $(@D)/.$(@F).tmp | grep -v ' $(@D)/$(@F:%.8=%.wiki) clean-man: $(eval CLEAN_TARGET=$(shell find -name "*.8" | grep -Pv "kdump/fence_kdump_send.8|manual/fence_ack_manual.8")) rm -f $(CLEAN_TARGET) */.*.8.tmp */*.wiki diff --git a/make/fencemanc.mk b/make/fencemanc.mk index ddeb2717..b5fb0cd2 100644 --- a/make/fencemanc.mk +++ b/make/fencemanc.mk @@ -1,10 +1,10 @@ -%.8: $(TARGET) $(top_srcdir)/fence/agents/lib/fence2man.xsl +%.8: % $(top_srcdir)/fence/agents/lib/fence2man.xsl set -e && \ - ./$(@:%.8=%) -o metadata > $(@D)/.$(@F).tmp && \ + $* -o metadata > $(@D)/.$(@F).tmp && \ xmllint --noout --relaxng $(top_srcdir)/fence/agents/lib/metadata.rng $(@D)/.$(@F).tmp && \ xsltproc $(top_srcdir)/fence/agents/lib/fence2man.xsl $(@D)/.$(@F).tmp > $@ xsltproc $(top_srcdir)/fence/agents/lib/fence2wiki.xsl $(@D)/.$(@F).tmp | grep -v ' $(@D)/$(@F:%.8=%.wiki) clean-man: $(eval CLEAN_TARGET=$(shell find -name "*.8" | grep -Pv "kdump/fence_kdump_send.8|manual/fence_ack_manual.8")) rm -f $(CLEAN_TARGET) */.*.8.tmp */*.wiki