The addition of the NAND and NOR drivers both depending on the Xilinx support code independently has introduced the possibility of duplicate installed headers. This duplication results in multiple header install attempts which can conflict since the installs can run on multiple CPUs. This change to wscript deduplicates the header installs individually as necessary. This change ignores identical installs and throws an error on different header installs to the same location. --- wscript | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/wscript b/wscript index a34cac51e2..385ba8eb1c 100755 --- a/wscript +++ b/wscript @@ -269,8 +269,39 @@ class Item(object): bld.install_files(install_path, self.get(bld, "target")) def install_files(self, bld): + if "rtems_installed" not in bld.env: + bld.env["rtems_installed"] = {} + for install in self.data["install"]: - bld.install_files(install["destination"], install["source"]) + # setup destination array if it doesn't exist + dest = install["destination"] + if dest not in bld.env.rtems_installed: + bld.env["rtems_installed"][dest] = [] + + # build deduplicated install set + dedup_set = [] + + for item in install["source"]: + # search for duplicate installs + match_found = False + filename = os.path.basename(item) + + for existing in bld.env["rtems_installed"][dest]: + if existing[0] == filename: + # duplicate found + if item != existing[1]: + bld.fatal(("File installs {} and {} " + + "target the same location").format( + item, existing[1])) + match_found = True + break + + if not match_found: + dedup_set.append(item) + bld.env["rtems_installed"][dest].append([filename, item]) + + if len(dedup_set): + bld.install_files(dest, dedup_set) def asm(self, bld, bic, source, target=None): if target is None: -- 2.30.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel