10 if os.path.isdir(path):
11 shutil.rmtree(path, ignore_errors=True)
18 def findPath(start, target):
21 pa = os.path.abspath(pa + "/..")
23 if os.path.exists(pa + "/" + target):
24 return os.path.relpath(pa, start)
27 print "Usage: %s <project_dir> <preset_dir>" % sys.argv[0]
31 preset_dir = sys.argv[2]
33 if not os.path.exists(prj_dir + "/project.bertos"):
34 print "%s does not seem a Wizard created project." % prj_dir
37 p = open(prj_dir + "/project.bertos")
39 if s["WIZARD_VERSION"] < 3:
40 print "Project version too old."
42 pname = s["PROJECT_NAME"]
43 preset_dir += pname + ".test"
45 hw_path = findPath(preset_dir, "hw")
47 print "hw/ path not found in parent directories of %s" % preset_dir
50 bertos_path = findPath(preset_dir, "bertos")
52 print "bertos/ path not found in parent directories of %s" % preset_dir
55 shutil.copytree(prj_dir, preset_dir)
56 remove(preset_dir + "/bertos")
57 remove(preset_dir + "/images")
58 remove(preset_dir + "/obj")
59 remove(preset_dir + "/Makefile")
60 remove(preset_dir + "/buildrev.h")
61 remove(preset_dir + "/VERSION")
62 remove(preset_dir + "/" + pname + ".project")
63 remove(preset_dir + "/" + pname + ".workspace")
65 l = glob.glob(preset_dir + "/" + pname + "/*")
67 shutil.move(f, preset_dir)
69 remove(preset_dir + "/" + pname)
70 remove(preset_dir + "/hw")
72 assert(os.path.exists(preset_dir + "/" + hw_path + "/hw"))
73 assert(os.path.exists(preset_dir + "/" + bertos_path + "/bertos"))
75 s["BERTOS_PATH"] = bertos_path
77 s["PROJECT_HW_PATH"] = hw_path
78 s["PROJECT_SRC_PATH"] = "."
81 p = open(preset_dir + "/project.bertos", "w")
84 p = open(preset_dir + "/.spec", "w")
85 p.write("name = '%s preset'" % pname)
88 bertos_path = os.path.abspath(preset_dir + "/" + bertos_path)
89 hw_path = os.path.abspath(preset_dir + "/" + hw_path)
91 src_path = os.path.relpath(preset_dir, bertos_path)
92 hw_path = os.path.relpath(hw_path, bertos_path)
94 mk = open(preset_dir + "/" + pname + ".mk").read()
95 mk = re.sub(r"(%s_SRC_PATH\s*=\s*).*" % pname, r"\1%s" % src_path, mk)
96 mk = re.sub(r"(%s_HW_PATH\s*=\s*).*" % pname, r"\1%s" % hw_path, mk)
98 #remove absolute path from toolchain
99 mk = re.sub(r'(%s_PREFIX\s*=\s*").*?([^/]*")' % pname, r'\1\2', mk)
100 open(preset_dir + "/" + pname + ".mk", "w").write(mk)