Skip to content

Commit

Permalink
media-gfx/prusaslicer: added new ebuild
Browse files Browse the repository at this point in the history
Closes: https://bugs.gentoo.org/652100

Signed-off-by: Dennis Lamm <[email protected]>
Closes: gentoo#18668
Signed-off-by: Dennis Lamm <[email protected]>
  • Loading branch information
expeditioneer committed Dec 15, 2020
1 parent 3dee87b commit ddd3cc9
Show file tree
Hide file tree
Showing 7 changed files with 190 additions and 0 deletions.
1 change: 1 addition & 0 deletions media-gfx/prusaslicer/Manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DIST prusaslicer-2.2.0.tar.gz 30811929 BLAKE2B cde004add53ee025728d566cb7331cb7b1eac5412e9ad3bee037d13277c24dcdc6024c91f09bb9ef0653a12a3ee7c5cb5cec21e2a00825d185472ea7036e08f5 SHA512 5c8dc5b581e04208a1ae53771ef2607da189ee85aadf501ce1480008f5a6ddb10bb528ddc2608d3f04acd26c583ff895ad4148d6a1397f002292e20098971e1d
9 changes: 9 additions & 0 deletions media-gfx/prusaslicer/files/PrusaGcodeviewer.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Desktop Entry]
Name=Prusa GCode viewer
Exec=prusa-slicer --gcodeviewer %F
Icon=PrusaSlicer
Terminal=false
Type=Application
MimeType=text/x.gcode;
Categories=Graphics;3DGraphics;
Keywords=3D;Printing;Slicer;
12 changes: 12 additions & 0 deletions media-gfx/prusaslicer/files/PrusaSlicer.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Desktop Entry]
Name=PrusaSlicer
GenericName=3D Printing Software
Icon=PrusaSlicer
Exec=prusa-slicer %F
Terminal=false
Type=Application
MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;application/x-amf;
Categories=Graphics;3DGraphics;Engineering;
Keywords=3D;Printing;Slicer;slice;3D;printer;convert;gcode;stl;obj;amf;SLA
StartupNotify=false
StartupWMClass=prusa-slicer
10 changes: 10 additions & 0 deletions media-gfx/prusaslicer/files/prusaslicer-2.2.0-atomic.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- a/src/slic3r/GUI/Mouse3DController.hpp
+++ b/src/slic3r/GUI/Mouse3DController.hpp
@@ -8,6 +8,7 @@

#include "hidapi.h"

+#include <atomic>
#include <queue>
#include <thread>
#include <vector>
60 changes: 60 additions & 0 deletions media-gfx/prusaslicer/files/prusaslicer-2.2.0-boost-1.73.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
--- a/src/admesh/stlinit.cpp
+++ b/src/admesh/stlinit.cpp
@@ -28,7 +28,6 @@

#include <boost/log/trivial.hpp>
#include <boost/nowide/cstdio.hpp>
-#include <boost/detail/endian.hpp>

#include "stl.h"

@@ -36,9 +35,9 @@
#error "SEEK_SET not defined"
#endif

-#ifndef BOOST_LITTLE_ENDIAN
+#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
extern void stl_internal_reverse_quads(char *buf, size_t cnt);
-#endif /* BOOST_LITTLE_ENDIAN */
+#endif /* __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ */

