From 4e1ce165daf04cd112e7ff8c9673e40eea7b0573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D9=85=D9=87=D8=AF=D9=8A=20=D8=B4=D9=8A=D9=86=D9=88=D9=86?= =?UTF-8?q?=20=28Mehdi=20Chinoune=29?= Date: Thu, 31 Aug 2023 11:17:25 +0100 Subject: [PATCH] [new-package] freecad 0.21.1 --- .../001-fix-build-on-mingw.patch | 33 +++++++ mingw-w64-freecad/PKGBUILD | 94 +++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 mingw-w64-freecad/001-fix-build-on-mingw.patch create mode 100644 mingw-w64-freecad/PKGBUILD diff --git a/mingw-w64-freecad/001-fix-build-on-mingw.patch b/mingw-w64-freecad/001-fix-build-on-mingw.patch new file mode 100644 index 0000000000..86caea8a66 --- /dev/null +++ b/mingw-w64-freecad/001-fix-build-on-mingw.patch @@ -0,0 +1,33 @@ +--- a/cMake/FreeCAD_Helpers/ConfigureCMakeVariables.cmake ++++ b/cMake/FreeCAD_Helpers/ConfigureCMakeVariables.cmake +@@ -2,7 +2,7 @@ + # ================================================================================ + # Output directories for install target + +- if(WIN32) ++ if(MSVC) + set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "Installation root directory") + set(CMAKE_INSTALL_BINDIR bin CACHE PATH "Output directory for executables") + set(CMAKE_INSTALL_DATADIR data CACHE PATH "Output directory for data and resource files") +--- a/cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake ++++ b/cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake +@@ -75,7 +75,7 @@ + if(NOT FREECAD_USE_EXTERNAL_SMESH) + find_package(MEDFile REQUIRED) + # See https://www.hdfgroup.org/HDF5/release/cmakebuild.html +- if (WIN32) ++ if (MSVC) + find_package(HDF5 COMPONENTS NO_MODULE REQUIRED static) + else() + find_package(PkgConfig) +--- a/src/App/PropertyExpressionEngine.h ++++ b/src/App/PropertyExpressionEngine.h +@@ -179,7 +179,7 @@ + using DiGraph = boost::adjacency_list< boost::listS, boost::vecS, boost::directedS >; + using Edge = std::pair; + // Note: use std::map instead of unordered_map to keep the binding order stable +- #if defined(FC_OS_MACOSX) || defined(FC_OS_BSD) ++ #if defined(FC_OS_MACOSX) || defined(FC_OS_BSD) || defined(_LIBCPP_VERSION) + using ExpressionMap = std::map; + #else + using ExpressionMap = std::map; diff --git a/mingw-w64-freecad/PKGBUILD b/mingw-w64-freecad/PKGBUILD new file mode 100644 index 0000000000..3bf7fdde19 --- /dev/null +++ b/mingw-w64-freecad/PKGBUILD @@ -0,0 +1,94 @@ +# Contributor: Mehdi Chinoune + +_realname=freecad +pkgbase=mingw-w64-${_realname} +pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") +pkgver=0.21.1 +pkgrel=1 +pkgdesc="Free and Opensource multiplatform 3D parametric modeler (mingw-w64)" +arch=('any') +mingw_arch=('clang64') +url='https://freecadweb.org/' +license=('spdx:GPL-2.0-or-later') +depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" + "${MINGW_PACKAGE_PREFIX}-boost" + "${MINGW_PACKAGE_PREFIX}-coin" + "${MINGW_PACKAGE_PREFIX}-fmt" + "${MINGW_PACKAGE_PREFIX}-freetype" + "${MINGW_PACKAGE_PREFIX}-med" + "${MINGW_PACKAGE_PREFIX}-opencascade" + "${MINGW_PACKAGE_PREFIX}-python" + "${MINGW_PACKAGE_PREFIX}-pyside6" + "${MINGW_PACKAGE_PREFIX}-qt6-base" + "${MINGW_PACKAGE_PREFIX}-qt6-svg" + "${MINGW_PACKAGE_PREFIX}-xerces-c" + "${MINGW_PACKAGE_PREFIX}-vtk" + "${MINGW_PACKAGE_PREFIX}-zlib") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-eigen3" + "${MINGW_PACKAGE_PREFIX}-python-pivy" + "${MINGW_PACKAGE_PREFIX}-python-matplotlib" + "${MINGW_PACKAGE_PREFIX}-qt6-tools" + "${MINGW_PACKAGE_PREFIX}-swig" + "${MINGW_PACKAGE_PREFIX}-utf8cpp") +source=("${_realname}-${pkgver}.tar.gz::https://github.com/FreeCAD/FreeCAD/archive/${pkgver}.tar.gz" + "001-fix-build-on-mingw.patch") +sha256sums=('e9b1fd0323f101268c7f3be52db42e4a29222f2e306ae6c4a6fc309cb418d35a' + 'cad8607f31c37f5c21b814e86d42e60d30f2082098383ffa1ee63d6bc24d007f') + +apply_patch_with_msg() { + for _patch in "$@" + do + msg2 "Applying $_patch" + patch -Nbp1 -i "${srcdir}/$_patch" + done +} + +prepare() { + cd "${srcdir}"/${_realname}-${pkgver} + apply_patch_with_msg \ + 001-fix-build-on-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 + + if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-* ]]; then + _extra_config+=("-DBUILD_FEM=OFF" "-DBUILD_SMESH=OFF" "-DBUILD_PATH=OFF" "-DBUILD_TECHDRAW=OFF") + fi + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=;" \ + "${MINGW_PREFIX}"/bin/cmake.exe -Wno-dev \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \ + -DFREECAD_QT_VERSION="6" \ + -DBUILD_TEST=OFF \ + -DBUILD_WEB=OFF \ + -DENABLE_DEVELOPER_TESTS=OFF \ + -DPython3_EXECUTABLE=${MINGW_PREFIX}/bin/python \ + -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python \ + "${_extra_config[@]}" \ + ../${_realname}-${pkgver} + + "${MINGW_PREFIX}"/bin/cmake.exe --build . +} + +package() { + cd "${srcdir}/build-${MSYSTEM}" + + DESTDIR="${pkgdir}" "${MINGW_PREFIX}"/bin/cmake.exe --install . + + install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" + + MSYS2_ARG_CONV_EXCL="-d" \ + python -m compileall -o 0 -o 1 -q -d"${MINGW_PREFIX}" "${pkgdir}${MINGW_PREFIX}" +}