commit:     4f513160ae2360f02d75937a98a5e3a3cdf5bf49
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 24 20:56:51 2024 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Nov 25 15:30:00 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4f513160

media-gfx/freecad: Sync 9999 with 1.0.0-r1 changes

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 media-gfx/freecad/freecad-9999.ebuild | 228 ++++++++++++++--------------------
 1 file changed, 92 insertions(+), 136 deletions(-)

diff --git a/media-gfx/freecad/freecad-9999.ebuild 
b/media-gfx/freecad/freecad-9999.ebuild
index 037e0bf473f5..bf541913efb3 100644
--- a/media-gfx/freecad/freecad-9999.ebuild
+++ b/media-gfx/freecad/freecad-9999.ebuild
@@ -26,20 +26,29 @@ fi
 # examples are licensed CC-BY-SA (without note of specific version)
 LICENSE="LGPL-2 CC-BY-SA-4.0"
 SLOT="0"
-IUSE="debug designer +gui +qt6 test"
-
-FREECAD_EXPERIMENTAL_MODULES="cloud netgen pcl"
-FREECAD_STABLE_MODULES="addonmgr fem idf image inspection material
-       openscad part-design path points raytracing robot show smesh
-       surface techdraw tux"
+IUSE="debug designer +gui netgen pcl qt5 +smesh spacenav test X"
+# Modules are found in src/Mod/ and their options defined in:
+# cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake
+# To get their dependencies:
+# 'grep REQUIRES_MODS cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake'
+IUSE+=" addonmgr +bim cam cloud fem idf inspection +mesh openscad points 
reverse robot surface +techdraw"
 
-for module in ${FREECAD_STABLE_MODULES}; do
-       IUSE="${IUSE} +${module}"
-done
-for module in ${FREECAD_EXPERIMENTAL_MODULES}; do
-       IUSE="${IUSE} ${module}"
-done
-unset module
+REQUIRED_USE="
+       ${PYTHON_REQUIRED_USE}
+       bim? ( mesh )
+       cam? ( mesh )
+       gui? ( bim )
+       designer? ( gui )
+       fem? ( smesh )
+       inspection? ( points )
+       mesh? ( smesh )
+       openscad? ( mesh )
+       python_single_target_python3_12? ( gui? ( !qt5 ) )
+       reverse? ( mesh points )
+       test? ( techdraw )
+"
+# Draft Workbench needs BIM
+# There is no py3.12 support planned for pyside2
 
 RESTRICT="!test? ( test )"
 
@@ -47,43 +56,40 @@ RDEPEND="
        ${PYTHON_DEPS}
        dev-cpp/gtest
        dev-cpp/yaml-cpp
-       dev-libs/OpenNI2[opengl(+)]
        dev-libs/boost:=
        dev-libs/libfmt:=
-       dev-libs/libspnav[X]
        dev-libs/xerces-c[icu]
