aboutsummaryrefslogtreecommitdiff
path: root/external/nanopb/fix-pyhon-name.patch
blob: ab0e84c550f4505f8b3eb71f3162b2db6e58d4ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
This patch fixes two issues:

1. On windows the python3 executable is not allways called "python3". As a result
    "protoc" execution can fail due to the shebang in the file. This patch fixes
    this by running protoc with the intepreter.

2. In addition when not running from a virtualenv, the install path for python file
    is set to the "user site-packages" to avoid needing elevated access rights.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31c86e7..e827015 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -54,13 +54,25 @@ if(nanopb_BUILD_GENERATOR)
         string(REGEX REPLACE "([^;]+)" "\\1_pb2.py" generator_proto_py_file "${generator_proto}")
         add_custom_command(
             OUTPUT ${generator_proto_py_file}
-            COMMAND ${nanopb_PROTOC_PATH} --python_out=${PROJECT_BINARY_DIR} -I${PROJECT_SOURCE_DIR}/generator/proto ${generator_proto_file}
+            COMMAND ${Python_EXECUTABLE} ${nanopb_PROTOC_PATH} --python_out=${PROJECT_BINARY_DIR} -I${PROJECT_SOURCE_DIR}/generator/proto ${generator_proto_file}
             DEPENDS ${generator_proto_file}
         )
         add_custom_target("generate_${generator_proto_py_file}" ALL DEPENDS ${generator_proto_py_file})
+
+        if (DEFINED ENV{VIRTUAL_ENV})
+            set(PYTHON_INSTALL_DIR ${Python_SITELIB} CACHE PATH "Install location for generated python modules.")
+        else()
+            execute_process(
+                COMMAND ${Python_EXECUTABLE} -m site --user-site
+                OUTPUT_VARIABLE PYTHON_USER_SITE
+                OUTPUT_STRIP_TRAILING_WHITESPACE
+            )
+            set(PYTHON_INSTALL_DIR ${PYTHON_USER_SITE} CACHE PATH "Install location for generated python modules.")
+        endif()
+
         install(
             FILES ${PROJECT_BINARY_DIR}/${generator_proto_py_file}
-            DESTINATION ${Python_SITELIB}
+            DESTINATION ${PYTHON_INSTALL_DIR}
         )
     endforeach()
 endif()