guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#50052] Fwd: Re: [bug#50052] [PATCH] Add prusa-slicer


From: Daniel Trujillo Viedma
Subject: [bug#50052] Fwd: Re: [bug#50052] [PATCH] Add prusa-slicer
Date: Mon, 16 Aug 2021 21:15:01 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Sorry, forgot to include debbugs...


El 15/8/21 a las 13:02, Xinglu Chen escribió:

On Sat, Aug 14 2021, Daniel Trujillo Viedma wrote:

Hi! I'm Daniel Trujillo,


This is my first-time-ever contribution to GNU Guix, so please, don't
hold any nitpick to yourself!! :)


I don't know if these kind of packages are of interest, but this is
PrusaSlicer [0], a software to prepare 3D printings (hence I put it in
engineering.scm).

The packaged version, 2.3.3 is the latest stable available at this
moment. But this version has as important problem [1]: It cannot be
invoked just naming the executable (through $PATH), because then, it
can't locate the resources directory. I learned **the hard way** that
the fix was applied *after* the release of the 2.3.3 version, so I
decided to backport the fix adding a patch because it's a show-stopper
to have to type the path to the executable in /gnu/store/... That's the
reason why the patch attached to this email contains, not only the
additions to engineering.scm, but also a patch that implements the
solution in the version 2.3.3 codebase (It's quite simple, it uses a
boost function to determine the path to the executable rather than
relying on argv[0]).


Known improvable things:
* It's configured to use GTK3. After many attempts to compile it under
GTK2 in a guix environment, sometimes it detected GTK right away, and
some ether times I had to add more includes. It wasn't quite reliable
and, according to the convention followed in gtk+ packages, probably it
would be better that prusa-slicer uses GTK3, and a hypothetical future
GTK2 version would be called prusa-slicer-gtk2.

* In order for the above $PATH issue fix to work, it's crucial that the
cmake variable SLIC3R_FHS is set to off. This is the default value
according to the CMakeLists.txt, but because it's so important, probably
it should have been included in the configure-flags argument? Just for
clarity.
That’s probably a good idea, in case upstream changes the default value
in the future.
Great point, I'm doing it!

