From 5048b578ffd64476ca1bfe36fab6b99581f21d49 Mon Sep 17 00:00:00 2001 From: Laborratte5 Date: Sat, 4 May 2024 11:55:21 +0200 Subject: [PATCH] build: Add target to install libraries on esp8266 --- .gitignore | 2 ++ Makefile | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 86c56b4..c3a3849 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ !main.py .ipynb_checkpoints __pycache__ +lib/ +requirements.txt diff --git a/Makefile b/Makefile index cc0e001..00d3c21 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,33 @@ src/%.mpy: src/%.py $(MPYCROSS) $$f; \ done +requirements.txt: poetry.lock + poetry export --without dev --output requirements.txt + +lib/: requirements.txt + $(VENV) python -m pip install -r requirements.txt --target lib/ + $(MAKE) compile_lib + $(MAKE) install_lib + +compile_lib: + @for f in $(shell find lib/ -type f -regex ".+\.py"); do \ + echo Compile $$f; \ + $(MPYCROSS) $$f; \ + done + +install_lib: lib_tree + @for f in $(shell find lib/ -type f -regex ".+\.mpy"); do \ + echo Uploading $$f; \ + $(AMPY) put $$f $$f; \ + done + +AWK_SCRIPT = { for (i = 1; i < NF; i++) { for (j = 1; j <= i; j++) { printf "/%s",$$j } printf "\n" } } +lib_tree: + @for d in $(shell find lib/ -regex ".+\.mpy" | awk -F/ '$(AWK_SCRIPT)'); do \ + echo Create $$d; \ + $(AMPY) mkdir --exists-okay $$d; \ + done + check: src/*.mpy $(VENV) python3 -m py_compile src/*.py @@ -28,9 +55,9 @@ erase_flash: flash_esp: erase_flash $(ESP_TOOL) --baud 460800 write_flash --flash_size=detect 0 $(MICRO_PYTHON_FIRMWARE) -install: check $(JUPYTER_PYTHON_FILES) +install: check lib/ $(JUPYTER_PYTHON_FILES) $(AMPY) put src/main.py - @for f in $(filter-out check,$?); do \ + @for f in $(filter-out check lib/,$?); do \ echo Uploading $$f; \ $(AMPY) put $$f; \ done @@ -57,9 +84,11 @@ clean: rm -f src/*.pyc rm -f src/*.mpy rm -f $(JUPYTER_PYTHON_FILES) + rm -r lib/ + rm -f requirements.txt env: poetry install $(VENV) python -m jupyter_micropython_kernel.install -.PHONY: check erase_flash flash_esp install uninstall clean env +.PHONY: check erase_flash flash_esp install uninstall clean env compile_lib install_lib lib_tree