* [bug#50052] [PATCH] Add prusa-slicer [not found] <0654f9e7-8c1d-aa4c-3240-54faf3defb2f@gmail.com> @ 2021-08-13 22:58 ` Daniel Trujillo Viedma 2021-08-15 11:02 ` Xinglu Chen 2021-08-16 7:49 ` Ivan Gankevich 0 siblings, 2 replies; 6+ messages in thread From: Daniel Trujillo Viedma @ 2021-08-13 22:58 UTC (permalink / raw) To: 50052 [-- Attachment #1: Type: text/plain, Size: 2567 bytes --] 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. * 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 [-- Attachment #2: 0001-Add-prusa-slicer.patch --] [-- Type: text/x-patch, Size: 4536 bytes --] 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 --- gnu/packages/engineering.scm | 58 ++++++++++++++++++++++ .../patches/prusa-slicer-backport-fix-5542.patch | 31 ++++++++++++ 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)))) + (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) + ("openexr" ,openexr) + ("glib" ,glib) + ("glibc" ,glibc) + ("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 +for your Original Prusa 3D printer.") + (license license:agpl3))) diff --git a/gnu/packages/patches/prusa-slicer-backport-fix-5542.patch b/gnu/packages/patches/prusa-slicer-backport-fix-5542.patch new file mode 100644 index 0000000000..63d2a45be1 --- /dev/null +++ b/gnu/packages/patches/prusa-slicer-backport-fix-5542.patch @@ -0,0 +1,31 @@ +This patch backports a solution for the issue: +https://github.com/prusa3d/PrusaSlicer/issues/5542 +that causes PrusaSlicer to crash when invoked +from the command line by means of the $PATH variable. +This fix is applied in: +https://github.com/prusa3d/PrusaSlicer/commit/293f85b6cf9b805af93b9f79f5ff878b6d673969 +quite after the release of 2.3.3, so this backport is needed. + +diff --git a/src/PrusaSlicer.cpp b/src/PrusaSlicer.cpp +index b0df2c99a..31e30af81 100644 +--- a/src/PrusaSlicer.cpp ++++ b/src/PrusaSlicer.cpp +@@ -28,6 +28,7 @@ + #include <boost/nowide/cenv.hpp> + #include <boost/nowide/iostream.hpp> + #include <boost/nowide/integration/filesystem.hpp> ++#include <boost/dll/runtime_symbol_info.hpp> + + #include "unix/fhs.hpp" // Generated by CMake from ../platform/unix/fhs.hpp.in + +@@ -612,7 +613,9 @@ bool CLI::setup(int argc, char **argv) + // Detect the operating system flavor after SLIC3R_LOGLEVEL is set. + detect_platform(); + +- boost::filesystem::path path_to_binary = boost::filesystem::system_complete(argv[0]); ++ // See Invoking prusa-slicer from $PATH environment variable crashes #5542 ++ // boost::filesystem::path path_to_binary = boost::filesystem::system_complete(argv[0]); ++ boost::filesystem::path path_to_binary = boost::dll::program_location(); + + // Path from the Slic3r binary to its resources. + #ifdef __APPLE__ -- 2.11.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#50052] [PATCH] Add prusa-slicer 2021-08-13 22:58 ` [bug#50052] [PATCH] Add prusa-slicer Daniel Trujillo Viedma @ 2021-08-15 11:02 ` Xinglu Chen 2021-08-16 7:49 ` Ivan Gankevich 1 sibling, 0 replies; 6+ messages in thread From: Xinglu Chen @ 2021-08-15 11:02 UTC (permalink / raw) To: Daniel Trujillo Viedma, 50052 [-- Attachment #1: Type: text/plain, Size: 7131 bytes --] 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. > * 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> > 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. > 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. > + (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. > + ("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? > +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 didn’t manage to build the package because my machine ran out of memory, but I assume that it built fine for you. :-) [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#50052] [PATCH] Add prusa-slicer 2021-08-13 22:58 ` [bug#50052] [PATCH] Add prusa-slicer Daniel Trujillo Viedma 2021-08-15 11:02 ` Xinglu Chen @ 2021-08-16 7:49 ` Ivan Gankevich 2021-08-16 20:09 ` Daniel Trujillo Viedma 2021-08-17 21:59 ` bug#50052: " Daniel Trujillo Viedma 1 sibling, 2 replies; 6+ messages in thread From: Ivan Gankevich @ 2021-08-16 7:49 UTC (permalink / raw) To: Daniel Trujillo Viedma; +Cc: 50052 >Hi! I'm Daniel Trujillo, Hello, Daniel! >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). I have submitted “prusa-slicer” together with “libigl” on July 23 but did’t get any response: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49713 We should probably check prior submissions to not duplicate our effort. >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]). This issue is fixed by adding “-DSLIC3R_FHS=1” to #:configure-flags. No need to patch the source code. >* 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. Set it to ON and you don’t have to patch the code. >I hope everything is in order, I'm looking forward to see your >comments, and hope I can start contributing more packages to Guix!! Prusa slicer bundles a lot of third-party libraries. Most of them contain prusa-specific modifications, but some don’t. “libigl”, “eigen” and “hidapi” can be unbundled, so that we can use versions of these libraries provided by Guix. >+ ("cereal" ,cereal) You need to patch “cereal” library definition in order for Prusa slicer to find this library. I have included this in my patch as well. Regards, Ivan ^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#50052] [PATCH] Add prusa-slicer 2021-08-16 7:49 ` Ivan Gankevich @ 2021-08-16 20:09 ` Daniel Trujillo Viedma 2021-08-17 7:18 ` Ivan Gankevich 2021-08-17 21:59 ` bug#50052: " Daniel Trujillo Viedma 1 sibling, 1 reply; 6+ messages in thread From: Daniel Trujillo Viedma @ 2021-08-16 20:09 UTC (permalink / raw) To: Ivan Gankevich; +Cc: 50052 Hi, Ivan! You're completely right, I should have to searched more thoroughly any ongoing effort packaging prusa-slicer. At this point, the best thing I should do is to send an email to the list to discard my package and encourage to take a look at yours, since are way more advanced than mine. You are also right with the -DSLIC3R_FHS=1. I thought that that will make the executable look for the resources outside the /gnu/stare folder, where nothing would be found, but it works, can you briefly point me to what is happening? Thank you so much! El 16/8/21 a las 9:49, Ivan Gankevich escribió: >> Hi! I'm Daniel Trujillo, > > Hello, Daniel! > > >> 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). > > I have submitted “prusa-slicer” together with “libigl” on July 23 but > did’t get any > response: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49713 > > We should probably check prior submissions to not duplicate our effort. > > >> 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]). > > This issue is fixed by adding “-DSLIC3R_FHS=1” to #:configure-flags. > No need to patch the source code. > > >> * 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. > > Set it to ON and you don’t have to patch the code. > > >> I hope everything is in order, I'm looking forward to see your >> comments, and hope I can start contributing more packages to Guix!! > > Prusa slicer bundles a lot of third-party libraries. Most of them contain > prusa-specific modifications, but some don’t. “libigl”, “eigen” and > “hidapi” can be > unbundled, so that we can use versions of these libraries provided by > Guix. > >> + ("cereal" ,cereal) > > You need to patch “cereal” library definition in order for Prusa > slicer to find > this library. I have included this in my patch as well. > > > Regards, > Ivan ^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#50052] [PATCH] Add prusa-slicer 2021-08-16 20:09 ` Daniel Trujillo Viedma @ 2021-08-17 7:18 ` Ivan Gankevich 0 siblings, 0 replies; 6+ messages in thread From: Ivan Gankevich @ 2021-08-17 7:18 UTC (permalink / raw) To: Daniel Trujillo Viedma; +Cc: 50052 >You're completely right, I should have to searched more thoroughly any >ongoing effort packaging prusa-slicer. At this point, the best thing I >should do is to send an email to the list to discard my package and >encourage to take a look at yours, since are way more advanced than mine. Thanks! Lets hope it will be accepted soon. >You are also right with the -DSLIC3R_FHS=1. I thought that that will >make the executable look for the resources outside the /gnu/stare >folder, where nothing would be found, but it works, can you briefly >point me to what is happening? Thank you so much! That is a good question for prusa slicer developers :-) My guess is that using file system hierarchy standard (-DSLIC3R_FHS=1) means that the project uses default procedure to install the package which is modified by Guix to install it to /gnu/store directory. But when this option is disabled the package is installed in the same directory using non standard procedure about which Guix knows nothing. It could also be a bug in prusa slicer build files. ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#50052: [PATCH] Add prusa-slicer 2021-08-16 7:49 ` Ivan Gankevich 2021-08-16 20:09 ` Daniel Trujillo Viedma @ 2021-08-17 21:59 ` Daniel Trujillo Viedma 1 sibling, 0 replies; 6+ messages in thread From: Daniel Trujillo Viedma @ 2021-08-17 21:59 UTC (permalink / raw) To: 50052-done Closing this in favor of Ivan's 49713 (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49713), which is more complete and advanced than mine. Thanks to Xinglu Chen and Ivan Gankevich (and everyone interested) for their time and their valuable feedback, I learned a lot. Hope to see you soon with a (hopefully not WIP) new package! Cheers, Dani. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-08-17 22:00 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <0654f9e7-8c1d-aa4c-3240-54faf3defb2f@gmail.com> 2021-08-13 22:58 ` [bug#50052] [PATCH] Add prusa-slicer Daniel Trujillo Viedma 2021-08-15 11:02 ` Xinglu Chen 2021-08-16 7:49 ` Ivan Gankevich 2021-08-16 20:09 ` Daniel Trujillo Viedma 2021-08-17 7:18 ` Ivan Gankevich 2021-08-17 21:59 ` bug#50052: " Daniel Trujillo Viedma
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).