Changeset 988 for vendor/current/wscript
- Timestamp:
- Nov 24, 2016, 1:14:11 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/wscript
r740 r988 1 #! 1 #!/usr/bin/env python 2 2 3 3 srcdir = '.' … … 7 7 VERSION=None 8 8 9 import sys, os 9 import sys, os, tempfile 10 10 sys.path.insert(0, srcdir+"/buildtools/wafsamba") 11 import wafsamba, Options, samba_dist, Scripting, Utils, samba_version11 import wafsamba, Options, samba_dist, samba_git, Scripting, Utils, samba_version 12 12 13 13 14 14 samba_dist.DIST_DIRS('.') 15 16 #This is a list of files that we don't want in the package, for 17 #whatever reason. Directories should be listed with a trailing / to 18 #avoid over-exclusion. 19 20 #This list includes files that would confuse the recipient of a 21 #samba-4.0.0 branded tarball (until the merge is complete) and the 22 #core elements of the autotools build system (which is known to 23 #produce buggy binaries). 24 samba_dist.DIST_BLACKLIST('README Manifest Read-Manifest-Now Roadmap ' + 25 'packaging/ docs-xml/ examples/ swat/ WHATSNEW.txt MAINTAINERS ') 15 samba_dist.DIST_BLACKLIST('.gitignore .bzrignore source4/selftest/provisions') 16 26 17 # install in /usr/local/samba by default 27 Options.default_prefix = '/usr/local/samba' 28 29 os.environ['TOPLEVEL_BUILD'] = '1' 18 default_prefix = Options.default_prefix = '/usr/local/samba' 19 20 # This callback optionally takes a list of paths as arguments: 21 # --with-system_mitkrb5 /path/to/krb5 /another/path 22 def system_mitkrb5_callback(option, opt, value, parser): 23 setattr(parser.values, option.dest, True) 24 value = [] 25 for arg in parser.rargs: 26 # stop on --foo like options 27 if arg[:2] == "--" and len(arg) > 2: 28 break 29 value.append(arg) 30 if len(value)>0: 31 del parser.rargs[:len(value)] 32 setattr(parser.values, option.dest, value) 30 33 31 34 def set_options(opt): … … 33 36 opt.PRIVATE_EXTENSION_DEFAULT('samba4') 34 37 opt.RECURSE('lib/replace') 35 opt.RECURSE(' source4/dynconfig')36 opt.RECURSE(' source4/lib/ldb')37 opt.RECURSE('s ource4/selftest')38 opt.RECURSE('dynconfig') 39 opt.RECURSE('lib/ldb') 40 opt.RECURSE('selftest') 38 41 opt.RECURSE('source4/lib/tls') 39 opt.RECURSE('lib/nss_wrapper')40 opt.RECURSE('lib/socket_wrapper')41 opt.RECURSE('lib/uid_wrapper')42 42 opt.RECURSE('pidl') 43 43 opt.RECURSE('source3') 44 opt.RECURSE('lib/util') 45 opt.RECURSE('ctdb') 46 47 opt.add_option('--with-system-mitkrb5', 48 help='enable system MIT krb5 build (includes Samba 4 client and Samba 3 code base).'+ 49 'You may specify list of paths where Kerberos is installed (e.g. /usr/local /usr/kerberos) to search krb5-config', 50 action='callback', callback=system_mitkrb5_callback, dest='with_system_mitkrb5', default=False) 51 52 opt.add_option('--without-ad-dc', 53 help='disable AD DC functionality (enables Samba 4 client and Samba 3 code base).', 54 action='store_true', dest='without_ad_dc', default=False) 55 56 opt.add_option('--with-ntvfs-fileserver', 57 help='enable the depricated NTVFS file server from the original Samba4 branch (default if --enable-selftest specicifed). Conflicts with --with-system-mitkrb5 and --without-ad-dc', 58 action='store_true', dest='with_ntvfs_fileserver') 59 60 opt.add_option('--without-ntvfs-fileserver', 61 help='disable the depricated NTVFS file server from the original Samba4 branch', 62 action='store_false', dest='with_ntvfs_fileserver') 63 64 opt.add_option('--with-pie', 65 help=("Build Position Independent Executables " + 66 "(default if supported by compiler)"), 67 action="store_true", dest='enable_pie') 68 opt.add_option('--without-pie', 69 help=("Disable Position Independent Executable builds"), 70 action="store_false", dest='enable_pie') 71 72 opt.add_option('--with-relro', 73 help=("Build with full RELocation Read-Only (RELRO)" + 74 "(default if supported by compiler)"), 75 action="store_true", dest='enable_relro') 76 opt.add_option('--without-relro', 77 help=("Disable RELRO builds"), 78 action="store_false", dest='enable_relro') 44 79 45 80 gr = opt.option_group('developer options') 46 gr.add_option('--enable-build-farm',47 help='enable special build farm options',48 action='store_true', dest='BUILD_FARM')49 50 gr.add_option('--enable-s3build',51 help='enable build of s3 binaries',52 action='store_true', dest='S3BUILD')53 81 54 82 opt.tool_options('python') # options for disabling pyc or pyo compilation … … 57 85 58 86 def configure(conf): 59 conf.env.toplevel_build = True60 87 version = samba_version.load_version(env=conf.env) 61 88 … … 66 93 if Options.options.developer: 67 94 conf.ADD_CFLAGS('-DDEVELOPER -DDEBUG_PASSWORD') 68 69 if Options.options.S3BUILD: 70 conf.env.enable_s3build = True 71 72 # this enables smbtorture.static for s3 in the build farm 73 conf.env.BUILD_FARM = Options.options.BUILD_FARM or os.environ.get('RUN_FROM_BUILD_FARM') 74 75 conf.ADD_EXTRA_INCLUDES('#include/public #source4 #lib #source4/lib #source4/include #include') 76 95 conf.env.DEVELOPER = True 96 97 conf.ADD_EXTRA_INCLUDES('#include/public #source4 #lib #source4/lib #source4/include #include #lib/replace') 98 99 conf.env.replace_add_global_pthread = True 77 100 conf.RECURSE('lib/replace') 78 101 79 conf.find_program('python', var='PYTHON', mandatory=True) 80 conf.find_program('perl', var='PERL', mandatory=True) 102 conf.SAMBA_CHECK_PERL(mandatory=True) 81 103 conf.find_program('xsltproc', var='XSLTPROC') 82 104 83 # enable tool to build python extensions 84 conf.check_tool('python') 85 conf.check_python_version((2,4,2)) 105 conf.SAMBA_CHECK_PYTHON(mandatory=True, version=(2, 6, 0)) 86 106 conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=True) 87 107 … … 93 113 if not conf.CHECK_SHLIB_W_PYTHON("Checking if -undefined dynamic_lookup is not need"): 94 114 conf.env.append_value('shlib_LINKFLAGS', ['-undefined', 'dynamic_lookup']) 115 116 if sys.platform == 'darwin': 117 conf.ADD_LDFLAGS('-framework CoreFoundation') 118 95 119 if int(conf.env['PYTHON_VERSION'][0]) >= 3: 96 120 raise Utils.WafError('Python version 3.x is not supported by Samba yet') 97 121 98 conf.RECURSE('source4/dynconfig') 99 conf.RECURSE('source4/lib/ldb') 100 conf.RECURSE('source4/heimdal_build') 122 conf.RECURSE('dynconfig') 123 124 if conf.CHECK_FOR_THIRD_PARTY(): 125 conf.RECURSE('third_party') 126 else: 127 if not conf.CHECK_ZLIB(): 128 raise Utils.WafError('zlib development packages have not been found.\nIf third_party is installed, check that it is in the proper place.') 129 else: 130 conf.define('USING_SYSTEM_ZLIB',1) 131 132 if not conf.CHECK_POPT(): 133 raise Utils.WafError('popt development packages have not been found.\nIf third_party is installed, check that it is in the proper place.') 134 else: 135 conf.define('USING_SYSTEM_POPT', 1) 136 137 conf.RECURSE('lib/ldb') 138 139 if Options.options.with_system_mitkrb5: 140 conf.PROCESS_SEPARATE_RULE('system_mitkrb5') 141 if not (Options.options.without_ad_dc or Options.options.with_system_mitkrb5): 142 conf.DEFINE('AD_DC_BUILD_IS_ENABLED', 1) 143 144 # Only process heimdal_build for non-MIT KRB5 builds 145 # When MIT KRB5 checks are done as above, conf.env.KRB5_VENDOR will be set 146 # to the lowcased output of 'krb5-config --vendor'. 147 # If it is not set or the output is 'heimdal', we are dealing with 148 # system-provided or embedded Heimdal build 149 if conf.CONFIG_GET('KRB5_VENDOR') in (None, 'heimdal'): 150 conf.RECURSE('source4/heimdal_build') 101 151 conf.RECURSE('source4/lib/tls') 102 152 conf.RECURSE('source4/ntvfs/sysdep') 103 153 conf.RECURSE('lib/util') 104 conf.RECURSE('lib/zlib')105 154 conf.RECURSE('lib/util/charset') 106 155 conf.RECURSE('source4/auth') 107 conf.RECURSE('lib/nss_wrapper')108 156 conf.RECURSE('nsswitch') 109 conf.RECURSE('lib/socket_wrapper')110 conf.RECURSE('lib/uid_wrapper')111 conf.RECURSE('lib/popt')112 conf.RECURSE('lib/subunit/c')113 157 conf.RECURSE('libcli/smbreadline') 158 conf.RECURSE('lib/crypto') 114 159 conf.RECURSE('pidl') 115 conf.RECURSE('source4/selftest') 116 if conf.env.enable_s3build: 117 conf.RECURSE('source3') 118 119 # we don't want any libraries or modules to rely on runtime 120 # resolution of symbols 121 if sys.platform != "openbsd4": 122 conf.env.undefined_ldflags = conf.ADD_LDFLAGS('-Wl,-no-undefined', testflags=True) 160 conf.RECURSE('selftest') 161 if conf.CONFIG_GET('ENABLE_SELFTEST'): 162 conf.RECURSE('lib/nss_wrapper') 163 conf.RECURSE('lib/resolv_wrapper') 164 conf.RECURSE('lib/socket_wrapper') 165 conf.RECURSE('lib/uid_wrapper') 166 if Options.options.with_ntvfs_fileserver != False: 167 if not (Options.options.without_ad_dc or Options.options.with_system_mitkrb5): 168 conf.DEFINE('WITH_NTVFS_FILESERVER', 1) 169 if Options.options.with_ntvfs_fileserver == False: 170 if not (Options.options.without_ad_dc or Options.options.with_system_mitkrb5): 171 raise Utils.WafError('--without-ntvfs-fileserver conflicts with --enable-selftest while building the AD DC') 172 173 if Options.options.with_ntvfs_fileserver == True: 174 if Options.options.without_ad_dc: 175 raise Utils.WafError('--with-ntvfs-fileserver conflicts with --without-ad-dc') 176 if Options.options.with_system_mitkrb5: 177 raise Utils.WafError('--with-ntvfs-fileserver conflicts with --with-system-mitkrb5') 178 conf.DEFINE('WITH_NTVFS_FILESERVER', 1) 179 conf.RECURSE('source3') 180 conf.RECURSE('lib/texpect') 181 if conf.env.with_ctdb: 182 conf.RECURSE('ctdb') 183 conf.RECURSE('lib/socket') 184 185 conf.SAMBA_CHECK_UNDEFINED_SYMBOL_FLAGS() 123 186 124 187 # gentoo always adds this. We want our normal build to be as … … 126 189 # allows us to find problems on our development hosts faster. 127 190 # It also results in faster load time. 128 if sys.platform != "openbsd4": 129 191 192 conf.env.asneeded_ldflags = conf.ADD_LDFLAGS('-Wl,--as-needed', testflags=True) 130 193 131 194 if not conf.CHECK_NEED_LC("-lc not needed"): 132 195 conf.ADD_LDFLAGS('-lc', testflags=False) 133 196 134 # we don't want PYTHONDIR in config.h, as otherwise changing 135 # --prefix causes a complete rebuild 136 del(conf.env.defines['PYTHONDIR']) 137 del(conf.env.defines['PYTHONARCHDIR']) 197 if not conf.CHECK_CODE('#include "tests/summary.c"', 198 define='SUMMARY_PASSES', 199 addmain=False, 200 msg='Checking configure summary'): 201 raise Utils.WafError('configure summary failed') 202 203 if Options.options.enable_pie != False: 204 if Options.options.enable_pie == True: 205 need_pie = True 206 else: 207 # not specified, only build PIEs if supported by compiler 208 need_pie = False 209 if conf.check_cc(cflags='-fPIE', ldflags='-pie', mandatory=need_pie, 210 msg="Checking compiler for PIE support"): 211 conf.env['ENABLE_PIE'] = True 212 213 if Options.options.enable_relro != False: 214 if Options.options.enable_relro == True: 215 need_relro = True 216 else: 217 # not specified, only build RELROs if supported by compiler 218 need_relro = False 219 if conf.check_cc(cflags='', ldflags='-Wl,-z,relro,-z,now', mandatory=need_relro, 220 msg="Checking compiler for full RELRO support"): 221 conf.env['ENABLE_RELRO'] = True 138 222 139 223 conf.SAMBA_CONFIG_H('include/config.h') 140 141 224 142 225 def etags(ctx): … … 144 227 import Utils 145 228 source_root = os.path.dirname(Utils.g_module.root_path) 146 cmd = 'etags $(find %s -name "*.[ch]" | egrep -v \.inst\.)' % source_root 147 print("Running: %s" % cmd) 148 os.system(cmd) 229 cmd = 'rm -f %s/TAGS && (find %s -name "*.[ch]" | egrep -v \.inst\. | xargs -n 100 etags -a)' % (source_root, source_root) 230 print("Running: %s" % cmd) 231 status = os.system(cmd) 232 if os.WEXITSTATUS(status): 233 raise Utils.WafError('etags failed') 149 234 150 235 def ctags(ctx): … … 152 237 import Utils 153 238 source_root = os.path.dirname(Utils.g_module.root_path) 154 cmd = 'ctags $(find %s -name "*.[ch]" | grep -v "*_proto\.h" | egrep -v \.inst\.)' % source_root 155 print("Running: %s" % cmd) 156 os.system(cmd) 239 cmd = 'ctags --python-kinds=-i $(find %s -name "*.[ch]" | grep -v "*_proto\.h" | egrep -v \.inst\.) $(find %s -name "*.py")' % (source_root, source_root) 240 print("Running: %s" % cmd) 241 status = os.system(cmd) 242 if os.WEXITSTATUS(status): 243 raise Utils.WafError('ctags failed') 244 157 245 158 246 # putting this here enabled build in the list … … 160 248 def build(bld): 161 249 '''build all targets''' 162 samba_version.load_version(env=bld.env) 163 pass 250 samba_version.load_version(env=bld.env, is_install=bld.is_install) 164 251 165 252 166 253 def pydoctor(ctx): 167 254 '''build python apidocs''' 168 cmd='PYTHONPATH=bin/python pydoctor --project-name=Samba --project-url=http://www.samba.org --make-html --docformat=restructuredtext --add-package bin/python/samba' 169 print("Running: %s" % cmd) 170 os.system(cmd) 255 bp = os.path.abspath('bin/python') 256 mpaths = {} 257 modules = ['talloc', 'tdb', 'ldb'] 258 for m in modules: 259 f = os.popen("PYTHONPATH=%s python -c 'import %s; print %s.__file__'" % (bp, m, m), 'r') 260 try: 261 mpaths[m] = f.read().strip() 262 finally: 263 f.close() 264 mpaths['main'] = bp 265 cmd = ('PYTHONPATH=%(main)s pydoctor --introspect-c-modules --project-name=Samba ' 266 '--project-url=http://www.samba.org --make-html --docformat=restructuredtext ' 267 '--add-package bin/python/samba ' + ''.join('--add-module %s ' % n for n in modules)) 268 cmd = cmd % mpaths 269 print("Running: %s" % cmd) 270 status = os.system(cmd) 271 if os.WEXITSTATUS(status): 272 raise Utils.WafError('pydoctor failed') 273 274 275 def pep8(ctx): 276 '''run pep8 validator''' 277 cmd='PYTHONPATH=bin/python pep8 -r bin/python/samba' 278 print("Running: %s" % cmd) 279 status = os.system(cmd) 280 if os.WEXITSTATUS(status): 281 raise Utils.WafError('pep8 failed') 282 171 283 172 284 def wafdocs(ctx): … … 181 293 cmd += ' --add-module %s' % f 182 294 print("Running: %s" % cmd) 183 os.system(cmd) 295 status = os.system(cmd) 296 if os.WEXITSTATUS(status): 297 raise Utils.WafError('wafdocs failed') 184 298 185 299 186 300 def dist(): 187 301 '''makes a tarball for distribution''' 188 samba_version.load_version(env=None) 189 samba_dist.dist() 302 sambaversion = samba_version.load_version(env=None) 303 304 os.system("make -C ctdb/doc") 305 samba_dist.DIST_FILES('ctdb/doc:ctdb/doc', extend=True) 306 307 os.system(srcdir + "/release-scripts/build-manpages-nogit") 308 samba_dist.DIST_FILES('bin/docs:docs', extend=True) 309 310 if sambaversion.IS_SNAPSHOT: 311 # write .distversion file and add to tar 312 if not os.path.isdir(blddir): 313 os.makedirs(blddir) 314 distversionf = tempfile.NamedTemporaryFile(mode='w', prefix='.distversion',dir=blddir) 315 for field in sambaversion.vcs_fields: 316 distveroption = field + '=' + str(sambaversion.vcs_fields[field]) 317 distversionf.write(distveroption + '\n') 318 distversionf.flush() 319 samba_dist.DIST_FILES('%s:.distversion' % distversionf.name, extend=True) 320 321 samba_dist.dist() 322 distversionf.close() 323 else: 324 samba_dist.dist() 325 190 326 191 327 def distcheck(): … … 194 330 import Scripting 195 331 d = Scripting.distcheck 196 d( subdir='source4')332 d() 197 333 198 334 def wildcard_cmd(cmd): … … 203 339 def main(): 204 340 from samba_wildcard import wildcard_main 341 205 342 wildcard_main(wildcard_cmd) 206 343 Scripting.main = main … … 210 347 import samba_utils 211 348 samba_utils.reconfigure(ctx) 349 350 351 if os.path.isdir(os.path.join(srcdir, ".git")): 352 # Check if there are submodules that are checked out but out of date. 353 for submodule, status in samba_git.read_submodule_status(srcdir): 354 if status == "out-of-date": 355 raise Utils.WafError("some submodules are out of date. Please run 'git submodule update'")
Note:
See TracChangeset
for help on using the changeset viewer.