summaryrefslogtreecommitdiff
path: root/tools/makemanifest.py
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2022-08-12 11:30:56 +1000
committerJim Mussared <jim.mussared@gmail.com>2022-09-05 17:07:13 +1000
commit5852fd7708d02d6ca85e4a5ed01d8263e3962631 (patch)
tree87d21853e883200a6b00db17a51dc30a512b7630 /tools/makemanifest.py
parentbc23f207cefed82172551288ebb8686ee2c512a3 (diff)
tools/manifestfile.py: Allow manifests to set metadata.
The metadata can be version, description, and license. After executing a manifest, the top-level metadata can be queried, and also each file output from the manifest will have the metadata of the containing manifest. Use the version metadata to "tag" files before freezing such that they have __version__ available.
Diffstat (limited to 'tools/makemanifest.py')
-rw-r--r--tools/makemanifest.py46
1 files changed, 24 insertions, 22 deletions
diff --git a/tools/makemanifest.py b/tools/makemanifest.py
index 2e7021040..d059d4a26 100644
--- a/tools/makemanifest.py
+++ b/tools/makemanifest.py
@@ -176,34 +176,36 @@ def main():
str_paths = []
mpy_files = []
ts_newest = 0
- for _file_type, full_path, target_path, timestamp, kind, version, opt in manifest.files():
- if kind == manifestfile.KIND_FREEZE_AS_STR:
+ for result in manifest.files():
+ if result.kind == manifestfile.KIND_FREEZE_AS_STR:
str_paths.append(
(
- full_path,
- target_path,
+ result.full_path,
+ result.target_path,
)
)
- ts_outfile = timestamp
- elif kind == manifestfile.KIND_FREEZE_AS_MPY:
- outfile = "{}/frozen_mpy/{}.mpy".format(args.build_dir, target_path[:-3])
+ ts_outfile = result.timestamp
+ elif result.kind == manifestfile.KIND_FREEZE_AS_MPY:
+ outfile = "{}/frozen_mpy/{}.mpy".format(args.build_dir, result.target_path[:-3])
ts_outfile = get_timestamp(outfile, 0)
- if timestamp >= ts_outfile:
- print("MPY", target_path)
+ if result.timestamp >= ts_outfile:
+ print("MPY", result.target_path)
mkdir(outfile)
- try:
- mpy_cross.compile(
- full_path,
- dest=outfile,
- src_path=target_path,
- opt=opt,
- mpy_cross=MPY_CROSS,
- extra_args=args.mpy_cross_flags.split(),
- )
- except mpy_cross.CrossCompileError as ex:
- print("error compiling {}:".format(target_path))
- print(ex.args[0])
- raise SystemExit(1)
+ # Add __version__ to the end of the file before compiling.
+ with manifestfile.tagged_py_file(result.full_path, result.metadata) as tagged_path:
+ try:
+ mpy_cross.compile(
+ tagged_path,
+ dest=outfile,
+ src_path=result.target_path,
+ opt=result.opt,
+ mpy_cross=MPY_CROSS,
+ extra_args=args.mpy_cross_flags.split(),
+ )
+ except mpy_cross.CrossCompileError as ex:
+ print("error compiling {}:".format(target_path))
+ print(ex.args[0])
+ raise SystemExit(1)
ts_outfile = get_timestamp(outfile)
mpy_files.append(outfile)
else: