about summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2024-01-13 01:04:55 +0000
committerArun Isaac2024-01-13 01:04:55 +0000
commit763d01a80a36482d69b3bd548cdb30766fb68b08 (patch)
treeab8dc00e92a2de6225f2de61c0e6f25cb2772a68
parentd63f2df9d10ab425930900283323aba4b96b8a8c (diff)
downloadccwl-763d01a80a36482d69b3bd548cdb30766fb68b08.tar.gz
ccwl-763d01a80a36482d69b3bd548cdb30766fb68b08.tar.lz
ccwl-763d01a80a36482d69b3bd548cdb30766fb68b08.zip
guix: Add G-expression computed-file to build website.
* .guix/ccwl-package.scm: Import emacs-minimal from (gnu packages
emacs), font-charter and font-fira-code from (gnu packages fonts),
%guile-build-system-modules from (guix build-system guile), and (guix
profiles).
(ccwl-website-gexp, ccwl-website): New variables.
-rw-r--r--.guix/ccwl-package.scm52
1 files changed, 51 insertions, 1 deletions
diff --git a/.guix/ccwl-package.scm b/.guix/ccwl-package.scm
index a7f31a6..a70e3e0 100644
--- a/.guix/ccwl-package.scm
+++ b/.guix/ccwl-package.scm
@@ -1,5 +1,5 @@
 ;;; ccwl --- Concise Common Workflow Language
-;;; Copyright © 2021, 2023 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2021, 2023–2024 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of ccwl.
 ;;;
@@ -18,9 +18,13 @@
 
 (define-module (ccwl-package)
   #:use-module ((gnu packages bioinformatics) #:prefix guix:)
+  #:use-module ((gnu packages emacs) #:select (emacs-minimal))
+  #:use-module ((gnu packages fonts) #:select (font-charter font-fira-code))
+  #:use-module ((guix build-system guile) #:select (%guile-build-system-modules))
   #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #:use-module (guix profiles)
   #:use-module (guix utils))
 
 (define-public ccwl
@@ -32,4 +36,50 @@
                         #:select? (or (git-predicate (dirname (current-source-directory)))
                                       (const #t))))))
 
+(define ccwl-website-gexp
+  (let ((development-profile
+         (profile
+          (content (package->development-manifest ccwl))
+          (allow-collisions? #t))))
+    (with-imported-modules %guile-build-system-modules
+      #~(begin
+          (use-modules (guix build guile-build-system)
+                       (guix build utils))
+
+          (set-path-environment-variable
+           "PATH" (list "/bin") (list #$development-profile #$emacs-minimal))
+          (set-path-environment-variable
+           "LIBRARY_PATH" (list "/lib") (list #$development-profile))
+          (set-path-environment-variable
+           "GUILE_LOAD_PATH"
+           (list (string-append "/share/guile/site/"
+                                (target-guile-effective-version)))
+           (list #$development-profile))
+          (set-path-environment-variable
+           "GUILE_LOAD_COMPILED_PATH"
+           (list (string-append "/lib/guile/" (target-guile-effective-version) "/site-ccache"))
+           (list #$development-profile))
+          (copy-recursively #$(package-source ccwl)
+                            (getcwd))
+          ;; Emacs modifies README.org presumably for the contained
+          ;; org dynamic block. So, grant write permissions.
+          (chmod "README.org" #o644)
+          (for-each patch-shebang
+                    (list "pre-inst-env"
+                          "build-aux/generate-cwl-output.sh"
+                          "scripts/ccwl"))
+          (substitute* "Makefile"
+            (("\\$\\(GUIX_ENVIRONMENT\\)")
+             #$(profile
+                (content (packages->manifest (list font-charter font-fira-code))))))
+          (invoke "sh" "configure")
+          (invoke "make"
+                  "--jobs" (number->string (parallel-job-count)))
+          (invoke "make" "website"
+                  "--jobs" (number->string (parallel-job-count)))
+          (copy-recursively "website" #$output)))))
+
+(define-public ccwl-website
+  (computed-file "ccwl-website" ccwl-website-gexp))
+
 ccwl