From: Ivan Gankevich <i.gankevich@spbu.ru>
To: 49713@debbugs.gnu.org
Cc: Ivan Gankevich <i.gankevich@spbu.ru>
Subject: [bug#49713] [PATCH 3/3] gnu: Add prusa-slicer.
Date: Sat, 24 Jul 2021 00:08:03 +0300 [thread overview]
Message-ID: <20210723210801.9458-1-i.gankevich@spbu.ru> (raw)
In-Reply-To: <20210723210037.28150-1-i.gankevich@spbu.ru>
* gnu/packages/engineering.scm (prusa-slicer): New variable.
---
gnu/packages/engineering.scm | 97 ++++++++++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index eec12814ff..d88520a306 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -24,6 +24,7 @@
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -95,6 +96,7 @@
#:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libevent)
+ #:use-module (gnu packages libusb)
#:use-module (gnu packages linux) ;FIXME: for pcb
#:use-module (gnu packages lisp)
#:use-module (gnu packages m4)
@@ -2924,3 +2926,98 @@ a process.")
(description "The library provides functionality for shape modelling,
visualization, matrix manipulation.")
(license (list license:gpl3 license:mpl2.0))))
+
+(define-public prusa-slicer
+ (package
+ (name "prusa-slicer")
+ (version "2.3.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/prusa3d/PrusaSlicer")
+ (commit (string-append "version_" version))))
+ (file-name (git-file-name name version))
+ (sha256 (base32 "0w0synqi3iz9aigsgv6x1c6sg123fasbx19h4w3ic1l48r8qmpwm"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DSLIC3R_FHS=1" ;; Use The Filesystem Hierarchy Standard.
+ "-DSLIC3R_WX_STABLE=1") ;; Use wxWidgets 3.0.x.x to prevent GUI crashes.
+ #:phases
+ (modify-phases %standard-phases
+ ;; CMake is unable to find headers from glib, pango and gtk+
+ ;; when compiling src/slic3r. Here we add them via environment variables.
+ (add-before 'configure 'add-glib-pango-gtk+
+ (lambda _
+ (use-modules
+ (ice-9 popen)
+ (ice-9 textual-ports))
+ (define (append-flags name flags)
+ (define old-value (getenv name))
+ (setenv name (if old-value (string-append old-value " " flags) flags)))
+ (define (pkg-config args)
+ (let* ((port (open-input-pipe (string-join (cons "pkg-config" args) " ")))
+ (content (string-trim-both (get-string-all port))))
+ (close-pipe port)
+ content))
+ (define deps '("glib-2.0" "pango" "gtk+-2.0" "hidapi-hidraw"))
+ (define cflags (pkg-config (cons "--cflags" deps)))
+ (define ld-flags (pkg-config (cons "--libs" deps)))
+ (define libigl (assoc-ref %build-inputs "libigl"))
+ (append-flags "CXXFLAGS" cflags)
+ (append-flags "CFLAGS" cflags)
+ (append-flags "LDFLAGS" ld-flags)
+ (append-flags "CFLAGS" (string-append "-I" libigl "/include"))
+ (append-flags "LDFLAGS" (string-append "-L" libigl "/lib"))))
+ (add-before 'configure 'unbundle-3d-party-libraries
+ ;; Prusa slicer bundles a lot of dependencies in src/ directory.
+ ;; Most of them contain prusa-specific modifications (e.g. avrdude),
+ ;; but others do not. Here we replace the latter with Guix packages.
+ (lambda _
+ (delete-file-recursively "src/hidapi")
+ (delete-file-recursively "src/eigen")
+ (delete-file-recursively "src/libigl/igl")
+ (substitute* "src/CMakeLists.txt"
+ (("add_subdirectory\\(libigl\\)" all)
+ (string-append
+ all "\ninclude_directories(libigl INTERFACE libigl::core)"))
+ (("add_subdirectory\\(hidapi\\)") "")
+ (("include_directories\\(hidapi/include\\)") ""))
+ ;; Do not link with bundled hidapi library.
+ (substitute* "src/slic3r/CMakeLists.txt"
+ (("\\bhidapi\\b") "")))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("boost" ,boost)
+ ("libigl" ,libigl)
+ ("tbb" ,tbb)
+ ("curl" ,curl)
+ ("zlib" ,zlib)
+ ("eigen" ,eigen)
+ ("expat" ,expat)
+ ("mesa" ,mesa)
+ ("cereal" ,cereal)
+ ("nlopt" ,nlopt)
+ ("openvdb" ,openvdb)
+ ("ilmbase" ,ilmbase)
+ ("cgal" ,cgal)
+ ("hidapi" ,hidapi)
+ ;;("wxwidgets" ,wxwidgets-gtk2-3.1) ;; crashes when adding support enforcers
+ ("wxwidgets" ,wxwidgets-gtk2)
+ ("glew" ,glew)
+ ("udev" ,eudev)
+ ("gmp" ,gmp)
+ ("mpfr" ,mpfr)
+ ("libpng" ,libpng)
+ ("dbus" ,dbus)
+ ("glib" ,glib)
+ ("pango" ,pango)
+ ("gtk" ,gtk+-2)))
+ (home-page "https://www.prusa3d.com/prusaslicer/")
+ (synopsis "G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)")
+ (description "PrusaSlicer takes 3D models (STL, OBJ, AMF) and converts them into
+G-code instructions for FFF printers or PNG layers for mSLA 3D printers.")
+ (license license:agpl3)))
--
2.32.0
next prev parent reply other threads:[~2021-07-23 21:09 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-23 21:00 [bug#49713] [PATCH 1/3] gnu: cereal: Use cmake to build and install the library Ivan Gankevich
2021-07-23 21:07 ` [bug#49713] [PATCH 2/3] gnu: Add libigl Ivan Gankevich
2021-09-18 17:17 ` Liliana Marie Prikler
2021-09-19 20:18 ` Ivan Gankevich
2021-07-23 21:08 ` Ivan Gankevich [this message]
2021-09-18 17:26 ` [bug#49713] [PATCH 3/3] gnu: Add prusa-slicer Liliana Marie Prikler
2021-09-19 21:39 ` Ivan Gankevich
2021-09-19 21:53 ` Liliana Marie Prikler
2021-09-20 22:17 ` Ivan Gankevich
2021-09-21 12:12 ` bug#49713: " Liliana Marie Prikler
2021-09-18 15:53 ` [bug#49713] Patches work, how to upstream them phodina via Guix-patches via
2021-09-18 17:13 ` [bug#49713] [PATCH 1/3] gnu: cereal: Use cmake to build and install the library Liliana Marie Prikler
2021-09-19 18:27 ` Ivan Gankevich
2021-09-19 18:26 ` [bug#49713] [PATCH 1/3 v2] " Ivan Gankevich
2021-09-19 20:18 ` [bug#49713] [PATCH 2/3 v2] gnu: Add libigl Ivan Gankevich
2021-09-19 21:38 ` [bug#49713] [PATCH 3/3 v2] gnu: Add prusa-slicer Ivan Gankevich
2021-09-20 22:15 ` [bug#49713] [PATCH v3 1/3] gnu: cereal: Use cmake to build and install the library Ivan Gankevich
2021-09-20 22:15 ` [bug#49713] [PATCH v3 2/3] gnu: Add libigl Ivan Gankevich
2021-09-20 22:15 ` [bug#49713] [PATCH v3 3/3] gnu: Add prusa-slicer Ivan Gankevich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210723210801.9458-1-i.gankevich@spbu.ru \
--to=i.gankevich@spbu.ru \
--cc=49713@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).