tulip: Update to 6.0.1 and enable aarch64 builds (#23940)

This commit is contained in:
Hernan Martinez 2025-04-11 09:21:35 -06:00 committed by GitHub
parent 61f91fefb9
commit a9b7609b44
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 157 additions and 139 deletions

View File

@ -1,13 +1,15 @@
--- tulip-5.5.1/cmake/TulipPython.cmake.orig 2021-07-13 22:20:27.589248200 +0200
+++ tulip-5.5.1/cmake/TulipPython.cmake 2021-07-13 22:20:32.731368500 +0200
@@ -34,6 +34,10 @@
OUTPUT_VARIABLE TulipPythonModulesInstallDir)
STRING(REPLACE "\n" "" TulipPythonModulesInstallDir "${TulipPythonModulesInstallDir}")
diff -bur tulip-6.0.1-orig/cmake/TulipPython.cmake tulip-6.0.1/cmake/TulipPython.cmake
--- tulip-6.0.1-orig/cmake/TulipPython.cmake 2025-04-11 05:50:06.953733100 -0600
+++ tulip-6.0.1/cmake/TulipPython.cmake 2025-04-11 05:51:27.974149800 -0600
@@ -1,6 +1,10 @@
SET(PYTHON_VERSION_NO_DOT ${Python_VERSION_MAJOR}${Python_VERSION_MINOR})
SET(PYTHON_VERSION ${Python_VERSION_MAJOR}.${Python_VERSION_MINOR})
-SET(TulipPythonModulesInstallDir ${CMAKE_INSTALL_PREFIX}/${TulipLibInstallDir}/tulip/python)
+IF(MINGW)
+ SET(TulipPythonModulesInstallDir ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION}/site-packages)
+ SET(TulipPythonModulesInstallDir ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION}/site-packages)
+ELSE()
+ SET(TulipPythonModulesInstallDir ${CMAKE_INSTALL_PREFIX}/${TulipLibInstallDir}/tulip/python)
+ENDIF(MINGW)
+
ELSE(TULIP_PYTHON_SITE_INSTALL)
SET(TulipPythonModulesInstallDir ${CMAKE_INSTALL_PREFIX}/${TulipLibInstallDir}/tulip/python)
ENDIF(TULIP_PYTHON_SITE_INSTALL)
MACRO(TULIP_DISABLE_COMPILER_WARNINGS_PYTHON)
TULIP_SET_CXX_COMPILER_FLAG("-Wno-old-style-cast -Wno-deprecated-copy -Wno-unused-variable -Wno-overloaded-virtual -Wno-missing-field-initializers")

View File

