Skip to content

Commit

Permalink
wafsamba: add support for separate rules in stages
Browse files Browse the repository at this point in the history
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 <[email protected]>
Autobuild-Date: Fri Apr 13 18:34:39 CEST 2012 on sn-devel-104
  • Loading branch information
abbra committed Apr 13, 2012
1 parent b8dea7e commit 1a8405c
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 8 deletions.
5 changes: 0 additions & 5 deletions buildtools/wafadmin/Utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,6 @@ def locate_error(self):
return (frame[0], frame[1])
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'

try:
Expand Down Expand Up @@ -648,8 +645,6 @@ def recurse(self, dirs, name=''):
try:
try:
exec(compile(txt, file_path, 'exec'), dc)
except WscriptCheckSkipped:
pass
except Exception:
exc_type, exc_value, tb = sys.exc_info()
raise WscriptError("".join(traceback.format_exception(exc_type, exc_value, tb)), base)
Expand Down
25 changes: 24 additions & 1 deletion buildtools/wafsamba/samba_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import Build, os, sys, Options, Utils, Task, re, fnmatch, Logs
from TaskGen import feature, before
from Configure import conf
from Configure import conf, ConfigurationContext
from Logs import debug
import shlex

Expand Down Expand Up @@ -624,3 +624,26 @@ def get_tgt_list(bld):
sys.exit(1)
tgt_list.append(t)
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
15 changes: 13 additions & 2 deletions wscript_build
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,19 @@ bld.RECURSE('libcli/samsync')
bld.RECURSE('libcli/registry')
bld.RECURSE('source4/lib/policy')
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('codepages')
bld.RECURSE('source4/setup')
Expand Down
2 changes: 2 additions & 0 deletions wscript_build_embedded_heimdal
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
print "\tSelected embedded Heimdal build"
bld.RECURSE('source4/heimdal_build')
2 changes: 2 additions & 0 deletions wscript_build_system_heimdal
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
print "\tSelected system Heimdal build"
bld.RECURSE('source4/heimdal_build')
2 changes: 2 additions & 0 deletions wscript_build_system_mitkrb5
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
print "\tSelected system MIT krb5 libraries, Heimdal use is disabled"
#bld.RECURSE('source4/heimdal_build')

0 comments on commit 1a8405c

Please sign in to comment.