1From daf686508f2ee4711d93e96e5b100e50bf161656 Mon Sep 17 00:00:00 2001
2From: Leon Anavi <leon.anavi@konsulko.com>
3Date: Wed, 26 Aug 2020 10:52:10 +0300
4Subject: [PATCH] doxygen: Fix Python issues for doxygen-native
5
6It fails to compile doxygen-native when /usr/bin/python is a link
7to python3 on build host:
8
9| Failed to import the site module
10| Traceback (most recent call last):
11|   File "/usr/lib64/python3.6/site.py", line 564, in <module>
12|     main()
13|   File "/usr/lib64/python3.6/site.py", line 550, in main
14|     known_paths = addusersitepackages(known_paths)
15|   File "/usr/lib64/python3.6/site.py", line 282, in addusersitepackages
16|     user_site = getusersitepackages()
17|   File "/usr/lib64/python3.6/site.py", line 258, in getusersitepackages
18|     user_base = getuserbase() # this will also set USER_BASE
19|   File "/usr/lib64/python3.6/site.py", line 248, in getuserbase
20|     USER_BASE = get_config_var('userbase')
21|   File "/usr/lib64/python3.6/sysconfig.py", line 604, in get_config_var
22|     return get_config_vars().get(name)
23|   File "/usr/lib64/python3.6/sysconfig.py", line 553, in get_config_vars
24|     _init_posix(_CONFIG_VARS)
25|   File "/usr/lib64/python3.6/sysconfig.py", line 424, in _init_posix
26|     _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
27| ModuleNotFoundError: No module named '_sysconfigdata'
28
29Replace find_package PythonInterp with Python3 to fix this issue
30that it uses python3 from python3-native. And it also replaces the
31result variable PYTHON_EXECUTABLE with Python3_EXECUTABLE.
32
33This patch is only needded by doxygen-native.
34
35Updated to apply to release 1.9.1.
36
37Upstream-Status: Inappropriate[oe specific]
38
39Co-Authored-By: Kai Kang <kai.kang@windriver.com>
40Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
41Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
42
43---
44 CMakeLists.txt                  |  2 +-
45 addon/doxywizard/CMakeLists.txt |  6 +++---
46 doc/CMakeLists.txt              |  6 +++---
47 examples/CMakeLists.txt         |  4 ++--
48 libmscgen/CMakeLists.txt        |  2 +-
49 src/CMakeLists.txt              | 10 +++++-----
50 testing/CMakeLists.txt          |  4 ++--
51 7 files changed, 17 insertions(+), 17 deletions(-)
52
53diff --git a/CMakeLists.txt b/CMakeLists.txt
54index 2455793..28f0d83 100644
55--- a/CMakeLists.txt
56+++ b/CMakeLists.txt
57@@ -105,7 +105,7 @@ else ()
58 endif ()
59
60 find_program(DOT NAMES dot)
61-find_package(PythonInterp REQUIRED)
62+find_package(Python3 REQUIRED)
63 find_package(FLEX REQUIRED)
64 find_package(BISON REQUIRED)
65 if (BISON_VERSION VERSION_LESS 2.7)
66diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt
67index 63ac8e3..d37d1d0 100644
68--- a/addon/doxywizard/CMakeLists.txt
69+++ b/addon/doxywizard/CMakeLists.txt
70@@ -57,7 +57,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/settings.h PROPERTIES GENERA
71
72 # generate version.cpp
73 add_custom_command(
74-    COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/version.py ${VERSION} > ${GENERATED_SRC_WIZARD}/version.cpp
75+    COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/version.py ${VERSION} > ${GENERATED_SRC_WIZARD}/version.cpp
76     DEPENDS ${PROJECT_SOURCE_DIR}/VERSION ${PROJECT_SOURCE_DIR}/src/version.py
77     OUTPUT ${GENERATED_SRC_WIZARD}/version.cpp
78 )
79@@ -65,7 +65,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/version.cpp PROPERTIES GENER
80
81 # generate configdoc.cpp
82 add_custom_command(
83-    COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/configgen.py -wiz ${PROJECT_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC_WIZARD}/configdoc.cpp
84+    COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/configgen.py -wiz ${PROJECT_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC_WIZARD}/configdoc.cpp
85     DEPENDS  ${PROJECT_SOURCE_DIR}/src/configgen.py ${PROJECT_SOURCE_DIR}/src/config.xml
86     OUTPUT ${GENERATED_SRC_WIZARD}/configdoc.cpp
87 )
88@@ -74,7 +74,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GEN
89 set(LEX_FILES config_doxyw)
90 foreach(lex_file ${LEX_FILES})
91     add_custom_command(
92-        COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/addon/doxywizard/${lex_file}.l > ${GENERATED_SRC_WIZARD}/${lex_file}.l.h
93+        COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/addon/doxywizard/${lex_file}.l > ${GENERATED_SRC_WIZARD}/${lex_file}.l.h
94         DEPENDS ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/addon/doxywizard/${lex_file}.l
95         OUTPUT  ${GENERATED_SRC_WIZARD}/${lex_file}.l.h
96     )
97diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
98index ec63ceb..49a2bda 100644
99--- a/doc/CMakeLists.txt
100+++ b/doc/CMakeLists.txt
101@@ -168,7 +168,7 @@ configure_file(${PROJECT_SOURCE_DIR}/doc/doxyindexer.1      ${PROJECT_BINARY_DIR
102
103 # doc/language.doc (see tag Doxyfile:INPUT)
104 add_custom_command(
105-        COMMAND ${PYTHON_EXECUTABLE} translator.py ${PROJECT_SOURCE_DIR}
106+        COMMAND ${Python3_EXECUTABLE} translator.py ${PROJECT_SOURCE_DIR}
107         DEPENDS ${PROJECT_SOURCE_DIR}/doc/maintainers.txt ${PROJECT_SOURCE_DIR}/doc/language.tpl ${PROJECT_BINARY_DIR}/doc/translator.py ${LANG_FILES}
108         OUTPUT language.doc
109         WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc
110@@ -177,7 +177,7 @@ set_source_files_properties(language.doc PROPERTIES GENERATED 1)
111
112 # doc/config.doc (see tag Doxyfile:INPUT)
113 add_custom_command(
114-        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/src/configgen.py -doc ${TOP}/src/config.xml > config.doc
115+        COMMAND ${Python3_EXECUTABLE}  ${TOP}/src/configgen.py -doc ${TOP}/src/config.xml > config.doc
116         DEPENDS ${TOP}/src/config.xml ${TOP}/src/configgen.py
117         OUTPUT config.doc
118         WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc/
119@@ -228,7 +228,7 @@ add_custom_target(docs_chm
120     COMMAND ${CMAKE_COMMAND} -E echo "    for file in files:" >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py
121     COMMAND ${CMAKE_COMMAND} -E echo "        if file.endswith('.html') or file.endswith('.png') or file.endswith('.css') or file.endswith('.gif'):" >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py
122     COMMAND ${CMAKE_COMMAND} -E echo "            print(os.path.join(root, file))" >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py
123-    COMMAND ${CMAKE_COMMAND} -E chdir  ${PROJECT_BINARY_DIR}/chm ${PYTHON_EXECUTABLE} ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual.hhp
124+    COMMAND ${CMAKE_COMMAND} -E chdir  ${PROJECT_BINARY_DIR}/chm ${Python3_EXECUTABLE} ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual.hhp
125     COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_BINARY_DIR}/chm "${HTML_HELP_COMPILER}" doxygen_manual.hhp || echo > nul
126     COMMAND ${CMAKE_COMMAND} -E rename ${PROJECT_BINARY_DIR}/chm/index.chm ${PROJECT_BINARY_DIR}/chm/doxygen_manual.chm
127         DEPENDS ${PROJECT_BINARY_DIR}/doc/language.doc ${PROJECT_BINARY_DIR}/doc/config.doc
128diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
129index 194b427..248b807 100644
130--- a/examples/CMakeLists.txt
131+++ b/examples/CMakeLists.txt
132@@ -54,7 +54,7 @@ foreach (f_inp  ${BASIC_EXAMPLES})
133         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/html/examples/${f}
134         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/latex/examples/${f}
135 	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen ${f}.cfg
136-        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/latex/examples/${f}/latex/refman.tex > ${PROJECT_BINARY_DIR}/latex/examples/${f}/latex/refman_doc.tex
137+        COMMAND ${Python3_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/latex/examples/${f}/latex/refman.tex > ${PROJECT_BINARY_DIR}/latex/examples/${f}/latex/refman_doc.tex
138 	DEPENDS doxygen ${f}.${f_ext} ${f}.cfg ${TOP}/examples/strip_example.py
139 	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/${f}/html/index.html ${PROJECT_BINARY_DIR}/latex/examples/${f}/latex/refman_doc.tex
140     )
141@@ -73,7 +73,7 @@ if (DOT)
142         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/html/examples/diagrams
143         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/latex/examples/diagrams
144 	COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen diagrams.cfg
145-        COMMAND ${PYTHON_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/latex/examples/diagrams/latex/refman.tex > ${PROJECT_BINARY_DIR}/latex/examples/diagrams/latex/refman_doc.tex
146+        COMMAND ${Python3_EXECUTABLE}  ${TOP}/examples/strip_example.py  < ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman_doc.tex
147 	DEPENDS doxygen diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg ${TOP}/examples/strip_example.py
148 	OUTPUT ${PROJECT_BINARY_DIR}/html/examples/diagrams/html/index.html ${PROJECT_BINARY_DIR}/latex/examples/diagrams/latex/refman_doc.tex
149   )
150diff --git a/libmscgen/CMakeLists.txt b/libmscgen/CMakeLists.txt
151index 34cf4d8..f015afc 100644
152--- a/libmscgen/CMakeLists.txt
153+++ b/libmscgen/CMakeLists.txt
154@@ -7,7 +7,7 @@ include_directories(
155 set(LEX_FILES mscgen_lexer)
156 foreach(lex_file ${LEX_FILES})
157     add_custom_command(
158-        COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/libmscgen/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
159+        COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/libmscgen/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
160         DEPENDS ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/libmscgen/${lex_file}.l
161         OUTPUT  ${GENERATED_SRC}/${lex_file}.l.h
162     )
163diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
164index 0e0c5f7..c1d3ca5 100644
165--- a/src/CMakeLists.txt
166+++ b/src/CMakeLists.txt
167@@ -40,7 +40,7 @@ set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1)
168
169 # configvalues.h
170 add_custom_command(
171-    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maph ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.h
172+    COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maph ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.h
173     DEPENDS ${CMAKE_CURRENT_LIST_DIR}/config.xml ${CMAKE_CURRENT_LIST_DIR}/configgen.py
174     OUTPUT ${GENERATED_SRC}/configvalues.h
175 )
176@@ -52,7 +52,7 @@ add_custom_target(
177
178 # configvalues.cpp
179 add_custom_command(
180-    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maps ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.cpp
181+    COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -maps ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configvalues.cpp
182     DEPENDS ${CMAKE_CURRENT_LIST_DIR}/config.xml ${CMAKE_CURRENT_LIST_DIR}/configgen.py
183     OUTPUT ${GENERATED_SRC}/configvalues.cpp
184 )
185@@ -60,7 +60,7 @@ set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERAT
186
187 # configoptions.cpp
188 add_custom_command(
189-    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -cpp ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configoptions.cpp
190+    COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/configgen.py -cpp ${CMAKE_CURRENT_LIST_DIR}/config.xml > ${GENERATED_SRC}/configoptions.cpp
191     DEPENDS ${CMAKE_CURRENT_LIST_DIR}/config.xml ${CMAKE_CURRENT_LIST_DIR}/configgen.py
192     OUTPUT ${GENERATED_SRC}/configoptions.cpp
193 )
194@@ -95,7 +95,7 @@ endif()
195 # resources.cpp
196 add_custom_command(
197     COMMENT  "Generating ${GENERATED_SRC}/resources.cpp"
198-    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/res2cc_cmd.py ${PROJECT_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp
199+    COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/res2cc_cmd.py ${PROJECT_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp
200     DEPENDS ${RESOURCES} ${CMAKE_CURRENT_LIST_DIR}/res2cc_cmd.py
201     OUTPUT ${GENERATED_SRC}/resources.cpp
202 )
203@@ -126,7 +126,7 @@ foreach(lex_file ${LEX_FILES})
204     set(LEX_FILES_H ${LEX_FILES_H} " " ${GENERATED_SRC}/${lex_file}.l.h CACHE INTERNAL "Stores generated files")
205     set(LEX_FILES_CPP ${LEX_FILES_CPP} " " ${GENERATED_SRC}/${lex_file}.cpp CACHE INTERNAL "Stores generated files")
206     add_custom_command(
207-        COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/scan_states.py ${CMAKE_CURRENT_LIST_DIR}/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
208+        COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/scan_states.py ${CMAKE_CURRENT_LIST_DIR}/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
209         DEPENDS ${CMAKE_CURRENT_LIST_DIR}/scan_states.py ${CMAKE_CURRENT_LIST_DIR}/${lex_file}.l
210         OUTPUT  ${GENERATED_SRC}/${lex_file}.l.h
211     )
212diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt
213index fd6912e..0af1865 100644
214--- a/testing/CMakeLists.txt
215+++ b/testing/CMakeLists.txt
216@@ -1,7 +1,7 @@
217 # run all tests sequentially (keep for backward compatibility)
218 add_custom_target(tests
219 	COMMENT "Running doxygen tests..."
220-	COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${PROJECT_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
221+	COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${PROJECT_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
222 	DEPENDS doxygen
223 )
224
225@@ -19,6 +19,6 @@ foreach(TEST_FILE ${TEST_FILES})
226 	string(REGEX REPLACE "^.*/([0-9][0-9][0-9]*).*$" "\\1" TEST_ID "${TEST_FILE}")
227 	# add a test target for each test
228 	add_test(NAME ${TEST_NAME}
229-		 COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/testing/runtests.py --id ${TEST_ID} --doxygen $<TARGET_FILE:doxygen> --inputdir ${PROJECT_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
230+		 COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/testing/runtests.py --id ${TEST_ID} --doxygen $<TARGET_FILE:doxygen> --inputdir ${PROJECT_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
231 	)
232 endforeach()
233