* Currently, the version displayed in the title bar is
"....2.3.3+UNKNOWN". This is because of another cmake option not set. It
doesn't have any influence in the software, as far as I know, but it's
arguably ugly. The version I currently use, doesn't display that in the
title bar, but it does in the "About" window, and it says
".....2.3.3+linux-64". Maybe something like "GNU Guix" would be
prettier. But if I have to include the arch, I would have to dig deeper
into package definitions ^_^'''


I hope everything is in order, I'm looking forward to see your comments,
and hope I can start contributing more packages to Guix!!


Cheers,

Dani.


[0] https://www.prusa3d.es/prusaslicer/

[1] https://github.com/prusa3d/PrusaSlicer/issues/5542


From 522c1904cf62afac25a9d974091211adac760c25 Mon Sep 17 00:00:00 2001
From: Daniel Trujillo Viedma <danihacker.viedma@gmail.com>
Date: Sat, 14 Aug 2021 00:00:55 +0200
Subject: [PATCH] Add prusa-slicer

---
The commit message should be in the GNU ChangeLog format, see the commit
log for examples, or check the manual.

<https://www.gnu.org/prep/standards/standards.html#Change-Logs>
Sorry!!! I have yet to be familiarized with that format, I'll see this article and examples before submitting the fixes, thanks for notice!
gnu/packages/engineering.scm | 58 ++++++++++++++++++++++
.../patches/prusa-slicer-backport-fix-5542.patch | 31 ++++++++++++
This patch should also be added to the gnu/local.mk file.
Thanks for noticing, it will be added in the next submission.

2 files changed, 89 insertions(+)
create mode 100644 gnu/packages/patches/prusa-slicer-backport-fix-5542.patch

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 33c124a2ea..047d99c0af 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2863,3 +2863,61 @@ for hooking Linux system calls in user space. This is achieved by
hot-patching the machine code of the standard C library in the memory of
a process.")
(license license:bsd-2))))
+
+(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))))
The ‘file-name’ field should be set to

(file-name (git-file-name name version))

to give the git checkout, in the Guix store, a more descriptive name,
otherwise its name is

/gnu/store/hc1slayzjz8xrw24q8wzgcs6xrzfk74q-git-checkout

which doesn’t really say much. This usually only applies if some kind
of VCS repository is used, and not if ‘url-fetch’ is used.
I thought the checkout directory was temporary, but yes, even in the "origin reference" section of the Manual it says that it's a good idea to set it up when working with VCS. Added!

+ (sha256
+ (base32 "0w0synqi3iz9aigsgv6x1c6sg123fasbx19h4w3ic1l48r8qmpwm"))
+ (patches (search-patches "prusa-slicer-backport-fix-5542.patch"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags `("-DSLIC3R_GTK=3")))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("perl" ,perl)
+ ("glibc-locales" ,glibc-locales)
+ ("adwaita-icon-theme" ,adwaita-icon-theme)
+ ("boost" ,boost)
+ ("tbb" ,tbb)
+ ("curl" ,curl)
+ ("zlib" ,zlib)
+ ("eigen" ,eigen)
+ ("expat" ,expat)
+ ("libpng" ,libpng)
+ ("mesa" ,mesa)
+ ("glew" ,glew)
+ ("cereal" ,cereal)
+ ("nlopt" ,nlopt)
+ ("openvdb" ,openvdb)
+ ("cgal" ,cgal)
+ ("gmp" ,gmp)
+ ("mpfr" ,mpfr)
+ ("qhull" ,qhull)
+ ("wxwidgets" ,wxwidgets-3.1)
+ ("coreutils" ,coreutils)
+ ("grep" ,grep)
+ ("sed" ,sed)
+ ("glibc" ,glibc)
These packages are already included in the ‘cmake-build-system’ by
default, no need to add them explicitly.
Yes, I've verified that the package still builds successfully and the program launches. Thanks!

+ ("gtk+" ,gtk+)
+ ("pango" ,pango)
+ ("dbus" ,dbus)))
+ (home-page "https://www.prusa3d.com/prusaslicer/";)
+ (synopsis "G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)")
+ (description
+ "PrusaSlicer (formerly known as Slic3r Prusa Edition or Slic3r PE) is
+our own in-house developed slicer software based on the open-source project
+Slic3r. PrusaSlicer is an open-source, feature-rich, frequently updated
+tool that contains everything you need to export the perfect print files
Nit: “perfect” sounds a bit too much like marketing speak; instead of
“to export the perfect print files”, I suggest “to export to print
files”.

WDYT?
Absolutely agree. "Perfect" slicer is far from the state-of-the-art. I took this description from their web page, but if we can adapt it to be more objective, I would say: "PrusaSlicer (formerly known as Slic3r Prusa Edition or Slic3r PE) is a slicer software based on the open-source project Slic3r. PrusaSlicer is an open-source, feature-rich, frequently updated tool that contains everything you need to export the print files for your 3D printer.". Is this OK?

+for your Original Prusa 3D printer.")
+ (license license:agpl3)))
According the the LICENSE file, this should be agpl3+ (grep for “any
later version”).

<https://github.com/prusa3d/PrusaSlicer/blob/master/LICENSE>
I'm not sure. Probably you guys know more than me about licenses, but it seems to me that this is only AGPL3, because if I `rgrep "any later version"` the entire source code tree, I get 128 hits, mostly from dependencies. And the 3 matches from the LICENSE file are on a conditional voice (""If the Program specifies that a certain numbered version [...] "or any later version" applies to it, you have the option .......""), and the last match is just the instructions that says to put the notice at the start of every source code file (which I think they didn't do. rgrep "GNU Affero General Public" gives me 57 coincidences, mostly from resources, and no one of them mentions "or any later version", so I think it's only AGPL-3).


I didn’t manage to build the package because my machine ran out of
memory, but I assume that it built fine for you. :-)

Yes, I have suffered this also. To build this in a 16GB RAM machine I had to low the number of cores to 2 (guix build -M1 -c2 prusa-slicer). This prevents more than 2 programs running at the same time, and the memory doesn't get full. I think the hardest part is at the end of the process, when the GUI executable is being linked.


I've seen in some packages that there's a comment with the package size. Maybe I'll do the same as a warning that the build process can take up all the RAM available easily.

Thank you for your feedback!





reply via email to

[Prev in Thread] Current Thread [Next in Thread]