You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
#! /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)
|
|
|