diff --git a/CMakeLists.txt b/CMakeLists.txt index 70d41428d8..845aaf656d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -994,10 +994,6 @@ if(USE_PREBUILT_QTWEBKIT_PACKAGE) add_definitions(-DENABLE_TEST_PLUGINS) endif() - # Let OpenCOR know that we want Python support - - add_definitions(-DPYTHON_SUPPORT) - # Let OpenCOR know about the prebuilt version of our QtWebKit package # being used @@ -1023,6 +1019,18 @@ if(USE_PREBUILT_QTWEBKIT_PACKAGE) endforeach() endif() +# Keep track of whether we are building OpenCOR with Python support and, if so, +# let OpenCOR know about it + +if(NOT "${PYTHON_SCRIPT_DIR}" STREQUAL "") + set(PYTHON_SUPPORT TRUE) + + add_definitions(-DPYTHON_SUPPORT) + + string(REPLACE "${PROJECT_BUILD_DIR}/" "" + RELATIVE_PYTHON_SCRIPT_DIR "${PYTHON_SCRIPT_DIR}") +endif() + # Fetch parts of our documentation and build it, if we are neither building # Python nor QtWebKit # Note: we need Python because we rely on Sphinx to build our documentation... @@ -1085,7 +1093,7 @@ endif() # Note: this is because the lookup scope changes for DSOs that are loaded using # dlopen() (see https://www.akkadia.org/drepper/dsohowto.pdf)... -if(NOT WIN32 AND NOT APPLE) +if(NOT WIN32 AND NOT APPLE AND PYTHON_SUPPORT) include_directories(${PYTHON_INCLUDE_DIR}) target_link_libraries(${CMAKE_PROJECT_NAME} @@ -1279,9 +1287,6 @@ else() set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") endif() -string(REPLACE "${PROJECT_BUILD_DIR}/" "" - RELATIVE_PYTHON_SCRIPT_DIR "${PYTHON_SCRIPT_DIR}") - if(WIN32) # Select NSIS, if available, and ZIP as the packagers on Windows @@ -1364,37 +1369,39 @@ if(WIN32) # skip them in that case (see # https://github.com/opencor/opencor/issues/1255#issuecomment-550605710)... - if(RELEASE_MODE) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} ${RELATIVE_PYTHON_SCRIPT_DIR} runjupyter.bat) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} ${RELATIVE_PYTHON_SCRIPT_DIR} start_jupyter.py) - - install(FILES ${PLATFORM_DISTRIB_DIR}/runjupyter.bat - ${PLATFORM_DISTRIB_DIR}/start_jupyter.py - DESTINATION ${RELATIVE_PYTHON_SCRIPT_DIR}) + if(PYTHON_SUPPORT) + if(RELEASE_MODE) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} ${RELATIVE_PYTHON_SCRIPT_DIR} runjupyter.bat) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} ${RELATIVE_PYTHON_SCRIPT_DIR} start_jupyter.py) + + install(FILES ${PLATFORM_DISTRIB_DIR}/runjupyter.bat + ${PLATFORM_DISTRIB_DIR}/start_jupyter.py + DESTINATION ${RELATIVE_PYTHON_SCRIPT_DIR}) + + set(JUPYTER_CONSOLE_FILENAME "${PROJECT_BUILD_DIR}/jupyterconsole.bat") + + configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.bat.in ${JUPYTER_CONSOLE_FILENAME}) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab.bat) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab.vbs) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.bat) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.vbs) + + install(FILES ${JUPYTER_CONSOLE_FILENAME} + ${PLATFORM_DISTRIB_DIR}/jupyterlab.bat + ${PLATFORM_DISTRIB_DIR}/jupyterlab.vbs + ${PLATFORM_DISTRIB_DIR}/jupyternotebook.bat + ${PLATFORM_DISTRIB_DIR}/jupyternotebook.vbs + DESTINATION .) + endif() - set(JUPYTER_CONSOLE_FILENAME "${PROJECT_BUILD_DIR}/jupyterconsole.bat") + set(PYTHON_SHELL_FILENAME "${PROJECT_BUILD_DIR}/pythonshell.bat") - configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.bat.in ${JUPYTER_CONSOLE_FILENAME}) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab.bat) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab.vbs) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.bat) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.vbs) + configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.bat.in ${PYTHON_SHELL_FILENAME}) - install(FILES ${JUPYTER_CONSOLE_FILENAME} - ${PLATFORM_DISTRIB_DIR}/jupyterlab.bat - ${PLATFORM_DISTRIB_DIR}/jupyterlab.vbs - ${PLATFORM_DISTRIB_DIR}/jupyternotebook.bat - ${PLATFORM_DISTRIB_DIR}/jupyternotebook.vbs + install(FILES ${PYTHON_SHELL_FILENAME} DESTINATION .) endif() - set(PYTHON_SHELL_FILENAME "${PROJECT_BUILD_DIR}/pythonshell.bat") - - configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.bat.in ${PYTHON_SHELL_FILENAME}) - - install(FILES ${PYTHON_SHELL_FILENAME} - DESTINATION .) - # File type association # Note: the calls to SHChangeNotify are to ensure that Windows refreshes # file icons (so that it is clear to the user that an extension has @@ -1444,26 +1451,28 @@ elseif(APPLE) # Shell scripts to setup and run Python and Jupyter - set(RUN_JUPYTER_FILENAME ${PYTHON_SCRIPT_DIR}/runjupyter) + if(PYTHON_SUPPORT) + set(RUN_JUPYTER_FILENAME ${PYTHON_SCRIPT_DIR}/runjupyter) - configure_file(${PLATFORM_DISTRIB_DIR}/runjupyter.in ${RUN_JUPYTER_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/runjupyter.in ${RUN_JUPYTER_FILENAME} @ONLY) - set(JUPYTER_CONSOLE_FILENAME ${PROJECT_BUILD_DIR}/jupyterconsole) - set(JUPYTER_LAB_FILENAME ${PROJECT_BUILD_DIR}/jupyterlab) - set(JUPYTER_NOTEBOOK_FILENAME ${PROJECT_BUILD_DIR}/jupyternotebook) - set(PYTHON_SHELL_FILENAME ${PROJECT_BUILD_DIR}/pythonshell) + set(JUPYTER_CONSOLE_FILENAME ${PROJECT_BUILD_DIR}/jupyterconsole) + set(JUPYTER_LAB_FILENAME ${PROJECT_BUILD_DIR}/jupyterlab) + set(JUPYTER_NOTEBOOK_FILENAME ${PROJECT_BUILD_DIR}/jupyternotebook) + set(PYTHON_SHELL_FILENAME ${PROJECT_BUILD_DIR}/pythonshell) - configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) - configure_file(${PLATFORM_DISTRIB_DIR}/jupyterlab.in ${JUPYTER_LAB_FILENAME} @ONLY) - configure_file(${PLATFORM_DISTRIB_DIR}/jupyternotebook.in ${JUPYTER_NOTEBOOK_FILENAME} @ONLY) - configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/jupyterlab.in ${JUPYTER_LAB_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/jupyternotebook.in ${JUPYTER_NOTEBOOK_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) - install(FILES ${JUPYTER_CONSOLE_FILENAME} - ${JUPYTER_LAB_FILENAME} - ${JUPYTER_NOTEBOOK_FILENAME} - ${PYTHON_SHELL_FILENAME} - DESTINATION . - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + install(FILES ${JUPYTER_CONSOLE_FILENAME} + ${JUPYTER_LAB_FILENAME} + ${JUPYTER_NOTEBOOK_FILENAME} + ${PYTHON_SHELL_FILENAME} + DESTINATION . + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + endif() else() # Select TGZ as the packager on Linux @@ -1538,26 +1547,28 @@ else() # Shell scripts to setup and run Python and Jupyter - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} ${RELATIVE_PYTHON_SCRIPT_DIR} runjupyter) + if(PYTHON_SUPPORT) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} ${RELATIVE_PYTHON_SCRIPT_DIR} runjupyter) - install(FILES ${PLATFORM_DISTRIB_DIR}/runjupyter - DESTINATION ${RELATIVE_PYTHON_SCRIPT_DIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + install(FILES ${PLATFORM_DISTRIB_DIR}/runjupyter + DESTINATION ${RELATIVE_PYTHON_SCRIPT_DIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - set(JUPYTER_CONSOLE_FILENAME ${PROJECT_BUILD_DIR}/jupyterconsole) - set(PYTHON_SHELL_FILENAME ${PROJECT_BUILD_DIR}/pythonshell) + set(JUPYTER_CONSOLE_FILENAME ${PROJECT_BUILD_DIR}/jupyterconsole) + set(PYTHON_SHELL_FILENAME ${PROJECT_BUILD_DIR}/pythonshell) - configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab) - copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook) - configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook) + configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) - install(FILES ${JUPYTER_CONSOLE_FILENAME} - ${PLATFORM_DISTRIB_DIR}/jupyterlab - ${PLATFORM_DISTRIB_DIR}/jupyternotebook - ${PYTHON_SHELL_FILENAME} - DESTINATION . - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + install(FILES ${JUPYTER_CONSOLE_FILENAME} + ${PLATFORM_DISTRIB_DIR}/jupyterlab + ${PLATFORM_DISTRIB_DIR}/jupyternotebook + ${PYTHON_SHELL_FILENAME} + DESTINATION . + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + endif() endif() # Specify the package file name, depending on whether we are generating a diff --git a/distrib/linux/mesa/CMakeLists.txt b/distrib/linux/mesa/CMakeLists.txt index d84069b273..c33fcf23ec 100644 --- a/distrib/linux/mesa/CMakeLists.txt +++ b/distrib/linux/mesa/CMakeLists.txt @@ -3,11 +3,11 @@ project(Mesa) # Name and version of our package set(PACKAGE_NAME Mesa) -set(PACKAGE_VERSION 19.2.1) +set(PACKAGE_VERSION 19.2.6) # Git tag for our library -set(GIT_TAG v19.2.1) +set(GIT_TAG v19.2.6) # Specify where our local package will be installed @@ -30,9 +30,9 @@ if(USE_PREBUILT_MESA_PACKAGE) # Retrieve the library's package retrieve_package_file(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR} 33424e212f7f31f046041a6950d8b64fa8599346 + ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR} 0943cd1413a302c943d6e613f44775ca216e8374 SHA1_FILES ${SHA1_FILES} - SHA1_VALUES 3f90abfbe269daeb47909a2d4b728283e0f10479) + SHA1_VALUES 6d8f2e89ef80e7f0f3fc4307e3b286a212664dd7) else() # Build Mesa as an external project diff --git a/doc/downloads/index.js b/doc/downloads/index.js index ebd6631840..e9f5b72aea 100644 --- a/doc/downloads/index.js +++ b/doc/downloads/index.js @@ -41,7 +41,7 @@ var jsonData = { "versions": [ { "change": "Python support: update the PATH using \\ rather than / on Windows (see issue #2219)." }, { "change": "SED-ML support: added support left and right triangle symbols (see issue #2173)." }, { "change": "Simulation Experiment view: properly handle the Graph Panel properties (see issue #2171). Make sure that curves are plotted with all of their original settings when reloading a SED-ML file (see issue #2176). Make sure that all of a solver's properties get saved to a SED-ML file (see issue #2185)." }, - { "change": "Third-party libraries: upgraded the OpenSSL library to version 1.1.1d (see issue #2157). Upgraded LLVM+Clang to version 9.0.0 (see issue #2161). Upgraded Mesa to version 19.2.1 (see issue #2197). Upgraded the SUNDIALS library to version 5.0.0 (see issue #2198). Upgraded QScintilla to version 2.11.3 (see issue #2208)." } + { "change": "Third-party libraries: upgraded the OpenSSL library to version 1.1.1d (see issue #2157). Upgraded LLVM+Clang to version 9.0.0 (see issue #2161). Upgraded the SUNDIALS library to version 5.0.0 (see issue #2198). Upgraded QScintilla to version 2.11.3 (see issue #2208). Upgraded Mesa to version 19.2.6 (see issue #2230)." } ] }, { "major": 0, "minor": 5, "patch": 0, "day": 15, "month": 10, "year": 2016, "type": 0, "license": 1, diff --git a/src/main.cpp b/src/main.cpp index 907776ef17..3b3d8ee10b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,7 +25,7 @@ along with this program. If not, see . //============================================================================== -#ifdef Q_OS_LINUX +#if defined(PYTHON_SUPPORT) && defined(Q_OS_LINUX) #include "Python.h" // Note: this needs to be included before to prevent name clashes... #endif @@ -72,7 +72,7 @@ int main(int pArgC, char *pArgV[]) // using dlopen() (see // https://www.akkadia.org/drepper/dsohowto.pdf)... -#ifdef Q_OS_LINUX +#if defined(PYTHON_SUPPORT) && defined(Q_OS_LINUX) Py_NoUserSiteDirectory = 1; #endif diff --git a/src/plugins/thirdParty/Python/CMakeLists.txt b/src/plugins/thirdParty/Python/CMakeLists.txt index 8ff3666945..6aa4e77d45 100644 --- a/src/plugins/thirdParty/Python/CMakeLists.txt +++ b/src/plugins/thirdParty/Python/CMakeLists.txt @@ -459,7 +459,7 @@ set(PYTHON_LIBRARY ${ROOT_DIR}/${LIBRARY_DIR}/${IMPORT_LIBRARY} PARENT_SCOPE) set(PYTHON_EXECUTABLE ${ROOT_DIR}/${PYTHON_EXECUTABLE} PARENT_SCOPE) set(PYTHON_RELATIVE_SCRIPT_DIR ${SCRIPT_DIR} PARENT_SCOPE) -set(PYTHON_SCRIPT_DIR ${ROOT_DIR}/${SCRIPT_DIR} PARENT_SCOPE) +set(PYTHON_SCRIPT_DIR ${ROOT_DIR}/${SCRIPT_DIR} PARENT_SCOPE) set(PYTHON_RELATIVE_RUNTIME_DIR ${RUNTIME_DIR} PARENT_SCOPE)