The branch, master has been updated via fca80dc selftest: updated docs.py script via 2c86758 docs: Always declare rule to build parameters.all.xml and do it first via 464009c docs: change default of usershare path to use an entity via 7d9cb4d docs: change default of cache directory to use an entity via f243479 docs: change default of winbindd privileged socket directory to use an entity via c729ab8 docs: change default of samba kcc command to use an entity via 7a93e0f docs: change default of ntp signd socket directory to use an entity via 072b053 docs: change default of spn update command to use an entity via 79229f4 docs: change default in private directory to use an entity via 31a48b8 docs: change default in lock directory to use an entity via d0839f3 docs: change default in state directory to use an entity via 9a76eed docs: change default in winbindd socket directory to use an entity via 308b8b2 docs: change default in ncalrpc dir to use an entity via 9143987 docs: change default in smb passwd file to use an entity via e450a98 docs: change default in dns update command to use an entity via 44026cf docs: change default in pid directory to use an entity via 53522ac docs: Allow smb.conf.5 to still be generated outside the waf build via 57ba012 docs: define and include entities for the docs from 0e552e0 docs: adjust the defaults for list parameters to include commas to match testparm output
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit fca80dccf86d00b3dfe42f35b78b0538e3cd1c0e Author: Garming Sam <garm...@catalyst.net.nz> Date: Tue Dec 24 15:33:42 2013 +1300 selftest: updated docs.py script The script now checks the parameter defaults against the documentation by using the output of testparm and samba-tool testparm. It now also uses the ElementTree xml library. Change-Id: I2657c8c56a8c8383735e659dc9f636b4c5ab460b Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> Autobuild-User(master): Michael Adam <ob...@samba.org> Autobuild-Date(master): Fri Jan 31 23:22:09 CET 2014 on sn-devel-104 commit 2c86758b04515998c690f293fada2cc43116d764 Author: Andrew Bartlett <abart...@samba.org> Date: Wed Jan 15 18:11:41 2014 +1300 docs: Always declare rule to build parameters.all.xml and do it first This ensures this file and the rule to generate it can always be found. Andrew Bartlett Change-Id: I76d9f4470e2678fc2df4e3a13642737128938f3a Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 464009c01d747c12be682a92400a24a871cff0c1 Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jan 9 13:32:32 2014 +1300 docs: change default of usershare path to use an entity Change-Id: Idf9b8b95387f9b31b1cf8d3d548adb8361de0534 Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 7d9cb4df4496cdb1afc649a074459e4c3d64e676 Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jan 9 13:18:14 2014 +1300 docs: change default of cache directory to use an entity Change-Id: I555524324d671a30c8bfb130ba95e745492a50b2 Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit f243479ade4ff6c9db550a8b49b825d27ba5f44d Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jan 9 13:08:35 2014 +1300 docs: change default of winbindd privileged socket directory to use an entity Change-Id: Ia520090dbad50a6d3fc5b7bdc1982cfc15174b16 Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit c729ab83f0625fd8fb443419be0335aa4f33bf65 Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jan 9 13:08:05 2014 +1300 docs: change default of samba kcc command to use an entity Change-Id: I63c10ca0efc83496ffcd720edc00bd711ce53eac Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 7a93e0fa9cc962d17680a0c67781c076a4547918 Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jan 9 13:07:48 2014 +1300 docs: change default of ntp signd socket directory to use an entity Change-Id: Id66dcd5b587c4c355961d8e9d10cdf0d1e17a6ad Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 072b053c00a2676a4b34d07180b67e920a00ac5b Author: Andrew Bartlett <abart...@samba.org> Date: Thu Jan 9 13:07:33 2014 +1300 docs: change default of spn update command to use an entity Change-Id: I05720c79767311593d93277e2ba82f6bde212518 Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 79229f41115d667d211b84aa7cedfdc114e3386a Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:35:03 2014 +1300 docs: change default in private directory to use an entity Change-Id: I4d015f2a75d8f404e0db64382b6d71bb9b59b8e3 Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 31a48b832d3bcfb4549ec5fbe34db0da25cc7618 Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:33:27 2014 +1300 docs: change default in lock directory to use an entity Change-Id: Ie36185c0c9f439747a855885138093197f60786a Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit d0839f3b0f49b9cbe0bfe466e4cd62bbd8de19c6 Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:31:17 2014 +1300 docs: change default in state directory to use an entity Change-Id: I955779e117183ea42c86c092df9f6e3fda936f3c Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 9a76eedd0c080811a60cdfab7f8c6cc5b44baf20 Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:27:18 2014 +1300 docs: change default in winbindd socket directory to use an entity Change-Id: I8b3305f789cf081c5289c9d2653aecd8aa828577 Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 308b8b2f10215f649e60682b1224c535bb68d90c Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:23:31 2014 +1300 docs: change default in ncalrpc dir to use an entity Change-Id: I53e66f778731f44aba9fa2e1e18f157bea9c2974 Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 9143987405dcde0973e9a2c7039bce12dd97cf50 Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:19:48 2014 +1300 docs: change default in smb passwd file to use an entity Change-Id: Ia81d677657ec0013c9cc7bfaecc2d88faf50f07c Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit e450a980b51860619d4f27ea251bf5a242f1ddc7 Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:15:28 2014 +1300 docs: change default in dns update command to use an entity Change-Id: I911eabd0271d0b3cdd15b5232a837ca3289997ae Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 44026cf32e42220f08f4d3f2705599230e138936 Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:07:32 2014 +1300 docs: change default in pid directory to use an entity Change-Id: I4e4d5c7e1a82aa0788423efe2cba2e828f127346 Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 53522ac9946c78b00d4beb081777c80190b2f100 Author: Andrew Bartlett <abart...@samba.org> Date: Tue Jan 14 13:07:52 2014 +1300 docs: Allow smb.conf.5 to still be generated outside the waf build This will be needed once we start to use the XML entities for the configure-dependent paths. Change-Id: I2b64f02bb365cc099178b63b2b24bdb239dbb7c1 Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 57ba012c10fb21f261a3ab9136be05a694278df9 Author: Garming Sam <garm...@catalyst.net.nz> Date: Thu Jan 9 12:01:18 2014 +1300 docs: define and include entities for the docs This allows for dynamic default settings to be generated. Change-Id: If8b93d233fb941bc7e3073ccf4b5ec0b0a231bd9 Pair-programmed-with: Andrew Bartlett <abart...@samba.org> Signed-off-by: Garming Sam <garm...@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> ----------------------------------------------------------------------- Summary of changes: buildtools/wafsamba/wafsamba.py | 6 +- docs-xml/smbdotconf/domain/dnsupdatecommand.xml | 2 +- docs-xml/smbdotconf/domain/spnupdatecommand.xml | 2 +- docs-xml/smbdotconf/generate-file-list.sh | 22 +++- docs-xml/smbdotconf/misc/cachedirectory.xml | 2 +- docs-xml/smbdotconf/misc/lockdirectory.xml | 2 +- docs-xml/smbdotconf/misc/ncalrpcdir.xml | 2 +- docs-xml/smbdotconf/misc/piddirectory.xml | 2 +- docs-xml/smbdotconf/misc/statedirectory.xml | 2 +- docs-xml/smbdotconf/misc/usersharepath.xml | 2 +- .../security/ntpsigndsocketdirectory.xml | 2 +- docs-xml/smbdotconf/security/privatedir.xml | 2 +- docs-xml/smbdotconf/security/sambakcccommand.xml | 2 +- docs-xml/smbdotconf/security/smbpasswdfile.xml | 2 +- .../winbind/winbinddprivilegedsocketdirectory.xml | 2 +- .../smbdotconf/winbind/winbinddsocketdirectory.xml | 2 +- docs-xml/wscript_build | 30 +++- dynconfig/wscript | 35 ++++- python/samba/tests/docs.py | 155 +++++++++++++++----- wscript_build | 13 +- 20 files changed, 210 insertions(+), 79 deletions(-) Changeset truncated at 500 lines: diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py index caa6fb1..aeb9418 100644 --- a/buildtools/wafsamba/wafsamba.py +++ b/buildtools/wafsamba/wafsamba.py @@ -806,7 +806,7 @@ def MANPAGES(bld, manpages, install): bld.INSTALL_FILES('${MANDIR}/man%s' % m[-1], m, flat=True) Build.BuildContext.MANPAGES = MANPAGES -def SAMBAMANPAGES(bld, manpages): +def SAMBAMANPAGES(bld, manpages, extra_source=None): '''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' @@ -814,13 +814,15 @@ def SAMBAMANPAGES(bld, manpages): for m in manpages.split(): source = m + '.xml' + if extra_source is not None: + source = [source, extra_source] bld.SAMBA_GENERATOR(m, source=source, target=m, group='final', rule='''XML_CATALOG_FILES="${SAMBA_CATALOGS}" export XML_CATALOG_FILES - ${XSLTPROC} --xinclude --stringparam noreference 0 -o ${TGT}.xml --nonet ${SAMBA_EXPAND_XSL} ${SRC} + ${XSLTPROC} --xinclude --stringparam noreference 0 -o ${TGT}.xml --nonet ${SAMBA_EXPAND_XSL} ${SRC[0].abspath(env)} ${XSLTPROC} --nonet -o ${TGT} ${SAMBA_MAN_XSL} ${TGT}.xml''' ) bld.INSTALL_FILES('${MANDIR}/man%s' % m[-1], m, flat=True) diff --git a/docs-xml/smbdotconf/domain/dnsupdatecommand.xml b/docs-xml/smbdotconf/domain/dnsupdatecommand.xml index 08ff90a..0c7ed99 100644 --- a/docs-xml/smbdotconf/domain/dnsupdatecommand.xml +++ b/docs-xml/smbdotconf/domain/dnsupdatecommand.xml @@ -10,6 +10,6 @@ </para> </description> -<value type="default">$prefix/sbin/samba_dnsupdate</value> +<value type="default">&pathconfig.SCRIPTSBINDIR;/samba_dnsupdate</value> <value type="example">/usr/local/sbin/dnsupdate</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/domain/spnupdatecommand.xml b/docs-xml/smbdotconf/domain/spnupdatecommand.xml index f63be84..0d3a6f6 100644 --- a/docs-xml/smbdotconf/domain/spnupdatecommand.xml +++ b/docs-xml/smbdotconf/domain/spnupdatecommand.xml @@ -9,6 +9,6 @@ </para> </description> -<value type="default">$prefix/sbin/samba_spnupdate</value> +<value type="default">&pathconfig.SCRIPTSBINDIR;/samba_spnupdate</value> <value type="example">/usr/local/sbin/spnupdate</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/generate-file-list.sh b/docs-xml/smbdotconf/generate-file-list.sh index 68b2abe..a03ed11 100755 --- a/docs-xml/smbdotconf/generate-file-list.sh +++ b/docs-xml/smbdotconf/generate-file-list.sh @@ -1,4 +1,20 @@ #!/bin/sh +# +# This is the fallback table for when we use the docs-xml build +# system. When build as part of the main waf build, these are set to +# the full correct path for the system. +# +echo "<!DOCTYPE section [ +<!ENTITY pathconfig.SCRIPTSBINDIR '\${prefix}/sbin'> +<!ENTITY pathconfig.LOCKDIR '\${prefix}/var/lock'> +<!ENTITY pathconfig.NCALRPCDIR '\${prefix}/var/run/ncalrpc'> +<!ENTITY pathconfig.PIDDIR '\${prefix}/var/run'> +<!ENTITY pathconfig.STATEDIR '\${prefix}/var/locks'> +<!ENTITY pathconfig.PRIVATE_DIR '\${prefix}/private'> +<!ENTITY pathconfig.SMB_PASSWD_FILE '\${prefix}/private/smbpasswd'> +<!ENTITY pathconfig.WINBINDD_SOCKET_DIR '\${prefix}/var/run/ncalrpc'> +]>" + DIR=. if [ "x$1" != "x" ] then @@ -8,12 +24,12 @@ fi OLD=`pwd` cd $DIR -echo "<section xmlns:xi=\"http://www.w3.org/2003/XInclude\">" +echo "<section>" for I in `find . -mindepth 2 -type f -name '*.xml' | sort -t/ -k3 | xargs` do - echo "<xi:include href='$I' parse='xml'/>" + cat $I done - echo "</section>" + cd $OLD diff --git a/docs-xml/smbdotconf/misc/cachedirectory.xml b/docs-xml/smbdotconf/misc/cachedirectory.xml index 1cb8124..b3b0d3e 100644 --- a/docs-xml/smbdotconf/misc/cachedirectory.xml +++ b/docs-xml/smbdotconf/misc/cachedirectory.xml @@ -17,6 +17,6 @@ </para> </description> -<value type="default">${prefix}/var/cache</value> +<value type="default">&pathconfig.CACHEDIR;</value> <value type="example">/var/run/samba/locks/cache</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/misc/lockdirectory.xml b/docs-xml/smbdotconf/misc/lockdirectory.xml index cbe10d5..51c8003 100644 --- a/docs-xml/smbdotconf/misc/lockdirectory.xml +++ b/docs-xml/smbdotconf/misc/lockdirectory.xml @@ -16,6 +16,6 @@ </para> </description> -<value type="default">${prefix}/var/locks</value> +<value type="default">&pathconfig.LOCKDIR;</value> <value type="example">/var/run/samba/locks</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/misc/ncalrpcdir.xml b/docs-xml/smbdotconf/misc/ncalrpcdir.xml index 01b5b5c..5085050 100644 --- a/docs-xml/smbdotconf/misc/ncalrpcdir.xml +++ b/docs-xml/smbdotconf/misc/ncalrpcdir.xml @@ -8,6 +8,6 @@ <para>This will allow Samba and other unix processes to interact over DCE/RPC without using TCP/IP. Additionally a sub-directory 'np' has restricted permissions, and allows a trusted communication channel between Samba processes</para> </description> -<value type="default">${prefix}/var/ncalrpc</value> +<value type="default">&pathconfig.NCALRPCDIR;</value> <value type="example">/var/run/samba/ncalrpc</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/misc/piddirectory.xml b/docs-xml/smbdotconf/misc/piddirectory.xml index 35e0223..2ad25e0 100644 --- a/docs-xml/smbdotconf/misc/piddirectory.xml +++ b/docs-xml/smbdotconf/misc/piddirectory.xml @@ -9,6 +9,6 @@ </para> </description> -<value type="default">${prefix}/var/locks</value> +<value type="default">&pathconfig.PIDDIR;</value> <value type="example">/var/run/</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/misc/statedirectory.xml b/docs-xml/smbdotconf/misc/statedirectory.xml index f8cfcdf..418fb61 100644 --- a/docs-xml/smbdotconf/misc/statedirectory.xml +++ b/docs-xml/smbdotconf/misc/statedirectory.xml @@ -17,6 +17,6 @@ </para> </description> -<value type="default">${prefix}/var/locks</value> +<value type="default">&pathconfig.STATEDIR;</value> <value type="example">/var/run/samba/locks/state</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usersharepath.xml b/docs-xml/smbdotconf/misc/usersharepath.xml index cad64be..a095f17 100644 --- a/docs-xml/smbdotconf/misc/usersharepath.xml +++ b/docs-xml/smbdotconf/misc/usersharepath.xml @@ -28,5 +28,5 @@ </para> </description> -<value type="default">STATEDIR/usershare</value> with the compile time value of STATEDIR. +<value type="default">&pathconfig.STATEDIR;/usershares</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml b/docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml index 718626d..bc04efd 100644 --- a/docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml +++ b/docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml @@ -13,5 +13,5 @@ directive in <filename>ntp.conf</filename>.</para> </description> -<value type="default">$prefix/run/samba/ntp_signd</value> +<value type="default">&pathconfig.NTP_SIGND_SOCKET_DIR;</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/security/privatedir.xml b/docs-xml/smbdotconf/security/privatedir.xml index 2f4b576..cd7c28a 100644 --- a/docs-xml/smbdotconf/security/privatedir.xml +++ b/docs-xml/smbdotconf/security/privatedir.xml @@ -11,5 +11,5 @@ </para> </description> -<value type="default">${prefix}/private</value> +<value type="default">&pathconfig.PRIVATE_DIR;</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/security/sambakcccommand.xml b/docs-xml/smbdotconf/security/sambakcccommand.xml index 9621792..2e8b28e 100644 --- a/docs-xml/smbdotconf/security/sambakcccommand.xml +++ b/docs-xml/smbdotconf/security/sambakcccommand.xml @@ -14,6 +14,6 @@ </para> </description> -<value type="default">$prefix/sbin/samba_kcc</value> +<value type="default">&pathconfig.SCRIPTSBINDIR;/samba_kcc</value> <value type="example">/usr/local/bin/kcc</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/security/smbpasswdfile.xml b/docs-xml/smbdotconf/security/smbpasswdfile.xml index 209fa74..e751885 100644 --- a/docs-xml/smbdotconf/security/smbpasswdfile.xml +++ b/docs-xml/smbdotconf/security/smbpasswdfile.xml @@ -15,5 +15,5 @@ smb passwd file = /etc/samba/smbpasswd </para> </description> -<value type="default">${prefix}/private/smbpasswd</value> +<value type="default">&pathconfig.SMB_PASSWD_FILE;</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbinddprivilegedsocketdirectory.xml b/docs-xml/smbdotconf/winbind/winbinddprivilegedsocketdirectory.xml index 94769a1..200e0ae 100644 --- a/docs-xml/smbdotconf/winbind/winbinddprivilegedsocketdirectory.xml +++ b/docs-xml/smbdotconf/winbind/winbinddprivilegedsocketdirectory.xml @@ -10,5 +10,5 @@ <related>winbindd socket directory</related> -<value type="default">$prefix/lib/winbindd_privileged</value> +<value type="default">&pathconfig.WINBINDD_PRIVILEGED_SOCKET_DIR;</value> </samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml b/docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml index 5fd32ff..d26ad15 100644 --- a/docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml +++ b/docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml @@ -14,5 +14,5 @@ <related>winbindd privileged socket directory</related> -<value type="default">$prefix/run/samba/winbindd</value> +<value type="default">&pathconfig.WINBINDD_SOCKET_DIR;</value> </samba:parameter> diff --git a/docs-xml/wscript_build b/docs-xml/wscript_build index d1b3ec5..d59d4b5 100644 --- a/docs-xml/wscript_build +++ b/docs-xml/wscript_build @@ -98,22 +98,34 @@ 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/2001/XInclude">\n' + entities = bld.pathconfig_entities() + t = "<!DOCTYPE section [\n" + + for entity in entities: + t += "%s\n" % entity + + t += "]>\n" + t += "<section>\n" for article in articles: - t += "<xi:include href='" + article.abspath(task.env) + "' parse='xml'/>\n" + f = open(article.abspath(task.env), 'r') + t += f.read() + f.close() + t += "</section>\n" save_file(parameter_all, t , create_dir=True) return 0 +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, + always=True) + 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) + bld.SAMBAMANPAGES(target, parameter_all) if ('XSLTPROC_MANPAGES' in bld.env and bld.env['XSLTPROC_MANPAGES']): diff --git a/dynconfig/wscript b/dynconfig/wscript index aa4e66e..a7cfa0a 100755 --- a/dynconfig/wscript +++ b/dynconfig/wscript @@ -345,29 +345,48 @@ def configure(conf): conf.start_msg("Dynconfig[%s]: " % (varname)) conf.end_msg("'%s'" % (value), 'GREEN') -def dynconfig_cflags(bld, list=None): - '''work out the extra CFLAGS for dynconfig.c''' - cflags = [] - # override some paths when running from the build directory +def get_override(bld): override = { 'MODULESDIR' : 'bin/modules', 'PYTHONDIR' : 'bin/python', 'PYTHONARCHDIR' : 'bin/python', 'BINDIR' : 'bin', 'SBINDIR' : 'bin', - 'CODEPAGEDIR' : os.path.join(bld.env.srcdir, 'codepages'), - 'SCRIPTSBINDIR' : os.path.join(bld.env.srcdir, 'source4/scripting/bin'), - 'SETUPDIR' : os.path.join(bld.env.srcdir, 'source4/setup') } + 'CODEPAGEDIR' : 'codepages', + 'SCRIPTSBINDIR' : 'source4/scripting/bin', + 'SETUPDIR' : 'source4/setup' + } + return override + +def dynconfig_cflags(bld, list=None): + '''work out the extra CFLAGS for dynconfig.c''' + cflags = [] for varname in dynconfig.keys(): if list and not varname in list: continue value = bld.env[varname] if not Options.is_install: + override = get_override(bld) if varname in override: - value = os.path.join(os.getcwd(), override[varname]) + value = os.path.join(bld.env.srcdir, override[varname]) cflags.append('-D%s="%s"' % (varname, value)) return cflags Build.BuildContext.dynconfig_cflags = dynconfig_cflags +def pathconfig_entities(bld, list=None): + '''work out the extra entities for the docs''' + entities = [] + for varname in dynconfig.keys(): + if list and not varname in list: + continue + value = bld.env[varname] + if not Options.is_install: + override = get_override(bld) + if varname in override: + value = os.path.join(bld.env.srcdir, override[varname]) + entities.append("<!ENTITY pathconfig.%s '%s'>" % (varname, value)) + return entities +Build.BuildContext.pathconfig_entities = pathconfig_entities + def build(bld): cflags = bld.dynconfig_cflags() version_header = 'version.h' diff --git a/python/samba/tests/docs.py b/python/samba/tests/docs.py index c1b3716..afa9fdd 100644 --- a/python/samba/tests/docs.py +++ b/python/samba/tests/docs.py @@ -21,54 +21,42 @@ import samba import samba.tests -from samba.tests import TestSkipped +from samba.tests import TestSkipped, TestCaseInTempDir import errno import os import re import subprocess +import xml.etree.ElementTree as ET - -class TestCase(samba.tests.TestCase): +class TestCase(samba.tests.TestCaseInTempDir): def _format_message(self, parameters, message): parameters = list(parameters) parameters.sort() return message + '\n\n %s' % ('\n '.join(parameters)) - -class NoXsltProc(Exception): - - def __init__(self): - Exception.__init__(self, "'xsltproc' is not installed") - - def get_documented_parameters(sourcedir): path = os.path.join(sourcedir, "bin", "default", "docs-xml", "smbdotconf") if not os.path.exists(os.path.join(path, "parameters.all.xml")): raise Exception("Unable to find parameters.all.xml") try: - p = subprocess.Popen( - ["xsltproc", "--xinclude", "--param", "smb.context", "ALL", os.path.join(sourcedir, "docs-xml", "smbdotconf", "generate-context.xsl"), "parameters.all.xml"], - stderr=subprocess.STDOUT, stdout=subprocess.PIPE, - cwd=path) - except OSError, e: - if e.errno == errno.ENOENT: - raise NoXsltProc() - raise - out, err = p.communicate() - assert p.returncode == 0, "returncode was %r" % p.returncode - for l in out.splitlines(): - m = re.match('<samba:parameter .*?name="([^"]*?)"', l) - if "removed=\"1\"" in l: - continue - if m: - name = m.group(1) - yield name - m = re.match('.*<synonym>(.*)</synonym>.*', l) - if m: - name = m.group(1) - yield name + p = open(os.path.join(path, "parameters.all.xml"), 'r') + except IOError, e: + raise Exception("Error opening parameters file") + out = p.read() + + root = ET.fromstring(out) + for parameter in root: + name = parameter.attrib.get('name') + if parameter.attrib.get('removed') == "1": + continue + yield name + syn = parameter.findall('synonym') + if syn is not None: + for sy in syn: + yield sy.text + p.close() def get_implementation_parameters(sourcedir): @@ -96,15 +84,69 @@ def get_implementation_parameters(sourcedir): finally: f.close() +def get_default_triples(sourcedir): + path = os.path.join(sourcedir, "bin", "default", "docs-xml", "smbdotconf") + if not os.path.exists(os.path.join(path, "parameters.all.xml")): + raise Exception("Unable to find parameters.all.xml") + try: + p = open(os.path.join(path, "parameters.all.xml"), 'r') + except IOError, e: + raise Exception("Error opening parameters file") + out = p.read() + + root = ET.fromstring(out) + for parameter in root: + name = parameter.attrib.get("name") + values = parameter.findall("value") + defaults = [] + for value in values: + if value.attrib.get("type") == "default": + defaults.append(value) + if len(defaults) == 0: + continue + elif len(defaults) > 1: + raise Exception("More than one default found for parameter %s" % name) + default_text = defaults[0].text + if default_text is None: + default_text = "" + context = parameter.attrib.get("context") + yield name, default_text, context + p.close() class SmbDotConfTests(TestCase): + # defines the cases where the defaults may differ from the documentation + special_cases = set(['log level', 'path', 'ldapsam:trusted', 'spoolss: architecture', + 'share:fake_fscaps', 'ldapsam:editposix', 'rpc_daemon:DAEMON', + 'rpc_server:SERVER', 'panic action', 'homedir map', 'NIS homedir', + 'server string', 'netbios name', 'socket options', 'use mmap', + 'ctdbd socket', 'printing', 'printcap name', 'queueresume command', + 'queuepause command','lpresume command', 'lppause command', + 'lprm command', 'lpq command', 'print command', 'template homedir']) + + def setUp(self): + super(SmbDotConfTests, self).setUp() + # create a minimal smb.conf file for testparm + self.smbconf = os.path.join(self.tempdir, "paramtestsmb.conf") + f = open(self.smbconf, 'w') + try: + f.write(""" +[test] + path = / +""") + finally: + f.close() + + def tearDown(self): + super(SmbDotConfTests, self).tearDown() + os.unlink(self.smbconf) + def test_unknown(self): - topdir = samba.source_tree_topdir() + topdir = os.path.abspath(samba.source_tree_topdir()) try: documented = set(get_documented_parameters(topdir)) - except NoXsltProc: - raise TestSkipped("'xsltproc' is missing, unable to load parameters") + except e: + self.fail("Unable to load parameters") parameters = set(get_implementation_parameters(topdir)) # Filter out parametric options, since we can't find them in the parm # table @@ -115,13 +157,52 @@ class SmbDotConfTests(TestCase): "Parameters that are documented but not in the implementation:")) def test_undocumented(self): - topdir = samba.source_tree_topdir() + topdir = os.path.abspath(samba.source_tree_topdir()) try: -- Samba Shared Repository