Skip to content

Commit

Permalink
docs-xml: convert smb.conf.5 build to waf
Browse files Browse the repository at this point in the history
smb.conf(5) is different from other manpages because before it is
built, it gets merged together from a number of smaller files, one
per parameter. So we first create a parameters.all.xml file that
references all these files and then include it into master smb.conf.5.xml

One small issue is how to handle generated files in WAF build
from xi:include perspective as the files are generated in bin/default/docs-xml
rather than in docs-xml. We solve this by further expanding use of XML catalogs
and rewriting virtual path http://www.samba.org/samba/smbdotconf/ to proper
location.

Both docs-xml autoconf and waf builds work correctly now.

Autobuild-User(master): Alexander Bokovoy <[email protected]>
Autobuild-Date(master): Mon Sep 17 14:18:31 CEST 2012 on sn-devel-104
  • Loading branch information
abbra committed Sep 17, 2012
1 parent 57990cb commit 73ed153
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 9 deletions.
6 changes: 4 additions & 2 deletions buildtools/wafsamba/wafsamba.py
Original file line number Diff line number Diff line change
Expand Up @@ -789,14 +789,16 @@ def SAMBAMANPAGES(bld, manpages):
'''build and install manual pages'''
bld.env.SAMBA_EXPAND_XSL = bld.srcnode.abspath() + '/docs-xml/xslt/expand-sambadoc.xsl'
bld.env.SAMBA_MAN_XSL = bld.srcnode.abspath() + '/docs-xml/xslt/man.xsl'
os.environ["XML_CATALOG_FILES"] = 'file:///etc/xml/catalog file://' + bld.srcnode.abspath() + '/bin/default/docs-xml/build/catalog.xml'
bld.env.SAMBA_CATALOGS = 'file:///etc/xml/catalog file://' + bld.srcnode.abspath() + '/bin/default/docs-xml/build/catalog.xml'
for m in manpages.split():
source = m + '.xml'
bld.SAMBA_GENERATOR(m,
source=source,
target=m,
group='final',
rule='${XSLTPROC} --xinclude --stringparam noreference 0 -o ${TGT}.xml --nonet ${SAMBA_EXPAND_XSL} ${SRC} && ${XSLTPROC} --nonet -o ${TGT} ${SAMBA_MAN_XSL} ${TGT}.xml'
rule='''export XML_CATALOG_FILES="${SAMBA_CATALOGS}"
${XSLTPROC} --xinclude --stringparam noreference 0 -o ${TGT}.xml --nonet ${SAMBA_EXPAND_XSL} ${SRC}
${XSLTPROC} --nonet -o ${TGT} ${SAMBA_MAN_XSL} ${TGT}.xml'''
)
bld.INSTALL_FILES('${MANDIR}/man%s' % m[-1], m, flat=True)
Build.BuildContext.SAMBAMANPAGES = SAMBAMANPAGES
Expand Down
7 changes: 5 additions & 2 deletions docs-xml/build/catalog.xml.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@

<rewriteURI
uriStartString="http://www.samba.org/samba/DTD/"
rewritePrefix="file://@abs_top_builddir@/build/DTD/"/>
rewritePrefix="file://@abs_top_srcdir@/build/DTD/"/>

<rewriteURI
uriStartString="http://www.gnu.org/licenses/"
rewritePrefix="file://@abs_top_builddir@/Samba3-ByExample/"/>
rewritePrefix="file://@abs_top_srcdir@/Samba3-ByExample/"/>
<rewriteURI
uriStartString="http://www.samba.org/samba/smbdotconf/"
rewritePrefix="file://@abs_top_builddir@/smbdotconf/"/>
</catalog>
5 changes: 4 additions & 1 deletion docs-xml/manpages/smb.conf.5.xml
Original file line number Diff line number Diff line change
Expand Up @@ -757,7 +757,10 @@ chmod 1770 /usr/local/samba/lib/usershares
<title>EXPLANATION OF EACH PARAMETER</title>

<samba:parameterlist>
<xi:include href="../smbdotconf/parameters.all.xml" parse="xml"/>
<!-- The URI below is resolved to local generated version of parameters.all.xml //-->
<!-- WAF build places it in bin/default/docs-xml/smbdotconf/parameters.all.xml //-->
<!-- and we redirect there via use of XML_CATALOG_FILES, see docs-xml/build/catalog.xml.in //-->
<xi:include href="http://www.samba.org/samba/smbdotconf/parameters.all.xml" parse="xml"/>
</samba:parameterlist>

</refsect1>
Expand Down
25 changes: 23 additions & 2 deletions docs-xml/wscript_build
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env python

from samba_utils import save_file
manpages='''
manpages/eventlogadm.8
manpages/findsmb.1
Expand All @@ -23,7 +23,6 @@ manpages='''
manpages/rpcclient.1
manpages/samba.7
manpages/sharesec.1
manpages/smb.conf.5
manpages/smbcacls.1
manpages/smbclient.1
manpages/smbcontrol.1
Expand Down Expand Up @@ -87,8 +86,30 @@ pam_winbind_manpages = '''

krb5_locator_manpages = 'manpages/winbind_krb5_locator.7'

def smbdotconf_generate_parameter_list(task):
parameter_all = task.outputs[0].bldpath(task.env)
articles = task.inputs

t = '<section xmlns:xi="http://www.w3.org/2003/XInclude">\n'
for article in articles:
t += "<xi:include href='file://" + article.abspath(task.env) + "' parse='xml'/>\n"
t += "</section>\n"
save_file(parameter_all, t , create_dir=True)
return 0

def SMBDOTCONF_MANPAGE(bld, target):
''' assemble and build smb.conf.5 manual page'''
articles = bld.path.ant_glob("smbdotconf/**/*.xml")
parameter_all = 'smbdotconf/parameters.all.xml'
bld.SAMBA_GENERATOR(parameter_all,
source=articles,
target=parameter_all,
rule=smbdotconf_generate_parameter_list)
bld.SAMBAMANPAGES(target)

if ('XSLTPROC_MANPAGES' in bld.env and bld.env['XSLTPROC_MANPAGES']):

SMBDOTCONF_MANPAGE(bld, 'manpages/smb.conf.5')
bld.SAMBAMANPAGES(manpages)

if bld.CONFIG_SET('WITH_PAM_MODULES') and bld.CONFIG_SET('HAVE_PAM_START'):
Expand Down
6 changes: 4 additions & 2 deletions wscript_build
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ bld.RECURSE('testsuite/headers')
bld.SYMBOL_CHECK()
bld.DUP_SYMBOL_CHECK()

bld.env.ABS_TOP_BUILDDIR = bld.srcnode.abspath() + '/docs-xml'
bld.env.ABS_TOP_SRCDIR = bld.srcnode.abspath() + '/docs-xml'
bld.env.ABS_TOP_BUILDDIR = bld.srcnode.abspath() + '/bin/default/docs-xml'
bld.CONFIGURE_FILE('docs-xml/build/catalog.xml',
ABS_TOP_BUILDDIR = bld.env.ABS_TOP_BUILDDIR)
ABS_TOP_BUILDDIR = bld.env.ABS_TOP_BUILDDIR,
ABS_TOP_SRCDIR=bld.env.ABS_TOP_SRCDIR)
bld.RECURSE('docs-xml')

0 comments on commit 73ed153

Please sign in to comment.