summaryrefslogtreecommitdiff
path: root/media-gfx/freecad
diff options
context:
space:
mode:
Diffstat (limited to 'media-gfx/freecad')
-rw-r--r--media-gfx/freecad/Manifest8
-rw-r--r--media-gfx/freecad/files/freecad-1.0.0-r4-error-cannot-convert-bool-to-App-DocumentInitFlags.patch30
-rw-r--r--media-gfx/freecad/freecad-1.0.0-r3.ebuild32
-rw-r--r--media-gfx/freecad/freecad-1.0.0-r4.ebuild469
-rw-r--r--media-gfx/freecad/freecad-9999.ebuild226
5 files changed, 736 insertions, 29 deletions
diff --git a/media-gfx/freecad/Manifest b/media-gfx/freecad/Manifest
index b45dbac8ed10..0861f39ce5aa 100644
--- a/media-gfx/freecad/Manifest
+++ b/media-gfx/freecad/Manifest
@@ -1,9 +1,13 @@
AUX freecad-0.21.0-0001-Gentoo-specific-disable-ccache-usage.patch 381 BLAKE2B 2fe05252a4e7846006c5f4e679eae5416ede589b9a6ad5fc30425933bedf933bf586b711c2c7d6a59c3881d454ea76ca39e0556a5a31c3769032694f0858e264 SHA512 731befc86267de4e5fa2caf619a8ae9692580d7025ebc26a80f6744a3104263622c38d87d0d8a263a1a15ef1c1d78c9ff3351aa463a9943941bd7d96d946e516
AUX freecad-1.0.0-r1-Gentoo-specific-don-t-check-vcs.patch 347 BLAKE2B 1c8119aec9408d77db8e09c34b86ba6a8da268509959ba5839b1ad0bb6c5b4023326055170836bf164d0d1e0a13a91ac601bde7eb6b184e4f9b1425e93ce9d38 SHA512 63bb73d0de1e12d3a34a2d055e3ddc2bdbdae5c1c67cd7c9a26047abfeda48943d793f30d190ae28f6f8e9ee7072f671badd4b8f3df29824b401bed0dbf90ed5
+AUX freecad-1.0.0-r4-error-cannot-convert-bool-to-App-DocumentInitFlags.patch 1343 BLAKE2B 07b23abbe98a7b85e4d8d60b76f3e414d0a400f33d9b480b5eb7f06a0a6dc65037ced5666a0bf87fa34626c641e212a546969b21279f086a21aa3e98262cf3c5 SHA512 ce4bd01dd2dd0e8cf053397c9217128b27a88cbc845635fc80b8cde42815e9c34668c5919676f9c4663d3662aa203c2fab1c9838ba5a7e0ed1687c157d64e749
AUX freecad-9999-Gentoo-specific-don-t-check-vcs.patch 322 BLAKE2B 431b69d749c5639d2407207632ab48f1af36319290c1016985ed2431fe7a5314a5df8373a0a5235fcd08de5762dd090dd89b73846703348d5e2e0fac7c9c7048 SHA512 f67b3bfa013a497d0372649d9339665dd5c48b2dd00814e55ee6fcad6580a8219139f6c1931f2da5e210d181205af55e19b91a4d08b4d0dc7d45fcef358eb0ed
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
+DIST freecad-18423.patch 3094 BLAKE2B a5f4d1b7767e14ae61052348d57fcdaa4f73d2356daea1d2b89b3629faf92aadc1b1fd5c94443f1a5cc9917cf2026a19c28de990506b8da5886863354e581dc9 SHA512 a4dec8c9e6ac489c81cf7d4b81090614880a94664a0844c2ceab472fd410364aab555287f3233c965791d9fbf72f6faa36645910cc0f8bfcb9fa1d34c29f6a69
+DIST freecad-20710.patch 902 BLAKE2B ce69e5714c06e969bd533c54be9f7de0c23fc881a5259979c444aecc1f5cbb175b01c7a61bf3ebc35e0eeb7f9aabfba729499e449cbf2a06055df6aecc8465cd SHA512 1df1b0941d1ccbf9aef0f882cd17e647448acb9267a2fae503b4427b80620374e5d4e1a1bb651fab8b631db3ff4d53748951d75e244a9ffddda817b6d4971a84
EBUILD freecad-1.0.0-r2.ebuild 8734 BLAKE2B 1822220ebf0b676ba6df4ede4d37b18213b2efd7d6c770a665d77aad32a712c57b747cb879056373c410b2d6f035889a58dcb056ce9eeed177d9b22ed41dc37a SHA512 0c2b2b3d7c54c88bed3bcadbd0e296398dc345c558aa9c3278c572509c107a660d3c75a3f9982090377dac450a8b02978167ab41a0c2484d0d596f10d42d155d
-EBUILD freecad-1.0.0-r3.ebuild 8822 BLAKE2B 6024fb5a32cf76e5e9a83a9b601fae5e64961c040584c4328d1d12269e939e10292976371f6663355b146d6e4c3dcd1169eb0e5514d7efbfee48201ca6c6dbb0 SHA512 412e647b3ff33799db19cb798f14998ecb01da061f9ee3be69ce6c4a3f1e14e22c43db5ffd1b0842c2b2bc4a4d577575d3c0519217d49d3edcf17200ede7b3b6
-EBUILD freecad-9999.ebuild 8733 BLAKE2B 0b3cf0b7324697c0ba768ce8d591303fbce4f7314a73ac8348a6ebdb7ea5b7da4565c4632874ccc23e0b173983c4775127ff13106e7fea5bd6e4b4ecb8e0dd84 SHA512 fcba8bc10325f3bc52e3278246a2e395559d3cfcc0875454e8ce68da3caa8a3521799febed3ede928be7b910b22d1348a980f9b8647949083ae6c6fb7496fc2a
+EBUILD freecad-1.0.0-r3.ebuild 9283 BLAKE2B 2f41ac132c02ded98bbcd75e5bb954aa210ffe4ce536090e48adeeea71095f9b4fa232122fb325623ba856dd77784d267353b62d2504334ff9caae940d276019 SHA512 464861c5f8e6009f5fac32ed5e7e2a99f6962845758593ce98c1927222a06eb5c5630495ef08631f7ac7b4fdc15f8b965df31cef945adae36aa82a4f5f5dcf1d
+EBUILD freecad-1.0.0-r4.ebuild 13146 BLAKE2B 25d3447e380974a82def3bc84f274da792c0debfe0702cecde2c03b16d596c9d722120957237fd70ebd27b666bad4b77e8a24d39dab0e7b0de2d1a6d40db3fde SHA512 cdf2ac7c9494c2d9126ee311ff8e31c238f9b0876e00db661975fa930d191b4e6fbd66a917fd0d63db1b74af06e3d93cabba41f91855e8ff2b35243df00e934b
+EBUILD freecad-9999.ebuild 14912 BLAKE2B 7986a3cd6444a1dab3b5a51fc15b85e165f225afd88d5cb496544c95683420fc11b6402e0d0550d7174fd5a3723b7db3a99fae59743054a2dbca0ff0ef822e4f SHA512 866cc562b9f4184a65dd24a3702c50bde0a95c5cb249a2c313373ac262e17ff3341cf139eed6e89cd9c57d070ad2cb4e509158fa25d10cb888d363903890cc6b
MISC metadata.xml 3060 BLAKE2B 7ad73261d4457110b7fbfa4a9304fe0e9fe7461bb01f49960b22c5a6c8433e8af8d416d0d28850b25c29158fd73847b2f0302cac73102c83019da00a13cc6786 SHA512 5b5e7b44f22b7fadc8ee79adb59308f1c5e398438f8304bb78829b73a65fea145a71a7d8cf1c5b0a9193455f1570fe57fdbd8aaa49bea6ee3a121faa23258515
diff --git a/media-gfx/freecad/files/freecad-1.0.0-r4-error-cannot-convert-bool-to-App-DocumentInitFlags.patch b/media-gfx/freecad/files/freecad-1.0.0-r4-error-cannot-convert-bool-to-App-DocumentInitFlags.patch
new file mode 100644
index 000000000000..abdbb55c144f
--- /dev/null
+++ b/media-gfx/freecad/files/freecad-1.0.0-r4-error-cannot-convert-bool-to-App-DocumentInitFlags.patch
@@ -0,0 +1,30 @@
+From b629af0a3125f9cf40814ed254ab1259b2b3401a Mon Sep 17 00:00:00 2001
+From: Paul Zander <negril.nx@gmail.com>
+Date: Tue, 8 Apr 2025 22:15:17 +0200
+Subject: [PATCH] =?UTF-8?q?error:=20cannot=20convert=20=E2=80=98bool?=
+ =?UTF-8?q?=E2=80=99=20to=20=E2=80=98App::DocumentInitFlags=E2=80=99?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Caused by https://github.com/FreeCAD/FreeCAD/pull/19136
+Partial fix in https://github.com/FreeCAD/FreeCAD/pull/20058
+
+Signed-off-by: Paul Zander <negril.nx@gmail.com>
+
+diff --git a/src/Mod/Cloud/App/AppCloud.cpp b/src/Mod/Cloud/App/AppCloud.cpp
+index 3ec811dc04..78b6d7f819 100644
+--- a/src/Mod/Cloud/App/AppCloud.cpp
++++ b/src/Mod/Cloud/App/AppCloud.cpp
+@@ -1451,7 +1451,7 @@ void Cloud::Module::LinkXSetValue(std::string filename)
+ string newName;
+ Document* currentDoc = GetApplication().getActiveDocument();
+ newName = GetApplication().getUniqueDocumentName("unnamed");
+- newDoc = GetApplication().newDocument(newName.c_str(), (const char*)path.c_str(), true);
++ newDoc = GetApplication().newDocument(newName.c_str(), (const char*)path.c_str(), {.createView=true});
+ GetApplication().setActiveDocument(newDoc);
+ this->cloudRestore((const char*)path.c_str());
+ GetApplication().setActiveDocument(currentDoc);
+--
+2.49.0
+
diff --git a/media-gfx/freecad/freecad-1.0.0-r3.ebuild b/media-gfx/freecad/freecad-1.0.0-r3.ebuild
index 3460ebcd8d63..bc61cd107092 100644
--- a/media-gfx/freecad/freecad-1.0.0-r3.ebuild
+++ b/media-gfx/freecad/freecad-1.0.0-r3.ebuild
@@ -1,11 +1,11 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_COMPAT=( python3_{11..12} )
-inherit check-reqs cmake flag-o-matic optfeature python-single-r1 qmake-utils xdg
+inherit check-reqs cmake flag-o-matic optfeature python-single-r1 qmake-utils toolchain-funcs xdg
DESCRIPTION="Qt based Computer Aided Design application"
HOMEPAGE="https://www.freecad.org/ https://github.com/FreeCAD/FreeCAD"
@@ -17,8 +17,11 @@ if [[ ${PV} == *9999* ]]; then
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"
+ SRC_URI="
+ https://github.com/${MY_PN}/${MY_PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/FreeCAD/FreeCAD/commit/d91b3e051789623f0bc1eff65947c361e7a661d0.patch -> ${PN}-20710.patch
+ "
+ KEYWORDS="amd64"
S="${WORKDIR}/FreeCAD-${PV}"
fi
@@ -84,7 +87,6 @@ RDEPEND="
dev-python/matplotlib[${PYTHON_USEDEP}]
>=dev-python/pivy-0.6.5[${PYTHON_USEDEP}]
dev-python/pyside:6=[uitools(-),gui,svg,${PYTHON_USEDEP}]
-
' )
virtual/glu
virtual/opengl
@@ -112,6 +114,7 @@ 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
+ "${DISTDIR}/${PN}-20710.patch" # DESTDIR in env
)
DOCS=( CODE_OF_CONDUCT.md README.md )
@@ -137,7 +140,9 @@ src_configure() {
filter-lto
# Fix building tests
- append-ldflags -Wl,--copy-dt-needed-entries
+ if ! tc-ld-is-mold; then # 940524
+ append-ldflags -Wl,--copy-dt-needed-entries
+ fi
local mycmakeargs=(
-DBUILD_DESIGNER_PLUGIN=$(usex designer)
@@ -205,7 +210,7 @@ src_configure() {
# 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
+ # Use the version of pyside[tools] that matches the selected python version
-DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
-DPython3_EXECUTABLE=${PYTHON}
)
@@ -251,6 +256,9 @@ src_configure() {
src_test() {
cd "${BUILD_DIR}" || die
+ # No module named 'ifcopenshell' #940465
+ rm "${BUILD_DIR}/Mod/BIM/nativeifc/ifc_performance_test.py" || die
+
local -x FREECAD_USER_HOME="${HOME}"
local -x FREECAD_USER_DATA="${T}"
local -x FREECAD_USER_TEMP="${T}"
@@ -260,7 +268,13 @@ src_test() {
src_install() {
cmake_src_install
- dobin src/Tools/freecad-thumbnailer
+ if [[ -f src/Tools/freecad-thumbnailer ]]; then
+ dobin src/Tools/freecad-thumbnailer
+ fi
+
+ if [[ -f freecad-thumbnailer ]]; then
+ dobin freecad-thumbnailer
+ fi
if use gui; then
newbin - freecad <<- _EOF_
diff --git a/media-gfx/freecad/freecad-1.0.0-r4.ebuild b/media-gfx/freecad/freecad-1.0.0-r4.ebuild
new file mode 100644
index 000000000000..2fc4f1d33b6c
--- /dev/null
+++ b/media-gfx/freecad/freecad-1.0.0-r4.ebuild
@@ -0,0 +1,469 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..12} )
+
+inherit check-reqs cmake cuda edo flag-o-matic optfeature python-single-r1 qmake-utils toolchain-funcs xdg virtualx
+
+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
+ https://github.com/FreeCAD/FreeCAD/commit/8934af10128f0bd2d0ffada946d1c93bc5d8869f.patch -> ${PN}-18423.patch
+ https://github.com/FreeCAD/FreeCAD/commit/d91b3e051789623f0bc1eff65947c361e7a661d0.patch -> ${PN}-20710.patch
+ "
+ 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/pyside:6=[uitools(-),gui,svg,${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
+ test? (
+ gui? (
+ $(python_gen_cond_dep '
+ dev-python/pyside:6=[tools(-),${PYTHON_USEDEP}]
+ ' )
+ )
+ )
+"
+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
+ "${DISTDIR}/${PN}-18423.patch" # vtk-9.4
+ "${DISTDIR}/${PN}-20710.patch" # DESTDIR in env
+)
+
+DOCS=( CODE_OF_CONDUCT.md README.md )
+
+CHECKREQS_DISK_BUILD="2G"
+
+cuda_get_host_compiler() {
+ if [[ -n "${NVCC_CCBIN}" ]]; then
+ echo "${NVCC_CCBIN}"
+ return
+ fi
+
+ if [[ -n "${CUDAHOSTCXX}" ]]; then
+ echo "${CUDAHOSTCXX}"
+ return
+ fi
+
+ if ! has_version dev-util/nvidia-cuda-toolkit ; then
+ return
+ fi
+
+ einfo "Trying to find working CUDA host compiler"
+
+ if ! tc-is-gcc && ! tc-is-clang; then
+ die "$(tc-get-compiler-type) compiler is not supported"
+ fi
+
+ local compiler compiler_type compiler_version
+ local package package_version
+ local NVCC_CCBIN_default
+
+ compiler_type="$(tc-get-compiler-type)"
+ compiler_version="$("${compiler_type}-major-version")"
+
+ # try the default compiler first
+ NVCC_CCBIN="$(tc-getCXX)"
+ NVCC_CCBIN_default="${NVCC_CCBIN}-${compiler_version}"
+
+ compiler="${NVCC_CCBIN/%-${compiler_version}}"
+
+ # store the package so we can re-use it later
+ if tc-is-gcc; then
+ package="sys-devel/${compiler_type}"
+ elif tc-is-clang; then
+ package="llvm-core/${compiler_type}"
+ else
+ die "$(tc-get-compiler-type) compiler is not supported"
+ fi
+
+ package_version="${package}"
+
+ ebegin "testing ${NVCC_CCBIN_default} (default)"
+
+ while ! nvcc -v -ccbin "${NVCC_CCBIN}" - -x cu <<<"int main(){}" &>> "${T}/cuda_get_host_compiler.log" ; do
+ eend 1
+
+ while true; do
+ # prepare next version
+ if ! package_version="<$(best_version "${package_version}")"; then
+ die "could not find a supported version of ${compiler}"
+ fi
+
+ NVCC_CCBIN="${compiler}-$(ver_cut 1 "${package_version/#<${package}-/}")"
+
+ [[ "${NVCC_CCBIN}" != "${NVCC_CCBIN_default}" ]] && break
+ done
+ ebegin "testing ${NVCC_CCBIN}"
+ done
+ eend $?
+
+ echo "${NVCC_CCBIN}"
+ export NVCC_CCBIN
+}
+
+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
+
+ # deprecated in python-3.11 removed in python-3.13
+ sed -e '/import imghdr/d' -i src/Mod/CAM/CAMTests/TestCAMSanity.py || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # -Werror=odr, -Werror=lto-type-mismatch
+ # https://bugs.gentoo.org/875221
+ # https://github.com/FreeCAD/FreeCAD/issues/13173
+ append-flags -fno-strict-aliasing
+ filter-lto
+
+ # Fix building tests
+ if ! tc-ld-is-mold; then # 940524
+ append-ldflags -Wl,--copy-dt-needed-entries
+ fi
+
+ # cmake-4
+ # https://github.com/FreeCAD/FreeCAD/issues/20246
+ : "${CMAKE_POLICY_VERSION_MINIMUM:=3.10}"
+ export CMAKE_POLICY_VERSION_MINIMUM
+
+ local mycmakeargs=(
+ -DCMAKE_POLICY_DEFAULT_CMP0144="OLD" # FLANN_ROOT
+ -DCMAKE_POLICY_DEFAULT_CMP0167="OLD" # FindBoost
+ -DCMAKE_POLICY_DEFAULT_CMP0175="OLD" # add_custom_command
+ -DCMAKE_POLICY_DEFAULT_CMP0153="OLD" # exec_program
+
+ -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="$(usex test)" # 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_EXTERNAL_FMT="yes"
+ -DFREECAD_USE_EXTERNAL_KDL=OFF # https://github.com/FreeCAD/FreeCAD/commit/9f98866
+ -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 pyside[tools] that matches the selected python version
+ -DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
+ # -DPython3_EXECUTABLE=${EPYTHON}
+
+ -DPACKAGE_WCREF="${PVR} (gentoo)"
+ -DPACKAGE_WCURL="git://github.com/FreeCAD/FreeCAD.git ${PV}"
+ )
+
+ if [[ ${PV} == *9999* ]]; then
+ mycmakeargs+=(
+ -DENABLE_DEVELOPER_TESTS=ON
+ )
+ else
+ mycmakeargs+=(
+ -DENABLE_DEVELOPER_TESTS=OFF
+ )
+ fi
+
+ 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 fem || use smesh; then
+ export CUDAHOSTCXX="$(cuda_get_host_compiler)"
+ cuda_add_sandbox
+ 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
+
+ addpredict "/dev/char/"
+ [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
+
+ 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
+
+ # No module named 'ifcopenshell' #940465
+ rm "${BUILD_DIR}/Mod/BIM/nativeifc/ifc_performance_test.py" || die
+
+ local -x FREECAD_USER_HOME="${HOME}"
+ local -x FREECAD_USER_DATA="${T}"
+ local -x FREECAD_USER_TEMP="${T}"
+
+ local fail=""
+ local run
+ nonfatal \
+ edo "${BUILD_DIR}/bin/FreeCADCmd" \
+ --run-test 0 \
+ --set-config AppHomePath="${BUILD_DIR}/" \
+ --log-file "${T}/FreeCADCmd.log" \
+ || fail+=" FreeCADCmd"
+
+ if use gui; then
+ # this is naive
+ addpredict "/dev/char/"
+ addwrite "/dev/dri/renderD128"
+ addwrite "/dev/dri/card0"
+ [[ -c "/dev/nvidiactl" ]] && addwrite "/dev/nvidiactl"
+ [[ -c "/dev/nvidia-uvm" ]] && addwrite "/dev/nvidia-uvm"
+ [[ -c "/dev/nvidia-uvm-tools" ]] && addwrite "/dev/nvidia-uvm-tools"
+ [[ -c "/dev/nvidia0" ]] && addwrite "/dev/nvidia0"
+ [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
+
+ nonfatal \
+ virtx edo "${BUILD_DIR}/bin/FreeCAD" \
+ --run-test 0 \
+ --set-config AppHomePath="${BUILD_DIR}/" \
+ --log-file "${T}/FreeCAD.log" \
+ || fail+=" FreeCAD"
+
+ run=virtx
+ fi
+
+ # nonfatal \
+ ${run} cmake_src_test || fail+=" cmake"
+ if [[ -n "${fail}" ]]; then
+ eerror "${fail}"
+ die "${fail}"
+ fi
+}
+
+src_install() {
+ cmake_src_install
+
+ if [[ -f src/Tools/freecad-thumbnailer ]]; then
+ dobin src/Tools/freecad-thumbnailer
+ fi
+
+ if [[ -f freecad-thumbnailer ]]; then
+ dobin freecad-thumbnailer
+ fi
+
+ 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 afd582d56c4e..8d90dd0197e0 100644
--- a/media-gfx/freecad/freecad-9999.ebuild
+++ b/media-gfx/freecad/freecad-9999.ebuild
@@ -1,11 +1,11 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_COMPAT=( python3_{11..13} )
-inherit check-reqs cmake flag-o-matic optfeature python-single-r1 qmake-utils xdg
+inherit check-reqs cmake cuda edo flag-o-matic optfeature python-single-r1 qmake-utils toolchain-funcs xdg virtualx
DESCRIPTION="Qt based Computer Aided Design application"
HOMEPAGE="https://www.freecad.org/ https://github.com/FreeCAD/FreeCAD"
@@ -17,7 +17,9 @@ if [[ ${PV} == *9999* ]]; then
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"
+ 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
@@ -26,17 +28,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 assembly 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 +48,7 @@ REQUIRED_USE="
reverse? ( mesh points )
test? ( techdraw )
"
+# Draft Workbench needs BIM
RESTRICT="!test? ( test )"
@@ -99,6 +103,13 @@ RDEPEND="
DEPEND="${RDEPEND}
>=dev-cpp/eigen-3.3.1:3
dev-cpp/ms-gsl
+ test? (
+ gui? (
+ $(python_gen_cond_dep '
+ dev-python/pyside:6=[tools(-),${PYTHON_USEDEP}]
+ ' )
+ )
+ )
"
BDEPEND="
dev-lang/swig
@@ -109,12 +120,81 @@ PATCHES=(
"${FILESDIR}"/${PN}-9999-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
+ "${FILESDIR}/${PN}-1.0.0-r4-error-cannot-convert-bool-to-App-DocumentInitFlags.patch"
)
DOCS=( CODE_OF_CONDUCT.md README.md )
CHECKREQS_DISK_BUILD="2G"
+cuda_get_host_compiler() {
+ if [[ -n "${NVCC_CCBIN}" ]]; then
+ echo "${NVCC_CCBIN}"
+ return
+ fi
+
+ if [[ -n "${CUDAHOSTCXX}" ]]; then
+ echo "${CUDAHOSTCXX}"
+ return
+ fi
+
+ if ! has_version dev-util/nvidia-cuda-toolkit ; then
+ return
+ fi
+
+ einfo "Trying to find working CUDA host compiler"
+
+ if ! tc-is-gcc && ! tc-is-clang; then
+ die "$(tc-get-compiler-type) compiler is not supported"
+ fi
+
+ local compiler compiler_type compiler_version
+ local package package_version
+ local NVCC_CCBIN_default
+
+ compiler_type="$(tc-get-compiler-type)"
+ compiler_version="$("${compiler_type}-major-version")"
+
+ # try the default compiler first
+ NVCC_CCBIN="$(tc-getCXX)"
+ NVCC_CCBIN_default="${NVCC_CCBIN}-${compiler_version}"
+
+ compiler="${NVCC_CCBIN/%-${compiler_version}}"
+
+ # store the package so we can re-use it later
+ if tc-is-gcc; then
+ package="sys-devel/${compiler_type}"
+ elif tc-is-clang; then
+ package="llvm-core/${compiler_type}"
+ else
+ die "$(tc-get-compiler-type) compiler is not supported"
+ fi
+
+ package_version="${package}"
+
+ ebegin "testing ${NVCC_CCBIN_default} (default)"
+
+ while ! nvcc -v -ccbin "${NVCC_CCBIN}" - -x cu <<<"int main(){}" &>> "${T}/cuda_get_host_compiler.log" ; do
+ eend 1
+
+ while true; do
+ # prepare next version
+ if ! package_version="<$(best_version "${package_version}")"; then
+ die "could not find a supported version of ${compiler}"
+ fi
+
+ NVCC_CCBIN="${compiler}-$(ver_cut 1 "${package_version/#<${package}-/}")"
+
+ [[ "${NVCC_CCBIN}" != "${NVCC_CCBIN_default}" ]] && break
+ done
+ ebegin "testing ${NVCC_CCBIN}"
+ done
+ eend $?
+
+ echo "${NVCC_CCBIN}"
+ export NVCC_CCBIN
+}
+
pkg_setup() {
check-reqs_pkg_setup
python-single-r1_pkg_setup
@@ -124,6 +204,9 @@ src_prepare() {
# Fix desktop file
sed -e 's/Exec=FreeCAD/Exec=freecad/' -i src/XDGData/org.freecad.FreeCAD.desktop || die
+ # deprecated in python-3.11 removed in python-3.13
+ sed -e '/import imghdr/d' -i src/Mod/CAM/CAMTests/TestCAMSanity.py || die
+
cmake_src_prepare
}
@@ -131,12 +214,25 @@ src_configure() {
# -Werror=odr, -Werror=lto-type-mismatch
# https://bugs.gentoo.org/875221
# https://github.com/FreeCAD/FreeCAD/issues/13173
+ append-flags -fno-strict-aliasing
filter-lto
# Fix building tests
- append-ldflags -Wl,--copy-dt-needed-entries
+ if ! tc-ld-is-mold; then # 940524
+ append-ldflags -Wl,--copy-dt-needed-entries
+ fi
+
+ # cmake-4
+ # https://github.com/FreeCAD/FreeCAD/issues/20246
+ : "${CMAKE_POLICY_VERSION_MINIMUM:=3.10}"
+ export CMAKE_POLICY_VERSION_MINIMUM
local mycmakeargs=(
+ -DCMAKE_POLICY_DEFAULT_CMP0144="OLD" # FLANN_ROOT
+ -DCMAKE_POLICY_DEFAULT_CMP0167="OLD" # FindBoost
+ -DCMAKE_POLICY_DEFAULT_CMP0175="OLD" # add_custom_command
+ -DCMAKE_POLICY_DEFAULT_CMP0153="OLD" # exec_program
+
-DBUILD_DESIGNER_PLUGIN=$(usex designer)
-DBUILD_FORCE_DIRECTORY=ON # force building in a dedicated directory
-DBUILD_GUI=$(usex gui)
@@ -151,7 +247,7 @@ src_configure() {
-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
@@ -171,14 +267,14 @@ src_configure() {
-DBUILD_POINTS=$(usex points)
-DBUILD_REVERSEENGINEERING=$(usex reverse)
-DBUILD_ROBOT=$(usex robot)
- -DBUILD_SANDBOX=OFF
+ # -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_TEST="$(usex test)" # always build test workbench for run-time testing
-DBUILD_TUX=$(usex gui)
-DBUILD_WEB=ON # needed by start workspace
@@ -192,6 +288,8 @@ src_configure() {
-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_EXTERNAL_FMT="yes"
+ -DFREECAD_USE_EXTERNAL_KDL=OFF # https://github.com/FreeCAD/FreeCAD/commit/9f98866
-DFREECAD_USE_FREETYPE=ON
-DFREECAD_USE_OCC_VARIANT:STRING="Official Version"
-DFREECAD_USE_PCL=$(usex pcl)
@@ -202,11 +300,24 @@ src_configure() {
# 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
+ # Use the version of pyside[tools] that matches the selected python version
-DPYTHON_CONFIG_SUFFIX="-${EPYTHON}"
- -DPython3_EXECUTABLE=${PYTHON}
+ # -DPython3_EXECUTABLE=${EPYTHON}
+
+ -DPACKAGE_WCREF="%{release} (Git)"
+ -DPACKAGE_WCURL="git://github.com/FreeCAD/FreeCAD.git main"
)
+ if [[ ${PV} == *9999* ]]; then
+ mycmakeargs+=(
+ -DENABLE_DEVELOPER_TESTS=ON
+ )
+ else
+ mycmakeargs+=(
+ -DENABLE_DEVELOPER_TESTS=OFF
+ )
+ fi
+
if use debug; then
# BUILD_SANDBOX currently broken, see
# https://forum.freecadweb.org/viewtopic.php?f=4&t=36071&start=30#p504595
@@ -221,6 +332,11 @@ src_configure() {
)
fi
+ if use fem || use smesh; then
+ export CUDAHOSTCXX="$(cuda_get_host_compiler)"
+ cuda_add_sandbox
+ fi
+
if use gui; then
mycmakeargs+=(
-DFREECAD_QT_MAJOR_VERSION=6
@@ -229,9 +345,14 @@ 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
+ addpredict "/dev/char/"
+ [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
+
cmake_src_configure
}
@@ -244,18 +365,87 @@ src_configure() {
# configuration. Without those, there is a sandbox violation, when it
# tries to create /var/lib/portage/home/.FreeCAD directory.
src_test() {
+ local -x EPYTEST_IGNORE=(
+ "Mod/BIM/nativeifc/ifc_performance_test.py"
+ )
+ local -x EPYTEST_DESELECT=(
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_check_python_version_bad"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_check_python_version_bad"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_dependency_failure_dialog"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_failure_dialog"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_handle_disallowed_python"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_install"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_no_pip_dialog"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_no_python_dialog"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_report_missing_workbenches_multiple"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_report_missing_workbenches_single"
+ "Mod/AddonManager/AddonManagerTest/gui/test_installer_gui.py::TestInstallerGui::test_success_dialog"
+
+ "Mod/AddonManager/AddonManagerTest/gui/test_uninstaller_gui.py::TestUninstallerGUI::test_confirmation_dialog_cancel"
+ "Mod/AddonManager/AddonManagerTest/gui/test_uninstaller_gui.py::TestUninstallerGUI::test_confirmation_dialog_yes"
+ "Mod/AddonManager/AddonManagerTest/gui/test_uninstaller_gui.py::TestUninstallerGUI::test_failure_dialog"
+ "Mod/AddonManager/AddonManagerTest/gui/test_uninstaller_gui.py::TestUninstallerGUI::test_progress_dialog"
+ "Mod/AddonManager/AddonManagerTest/gui/test_uninstaller_gui.py::TestUninstallerGUI::test_success_dialog"
+ "Mod/AddonManager/AddonManagerTest/gui/test_uninstaller_gui.py::TestUninstallerGUI::test_timer_launches_progress_dialog"
+ )
+
cd "${BUILD_DIR}" || die
+ # No module named 'ifcopenshell' #940465
+ rm "${BUILD_DIR}/Mod/BIM/nativeifc/ifc_performance_test.py" || 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
+
+ local fail=""
+ local run
+ nonfatal \
+ edo "${BUILD_DIR}/bin/FreeCADCmd" \
+ --run-test 0 \
+ --set-config AppHomePath="${BUILD_DIR}/" \
+ --log-file "${T}/FreeCADCmd.log" \
+ || fail+=" FreeCADCmd"
+
+ if use gui; then
+ # this is naive
+ addpredict "/dev/char/"
+ addwrite "/dev/dri/renderD128"
+ addwrite "/dev/dri/card0"
+ [[ -c "/dev/nvidiactl" ]] && addwrite "/dev/nvidiactl"
+ [[ -c "/dev/nvidia-uvm" ]] && addwrite "/dev/nvidia-uvm"
+ [[ -c "/dev/nvidia-uvm-tools" ]] && addwrite "/dev/nvidia-uvm-tools"
+ [[ -c "/dev/nvidia0" ]] && addwrite "/dev/nvidia0"
+ [[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
+
+ nonfatal \
+ virtx edo "${BUILD_DIR}/bin/FreeCAD" \
+ --run-test 0 \
+ --set-config AppHomePath="${BUILD_DIR}/" \
+ --log-file "${T}/FreeCAD.log" \
+ || fail+=" FreeCAD"
+
+ run=virtx
+ fi
+
+ # nonfatal \
+ ${run} cmake_src_test || fail+=" cmake"
+ if [[ -n "${fail}" ]]; then
+ eerror "${fail}"
+ die "${fail}"
+ fi
}
src_install() {
cmake_src_install
- dobin src/Tools/freecad-thumbnailer
+ if [[ -f src/Tools/freecad-thumbnailer ]]; then
+ dobin src/Tools/freecad-thumbnailer
+ fi
+
+ if [[ -f freecad-thumbnailer ]]; then
+ dobin freecad-thumbnailer
+ fi
if use gui; then
newbin - freecad <<- _EOF_
@@ -265,13 +455,13 @@ src_install() {
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"
+ 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
+ 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"
+ 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}/
+ 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
}