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 > 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. > 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”). I didn’t manage to build the package because my machine ran out of memory, but I assume that it built fine for you. :-)