diff options
Diffstat (limited to 'media-gfx/openscad')
-rw-r--r-- | media-gfx/openscad/Manifest | 8 | ||||
-rw-r--r-- | media-gfx/openscad/metadata.xml | 5 | ||||
-rw-r--r-- | media-gfx/openscad/openscad-2024.12.30_pre.ebuild | 2 | ||||
-rw-r--r-- | media-gfx/openscad/openscad-2025.05.01_pre.ebuild | 290 | ||||
-rw-r--r-- | media-gfx/openscad/openscad-9999.ebuild | 46 |
5 files changed, 332 insertions, 19 deletions
diff --git a/media-gfx/openscad/Manifest b/media-gfx/openscad/Manifest index c2c99989ff8a..6ecfeb79cd89 100644 --- a/media-gfx/openscad/Manifest +++ b/media-gfx/openscad/Manifest @@ -1,9 +1,11 @@ DIST openscad-2024.12.30_pre.tar.gz 25338952 BLAKE2B 41baa7f5df30e46611a2ef59dc0aa05ccb85644dddfb979224b5b026f1b9338285eecd50e2078543163621c89fbc81e97b7593b641a223b48ca02029962f8076 SHA512 e63ac792c16852c1bbdf06a3cb044b453e05c20a95158adddbc09239bcf228fd113a6e33f83d5580e615ecab3cdab8436da9e21d2ab3c3f8846f66219218713b DIST openscad-20241114.tar.gz 25288312 BLAKE2B 0c1a9b4b15c12f4b3b600e81cdb5eeddb34887c83e2ae67735d7221b6660730dc5e7f97f80b84d187772adfa20d15e20f0cded1b4937e26305434847bbf2af27 SHA512 6c66c09e4b72ec5ef200d077b58fcb7a5a9acd359551a5daebdc3e24cb2cb7ed7d607b04e5563ea6f14d9d929310c3a9194ac889f2530c2c933235271040981a +DIST openscad-2025.05.01_pre.tar.gz 24447451 BLAKE2B fb7575d254e8c80028c639493515c008cfaa23c6d98cd4857c6d71161451a90d8fcbc43c56202902eab3e6eea5a5e8c7df77a9d25d37247315b3aba8b4e3658a SHA512 6eaf7c9b0998d2cc02573aa148a36aa2fe8a7082a5b16f29f4848e95944db63e5948fbcc3aec91833517ff20740fa24e3b104e77a1052c7771630c57b4696b1f DIST openscad-MCAD-bd0a7ba3f042bfbced5ca1894b236cea08904e26.tar.gz 58895 BLAKE2B e154a38e1c36873a34f7c80b8fa484e4bbcb1b0c217e15b977e6cedc9a83fd2e1518791f9a58a4f0e893c2a55947d7eaddb660d8b725eca048c30f0ea41cf14a SHA512 c6208a90f6a58ebdc0477d3e1b6be2f52e4ce976ac619a87818437cb9696b7e83285564fde757d32efaf50033d5217b55f67b6ce342250de838dd09fef334f36 DIST sanitizers-cmake-0573e2ea8651b9bb3083f193c41eb086497cc80a.tar.gz 7495 BLAKE2B 57efaac8861755fd7fe3a9c9db2a68f775169ef82b91fbcf44da375540dce7673f319908c0d1a8ac324584bc217f9e2a1e27d6f935fe84f1f640049324ea3b24 SHA512 80d1c471492a771b12291e36cc7523e65c8f9add5b14643c9554156bbcc3e1753772054998306c3f89d33b7f5c9969e89670e16428a72040033b41329c9cb71b DIST sanitizers-cmake-3f0542e4e034aab417c51b2b22c94f83355dee15.tar.gz 7451 BLAKE2B 2ca72e3ecda02d4f0eed05be0954af02706425e94626d5a4b9d897968e35c341413171e2388ece7e83dad9eb7b5e2c2f73811ea8db8fa33b0bce6d5dd53550b7 SHA512 10cd4eeb3bbb7bf5c6f5cf8b5bc6a531b1ec8bdc147583d8de028a3e4b8b9d0e258aad81f02135267ce8f7d87b30999dedd25b44c0754b5c31e00d8481cd412f EBUILD openscad-2024.11.14_pre.ebuild 5214 BLAKE2B c8ab3db3169109eb1c89caa47d755b8a915ccc666907bd049836b52e0922a90a12538c648553f6c7c0d244f42f2bc5a66f645b954607e3a3524f65a8853727b4 SHA512 f54d0b43727700affe64cf1fafb0904f5099bffb54cb4d4d87e0c77b6f93a194b6ec4493a1634cc8c9d863594c0742a87a4ac3622f47caeec80a1ab13967e23a -EBUILD openscad-2024.12.30_pre.ebuild 6162 BLAKE2B b29c9f84282a7f96b3247461f00f8ca341d3876c196ff30c9e2823246edd8c69b205083a6cf4d99cab0a3451c0d801b94b110aab543d6ebad164d54333de0974 SHA512 e48153024099dce1ada61fb46cb3835c9c7d2c76779d8f7bb70ea187daaf79ced201808b34837702b459cf5253b127e5ab77f43888b0ff7d1574e68f46b1335a -EBUILD openscad-9999.ebuild 6162 BLAKE2B b29c9f84282a7f96b3247461f00f8ca341d3876c196ff30c9e2823246edd8c69b205083a6cf4d99cab0a3451c0d801b94b110aab543d6ebad164d54333de0974 SHA512 e48153024099dce1ada61fb46cb3835c9c7d2c76779d8f7bb70ea187daaf79ced201808b34837702b459cf5253b127e5ab77f43888b0ff7d1574e68f46b1335a -MISC metadata.xml 1765 BLAKE2B 8663817a4565428f0c78ddc70f5921e66709582773daad5edaf8b28b7603be9626de926c85b3b3ef300cf9932828417118b4f600f8e6e6dd47509efaedff9bda SHA512 5a4cdb759b3934c8e00e713f301c62d173ebfaffe6a2df2e0546c8940fd62573d75f7fa83f3edf881545adbef215b94297b971d386fa87ab7790a77500bf7288 +EBUILD openscad-2024.12.30_pre.ebuild 6161 BLAKE2B b233f2e08c8d517b5f91bdae54e9e3d31ad3749177891a5079ebb1ca3a8cf67831e211dc2aed4f521d69675009f4374d7b831b09cb12271b4b7cda2becb5088a SHA512 2c7d77b36bd5dea032a19bf8ea15402df68c0053afead94e89ecfaefef5f70a9862b1558db3d9de9f29a9267b31cb4b28d480921534750076d5f9a476be135a4 +EBUILD openscad-2025.05.01_pre.ebuild 6440 BLAKE2B 9adde2ef69e3b8f2a1959952cd6ca9c29fae5b03d4a2912d6ea41ec3c0111af8f94a60d3931f314a050ec9bc0bf797c7f42d626f7662f1d06fb263fca2d546e0 SHA512 5afe09a64b2c285e89cdf61157d225e294e0706c3d2155a91327c3b65a1db752f359b360bdddd3c5811a4b18aaeb955725c5d4ca2af15f92eb2b2572ee4ec9a8 +EBUILD openscad-9999.ebuild 6508 BLAKE2B 78a81f4926e69f3ab050229928d1df50b26120e9805bf02862e6028aa1344e3448b5fc253042ec39b8872186418bb6782052a97df35e125d7724705e6d71f382 SHA512 20f487ad8b9c79c7774e7de0eedb805fd5380f3eeda9a3e03373757612654aada6c2893df5a70b98778b8ea769949ad98bbfe51fec5f456a963c69d193f27472 +MISC metadata.xml 1881 BLAKE2B 36730f2f85e9cfe3a1c3a75b254dab47746adf6a67a4668f6583ddb62a14294c830a0f47b4f950e80b8f56fe38593c2cfebb6bd1b5ce608c004f766a3d63c612 SHA512 1bf6a3e622ad4b3707ef0fd57616013038e9d0e6e4832101247464909df1a82d66ce178c2796e6f37d63937aa36b7a30ae044532924fc8d500287a0403c92732 diff --git a/media-gfx/openscad/metadata.xml b/media-gfx/openscad/metadata.xml index 65b56ea5a6ce..4b42831c5774 100644 --- a/media-gfx/openscad/metadata.xml +++ b/media-gfx/openscad/metadata.xml @@ -21,6 +21,9 @@ Mac OS X. </longdescription> <use> + <flag name="cgal"> + Enable cgal render backend via <pkg>sci-mathematics/cgal</pkg> (old/slow) + </flag> <flag name="egl"> Build using EGL instead of GLX </flag> @@ -37,7 +40,7 @@ Build in support for HID-Class devices using <pkg>dev-libs/hidapi</pkg> </flag> <flag name="manifold"> - Enable Manifold render backend via <pkg>sci-mathematics/manifold</pkg> + Enable Manifold render backend via <pkg>sci-mathematics/manifold</pkg> (new/fast) </flag> <flag name="mimalloc"> Build using <pkg>dev-libs/mimalloc</pkg> as memory allocator diff --git a/media-gfx/openscad/openscad-2024.12.30_pre.ebuild b/media-gfx/openscad/openscad-2024.12.30_pre.ebuild index 0361bac9f047..1f607cd9bed1 100644 --- a/media-gfx/openscad/openscad-2024.12.30_pre.ebuild +++ b/media-gfx/openscad/openscad-2024.12.30_pre.ebuild @@ -39,7 +39,7 @@ else else SRC_URI="https://github.com/${PN}/${PN}/releases/download/${P}/${P}.src.tar.gz -> ${P}.tar.gz" fi - KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" + KEYWORDS="amd64 ~arm64 ~ppc64 ~x86" fi # Code is GPL-3+, MCAD library is LGPL-2.1 diff --git a/media-gfx/openscad/openscad-2025.05.01_pre.ebuild b/media-gfx/openscad/openscad-2025.05.01_pre.ebuild new file mode 100644 index 000000000000..9e8513abd734 --- /dev/null +++ b/media-gfx/openscad/openscad-2025.05.01_pre.ebuild @@ -0,0 +1,290 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..13} ) +inherit cmake flag-o-matic optfeature python-any-r1 virtualx xdg + +DESCRIPTION="The Programmers Solid 3D CAD Modeller" +HOMEPAGE="https://openscad.org/" + +if [[ ${PV} = *9999* ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/openscad/openscad.git" + EGIT_SUBMODULES=( + '*' + '-mimalloc' + '-submodules/manifold' + '-OpenCSG' + ) +else + if [[ ${PV} = *pre* ]] ; then + COMMIT="f3cac59bf973502ad4b278fd3f20298f9bc2fc84" + SANITIZERS_CMAKE_COMMIT="0573e2ea8651b9bb3083f193c41eb086497cc80a" + MCAD_COMMIT="bd0a7ba3f042bfbced5ca1894b236cea08904e26" + + SRC_URI=" + https://github.com/openscad/openscad/archive/${COMMIT}.tar.gz + -> ${P}.tar.gz + https://github.com/arsenm/sanitizers-cmake/archive/${SANITIZERS_CMAKE_COMMIT}.tar.gz + -> sanitizers-cmake-${SANITIZERS_CMAKE_COMMIT}.tar.gz + test? ( + https://github.com/openscad/MCAD/archive/${MCAD_COMMIT}.tar.gz -> ${PN}-MCAD-${MCAD_COMMIT}.tar.gz + ) + " + # doc downloads are not versioned and found at: + # https://files.openscad.org/documentation/ + S="${WORKDIR}/${PN}-${COMMIT}" + else + SRC_URI="https://github.com/${PN}/${PN}/releases/download/${P}/${P}.src.tar.gz -> ${P}.tar.gz" + fi + KEYWORDS="~amd64" +fi + +# Code is GPL-3+, MCAD library is LGPL-2.1 +LICENSE="GPL-3+ LGPL-2.1" +SLOT="0" + +IUSE="dbus +egl experimental glx +gui hidapi +manifold mimalloc pdf spacenav test" +RESTRICT="!test? ( test )" + +REQUIRED_USE=" + dbus? ( gui ) + hidapi? ( gui ) + spacenav? ( gui ) + || ( egl glx ) +" + +RDEPEND=" + dev-libs/boost:= + dev-libs/double-conversion:= + dev-libs/glib:2 + dev-libs/libxml2:= + dev-libs/libzip:= + >=media-gfx/opencsg-1.7.0:= + media-libs/fontconfig + media-libs/freetype + media-libs/harfbuzz:= + media-libs/lib3mf:= + media-libs/libglvnd + >=sci-mathematics/clipper2-1.5.2 + sci-mathematics/cgal:= + glx? ( + media-libs/libglvnd[X] + ) + gui? ( + dev-qt/qt5compat:6 + dev-qt/qtbase:6[concurrent,dbus?,-gles2-only,network,opengl,widgets] + dev-qt/qtmultimedia:6 + dev-qt/qtsvg:6 + x11-libs/qscintilla:=[qt6] + ) + hidapi? ( dev-libs/hidapi ) + manifold? ( + dev-cpp/tbb:= + >=sci-mathematics/manifold-3.0.2_pre20250330 + ) + mimalloc? ( dev-libs/mimalloc:= ) + pdf? ( x11-libs/cairo ) + spacenav? ( dev-libs/libspnav ) +" +DEPEND=" + ${RDEPEND} + dev-cpp/eigen:3 +" +BDEPEND=" + app-alternatives/yacc + app-alternatives/lex + dev-util/itstool + sys-devel/gettext + virtual/pkgconfig + test? ( + $(python_gen_any_dep ' + dev-python/numpy[${PYTHON_USEDEP}] + dev-python/pillow[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] + ') + ) +" + +DOCS=( + README.md + RELEASE_NOTES.md + doc/contributor_copyright.txt + doc/hacking.md + doc/testing.txt + doc/translation.txt +) + +# NOTE the build system sets up a venv for tests, we could use imagemagick with -DUSE_IMAGE_COMPARE_PY="no" +python_check_deps() { + python_has_version "dev-python/numpy[${PYTHON_USEDEP}]" && + python_has_version "dev-python/pillow[${PYTHON_USEDEP}]" && + python_has_version "dev-python/pip[${PYTHON_USEDEP}]" +} + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_prepare() { + if use test && [[ ${PV} != *9999* ]] ; then + mv -f "${WORKDIR}/MCAD-${MCAD_COMMIT}"/* "${S}/libraries/MCAD/" || die + fi + + # NOTE adhere CMP0167 + # https://cmake.org/cmake/help/latest/policy/CMP0167.html + sed \ + -e '/find_package(Boost/s/)/ CONFIG)/g' \ + -i CMakeLists.txt || die + + cmake_src_prepare +} + +src_configure() { + # -Werror=odr + # https://github.com/openscad/openscad/issues/5239 + filter-lto + + local mycmakeargs=( + -DCLANG_TIDY="no" + -DENABLE_CAIRO="$(usex pdf)" + -DENABLE_CGAL="yes" + -DENABLE_EGL="$(usex egl)" + -DENABLE_GLX="$(usex glx)" + -DENABLE_MANIFOLD="$(usex manifold)" + -DENABLE_PYTHON="no" + -DENABLE_TESTS="$(usex test)" + + -DEXPERIMENTAL="$(usex experimental)" + + -DHEADLESS="$(usex !gui)" + -DUSE_BUILTIN_CLIPPER2="no" + -DUSE_BUILTIN_MANIFOLD="no" + -DUSE_CCACHE="no" + -DUSE_GLAD="yes" + -DUSE_GLEW="no" + -DUSE_MIMALLOC="$(usex mimalloc)" + -DUSE_QT6="$(usex gui)" + -DOFFLINE_DOCS="no" # TODO + -DOPENCSG_DIR="${EPREFIX}/usr/$(get_libdir)" + ) + + if use gui; then + mycmakeargs+=( + -DENABLE_HIDAPI="$(usex hidapi)" + -DENABLE_QTDBUS="$(usex dbus)" + -DENABLE_SPNAV="$(usex spacenav)" + ) + fi + + if [[ ${PV} != *9999* ]] ; then + mycmakeargs+=( + -DCMAKE_MODULE_PATH="${WORKDIR}/sanitizers-cmake-${SANITIZERS_CMAKE_COMMIT}/cmake" + ) + if [[ ${PV} = *pre* ]] ; then + mycmakeargs+=( + -DOPENSCAD_COMMIT="${COMMIT:0:9}" + -DOPENSCAD_VERSION="$(ver_cut 1-3)" + -DSNAPSHOT="yes" + ) + fi + else + mycmakeargs+=( + -DOPENSCAD_COMMIT="${COMMIT:0:9}" + -DSNAPSHOT="yes" + ) + fi + + cmake_src_configure +} + +src_test() { + local i WRITE=() + + # mesa will make use of udmabuf if it exists + if [[ -c "/dev/udmabuf" ]]; then + WRITE+=( + "/dev/udmabuf" + ) + fi + + if [[ -d /sys/module/nvidia ]]; then + # /dev/dri/card* + # /dev/dri/renderD* + readarray -t dri <<<"$( + find /sys/module/nvidia/drivers/*/*:*:*.*/drm \ + -mindepth 1 -maxdepth 1 -type d -exec basename {} \; \ + | sed 's:^:/dev/dri/:' + )" + + # /dev/nvidia{0-9} + readarray -t cards <<<"$(find /dev -regextype sed -regex '/dev/nvidia[0-9]*')" + + WRITE+=( + "${dri[@]}" + "${cards[@]}" + "/dev/nvidiactl" + "/dev/nvidia-caps/" + "/dev/nvidia-modeset" + "/dev/nvidia-uvm" + "/dev/nvidia-uvm-tools" + ) + fi + + WRITE+=( + # for portage + "/proc/self/task/" + ) + for i in "${WRITE[@]}"; do + if [[ ! -w "$i" ]]; then + eqawarn "addwrite $i" + addwrite "$i" + + if [[ ! -d "$i" ]] && [[ ! -w "$i" ]]; then + eqawarn "can not access $i after addwrite" + fi + fi + done + + addpredict "/dev/char/" + + sed \ + -e "s/OPENSCAD_BINARY/OPENSCADPATH/g" \ + -i tests/test_cmdline_tool.py || die + + cd "${BUILD_DIR}" || die + + # NOTE link in from CMAKE_USE_DIR + ln -s "${CMAKE_USE_DIR}/color-schemes" . || die + ln -s "${CMAKE_USE_DIR}/locale" . || die + ln -s "${CMAKE_USE_DIR}/shaders" . || die + + local -x CMAKE_SKIP_TESTS=() + + if ! has_version app-text/ghostscript-gpl ; then + CMAKE_SKIP_TESTS+=( + # needs GS + "^export-pdf_centered$" + "^export-pdf_simple-pdf$" + ) + fi + + virtx cmake_src_test +} + +src_install() { + DOCS+=( doc/*.pdf ) + + cmake_src_install + + mv -i "${ED}"/usr/share/openscad/locale "${ED}"/usr/share || die "failed to move locales" + dosym -r /usr/share/locale /usr/share/openscad/locale +} + +pkg_postinst() { + xdg_pkg_postinst + + optfeature "support scad major mode in GNU Emacs" app-emacs/scad-mode +} diff --git a/media-gfx/openscad/openscad-9999.ebuild b/media-gfx/openscad/openscad-9999.ebuild index 0361bac9f047..62eeeda92a4d 100644 --- a/media-gfx/openscad/openscad-9999.ebuild +++ b/media-gfx/openscad/openscad-9999.ebuild @@ -3,7 +3,7 @@ EAPI=8 -PYTHON_COMPAT=( python3_{10..13} ) +PYTHON_COMPAT=( python3_{11..13} ) inherit cmake flag-o-matic optfeature python-any-r1 virtualx xdg DESCRIPTION="The Programmers Solid 3D CAD Modeller" @@ -20,7 +20,7 @@ if [[ ${PV} = *9999* ]] ; then ) else if [[ ${PV} = *pre* ]] ; then - COMMIT="756e080c7e49072d9926cf9ce766def180a0dcae" + COMMIT="f3cac59bf973502ad4b278fd3f20298f9bc2fc84" SANITIZERS_CMAKE_COMMIT="0573e2ea8651b9bb3083f193c41eb086497cc80a" MCAD_COMMIT="bd0a7ba3f042bfbced5ca1894b236cea08904e26" @@ -46,10 +46,11 @@ fi LICENSE="GPL-3+ LGPL-2.1" SLOT="0" -IUSE="dbus +egl experimental glx +gui hidapi +manifold mimalloc pdf spacenav test" +IUSE="cgal dbus +egl experimental glx +gui hidapi +manifold mimalloc pdf spacenav test" RESTRICT="!test? ( test )" REQUIRED_USE=" + || ( cgal manifold ) dbus? ( gui ) hidapi? ( gui ) spacenav? ( gui ) @@ -60,15 +61,21 @@ RDEPEND=" dev-libs/boost:= dev-libs/double-conversion:= dev-libs/glib:2 - dev-libs/libxml2 + dev-libs/libxml2:= dev-libs/libzip:= - media-gfx/opencsg:= + >=media-gfx/opencsg-1.7.0:= media-libs/fontconfig media-libs/freetype media-libs/harfbuzz:= media-libs/lib3mf:= - sci-mathematics/cgal:= - media-libs/libglvnd[X] + media-libs/libglvnd + >=sci-mathematics/clipper2-1.5.2 + cgal? ( + sci-mathematics/cgal:= + ) + glx? ( + media-libs/libglvnd[X] + ) gui? ( dev-qt/qt5compat:6 dev-qt/qtbase:6[concurrent,dbus?,-gles2-only,network,opengl,widgets] @@ -78,8 +85,8 @@ RDEPEND=" ) hidapi? ( dev-libs/hidapi ) manifold? ( - dev-cpp/tbb - >=sci-mathematics/manifold-3.0.1 + dev-cpp/tbb:= + >=sci-mathematics/manifold-3.0.2_pre20250330 ) mimalloc? ( dev-libs/mimalloc:= ) pdf? ( x11-libs/cairo ) @@ -107,7 +114,6 @@ BDEPEND=" DOCS=( README.md RELEASE_NOTES.md - doc/TODO.txt doc/contributor_copyright.txt doc/hacking.md doc/testing.txt @@ -147,7 +153,7 @@ src_configure() { local mycmakeargs=( -DCLANG_TIDY="no" -DENABLE_CAIRO="$(usex pdf)" - -DENABLE_CGAL="yes" + -DENABLE_CGAL="$(usex cgal)" -DENABLE_EGL="$(usex egl)" -DENABLE_GLX="$(usex glx)" -DENABLE_MANIFOLD="$(usex manifold)" @@ -162,7 +168,6 @@ src_configure() { -DUSE_CCACHE="no" -DUSE_GLAD="yes" -DUSE_GLEW="no" - -DUSE_LEGACY_RENDERERS="no" -DUSE_MIMALLOC="$(usex mimalloc)" -DUSE_QT6="$(usex gui)" -DOFFLINE_DOCS="no" # TODO @@ -201,7 +206,8 @@ src_configure() { src_test() { local i WRITE=() - if [[ -d "/dev/udmabuf" ]]; then + # mesa will make use of udmabuf if it exists + if [[ -c "/dev/udmabuf" ]]; then WRITE+=( "/dev/udmabuf" ) @@ -245,6 +251,8 @@ src_test() { fi done + addpredict "/dev/char/" + sed \ -e "s/OPENSCAD_BINARY/OPENSCADPATH/g" \ -i tests/test_cmdline_tool.py || die @@ -256,7 +264,17 @@ src_test() { ln -s "${CMAKE_USE_DIR}/locale" . || die ln -s "${CMAKE_USE_DIR}/shaders" . || die - virtx cmake_src_test -j1 + local -x CMAKE_SKIP_TESTS=() + + if ! has_version app-text/ghostscript-gpl ; then + CMAKE_SKIP_TESTS+=( + # needs GS + "^export-pdf_centered$" + "^export-pdf_simple-pdf$" + ) + fi + + virtx cmake_src_test } src_install() { |