2021-05-18 14:40:02 +00:00
diff --color -uNr a/agents/azure_arm/fence_azure_arm.py b/agents/azure_arm/fence_azure_arm.py
--- a/agents/azure_arm/fence_azure_arm.py 2020-06-30 11:26:43.000000000 +0200
2021-06-04 08:37:43 +00:00
+++ b/agents/azure_arm/fence_azure_arm.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -1,6 +1,11 @@
#!@PYTHON@ -tt
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import logging
import atexit
import xml.etree.ElementTree as ET
diff --color -uNr a/agents/hpblade/fence_hpblade.py b/agents/hpblade/fence_hpblade.py
--- a/agents/hpblade/fence_hpblade.py 2019-08-16 10:55:11.000000000 +0200
2021-06-04 08:37:43 +00:00
+++ b/agents/hpblade/fence_hpblade.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -8,7 +8,11 @@
#####
import sys, re
-import pexpect
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import atexit
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
diff --color -uNr a/agents/ilo/fence_ilo.py b/agents/ilo/fence_ilo.py
--- a/agents/ilo/fence_ilo.py 2019-02-04 09:45:05.000000000 +0100
2021-06-04 08:37:43 +00:00
+++ b/agents/ilo/fence_ilo.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -11,7 +11,12 @@
## iLO2 / firmware 1.50 / RIBCL 2.22
#####
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import atexit
from xml.sax.saxutils import quoteattr
sys.path.append("@FENCEAGENTSLIBDIR@")
diff --color -uNr a/agents/ldom/fence_ldom.py b/agents/ldom/fence_ldom.py
--- a/agents/ldom/fence_ldom.py 2019-02-04 09:45:05.000000000 +0100
2021-06-04 08:37:43 +00:00
+++ b/agents/ldom/fence_ldom.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -7,7 +7,12 @@
##
#####
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import atexit
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
diff --color -uNr a/agents/Makefile.am b/agents/Makefile.am
2021-06-04 08:37:43 +00:00
--- a/agents/Makefile.am 2021-03-16 12:26:37.000000000 +0100
+++ b/agents/Makefile.am 2021-06-03 13:16:16.547120822 +0200
@@ -112,10 +112,10 @@
2021-05-18 14:40:02 +00:00
cisco_mds/fence_cisco_mds.delay-check: cisco_mds/fence_cisco_mds
$(eval INPUT=$(subst .delay-check,,$@))
FENCE_TEST_ARGS_CISCO_MDS=$$(printf '$(FENCE_TEST_ARGS)' | sed 's#port=1#port=fc1/1#'); \
- test `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib /usr/bin/time -p \
2021-08-03 11:47:13 +00:00
+ test `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common /usr/bin/time -p \
2021-05-18 14:40:02 +00:00
sh -c "printf 'delay=10\n $$FENCE_TEST_ARGS_CISCO_MDS' | $(PYTHON) ./$(INPUT)" 2>&1 |\
awk -F"[. ]" -vOFS= '/real/ {print $$2,$$3}'` -ge 1000 || ( \
- PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib /usr/bin/time -p \
2021-08-03 11:47:13 +00:00
+ PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common /usr/bin/time -p \
2021-05-18 14:40:02 +00:00
sh -c "printf "delay=0\n $$FENCE_TEST_ARGS_CISCO_MDS" | $(PYTHON) ./$(INPUT)"; false )
include $(top_srcdir)/make/fencebuild.mk
diff --color -uNr a/agents/netio/fence_netio.py b/agents/netio/fence_netio.py
--- a/agents/netio/fence_netio.py 2019-02-04 09:45:05.000000000 +0100
2021-06-04 08:37:43 +00:00
+++ b/agents/netio/fence_netio.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -1,6 +1,11 @@
#!@PYTHON@ -tt
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import atexit
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
diff --color -uNr a/agents/raritan/fence_raritan.py b/agents/raritan/fence_raritan.py
--- a/agents/raritan/fence_raritan.py 2019-08-16 10:55:11.000000000 +0200
2021-06-04 08:37:43 +00:00
+++ b/agents/raritan/fence_raritan.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -1,6 +1,11 @@
#!@PYTHON@ -tt
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import atexit
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
diff --color -uNr a/agents/sanbox2/fence_sanbox2.py b/agents/sanbox2/fence_sanbox2.py
--- a/agents/sanbox2/fence_sanbox2.py 2019-02-11 13:05:48.000000000 +0100
2021-06-04 08:37:43 +00:00
+++ b/agents/sanbox2/fence_sanbox2.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -8,7 +8,12 @@
## +-----------------+---------------------------+
#####
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import logging
import atexit
sys.path.append("@FENCEAGENTSLIBDIR@")
diff --color -uNr a/agents/vmware/fence_vmware.py b/agents/vmware/fence_vmware.py
--- a/agents/vmware/fence_vmware.py 2019-02-04 09:45:05.000000000 +0100
2021-06-04 08:37:43 +00:00
+++ b/agents/vmware/fence_vmware.py 2021-06-03 13:16:16.547120822 +0200
2021-05-18 14:40:02 +00:00
@@ -22,7 +22,12 @@
# VMware vCenter 4.0.0
#
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import logging
import atexit
sys.path.append("@FENCEAGENTSLIBDIR@")
diff --color -uNr a/agents/wti/fence_wti.py b/agents/wti/fence_wti.py
--- a/agents/wti/fence_wti.py 2019-02-04 09:45:05.000000000 +0100
2021-06-04 08:37:43 +00:00
+++ b/agents/wti/fence_wti.py 2021-06-03 13:17:33.435380703 +0200
@@ -11,12 +11,21 @@
2021-05-18 14:40:02 +00:00
## WTI IPS-800-CE v1.40h (no username) ('list' tested)
#####
-import sys, re, pexpect
+import sys, re
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
import atexit
import time
sys.path.append("@FENCEAGENTSLIBDIR@")
2021-06-04 08:37:43 +00:00
from fencing import *
-from fencing import fspawn, fail, fail_usage, EC_LOGIN_DENIED
+from fencing import fail, fail_usage, EC_LOGIN_DENIED
+try:
+ from fencing import fspawn
+except ImportError:
+ pass
def get_listing(conn, options, listing_command):
listing = ""
2021-05-18 14:40:02 +00:00
diff --color -uNr a/lib/fencing.py.py b/lib/fencing.py.py
2021-06-04 08:37:43 +00:00
--- a/lib/fencing.py.py 2021-06-03 10:34:00.000000000 +0200
+++ b/lib/fencing.py.py 2021-06-03 13:16:16.548120826 +0200
2021-05-18 14:40:02 +00:00
@@ -1,7 +1,12 @@
#!@PYTHON@ -tt
import sys, getopt, time, os, uuid, pycurl, stat
-import pexpect, re, syslog
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
+import re, syslog
import logging
import subprocess
import threading
@@ -491,29 +496,32 @@
"snmpset_path", "snmpget_path", "snmpwalk_path"]
}
-class fspawn(pexpect.spawn):
- def __init__(self, options, command, **kwargs):
- if sys.version_info[0] > 2:
- kwargs.setdefault('encoding', 'utf-8')
- logging.info("Running command: %s", command)
- pexpect.spawn.__init__(self, command, **kwargs)
- self.opt = options
-
- def log_expect(self, pattern, timeout):
- result = self.expect(pattern, timeout if timeout != 0 else None)
- logging.debug("Received: %s", self.before + self.after)
- return result
-
- def read_nonblocking(self, size, timeout):
- return pexpect.spawn.read_nonblocking(self, size=100, timeout=timeout if timeout != 0 else None)
-
- def send(self, message):
- logging.debug("Sent: %s", message)
- return pexpect.spawn.send(self, message)
-
- # send EOL according to what was detected in login process (telnet)
- def send_eol(self, message):
- return self.send(message + self.opt["eol"])
+try:
+ class fspawn(pexpect.spawn):
+ def __init__(self, options, command, **kwargs):
+ if sys.version_info[0] > 2:
+ kwargs.setdefault('encoding', 'utf-8')
+ logging.info("Running command: %s", command)
+ pexpect.spawn.__init__(self, command, **kwargs)
+ self.opt = options
+
+ def log_expect(self, pattern, timeout):
+ result = self.expect(pattern, timeout if timeout != 0 else None)
+ logging.debug("Received: %s", self.before + self.after)
+ return result
+
+ def read_nonblocking(self, size, timeout):
+ return pexpect.spawn.read_nonblocking(self, size=100, timeout=timeout if timeout != 0 else None)
+
+ def send(self, message):
+ logging.debug("Sent: %s", message)
+ return pexpect.spawn.send(self, message)
+
+ # send EOL according to what was detected in login process (telnet)
+ def send_eol(self, message):
+ return self.send(message + self.opt["eol"])
+except:
+ pass
def frun(command, timeout=30, withexitstatus=False, events=None,
extra_args=None, logfile=None, cwd=None, env=None, **kwargs):
diff --color -uNr a/lib/fencing_snmp.py.py b/lib/fencing_snmp.py.py
--- a/lib/fencing_snmp.py.py 2019-02-04 09:45:05.000000000 +0100
2021-06-04 08:37:43 +00:00
+++ b/lib/fencing_snmp.py.py 2021-06-03 13:16:16.548120826 +0200
2021-05-18 14:40:02 +00:00
@@ -2,7 +2,13 @@
# For example of use please see fence_cisco_mds
-import re, pexpect
+import sys
2021-08-03 11:47:13 +00:00
+sys.path.insert(0, '/usr/lib/fence-agents/support/common')
2021-05-18 14:40:02 +00:00
+try:
+ import pexpect
+except:
+ pass
+import re
import logging
from fencing import *
from fencing import fail, fail_usage, EC_TIMED_OUT, run_delay, frun
diff --color -uNr a/make/agentpycheck.mk b/make/agentpycheck.mk
--- a/make/agentpycheck.mk 2020-06-30 11:26:43.000000000 +0200
2021-06-04 08:37:43 +00:00
+++ b/make/agentpycheck.mk 2021-06-03 13:16:16.548120826 +0200
2021-05-18 14:40:02 +00:00
@@ -9,34 +9,34 @@
%.xml-check: %.8
$(eval INPUT=$(subst .xml-check,,$(@F)))
- for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
2021-08-03 11:47:13 +00:00
+ for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
2021-05-18 14:40:02 +00:00
TEMPFILE=$$(mktemp); \
- PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@D)/$$x -o metadata | $(AWK) $(AWK_VAL) > $$TEMPFILE && \
2021-08-03 11:47:13 +00:00
+ PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@D)/$$x -o metadata | $(AWK) $(AWK_VAL) > $$TEMPFILE && \
2021-05-18 14:40:02 +00:00
diff $$TEMPFILE $(DATADIR)/$$x.xml || exit 1 && \
rm $$TEMPFILE; \
done
%.xml-upload: %.8
$(eval INPUT=$(subst .xml-upload,,$(@F)))
- for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
- PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@D)/$$x -o metadata | $(AWK) $(AWK_VAL) > $(DATADIR)/$$x.xml; \
2021-08-03 11:47:13 +00:00
+ for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
+ PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@D)/$$x -o metadata | $(AWK) $(AWK_VAL) > $(DATADIR)/$$x.xml; \
2021-05-18 14:40:02 +00:00
done
# If test will fail, rerun fence agents to show problems
%.delay-check: %
$(eval INPUT=$(subst .delay-check,,$(@F)))
- for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
- test `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib /usr/bin/time -p \
2021-08-03 11:47:13 +00:00
+ for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
+ test `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common /usr/bin/time -p \
2021-05-18 14:40:02 +00:00
sh -c "printf 'delay=10\n $(FENCE_TEST_ARGS)' | $(PYTHON) $(@D)/$$x" 2>&1 |\
awk -F"[. ]" -vOFS= '/real/ {print $$2,$$3}'` -ge 1000 || ( \
- PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib /usr/bin/time -p \
2021-08-03 11:47:13 +00:00
+ PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common /usr/bin/time -p \
2021-05-18 14:40:02 +00:00
sh -c "printf 'delay=0\n $(FENCE_TEST_ARGS)' | $(PYTHON) $(@D)/$$x"; false ); \
done
%.rng-check: %
$(eval INPUT=$(subst .rng-check,,$(@F)))
- for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
- PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@D)/$$x -o metadata | \
2021-08-03 11:47:13 +00:00
+ for x in $(INPUT) `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@D)/$(INPUT) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
+ PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@D)/$$x -o metadata | \
2021-05-18 14:40:02 +00:00
xsltproc ${abs_top_srcdir}/lib/fence2rng.xsl - | \
sed -e 's/ rha:description=/ description=/g' -e 's/ rha:name=/ name=/g' | \
xmllint --nsclean --noout -; \
diff --color -uNr a/make/fencebuild.mk b/make/fencebuild.mk
2021-06-04 08:37:43 +00:00
--- a/make/fencebuild.mk 2021-03-16 09:32:22.000000000 +0100
+++ b/make/fencebuild.mk 2021-06-03 13:16:16.548120826 +0200
2021-05-18 14:40:02 +00:00
@@ -34,10 +34,10 @@
> $@
if [ 0 -eq `echo "$(@)" | grep fence_ > /dev/null 2>&1; echo $$?` ]; then \
- PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(top_srcdir)/lib/check_used_options.py $@; \
2021-08-03 11:47:13 +00:00
+ PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(top_srcdir)/lib/check_used_options.py $@; \
2021-05-18 14:40:02 +00:00
else true ; fi
- for x in `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $(@) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
2021-08-03 11:47:13 +00:00
+for x in `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $(@) -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
2021-05-18 14:40:02 +00:00
cp -f $(@) $(@D)/$$x; \
$(MAKE) $(@D)/$$x.8; \
done
2021-06-04 08:37:43 +00:00
@@ -64,7 +64,7 @@
2021-05-18 14:40:02 +00:00
fi
for p in $(TARGET); do \
dir=`dirname $$p`; \
- for x in `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $$p -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
2021-08-03 11:47:13 +00:00
+ for x in `PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $$p -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"`; do \
2021-05-18 14:40:02 +00:00
echo " $(INSTALL_SCRIPT) $$dir/$$x '$(DESTDIR)$(sbindir)'"; \
$(INSTALL_SCRIPT) $$dir/$$x "$(DESTDIR)$(sbindir)" || exit $$?; \
echo " $(INSTALL_DATA) '$$dir/$$x.8' '$(DESTDIR)$(man8dir)'"; \
2021-06-04 08:37:43 +00:00
@@ -74,7 +74,7 @@
2021-05-18 14:40:02 +00:00
uninstall-hook: $(TARGET)
files=`for p in $(TARGET); do \
- for x in \`PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib $(PYTHON) $$p -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"\`; do \
2021-08-03 11:47:13 +00:00
+ for x in \`PYTHONPATH=$(abs_top_srcdir)/lib:$(abs_top_builddir)/lib:$(abs_top_builddir)/support/common $(PYTHON) $$p -o metadata | grep symlink | sed -e "s/.*\(fence.*\)\" .*/\1/g"\`; do \
2021-05-18 14:40:02 +00:00
echo " rm -f '$(DESTDIR)$(sbindir)/$$x'"; \
rm -f "$(DESTDIR)$(sbindir)/$$x"; \
echo " rm -f '$(DESTDIR)$(man8dir)/$$x.8'"; \
diff --color -uNr a/make/fenceman.mk b/make/fenceman.mk
2021-06-04 08:37:43 +00:00
--- a/make/fenceman.mk 2021-03-11 16:10:15.000000000 +0100
+++ b/make/fenceman.mk 2021-06-03 13:16:16.548120826 +0200
2021-05-18 14:40:02 +00:00
@@ -1,6 +1,6 @@
%.8: % $(top_srcdir)/lib/fence2man.xsl
set -e && \
- PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/../lib:$(abs_builddir)/lib \
2021-08-03 11:47:13 +00:00
+ PYTHONPATH=$(abs_srcdir)/lib:$(abs_builddir)/../lib:$(abs_builddir)/lib:$(abs_top_builddir)/support/common \
2021-05-18 14:40:02 +00:00
$(PYTHON) $* -o manpage > $(@D)/.$(@F).tmp && \
xmllint --noout --relaxng $(top_srcdir)/lib/metadata.rng $(@D)/.$(@F).tmp && \
xsltproc $(top_srcdir)/lib/fence2man.xsl $(@D)/.$(@F).tmp > $@