From 688deab99cff100aedf1a943f485ac7008f85eb3 Mon Sep 17 00:00:00 2001
From: Sebastian Krzyszkowiak <dos@dosowisko.net>
Date: Tue, 14 Nov 2023 16:26:17 +0100
Subject: [PATCH] py,st3m: Improve mangling of app paths in the simulator

---
 python_payload/st3m/application.py | 9 ++++++---
 python_payload/st3m/utils.py       | 5 +++++
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/python_payload/st3m/application.py b/python_payload/st3m/application.py
index 38c1550b2f..0c449d026e 100644
--- a/python_payload/st3m/application.py
+++ b/python_payload/st3m/application.py
@@ -8,6 +8,7 @@ from st3m.input import InputState
 import st3m.wifi
 from st3m.goose import Optional, List, Dict
 from st3m.logging import Log
+from st3m.utils import is_simulator
 from st3m import settings
 from ctx import Context
 from st3m.ui import led_patterns
@@ -179,11 +180,13 @@ class BundleMetadata:
         containing_path = os.path.dirname(self.path)
         package_name = os.path.basename(self.path)
 
-        if sys.path[1].endswith("python_payload"):
+        if is_simulator():
             # We are in the simulator. Hack around to get this to work.
             prefix = "/flash/sys"
-            assert containing_path.startswith(prefix)
-            containing_path = containing_path.replace(prefix, sys.path[1])
+            if containing_path.startswith(prefix):
+                containing_path = containing_path.replace(prefix, sys.path[1])
+            else:
+                containing_path = containing_path.replace("/flash", "/tmp/flow3r-sim")
 
         new_sys_path = old_sys_path + [containing_path]
         self._sys_path_set(new_sys_path)
diff --git a/python_payload/st3m/utils.py b/python_payload/st3m/utils.py
index f6747b5058..f16295eb23 100644
--- a/python_payload/st3m/utils.py
+++ b/python_payload/st3m/utils.py
@@ -1,5 +1,6 @@
 import math
 import os
+import sys_kernel
 
 try:
     import inspect
@@ -146,4 +147,8 @@ def sd_card_plugged() -> bool:
         return False
 
 
+def is_simulator() -> bool:
+    return sys_kernel.hardware_version() == "simulator"
+
+
 tau = math.pi * 2
-- 
GitLab