diff options
author | Pjotr Prins | 2025-06-24 19:50:23 +0200 |
---|---|---|
committer | Pjotr Prins | 2025-06-24 19:50:23 +0200 |
commit | d89d1e337d8c6eaa09bb36e5c1302a5f10bb8281 (patch) | |
tree | b3d60ddf63948345690858a4390507806539a60b | |
parent | a2409d5fd57040815db6e6d1424d0f70b5286327 (diff) | |
download | pangemma-d89d1e337d8c6eaa09bb36e5c1302a5f10bb8281.tar.gz |
guix: revamping guix.scm
-rw-r--r-- | guix.scm | 121 |
1 files changed, 87 insertions, 34 deletions
@@ -1,53 +1,104 @@ ;; To use this file to build HEAD of gemma: ;; -;; guix build -f guix.scm +;; guix build -f guix.scm # default builds pangemma-git +;; guix build -L . gemma-git # builds original (still) ;; ;; To get a development container (e.g., run in emacs shell). ;; -;; guix shell -C -D -f guix.scm +;; guix shell -C -D -F -v 3 -L . pangemma-shell-git # pangemma-shell-git +;; guix shell -C -D -F -v 3 -L . gemma-git # for specific packages ;; -(use-modules - ((guix licenses) #:prefix license:) - (guix gexp) - (guix packages) - (guix git-download) - (guix build-system gnu) - (gnu packages algebra) - (gnu packages base) - (gnu packages compression) - ;; (gnu packages bioinformatics) - (gnu packages build-tools) - (gnu packages check) - ;; (gnu packages curl) - (gnu packages gdb) - (gnu packages guile) - ;; (gnu packages llvm) - (gnu packages maths) - ;; (gnu packages ninja) - ;; (gnu packages parallel) - (gnu packages perl) - ;; (gnu packages perl6) - ;; (gnu packages ruby) - (gnu packages pkg-config) - ;; (pjotr packages openblas) ;; we use this for the static builds - ;; (gnu packages shell) ;; for shunit2 - (srfi srfi-1) - (ice-9 popen) - (ice-9 rdelim)) +(define-module (guix) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module (gnu packages algebra) + #:use-module (gnu packages base) + #:use-module (gnu packages compression) + #:use-module (gnu packages build-tools) + #:use-module (gnu packages check) + #:use-module (gnu packages gdb) + #:use-module (gnu packages guile) + #:use-module (gnu packages maths) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (srfi srfi-1) + #:use-module (ice-9 popen) + #:use-module (ice-9 rdelim)) (define %source-dir (dirname (current-filename))) (define %git-commit - (read-string (open-pipe "git show HEAD | head -1 | cut -d ' ' -f 2" OPEN_READ))) + (read-string (open-pipe "git describe --always --tags --long|tr -d $'\n'" OPEN_READ))) -(define %gemma-version - (read-string (open-pipe "cat VERSION" OPEN_READ))) +(define %pangemma-version + (read-string (open-pipe "cat VERSION|tr -d $'\n'" OPEN_READ))) +(define-public pangemma-base-git + "Pangemma base build package" + (package + (name "pangemma-git") + (version (git-version %pangemma-version "HEAD" %git-commit)) + (source (local-file %source-dir #:recursive? #t)) + (build-system gnu-build-system) + (inputs + (list gsl + openblas + zlib)) + ;; ("gsl-static" ,gsl-static) + ;; ("zlib:static" ,zlib "static") + (propagated-inputs + (list guile-3.0)) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'validate-runpath) + (add-before 'build 'bin-mkdir + (lambda _ + (mkdir-p "bin") + )) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "bin/gemma" (string-append out "/bin")))))) + #:tests? #t + #:parallel-tests? #f)) + (home-page "https://git.genenetwork.org/pangemma/") + (synopsis "Tool for genome-wide efficient mixed model association") + (description "New version of Genome-wide Efficient Mixed Model Association (PANGEMMA) +provides a standard linear mixed model resolver with application in +genome-wide association studies (GWAS).") + (license license:gpl3))) + +(define-public pangemma-shell-git + "Shell version for development" + (package + (inherit pangemma-base-git) + (name "pangemma-shell-git") + (propagated-inputs + (modify-inputs (package-inputs pangemma-base-git) + (append which binutils coreutils ;; for the shell + ))) + (arguments + `(#:phases (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (delete 'package) + (delete 'check) + (delete 'install)))) + (description "Pangemma shell for development") + )) + +;; ---- legacy build ----------------------------------------------------------------- (define-public gemma-git + "Original legacy gemma -- for as long as it compiles" (package (name "gemma-git") - (version (git-version "0.98.5" "HEAD" %git-commit)) + (version (git-version %pangemma-version "HEAD" %git-commit)) (source (local-file %source-dir #:recursive? #t)) (build-system gnu-build-system) (inputs @@ -84,4 +135,6 @@ provides a standard linear mixed model resolver with application in genome-wide association studies (GWAS).") (license license:gpl3))) + + gemma-git |