Browse Source

fbt: exclude user site-packages directory from sys.path (#1778)

* fbt: exclude user site-packages directory from sys.path
* fbt: python path fixes for *nix
* fbt: fixed cli target on Windows

Co-authored-by: hedger <hedger@users.noreply.github.com>
ghettorce 3 years ago
parent
commit
eadd7801af

+ 1 - 1
scripts/flipper/utils/cdc.py

@@ -14,4 +14,4 @@ def resolve_port(logger, portname: str = "auto"):
         logger.error("Failed to find connected Flipper")
         logger.error("Failed to find connected Flipper")
     elif len(flippers) > 1:
     elif len(flippers) > 1:
         logger.error("More than one Flipper is attached")
         logger.error("More than one Flipper is attached")
-    logger.error("Failed to guess which port to use. Specify --port")
+    logger.error("Failed to guess which port to use")

+ 13 - 1
scripts/serial_cli.py

@@ -1,13 +1,25 @@
 import logging
 import logging
 import subprocess
 import subprocess
 from flipper.utils.cdc import resolve_port
 from flipper.utils.cdc import resolve_port
+import os
+import sys
 
 
 
 
 def main():
 def main():
     logger = logging.getLogger()
     logger = logging.getLogger()
     if not (port := resolve_port(logger, "auto")):
     if not (port := resolve_port(logger, "auto")):
+        logger.error("Is Flipper connected over USB and isn't in DFU mode?")
         return 1
         return 1
-    subprocess.call(["python3", "-m", "serial.tools.miniterm", "--raw", port, "230400"])
+    subprocess.call(
+        [
+            os.path.basename(sys.executable),
+            "-m",
+            "serial.tools.miniterm",
+            "--raw",
+            port,
+            "230400",
+        ]
+    )
 
 
 
 
 if __name__ == "__main__":
 if __name__ == "__main__":

+ 1 - 0
scripts/toolchain/fbtenv.cmd

@@ -32,6 +32,7 @@ if not "%REAL_TOOLCHAIN_VERSION%" == "%FLIPPER_TOOLCHAIN_VERSION%" (
 set "HOME=%USERPROFILE%"
 set "HOME=%USERPROFILE%"
 set "PYTHONHOME=%FBT_TOOLCHAIN_ROOT%\python"
 set "PYTHONHOME=%FBT_TOOLCHAIN_ROOT%\python"
 set "PYTHONPATH="
 set "PYTHONPATH="
+set "PYTHONNOUSERSITE=1"
 set "PATH=%FBT_TOOLCHAIN_ROOT%\python;%FBT_TOOLCHAIN_ROOT%\bin;%FBT_TOOLCHAIN_ROOT%\protoc\bin;%FBT_TOOLCHAIN_ROOT%\openocd\bin;%PATH%"
 set "PATH=%FBT_TOOLCHAIN_ROOT%\python;%FBT_TOOLCHAIN_ROOT%\bin;%FBT_TOOLCHAIN_ROOT%\protoc\bin;%FBT_TOOLCHAIN_ROOT%\openocd\bin;%PATH%"
 set "PROMPT=(fbt) %PROMPT%"
 set "PROMPT=(fbt) %PROMPT%"
 
 

+ 13 - 0
scripts/toolchain/fbtenv.sh

@@ -40,6 +40,13 @@ fbtenv_restore_env()
     elif [ -n "${PROMPT:-""}" ]; then
     elif [ -n "${PROMPT:-""}" ]; then
         PROMPT="$(echo "$PROMPT" | sed 's/\[fbt\]//g')";
         PROMPT="$(echo "$PROMPT" | sed 's/\[fbt\]//g')";
     fi
     fi
+
+    PYTHONNOUSERSITE="$SAVED_PYTHONNOUSERSITE";
+    PYTHONPATH="$SAVED_PYTHONPATH";
+
+    unset SAVED_PYTHONNOUSERSITE;
+    unset SAVED_PYTHONPATH;
+
     unset SCRIPT_PATH;
     unset SCRIPT_PATH;
     unset FBT_TOOLCHAIN_VERSION;
     unset FBT_TOOLCHAIN_VERSION;
     unset FBT_TOOLCHAIN_PATH;
     unset FBT_TOOLCHAIN_PATH;
@@ -276,6 +283,12 @@ fbtenv_main()
     PATH="$TOOLCHAIN_ARCH_DIR/bin:$PATH";
     PATH="$TOOLCHAIN_ARCH_DIR/bin:$PATH";
     PATH="$TOOLCHAIN_ARCH_DIR/protobuf/bin:$PATH";
     PATH="$TOOLCHAIN_ARCH_DIR/protobuf/bin:$PATH";
     PATH="$TOOLCHAIN_ARCH_DIR/openocd/bin:$PATH";
     PATH="$TOOLCHAIN_ARCH_DIR/openocd/bin:$PATH";
+    
+    SAVED_PYTHONNOUSERSITE="${PYTHONNOUSERSITE:-""}";
+    SAVED_PYTHONPATH="${PYTHONPATH:-""}";
+
+    PYTHONNOUSERSITE=1;
+    PYTHONPATH=;
 }
 }
 
 
 fbtenv_main "${1:-""}";
 fbtenv_main "${1:-""}";

+ 8 - 1
site_scons/environ.scons

@@ -12,7 +12,14 @@ forward_os_env = {
     "PATH": os.environ["PATH"],
     "PATH": os.environ["PATH"],
 }
 }
 # Proxying CI environment to child processes & scripts
 # Proxying CI environment to child processes & scripts
-for env_value_name in ("WORKFLOW_BRANCH_OR_TAG", "DIST_SUFFIX", "HOME", "APPDATA"):
+for env_value_name in (
+    "WORKFLOW_BRANCH_OR_TAG",
+    "DIST_SUFFIX",
+    "HOME",
+    "APPDATA",
+    "PYTHONHOME",
+    "PYTHONNOUSERSITE",
+):
     if environ_value := os.environ.get(env_value_name, None):
     if environ_value := os.environ.get(env_value_name, None):
         forward_os_env[env_value_name] = environ_value
         forward_os_env[env_value_name] = environ_value