static FILE* stl_open_count_facets(stl_file *stl, const char *file)
{
@@ -89,10 +88,10 @@
// Read the int following the header. This should contain # of facets.
uint32_t header_num_facets;
bool header_num_faces_read = fread(&header_num_facets, sizeof(uint32_t), 1, fp) != 0;
-#ifndef BOOST_LITTLE_ENDIAN
+#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
// Convert from little endian to big endian.
stl_internal_reverse_quads((char*)&header_num_facets, 4);
-#endif /* BOOST_LITTLE_ENDIAN */
+#endif /* __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ */
if (! header_num_faces_read || num_facets != header_num_facets)
BOOST_LOG_TRIVIAL(info) << "stl_open_count_facets: Warning: File size doesn't match number of facets in the header: " << file;
}
@@ -158,10 +157,10 @@
// Read a single facet from a binary .STL file. We assume little-endian architecture!
if (fread(&facet, 1, SIZEOF_STL_FACET, fp) != SIZEOF_STL_FACET)
return false;
-#ifndef BOOST_LITTLE_ENDIAN
+#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
// Convert the loaded little endian data to big endian.
stl_internal_reverse_quads((char*)&facet, 48);
-#endif /* BOOST_LITTLE_ENDIAN */
+#endif /* __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ */
} else {
// Read a single facet from an ASCII .STL file
// skip solid/endsolid

--- a/CMakeLists.txt (revision 3b2c51fd5ab04a72592bfdba1cd39cd6298b66c2)
+++ b/CMakeLists.txt (date 1607811414000)
@@ -260,7 +260,7 @@
# set(Boost_COMPILER "-mgw81")
if(NOT WIN32)
# boost::process was introduced first in version 1.64.0
- set(MINIMUM_BOOST_VERSION "1.64.0")
+ set(MINIMUM_BOOST_VERSION "1.72.0")
endif()
set(_boost_components "system;filesystem;thread;log;locale;regex;chrono;atomic;date_time")
find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS ${_boost_components})
19 changes: 19 additions & 0 deletions media-gfx/prusaslicer/metadata.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>[email protected]</email>
<name>Gentoo 3D Printer Project</name>
</maintainer>
<longdescription>
PrusaSlicer takes 3D models (STL, OBJ, AMF) and converts them into G-code instructions for FFF printers or PNG
layers for mSLA 3D printers. It's compatible with any modern printer based on the RepRap toolchain, including
all those based on the Marlin, Prusa, Sprinter and Repetier firmware. It also works with Mach3, LinuxCNC and
Machinekit controllers.

PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community.
</longdescription>
<upstream>
<remote-id type="github">prusa3d/PrusaSlicer</remote-id>
</upstream>
</pkgmetadata>
79 changes: 79 additions & 0 deletions media-gfx/prusaslicer/prusaslicer-2.2.0.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

WX_GTK_VER="3.0-gtk3"

inherit cmake desktop wxwidgets xdg-utils

MY_PN="PrusaSlicer"

DESCRIPTION="A mesh slicer to generate G-code for fused-filament-fabrication (3D printers)"
HOMEPAGE="https://www.prusa3d.com/prusaslicer/"
SRC_URI="https://github.com/prusa3d/${MY_PN}/archive/version_${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="AGPL-3 CC-BY-3.0"
SLOT="0"
KEYWORDS="~amd64 ~x86"

IUSE="gui test"
RESTRICT="!test? ( test )"

RDEPEND="
dev-cpp/eigen:3
dev-cpp/tbb
>=dev-libs/boost-1.73.0[threads]
dev-libs/cereal
dev-libs/expat
dev-libs/miniz
media-libs/glew:0=
media-libs/qhull
>=media-gfx/openvdb-5.0.0
net-misc/curl
>=sci-mathematics/cgal-5.0
sci-libs/libigl
sci-libs/nlopt
sys-libs/zlib
x11-libs/wxGTK:${WX_GTK_VER}[X]
"
DEPEND="${RDEPEND}"

S="${WORKDIR}/PrusaSlicer-version_${PV}"
PATCHES=(
"${FILESDIR}/${P}-atomic.patch"
"${FILESDIR}/${P}-boost-1.73.patch"
)

src_prepare() {
setup-wxwidgets
cmake_src_prepare
}

src_configure() {
CMAKE_BUILD_TYPE=Release

local mycmakeargs=(
-DSLIC3R_BUILD_TESTS=$(usex test)
-DSLIC3R_FHS=1
-DSLIC3R_GUI=$(usex gui)
-DSLIC3R_PCH=0
-SLIC3R_STATIC=0
-DSLIC3R_WX_STABLE=1
)

cmake_src_configure
}

src_install() {
cmake_src_install

doicon resources/icons/PrusaSlicer.png || die
domenu "${FILESDIR}/PrusaGcodeviewer.desktop" || die
domenu "${FILESDIR}/PrusaSlicer.desktop" || die
}

pkg_postinst() {
xdg_mimeinfo_database_update
xdg_desktop_database_update
}

0 comments on commit ddd3cc9

Please sign in to comment.