author | Tom Henderson <tomh@tomh.org> |
Thu, 30 Aug 2018 13:39:08 -0700 | |
changeset 13764 | ee1b8a17f63a |
parent 11634 | 99173c0ad09b |
permissions | -rw-r--r-- |
7544
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1 |
#! /usr/bin/env python |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2 |
# encoding: utf-8 |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
3 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
4 |
""" |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
5 |
Waf 1.6 |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
6 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
7 |
Try to detect if the project directory was relocated, and if it was, |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
8 |
change the node representing the project directory. Just call: |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
9 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
10 |
waf configure build |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
11 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
12 |
Note that if the project directory name changes, the signatures for the tasks using |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
13 |
files in that directory will change, causing a partial build. |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
14 |
""" |
11634
99173c0ad09b
port wscripts, test.py, and waf-tools to Python3
Siddharth Santurkar <siddharth.santurkar@ieee.org>
parents:
9277
diff
changeset
|
15 |
from __future__ import print_function |
7544
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
16 |
import os |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
17 |
from waflib import Build, ConfigSet, Task, Utils, Errors |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
18 |
from waflib.TaskGen import feature, before_method, after_method |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
19 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
20 |
EXTRA_LOCK = '.old_srcdir' |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
21 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
22 |
old1 = Build.BuildContext.store |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
23 |
def store(self): |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
24 |
old1(self) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
25 |
db = os.path.join(self.variant_dir, EXTRA_LOCK) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
26 |
env = ConfigSet.ConfigSet() |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
27 |
env.SRCDIR = self.srcnode.abspath() |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
28 |
env.store(db) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
29 |
Build.BuildContext.store = store |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
30 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
31 |
old2 = Build.BuildContext.init_dirs |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
32 |
def init_dirs(self): |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
33 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
34 |
if not (os.path.isabs(self.top_dir) and os.path.isabs(self.out_dir)): |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
35 |
raise Errors.WafError('The project was not configured: run "waf configure" first!') |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
36 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
37 |
srcdir = None |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
38 |
db = os.path.join(self.variant_dir, EXTRA_LOCK) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
39 |
env = ConfigSet.ConfigSet() |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
40 |
try: |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
41 |
env.load(db) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
42 |
srcdir = env.SRCDIR |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
43 |
except: |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
44 |
pass |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
45 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
46 |
if srcdir: |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
47 |
d = self.root.find_node(srcdir) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
48 |
if d and srcdir != self.top_dir and getattr(d, 'children', ''): |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
49 |
srcnode = self.root.make_node(self.top_dir) |
11634
99173c0ad09b
port wscripts, test.py, and waf-tools to Python3
Siddharth Santurkar <siddharth.santurkar@ieee.org>
parents:
9277
diff
changeset
|
50 |
print(("relocating the source directory %r -> %r" % (srcdir, self.top_dir))) |
7544
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
51 |
srcnode.children = {} |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
52 |
|
11634
99173c0ad09b
port wscripts, test.py, and waf-tools to Python3
Siddharth Santurkar <siddharth.santurkar@ieee.org>
parents:
9277
diff
changeset
|
53 |
for (k, v) in list(d.children.items()): |
7544
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
54 |
srcnode.children[k] = v |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
55 |
v.parent = srcnode |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
56 |
d.children = {} |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
57 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
58 |
old2(self) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
59 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
60 |
Build.BuildContext.init_dirs = init_dirs |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
61 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
62 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
63 |
def uid(self): |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
64 |
try: |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
65 |
return self.uid_ |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
66 |
except AttributeError: |
9277
0f87d1cb030c
Upgrade waf to 1.7.10 and fix included wscripts
Vedran Miletić <rivanvx@gmail.com>
parents:
7544
diff
changeset
|
67 |
# this is not a real hot zone, but we want to avoid surprises here |
7544
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
68 |
m = Utils.md5() |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
69 |
up = m.update |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
70 |
up(self.__class__.__name__.encode()) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
71 |
for x in self.inputs + self.outputs: |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
72 |
up(x.path_from(x.ctx.srcnode).encode()) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
73 |
self.uid_ = m.digest() |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
74 |
return self.uid_ |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
75 |
Task.Task.uid = uid |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
76 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
77 |
@feature('c', 'cxx', 'd', 'go', 'asm', 'fc', 'includes') |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
78 |
@after_method('propagate_uselib_vars', 'process_source') |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
79 |
def apply_incpaths(self): |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
80 |
lst = self.to_incnodes(self.to_list(getattr(self, 'includes', [])) + self.env['INCLUDES']) |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
81 |
self.includes_nodes = lst |
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
82 |
bld = self.bld |
9277
0f87d1cb030c
Upgrade waf to 1.7.10 and fix included wscripts
Vedran Miletić <rivanvx@gmail.com>
parents:
7544
diff
changeset
|
83 |
self.env['INCPATHS'] = [x.is_child_of(bld.srcnode) and x.path_from(bld.bldnode) or x.abspath() for x in lst] |
7544
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
84 |
|
51f8237d285a
Bug 1265 - Make ns-3 directory "movable"
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
85 |