summaryrefslogtreecommitdiff
path: root/media-gfx/freecad
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2025-01-11 06:41:28 +0000
committerV3n3RiX <venerix@koprulu.sector>2025-01-11 06:41:28 +0000
commitf1634517e73f2faf342a366354c3e0f2edb45952 (patch)
treeae3c632ec3576f8d57b3acd5e1aba5643f0f6d9b /media-gfx/freecad
parentf9d8ddaae80afb8fa0924cd3f769f9b37dd373e1 (diff)
gentoo auto-resync : 11:01:2025 - 06:41:28
Diffstat (limited to 'media-gfx/freecad')
-rw-r--r--media-gfx/freecad/Manifest5
-rw-r--r--media-gfx/freecad/freecad-1.0.0-r3.ebuild305
-rw-r--r--media-gfx/freecad/freecad-9999.ebuild14
-rw-r--r--media-gfx/freecad/metadata.xml4
4 files changed, 322 insertions, 6 deletions
diff --git a/media-gfx/freecad/Manifest b/media-gfx/freecad/Manifest
index aa3b7f9da86f..5f4382d7d07d 100644
--- a/media-gfx/freecad/Manifest
+++ b/media-gfx/freecad/Manifest
@@ -4,5 +4,6 @@ AUX freecad-9999-Gentoo-specific-don-t-check-vcs.patch 322 BLAKE2B 431b69d749c56
AUX freecad-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch 469 BLAKE2B 23e56fbc49b3c3d5ede85e6ec15d26c88c93590fce105e0b75e8b0bd3fee125c500cd59d8db0144c610edb371df318396e056333ec7a411f7647b38d18006efc SHA512 82737af95603ff1f667bf49ee43b85b411eeeb5fd9b577ad7fca6e02bcbfda5c3bbb6c70386e5f69d2181d6226574f82cb68b7e66dfe8f4bb14d946f594582cf
DIST freecad-1.0.0.tar.gz 91599325 BLAKE2B 65540eb42e7d508456c9edbf2122e0f288708c33e6d00d3c8c45550e7a614f658f91ba25978a66819bc094b7138aab72a89c0172d0841be1ff798ade5a8bdc64 SHA512 afc1079ea04fd5bb8135f8ad1012d9e4e05c8839dd0a4e00253eada58fe018f445c1200d1ca7ac9f268644c946cbf55b7b313dc3d6bd010f9da3a3334103b7db
EBUILD freecad-1.0.0-r2.ebuild 8778 BLAKE2B 4ebe1a3df409e68328d89dd95120441324a5587a9eb85e110de83c70c161688cc5dfd33eea393ee6b70fb2a561048d78b3b4ac7c0bbd7f060f88edad30fce183 SHA512 d86c72823c9a61fef30fc58e8adf5c8c7ee45d4de0c8c4959c2f785b6d1cd48f1ecee1b6d38f4af34077683e5046292676166df57bc6fe14e76920ec8db76f57
-EBUILD freecad-9999.ebuild 8691 BLAKE2B a29795687e54446fa908ee5273b8723c5a4848ae29edda76d4466a1fc9a2b50503c95beaac6a15a14ee43fd1b28be8e1ba9e0aa5b76532667e3d318e59a1c45f SHA512 fb0232a5992141eac4ef96507af2bb31ff30db2f1ef877ffd11e44598de85ebcd0ca8af629c592d3224d75cc6be5caa4b4cc89281527be4a8f381dcf46b46213
-MISC metadata.xml 2907 BLAKE2B caf71b22b1a242778cd62fef19796e442500ec16850d38e07c1773f773b4d8ca3a063ccb13aa044ae6c4efc3e3c9ee8ba5b03465ccc4b9758c8f08e75675f8e4 SHA512 9d336ec1b1f307ca510b470ba362144ad8ca579de2968483661b7d8868a0dd0f6cd18090dbdf1d0f7c98a746e39f43f2e25422c1dfec4d995c572ac6083272ea
+EBUILD freecad-1.0.0-r3.ebuild 8865 BLAKE2B 74a81c59c1cc2ff3095519e4c1e089015f027f7db75ae300eebdeafdbe09d8c66b2f16ee479b421f165281fdd1d6e09587c8ca60bc11f74e19d02434d37d1ab4 SHA512 820f293d0bcd201fd1dd90a5e8ac7cd3556c4e9b7829de4c3b34c10a4f3ebc7e5a0b5eee9a3f1dfcc99007e6c5ee67a794487658a6f48a12522dbee32c5a196f
+EBUILD freecad-9999.ebuild 8861 BLAKE2B dfd74cad390d926b078d72fe35d06aafc9575eb2ce3b065f4f1144152988def506e2761a9095a1cc6e69d5b20a91d5ec95a2cd56bafd477c1c4163ea21200928 SHA512 f0dc974806a3b1ba5248eaf26cd23c9bc578b22b6ae44856ed1deef2b51d92a3822e44023400f972169d7092ebaddfc1961e4b99f5360d1c0bb66dcdfa61a23e
+MISC metadata.xml 3060 BLAKE2B 7ad73261d4457110b7fbfa4a9304fe0e9fe7461bb01f49960b22c5a6c8433e8af8d416d0d28850b25c29158fd73847b2f0302cac73102c83019da00a13cc6786 SHA512 5b5e7b44f22b7fadc8ee79adb59308f1c5e398438f8304bb78829b73a65fea145a71a7d8cf1c5b0a9193455f1570fe57fdbd8aaa49bea6ee3a121faa23258515
diff --git a/media-gfx/freecad/freecad-1.0.0-r3.ebuild b/media-gfx/freecad/freecad-1.0.0-r3.ebuild
new file mode 100644
index 000000000000..d90bcdea5bf9
--- /dev/null
+++ b/media-gfx/freecad/freecad-1.0.0-r3.ebuild
@@ -0,0 +1,305 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit check-reqs cmake flag-o-matic optfeature python-single-r1 qmake-utils xdg
+
+DESCRIPTION="Qt based Computer Aided Design application"
+HOMEPAGE="https://www.freecad.org/ https://github.com/FreeCAD/FreeCAD"
+
+MY_PN=FreeCAD
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/${MY_PN}/${MY_PN}.git"
+ S="${WORKDIR}/freecad-${PV}"
+else
+ SRC_URI="https://github.com/${MY_PN}/${MY_PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64"
+ S="${WORKDIR}/FreeCAD-${PV}"
+fi
+
+# code is licensed LGPL-2
+# 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 netgen pcl +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 assembly +bim cam cloud fem idf inspection +mesh openscad points reverse robot surface +techdraw"
+
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ bim? ( mesh )
+ cam? ( mesh )
+ gui? ( bim )
+ designer? ( gui )
+ fem? ( smesh )
+ inspection? ( points )
+ mesh? ( smesh )
+ openscad? ( mesh )
+ reverse? ( mesh points )
+ test? ( techdraw )
+"
+# Draft Workbench needs BIM
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-cpp/gtest
+ dev-cpp/yaml-cpp
+ dev-libs/boost:=
+ dev-libs/libfmt:=
+ dev-libs/xerces-c[icu]
+ dev-qt/qtbase:6[concurrent,network,xml]
+ media-libs/freetype
+ sci-libs/opencascade:=[json]
+ sys-libs/zlib
+ $(python_gen_cond_dep '
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pybind11[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ ')
+ assembly? ( sci-libs/ondselsolver )
+ cloud? (
+ dev-libs/openssl:=
+ net-misc/curl
+ )
+ fem? (
+ sci-libs/vtk:=
+ $(python_gen_cond_dep 'dev-python/ply[${PYTHON_USEDEP}]')
+ )
+ gui? (
+ >=media-libs/coin-4.0.0
+ dev-qt/qtbase:6[gui,opengl,widgets]
+ dev-qt/qtsvg:6
+ 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:=[uitools(-),gui,svg,${PYTHON_USEDEP}]
+ dev-python/shiboken6:=[${PYTHON_USEDEP}]
+ ' )
+ virtual/glu
+ virtual/opengl
+ spacenav? ( dev-libs/libspnav[X?] )
+ )
+ netgen? ( media-gfx/netgen[opencascade] )
+ openscad? ( $(python_gen_cond_dep 'dev-python/ply[${PYTHON_USEDEP}]') )
+ pcl? ( sci-libs/pcl:= )
+ smesh? (
+ sci-libs/hdf5:=[zlib]
+ >=sci-libs/med-4.0.0-r1
+ sci-libs/vtk:=
+ )
+"
+DEPEND="${RDEPEND}
+ >=dev-cpp/eigen-3.3.1:3
+ dev-cpp/ms-gsl
+"
+BDEPEND="
+ dev-lang/swig
+ test? ( dev-cpp/gtest )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.0.0-r1-Gentoo-specific-don-t-check-vcs.patch
+ "${FILESDIR}"/${PN}-0.21.0-0001-Gentoo-specific-disable-ccache-usage.patch
+ "${FILESDIR}"/${PN}-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch
+)
+
+DOCS=( CODE_OF_CONDUCT.md README.md )
+
+CHECKREQS_DISK_BUILD="2G"
+
+pkg_setup() {
+ check-reqs_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ # Fix desktop file
+ sed -e 's/Exec=FreeCAD/Exec=freecad/' -i src/XDGData/org.freecad.FreeCAD.desktop || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # -Werror=odr, -Werror=lto-type-mismatch
+ # https://bugs.gentoo.org/875221
+ # https://github.com/FreeCAD/FreeCAD/issues/13173
+ filter-lto
+
+ # Fix building tests
+ 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_ASSEMBLY=$(usex assembly)
+ -DBUILD_BIM=$(usex bim)
+ -DBUILD_CAM=$(usex cam)
+ -DBUILD_CLOUD=$(usex cloud)
+ -DBUILD_DRAFT=ON
+ # see below for DRAWING
+ -DBUILD_FEM=$(usex fem)
+ -DBUILD_FEM_NETGEN=$(usex fem $(usex netgen))
+ -DBUILD_FLAT_MESH=$(usex mesh) # a submodule of MeshPart
+ -DBUILD_HELP=ON
+ -DBUILD_IDF=$(usex idf)
+ -DBUILD_IMPORT=ON # import module for various file formats
+ -DBUILD_INSPECTION=$(usex inspection)
+ -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=ON
+ -DBUILD_PLOT=ON
+ -DBUILD_POINTS=$(usex points)
+ -DBUILD_REVERSEENGINEERING=$(usex reverse)
+ -DBUILD_ROBOT=$(usex robot)
+ -DBUILD_SANDBOX=OFF
+ -DBUILD_SHOW=$(usex gui)
+ -DBUILD_SKETCHER=ON # needed by draft workspace
+ -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 gui)
+ -DBUILD_WEB=ON # needed by start workspace
+
+ -DCMAKE_INSTALL_DATADIR=/usr/share/${PN}/data
+ -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/${PF}
+ -DCMAKE_INSTALL_INCLUDEDIR=/usr/include/${PN}
+ -DCMAKE_INSTALL_PREFIX=/usr/$(get_libdir)/${PN}
+
+ -DFREECAD_BUILD_DEBIAN=OFF
+
+ -DFREECAD_USE_EXTERNAL_ONDSELSOLVER=$(usex assembly)
+ -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
+ -DFREECAD_USE_OCC_VARIANT:STRING="Official Version"
+ -DFREECAD_USE_PCL=$(usex pcl)
+ -DFREECAD_USE_PYBIND11=ON
+ -DFREECAD_USE_QT_FILEDIALOG=ON
+
+ # install python modules to site-packages' dir. True only for the main package,
+ # sub-packages will still be installed inside /usr/lib64/freecad
+ -DINSTALL_TO_SITEPACKAGES=ON
+
+ # Use the version of shiboken2 that matches the selected python version
+ -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
+ -DPython3_EXECUTABLE=${PYTHON}
+ )
+
+ if use debug; then
+ # BUILD_SANDBOX currently broken, see
+ # https://forum.freecadweb.org/viewtopic.php?f=4&t=36071&start=30#p504595
+ mycmakeargs+=(
+ -DBUILD_SANDBOX=OFF
+ -DBUILD_TEMPLATE=ON
+ )
+ else
+ mycmakeargs+=(
+ -DBUILD_SANDBOX=OFF
+ -DBUILD_TEMPLATE=OFF
+ )
+ fi
+
+ if use gui; then
+ mycmakeargs+=(
+ -DFREECAD_QT_MAJOR_VERSION=6
+ -DFREECAD_QT_VERSION=6
+ -DQT_DEFAULT_MAJOR_VERSION=6
+ -DQt6Core_MOC_EXECUTABLE="$(qt6_get_bindir)/moc"
+ -DQt6Core_RCC_EXECUTABLE="$(qt6_get_bindir)/rcc"
+ -DBUILD_QT5=OFF
+ # Drawing module unmaintained and not ported to qt6
+ -DBUILD_DRAWING=OFF
+ )
+ fi
+
+ cmake_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 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() {
+ 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() {
+ cmake_src_install
+
+ dobin src/Tools/freecad-thumbnailer
+
+ if use gui; then
+ newbin - freecad <<- _EOF_
+ #!/bin/sh
+ # https://github.com/coin3d/coin/issues/451
+ : "\${QT_QPA_PLATFORM:=xcb}"
+ export QT_QPA_PLATFORM
+ exec /usr/$(get_libdir)/${PN}/bin/FreeCAD "\${@}"
+ _EOF_
+ mv "${ED}"/usr/$(get_libdir)/${PN}/share/* "${ED}"/usr/share || die "failed to move shared resources"
+ fi
+ dosym -r /usr/$(get_libdir)/${PN}/bin/FreeCADCmd /usr/bin/freecadcmd
+
+ rm -r "${ED}"/usr/$(get_libdir)/${PN}/include/E57Format || die "failed to drop unneeded include directory E57Format"
+
+ python_optimize "${ED}"/usr/share/${PN}/data/Mod/Start/StartPage "${ED}"/usr/$(get_libdir)/${PN}{/Ext,/Mod}/
+ # compile main package in python site-packages as well
+ python_optimize
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ einfo "You can load a lot of additional workbenches using the integrated"
+ einfo "AddonManager."
+
+ 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.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() {
+ xdg_pkg_postrm
+}
diff --git a/media-gfx/freecad/freecad-9999.ebuild b/media-gfx/freecad/freecad-9999.ebuild
index 62ffcbe957a1..ed5c07ceb995 100644
--- a/media-gfx/freecad/freecad-9999.ebuild
+++ b/media-gfx/freecad/freecad-9999.ebuild
@@ -26,17 +26,18 @@ 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 netgen pcl smesh spacenav test X"
+IUSE="debug designer +gui netgen pcl +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"
+IUSE+=" addonmgr assembly +bim cam cloud fem idf inspection +mesh openscad points reverse robot surface +techdraw"
REQUIRED_USE="
${PYTHON_REQUIRED_USE}
bim? ( mesh )
cam? ( mesh )
+ gui? ( bim )
designer? ( gui )
fem? ( smesh )
inspection? ( points )
@@ -45,6 +46,7 @@ REQUIRED_USE="
reverse? ( mesh points )
test? ( techdraw )
"
+# Draft Workbench needs BIM
RESTRICT="!test? ( test )"
@@ -64,6 +66,7 @@ RDEPEND="
dev-python/pybind11[${PYTHON_USEDEP}]
dev-python/pyyaml[${PYTHON_USEDEP}]
')
+ assembly? ( sci-libs/ondselsolver )
cloud? (
dev-libs/openssl:=
net-misc/curl
@@ -146,12 +149,12 @@ src_configure() {
# Modules
-DBUILD_ADDONMGR=$(usex addonmgr)
- -DBUILD_ASSEMBLY=OFF # Requires OndselSolver
+ -DBUILD_ASSEMBLY=$(usex assembly)
-DBUILD_BIM=$(usex bim)
-DBUILD_CAM=$(usex cam)
-DBUILD_CLOUD=$(usex cloud)
-DBUILD_DRAFT=ON
- -DBUILD_DRAWING=OFF # Unmaintained and not ported to Qt 6
+ # see below for DRAWING
-DBUILD_FEM=$(usex fem)
-DBUILD_FEM_NETGEN=$(usex fem $(usex netgen))
-DBUILD_FLAT_MESH=$(usex mesh) # a submodule of MeshPart
@@ -189,6 +192,7 @@ src_configure() {
-DFREECAD_BUILD_DEBIAN=OFF
+ -DFREECAD_USE_EXTERNAL_ONDSELSOLVER=$(usex assembly)
-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
@@ -228,6 +232,8 @@ src_configure() {
-DQt6Core_MOC_EXECUTABLE="$(qt6_get_bindir)/moc"
-DQt6Core_RCC_EXECUTABLE="$(qt6_get_bindir)/rcc"
-DBUILD_QT5=OFF
+ # Drawing module unmaintained and not ported to qt6
+ -DBUILD_DRAWING=OFF
)
fi
diff --git a/media-gfx/freecad/metadata.xml b/media-gfx/freecad/metadata.xml
index 35a605b4e6ef..7cc8bc2a327b 100644
--- a/media-gfx/freecad/metadata.xml
+++ b/media-gfx/freecad/metadata.xml
@@ -14,6 +14,10 @@
Build the addon manager module for automatic handling of 3rd
party addons
</flag>
+ <flag name="assembly">
+ Build the assembly module to create 3D models composed of several
+ distinguishable parts as a conformed machine.
+ </flag>
<flag name="bim">
Build the BIM module and workbench
</flag>