Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nanopb/nanopb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>2023-10-19 13:02:30 +0300
committerPetteri Aimonen <jpa@github.mail.kapsi.fi>2023-10-27 13:37:50 +0300
commit5896c28cd23ba76c9cd02253a59240a3dcbb42e0 (patch)
tree40c2356cbda730dae46af610d328515f524eb7a5
parent9766c4589f61b76807a0a394040c15a2d23ef24c (diff)
Make CMakeLists install as Python module 'nanopb', not 'proto' (#845)
Makes the installation consistent with "pip install nanopb" results, and avoids naming conflicts with other libraries.
-rw-r--r--CMakeLists.txt23
-rwxr-xr-xextra/script_wrappers/nanopb_generator.py6
-rw-r--r--generator/__init__.py0
-rwxr-xr-xgenerator/nanopb_generator7
-rw-r--r--generator/nanopb_generator.bat5
5 files changed, 36 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6395bf3..0a6a7b0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,11 +41,12 @@ if(NOT DEFINED CMAKE_INSTALL_CMAKEDIR)
set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/nanopb")
endif()
+# Determine Python module installation path
if (NOT nanopb_PYTHON_INSTDIR_OVERRIDE)
find_package(Python REQUIRED COMPONENTS Interpreter)
execute_process(
COMMAND ${Python_EXECUTABLE} -c
- "import os.path, sys, sysconfig; print(os.path.relpath(sysconfig.get_path('purelib'), start=sys.prefix))"
+ "import os.path, sys, sysconfig; print(sysconfig.get_path('purelib'))"
OUTPUT_VARIABLE PYTHON_INSTDIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
@@ -54,6 +55,7 @@ else()
endif()
message(STATUS "Python install dir: ${PYTHON_INSTDIR}")
+# Install nanopb generator as Python module 'nanopb'
if(nanopb_BUILD_GENERATOR)
set(generator_protos nanopb)
@@ -69,27 +71,38 @@ if(nanopb_BUILD_GENERATOR)
install(
FILES ${PROJECT_BINARY_DIR}/${generator_proto_py_file}
${generator_proto_file}
- DESTINATION ${PYTHON_INSTDIR}/proto/
+ DESTINATION ${PYTHON_INSTDIR}/nanopb/generator/proto/
)
endforeach()
install( FILES generator/proto/_utils.py
generator/proto/__init__.py
- DESTINATION ${PYTHON_INSTDIR}/proto/ )
+ DESTINATION ${PYTHON_INSTDIR}/nanopb/generator/proto/ )
+
+ install( FILES generator/nanopb_generator.py
+ generator/__init__.py
+ DESTINATION ${PYTHON_INSTDIR}/nanopb/generator/ )
+
+ install( FILES generator/__init__.py
+ DESTINATION ${PYTHON_INSTDIR}/nanopb/ )
+
endif()
+# Install small script wrappers to invoke the generator from the installed module
if(WIN32)
install(
PROGRAMS
- generator/nanopb_generator.py
+ extra/script_wrappers/nanopb_generator.py
generator/protoc-gen-nanopb.bat
+ generator/nanopb_generator.bat
DESTINATION ${CMAKE_INSTALL_BINDIR}
)
else()
install(
PROGRAMS
- generator/nanopb_generator.py
+ extra/script_wrappers/nanopb_generator.py
generator/protoc-gen-nanopb
+ generator/nanopb_generator
DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif()
diff --git a/extra/script_wrappers/nanopb_generator.py b/extra/script_wrappers/nanopb_generator.py
new file mode 100755
index 0000000..493a91f
--- /dev/null
+++ b/extra/script_wrappers/nanopb_generator.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+# This script is a wrapper to invoke nanopb_generator from an installed Python module.
+import sys
+from nanopb.generator.nanopb_generator import main_cli, main_plugin
+if __name__ == '__main__':
+ sys.exit(main_cli())
diff --git a/generator/__init__.py b/generator/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/generator/__init__.py
diff --git a/generator/nanopb_generator b/generator/nanopb_generator
new file mode 100755
index 0000000..429aa13
--- /dev/null
+++ b/generator/nanopb_generator
@@ -0,0 +1,7 @@
+#!/usr/bin/env python3
+# Allow calling nanopb_generator.py as simply nanopb_generator.
+# This provides consistency with packages installed through CMake or pip.
+
+from nanopb_generator import *
+if __name__ == '__main__':
+ main_cli()
diff --git a/generator/nanopb_generator.bat b/generator/nanopb_generator.bat
new file mode 100644
index 0000000..d208316
--- /dev/null
+++ b/generator/nanopb_generator.bat
@@ -0,0 +1,5 @@
+@echo off
+:: Allow calling nanopb_generator.py as simply nanopb_generator.
+:: This provides consistency with packages installed through CMake or pip.
+set mydir=%~dp0
+python "%mydir%\nanopb_generator.py" %*