waf/tests/init/up_cwd/project/wscript

55 lines
1.5 KiB
Python
Executable File

#! /usr/bin/env waf
top = '.'
out = 'tmp_out'
import os, random, time
from waflib import ConfigSet, Context, Build, Configure, Utils
Configure.autoconfig='clobber'
def options(opt):
opt.add_option('--based', action='store', default='foo', help='base directory', dest='based')
opt.add_option('--dumpf', action='store', default='foo', help='dump config to this file', dest='dumpf')
opt.add_option('--force-autoconfig', action='store', default=False, dest='force_autoconfig')
def configure(ctx):
# force autoconfig to depend on an always-changing file - once
if ctx.options.force_autoconfig:
fname = ctx.options.dumpf + '_autoconfig'
s = "%f%d" % (time.time(), random.randint(0, 10**9))
Utils.writef(fname, s)
ctx.files.append(fname)
Configure.autoconfig = False
def build(ctx):
pass
def write_conf(ctx):
if not ctx.options.dumpf:
raise ValueError('Missing --dumpf option')
if not ctx.options.based:
raise ValueError('Missing --based option')
def g(x):
# path from conf.options.based
based = ctx.root.find_node(ctx.options.based)
node = ctx.root.find_node(x)
return node.path_from(based)
env = ConfigSet.ConfigSet()
env.cwd_dir = g(os.getcwd())
env.top_dir = g(Context.top_dir)
env.out_dir = g(Context.out_dir)
env.run_dir = g(Context.run_dir)
env.launch_dir = g(Context.launch_dir)
env.store(ctx.options.dumpf)
for y in (Build.BuildContext, Configure.ConfigurationContext):
class tmp(y):
def execute(self, *k, **kw):
super(self.__class__, self).execute(*k, **kw)
write_conf(self)