123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #! /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)
|