| 9 |
9 |
# The added asserts break on mem leaks, so tests fail.
|
| 10 |
10 |
# PYTHON_REQ_USE="-debug"
|
| 11 |
11 |
|
| 12 |
|
inherit check-reqs cmake cuda edo flag-o-matic optfeature python-single-r1 qt-utils toolchain-funcs xdg virtualx
|
|
12 |
# pyNastran missing
|
|
13 |
|
|
14 |
inherit branding check-reqs cmake cuda edo flag-o-matic optfeature python-single-r1 toolchain-funcs xdg virtualx
|
| 13 |
15 |
|
| 14 |
16 |
DESCRIPTION="Qt based Computer Aided Design application"
|
| 15 |
17 |
HOMEPAGE="https://www.freecad.org/ https://github.com/FreeCAD/FreeCAD"
|
| ... | ... | |
| 19 |
21 |
if [[ ${PV} == *9999* ]]; then
|
| 20 |
22 |
inherit git-r3
|
| 21 |
23 |
EGIT_REPO_URI="https://github.com/${MY_PN}/${MY_PN}.git"
|
| 22 |
|
EGIT_SUBMODULES=( 'src/Mod/AddonManager' )
|
| 23 |
|
S="${WORKDIR}/freecad-${PV}"
|
|
24 |
EGIT_SUBMODULES=( '-*' )
|
| 24 |
25 |
else
|
| 25 |
26 |
SRC_URI="
|
| 26 |
|
https://github.com/${MY_PN}/${MY_PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
|
| 27 |
|
https://github.com/FreeCAD/FreeCAD/commit/d91b3e051789623f0bc1eff65947c361e7a661d0.patch -> ${PN}-20710.patch
|
| 28 |
|
https://github.com/FreeCAD/FreeCAD/commit/9ea0f32692e13eee85b1e74bd42514942d357906.patch -> ${PN}-21433.patch
|
|
27 |
https://github.com/${MY_PN}/${MY_PN}/releases/download/${PV}/freecad_source_${PV}.tar.gz
|
| 29 |
28 |
"
|
| 30 |
|
KEYWORDS="amd64"
|
| 31 |
|
S="${WORKDIR}/FreeCAD-${PV}"
|
|
29 |
KEYWORDS="~amd64"
|
| 32 |
30 |
fi
|
| 33 |
31 |
|
| 34 |
32 |
# code is licensed LGPL-2
|
| 35 |
33 |
# examples are licensed CC-BY-SA (without note of specific version)
|
| 36 |
34 |
LICENSE="LGPL-2 CC-BY-SA-4.0"
|
| 37 |
35 |
SLOT="0"
|
| 38 |
|
IUSE="debug designer +gui netgen pcl +smesh spacenav test X"
|
|
36 |
IUSE="debug designer +gui netgen pcl +smesh spacenav tbb test X"
|
| 39 |
37 |
# Modules are found in src/Mod/ and their options defined in:
|
| 40 |
38 |
# cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake
|
| 41 |
39 |
# To get their dependencies:
|
| 42 |
40 |
# 'grep REQUIRES_MODS cMake/FreeCAD_Helpers/CheckInterModuleDependencies.cmake'
|
| 43 |
|
IUSE+=" addonmgr assembly +bim cam cloud fem idf inspection +mesh openscad points reverse robot surface +techdraw"
|
|
41 |
IUSE+=" addonmgr assembly +bim cam fem idf inspection +mesh openscad points reverse robot surface +techdraw"
|
| 44 |
42 |
|
| 45 |
43 |
REQUIRED_USE="
|
| 46 |
44 |
${PYTHON_REQUIRED_USE}
|
| 47 |
45 |
bim? ( mesh )
|
| 48 |
46 |
cam? ( mesh )
|
| 49 |
|
gui? ( bim )
|
| 50 |
47 |
designer? ( gui )
|
| 51 |
48 |
fem? ( smesh )
|
| 52 |
49 |
inspection? ( points )
|
| ... | ... | |
| 55 |
52 |
reverse? ( mesh points )
|
| 56 |
53 |
test? ( techdraw )
|
| 57 |
54 |
"
|
| 58 |
|
# Draft Workbench needs BIM
|
| 59 |
55 |
|
| 60 |
56 |
RESTRICT="!test? ( test )"
|
| 61 |
57 |
|
| ... | ... | |
| 63 |
59 |
# if vtk[cuda], we use cuda
|
| 64 |
60 |
RDEPEND="
|
| 65 |
61 |
${PYTHON_DEPS}
|
| 66 |
|
dev-cpp/tbb:=
|
| 67 |
62 |
dev-cpp/yaml-cpp:=
|
| 68 |
63 |
dev-libs/boost:=
|
| 69 |
64 |
dev-libs/libfmt:=
|
| 70 |
65 |
dev-libs/xerces-c:=[icu]
|
| 71 |
66 |
dev-qt/qtbase:6[concurrent,network,xml]
|
| 72 |
67 |
media-libs/freetype
|
| 73 |
|
sci-libs/opencascade:=[json]
|
|
68 |
sci-libs/opencascade:=[json,tbb?]
|
|
69 |
tbb? (
|
|
70 |
dev-cpp/tbb:=
|
|
71 |
)
|
| 74 |
72 |
virtual/zlib:=
|
| 75 |
73 |
$(python_gen_cond_dep '
|
|
74 |
dev-python/lark[${PYTHON_USEDEP}]
|
| 76 |
75 |
dev-python/numpy[${PYTHON_USEDEP}]
|
| 77 |
|
dev-python/pybind11[${PYTHON_USEDEP}]
|
|
76 |
>=dev-python/pybind11-3.0.1[${PYTHON_USEDEP}]
|
| 78 |
77 |
dev-python/pycxx[${PYTHON_USEDEP}]
|
| 79 |
78 |
dev-python/pyyaml[${PYTHON_USEDEP}]
|
| 80 |
79 |
')
|
| 81 |
|
assembly? ( sci-libs/ondselsolver )
|
| 82 |
|
cloud? (
|
| 83 |
|
dev-libs/openssl:=
|
| 84 |
|
net-misc/curl
|
| 85 |
|
)
|
|
80 |
assembly? ( >=sci-libs/ondselsolver-1.0.1_p20260211 )
|
| 86 |
81 |
fem? (
|
| 87 |
82 |
sci-libs/vtk:=
|
| 88 |
83 |
$(python_gen_cond_dep 'dev-python/ply[${PYTHON_USEDEP}]')
|
| ... | ... | |
| 95 |
90 |
$(python_gen_cond_dep '
|
| 96 |
91 |
dev-python/matplotlib[${PYTHON_USEDEP}]
|
| 97 |
92 |
>=dev-python/pivy-0.6.5[${PYTHON_USEDEP}]
|
| 98 |
|
>=dev-python/pyside-6.10.1-r5:6=[uitools(-),gui,svg,${PYTHON_USEDEP}]
|
|
93 |
dev-python/pyside:6=[uitools(-),gui,svg,${PYTHON_USEDEP}]
|
| 99 |
94 |
' )
|
| 100 |
95 |
virtual/opengl
|
| 101 |
96 |
spacenav? ( dev-libs/libspnav[X?] )
|
| 102 |
97 |
)
|
| 103 |
|
netgen? ( media-gfx/netgen[opencascade] )
|
|
98 |
netgen? ( <media-gfx/netgen-6.2.2605[opencascade] )
|
| 104 |
99 |
openscad? ( $(python_gen_cond_dep 'dev-python/ply[${PYTHON_USEDEP}]') )
|
| 105 |
100 |
pcl? ( sci-libs/pcl:= )
|
| 106 |
101 |
smesh? (
|
| ... | ... | |
| 108 |
103 |
sci-libs/vtk:=
|
| 109 |
104 |
)
|
| 110 |
105 |
"
|
|
106 |
# TODO why?
|
|
107 |
RDEPEND+="
|
|
108 |
dev-libs/icu:=
|
|
109 |
"
|
| 111 |
110 |
DEPEND="${RDEPEND}
|
| 112 |
|
<dev-cpp/eigen-5:=
|
|
111 |
dev-cpp/eigen:=
|
| 113 |
112 |
dev-cpp/ms-gsl
|
| 114 |
113 |
test? (
|
| 115 |
114 |
$(python_gen_impl_dep '-debug')
|
| 116 |
115 |
$(python_gen_cond_dep '
|
| 117 |
116 |
sci-libs/vtk[python,${PYTHON_SINGLE_USEDEP}]
|
| 118 |
117 |
' )
|
|
118 |
fem? (
|
|
119 |
sci-libs/calculix-ccx
|
|
120 |
$(python_gen_cond_dep '
|
|
121 |
sci-libs/gmsh[${PYTHON_USEDEP}]
|
|
122 |
' )
|
|
123 |
)
|
| 119 |
124 |
gui? (
|
| 120 |
125 |
$(python_gen_cond_dep '
|
| 121 |
126 |
dev-python/pyside:6[tools(-),${PYTHON_USEDEP}]
|
| ... | ... | |
| 137 |
142 |
"
|
| 138 |
143 |
|
| 139 |
144 |
PATCHES=(
|
| 140 |
|
"${FILESDIR}"/${PN}-1.0.0-r1-Gentoo-specific-don-t-check-vcs.patch
|
| 141 |
|
"${FILESDIR}"/${PN}-1.0.1-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch
|
| 142 |
|
"${FILESDIR}/${PN}-1.0.2-pybind11-latent-slots-macro-conflicts-with-Qt.patch" # fixed in pybind-3.0.1
|
| 143 |
|
"${DISTDIR}/${PN}-20710.patch" # DESTDIR in env
|
| 144 |
|
"${DISTDIR}/${PN}-21433.patch" # FindHDF5 fails to find HDF5 after a failing pkg_search_module
|
| 145 |
|
"${FILESDIR}"/${P}-boost-1.89.patch # bug 969041
|
|
145 |
"${FILESDIR}/${PN}-9999-Gentoo-specific-don-t-check-vcs.patch"
|
|
146 |
"${FILESDIR}/${PN}-9999-tests-src-Qt-only-build-test-for-BUILD_GUI-ON.patch"
|
|
147 |
"${FILESDIR}/${PN}-1.1.0-boost_system.patch"
|
|
148 |
"${FILESDIR}/${PN}-1.1.3-gcc-17-fstream.patch"
|
|
149 |
"${FILESDIR}/${PN}-1.1.3-skip-unicode-test.patch"
|
| 146 |
150 |
)
|
| 147 |
151 |
|
| 148 |
152 |
DOCS=( CODE_OF_CONDUCT.md README.md )
|
| ... | ... | |
| 258 |
262 |
python-single-r1_pkg_setup
|
| 259 |
263 |
}
|
| 260 |
264 |
|
|
265 |
src_unpack() {
|
|
266 |
if [[ ${PV} == *9999* ]]; then
|
|
267 |
# only fetch/unpack if used
|
|
268 |
if use addonmgr; then
|
|
269 |
EGIT_SUBMODULES+=( 'src/Mod/AddonManager' )
|
|
270 |
fi
|
|
271 |
|
|
272 |
git-r3_src_unpack
|
|
273 |
else
|
|
274 |
# release archive does not contain a top-level directory...
|
|
275 |
mkdir -p "${S}" || die
|
|
276 |
cd "${S}" || die
|
|
277 |
unpack ${A}
|
|
278 |
fi
|
|
279 |
}
|
|
280 |
|
| 261 |
281 |
src_prepare() {
|
| 262 |
|
# deprecated in python-3.11 removed in python-3.13
|
| 263 |
|
sed -e '/import imghdr/d' -i src/Mod/CAM/CAMTests/TestCAMSanity.py || die
|
|
282 |
sed \
|
|
283 |
-e '/include( ccache )/s/^/# /g' \
|
|
284 |
-e '/include( ClangFormat )/s/^/# /g' \
|
|
285 |
-i src/3rdParty/libE57Format/CMakeLists.txt || die
|
| 264 |
286 |
|
| 265 |
|
# The PCL point_traits.h header was renamed (and deprecated) since 1.11.0 and removed in 1.15.0.
|
| 266 |
|
# d9e731ca94abc14808ebeed208617116f6d5ea4a
|
| 267 |
|
sed -e 's#pcl/point_traits.h#pcl/type_traits.h#g' -i src/Mod/ReverseEngineering/App/SurfaceTriangulation.cpp || die
|
|
287 |
# TODO
|
|
288 |
sed -e '/TestExternalFacePreselection/d' -i src/Mod/Sketcher/TestSketcherGui.py || die
|
| 268 |
289 |
|
| 269 |
290 |
# removed bundled pycxx
|
| 270 |
291 |
if [[ ${PV} != *9999* ]]; then
|
| 271 |
|
rm -r src/CXX || die "remove bundled pycxx"
|
|
292 |
rm -r src/3rdParty/PyCXX || die "remove bundled pycxx"
|
| 272 |
293 |
fi
|
| 273 |
294 |
|
| 274 |
295 |
cmake_src_prepare
|
| ... | ... | |
| 287 |
308 |
fi
|
| 288 |
309 |
|
| 289 |
310 |
local mycmakeargs=(
|
| 290 |
|
-DFREECAD_USE_CCACHE="no" # Do not use CCache
|
| 291 |
|
|
| 292 |
|
-DCMAKE_POLICY_DEFAULT_CMP0144="OLD" # FLANN_ROOT
|
| 293 |
|
-DCMAKE_POLICY_DEFAULT_CMP0167="OLD" # FindBoost
|
| 294 |
|
-DCMAKE_POLICY_DEFAULT_CMP0175="OLD" # add_custom_command
|
| 295 |
|
-DCMAKE_POLICY_DEFAULT_CMP0153="OLD" # exec_program
|
|
311 |
"$(cmake_use_find_package "spacenav" "Spnav")"
|
| 296 |
312 |
|
| 297 |
|
-DPYCXX_INCLUDE_DIR="${ESYSROOT}/usr/include/${PYTHON_SINGLE_TARGET/_/.}"
|
|
313 |
-DPYCXX_INCLUDE_DIRS="${ESYSROOT}/usr/include/${PYTHON_SINGLE_TARGET/_/.}"
|
| 298 |
314 |
-DPYCXX_SOURCE_DIR="${ESYSROOT}/usr/share/${PYTHON_SINGLE_TARGET/_/.}/CXX"
|
| 299 |
315 |
|
| 300 |
316 |
-DBUILD_DESIGNER_PLUGIN=$(usex designer)
|
| ... | ... | |
| 309 |
325 |
-DBUILD_ASSEMBLY=$(usex assembly)
|
| 310 |
326 |
-DBUILD_BIM=$(usex bim)
|
| 311 |
327 |
-DBUILD_CAM=$(usex cam)
|
| 312 |
|
-DBUILD_CLOUD=$(usex cloud)
|
| 313 |
328 |
-DBUILD_DRAFT=ON
|
| 314 |
329 |
# see below for DRAWING
|
| 315 |
330 |
-DBUILD_FEM=$(usex fem)
|
| ... | ... | |
| 352 |
367 |
|
| 353 |
368 |
-DFREECAD_BUILD_DEBIAN=OFF
|
| 354 |
369 |
|
|
370 |
-DE57_ENABLE_DIAGNOSTIC_OUTPUT="no"
|
|
371 |
-DE57_VALIDATION_LEVEL=0
|
|
372 |
|
|
373 |
# -DFREECAD_PARALLEL_COMPILE_JOBS=""
|
|
374 |
# -DFREECAD_PARALLEL_LINK_JOBS=""
|
|
375 |
|
|
376 |
-DFREECAD_USE_3DCONNEXION_LEGACY="no"
|
|
377 |
-DFREECAD_USE_CCACHE="no" # Do not use CCache
|
|
378 |
|
|
379 |
-DFREECAD_USE_EXTERNAL_CLIPPER2="yes"
|
|
380 |
-DFREECAD_USE_EXTERNAL_COIN_PIVY="yes"
|
| 355 |
381 |
-DFREECAD_USE_EXTERNAL_E57FORMAT="no"
|
| 356 |
382 |
-DFREECAD_USE_EXTERNAL_GTEST="$(usex test)"
|
|
383 |
-DFREECAD_USE_EXTERNAL_JSON="yes"
|
|
384 |
-DFREECAD_USE_EXTERNAL_KDL=OFF # https://github.com/FreeCAD/FreeCAD/commit/9f98866
|
|
385 |
-DFREECAD_USE_EXTERNAL_KDTREE=OFF
|
| 357 |
386 |
-DFREECAD_USE_EXTERNAL_ONDSELSOLVER=$(usex assembly)
|
|
387 |
-DFREECAD_USE_EXTERNAL_PYCXX="no"
|
| 358 |
388 |
-DFREECAD_USE_EXTERNAL_SMESH=OFF # no package in Gentoo
|
| 359 |
389 |
-DFREECAD_USE_EXTERNAL_ZIPIOS=OFF # doesn't work yet, also no package in Gentoo tree
|
| 360 |
|
-DFREECAD_USE_EXTERNAL_FMT="yes"
|
| 361 |
|
-DFREECAD_USE_EXTERNAL_KDL=OFF # https://github.com/FreeCAD/FreeCAD/commit/9f98866
|
|
390 |
|
| 362 |
391 |
-DFREECAD_USE_FREETYPE=ON
|
|
392 |
-Dfreetype_DIR="${ESYSROOT}/usr"
|
| 363 |
393 |
-DFREECAD_USE_OCC_VARIANT:STRING="Official Version"
|
| 364 |
394 |
-DFREECAD_USE_PCL=$(usex pcl)
|
| 365 |
|
-DFREECAD_USE_PYBIND11=ON
|
| 366 |
|
-DFREECAD_USE_QT_FILEDIALOG=ON
|
|
395 |
# -DFREECAD_USE_PYBIND11=ON
|
|
396 |
-DFREECAD_USE_PYSIDE="yes"
|
|
397 |
-DFREECAD_USE_QT_DIALOGS="yes"
|
|
398 |
# -DFREECAD_USE_QT_FILEDIALOG=ON
|
|
399 |
-DFREECAD_USE_SHIBOKEN="yes"
|
| 367 |
400 |
|
| 368 |
401 |
# install python modules to site-packages' dir. True only for the main package,
|
| 369 |
402 |
# sub-packages will still be installed inside /usr/lib64/freecad
|
| ... | ... | |
| 385 |
418 |
mycmakeargs+=(
|
| 386 |
419 |
-DENABLE_DEVELOPER_TESTS=OFF
|
| 387 |
420 |
|
| 388 |
|
-DPACKAGE_WCREF="${PVR} (gentoo)"
|
|
421 |
-DPACKAGE_WCREF="${PVR} (${BRANDING_OS_NAME})"
|
| 389 |
422 |
-DPACKAGE_WCURL="git://github.com/FreeCAD/FreeCAD.git ${PV}"
|
| 390 |
423 |
)
|
| 391 |
424 |
fi
|
| ... | ... | |
| 419 |
452 |
-DFREECAD_QT_MAJOR_VERSION=6
|
| 420 |
453 |
-DFREECAD_QT_VERSION=6
|
| 421 |
454 |
-DQT_DEFAULT_MAJOR_VERSION=6
|
| 422 |
|
-DQt6Core_MOC_EXECUTABLE="$(qt_get_broot_binary 6 moc)"
|
| 423 |
|
-DQt6Core_RCC_EXECUTABLE="$(qt_get_broot_binary 6 rcc)"
|
| 424 |
455 |
-DBUILD_QT5=OFF
|
| 425 |
456 |
# Drawing module unmaintained and not ported to qt6
|
| 426 |
457 |
-DBUILD_DRAWING=OFF
|
| ... | ... | |
| 434 |
465 |
# for two reasons:
|
| 435 |
466 |
# 1. It works out of the box with USE=-gui as well, not needing a guard
|
| 436 |
467 |
# 2. We don't need virtualx.eclass and its dependencies
|
| 437 |
|
# The environment variables are needed, so that FreeCAD knows
|
| 438 |
|
# where to save its temporary files, and where to look and write its
|
| 439 |
|
# configuration. Without those, there is a sandbox violation, when it
|
| 440 |
|
# tries to create /var/lib/portage/home/.FreeCAD directory.
|
| 441 |
468 |
src_test() {
|
| 442 |
|
cd "${BUILD_DIR}" || die
|
|
469 |
# Fails because translated names are used otherwise
|
|
470 |
local -x LANG="en_US.UTF-8"
|
|
471 |
|
|
472 |
# The environment variables are needed, so that FreeCAD knows
|
|
473 |
# where to save its temporary files, and where to look and write its
|
|
474 |
# configuration. Without those, there is a sandbox violation, when it
|
|
475 |
# tries to create /var/lib/portage/home/.FreeCAD directory.
|
|
476 |
local -x FREECAD_USER_HOME="${T}/home"
|
|
477 |
local -x FREECAD_USER_DATA="${T}/data"
|
|
478 |
local -x FREECAD_USER_TEMP="${T}/temp"
|
| 443 |
479 |
|
| 444 |
|
[[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
|
|
480 |
mkdir -p "${FREECAD_USER_HOME}" "${FREECAD_USER_DATA}" "${FREECAD_USER_TEMP}" || die
|
|
481 |
|
|
482 |
cd "${BUILD_DIR}" || die
|
| 445 |
483 |
|
| 446 |
484 |
if use bim; then
|
| 447 |
485 |
# No module named 'ifcopenshell' #940465
|
| 448 |
|
rm "${BUILD_DIR}/Mod/BIM/nativeifc/ifc_performance_test.py" || die
|
|
486 |
rm "Mod/BIM/nativeifc/ifc_performance_test.py" || die
|
| 449 |
487 |
fi
|
| 450 |
488 |
|
| 451 |
489 |
if use cam; then
|
| ... | ... | |
| 454 |
492 |
sed -e '/test47/a \ return' -i "Mod/CAM/CAMTests/TestPathOpUtil.py" || die
|
| 455 |
493 |
fi
|
| 456 |
494 |
|
| 457 |
|
local -x EPYTEST_IGNORE=(
|
| 458 |
|
"Mod/BIM/nativeifc/ifc_performance_test.py"
|
| 459 |
|
)
|
| 460 |
|
|
| 461 |
495 |
if ! use openscad ; then
|
| 462 |
496 |
EPYTEST_IGNORE+=(
|
| 463 |
497 |
"Mod/OpenSCAD/OpenSCADTest/app/test_importCSG.py"
|
| ... | ... | |
| 465 |
499 |
)
|
| 466 |
500 |
fi
|
| 467 |
501 |
|
| 468 |
|
local -x CMAKE_SKIP_TESTS=(
|
| 469 |
|
"^ConstraintPointsAccess."
|
| 470 |
|
)
|
|
502 |
# # TODO coin? pivy?
|
|
503 |
# sed \
|
|
504 |
# -e '/self.assertTrue(pc.getTriangleCount/i \ print(pc.getTriangleCount())' \
|
|
505 |
# -e '/self.assertTrue(pc.getTriangleCount/s/self/# /' \
|
|
506 |
# -i Mod/Mesh/MeshTestsApp.py || die
|
| 471 |
507 |
|
| 472 |
|
local -x FREECAD_USER_HOME="${HOME}"
|
| 473 |
|
local -x FREECAD_USER_DATA="${T}/data"
|
| 474 |
|
local -x FREECAD_USER_TEMP="${T}/temp"
|
|
508 |
local -x EPYTEST_IGNORE=(
|
|
509 |
"Mod/BIM/nativeifc/ifc_performance_test.py"
|
|
510 |
)
|
| 475 |
511 |
|
| 476 |
|
mkdir -p "${FREECAD_USER_DATA}" "${FREECAD_USER_TEMP}" || die
|
|
512 |
local CMAKE_SKIP_TESTS=(
|
|
513 |
"^AttachExtensionTest.testEmptyLegacySupportDoesNotClearAttachmentSupport$"
|
|
514 |
"^AttachExtensionTest.testNonEmptyLegacySupportReplacesAttachmentSupport$"
|
|
515 |
"^LinkArrayPolarTest.expandedElementsFollowPatternPlacementChanges$"
|
|
516 |
"^LinkArrayPolarTest.suppressedExpandedElementIsOmittedFromSubObjects$"
|
|
517 |
"^TestLineFormat.setQColorKeepsOpaqueColorsOpaque$"
|
|
518 |
"^TestLineFormat.setQColorPreservesAlphaValue$"
|
|
519 |
)
|
| 477 |
520 |
|
| 478 |
521 |
local failed=()
|
| 479 |
|
local run
|
| 480 |
522 |
|
| 481 |
|
if \
|
| 482 |
|
! nonfatal \
|
| 483 |
|
edo \
|
| 484 |
|
"${BUILD_DIR}/bin/FreeCADCmd" \
|
| 485 |
|
--run-test 0 \
|
| 486 |
|
--set-config AppHomePath="${BUILD_DIR}/" \
|
| 487 |
|
--log-file "${T}/FreeCADCmd.log"; then
|
| 488 |
|
ret=$?
|
| 489 |
|
eerror "FreeCADCmd failed $ret"
|
| 490 |
|
failed+=( "FreeCADCmd" )
|
| 491 |
|
fi
|
| 492 |
|
|
| 493 |
|
if use gui; then
|
| 494 |
|
addpredict "/dev/char/"
|
| 495 |
|
addwrite "/dev/dri/renderD128"
|
| 496 |
|
addwrite "/dev/dri/card0"
|
|
523 |
run_freecad() {
|
|
524 |
if [[ $# -ne 1 && $# -ne 2 ]]; then
|
|
525 |
eerror "$0: usage <cmd> [<runner>]"
|
|
526 |
die "$0: usage <cmd> <runner>"
|
|
527 |
fi
|
| 497 |
528 |
|
| 498 |
|
[[ -c "/dev/nvidiactl" ]] && addwrite "/dev/nvidiactl"
|
| 499 |
|
[[ -c "/dev/nvidia-uvm" ]] && addwrite "/dev/nvidia-uvm"
|
| 500 |
|
[[ -c "/dev/nvidia-uvm-tools" ]] && addwrite "/dev/nvidia-uvm-tools"
|
| 501 |
|
[[ -c "/dev/nvidia0" ]] && addwrite "/dev/nvidia0"
|
|
529 |
local cmd="${1}"
|
|
530 |
local run="${2}"
|
| 502 |
531 |
|
| 503 |
|
[[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
|
|
532 |
if use debug; then
|
|
533 |
nonfatal \
|
|
534 |
${run} \
|
|
535 |
edo \
|
|
536 |
"${BUILD_DIR}/bin/${cmd}" \
|
|
537 |
--set-config AppHomePath="${BUILD_DIR}/" \
|
|
538 |
--dump-config &> "${T}/${cmd}_config.log"
|
|
539 |
fi
|
| 504 |
540 |
|
| 505 |
541 |
if \
|
| 506 |
542 |
! nonfatal \
|
| 507 |
|
virtx \
|
|
543 |
${run} \
|
| 508 |
544 |
edo \
|
| 509 |
|
"${BUILD_DIR}/bin/FreeCAD" \
|
|
545 |
"${BUILD_DIR}/bin/${cmd}" \
|
| 510 |
546 |
--run-test 0 \
|
| 511 |
547 |
--set-config AppHomePath="${BUILD_DIR}/" \
|
| 512 |
|
--log-file "${T}/FreeCAD.log" ; then
|
|
548 |
--log-file "${T}/${cmd}.log"
|
|
549 |
then
|
| 513 |
550 |
ret=$?
|
| 514 |
|
eerror "FreeCAD failed $ret"
|
| 515 |
|
failed+=( "FreeCAD" )
|
|
551 |
eerror "${cmd} failed ${ret}"
|
|
552 |
die "${cmd} failed ${ret}"
|
|
553 |
failed+=( "${cmd}" )
|
| 516 |
554 |
fi
|
|
555 |
}
|
| 517 |
556 |
|
|
557 |
if ! use gui; then
|
|
558 |
run_freecad "FreeCADCmd"
|
|
559 |
else
|
| 518 |
560 |
run="virtx"
|
|
561 |
|
|
562 |
addwrite "/dev/dri/renderD128"
|
|
563 |
addwrite "/dev/dri/card0"
|
|
564 |
|
|
565 |
[[ -c "/dev/udmabuf" ]] && addwrite "/dev/udmabuf"
|
|
566 |
|
|
567 |
if [[ -c "/dev/nvidiactl" ]]; then
|
|
568 |
addwrite "/dev/nvidiactl"
|
|
569 |
addpredict "/dev/char/"
|
|
570 |
[[ -c "/dev/nvidia-uvm" ]] && addwrite "/dev/nvidia-uvm"
|
|
571 |
[[ -c "/dev/nvidia-uvm-tools" ]] && addwrite "/dev/nvidia-uvm-tools"
|
|
572 |
[[ -c "/dev/nvidia0" ]] && addwrite "/dev/nvidia0"
|
|
573 |
fi
|
|
574 |
|
|
575 |
# run_freecad "FreeCAD" virtx
|
|
576 |
|
|
577 |
# this runs only the gui tests
|
|
578 |
if \
|
|
579 |
! nonfatal \
|
|
580 |
virtx \
|
|
581 |
${PYTHON} "${S}/.github/scripts/run_gui_tests.py" "${BUILD_DIR}"
|
|
582 |
then
|
|
583 |
ret=$?
|
|
584 |
eerror "$run_gui_tests.py failed ${ret}"
|
|
585 |
die "run_gui_tests.py failed ${ret}"
|
|
586 |
failed+=( "run_gui_tests.py" )
|
|
587 |
fi
|
| 519 |
588 |
fi
|
| 520 |
589 |
|
| 521 |
590 |
if [[ ${PV} == *9999* ]]; then
|
|
591 |
local myctestargs=(
|
|
592 |
# for YamlParameterSourceTest
|
|
593 |
-j1
|
|
594 |
)
|
| 522 |
595 |
if ! nonfatal \
|
| 523 |
|
"${run}" \
|
| 524 |
|
cmake_src_test; then
|
| 525 |
|
eerror "cmake failed $?"
|
| 526 |
|
failed+=( "cmake" )
|
|
596 |
${run} \
|
|
597 |
cmake_src_test
|
|
598 |
then
|
|
599 |
ret=$?
|
|
600 |
eerror "cmake_src_test failed ${ret}"
|
|
601 |
die "cmake_src_test failed ${ret}"
|
|
602 |
failed+=( "cmake_src_test" )
|
| 527 |
603 |
fi
|
| 528 |
604 |
fi
|
| 529 |
605 |
|
| 530 |
606 |
if [[ "${#failed[@]}" -gt 0 ]]; then
|
| 531 |
607 |
eerror "Tests ${failed[*]} failed"
|
| 532 |
|
if ! use debug && [[ ${PV} != *9999* ]]; then
|
|
608 |
# Tests _will_ fail with USE=debug as the reference values change
|
|
609 |
# We want test failures to be fatal for keyworded versions
|
|
610 |
if ! use debug || [[ ${PV} != *9999* ]]; then
|
| 533 |
611 |
die "${failed[@]}"
|
| 534 |
612 |
fi
|
| 535 |
613 |
fi
|
| ... | ... | |
| 540 |
618 |
|
| 541 |
619 |
if use gui; then
|
| 542 |
620 |
newbin - FreeCAD <<- _EOF_
|
| 543 |
|
#!/bin/sh
|
|
621 |
#!/usr/bin/env sh
|
| 544 |
622 |
# https://github.com/coin3d/coin/issues/451
|
| 545 |
623 |
: "\${QT_QPA_PLATFORM:=xcb}"
|
| 546 |
624 |
export QT_QPA_PLATFORM
|
| ... | ... | |
| 551 |
629 |
|
| 552 |
630 |
if [[ -f src/Tools/freecad-thumbnailer ]]; then
|
| 553 |
631 |
dobin src/Tools/freecad-thumbnailer
|
|
632 |
else
|
|
633 |
dosym -r "/usr/$(get_libdir)/${PN}/bin/freecad-thumbnailer" "/usr/bin/freecad-thumbnailer"
|
| 554 |
634 |
fi
|
| 555 |
635 |
|
| 556 |
636 |
for dir in share/{applications,icons,metainfo,mime,pixmaps,thumbnailers}; do
|
| ... | ... | |
| 568 |
648 |
pkg_postinst() {
|
| 569 |
649 |
xdg_pkg_postinst
|
| 570 |
650 |
|
| 571 |
|
einfo "You can load a lot of additional workbenches using the integrated"
|
| 572 |
|
einfo "AddonManager."
|
|
651 |
einfo ""
|
|
652 |
einfo "You can load a lot of additional workbenches using the integrated AddonManager."
|
|
653 |
einfo ""
|
|
654 |
einfo "There are a lot of additional tools, for which FreeCAD has builtin support."
|
|
655 |
einfo "Some of them are available in Gentoo."
|
|
656 |
einfo "Take a look at:"
|
|
657 |
einfo " https://wiki.freecad.org/Installing_additional_components"
|
|
658 |
einfo ""
|
| 573 |
659 |
|
| 574 |
|
einfo "There are a lot of additional tools, for which FreeCAD has builtin"
|
| 575 |
|
einfo "support. Some of them are available in Gentoo. Take a look at"
|
| 576 |
|
einfo "https://wiki.freecad.org/Installing_additional_components"
|
| 577 |
660 |
optfeature_header "External programs used by FreeCAD"
|
| 578 |
661 |
optfeature "dependency graphs" media-gfx/graphviz
|
| 579 |
662 |
optfeature "importing and exporting 2D AutoCAD DWG files" media-gfx/libredwg
|
| 580 |
663 |
optfeature "importing OpenSCAD files, Mesh booleans" media-gfx/openscad
|
| 581 |
|
use bim && optfeature "working with COLLADA documents" dev-python/pycollada
|
|
664 |
if use bim; then
|
|
665 |
optfeature "working with COLLADA documents" dev-python/pycollada
|
|
666 |
fi
|
| 582 |
667 |
if use fem || use mesh; then
|
| 583 |
668 |
optfeature "mesh generation" sci-libs/gmsh
|
|
669 |
optfeature "mesh solver" sci-libs/calculix-ccx
|
| 584 |
670 |
fi
|
| 585 |
671 |
|
| 586 |
672 |
if use python_single_target_python3_13; then
|