-       dev-ruby/asciidoctor
-       !qt6? (
+       qt5? (
                dev-qt/qtconcurrent:5
                dev-qt/qtcore:5
                dev-qt/qtnetwork:5
                dev-qt/qtxml:5
                dev-qt/qtxmlpatterns:5
        )
-       qt6? (
+       !qt5? (
                dev-qt/qtbase:6[concurrent,network,xml]
        )
        media-libs/freetype
-       media-libs/qhull:=
-       sci-libs/hdf5:=[fortran,zlib]
-       >=sci-libs/med-4.0.0-r1
-       sci-libs/opencascade:=[json,vtk]
-       sci-libs/orocos_kdl:=
+       sci-libs/opencascade:=[json]
        sys-libs/zlib
-       virtual/libusb:1
+       $(python_gen_cond_dep '
+               dev-python/numpy[${PYTHON_USEDEP}]
+               dev-python/pybind11[${PYTHON_USEDEP}]
+               dev-python/pyyaml[${PYTHON_USEDEP}]
+       ')
        cloud? (
                dev-libs/openssl:=
                net-misc/curl
        )
        fem? (
-               !qt6? ( sci-libs/vtk:=[qt5,rendering] )
-               qt6? ( sci-libs/vtk:=[-qt5,qt6,rendering] )
+               sci-libs/vtk:=
+               $(python_gen_cond_dep 'dev-python/ply[${PYTHON_USEDEP}]')
        )
        gui? (
                >=media-libs/coin-4.0.0
                virtual/glu
                virtual/opengl
-               !qt6? (
+               qt5? (
                        dev-qt/designer:5
                        dev-qt/qtgui:5
                        dev-qt/qtopengl:5
@@ -91,83 +97,48 @@ RDEPEND="
                        dev-qt/qtsvg:5
                        dev-qt/qtwidgets:5
                        dev-qt/qtx11extras:5
-                       pcl? ( sci-libs/pcl[qt5] )
                        $(python_gen_cond_dep '
                                dev-python/matplotlib[${PYTHON_USEDEP}]
                                >=dev-python/pivy-0.6.5[${PYTHON_USEDEP}]
-                               
dev-python/pyside2:=[gui,svg,webchannel,${PYTHON_USEDEP}]
+                               dev-python/pyside2:=[gui,svg,${PYTHON_USEDEP}]
                                dev-python/shiboken2:=[${PYTHON_USEDEP}]
                        ' python3_{10..11} )
                )
-               qt6? (
-                       designer? ( dev-qt/qttools:6[designer] )
-                       dev-qt/qt5compat:6
-                       dev-qt/qttools:6[widgets]
+               !qt5? (
                        dev-qt/qtbase:6[gui,opengl,widgets]
                        dev-qt/qtsvg:6
-                       pcl? ( sci-libs/pcl[-qt5,qt6(-)] )
+                       dev-qt/qttools:6[designer?,widgets]
                        $(python_gen_cond_dep '
                                dev-python/matplotlib[${PYTHON_USEDEP}]
                                >=dev-python/pivy-0.6.5[${PYTHON_USEDEP}]
-                               
dev-python/pyside6:=[gui,svg,webchannel,${PYTHON_USEDEP}]
+                               
dev-python/pyside6:=[designer,gui,svg,${PYTHON_USEDEP}]
                                dev-python/shiboken6:=[${PYTHON_USEDEP}]
                        ' )
                )
+               spacenav? ( dev-libs/libspnav[X?] )
        )
        netgen? ( media-gfx/netgen[opencascade] )
-       openscad? ( media-gfx/openscad )
-       pcl? ( sci-libs/pcl:=[opengl,openni2,vtk] )
+       openscad? ( $(python_gen_cond_dep 'dev-python/ply[${PYTHON_USEDEP}]') )
+       pcl? ( sci-libs/pcl:= )
        smesh? (
-               !qt6? ( sci-libs/vtk:=[qt5] )
-               qt6? ( sci-libs/vtk:=[-qt5,qt6] )
+               sci-libs/hdf5:=[zlib]
+               >=sci-libs/med-4.0.0-r1
+               sci-libs/vtk:=
        )
-       $(python_gen_cond_dep '
-               dev-python/numpy[${PYTHON_USEDEP}]
-               dev-python/pybind11[${PYTHON_USEDEP}]
-               addonmgr? ( dev-python/gitpython[${PYTHON_USEDEP}] )
-               fem? ( dev-python/ply[${PYTHON_USEDEP}] )
-       ')
 "
 DEPEND="${RDEPEND}
        >=dev-cpp/eigen-3.3.1:3
        dev-cpp/ms-gsl
-       test? (
-               $(python_gen_cond_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')
-               !qt6? ( dev-qt/qttest:5 )
-       )
+       test? ( qt5? ( dev-qt/qttest:5 ) )
 "
 BDEPEND="
-       app-text/dos2unix
        dev-lang/swig
        test? (
-               $(python_gen_cond_dep 'dev-python/pyyaml[${PYTHON_USEDEP}]')
-               !qt6? ( dev-qt/qttest:5 )
+               qt5? ( dev-qt/qttest:5 )
                dev-cpp/gtest
        )
 "
 
-# To get required dependencies:
-# 'grep REQUIRES_MODS cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake'
-# We set the following requirements by default:
-# arch, draft, drawing, import, mesh, part, qt5, sketcher, spreadsheet, start, 
web.
-#
-# Additionally, we auto-enable mesh_part, flat_mesh and smesh
-# Fem actually needs smesh, but as long as we don't have a smesh package, we 
enable
-# smesh through the mesh USE flag. Note however, the fem<-smesh dependency 
isn't
-# reflected by the REQUIRES_MODS macro, but at
-# cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake:187.
-#
-# The increase in auto-enabled workbenches is due to their need in parts of the
-# test suite when compiled with a minimal set of USE flags.
-REQUIRED_USE="
-       ${PYTHON_REQUIRED_USE}
-       designer? ( gui )
-       inspection? ( points )
-       path? ( robot )
-       python_single_target_python3_12? ( gui? ( qt6 ) )
-"
-# There is no py3.12 support planned for pyside2
-
 PATCHES=(
        "${FILESDIR}"/${PN}-9999-Gentoo-specific-don-t-check-vcs.patch
        
"${FILESDIR}"/${PN}-0.21.0-0001-Gentoo-specific-disable-ccache-usage.patch
@@ -181,15 +152,12 @@ CHECKREQS_DISK_BUILD="2G"
 pkg_setup() {
        check-reqs_pkg_setup
        python-single-r1_pkg_setup
-       [[ -z ${CASROOT} ]] && die "\${CASROOT} not set, please run eselect 
opencascade"
 }
 
 src_prepare() {
        # Fix desktop file
        sed -e 's/Exec=FreeCAD/Exec=freecad/' -i 
src/XDGData/org.freecad.FreeCAD.desktop || die
 
-       find "${S}" -type f -exec dos2unix -q {} \; || die "failed to convert 
to unix line endings"
-
        cmake_src_prepare
 }
 
@@ -203,48 +171,50 @@ src_configure() {
        append-ldflags -Wl,--copy-dt-needed-entries
 
        local mycmakeargs=(
+               -DBUILD_DESIGNER_PLUGIN=$(usex designer)
+               -DBUILD_FORCE_DIRECTORY=ON                              # force 
building in a dedicated directory
+               -DBUILD_GUI=$(usex gui)
+               -DBUILD_SMESH=$(usex smesh)
+               -DBUILD_VR=OFF
+               -DBUILD_WITH_CONDA=OFF
+
+               # Modules
                -DBUILD_ADDONMGR=$(usex addonmgr)
-               -DBUILD_ARCH=ON
-               -DBUILD_ASSEMBLY=OFF                    # Requires OndselSolver
+               -DBUILD_ASSEMBLY=OFF                                    # 
Requires OndselSolver
+               -DBUILD_BIM=$(usex bim)
+               -DBUILD_CAM=$(usex cam)
                -DBUILD_CLOUD=$(usex cloud)
-               -DBUILD_COMPLETE=OFF                                    # 
deprecated
                -DBUILD_DRAFT=ON
-               -DBUILD_DESIGNER_PLUGIN=$(usex designer)
-               -DBUILD_ENABLE_CXX_STD:STRING="C++17"   # needed for current 
git master
+               # see below for DRAWING
                -DBUILD_FEM=$(usex fem)
-               -DBUILD_FEM_NETGEN=$(usex netgen)
-               -DBUILD_FLAT_MESH=ON
-               -DBUILD_FORCE_DIRECTORY=ON                              # force 
building in a dedicated directory
-               -DBUILD_FREETYPE=ON                                             
# automagic dep
-               -DBUILD_GUI=$(usex gui)
+               -DBUILD_FEM_NETGEN=$(usex fem $(usex netgen))
+               -DBUILD_FLAT_MESH=$(usex mesh)                  # a submodule 
of MeshPart
+               -DBUILD_HELP=ON
                -DBUILD_IDF=$(usex idf)
-               -DBUILD_IMAGE=$(usex image)
                -DBUILD_IMPORT=ON                                               
# import module for various file formats
                -DBUILD_INSPECTION=$(usex inspection)
-               -DBUILD_JTREADER=OFF                                    # code 
has been removed upstream, but option is still there
-               -DBUILD_MATERIAL=$(usex material)
-               -DBUILD_MESH=ON
-               -DBUILD_MESH_PART=ON
+               -DBUILD_JTREADER=OFF                                    # uses 
an old proprietary library
+               -DBUILD_MATERIAL=ON
+               -DBUILD_MEASURE=ON
+               -DBUILD_MESH=$(usex mesh)
+               -DBUILD_MESH_PART=$(usex mesh)
                -DBUILD_OPENSCAD=$(usex openscad)
                -DBUILD_PART=ON
-               -DBUILD_PART_DESIGN=$(usex part-design)
-               -DBUILD_PATH=$(usex path)
+               -DBUILD_PART_DESIGN=ON
+               -DBUILD_PLOT=ON
                -DBUILD_POINTS=$(usex points)
-               -DBUILD_RAYTRACING=$(usex raytracing)
-               -DBUILD_REVERSEENGINEERING=OFF                  # currently 
only an empty sandbox
+               -DBUILD_REVERSEENGINEERING=$(usex reverse)
                -DBUILD_ROBOT=$(usex robot)
-               -DBUILD_SHOW=$(usex show)
+               -DBUILD_SANDBOX=OFF
+               -DBUILD_SHOW=$(usex gui)
                -DBUILD_SKETCHER=ON                                             
# needed by draft workspace
-               -DBUILD_SMESH=$(usex smesh)
                -DBUILD_SPREADSHEET=ON
                -DBUILD_START=ON
                -DBUILD_SURFACE=$(usex surface)
                -DBUILD_TECHDRAW=$(usex techdraw)
                -DBUILD_TEST=ON                                                 
# always build test workbench for run-time testing
-               -DBUILD_TUX=$(usex tux)
-               -DBUILD_VR=OFF
+               -DBUILD_TUX=$(usex gui)
                -DBUILD_WEB=ON                                                  
# needed by start workspace
-               -DBUILD_WITH_CONDA=OFF
 
                -DCMAKE_INSTALL_DATADIR=/usr/share/${PN}/data
                -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/${PF}
@@ -253,7 +223,6 @@ src_configure() {
 
                -DFREECAD_BUILD_DEBIAN=OFF
 
-               -DFREECAD_USE_EXTERNAL_KDL=ON
                -DFREECAD_USE_EXTERNAL_SMESH=OFF                # no package in 
Gentoo
                -DFREECAD_USE_EXTERNAL_ZIPIOS=OFF               # doesn't work 
yet, also no package in Gentoo tree
                -DFREECAD_USE_FREETYPE=ON
@@ -285,7 +254,7 @@ src_configure() {
                )
        fi
 
-       if use qt6; then
+       if ! use qt5; then
                mycmakeargs+=(
                        -DFREECAD_QT_MAJOR_VERSION=6
                        -DFREECAD_QT_VERSION=6
@@ -315,18 +284,18 @@ src_configure() {
 # We use the FreeCADCmd binary instead of the FreeCAD binary here
 # for two reasons:
 # 1. It works out of the box with USE=-gui as well, not needing a guard
-# 2. We don't need virtualx.eclass and it's dependencies
-# The exported environment variables are needed, so freecad does know
-# where to save it's temporary files, and where to look and write it's
-# configuration. Without those, there are sandbox violation, when it
+# 2. We don't need virtualx.eclass and its dependencies
+# The environment variables are needed, so that FreeCAD knows
+# where to save its temporary files, and where to look and write its
+# configuration. Without those, there is a sandbox violation, when it
 # tries to create /var/lib/portage/home/.FreeCAD directory.
 src_test() {
-       pushd "${BUILD_DIR}" > /dev/null || die
-       export FREECAD_USER_HOME="${HOME}"
-       export FREECAD_USER_DATA="${T}"
-       export FREECAD_USER_TEMP="${T}"
-       nonfatal ./bin/FreeCADCmd --run-test 0
-       popd > /dev/null || die
+       cd "${BUILD_DIR}" || die
+
+       local -x FREECAD_USER_HOME="${HOME}"
+       local -x FREECAD_USER_DATA="${T}"
+       local -x FREECAD_USER_TEMP="${T}"
+       ./bin/FreeCADCmd --run-test 0 --set-config AppHomePath="${BUILD_DIR}/" 
|| die
 }
 
 src_install() {
@@ -338,7 +307,7 @@ src_install() {
                newbin - freecad <<- _EOF_
                #!/bin/sh
                # https://github.com/coin3d/coin/issues/451
-               : \${QT_QPA_PLATFORM:=xcb}
+               : "\${QT_QPA_PLATFORM:=xcb}"
                export QT_QPA_PLATFORM
                exec /usr/$(get_libdir)/${PN}/bin/FreeCAD "\${@}"
                _EOF_
@@ -359,30 +328,17 @@ pkg_postinst() {
        einfo "You can load a lot of additional workbenches using the 
integrated"
        einfo "AddonManager."
 
-       # ToDo: check opencv, pysolar (::science), elmerfem (::science)
-       #               ifc++, ifcopenshell, z88 (no pkgs), calculix-ccx 
(::waebbl)
        einfo "There are a lot of additional tools, for which FreeCAD has 
builtin"
        einfo "support. Some of them are available in Gentoo. Take a look at"
-       einfo 
"https://wiki.freecadweb.org/Installing#External_software_supported_by_FreeCAD";
-       optfeature_header "Computational utilities"
-       optfeature "BLAS library" sci-libs/openblas
-       optfeature "Statistical computation with Python" dev-python/pandas
-       optfeature "Use scientific computation with Python" dev-python/scipy
-       optfeature "Use symbolic math with Python" dev-python/sympy
-       optfeature_header "Imaging, Plotting and Rendering utilities"
-       optfeature "Dependency graphs" media-gfx/graphviz
-       optfeature "PBR Rendering" media-gfx/povray
-       optfeature_header "Import / Export"
-       optfeature "Interact with git repositories" dev-python/gitpython
-       optfeature "Work with COLLADA documents" dev-python/pycollada
-       optfeature "YAML importer and emitter" dev-python/pyyaml
-       optfeature "Importing and exporting 2D AutoCAD DWG files" 
media-gfx/libredwg
-       optfeature "Importing and exporting geospatial data formats" 
sci-libs/gdal
-       optfeature "Working with projection data" sci-libs/proj
-       optfeature_header "Meshing and FEM"
-       optfeature "FEM mesh generator" sci-libs/gmsh
-       optfeature "Triangulating meshes" sci-libs/gts
-       optfeature "Visualization" sci-visualization/paraview
+       einfo "https://wiki.freecad.org/Installing_additional_components";
+       optfeature_header "External programs used by FreeCAD"
+       optfeature "dependency graphs" media-gfx/graphviz
+       optfeature "importing and exporting 2D AutoCAD DWG files" 
media-gfx/libredwg
+       optfeature "importing OpenSCAD files, Mesh booleans" media-gfx/openscad
+       use bim && optfeature "working with COLLADA documents" 
dev-python/pycollada
+       if use fem || use mesh; then
+               optfeature "mesh generation" sci-libs/gmsh
+       fi
 }
 
 pkg_postrm() {

Reply via email to