diff --git a/mingw-w64-tulip/001-fix-tulip-python-install.patch b/mingw-w64-tulip/001-fix-tulip-python-install.patch new file mode 100644 index 0000000000..8eb3aec561 --- /dev/null +++ b/mingw-w64-tulip/001-fix-tulip-python-install.patch @@ -0,0 +1,185 @@ +diff -ur tulip-5.0.0/cmake/TulipUseFile.cmake tulip-5.0.0_patched/cmake/TulipUseFile.cmake +--- tulip-5.0.0/cmake/TulipUseFile.cmake 2017-06-27 08:34:28.000000000 +0200 ++++ tulip-5.0.0_patched/cmake/TulipUseFile.cmake 2017-07-10 21:52:53.780834900 +0200 +@@ -437,6 +437,41 @@ + ENDIF(TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + ENDMACRO(INSTALL_TULIP_PLUGIN) + ++SET(TULIP_PYTHON_SYSTEM_INSTALL OFF CACHE BOOL "Do you want to install Tulip Python modules in Python ${SYSTEM_PYTHON_INSTALL_FOLDER} (site-packages on windows) folder ? This should only be used when packaging Tulip for a Linux distribution or MSYS2. [OFF|ON]") ++ ++MACRO(INSTALL_TULIP_PYTHON_FILES install_suffix) ++ FOREACH(PYTHON_FILE ${ARGN}) ++ ++ SET(SYSTEM_PYTHON_INSTALL_FOLDER "${SYSTEM_PYTHON_INSTALL_FOLDER}") ++ IF(WIN32) ++ SET(SYSTEM_PYTHON_INSTALL_FOLDER "site-packages") ++ ENDIF(WIN32) ++ ++ IF(TARGET ${PYTHON_FILE}) ++ IF(NOT TULIP_PYTHON_SYSTEM_INSTALL) ++ INSTALL(TARGETS ${PYTHON_FILE} ++ RUNTIME DESTINATION ${TulipBinInstallDir}/python/${install_suffix} COMPONENT tulip_python ++ LIBRARY DESTINATION ${TulipLibInstallDir}/python/${install_suffix} COMPONENT tulip_python) ++ ELSE(NOT TULIP_PYTHON_SYSTEM_INSTALL) ++ INSTALL(TARGETS ${PYTHON_FILE} ++ RUNTIME DESTINATION ${TulipBinInstallDir}/../lib/python${PYTHON_VERSION}/${SYSTEM_PYTHON_INSTALL_FOLDER}/${install_suffix} COMPONENT tulip_python ++ LIBRARY DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/${SYSTEM_PYTHON_INSTALL_FOLDER}/${install_suffix} COMPONENT tulip_python) ++ ENDIF(NOT TULIP_PYTHON_SYSTEM_INSTALL) ++ ELSE(TARGET ${PYTHON_FILE}) ++ IF(NOT TULIP_PYTHON_SYSTEM_INSTALL) ++ IF(WIN32) ++ INSTALL(FILES ${PYTHON_FILE} DESTINATION ${TulipBinInstallDir}/python/${install_suffix} COMPONENT tulip_python) ++ ELSE(WIN32) ++ INSTALL(FILES ${PYTHON_FILE} DESTINATION ${TulipLibInstallDir}/python/${install_suffix} COMPONENT tulip_python) ++ ENDIF(WIN32) ++ ELSE(NOT TULIP_PYTHON_SYSTEM_INSTALL) ++ INSTALL(FILES ${PYTHON_FILE} DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/${SYSTEM_PYTHON_INSTALL_FOLDER}/${install_suffix} COMPONENT tulip_python) ++ ENDIF(NOT TULIP_PYTHON_SYSTEM_INSTALL) ++ ENDIF(TARGET ${PYTHON_FILE}) ++ ++ ENDFOREACH() ++ENDMACRO(INSTALL_TULIP_PYTHON_FILES) ++ + # Convert a Windows path (C:/folder) to a Msys path (/C/folder) + MACRO(WINDOWS_TO_MSYS_PATH WindowsPath ResultingPath) + STRING(REGEX REPLACE "([a-zA-Z]):" "/\\1" ${ResultingPath} "${WindowsPath}") +diff -ur tulip-5.0.0/library/tulip-python/bindings/stl/CMakeLists.txt tulip-5.0.0_patched/library/tulip-python/bindings/stl/CMakeLists.txt +--- tulip-5.0.0/library/tulip-python/bindings/stl/CMakeLists.txt 2017-06-27 08:34:02.000000000 +0200 ++++ tulip-5.0.0_patched/library/tulip-python/bindings/stl/CMakeLists.txt 2017-07-10 21:53:20.434744600 +0200 +@@ -72,17 +72,7 @@ + ENDIF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + ENDIF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + +-IF(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibStlPythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/python/tulip/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python/tulip/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python/tulip/native COMPONENT tulip_python) +-ELSE(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibStlPythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/../lib/python${PYTHON_VERSION}/dist-packages/tulip/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulip/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulip/native COMPONENT tulip_python) +-ENDIF(NOT PYTHON_DIST_PACKAGE) ++INSTALL_TULIP_PYTHON_FILES(tulip/native ${LibStlPythonBindingsName}) + + SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "sipAPI_stl.h") + +diff -ur tulip-5.0.0/library/tulip-python/bindings/tulip-core/CMakeLists.txt tulip-5.0.0_patched/library/tulip-python/bindings/tulip-core/CMakeLists.txt +--- tulip-5.0.0/library/tulip-python/bindings/tulip-core/CMakeLists.txt 2017-06-27 08:34:01.000000000 +0200 ++++ tulip-5.0.0_patched/library/tulip-python/bindings/tulip-core/CMakeLists.txt 2017-07-10 21:53:43.949062900 +0200 +@@ -192,23 +192,8 @@ + ENDIF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + ENDIF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + +-IF(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibTulipCorePythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/python/tulip/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python/tulip/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python/tulip/native COMPONENT tulip_python) +-IF(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipBinInstallDir}/python/tulip COMPONENT tulip_python) +-ELSE(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipLibInstallDir}/python/tulip COMPONENT tulip_python) +-ENDIF(WIN32) +-ELSE(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibTulipCorePythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/../lib/python${PYTHON_VERSION}/dist-packages/tulip/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulip/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulip/native COMPONENT tulip_python) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulip COMPONENT tulip_python) +-ENDIF(NOT PYTHON_DIST_PACKAGE) ++INSTALL_TULIP_PYTHON_FILES(tulip ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py) ++INSTALL_TULIP_PYTHON_FILES(tulip/native ${LibTulipCorePythonBindingsName}) + + IF(NOT TULIP_BUILD_CORE_ONLY) + ADD_CUSTOM_COMMAND(TARGET ${LibTulipCorePythonBindingsName} +diff -ur tulip-5.0.0/library/tulip-python/bindings/tulip-gui/CMakeLists.txt tulip-5.0.0_patched/library/tulip-python/bindings/tulip-gui/CMakeLists.txt +--- tulip-5.0.0/library/tulip-python/bindings/tulip-gui/CMakeLists.txt 2017-06-27 08:34:02.000000000 +0200 ++++ tulip-5.0.0_patched/library/tulip-python/bindings/tulip-gui/CMakeLists.txt 2017-07-10 21:54:44.749289700 +0200 +@@ -124,24 +124,8 @@ + ENDIF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + ENDIF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + +- +-IF(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibTulipGUIPythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/python/tulipgui/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python/tulipgui/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python/tulipgui/native COMPONENT tulip_python) +-IF(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipBinInstallDir}/python/tulipgui COMPONENT tulip_python) +-ELSE(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipLibInstallDir}/python/tulipgui COMPONENT tulip_python) +-ENDIF(WIN32) +-ELSE(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibTulipGUIPythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/../lib/python${PYTHON_VERSION}/dist-packages/tulipgui/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulipgui/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulipgui/native COMPONENT tulip_python) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulipgui COMPONENT tulip_python) +-ENDIF(NOT PYTHON_DIST_PACKAGE) ++INSTALL_TULIP_PYTHON_FILES(tulipgui ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py) ++INSTALL_TULIP_PYTHON_FILES(tulipgui/native ${LibTulipGUIPythonBindingsName}) + + ADD_CUSTOM_COMMAND( + TARGET ${LibTulipGUIPythonBindingsName} +diff -ur tulip-5.0.0/library/tulip-python/bindings/tulip-ogl/CMakeLists.txt tulip-5.0.0_patched/library/tulip-python/bindings/tulip-ogl/CMakeLists.txt +--- tulip-5.0.0/library/tulip-python/bindings/tulip-ogl/CMakeLists.txt 2017-06-27 08:34:02.000000000 +0200 ++++ tulip-5.0.0_patched/library/tulip-python/bindings/tulip-ogl/CMakeLists.txt 2017-07-10 21:55:12.640411700 +0200 +@@ -99,23 +99,8 @@ + ENDIF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + ENDIF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + +-IF(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibTulipOGLPythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/python/tulipogl/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python/tulipogl/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python/tulipogl/native COMPONENT tulip_python) +-IF(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipBinInstallDir}/python/tulipogl COMPONENT tulip_python) +-ELSE(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipLibInstallDir}/python/tulipogl COMPONENT tulip_python) +-ENDIF(WIN32) +-ELSE(NOT PYTHON_DIST_PACKAGE) +-INSTALL(TARGETS ${LibTulipOGLPythonBindingsName} +- RUNTIME DESTINATION ${TulipBinInstallDir}/../lib/python${PYTHON_VERSION}/dist-packages/tulipogl/native COMPONENT tulip_python +- LIBRARY DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulipogl/native COMPONENT tulip_python +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulipogl/native COMPONENT tulip_python) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py DESTINATION ${TulipLibInstallDir}/python${PYTHON_VERSION}/dist-packages/tulipogl COMPONENT tulip_python) +-ENDIF(NOT PYTHON_DIST_PACKAGE) ++INSTALL_TULIP_PYTHON_FILES(tulipogl ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py) ++INSTALL_TULIP_PYTHON_FILES(tulipogl/native ${LibTulipOGLPythonBindingsName}) + + ADD_CUSTOM_COMMAND( + TARGET ${LibTulipOGLPythonBindingsName} +diff -ur tulip-5.0.0/library/tulip-python/modules/CMakeLists.txt tulip-5.0.0_patched/library/tulip-python/modules/CMakeLists.txt +--- tulip-5.0.0/library/tulip-python/modules/CMakeLists.txt 2017-06-27 08:34:03.000000000 +0200 ++++ tulip-5.0.0_patched/library/tulip-python/modules/CMakeLists.txt 2017-07-10 21:55:31.454472200 +0200 +@@ -1,10 +1,6 @@ + ADD_CORE_FILES(.) + +-IF(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tulipplugins.py DESTINATION ${TulipBinInstallDir}/python COMPONENT tulip_python) +-ELSE(WIN32) +-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tulipplugins.py DESTINATION ${TulipLibInstallDir}/python COMPONENT tulip_python) +-ENDIF() ++INSTALL_TULIP_PYTHON_FILES("" ${CMAKE_CURRENT_SOURCE_DIR}/tulipplugins.py) + + IF(TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + ADD_CUSTOM_TARGET(copyTulipPluginsPy ALL ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/tulipplugins.py ${TULIP_PYTHON_FOLDER}/../tulipplugins/__init__.py) +diff -ur tulip-5.0.0/thirdparty/sip-4.19.1/siplib/CMakeLists.txt tulip-5.0.0_patched/thirdparty/sip-4.19.1/siplib/CMakeLists.txt +--- tulip-5.0.0/thirdparty/sip-4.19.1/siplib/CMakeLists.txt 2017-06-27 08:34:36.000000000 +0200 ++++ tulip-5.0.0_patched/thirdparty/sip-4.19.1/siplib/CMakeLists.txt 2017-07-10 21:56:00.546629700 +0200 +@@ -57,10 +57,7 @@ + ENDIF(NOT LINUX OR NOT TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + ENDIF(APPLE AND TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + +-INSTALL(TARGETS ${SIP_LIB} +- RUNTIME DESTINATION ${TulipBinInstallDir}/python COMPONENT ${SIP_LIB} +- LIBRARY DESTINATION ${TulipLibInstallDir}/python COMPONENT ${SIP_LIB} +- ARCHIVE DESTINATION ${TulipLibInstallDir}/python COMPONENT ${SIP_LIB}) ++INSTALL_TULIP_PYTHON_FILES("" ${SIP_LIB}) + + IF(TULIP_ACTIVATE_PYTHON_WHEELS_TARGETS) + COPY_TARGET_LIBRARY_POST_BUILD(${SIP_LIB} ${TULIP_PYTHON_NATIVE_FOLDER} wheels) diff --git a/mingw-w64-tulip/002-fix-undo-redo-crash.patch b/mingw-w64-tulip/002-fix-undo-redo-crash.patch new file mode 100644 index 0000000000..f0b18b2f06 --- /dev/null +++ b/mingw-w64-tulip/002-fix-undo-redo-crash.patch @@ -0,0 +1,26 @@ +diff -ur tulip-5.0.0/library/tulip-core/src/GraphStorage.cpp tulip-5.0.0_patched/library/tulip-core/src/GraphStorage.cpp +--- tulip-5.0.0/library/tulip-core/src/GraphStorage.cpp 2017-06-27 08:34:12.000000000 +0200 ++++ tulip-5.0.0_patched/library/tulip-core/src/GraphStorage.cpp 2017-07-10 22:01:42.167504000 +0200 +@@ -410,6 +410,8 @@ + * @brief restore the given node in the structure and return it + */ + void GraphStorage::restoreNode(const node n) { ++ if (n.id == nodeData.size()) ++ nodeData.resize(n.id + 1); + NodeData& nData = nodeData[n.id]; + // clear edge infos + nData.edges.clear(); +@@ -424,12 +426,7 @@ + */ + node GraphStorage::addNode() { + node n(nodeIds.get()); +- +- if (n.id == nodeData.size()) +- nodeData.resize(n.id + 1); +- else +- restoreNode(n); +- ++ restoreNode(n); + return n; + } + //======================================================= diff --git a/mingw-w64-tulip/PKGBUILD b/mingw-w64-tulip/PKGBUILD new file mode 100644 index 0000000000..b9af7a2eee --- /dev/null +++ b/mingw-w64-tulip/PKGBUILD @@ -0,0 +1,70 @@ +# Maintainer: Antoine Lambert + +_realname=tulip +pkgbase="mingw-w64-${_realname}" +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +_pre= +_ver=5.0.0 +pkgver=${_ver}${_pre} +pkgrel=1 +pkgdesc="Large graphs analysis, drawing and visualization framework" +arch=('any') +url="https://tulip.labri.fr/" +license=('LGPL') +options=('strip' 'staticlibs') +source=("https://sourceforge.net/projects/auber/files/tulip/${_realname}-${_ver}${_pre}/${_realname}-${_ver}${_pre}_src.tar.gz" + "001-fix-tulip-python-install.patch" + "002-fix-undo-redo-crash.patch") +sha256sums=('18aa79c0302d683947d51f87cbed24ac53a571784a1d9c32aa0b92d7b506b80f' + '947d47098637d06d77a1dce46641c386c93bc3c09b3c8af4f7b53dad9dbc0559' + 'c6401d8b7edc74cce03c83d82b8c68bbdcb69b5eedb2240b965d43ac62afbf41') + +depends=("${MINGW_PACKAGE_PREFIX}-yajl" + "${MINGW_PACKAGE_PREFIX}-qhull" + "${MINGW_PACKAGE_PREFIX}-freetype" + "${MINGW_PACKAGE_PREFIX}-glew" + "${MINGW_PACKAGE_PREFIX}-libpng" + "${MINGW_PACKAGE_PREFIX}-libjpeg" + "${MINGW_PACKAGE_PREFIX}-qt5" + "${MINGW_PACKAGE_PREFIX}-quazip" + "${MINGW_PACKAGE_PREFIX}-qtwebkit" + "${MINGW_PACKAGE_PREFIX}-python3" + ) +makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-doxygen" + "${MINGW_PACKAGE_PREFIX}-python3-sphinx" + # needed for sphinx for Python 3 to work + "${MINGW_PACKAGE_PREFIX}-python3-chardet" + ) + +prepare() { + cd "${srcdir}/${_realname}-${pkgver}" + patch -p1 -i ${srcdir}/001-fix-tulip-python-install.patch + patch -p1 -i ${srcdir}/002-fix-undo-redo-crash.patch +} + +build() { + rm -rf "${srcdir}/build-${MINGW_CHOST}" + mkdir "${srcdir}/build-${MINGW_CHOST}" + cd "${srcdir}/build-${MINGW_CHOST}" + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake \ + -G"MSYS Makefiles" \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_NEED_RESPONSE=ON \ + -DTULIP_FIXUP_BUNDLE=OFF \ + -DTULIP_USE_QT5=ON \ + -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python3.exe \ + -DTULIP_PYTHON_SYSTEM_INSTALL=ON \ + ../${_realname}-${_ver}${_pre} + + make +} + +package() { + cd "${srcdir}/build-${MINGW_CHOST}" + make DESTDIR=${pkgdir} install +}