guix-commits
[Top][All Lists]
Advanced

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

11/11: gnu: darktable: Add compatibility for ROCm.


From: guix-commits
Subject: 11/11: gnu: darktable: Add compatibility for ROCm.
Date: Sun, 8 Aug 2021 10:57:29 -0400 (EDT)

lbraun pushed a commit to branch master
in repository guix.

commit e81cf4e79a6e297db0ae2a9c39eab495e7e204f0
Author: Lars-Dominik Braun <lars@6xq.net>
AuthorDate: Fri Aug 6 08:30:13 2021 +0200

    gnu: darktable: Add compatibility for ROCm.
    
    darktable has a few tools, which can use OpenCL, not just the main
    binary. Instead of wrapping it, patch the search path. ROCm also
    fails to build OpenCL kernels with just the inline keyword. Apply
    upstream fix.
    
    * gnu/packages/photo.scm (darktable) [#:phases]: Add new phases, remove
    LD_LIBRARY_PATH from wrap-binary.
---
 gnu/packages/photo.scm | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 3ef0fbf..bf51e68 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -486,6 +486,24 @@ photographic equipment.")
                            "-DBUILD_TESTING=On")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'libOpenCL-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Statically link to libOpenCL.
+             (substitute* "./src/common/dlopencl.c"
+               (("\"libOpenCL\"")
+                (string-append "\"" (assoc-ref inputs "ocl-icd") 
"/lib/libOpenCL.so\"")))
+             #t))
+         ;; The use of inline is wrong and darktable cannot compile its kernels
+         ;; with ROCm. See upstream commit
+         ;; 
https://github.com/darktable-org/darktable/commit/f0d8710f5ef34eb7e33b4064e022ebf3057b9e53
+         (add-after 'unpack 'opencl-inline
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This is a feature of OpenCL 1.2 and later.
+             (substitute* "data/kernels/CMakeLists.txt"
+               (("CL1\\.1") "CL1.2"))
+             (substitute* (find-files "data/kernels" "\\.(cl|h)$")
+               (("inline") "static inline"))
+             #t))
          (add-before 'configure 'prepare-build-environment
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Rawspeed fails to build with GCC due to OpenMP error:
@@ -516,11 +534,7 @@ photographic equipment.")
                ;; For GtkFileChooserDialog.
                `("GSETTINGS_SCHEMA_DIR" =
                  (,(string-append (assoc-ref inputs "gtk+")
-                                  "/share/glib-2.0/schemas")))
-               ;; For libOpenCL.so.
-               `("LD_LIBRARY_PATH" =
-                 (,(string-append (assoc-ref inputs "ocl-icd")
-                                  "/lib"))))
+                                  "/share/glib-2.0/schemas"))))
              #t)))))
     (native-inputs
      `(("clang" ,clang-11)



reply via email to

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