Subject: [bug#70880] [PATCH v2 8/8] gnu: prusa-slicer: Update to 2.7.4.

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 09 Jul 2024 22:42:22 -0400

Hello,

"Artyom V. Poptsov" <[email-masked]> writes:

> * gnu/packages/engineering.scm (prusa-slicer): Update to 2.7.4.  [source]:
>   Remove "prusa-slicer-boost-fixes.patch" and

Nitpick: no need for hanging indent :-)

>   "prusa-slicer-with-cereal-1.3.1.patch".  Move some part of the snippet code
>   to custom build phases.
>   [arguments]: In configure flags add paths to external libraries.
>   Add "fix-include-paths" phase.

Suggestion: I'd use either directly [configure-flags] or [arguments]
<configure-flags> to make description of change more terse.

>   [native-inputs]: Add "catch2".
>   [inputs]: Use "prusa-wxwidgets" instead of "wxwidgets" to fix segfaults.
>   Ad "qhull", "nanosvg", "heatshrink" and "prusa-libbgcode".

Nitpick: variable names are not typically quoted in the ChangeLog.

> * gnu/packages/patches/prusa-slicer-boost-fixes.patch,
>   gnu/packages/patches/prusa-slicer-with-cereal-1.3.1.patch: Remove unused
>   patches.
> * gnu/local.mk (dist_patch_DATA): De-register "prusa-slicer-boost-fixes.patch"
>   and "prusa-slicer-with-cereal-1.3.1.patch".
>
> Change-Id: I15e85d63c9ad6c731c8040ef2d8ec8b2f31f2ab7
> ---
>  gnu/local.mk                                  |  2 -
>  gnu/packages/engineering.scm                  | 53 ++++++----
>  .../patches/prusa-slicer-boost-fixes.patch    | 97 -------------------
>  .../prusa-slicer-with-cereal-1.3.1.patch      | 52 ----------
>  4 files changed, 35 insertions(+), 169 deletions(-)
>  delete mode 100644 gnu/packages/patches/prusa-slicer-boost-fixes.patch
>  delete mode 100644 gnu/packages/patches/prusa-slicer-with-cereal-1.3.1.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 29107a618b..d9760557df 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -1839,9 +1839,7 @@ dist_patch_DATA =						\
>    %D%/packages/patches/pokerth-boost.patch			\
>    %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch		\
>    %D%/packages/patches/procps-strtod-test.patch                 \
> -  %D%/packages/patches/prusa-slicer-boost-fixes.patch		\
>    %D%/packages/patches/prusa-slicer-fix-tests.patch		\
> -  %D%/packages/patches/prusa-slicer-with-cereal-1.3.1.patch	\
>    %D%/packages/patches/prusa-wxwidgets-makefile-fix.patch	\
>    %D%/packages/patches/pthreadpool-system-libraries.patch	\
>    %D%/packages/patches/python-3.12-fix-tests.patch		\
> diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
> index de4b4a5825..2a3671b01d 100644
> --- a/gnu/packages/engineering.scm
> +++ b/gnu/packages/engineering.scm
> @@ -3802,7 +3802,7 @@ (define-public prusa-libbgcode
>  (define-public prusa-slicer
>    (package
>      (name "prusa-slicer")
> -    (version "2.5.2")
> +    (version "2.7.4")
>      (source
>       (origin
>         (method git-fetch)
> @@ -3811,13 +3811,11 @@ (define-public prusa-slicer
>           (url "https://github.com/prusa3d/PrusaSlicer")
>           (commit (string-append "version_" version))))
>         (file-name (git-file-name name version))
> -       (sha256 (base32 "02qcrw3fa0d8ldbp73hp14l1qxbp3f4608j4csc07ny00ra42151"))
> -       (patches (search-patches "prusa-slicer-boost-fixes.patch"
> -                                "prusa-slicer-fix-tests.patch"
> -                                "prusa-slicer-with-cereal-1.3.1.patch"))
> +       (sha256 (base32 "0s1cfvhfilyv0y98asr61c6rwlgyr1hf5v5hg8q9zwmzm2bkcql3"))
> +       (patches (search-patches "prusa-slicer-fix-tests.patch"))
>         (modules '((guix build utils)))
>         (snippet
> -        '(begin
> +        `(begin
>             ;; 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.
> @@ -3825,10 +3823,12 @@ (define-public prusa-slicer
>             (delete-file-recursively "src/hidapi")
>             (delete-file-recursively "src/eigen")
>             (delete-file-recursively "src/libigl/igl")
> +           (substitute* "CMakeLists.txt"
> +             (("add_library\\(libexpat INTERFACE\\)")
> +              ""))
> +           (substitute* "src/libigl/CMakeLists.txt"
> +             (("target_link_libraries\\(libigl INTERFACE igl::core\\)") ""))
>             (substitute* "src/CMakeLists.txt"
> -             (("add_subdirectory\\(libigl\\)" all)
> -              (string-append
> -               all "\ninclude_directories(libigl INTERFACE libigl::core)"))
>               (("add_subdirectory\\(hidapi\\)")
>                "pkg_check_modules(HIDAPI REQUIRED hidapi-hidraw)")
>               (("include_directories\\(hidapi/include\\)")
> @@ -3841,13 +3841,26 @@ (define-public prusa-slicer
>               (("\\bhidapi\\b") "${HIDAPI_LIBRARIES}"))))))
>      (build-system cmake-build-system)
>      (arguments
> -     `(#:configure-flags
> -       '("-DSLIC3R_FHS=1" ;; Use The Filesystem Hierarchy Standard.
> -         "-DSLIC3R_GTK=3" ;; Use GTK+
> -         ;; Use wxWidgets 3.0.x.x to prevent GUI crashes when adding support enforcers.
> -         "-DSLIC3R_WX_STABLE=1")))
> +     (list #:configure-flags
> +           #~(list "-DSLIC3R_FHS=1" ;; Use The Filesystem Hierarchy Standard.
> +                   "-DSLIC3R_GTK=3" ;; Use GTK+
> +                   ;; Use wxWidgets 3.0.x.x to prevent GUI crashes when adding support enforcers.
> +                   "-DSLIC3R_WX_STABLE=1"
> +                   (format #f "-Dlibigl_DIR=~a"
> +                           (search-input-directory %build-inputs
> +                                                   "lib/cmake/igl/"))
> +                   (format #f "-DCatch2_DIR=~a"
> +                           (search-input-directory %build-inputs
> +                                                   "lib/cmake/Catch2/")))
> +           #:phases
> +           #~(modify-phases %standard-phases
> +               (add-after 'unpack 'fix-include-paths
> +                 (lambda _
> +                   (substitute* "tests/libslic3r/test_quadric_edge_collapse.cpp"
> +                     (("#include <libigl/igl/qslim.h>")
> +                      "#include <igl/qslim.h>")))))))
>      (native-inputs
> -     (list pkg-config))
> +     (list pkg-config catch2))
>      (inputs
>       (list boost
>             cereal
> @@ -3873,9 +3886,13 @@ (define-public prusa-slicer
>             pango
>             tbb
>             eudev
> -           ;; prusa-slicer 2.5 segfaults on startup with wxwidgets 3.2
> -           ;; See https://github.com/prusa3d/PrusaSlicer/issues/8299
> -           wxwidgets-3.0
> +           qhull
> +           nanosvg
> +           heatshrink
> +           ;; XXX: Using Prusa wxWidgets fork as PrusaSlicer segfaults when compiled
> +           ;; with regular wxwidgets.
> +           prusa-wxwidgets
> +           prusa-libbgcode

Please sort inputs alphabetically.

The rest LGTM.  Could you please resubmit a v3 with the small things
I've spotted in my reading of v2?  Sorry for missing some of these
things in v1.

-- 
Thanks,
Maxim