blob: 3e21f5537c62b941c1c8e13ddc9dbb78ffa6fdd9 [file] [log] [blame]
Upgrade the nanopb checkout to 0.4.7 plus some important build fixes, and
change the build/install process to be more reliable.
This should be upstreamed, but some pieces of this are not upstreamable in their
current state.
Upstream-Status: Pending
Signed-off-by: Ross Burton <ross.burton@arm.com>
diff --git a/external/nanopb/fix-pyhon-name.patch b/external/nanopb/fix-pyhon-name.patch
deleted file mode 100644
index ab0e84c..0000000
--- a/external/nanopb/fix-pyhon-name.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-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()
diff --git a/external/nanopb/nanopb-init-cache.cmake.in b/external/nanopb/nanopb-init-cache.cmake.in
index fb8104d..8df41dd 100644
--- a/external/nanopb/nanopb-init-cache.cmake.in
+++ b/external/nanopb/nanopb-init-cache.cmake.in
@@ -12,11 +12,15 @@ set(BUILD_STATIC_LIBS On CACHE BOOL "")
set(nanopb_BUILD_RUNTIME On CACHE BOOL "")
set(nanopb_BUILD_GENERATOR On CACHE BOOL "")
set(nanopb_MSVC_STATIC_RUNTIME Off BOOL "")
-set(nanopb_PROTOC_PATH ${CMAKE_SOURCE_DIR}/generator/protoc CACHE STRING "")
+
+set(Python_EXECUTABLE "@Python_EXECUTABLE@" CACHE PATH "Location of python3 executable")
string(TOUPPER @CMAKE_CROSSCOMPILING@ CMAKE_CROSSCOMPILING) # CMake expects TRUE
if (CMAKE_CROSSCOMPILING)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "")
endif()
+set(nanopb_PYTHON_INSTDIR_OVERRIDE "@BUILD_INSTALL_DIR@/lib/python" CACHE PATH "")
+set(NANOPB_GENERATOR_DIR "@BUILD_INSTALL_DIR@/lib/python" CACHE PATH "")
+
@_cmake_fragment@
diff --git a/external/nanopb/nanopb.cmake b/external/nanopb/nanopb.cmake
index 36465f6..57cf3d6 100644
--- a/external/nanopb/nanopb.cmake
+++ b/external/nanopb/nanopb.cmake
@@ -28,7 +28,7 @@ running this module.
set(NANOPB_URL "https://github.com/nanopb/nanopb.git"
CACHE STRING "nanopb repository URL")
-set(NANOPB_REFSPEC "nanopb-0.4.2"
+set(NANOPB_REFSPEC "nanopb-0.4.7"
CACHE STRING "nanopb git refspec")
set(NANOPB_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_deps/nanopb-src"
CACHE PATH "nanopb source-code")
@@ -85,7 +85,7 @@ find_package(Python3 REQUIRED COMPONENTS Interpreter)
find_file(NANOPB_GENERATOR_PATH
NAMES nanopb_generator.py
- PATHS ${nanopb_SOURCE_DIR}/generator
+ PATHS ${NANOPB_INSTALL_DIR}/bin
DOC "nanopb protobuf compiler"
NO_DEFAULT_PATH
)
@@ -186,11 +186,10 @@ function(protobuf_generate)
target_include_directories(${PARAMS_TGT} PRIVATE ${_OUT_DIR_BASE})
endif()
- get_filename_component(NANOPB_GENERATOR_DIR "${NANOPB_GENERATOR_PATH}" DIRECTORY CACHE "Location of nanopb generator.")
#Append a protobuf generator command to the nanopb_generate target.
add_custom_command(OUTPUT "${_OUT_C}" "${_OUT_H}"
COMMAND
- ${CMAKE_COMMAND} -E env PYTHONPATH=${NANOPB_GENERATOR_DIR}
+ ${CMAKE_COMMAND} -E env PYTHONPATH=${NANOPB_INSTALL_DIR}/lib/python
${Python3_EXECUTABLE} ${NANOPB_GENERATOR_PATH}
-I ${PARAMS_BASE_DIR}
-D ${_OUT_DIR_BASE}