From d8e07152d761920c5f5a428590eee3424b7307d2 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 10 Sep 2026 17:31:55 +0200 Subject: [PATCH 1/3] cgal: Add version 5.6.3 CGAL is a C++ library of computational geometry algorithms. openscad uses it for its exact CSG kernel, so it is needed to build openscad. The upstream *-library tarball is the header-only distribution without the examples, demos and test suite, so there is nothing to compile: the package just installs the headers plus the CMake config files. 5.6.3 is the last release of the 5.x branch, released on 2025-08-22. CGAL 6 removed a number of interfaces that openscad 2021.01 still uses, so do not go beyond 5.x until openscad is updated. Assisted-by: Claude Opus 5 --- cgal.be0 | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 cgal.be0 diff --git a/cgal.be0 b/cgal.be0 new file mode 100755 index 000000000..40f5a97e2 --- /dev/null +++ b/cgal.be0 @@ -0,0 +1,34 @@ +#!/usr/bin/env beesh + +# BEE_VERSION cgal-5.6.3-0 + +# more info: https://www.cgal.org/ + +# https://github.com/CGAL/cgal/releases/download/v${PKGVERSION}/CGAL-${PKGVERSION}-library.tar.xz +SRCURL[0]="https://beehive.molgen.mpg.de/ad04620c9b6f80b666803bce6db943e4/CGAL-5.6.3-library.tar.xz" + +# PATCHURL+=() + +# build_in_sourcedir + +# sourcesubdir_append src + +#mee_extract() { +# bee_extract "${@}" +#} + +#mee_patch() { +# bee_patch "${@}" +#} + +#mee_configure() { +# bee_configure +#} + +#mee_build() { +# bee_build +#} + +#mee_install() { +# bee_install +#} From db7bdaaa99e71d334663b8ad627e1a9a813469fc Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 10 Sep 2026 17:32:10 +0200 Subject: [PATCH 2/3] opencsg: Add version 1.8.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OpenCSG renders constructive solid geometry on the GPU with image-based CSG algorithms. openscad uses it for the interactive preview, so it is needed to build openscad. Version 1.8.2 was released on 2025-01-05. Only the library and its single header are installed; upstream’s example is a GLUT demo that is never installed, so turn it off and avoid the freeglut dependency: /usr/lib/libopencsg.so.1.8.2 /usr/lib/libopencsg.so.1 /usr/lib/libopencsg.so /usr/include/opencsg.h Assisted-by: Claude Opus 5 --- opencsg.be0 | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 opencsg.be0 diff --git a/opencsg.be0 b/opencsg.be0 new file mode 100755 index 000000000..79c4ad870 --- /dev/null +++ b/opencsg.be0 @@ -0,0 +1,36 @@ +#!/usr/bin/env beesh + +# BEE_VERSION opencsg-1.8.2-0 + +# more info: https://www.opencsg.org/ + +# https://www.opencsg.org/OpenCSG-${PKGVERSION}.tar.gz +SRCURL[0]="https://beehive.molgen.mpg.de/1c34baf2a5474675ba8623cdf70cd0d8/OpenCSG-1.8.2.tar.gz" + +# PATCHURL+=() + +# build_in_sourcedir + +# sourcesubdir_append src + +#mee_extract() { +# bee_extract "${@}" +#} + +#mee_patch() { +# bee_patch "${@}" +#} + +mee_configure() { + # Example is a never installed a GLUT demo, so avoid freeglut dependency. + bee_configure \ + -DBUILD_EXAMPLE=OFF +} + +#mee_build() { +# bee_build +#} + +#mee_install() { +# bee_install +#} From cf13eb0ec429011646beab4732b82653cc0d128b Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 10 Sep 2026 17:52:30 +0200 Subject: [PATCH 3/3] openscad: Add version 2021.01 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OpenSCAD is a script-only 3D CAD modeller: the model is described in its own declarative language and rendered from constructive solid geometry, making it a good fit for parametric parts and for keeping designs in version control. 2021.01, released on 2021-02-07, is still the latest release; upstream has published development snapshots only since then. The tarball bundles the MCAD library, so no submodule handling is needed. MarIuX’ boost is configured with `--with-libraries=headers`, so `/usr/lib` holds no libboost_* at all and the link fails: /usr/lib/gcc/x86_64-pc-linux-gnu/12.5.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lboost_thread: No such file or directory /usr/lib/gcc/x86_64-pc-linux-gnu/12.5.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lboost_program_options: No such file or directory /usr/lib/gcc/x86_64-pc-linux-gnu/12.5.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lboost_filesystem: No such file or directory /usr/lib/gcc/x86_64-pc-linux-gnu/12.5.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lboost_system: No such file or directory /usr/lib/gcc/x86_64-pc-linux-gnu/12.5.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lboost_regex: No such file or directory collect2: error: ld returned 1 exit status Take boost from `/pkg/boost-1.86.0-0`, which ships the compiled libraries. Its headers have to precede /usr/include so that the 1.86.0 headers, and not the 1.72.0 ones, match the libraries; QMAKE_RPATHDIR makes them findable at runtime without a profile: RPATH /pkg/boost-1.86.0-0/lib:/usr/local/qt5/lib Four patches are required, three for the CGAL 5.6.3 and one for the boost 1.86.0 built against: src/cgalutils-tess.cc:22:15: error: ‘Triangulation_2_filtered_projection_traits_3’ in namespace ‘CGAL’ does not name a template type; did you mean ‘Triangulation_2_projection_traits_3’? src/cgalutils-polyhedron.cc:346:29: error: ‘generic_print_polyhedron’ was not declared in this scope src/openscad.cc:310:71: error: call of overloaded ‘join(std::__cxx11::list >, const char [2])’ is ambiguous src/FileModule.cc:68:25: error: ‘is_regular’ is not a member of ‘fs’; did you mean ‘is_regular_file’? The build has to happen in the source directory. qmake looks for feature files only in a `features` directory below the *build* directory, so in a shadow build openscad’s own features/*.prf – which is where every dependency except Qt is detected – are silently skipped and the build dies with src/CGALCache.cc:27:10: fatal error: Eigen/Core: No such file or directory 27 | #include | ^~~~~~~~~~~~ Verified by rendering a CSG difference headlessly, which exercises the exact CGAL kernel and the STL exporter: $ openscad -o t.stl t.scad Geometries in cache: 3 […] Facets: 466 Volumes: 2 $ grep -c 'facet normal' t.stl 880 Assisted-by: Claude Opus 5 --- openscad.be0 | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 openscad.be0 diff --git a/openscad.be0 b/openscad.be0 new file mode 100755 index 000000000..f6242750b --- /dev/null +++ b/openscad.be0 @@ -0,0 +1,64 @@ +#!/usr/bin/env beesh + +# BEE_VERSION openscad-2021.01-0 + +# more info: https://openscad.org/ +# 2021.01 is still the latest release; upstream has published development +# snapshots only since then. + +# https://github.com/openscad/openscad/releases/download/openscad-${PKGVERSION}/openscad-${PKGVERSION}.src.tar.gz +SRCURL[0]="https://beehive.molgen.mpg.de/79f8e3a42bcfeeb3ddde9e5bc2311f76/openscad-2021.01.src.tar.gz" + +PATCHURL+=("https://beehive.molgen.mpg.de/4f9745e5b94f5f09df83e510fabb7685/openscad-2021.01-cgal-5.4-projection-traits.patch") +PATCHURL+=("https://beehive.molgen.mpg.de/1c23d2882f24d1a9f4d175752c37db94/openscad-2021.01-cgal-5-drop-printPolyhedron.patch") +PATCHURL+=("https://beehive.molgen.mpg.de/4c0c8821966c8e63948a6adcba92291b/openscad-2021.01-boost-algorithm-join.patch") +PATCHURL+=("https://beehive.molgen.mpg.de/8bd3ac88c99137bcd2c7f2d8a436b112/openscad-2021.01-boost-filesystem-is-regular-file.patch") + +# qmake only searches for feature files in a 'features' directory below the +# *build* directory, so openscad's own features/*.prf -- which is where every +# dependency except Qt is detected -- are silently skipped in a shadow build. +# Build in the source directory, as upstream's README describes. +build_in_sourcedir + +# sourcesubdir_append src + +#mee_extract() { +# bee_extract "${@}" +#} + +#mee_patch() { +# bee_patch "${@}" +#} + +# The distribution's boost is configured with --with-libraries=headers, so +# /usr/lib holds no libboost_* at all, while openscad links five of them. Take +# headers and libraries from the package, which ships both. Deliberately not +# named BOOSTDIR: features/boost.prf reads that variable from the environment +# and would derive a wrong include path from it. +BOOST_PKGDIR=/pkg/boost-1.86.0-0 + +mee_configure() { + # openscad 2021.01 predates Qt 6, and qtlinks points /usr/local/bin/qmake + # at Qt 6, so call the Qt 5 qmake by its full path. The tree also ships + # an (unsupported) CMakeLists.txt, which is what bee would otherwise pick + # up as the buildtype. + # + # Pass the three boost paths by hand. INCLUDEPATH is emitted ahead of + # /usr/include, so the 1.86.0 headers win over the 1.72.0 ones of the + # distribution, and QMAKE_RPATHDIR keeps the libraries findable at runtime. + start_cmd /usr/local/qt5/bin/qmake \ + PREFIX=${PREFIX} \ + INCLUDEPATH+=${BOOST_PKGDIR}/include \ + LIBS+=-L${BOOST_PKGDIR}/lib \ + QMAKE_RPATHDIR+=${BOOST_PKGDIR}/lib \ + openscad.pro +} + +mee_build() { + start_cmd make ${BEE_MAKEFLAGS} +} + +mee_install() { + # qmake-generated makefiles stage through INSTALL_ROOT, not DESTDIR. + start_cmd make ${BEE_MAKEFLAGS} install INSTALL_ROOT=${D} +}