assemble.py: don't read BOARD.dts.pre.tmp
This file has been removed from upstream Zephyr in commit 2b7c61e306a
("cmake: re-work devicetree preprocessing steps").
Get the board name from .config instead; this is a stable place for it
to be found. Load the EDT itself from the pickle file in the build
directory; this has the advantage of fixing the script when out of
tree devicetree bindings are used.
Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
diff --git a/scripts/assemble.py b/scripts/assemble.py
index 0f39fcc..05f9793 100755
--- a/scripts/assemble.py
+++ b/scripts/assemble.py
@@ -26,6 +26,7 @@
import re
import os
import os.path
+import pickle
import sys
def same_keys(a, b):
@@ -95,13 +96,12 @@
ofd.write(ibuf)
def find_board_name(bootdir):
- suffix = ".dts.pre.tmp"
-
- for _, _, files in os.walk(os.path.join(bootdir, "zephyr")):
- for filename in files:
- if filename.endswith(suffix):
- return filename[:-len(suffix)]
-
+ dot_config = os.path.join(bootdir, "zephyr", ".config")
+ with open(dot_config, "r") as f:
+ for line in f:
+ if line.startswith("CONFIG_BOARD="):
+ return line.split("=", 1)[1].strip('"')
+ raise Exception("Expected CONFIG_BOARD line in {}".format(dot_config))
def main():
parser = argparse.ArgumentParser()
@@ -132,10 +132,10 @@
board = find_board_name(args.bootdir)
- dts_path = os.path.join(args.bootdir, "zephyr", board + ".dts.pre.tmp")
-
- edt = devicetree.edtlib.EDT(dts_path, [os.path.join(zephyr_base, "dts", "bindings")],
- warn_reg_unit_address_mismatch=False)
+ edt_pickle = os.path.join(args.bootdir, "zephyr", "edt.pickle")
+ with open(edt_pickle, 'rb') as f:
+ edt = pickle.load(f)
+ assert isinstance(edt, devicetree.edtlib.EDT)
output = Assembly(args.output, args.bootdir, edt)