@ -1,25 +1,26 @@
diff -urN tulip-5.5.1-orig/library/tulip-python/bindings/tulip-core/CMakeLists.txt tulip-5.5.1/library/tulip-python/bindings/tulip-core/CMakeLists.txt
--- tulip-5.5.1-orig/library/tulip-python/bindings/tulip-core/CMakeLists.txt 2021-01-21 06:13:08.000000000 +0800
+++ tulip-5.5.1/library/tulip-python/bindings/tulip-core/CMakeLists.txt 2021-11-22 07:21:34.066972700 +0800
@@ -1,7 +1,7 @@
ADD_CORE_FILES(.)
diff -bur tulip-6.0.1-orig/library/tulip-python/bindings/tulip-core/CMakeLists.txt tulip-6.0.1/library/tulip-python/bindings/tulip-core/CMakeLists.txt
--- tulip-6.0.1-orig/library/tulip-python/bindings/tulip-core/CMakeLists.txt 2025-04-11 05:54:01.076325400 -0600
+++ tulip-6.0.1/library/tulip-python/bindings/tulip-core/CMakeLists.txt 2025-04-11 05:58:16.550556500 -0600
@@ -101,6 +101,7 @@
IF(WIN32)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDLL_TULIP_PYTHON")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDLL_TULIP_PYTHON -DDLL_TULIP")
TARGET_COMPILE_DEFINITIONS(${LibTulipCorePythonBindingsName} PUBLIC "DLL_TULIP_PYTHON")
+ TARGET_COMPILE_DEFINITIONS(${LibTulipCorePythonBindingsName} PUBLIC "DLL_TULIP")
ENDIF(WIN32)
TARGET_COMPILE_DEFINITIONS(${LibTulipCorePythonBindingsName} PUBLIC "protected=public")
TARGET_COMPILE_DEFINITIONS(${LibTulipCorePythonBindingsName} PUBLIC "SIP_PROTECTED_IS_PUBLIC")
diff -bur tulip-6.0.1-orig/plugins/view/MatrixView/CMakeLists.txt tulip-6.0.1/plugins/view/MatrixView/CMakeLists.txt
--- tulip-6.0.1-orig/plugins/view/MatrixView/CMakeLists.txt 2025-04-11 06:00:02.282979700 -0600
+++ tulip-6.0.1/plugins/view/MatrixView/CMakeLists.txt 2025-04-11 06:01:15.986879800 -0600
@@ -21,6 +21,11 @@
QTX_ADD_RESOURCES(RCC_SRCS MatrixView.qrc)
# Visual Studio has a limit for string constants length
diff -urN tulip-5.5.1-orig/plugins/view/MatrixView/CMakeLists.txt tulip-5.5.1/plugins/view/MatrixView/CMakeLists.txt
--- tulip-5.5.1-orig/plugins/view/MatrixView/CMakeLists.txt 2021-01-21 06:13:08.000000000 +0800
+++ tulip-5.5.1/plugins/view/MatrixView/CMakeLists.txt 2021-11-22 09:32:15.277494400 +0800
@@ -1,5 +1,9 @@
INCLUDE_DIRECTORIES(${TulipCoreBuildInclude} ${TulipCoreInclude} ${TulipOGLInclude} ${TulipGUIInclude} ${OPENGL_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
ADD_LIBRARY(MatrixView-${Tulip_VERSION} SHARED ${LIB_SRCS} ${LIB_UI_HEADERS} ${LIB_MOC_SRCS} ${RCC_SRCS})
+
+IF(WIN32)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDLL_TULIP")
+ TARGET_COMPILE_DEFINITIONS(MatrixView-${Tulip_VERSION} PUBLIC "DLL_TULIP")
+ENDIF(WIN32)
+
SET(LIB_SRCS
MatrixView.cpp
PropertyValuesDispatcher.cpp
TARGET_LINK_LIBRARIES(MatrixView-${Tulip_VERSION}
PUBLIC ${LibTulipCoreName} ${LibTulipOGLName} ${LibTulipGUIName}
INTERFACE OpenGL::GL)

View File

@ -1,40 +0,0 @@
--- a/library/tulip-gui/src/PythonVersionChecker.cpp
+++ b/library/tulip-gui/src/PythonVersionChecker.cpp
@@ -25,6 +25,11 @@
#include <iostream>
+#ifdef WIN32
+#include <QFileInfo>
+#include <windows.h>
+#endif
+
using namespace tlp;
using namespace std;
@@ -34,10 +39,6 @@
// Windows specific functions
#ifdef WIN32
-#include <QFileInfo>
-
-#include <windows.h>
-
#ifndef MSYS2_PYTHON
// Check if a path is a valid Python Home, meaning it is not empty and contains the python
// executable
--- a/library/tulip-gui/src/TlpQtTools.cpp
+++ b/library/tulip-gui/src/TlpQtTools.cpp
@@ -367,7 +367,11 @@
// depending on Python.
auto pythonHome = tlp::PythonVersionChecker::getPythonHome();
if (!pythonHome.isEmpty())
- SetDllDirectory(pythonHome.toUtf8().data());
+#ifdef UNICODE
+ SetDllDirectory(pythonHome.toStdWString().data());
+#else
+ SetDllDirectory(pythonHome.toStdString().data());
+#endif
#endif
#endif
#endif

View File

@ -1,15 +0,0 @@
--- a/cmake/FindQhull.cmake
+++ b/cmake/FindQhull.cmake
@@ -13,11 +13,6 @@
SET(QHULL_MAJOR_VERSION 7)
-# prefer static qhull on windows
-IF(WIN32)
- SET(QHULL_USE_STATIC TRUE)
-ENDIF(WIN32)
-
IF(QHULL_USE_STATIC)
SET(QHULL_RELEASE_NAME qhullstatic)
SET(QHULL_DEBUG_NAME qhullstatic_d)

View File

@ -1,33 +0,0 @@
--- a/thirdparty/ftgl/FTContour.cpp
+++ b/thirdparty/ftgl/FTContour.cpp
@@ -174,7 +174,7 @@
}
-FTContour::FTContour(FT_Vector* contour, char* tags, unsigned int n)
+FTContour::FTContour(FT_Vector* contour, unsigned char* tags, unsigned int n)
{
FTPoint prev, cur(contour[(n - 1) % n]), next(contour[0]);
double olddir, dir = atan2((next - cur).Y(), (next - cur).X());
--- a/thirdparty/ftgl/FTContour.h
+++ b/thirdparty/ftgl/FTContour.h
@@ -52,7 +52,7 @@
* @param pointTags
* @param numberOfPoints
*/
- FTContour(FT_Vector* contour, char* pointTags, unsigned int numberOfPoints);
+ FTContour(FT_Vector* contour, unsigned char* pointTags, unsigned int numberOfPoints);
/**
* Destructor
--- a/thirdparty/ftgl/FTVectoriser.cpp
+++ b/thirdparty/ftgl/FTVectoriser.cpp
@@ -127,7 +127,7 @@
for(int i = 0; i < ftContourCount; ++i)
{
FT_Vector* pointList = &outline.points[startIndex];
- char* tagList = &outline.tags[startIndex];
+ unsigned char* tagList = &outline.tags[startIndex];
endIndex = outline.contours[i];
contourLength = (endIndex - startIndex) + 1;

View File

@ -0,0 +1,15 @@
diff -bur tulip-6.0.1-orig/software/crash_handling/CMakeLists.txt tulip-6.0.1/software/crash_handling/CMakeLists.txt
--- tulip-6.0.1-orig/software/crash_handling/CMakeLists.txt 2025-04-11 06:38:54.238745600 -0600
+++ tulip-6.0.1/software/crash_handling/CMakeLists.txt 2025-03-31 15:30:22.000000000 -0600
@@ -20,9 +20,9 @@
# for libbfd.a which is needed by crashandling static library
# Check if libsframe is present in the MinGW build environment
# FIND_LIBRARY(SFRAME_LIBRARY sframe PATHS ${MINGW_LIB_PATH} ${MINGW_LIB64_PATH} REQUIRED)
- FIND_LIBRARY(SFRAME_LIBRARY sframe REQUIRED)
+ #FIND_LIBRARY(SFRAME_LIBRARY sframe REQUIRED)
FIND_PACKAGE(Zstd)
- MARK_AS_ADVANCED(SFRAME_LIBRARY)
+ #MARK_AS_ADVANCED(SFRAME_LIBRARY)
ENDIF(MINGW)
ENDIF(LINUX OR MINGW)

View File

@ -0,0 +1,83 @@
diff -bur tulip-6.0.1-orig/CMakeLists.txt tulip-6.0.1/CMakeLists.txt
--- tulip-6.0.1-orig/CMakeLists.txt 2025-04-11 06:38:27.126384500 -0600
+++ tulip-6.0.1/CMakeLists.txt 2025-04-11 06:40:44.944927600 -0600
@@ -38,7 +38,7 @@
STRING(COMPARE EQUAL "${CMAKE_SIZEOF_VOID_P}" "8" IS_64BIT)
IF(IS_64BIT)
add_compile_definitions("IS_64BIT")
- IF(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
+ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64|ARM64")
add_compile_definitions("ARM64")
ELSE()
add_compile_definitions("X86_64")
diff -bur tulip-6.0.1-orig/library/tulip-core/include/tulip/SystemDefinition.h tulip-6.0.1/library/tulip-core/include/tulip/SystemDefinition.h
--- tulip-6.0.1-orig/library/tulip-core/include/tulip/SystemDefinition.h 2025-04-11 06:38:26.620060100 -0600
+++ tulip-6.0.1/library/tulip-core/include/tulip/SystemDefinition.h 2025-04-11 06:40:32.216875100 -0600
@@ -35,7 +35,7 @@
#define OS_ARCHITECTURE "x86_64"
#elif defined(__i386__) || defined(_M_IX86)
#define OS_ARCHITECTURE "x86"
-#elif defined(__arm64__)
+#elif defined(__arm64__) || defined(_M_ARM64)
#define OS_ARCHITECTURE "arm64"
#else
#define OS_ARCHITECTURE "other"
diff -bur tulip-6.0.1-orig/software/crash_handling/StackWalker.cpp tulip-6.0.1/software/crash_handling/StackWalker.cpp
--- tulip-6.0.1-orig/software/crash_handling/StackWalker.cpp 2025-04-11 06:38:26.336026400 -0600
+++ tulip-6.0.1/software/crash_handling/StackWalker.cpp 2025-04-11 06:43:41.998354300 -0600
@@ -353,16 +353,21 @@
STACKFRAME frame;
memset(&frame, 0, sizeof(frame));
-#ifndef X86_64
- DWORD machine = IMAGE_FILE_MACHINE_I386;
- frame.AddrPC.Offset = context->Eip;
- frame.AddrStack.Offset = context->Esp;
- frame.AddrFrame.Offset = context->Ebp;
-#else
+#if defined(ARM64)
+ DWORD machine = IMAGE_FILE_MACHINE_ARM64;
+ frame.AddrPC.Offset = context->Pc;
+ frame.AddrStack.Offset = context->Sp;
+ frame.AddrFrame.Offset = context->Fp;
+#elif defined(X86_64)
DWORD machine = IMAGE_FILE_MACHINE_AMD64;
frame.AddrPC.Offset = context->Rip;
frame.AddrStack.Offset = context->Rsp;
frame.AddrFrame.Offset = context->Rbp;
+#else
+ DWORD machine = IMAGE_FILE_MACHINE_I386;
+ frame.AddrPC.Offset = context->Eip;
+ frame.AddrStack.Offset = context->Esp;
+ frame.AddrFrame.Offset = context->Ebp;
#endif
frame.AddrPC.Mode = AddrModeFlat;
@@ -386,10 +391,10 @@
symbol->SizeOfStruct = (sizeof *symbol) + 255;
symbol->MaxNameLength = 254;
-#ifndef X86_64
- DWORD module_base = SymGetModuleBase(process, frame.AddrPC.Offset);
-#else
+#if defined(ARM64) || defined(X86_64)
DWORD64 module_base = SymGetModuleBase(process, frame.AddrPC.Offset);
+#else
+ DWORD module_base = SymGetModuleBase(process, frame.AddrPC.Offset);
#endif
int64_t symbolOffset = frame.AddrPC.Offset - module_base - 0x1000 - 1;
@@ -412,10 +417,10 @@
const char *func = nullptr;
-#ifndef X86_64
- DWORD dummy = 0;
-#else
+#if defined(ARM64) || defined(X86_64)
DWORD64 dummy = 0;
+#else
+ DWORD dummy = 0;
#endif
if (SymGetSymFromAddr(process, frame.AddrPC.Offset, &dummy, symbol)) {

View File

@ -3,8 +3,8 @@
_realname=tulip
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=5.7.4
pkgrel=3
pkgver=6.0.1
pkgrel=1
pkgdesc="Large graphs analysis, drawing and visualization framework (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64')
@ -19,13 +19,13 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
"${MINGW_PACKAGE_PREFIX}-qhull"
"${MINGW_PACKAGE_PREFIX}-qt6-base"
"${MINGW_PACKAGE_PREFIX}-qt6-5compat"
#"${MINGW_PACKAGE_PREFIX}-yajl"
"${MINGW_PACKAGE_PREFIX}-yajl"
"${MINGW_PACKAGE_PREFIX}-zlib")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-doxygen"
#"${MINGW_PACKAGE_PREFIX}-sip" requires sip4
"${MINGW_PACKAGE_PREFIX}-sip"
"${MINGW_PACKAGE_PREFIX}-python-sphinx"
"${MINGW_PACKAGE_PREFIX}-python-setuptools")
source=("https://sourceforge.net/projects/auber/files/tulip/${_realname}-${pkgver}/${_realname}-${pkgver}_src.tar.gz"
@ -34,19 +34,17 @@ source=("https://sourceforge.net/projects/auber/files/tulip/${_realname}-${pkgve
"003-fix-clang-omp-link.patch"
"004-fix-tulip-core-headers.patch"
"005-fix-cmakelists.patch"
"006-fix-build-with-qt6.patch"
"007-find-shared-qhull.patch"
# https://github.com/frankheckenbach/ftgl/commit/d546aefd
"008-fix-build-ftgl-with-gcc-14.patch")
sha256sums=('ef3db55a43e2d6fd801a2b210e65d93c079d3238173d19e95221d3cc49dce4b6'
'90418ac3795d100f6c550011800e129165cecf9a07ca9a619633a5b4322f5df6'
"009-clang-sframe.patch"
"010-aarch64.patch")
noextract=("${_realname}-${pkgver}_src.tar.gz")
sha256sums=('d67cfbaa8cea78272bbc52b5f09a49ffd8eef085c6f659ba9c9b9cd53e7661dd'
'95410b6c9eeaf306e250ebae56c3d46d435014e4bfa723dd464cf47f5f061b05'
'8572c14d233a9026fcc984ab9d94e1c8230eadee63ff2eaeed6ad01e5063610b'
'20bc5ed1744505ab89a4aec597e5286451d37c49241b8a784e0a51957f43dc7b'
'ace5318108e15b61202440e112ed2ac81d49dd44fa5d6cc3766f09da8299b6b5'
'32193596196c0eda8a2989bd4467a22c7daf3eaaba3d51d88f0de11b50ba543d'
'238d4e0400a17ac7d4a8277c5467a01a1a6124df3df64119d9b7d09eb583d1c5'
'3e0bc0f97ea37643cb471bf7893ac3c7803bc932abec457875a2fcaac97ed119'
'922ab11b1863f559f83c250acbe0c0379eaadb8a60178bf569f92daa406a055a')
'7f5f822b44332cbf1aa609bc970d2db298bfe779b35ad3e28e64344e0b709baa'
'3b4c997251974553111aaf5e55b041a319aeabd048e9383aca3b8778bb11b1f6'
'248298cf888c2f81bf8fdc690d67ff171115a904a30ae9f0e5524c8a286ed1a2')
apply_patch_with_msg() {
for _patch in "$@"
@ -57,16 +55,23 @@ apply_patch_with_msg() {
}
prepare() {
tar -xf "${_realname}-${pkgver}_src.tar.gz" || tar -xf "${_realname}-${pkgver}_src.tar.gz"
cd "${srcdir}/${_realname}-${pkgver}"
apply_patch_with_msg \
001-fix-tulip-python-install.patch \
002-fix-template-instatiation.patch \
003-fix-clang-omp-link.patch \
004-fix-tulip-core-headers.patch \
005-fix-cmakelists.patch \
006-fix-build-with-qt6.patch \
007-find-shared-qhull.patch \
008-fix-build-ftgl-with-gcc-14.patch
005-fix-cmakelists.patch
if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then
apply_patch_with_msg \
009-clang-sframe.patch
fi
apply_patch_with_msg \
010-aarch64.patch
}
build() {
@ -79,10 +84,11 @@ build() {
_extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
fi
if [[ ${CC} == gcc ]]; then
CXXFLAGS+=" -Wno-template-id-cdtor"
if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then
CXXFLAGS+=" -Wno-dtor-name"
_extra_config+=("-DCLANG=ON")
else
CXXFLAGS+=" -Wno-dtor-name"
CXXFLAGS+=" -Wno-template-id-cdtor"
fi
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
@ -94,7 +100,6 @@ build() {
-DCMAKE_SYSTEM_IGNORE_PATH=/usr/lib \
-DTULIP_FIXUP_BUNDLE=OFF \
-DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python3.exe \
-DTULIP_PYTHON_SITE_INSTALL=ON \
-DTULIP_USE_QT6=ON \
../${_realname}-${pkgver}