[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#49713] [PATCH 3/3] gnu: Add prusa-slicer.
From: |
Liliana Marie Prikler |
Subject: |
[bug#49713] [PATCH 3/3] gnu: Add prusa-slicer. |
Date: |
Sat, 18 Sep 2021 19:26:31 +0200 |
User-agent: |
Evolution 3.34.2 |
Hi,
Am Samstag, den 24.07.2021, 00:08 +0300 schrieb Ivan Gankevich:
> * 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"))))
Upstream already appears to search for GTK+3 with their CMake setup.
Perhaps that's why it doesn't find GTK+2?
> + (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") "")))))))
Unbundling should be done in the snippet rather than at build time.
> + (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)))
Try sorting the inputs alphabetically, also w.r.t. gtk+-2, see above.
> + (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)))
Regards
- [bug#49713] [PATCH 3/3] gnu: Add prusa-slicer.,
Liliana Marie Prikler <=