mirror of
https://github.com/MeshEnvy/mesh-forge.git
synced 2026-03-28 17:42:55 +01:00
chore: firmware patch
This commit is contained in:
@@ -17,10 +17,10 @@ index cc742c6c1..545b0923a 100644
|
||||
\ No newline at end of file
|
||||
diff --git a/bin/mpm_pio.py b/bin/mpm_pio.py
|
||||
new file mode 100644
|
||||
index 000000000..044c87186
|
||||
index 000000000..c75573465
|
||||
--- /dev/null
|
||||
+++ b/bin/mpm_pio.py
|
||||
@@ -0,0 +1,108 @@
|
||||
@@ -0,0 +1,116 @@
|
||||
+#!/usr/bin/env python3
|
||||
+"""
|
||||
+Mesh Plugin Manager (MPM) - PlatformIO build integration shim.
|
||||
@@ -38,14 +38,14 @@ index 000000000..044c87186
|
||||
+Import("env") # type: ignore[name-defined] # noqa: F821
|
||||
+
|
||||
+
|
||||
+def find_site_packages(venv_dir):
|
||||
+def find_site_packages(venv_dir, label=""):
|
||||
+ """Find site-packages directory in a venv (handles different Python versions)."""
|
||||
+ if not os.path.isdir(venv_dir):
|
||||
+ print(f"MPM: {venv_dir} does not exist or is not a directory")
|
||||
+ print(f"MPM: {strip_root_dir(venv_dir)} ({label}) does not exist or is not a directory")
|
||||
+ return None
|
||||
+ lib_dir = os.path.join(venv_dir, "lib")
|
||||
+ if not os.path.isdir(lib_dir):
|
||||
+ print(f"MPM: {lib_dir} does not exist or is not a directory")
|
||||
+ print(f"MPM: {strip_root_dir(lib_dir)} ({label}) does not exist or is not a directory")
|
||||
+ return None
|
||||
+ pattern = os.path.join(lib_dir, "python*/site-packages")
|
||||
+ matches = glob.glob(pattern)
|
||||
@@ -55,12 +55,12 @@ index 000000000..044c87186
|
||||
+def add_to_path(directory, env_var="PATH", label=""):
|
||||
+ """Add directory to environment variable if it exists and isn't already present."""
|
||||
+ if not directory or not os.path.isdir(directory):
|
||||
+ print(f"MPM: {directory} does not exist or is not a directory")
|
||||
+ print(f"MPM: {strip_root_dir(directory)} ({label}) does not exist or is not a directory")
|
||||
+ return False
|
||||
+ current = os.environ.get(env_var, "")
|
||||
+ if directory not in current:
|
||||
+ os.environ[env_var] = f"{directory}:{current}" if current else directory
|
||||
+ print(f"MPM: Added {label or directory} to {env_var}")
|
||||
+ print(f"MPM: Added {strip_root_dir(directory)} ({label}) to {env_var}")
|
||||
+ return True
|
||||
+ return False
|
||||
+
|
||||
@@ -68,11 +68,11 @@ index 000000000..044c87186
|
||||
+def add_to_sys_path(directory, label=""):
|
||||
+ """Add directory to sys.path if it exists and isn't already present."""
|
||||
+ if not directory or not os.path.isdir(directory):
|
||||
+ print(f"MPM: {directory} does not exist or is not a directory")
|
||||
+ print(f"MPM: {strip_root_dir(directory)} ({label}) does not exist or is not a directory")
|
||||
+ return False
|
||||
+ if directory not in sys.path:
|
||||
+ sys.path.insert(0, directory)
|
||||
+ print(f"MPM: Added {directory} to sys.path")
|
||||
+ print(f"MPM: Added {strip_root_dir(directory)} ({label}) to sys.path")
|
||||
+ return True
|
||||
+ return False
|
||||
+
|
||||
@@ -82,6 +82,14 @@ index 000000000..044c87186
|
||||
+project_dir = env["PROJECT_DIR"] # type: ignore[name-defined] # noqa: F821
|
||||
+print(f"MPM DEBUG: project_dir = {project_dir}")
|
||||
+
|
||||
+root_dir = os.path.abspath(os.path.join(project_dir, ".."))
|
||||
+print(f"MPM DEBUG: root_dir = {root_dir}")
|
||||
+
|
||||
+def strip_root_dir(path):
|
||||
+ if path is None:
|
||||
+ return "./"
|
||||
+ return "./" + os.path.relpath(path, root_dir)
|
||||
+
|
||||
+# First, try to find mpm source and mpm's .venv for local development
|
||||
+# (mpm is at ../../mpm relative to firmware directory)
|
||||
+mpm_dir = os.path.join(project_dir, "..", "mpm")
|
||||
@@ -89,32 +97,32 @@ index 000000000..044c87186
|
||||
+mpm_source_dir = os.path.join(mpm_dir, "src")
|
||||
+mpm_venv_dir = os.path.join(mpm_dir, ".venv")
|
||||
+firmware_venv_dir = os.path.join(project_dir, ".venv")
|
||||
+mpm_site_packages = find_site_packages(mpm_venv_dir)
|
||||
+firmware_site_packages = find_site_packages(firmware_venv_dir)
|
||||
+mpm_site_packages = find_site_packages(mpm_venv_dir, "mpm .venv")
|
||||
+firmware_site_packages = find_site_packages(firmware_venv_dir, "firmware .venv")
|
||||
+mpm_venv_bin = os.path.join(mpm_venv_dir, "bin")
|
||||
+firmware_venv_bin = os.path.join(firmware_venv_dir, "bin")
|
||||
+
|
||||
+print(f"MPM Directories:")
|
||||
+print(f" mpm_dir: {mpm_dir}")
|
||||
+print(f" mpm_source_dir: {mpm_source_dir}")
|
||||
+print(f" mpm_venv_dir: {mpm_venv_dir}")
|
||||
+print(f" firmware_venv_dir: {firmware_venv_dir}")
|
||||
+print(f" mpm_site_packages: {mpm_site_packages}")
|
||||
+print(f" firmware_site_packages: {firmware_site_packages}")
|
||||
+print(f" mpm_venv_bin: {mpm_venv_bin}")
|
||||
+print(f" firmware_venv_bin: {firmware_venv_bin}")
|
||||
+print(f" mpm_dir: {strip_root_dir(mpm_dir)}")
|
||||
+print(f" mpm_source_dir: {strip_root_dir(mpm_source_dir)}")
|
||||
+print(f" mpm_venv_dir: {strip_root_dir(mpm_venv_dir)}")
|
||||
+print(f" firmware_venv_dir: {strip_root_dir(firmware_venv_dir)}")
|
||||
+print(f" mpm_site_packages: {strip_root_dir(mpm_site_packages)}")
|
||||
+print(f" firmware_site_packages: {strip_root_dir(firmware_site_packages)}")
|
||||
+print(f" mpm_venv_bin: {strip_root_dir(mpm_venv_bin)}")
|
||||
+print(f" firmware_venv_bin: {strip_root_dir(firmware_venv_bin) }")
|
||||
+
|
||||
+# These are in reverse order because they are prepended to sys.path
|
||||
+add_to_sys_path(firmware_site_packages, "firmware .venv") # Look for this last
|
||||
+add_to_sys_path(mpm_site_packages, "mpm .venv") # Look for this next
|
||||
+add_to_sys_path(mpm_source_dir, "mpm source") # Look for this first
|
||||
+add_to_sys_path(mpm_source_dir, "mpm/src") # Look for this first
|
||||
+
|
||||
+# Add .venv/bin to PATH (prioritize mpm's .venv)
|
||||
+add_to_path(firmware_venv_bin, "PATH")
|
||||
+add_to_path(mpm_venv_bin, "PATH")
|
||||
+add_to_path(firmware_venv_bin, "PATH", "firmware .venv/bin")
|
||||
+add_to_path(mpm_venv_bin, "PATH", "mpm .venv/bin")
|
||||
+
|
||||
+for site_packages in [mpm_site_packages, firmware_site_packages]:
|
||||
+ add_to_path(site_packages, "PYTHONPATH")
|
||||
+add_to_path(mpm_site_packages, "PYTHONPATH", "mpm .venv/site-packages")
|
||||
+add_to_path(firmware_site_packages, "PYTHONPATH", "firmware .venv/site-packages")
|
||||
+
|
||||
+# Use the installed `mpm` package
|
||||
+from mesh_plugin_manager.build import init_plugins # type: ignore[import]
|
||||
|
||||
Reference in New Issue
Block a user