smb.conf.5: sort parameters alphabetically
authorAlexander Bokovoy <ab@samba.org>
Fri, 6 Oct 2017 19:49:11 +0000 (22:49 +0300)
committerKarolin Seeger <kseeger@samba.org>
Wed, 25 Oct 2017 06:43:05 +0000 (08:43 +0200)
Content of each separate parameter description file is added
into a parameters.all.xml file before compiling smb.conf.5.

The issue is that POSIX file systems generally don't give any
promises over how glob-produced files are sorted. Thus, we need to sort
them in a predictable way.

This patch adds sorting based on a file name as a string. Since all
parameter files named after the parameter itself (plus .xml), we can
use file name sorting.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13081

Signed-off-by: Alexander Bokovoy <ab@samba.org>
Reviewed-By: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
(cherry picked from commit 543c0af4767f5be723594b87d078357e1e04f02e)

docs-xml/wscript_build

index cbc09a56559c1efc760dff021313f7f33ca71781..eb25aa0a46a30a33638197d7f8ba8c854635efde 100644 (file)
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 from samba_utils import save_file
+import os
 manpages='''
          manpages/cifsdd.8
          manpages/dbwrap_tool.1
@@ -129,7 +130,13 @@ def smbdotconf_generate_parameter_list(task):
     save_file(parameter_all, t , create_dir=True)
     return 0
 
-articles = bld.path.ant_glob("smbdotconf/**/*.xml", flat=True)
+# Since nothing really forces sorting in glob, we have to sort by file name
+# POSIX file systems aren't required to return sorted content but we want
+# smb.conf parameters to be sorted alphabetically
+sources = bld.path.ant_glob("smbdotconf/**/*.xml", flat=False)
+articles = " ".join(sorted([x.relpath_gen(bld.path) for x in sources],
+                           key=lambda m: m.split(os.sep)[-1]))
+
 parameter_all = 'smbdotconf/parameters.all.xml'
 bld.SAMBA_GENERATOR(parameter_all,
                     source=articles,