about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEfraim Flashner2021-09-23 09:23:57 +0300
committerEfraim Flashner2021-09-29 16:41:23 +0300
commite979f3e2717a93faf175f6c1a05f48ebee490ae1 (patch)
tree7fef4a490067117cba34fbc192630bc72a173820
parent7d29f6640300df658db64056c2f159b5e5b0cf7e (diff)
downloadguix-bioinformatics-e979f3e2717a93faf175f6c1a05f48ebee490ae1.tar.gz
WIP packaging (python-)kaleido
-rw-r--r--gn/packages/images.scm146
1 files changed, 146 insertions, 0 deletions
diff --git a/gn/packages/images.scm b/gn/packages/images.scm
new file mode 100644
index 0000000..a6e8af4
--- /dev/null
+++ b/gn/packages/images.scm
@@ -0,0 +1,146 @@
+(define-module (gn packages images)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix git-download)
+  #:use-module (gnu packages build-tools)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages chromium)
+  #:use-module (gnu packages graph)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-science)
+  )
+
+(define-public kaleido
+  (package
+    (inherit ungoogled-chromium)
+    (name "kaleido")
+    (version "0.2.1")
+    (build-system gnu-build-system)
+    (arguments
+     (substitute-keyword-arguments (package-arguments ungoogled-chromium)
+       ((#:modules modules %gnu-build-system-modules)
+        `((srfi srfi-1)
+          ,@modules))
+       ((#:tests? _ #f) #f)             ; TODO: enable after successfully building.
+       ((#:configure-flags flags)
+        `(append
+           ;; First we modify the inherited configure-flags.
+           (fold delete ,flags
+                 '(
+                   "use_pulseaudio=true"
+                   "link_pulseaudio=true"
+                   "use_vaapi=true"
+                   "rtc_use_pipewire=true"
+                   "rtc_link_pipewire=true"
+                   ))
+           (list
+             "import(\"//build/args/headless.gn\")"
+             "enable_nacl=false"
+             "is_component_build=false"
+             "symbol_level=0"
+             "blink_symbol_level=0"
+             "is_debug=false"
+             )
+           ))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'unpack-kaleido-source
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;(invoke "tar" "xvf" (assoc-ref inputs "kaleido-source")
+               ;        "--strip-components=1")
+               (copy-recursively (assoc-ref inputs "kaleido-source") ".")
+               ))
+           (add-before 'configure 'prepare-kaleido-build-environment
+             (lambda _
+               ;; /repos/linux_scripts/build_kaleido_docker
+               (with-output-to-file "repos/kaleido/version"
+                 (lambda _
+                   (format #t "~a~%" ,version)))
+               ;(mkdir-p "out/Kaleido_linux")
+               ;(with-output-to-file "out/Kaleido_linux/args.gn"
+               ;  (lambda _
+               ;    (format #t
+               ;            "import(\"//build/args/headless.gn\")~@
+               ;            enable_nacl=false~@
+               ;            is_component_build=false~@
+               ;            ~@
+               ;            symbol_level=0~@
+               ;            blink_symbol_level=0~@
+               ;            is_debug=false~@
+               ;            ~@
+               ;            target_cpu=\"~a\"~%"
+               ;            "x64")))   ; x86_64 -> x64, aarch64 -> arm64, armhf -> arm
+               ))
+           (replace 'configure
+             (lambda* (#:key configure-flags #:allow-other-keys)
+               (let ((args (string-join configure-flags " ")))
+                 ;; Generate ninja build files.
+                 (invoke "gn" "gen" "out/Release"
+                         (string-append "--args=" args)
+                         )
+
+                 ;; Print the full list of supported arguments as well as
+                 ;; their current status for convenience.
+                 ;(format #t "Dumping configure flags...\n")
+                 ;(invoke "gn" "args" "out/Kaleido_linux" "--list")
+                 )))
+           (replace 'build
+             (lambda* (#:key (parallel-build? #t) #:allow-other-keys)
+               (mkdir-p "headless/app")
+               (copy-recursively "repos/kaleido/cc" "headles/app")
+
+               (invoke "ninja" "-C" "out/Release"
+                       "-j" (if parallel-build?
+                                (number->string (parallel-job-count))
+                                "1")
+                       "kaleido")
+
+               (mkdir-p "repos/build/kaleido_minimal/bin")
+               (install-file "out/Release/kaleido" "repos/build/kaleido_minimal/bin")
+               (copy-recursively "out/Release/swiftshader/" "repos/build/kaleido_minimal/bin")
+               (install-file "repos/kaleido/version" "repos/build/kaleido_minimal/")
+
+               (invoke "python3" "setup.py" "package")
+               (invoke "python3" "setup.py" "package_source")
+               ))
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 (with-directory-excursion "repos/kaleido/tests"
+                   (invoke "pytest" "-s" "test_py/")))))
+           ))
+        ))
+    (native-inputs
+     `(
+       ("gn" ,gn)
+       ("poppler" ,poppler)
+       ("python" ,python)
+       ("python-pandas" ,python-pandas)
+       ("python-plotly" ,python-plotly)
+       ("python-pytest" ,python-pytest)
+       ("kaleido-source"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                  (url "https://github.com/plotly/Kaleido")
+                  (commit (string-append "v" version))))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32 "0p7vddwha4bmb0ihbvjgqwhwa7xmm7xnh2hff5r2xzz64rjcz47x"))))
+       ,@(package-native-inputs ungoogled-chromium)))
+    (inputs
+     `(
+       ,@(package-inputs ungoogled-chromium)))
+    (home-page "https://github.com/plotly/Kaleido")
+    (synopsis "Static image export for web-based visualization libraries")
+    (description "Kaleido is a library for generating static images (e.g. png,
+svg, pdf, etc.) for web-based visualization libraries, with a particular focus
+on eliminating external dependencies.  The project's initial focus is on the
+export of @code{plotly.js} images from Python for use by @code{plotly.py}, but
+it is designed to be relatively straight-forward to extend to other web-based
+visualization libraries, and other programming languages.")
+    (license license:expat)))