From 36c697cb608e4b11369decbd45dbd1fa8a48c4ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Tue, 26 Aug 2025 19:18:29 +0300 Subject: [PATCH] Blender deps (#25278) * clipper2: New package * manifold: New package * Stop trying find python via registry * Fix dependency name * Add more fixes to skip system python * Fix cmake variable name --- mingw-w64-clipper2/PKGBUILD | 50 ++++++++++++++ mingw-w64-manifold/0001-build-mingw.patch | 28 ++++++++ mingw-w64-manifold/PKGBUILD | 84 +++++++++++++++++++++++ 3 files changed, 162 insertions(+) create mode 100644 mingw-w64-clipper2/PKGBUILD create mode 100644 mingw-w64-manifold/0001-build-mingw.patch create mode 100644 mingw-w64-manifold/PKGBUILD diff --git a/mingw-w64-clipper2/PKGBUILD b/mingw-w64-clipper2/PKGBUILD new file mode 100644 index 0000000000..658b3aab71 --- /dev/null +++ b/mingw-w64-clipper2/PKGBUILD @@ -0,0 +1,50 @@ +# Maintainer: Alexey Pavlov + +_realname=clipper2 +pkgbase=mingw-w64-${_realname} +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgver=1.5.4 +pkgrel=1 +pkgdesc="Polygon Clipping and Offsetting library (mingw-w64)" +arch=('any') +mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64') +url="https://github.com/AngusJohnson/Clipper2" +license=('BSL-1.0') +depends=("${MINGW_PACKAGE_PREFIX}-cc-libs") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja") +source=("https://github.com/AngusJohnson/Clipper2/archive/refs/tags/Clipper2_${pkgver}.tar.gz") +sha256sums=('9d8a35a29d04cd1b7b45f542c0ba48015feece1210036ea9e4efaad3140af4b0') + +build() { + mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" + + declare -a _extra_config + if check_option "debug" "n"; then + _extra_config+=("-DCMAKE_BUILD_TYPE=Release") + else + _extra_config+=("-DCMAKE_BUILD_TYPE=Debug") + fi + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake.exe -Wno-dev \ + -G"Ninja" \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DBUILD_SHARED_LIBS=ON \ + -DCLIPPER2_TESTS=OFF \ + -DCLIPPER2_EXAMPLES=OFF \ + -DCLIPPER2_UTILS=OFF \ + "${_extra_config[@]}" \ + "../Clipper2-Clipper2_${pkgver}/CPP" + + ${MINGW_PREFIX}/bin/cmake --build . +} + +package() { + cd "${srcdir}/build-${MSYSTEM}" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install . + + install -Dm644 "${srcdir}"/Clipper2-Clipper2_${pkgver}/LICENSE \ + "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE +} diff --git a/mingw-w64-manifold/0001-build-mingw.patch b/mingw-w64-manifold/0001-build-mingw.patch new file mode 100644 index 0000000000..3b1b41074b --- /dev/null +++ b/mingw-w64-manifold/0001-build-mingw.patch @@ -0,0 +1,28 @@ +--- manifold-3.2.1/bindings/python/CMakeLists.txt.orig 2025-08-06 09:14:41.000000000 +0300 ++++ manifold-3.2.1/bindings/python/CMakeLists.txt 2025-08-26 14:48:49.652043700 +0300 +@@ -28,6 +28,13 @@ + ) + + add_custom_command( ++ TARGET manifold3d ++ POST_BUILD ++ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/src/libmanifold.dll ${CMAKE_CURRENT_BINARY_DIR}/. ++ VERBATIM ++ ) ++ ++ add_custom_command( + TARGET manifold3d_stub + POST_BUILD + COMMAND +@@ -66,9 +73,9 @@ + target_include_directories(manifold3d PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) + + if(SKBUILD) +- set(MANIFOLD_PYBIND_LIBDIR ${SKBUILD_PLATLIB_DIR}) ++ set(MANIFOLD_PYBIND_LIBDIR ${PY_SITEARCH}) + else() +- set(MANIFOLD_PYBIND_LIBDIR ${Python_SITEARCH}) ++ set(MANIFOLD_PYBIND_LIBDIR ${PY_SITEARCH}) + endif() + + install( diff --git a/mingw-w64-manifold/PKGBUILD b/mingw-w64-manifold/PKGBUILD new file mode 100644 index 0000000000..668a9623b9 --- /dev/null +++ b/mingw-w64-manifold/PKGBUILD @@ -0,0 +1,84 @@ +# Maintainer: Alexey Pavlov + +_realname=manifold +pkgbase=mingw-w64-${_realname} +pkgname=(${MINGW_PACKAGE_PREFIX}-${_realname}) +provides=(${MINGW_PACKAGE_PREFIX}-${_realname}-git) +conflicts=(${MINGW_PACKAGE_PREFIX}-${_realname}-git) +replaces=(${MINGW_PACKAGE_PREFIX}-${_realname}-git) +pkgver=3.2.1 +pkgrel=1 +pkgdesc="Geometry library for topological robustness (mingw-w64)" +arch=('any') +mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64') +url="https://github.com/elalish/manifold" +license=('Apache-2.0') +makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-nanobind" + "${MINGW_PACKAGE_PREFIX}-pybind11" + "${MINGW_PACKAGE_PREFIX}-python-setuptools" + "${MINGW_PACKAGE_PREFIX}-tbb" + 'git') +depends=("${MINGW_PACKAGE_PREFIX}-cc-libs" + "${MINGW_PACKAGE_PREFIX}-clipper2" + "${MINGW_PACKAGE_PREFIX}-python") +source=("https://github.com/elalish/manifold/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz" + 0001-build-mingw.patch) +sha256sums=('67c4e0cb836f9d6dfcb7169e9d19a7bb922c4d4bfa1a9de9ecbc5d414018d6ad' + '84fd0bd9193d2051d72db3e33c4a215d2cabe0b5c788e2790b23c12f0a1f7dd8') + +apply_patch_with_msg() { + for _patch in "$@" + do + msg2 "Applying ${_patch}" + patch -Nbp1 -i "${srcdir}/${_patch}" + done +} + +prepare() { + cd ${_realname}-${pkgver} + + apply_patch_with_msg \ + 0001-build-mingw.patch +} + +build() { + mkdir -p "${srcdir}"/build-${MSYSTEM} && cd "${srcdir}"/build-${MSYSTEM} + + declare -a extra_config + if check_option "debug" "n"; then + extra_config+=("-DCMAKE_BUILD_TYPE=Release") + else + extra_config+=("-DCMAKE_BUILD_TYPE=Debug") + fi + + local _pysite=$(cygpath -u $(${MINGW_PREFIX}/bin/python -c "import sysconfig; print(sysconfig.get_path('platlib'))")) + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=;-DPY_SITEARCH=" \ + ${MINGW_PREFIX}/bin/cmake \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + "${extra_config[@]}" \ + -DBUILD_SHARED_LIBS=ON \ + -DMANIFOLD_PYBIND=ON \ + -DMANIFOLD_PAR=ON \ + -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe \ + -DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe \ + -DPython3_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe \ + -DPython3_ROOT_DIR=${MINGW_PREFIX} \ + -DPython3_FIND_REGISTRY=NEVER \ + -DPY_SITEARCH=${_pysite} \ + ../${_realname}-${pkgver} + + ${MINGW_PREFIX}/bin/cmake --build . +} + +package() { + cd "${srcdir}"/build-${MSYSTEM} + + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install . + + install -Dm644 "${srcdir}"/${_realname}-${pkgver}/LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" +}