1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-10 01:18:15 +03:00

wafsamba: add support for separate rules in stages

bld.process_separate_rule(rule) and conf.process_separate_rule(rule)
will cause WAF to import wscript_<stage>_<rule> script into current
context.

Files wscript_<configure|build>_<rule> should exist in the current
directory.

This can be used to provide rules specific for alternative
implementations of certain libraries

Autobuild-User: Alexander Bokovoy <ab@samba.org>
Autobuild-Date: Fri Apr 13 18:34:39 CEST 2012 on sn-devel-104
This commit is contained in:
Alexander Bokovoy 2012-04-13 17:53:04 +03:00
parent b8dea7e82d
commit 1a8405c320
6 changed files with 43 additions and 8 deletions

View File

@ -111,9 +111,6 @@ class WscriptError(WafError):
return (frame[0], frame[1]) return (frame[0], frame[1])
return (None, None) return (None, None)
class WscriptCheckSkipped(WscriptError):
pass
indicator = is_win32 and '\x1b[A\x1b[K%s%s%s\r' or '\x1b[K%s%s%s\r' indicator = is_win32 and '\x1b[A\x1b[K%s%s%s\r' or '\x1b[K%s%s%s\r'
try: try:
@ -648,8 +645,6 @@ class Context(object):
try: try:
try: try:
exec(compile(txt, file_path, 'exec'), dc) exec(compile(txt, file_path, 'exec'), dc)
except WscriptCheckSkipped:
pass
except Exception: except Exception:
exc_type, exc_value, tb = sys.exc_info() exc_type, exc_value, tb = sys.exc_info()
raise WscriptError("".join(traceback.format_exception(exc_type, exc_value, tb)), base) raise WscriptError("".join(traceback.format_exception(exc_type, exc_value, tb)), base)

View File

@ -3,7 +3,7 @@
import Build, os, sys, Options, Utils, Task, re, fnmatch, Logs import Build, os, sys, Options, Utils, Task, re, fnmatch, Logs
from TaskGen import feature, before from TaskGen import feature, before
from Configure import conf from Configure import conf, ConfigurationContext
from Logs import debug from Logs import debug
import shlex import shlex
@ -624,3 +624,26 @@ def get_tgt_list(bld):
sys.exit(1) sys.exit(1)
tgt_list.append(t) tgt_list.append(t)
return tgt_list return tgt_list
from Constants import WSCRIPT_FILE
def process_separate_rule(self, rule):
''' cause waf to process additional script based on `rule'.
You should have file named wscript_<stage>_rule in the current directory
where stage is either 'configure' or 'build'
'''
ctxclass = self.__class__.__name__
stage = ''
if ctxclass == 'ConfigurationContext':
stage = 'configure'
elif ctxclass == 'BuildContext':
stage = 'build'
file_path = os.path.join(self.curdir, WSCRIPT_FILE+'_'+stage+'_'+rule)
txt = load_file(file_path)
if txt:
dc = {'ctx': self}
if getattr(self.__class__, 'pre_recurse', None):
dc = self.pre_recurse(txt, file_path, [])
exec(compile(txt, file_path, 'exec'), dc)
Build.BuildContext.process_separate_rule = process_separate_rule
ConfigurationContext.process_separate_rule = process_separate_rule

View File

@ -111,8 +111,19 @@ bld.RECURSE('libcli/samsync')
bld.RECURSE('libcli/registry') bld.RECURSE('libcli/registry')
bld.RECURSE('source4/lib/policy') bld.RECURSE('source4/lib/policy')
bld.RECURSE('libcli/named_pipe_auth') bld.RECURSE('libcli/named_pipe_auth')
if not bld.CONFIG_SET("USING_SYSTEM_KRB5"):
bld.RECURSE('source4/heimdal_build') if bld.CONFIG_SET("USING_SYSTEM_KRB5"):
if bld.CONFIG_SET("HEIMDAL_KRB5_CONFIG") and bld.CONFIG_SET("KRB5_CONFIG"):
if bld.CONFIG_GET("HEIMDAL_KRB5_CONFIG") != bld.CONFIG_GET("KRB5_CONFIG"):
# When both HEIMDAL_KRB5_CONFIG and KRB5_CONFIG are set and not equal,
# it means one is Heimdal-specific (krb5-config.heimdal, for example)
# and there is system heimdal
bld.process_separate_rule('system_heimdal')
else:
bld.process_separate_rule('system_krb5')
else:
bld.process_separate_rule('embedded_heimdal')
bld.RECURSE('libcli/smbreadline') bld.RECURSE('libcli/smbreadline')
bld.RECURSE('codepages') bld.RECURSE('codepages')
bld.RECURSE('source4/setup') bld.RECURSE('source4/setup')

View File

@ -0,0 +1,2 @@
print "\tSelected embedded Heimdal build"
bld.RECURSE('source4/heimdal_build')

View File

@ -0,0 +1,2 @@
print "\tSelected system Heimdal build"
bld.RECURSE('source4/heimdal_build')

View File

@ -0,0 +1,2 @@
print "\tSelected system MIT krb5 libraries, Heimdal use is disabled"
#bld.RECURSE('source4/heimdal_build')