build: check if the manpages stylesheet is available locally
authorAndrew Tridgell <tridge@samba.org>
Thu, 24 Jun 2010 06:02:43 +0000 (16:02 +1000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 24 Jun 2010 08:46:57 +0000 (18:46 +1000)
this avoids trying to fetch the stylesheet from the internet. If we
can't process the stylesheet with --nonet at configure time then don't
build manpages.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
buildtools/wafsamba/samba_conftests.py
buildtools/wafsamba/wafsamba.py

index c95a88791b1c28df5e22c2e8db69c7b6c2ba36ca..c6f890171804ca828eb024fcd89fd0073de7ba5c 100644 (file)
@@ -242,7 +242,7 @@ WriteMakefile(
 
 
 @conf
-def CHECK_COMMAND(conf, cmd, msg=None, define=None, on_target=True):
+def CHECK_COMMAND(conf, cmd, msg=None, define=None, on_target=True, boolean=False):
     '''run a command and return result'''
     if msg is None:
         msg = 'Checking %s' % ' '.join(cmd)
@@ -255,10 +255,15 @@ def CHECK_COMMAND(conf, cmd, msg=None, define=None, on_target=True):
     except:
         conf.COMPOUND_END(False)
         return False
-    ret = ret.strip()
-    conf.COMPOUND_END(ret)
-    if define:
-        conf.DEFINE(define, ret, quote=True)
+    if boolean:
+        conf.COMPOUND_END('ok')
+        if define:
+            conf.DEFINE(define, '1')
+    else:
+        ret = ret.strip()
+        conf.COMPOUND_END(ret)
+        if define:
+            conf.DEFINE(define, ret, quote=True)
     return ret
 
 
@@ -304,4 +309,25 @@ def CHECK_INLINE(conf):
         conf.COMPOUND_END(i)
     return ret
 
+@conf
+def CHECK_XSLTPROC_MANPAGES(conf):
+    '''check if xsltproc can run with the given stylesheets'''
+
+    stylesheets='http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl'
 
+    if not conf.CONFIG_SET('XSLTPROC'):
+        conf.find_program('xsltproc', var='XSLTPROC')
+    if not conf.CONFIG_SET('XSLTPROC'):
+        return False
+
+    for s in TO_LIST(stylesheets):
+        if not conf.CONFIG_SET('XSLTPROC_%s' % s):
+            ret = conf.CHECK_COMMAND('%s --nonet %s 2> /dev/null' % (conf.env.XSLTPROC, s),
+                                     msg='Checking for stylesheet %s' % s,
+                                     define=None, on_target=False,
+                                     boolean=True)
+            if not ret:
+                return False
+            conf.env['XSLTPROC_%s' % s] = True
+    conf.env['XSLTPROC_MANPAGES'] = True
+    return True
index a1718d33ba153fd480c5f69e1dc0cac29ae6f46f..5ffe4b8f9b6647f06d6513e1a529587010882309 100644 (file)
@@ -213,7 +213,7 @@ def SAMBA_LIBRARY(bld, libname, source,
     if pc_files is not None:
         bld.PKG_CONFIG_FILES(pc_files, vnum=vnum)
 
-    if manpages is not None and 'XSLTPROC' in bld.env and bld.env['XSLTPROC']:
+    if manpages is not None and 'XSLTPROC_MANPAGES' in bld.env and bld.env['XSLTPROC_MANPAGES']:
         bld.MANPAGES(manpages)
 
 
@@ -304,7 +304,7 @@ def SAMBA_BINARY(bld, binname, source,
     if subsystem_name is not None:
         bld.TARGET_ALIAS(subsystem_name, binname)
 
-    if manpages is not None and 'XSLTPROC' in bld.env and bld.env['XSLTPROC']:
+    if manpages is not None and 'XSLTPROC_MANPAGES' in bld.env and bld.env['XSLTPROC_MANPAGES']:
         bld.MANPAGES(manpages)
 
 Build.BuildContext.SAMBA_BINARY = SAMBA_BINARY
@@ -873,7 +873,7 @@ def MANPAGES(bld, manpages):
                             source=source,
                             target=m,
                             group='final',
-                            rule='${XSLTPROC} -o ${TGT} ${MAN_XSL} ${SRC}'
+                            rule='${XSLTPROC} -o ${TGT} --nonet ${MAN_XSL} ${SRC}'
                             )
         bld.INSTALL_FILES('${MANDIR}/man%s' % m[-1], m, flat=True)
 Build.BuildContext.MANPAGES = MANPAGES