From c89eae53321289b457fe66301cd6a843c1417033 Mon Sep 17 00:00:00 2001
From: angicque <antoine.a.gicquel@inria.fr>
Date: Sun, 26 Jan 2025 23:29:47 +0100
Subject: [PATCH] guix: add minimal guix set-up to build the documentation
 using guix

---
 .guix                               |  1 +
 README.md                           |  8 ++++
 guix-tools/python-exhale.scm        | 57 +++++++++++++++++++++++++++++
 guix-tools/scalfmm-manifest-doc.scm | 20 ++++++++++
 4 files changed, 86 insertions(+)
 create mode 120000 .guix
 create mode 100644 guix-tools/python-exhale.scm
 create mode 100644 guix-tools/scalfmm-manifest-doc.scm

diff --git a/.guix b/.guix
new file mode 120000
index 00000000..546e858b
--- /dev/null
+++ b/.guix
@@ -0,0 +1 @@
+guix-tools/
\ No newline at end of file
diff --git a/README.md b/README.md
index e6bcc952..df3e5d7c 100644
--- a/README.md
+++ b/README.md
@@ -275,6 +275,14 @@ guix time-machine -C .guix/scalfmm-channels.scm -- shell -C -m .guix/scalfmm-man
 
 We provide several manifest files: `scalfmm-manifest-openblas.scm`, `scalfmm-manifest-mkl.scm`.
 
+### Build the documentation with guix
+
+TODO: provide instructions to build the documentations using `guix time-machine` and `guix shell`
+
+``` bash
+guix time-machine -C .guix/scalfmm-channels.scm -- shell -C -m .guix/scalfmm-manifest-doc.scm -L .guix/
+```
+
 ## Contributing and development guidelines
 
 ### Gitlab flow
diff --git a/guix-tools/python-exhale.scm b/guix-tools/python-exhale.scm
new file mode 100644
index 00000000..387a9017
--- /dev/null
+++ b/guix-tools/python-exhale.scm
@@ -0,0 +1,57 @@
+(define-module (python-exhale)
+  #:use-module (guix)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix hg-download)
+  #:use-module (guix gexp)
+  #:use-module (guix utils)
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system pyproject)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages certs)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages fonts)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages jupyter)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages time)
+  #:use-module (gnu packages python-science)
+  #:use-module (gnu packages graph)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (guix build-system gnu))
+
+(define-public python-exhale
+  (package
+    (name "python-exhale")
+    (version "0.3.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "exhale" version))
+       (sha256
+        (base32 "1n5hsrg7swh535bd5b3f55ldcb343yld849kjcfm2mlllp89cakm"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-beautifulsoup4 python-breathe python-lxml
+                             python-six python-sphinx))
+    (native-inputs (list python-setuptools python-wheel))
+    (home-page "https://github.com/svenevs/exhale")
+    (synopsis
+     "Automatic C++ library API documentation generator using Doxygen, Sphinx, and")
+    (description
+     "Automatic C++ library API documentation generator using Doxygen, Sphinx, and.")
+    (license #f)))
+
+;; python-exhale
diff --git a/guix-tools/scalfmm-manifest-doc.scm b/guix-tools/scalfmm-manifest-doc.scm
new file mode 100644
index 00000000..5b84cd5d
--- /dev/null
+++ b/guix-tools/scalfmm-manifest-doc.scm
@@ -0,0 +1,20 @@
+;; What follows is a "manifest" equivalent to the command line you gave.
+;; You can store it in a file that you may then pass to any 'guix' command
+;; that accepts a '--manifest' (or '-m') option.
+
+(specifications->manifest
+  (list "openblas"
+        "fftw"
+        "fftwf"
+        "cmake"
+        "make"
+        "gcc-toolchain"
+        "pkg-config"
+        "doxygen"
+        "coreutils"
+        "python"
+        "python-sphinx"
+        "python-recommonmark"
+        "python-breathe"
+        "python-sphinx-rtd-theme"
+        "python-exhale"))
-- 
GitLab