about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--guix.scm145
1 files changed, 145 insertions, 0 deletions
diff --git a/guix.scm b/guix.scm
new file mode 100644
index 0000000..5575184
--- /dev/null
+++ b/guix.scm
@@ -0,0 +1,145 @@
+(use-modules (ice-9 match)
+             (ice-9 popen)
+             (ice-9 rdelim)
+             (srfi srfi-1)
+             (srfi srfi-26)
+             (guix build utils)
+             (guix build-system cmake)
+             (guix build-system guile)
+             (guix gexp)
+             (guix git-download)
+             ((guix licenses) #:prefix license:)
+             (guix packages)
+             (guix utils)
+             (gnu packages bash)
+             (gnu packages guile)
+             (gnu packages guile-xyz)
+             (gnu packages maths)
+             (gnu packages pkg-config))
+
+(define %source-dir (dirname (current-filename)))
+
+(define git-file?
+  (let* ((pipe (with-directory-excursion %source-dir
+                 (open-pipe* OPEN_READ "git" "ls-files")))
+         (files (let loop ((lines '()))
+                  (match (read-line pipe)
+                    ((? eof-object?)
+                     (reverse lines))
+                    (line
+                     (loop (cons line lines))))))
+         (status (close-pipe pipe)))
+    (lambda (file stat)
+      (match (stat:type stat)
+        ('directory #t)
+        ((or 'regular 'symlink)
+         (any (cut string-suffix? <> file) files))
+        (_ #f)))))
+
+;; TODO: Contribute upstream to Guix and delete.
+(define sph-lib
+  (package
+    (name "sph-lib")
+    (version "2021-01-05")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sph-mn/sph-lib")
+             (commit "2b0474218e51c1debb4de7b932a0e1c8bff4577c")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0yz8igkv725ddjlss4jhzzwam3p4zkw38z45pydsdv4q912qjxml"))))
+    (build-system guile-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-build-errors
+           (lambda _
+             (substitute* "modules/sph/documentation.scm"
+               (("\\(define output-format-markdown" all)
+                (string-append "(define default-format-arguments)\n" all)))
+             (chdir "modules")
+             (delete-file "sph/documentation/itpn.scm")
+             (delete-file-recursively "test"))))))
+    (inputs
+     `(("guile" ,guile-3.0)
+       ("guile-fibers" ,guile-fibers)
+       ("guile-reader" ,guile-reader)))
+    (home-page "https://github.com/sph-mn/sph-lib")
+    (synopsis "Collection of guile scheme libraries")
+    (description "Collection of guile scheme libraries")
+    (license license:gpl3+)))
+
+;; TODO: Contribute upstream to Guix and delete.
+(define sph-sc
+  (package
+    (name "sph-sc")
+    (version "2021-02-02")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sph-mn/sph-sc")
+             (commit "42c992737a5a1a176706c9a3c30c32ca3828476c")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0f3nssnqpqbm5wfv53lg8wi3dcpc0l9qyysd9r1bvig343gs79lm"))))
+    (build-system guile-build-system)
+    (inputs
+     `(("bash" ,bash)
+       ("guile" ,guile-3.0)
+       ("sph-lib" ,sph-lib)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-build-errors
+           (lambda* (#:key outputs #:allow-other-keys)
+             (copy-recursively "other/sc-format/modules" "modules")
+             (chdir "modules")
+             (delete-file-recursively "test")))
+         (add-after 'install 'install-executables
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (string-append (assoc-ref outputs "out")))
+                    (bin (string-append out "/bin"))
+                    (version ,(version-major+minor (package-version guile-3.0)))
+                    (scm (string-append out "/share/guile/site/" version))
+                    (go (string-append out "/share/guile/" version "/site-ccache")))
+               (mkdir bin)
+               (for-each (lambda (executable)
+                           (let ((installed-executable (string-append bin "/" (basename executable))))
+                             (copy-file executable installed-executable)
+                             (wrap-program installed-executable
+                               `("GUILE_LOAD_PATH" ":" prefix
+                                 (,scm ,(getenv "GUILE_LOAD_PATH")))
+                               `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                                 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))))
+                         (list "../exe/sc"
+                               "../other/sc-format/exe/sc-format"))))))))
+    (home-page "https://github.com/sph-mn/sph-sc")
+    (synopsis "Compile scheme-like S-expressions to C")
+    (description "Compile scheme-like S-expressions to C")
+    (license license:gpl3+)))
+
+(package
+  (name "extent-sampling")
+  (version "0.1.0")
+  (home-page "https://git.systemreboot.net/guile-xapian")
+  (source (local-file %source-dir
+                      #:recursive? #t
+                      #:select? git-file?))
+  (build-system cmake-build-system)
+  (arguments
+   '(#:tests? #f ; no tests
+     #:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
+  (inputs
+   `(("gsl" ,gsl)
+     ("guile" ,guile-3.0)))
+  (native-inputs
+   `(("pkg-config" ,pkg-config)
+     ("sph-sc" ,sph-sc)))
+  (synopsis "Extent sampling library")
+  (description "Extent sampling library")
+  (license license:gpl3+))