diff options
-rw-r--r-- | .guix-channel | 2 | ||||
-rw-r--r-- | gn/packages/bioinformatics.scm | 272 | ||||
-rw-r--r-- | gn/packages/crates-io.scm | 36 | ||||
-rw-r--r-- | gn/packages/genenetwork.scm | 84 | ||||
-rw-r--r-- | gn/packages/guile.scm | 44 | ||||
-rw-r--r-- | gn/packages/javascript.scm | 250 | ||||
-rw-r--r-- | gn/packages/python-web.scm | 49 | ||||
-rw-r--r-- | gn/packages/python.scm | 72 | ||||
-rw-r--r-- | gn/packages/web.scm | 20 | ||||
-rw-r--r-- | gn/services/databases.scm | 6 |
10 files changed, 606 insertions, 229 deletions
diff --git a/.guix-channel b/.guix-channel index 4bbc28a..3913b23 100644 --- a/.guix-channel +++ b/.guix-channel @@ -14,7 +14,7 @@ (name guix) (url "https://git.savannah.gnu.org/git/guix.git") (branch "master") - (commit "2394a7f5fbf60dd6adc0a870366adb57166b6d8b") + (commit "61428ccf41f21f5ea1e4f1eec722ef9b1efc3a0e") (introduction (channel-introduction (version 0) diff --git a/gn/packages/bioinformatics.scm b/gn/packages/bioinformatics.scm index 3f89abe..ef30d23 100644 --- a/gn/packages/bioinformatics.scm +++ b/gn/packages/bioinformatics.scm @@ -41,6 +41,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages cran) + #:use-module (gnu packages crates-compression) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages curl) @@ -2163,6 +2164,7 @@ suitable for long reads, but works also well with short reads.") (build-system cmake-build-system) (arguments (list + #:tests? #f ;; FIXME: tests are broken #:phases #~(modify-phases %standard-phases (add-after 'unpack 'use-gnuinstalldirs-macros @@ -2580,121 +2582,159 @@ multiple sequence alignment.") license:zlib ; deps/sonLib/externalTools/cutest license:boost1.0)))) ; catch.hpp +(define-public wfmash-0.14 + (package + (inherit wfmash) + (version "0.14.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/waveygang/wfmash/releases/download/v" + version "/wfmash-v" version ".tar.gz")) + (sha256 + (base32 + "1mk3jschn3hdr45glds65g3hxk7v6nc3plkvxmfbd5pr4kyzlf13")) + (snippet + #~(begin + (use-modules (guix build utils)) + ;; Unbundle atomic-queue. + (delete-file-recursively "src/common/atomic_queue") + (substitute* "src/align/include/computeAlignments.hpp" + (("\"common/atomic_queue/atomic_queue.h\"") + "<atomic_queue/atomic_queue.h>")) + ;; Remove compiler optimizations. + (substitute* (find-files "." "CMakeLists\\.txt") + (("-march=native ") "")))))) + (arguments + (substitute-keyword-arguments (package-arguments wfmash) + ((#:tests? tests? #f) #f) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + (replace 'build-check-prerequisites + (lambda _ + (let ((wfa2-lib #$(string-append "../wfmash-v" + version + "/src/common/wflign/deps/WFA2-lib"))) + (substitute* (string-append wfa2-lib "/Makefile") + ;; Remove architecture-specific flags. + (("-march=x86-64-v3") "")) + (substitute* (string-append wfa2-lib "/tests/wfa.utest.sh") + ;; Fix time command. + (("\\\\time -v") "time")) + ;; Build wfa2-lib. + (invoke "make" "-C" wfa2-lib + #$(string-append "CC=" (cc-for-target)))))))))) + (inputs + (modify-inputs (package-inputs wfmash) + (prepend jemalloc) + (delete "libdeflate"))))) + (define-public pggb - (let ((commit "9ebff27320382e470ed38a85b4448402e1e7c353") - (revision "1")) - (package - (name "pggb") - (version (git-version "0.5.1" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/pangenome/pggb") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0rgpj52q3ai7f1saqbilgx5gz4f403x3427wq649qwv84ivmi1sf")))) - (build-system copy-build-system) - (arguments - (list - #:install-plan - #~'(("pggb" "bin/") - ("partition-before-pggb" "bin/") - ("scripts/" "bin/") - ("scripts" "bin/scripts")) - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'force-python3 - (lambda _ - (substitute* (find-files "scripts" "\\.py$") - (("/usr/bin/python") "/usr/bin/python3")))) - (add-before 'install 'patch-and-wrap-scripts - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "scripts/vcf_preprocess.sh" - (("bcftools ") - (string-append (search-input-file inputs "/bin/bcftools") " "))) - (wrap-script "scripts/net2communities.py" - `("GUIX_PYTHONPATH" ":" prefix - (,(getenv "GUIX_PYTHONPATH")))))) - (add-after 'install 'wrap-scripts - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (for-each - (lambda (file) - (wrap-script file - `("R_LIBS_SITE" ":" prefix - (,(getenv "R_LIBS_SITE"))) - `("PATH" ":" prefix - ,(map (lambda (input) (string-append input "/bin")) - '#$(map (lambda (label) - (or (this-package-input (string-append label "-hwcaps")) - (this-package-input label))) - (list "bc" - "bcftools" - "bedtools" - "gfaffix" - "htslib" - "fastix" - "multiqc" - "mummer" - "odgi" - "pafplot" - "parallel" - "pigz" - "python" - "r-data-table" - "r-minimal" - "rtg-tools" - "samtools" - "seqwish" - "smoothxg" - "time" - "vcfbub" - "vcflib" - "vg" - "wfmash")))))) - (list (string-append out "/bin/pggb") - (string-append out "/bin/partition-before-pggb") - (string-append out "/bin/gfa2evaluation.sh") - (string-append out "/bin/scripts/gfa2evaluation.sh")))))) - (add-after 'install 'substitute-file-paths - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* (string-append out "/bin/gfa2evaluation.sh") - (("/usr/local/bin/vcf_preprocess.sh") - (string-append out "/bin/vcf_preprocess.sh")) - (("/usr/local/bin/nucmer2vcf.R") - (string-append out "/bin/nucmer2vcf.R"))))))))) - (inputs - (list bc - bcftools - bedtools - gfaffix - guile-3.0 ; for wrap-script - htslib ; tabix - fastix - multiqc - mummer - odgi - pafplot - parallel - pigz - python - python-igraph - r-data-table - r-minimal - rtg-tools - samtools - seqwish - smoothxg - time - vcfbub - vcflib - vg - wfmash)) - (home-page "https://doi.org/10.1101/2023.04.05.535718") - (synopsis "PanGenome Graph Builder") - (description "@command{pggb} builds + (package + (name "pggb") + (version "0.7.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pangenome/pggb") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1k3ffl5h5jqnz9k9y5cjqr8z6hh0gyjfj4szggz11lncp5wkskgv")))) + (build-system copy-build-system) + (arguments + (list + #:install-plan + #~'(("pggb" "bin/") + ("partition-before-pggb" "bin/") + ("scripts/" "bin/") + ("scripts" "bin/scripts")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'force-python3 + (lambda _ + (substitute* (find-files "scripts" "\\.py$") + (("/usr/bin/python") "/usr/bin/python3")))) + (add-before 'install 'patch-and-wrap-scripts + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "scripts/vcf_preprocess.sh" + (("bcftools ") + (string-append (search-input-file inputs "/bin/bcftools") " "))) + (wrap-script "scripts/net2communities.py" + `("GUIX_PYTHONPATH" ":" prefix + (,(getenv "GUIX_PYTHONPATH")))))) + (add-after 'install 'wrap-scripts + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each + (lambda (file) + (wrap-script file + `("R_LIBS_SITE" ":" prefix + (,(getenv "R_LIBS_SITE"))) + `("PATH" ":" prefix + ,(map (lambda (input) (string-append input "/bin")) + '#$(map (lambda (label) + (or (this-package-input (string-append label "-hwcaps")) + (this-package-input label))) + (list "bc" + "bcftools" + "bedtools" + "gfaffix" + "htslib" + "multiqc" + "odgi" + "parallel" + "pigz" + "python" + "r-data-table" + "r-minimal" + "rtg-tools" + "samtools" + "seqwish" + "smoothxg" + "time" + "vcfbub" + "vg" + "wfmash")))))) + (list (string-append out "/bin/pggb") + (string-append out "/bin/partition-before-pggb") + (string-append out "/bin/gfa2evaluation.sh") + (string-append out "/bin/scripts/gfa2evaluation.sh")))))) + (add-after 'install 'substitute-file-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* (string-append out "/bin/gfa2evaluation.sh") + (("/usr/local/bin/vcf_preprocess.sh") + (string-append out "/bin/vcf_preprocess.sh")) + (("/usr/local/bin/nucmer2vcf.R") + (string-append out "/bin/nucmer2vcf.R"))))))))) + (inputs + (list bc + bcftools + bedtools + gfaffix + guile-3.0 ; for wrap-script + htslib ; tabix + multiqc + odgi + parallel + pigz + python + python-igraph + r-data-table + r-minimal + rtg-tools + samtools + seqwish + smoothxg + time + vcfbub + vg + wfmash-0.14)) + (home-page "https://doi.org/10.1101/2023.04.05.535718") + (synopsis "PanGenome Graph Builder") + (description "@command{pggb} builds @url{https://doi.org/10.1146%2Fannurev-genom-120219-080406, pangenome} @url{https://doi.org/10.1038/nbt.4227, variation graphs} from a set of input sequences. @@ -2719,7 +2759,7 @@ such as the @url{https://github.com/vgteam/vg, vg} and @command{pggb} has been tested at scale in the @acronym{Human Pangenome Reference Consortium, HPRC} as a method to build a graph from the @url{https://doi.org/10.1101/2022.07.09.499321, draft human pangenome}.") - (license license:expat)))) + (license license:expat))) (define use-glibc-hwcaps (package-input-rewriting/spec @@ -4445,7 +4485,7 @@ automatically vectorize for different architectures without adapting the code.") (define-public r-rrbgen (package - (name "r-stitch") + (name "r-rrbgen") (version "0.0.6") (source (origin diff --git a/gn/packages/crates-io.scm b/gn/packages/crates-io.scm index 4cebb33..276b713 100644 --- a/gn/packages/crates-io.scm +++ b/gn/packages/crates-io.scm @@ -5,6 +5,8 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system cargo) + #:use-module (gnu packages crates-check) + #:use-module (gnu packages crates-compression) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-windows) @@ -688,32 +690,28 @@ or any combination.") (license license:gpl3+))) (define-public gn-rust-correlation - (let ((commit "a22381e9830bac9a6848449279d258397217e251") + (let ((commit "d7b1fd65814511890a4e606e6e610379b6d89393") (revision "0")) (package (name "gn-rust-correlation") (version (git-version "0.1.4" revision commit)) (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Alexanderlacuna/correlation_rust.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1cb197p8zmgxymzs9b7bygs0kg67809z6gc2svza909sxr9ac5ps")))) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Alexanderlacuna/correlation_rust.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1z5p9pjja6a697l558axnp1hr5376b6ng3yl3vxcp2h1skfrykvq")))) (build-system cargo-build-system) - (native-inputs - (list gsl)) + (native-inputs (list gsl)) (arguments - `(#:cargo-inputs - (("rust-serde" ,rust-serde-1) - ("rust-serde-json" ,rust-serde-json-1) - ("GSL" ,rust-gsl) - ("rust-assert-approx-eq" ,rust-assert-approx-eq-1)) - #:cargo-development-inputs - (("rust-criterion" ,rust-criterion-0.3)))) + `(#:cargo-inputs (("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("GSL" ,rust-gsl) + ("rust-assert-approx-eq" ,rust-assert-approx-eq-1)) + #:cargo-development-inputs (("rust-criterion" ,rust-criterion-0.3)))) (home-page "https://github.com/Alexanderlacuna/correlation_rust") (synopsis "Re-implementation of genenetwork/correlation in Rust") (description "Re-implementation of genenetwork/correlation in Rust") diff --git a/gn/packages/genenetwork.scm b/gn/packages/genenetwork.scm index 4e21d7a..82dd30e 100644 --- a/gn/packages/genenetwork.scm +++ b/gn/packages/genenetwork.scm @@ -49,6 +49,7 @@ #:use-module (gnu packages version-control) #:use-module (gnu packages web) #:use-module (gnu packages xml) + #:use-module (gnu packages serialization) #:use-module (gn packages bioinformatics) #:use-module (gn packages crates-io) #:use-module (gn packages gemma) @@ -115,7 +116,7 @@ ((#:tests? _ #f) #f))))) (define-public genenetwork3 - (let ((commit "f9f752152e9e00dbfb756d8a08c10e1892685104") + (let ((commit "4e9bfd1b134eae4de365d1c2b22a97dd676b45b9") (revision "5")) (package (name "genenetwork3") @@ -129,7 +130,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "1ggc597xqj280qdp5gzlk745ldgx54k5sgn1w865ini6ph3i18zr")))) + "0xn8gfsjd41afpgkp1hjyfvx241q47b8ri200fc7kx1kb8vyyhm6")))) (inputs (list python-click)) (native-inputs @@ -138,7 +139,8 @@ python-mypy-extensions python-pylint)) (propagated-inputs - (list csvdiff + (list gn-libs + csvdiff coreutils-minimal diffutils nss-certs @@ -190,8 +192,39 @@ (description "GeneNetwork3 API for data science and machine learning.") (license license:agpl3+)))) + +(define-public temporary-python-flask-session + ;; This is a stop-gap to get the applications building with the guix channel + ;; set to 61428cc. + ;; Remove this as soon as the applications are building with mainline + ;; python-flask-session. + (package + (name "temporary-python-flask-session") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flask_session" version)) + (sha256 + (base32 + "1zs20zpq6gxz9gsccbd2jrrbbcfvh0x9z9741gkr8dhh07mlbq10")))) + (build-system pyproject-build-system) + (arguments + '(#:tests? #f)) ; Tests require the various storage backends to be present + (inputs + (list python-flit-core)) + (propagated-inputs + (list python-cachelib python-flask python-msgspec)) + (home-page "https://github.com/fengsp/flask-session") + (synopsis "Adds server-side session support to your Flask application") + (description + "Flask-Session is an extension for Flask that adds support for +Server-side sessions, with a variety of different backends for session +storage.") + (license license:bsd-3))) + (define-public genenetwork2 - (let ((commit "c4508901027a2d3ea98e1e9b3f8767a455cad02f") + (let ((commit "9c0ddee595e6d67a042296dd9933c92418f87917") (revision "4")) (package (name "genenetwork2") @@ -204,7 +237,7 @@ (file-name (string-append name "-" version)) (sha256 (base32 - "0ndqb32vn1d7ab3ng8849sg1sg7b2a29mmmyr6rm7qj7m4vs1nck")))) + "1vq1vkwwbw5z6rg96hbiir8b0rr9wrx3izsh7s1j1xchbghfk5bi")))) (native-inputs (list graphviz)) (propagated-inputs @@ -266,6 +299,8 @@ javascript-uikit javascript-underscore-string javascript-zxcvbn + javascript-xterm + javascript-xterm-style js-jstat js-md5 js-parsley @@ -283,7 +318,8 @@ python-cssselect python-flask python-flask-debugtoolbar - python-flask-session + ;;python-flask-session + temporary-python-flask-session python-htmlgen python-ijson python-jinja2 @@ -293,7 +329,6 @@ python-mysqlclient python-numpy python-pandas - python-pillow python-pylint python-pymonad python-pytest @@ -305,9 +340,9 @@ python-scipy python-setuptools python-simplejson - python-sqlalchemy python-wrapper python-xlsxwriter + python-pillow-9 r r-ctl r-qtl @@ -315,8 +350,6 @@ redis rust-qtlreaper which - ; javascript-xterm -- disabled until we know what to do with it, not working on production - ; javascript-xterm-style ; javascript-xterm-addon-fit )) (inputs @@ -435,8 +468,8 @@ )))))) (define-public gn-uploader - (let ((commit "60fde66e02dba842b20fa126ff3b2ed9ec2638e6") - (version "0.0.1")) + (let ((commit "5c6ccf6f176b5da4dd7ecde1e4d43d815521de98") + (version "0.1.1")) (package (name "gn-uploader") (version (string-append version "-" (string-take commit 8))) @@ -446,10 +479,11 @@ (uri (git-reference (url "https://git.genenetwork.org/gn-uploader") (commit commit))) + (file-name (git-file-name name version)) (hash (content-hash (base32 - "1q04viyf7d0q30k3424hrzsh9wxhhgs7hywlhzl3m68jki4zq1i7"))))) + "0pd5hw6dv3p4y7sgv0jxrclh6lxvs39589nbpnhg9xazpa29j8pj"))))) (build-system python-build-system) (arguments (list @@ -475,9 +509,14 @@ python-pymonad python-jsonpickle python-mysqlclient - python-flask-session - javascript-jquery - javascript-bootstrap + ;;python-flask-session + temporary-python-flask-session + web-bootstrap-5 + javascript-jquery-1 + javascript-datatables-bootstrap5 + javascript-datatables-select + javascript-datatables-buttons-3 + javascript-datatables-scroller-2 node-resumablejs)) (synopsis "GeneNetwork Quality Control Application") (description @@ -488,7 +527,7 @@ (license license:agpl3+)))) (define-public gn-auth - (let ((commit "877a7a3d7862c3b7e3a4aeae5f4ca69b6c880807") + (let ((commit "8ff5d551633177d5ff07544348b2e04c4de5654e") (revision "01")) (package (name "gn-auth") @@ -502,7 +541,7 @@ (hash (content-hash (base32 - "17srcxk5zwnsx97jqmg1csarmjsny8z8k7q435kq19p472f27yv7"))))) + "1pjcbrvmqipbni65ffq808gxzh2ywdwi28pm3gfqwq1z1jf627sx"))))) (build-system python-build-system) (arguments (list @@ -540,7 +579,7 @@ (define-public gn-libs - (let ((commit "66bac3df1748ff263c991e121b3ce80599807998") + (let ((commit "72a95f8ffa5401649f70978e863dd3f21900a611") (revision "01")) (package (name "gn-libs") @@ -554,7 +593,7 @@ (hash (content-hash (base32 - "11qpz6x4hgi13j1wznlxyl9fxh1la4f3s9vand34zmxk1diqisbb"))))) + "1jvlz85pn10cx2icjxk0klz1g8k8vn1f8vp6kb4xyjskb1228yrx"))))) (build-system pyproject-build-system) (arguments (list @@ -566,11 +605,14 @@ (invoke "pytest" "-k" "unit_test"))))))) (native-inputs (list python-mypy + python-wheel python-pylint - python-pytest)) + python-pytest + python-setuptools)) (propagated-inputs (list python-authlib python-pymonad + python-requests python-mysqlclient)) (home-page "https://github.com/genenetwork/gn-libs") (synopsis "Tools/utilities for GeneNetwork projects.") diff --git a/gn/packages/guile.scm b/gn/packages/guile.scm index 7328397..3587b00 100644 --- a/gn/packages/guile.scm +++ b/gn/packages/guile.scm @@ -19,7 +19,7 @@ #:use-module ((gnu packages bioinformatics) #:select (gemma)) #:use-module ((gnu packages certs) #:select (nss-certs)) #:use-module ((gnu packages guile) #:select (guile-json-4 guile-3.0 guile-2.2 guile-readline)) - #:use-module ((gnu packages guile-xyz) #:select (guile-dbi guile-dbd-mysql guile-fibers guile-redis guile-hashing guile-commonmark)) + #:use-module ((gnu packages guile-xyz) #:select (guile-dbi guile-dbd-mysql guile-fibers guile-redis guile-hashing guile-commonmark guile-lmdb guile-lib)) #:use-module ((gnu packages parallel) #:select (parallel)) #:use-module ((gnu packages perl) #:select (perl)) #:use-module ((gnu packages tls) #:select (guile-gnutls openssl))) @@ -43,9 +43,9 @@ (arguments `(#:modules (((guix build guile-build-system) #:select (target-guile-effective-version)) - ,@%gnu-build-system-modules) + ,@%default-gnu-imported-modules) #:imported-modules ((guix build guile-build-system) - ,@%gnu-build-system-modules) + ,@%default-gnu-imported-modules) #:configure-flags (list (string-append "--with-guile-site-dir=" %output "/share/guile/site/" @@ -119,7 +119,7 @@ for MySQL.") (license license:gpl2+))) (define-public gn-guile - (let ((commit "99cf7800246f6af0df8407f7595641933891ad85") + (let ((commit "169d26710c978484f8e9464a95be6eaa47fa704e") (revision "0")) (package (name "gn-guile") @@ -132,13 +132,13 @@ for MySQL.") (file-name (string-append name "-" version)) (sha256 (base32 - "0sxg3cd69g2sik1x4di20b4da2qn64d82ikmfkas5w2x1nq3r6pj")))) + "10f6icsg9ifyvmg544xqb1ggzzvd4hdbbni7vhlz9xj5vyf9bih2")))) (build-system guile-build-system) (native-inputs (list guile-3.0)) - (inputs + (propagated-inputs (list guile-3.0 guile3-dbi guile3-dbd-mysql guile-fibers guile-gnutls guile-readline guile-commonmark guile-redis openssl nss-certs gemma parallel guile-hashing - guile-json-4 bash-minimal git-minimal)) + guile-json-4 bash-minimal git-minimal guile-lmdb guile-lib)) (arguments (list #:not-compiled-file-regexp "(guix|guix/.*)[.]scm$" @@ -171,6 +171,8 @@ for MySQL.") (guile-redis #$(this-package-input "guile-redis")) (guile-hashing #$(this-package-input "guile-hashing")) (guile-json-4 #$(this-package-input "guile-json")) + (guile-lmdb #$(this-package-input "guile-lmdb")) + (guile-lib #$(this-package-input "guile-lib")) (out #$output) (bin (string-append out "/bin")) (effective (read @@ -186,6 +188,8 @@ for MySQL.") (scm-dir (string-append "/share/guile/site/" effective)) (guile-inputs (list guile3-dbi guile3-dbd-mysql + guile-lmdb + guile-lib guile-fibers guile-gnutls guile-readline @@ -203,18 +207,28 @@ for MySQL.") (cons* out guile-inputs)))) (mkdir-p "bin") (copy-file "gn-guile.sh" "bin/gn-guile") + (copy-file "scripts/lmdb-publishdata-export.scm" + "bin/lmdb-publishdata-export") (substitute* "bin/gn-guile" - (("@SHELL@") bash) - (("guile") guile) - (("web/webserver.scm") webserver)) + (("@SHELL@") bash) + (("guile") guile) + (("web/webserver.scm") webserver)) (chmod "bin/gn-guile" #o755) + (chmod "bin/lmdb-publishdata-export" #o755) (install-file "bin/gn-guile" bin) + (install-file "bin/lmdb-publishdata-export" bin) (wrap-script - (string-append out "/bin/gn-guile") - `("PATH" ":" prefix ,path) - `("GUILE_AUTO_COMPILE" ":" = ("0")) - `("GUILE_LOAD_PATH" ":" prefix ,scm-path) - `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path)))))))) + (string-append out "/bin/gn-guile") + `("PATH" ":" prefix ,path) + `("GUILE_AUTO_COMPILE" ":" = ("0")) + `("GUILE_LOAD_PATH" ":" prefix ,scm-path) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path)) + (wrap-program + (string-append out "/bin/lmdb-publishdata-export") + `("PATH" ":" prefix ,path) + `("GUILE_AUTO_COMPILE" ":" = ("0")) + `("GUILE_LOAD_PATH" ":" prefix ,scm-path) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path)))))))) (home-page "https://git.genenetwork.com/gn-guile") (synopsis "Next generation GN code in guile") (description "Use of guile.") diff --git a/gn/packages/javascript.scm b/gn/packages/javascript.scm index a70dccd..e4bf803 100644 --- a/gn/packages/javascript.scm +++ b/gn/packages/javascript.scm @@ -373,6 +373,107 @@ Javascript library, adding sorting, paging and filtering abilities to plain HTML tables with minimal effort.") (license license:expat))) + +(define-public javascript-datatables-2.2.2 + (package + (name "javascript-datatables-2.2.2") + (version "2.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DataTables/Dist-DataTables.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1pzpkpybcf9p81j8afyhrmq11l9lskzxhikdv7h7sb55vx98xn9s")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (targetdir (string-append out "/share/genenetwork2/javascript/DataTables")) + (source (assoc-ref %build-inputs "source"))) + (copy-recursively source targetdir))))) + (propagated-inputs (list javascript-jquery-1)) + (home-page "https://www.datatables.net/") + (synopsis "Tables plug-in for jQuery") + (description "DataTables is a table enhancing plug-in for the jQuery +Javascript library, adding sorting, paging and filtering abilities to plain HTML +tables with minimal effort.") + (license license:expat))) + +(define-public javascript-datatables-2.2 javascript-datatables-2.2.2) + +(define-public javascript-datatables-2 javascript-datatables-2.2) + +(define-public javascript-datatables-bootstrap5 + (package + (name "javascript-datatables-bootstrap5") + (version "2.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DataTables/Dist-DataTables-Bootstrap5.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hx4m0fs0qkb73f1h3z4436dq8agrm67nib2lzac7pn8hfl09lll")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (targetdir (string-append out "/share/genenetwork2/javascript/DataTables")) + (source (assoc-ref %build-inputs "source"))) + (copy-recursively source targetdir))))) + (propagated-inputs (list javascript-jquery-1)) + (home-page "https://www.datatables.net/") + (synopsis "Tables plug-in for jQuery") + (description "DataTables is a table enhancing plug-in for the jQuery +Javascript library, adding sorting, paging and filtering abilities to plain HTML +tables with minimal effort. This package comes with Bootstrap5 integration + files for styling.") + (license license:expat))) + +(define-public javascript-datatables-select + (package + (name "javascript-datatables-select") + (version "3.0.0") ; November 12, 2024 + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DataTables/Dist-DataTables-Select.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "15czp4fhvijwc9jl961nmn8ad6ms30p3c8dgpda7l542aadca45x")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (targetdir (string-append out "/share/genenetwork2/javascript/DataTablesExtensions/select/")) + (source (assoc-ref %build-inputs "source"))) + (copy-recursively source targetdir))))) + (propagated-inputs (list javascript-datatables-2)) + (home-page "https://datatables.net/extensions/select/") + (synopsis "Select adds item selection capabilities to a DataTable.") + (description "Select adds item selection capabilities to a DataTable. Items + can be rows, columns or cells, which can be selected independently, or together. + Item selection can be particularly useful in interactive tables where users + can perform some action on the table, such as editing rows or marking items to + perform an action on.") + (license license:expat))) + (define-public javascript-datatables-scroller-style (package (name "javascript-datatables-scroller-style") @@ -402,6 +503,32 @@ tables with minimal effort.") (description "Scroller is a virtual rendering plug-in for DataTables which allows large datasets to be drawn on screen very quickly. Virtual rendering means is that only the visible portion of the table is drawn, while the scrolling container gives the visual impression that the whole table is visible, allowing excellent browser performance.") (license license:expat))) + +(define-public javascript-datatables-scroller-style-2.4.3 + (package + (inherit javascript-datatables-scroller-style) + (name "javascript-datatables-scroller-style-2.4.3") + (version "2.4.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DataTables/Dist-DataTables-Scroller-DataTables.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1b7m8xwbr05hglfy00kzv1vmqvvp9y8n1kyb3ka95gf7sllihhf9")))) + (propagated-inputs + (modify-inputs + (package-propagated-inputs javascript-datatables-scroller-style) + (delete "javascript-datatables"))))) + +(define-public javascript-datatables-scroller-style-2.4 + javascript-datatables-scroller-style-2.4.3) + +(define-public javascript-datatables-scroller-style-2 + javascript-datatables-scroller-style-2.4) + (define-public javascript-datatables-scroller (package (name "javascript-datatables-scroller") @@ -434,10 +561,37 @@ tables with minimal effort.") (license license:expat))) +(define-public javascript-datatables-scroller-2.4.3 + (package + (inherit javascript-datatables-scroller) + (name "javascript-datatables-scroller-2.4.3") + (version "2.4.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DataTables/Dist-DataTables-Scroller.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ziwnwc0xbf8rsm6ibikc3a49hyq18l8ya0wmrwyba24pixhajxn")))) + (propagated-inputs + (modify-inputs + (package-propagated-inputs javascript-datatables-scroller-style) + (delete "javascript-datatables") + (delete "javascript-datatables-scroller-style"))))) + +(define-public javascript-datatables-scroller-2.4 + javascript-datatables-scroller-2.4.3) + +(define-public javascript-datatables-scroller-2 + javascript-datatables-scroller-2.4) + + (define-public javascript-xterm (package (name "javascript-xterm") - (version "4.9.0") ; Jan 08 2021 + (version "5.3.0") ; Feb 18 2024 (source (origin (method url-fetch) @@ -445,23 +599,24 @@ tables with minimal effort.") "/lib/xterm.min.js")) (file-name (string-append "xterm.min" version ".js")) (sha256 - (base32 - "1ipk8l837pinl9151qcb39hfrjy5d7zzyf19nsfhv4wgavy8fcar")))) + (base32 "0pb5f3rjbpg7zz1zkd72vkwsma3pnj07mq46jj95yghy48dx67gw")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let* ((out (assoc-ref %outputs "out")) - (targetdir - (string-append out "/share/genenetwork2/javascript/xterm")) - (source (assoc-ref %build-inputs "source"))) - (mkdir-p targetdir) - (copy-file source (string-append targetdir "/xterm.min.js")))))) - (propagated-inputs `(("source" ,source))) + #:builder (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (targetdir (string-append + out + "/share/genenetwork2/javascript/xterm")) + (source (assoc-ref %build-inputs "source"))) + (mkdir-p targetdir) + (copy-file source + (string-append targetdir "/xterm.min.js")))))) + (native-inputs `(("source" ,source))) (home-page "https://xtermjs.org/") - (synopsis "Javascript library that allows apps to bring fully-featured terminals in browsers.") + (synopsis + "Javascript library that allows apps to bring fully-featured terminals in browsers.") (description "Xterm.js is a front-end component written in TypeScript that lets applications bring fully-featured terminals to their users in the browser. It's used by popular projects such as VS Code, Hyper and Theia.") (license license:expat))) @@ -470,7 +625,7 @@ tables with minimal effort.") (package (inherit javascript-xterm) (name "javascript-xterm-style") - (version "4.9.0") ; Jan 08 2021 + (version "5.3.0") ; Feb 18 2024 (source (origin (method url-fetch) @@ -478,19 +633,19 @@ tables with minimal effort.") "/css/xterm.min.css")) (file-name (string-append "xterm.min" version ".css")) (sha256 - (base32 - "0nc7ysmfngzy1q1x4sasgnd5x91pqc00lgkajynz2gdan1rwsfk3")))) + (base32 "0qhfll6g9vfamicw6kccmdgzrz6m7jz97whydwbzj10qsyv8npr7")))) (arguments `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let* ((out (assoc-ref %outputs "out")) - (targetdir - (string-append out "/share/genenetwork2/javascript/xterm")) - (source (assoc-ref %build-inputs "source"))) - (mkdir-p targetdir) - (copy-file source (string-append targetdir "/xterm.min.css")))))) + #:builder (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (targetdir (string-append + out + "/share/genenetwork2/javascript/xterm")) + (source (assoc-ref %build-inputs "source"))) + (mkdir-p targetdir) + (copy-file source + (string-append targetdir "/xterm.min.css")))))) (native-inputs `(("source" ,source))) (synopsis "Style sheets for xtermjs") (description "Style sheets for xtermjs") @@ -555,6 +710,30 @@ tables with minimal effort.") (description "The Buttons extension for DataTables provides a common set of options, API methods and styling to display buttons on a page that will interact with a DataTable. It also provides plug-ins for file export (HTML5 and Flash), print view and column visibility. Other libraries, such as Editor and Select also provide buttons specific to their use cases.") (license license:expat))) +(define-public javascript-datatables-buttons-3.2.2 + (package + (inherit javascript-datatables-buttons) + (name "javascript-datatables-buttons-3.2.2") + (version "3.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DataTables/Dist-DataTables-Buttons.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1186xxj6yhjqh0p13nczj25pc3c15n1f5nirl6fy649rhp4q26xc")))) + (propagated-inputs + (modify-inputs (package-propagated-inputs javascript-datatables-buttons) + (delete "javascript-datatables"))))) + +(define-public javascript-datatables-buttons-3.2 + javascript-datatables-buttons-3.2.2) + +(define-public javascript-datatables-buttons-3 + javascript-datatables-buttons-3.2) + (define-public javascript-datatables-buttons-styles (package (name "javascript-datatables-buttons-styles") @@ -867,6 +1046,25 @@ visualization components and a data-driven approach to DOM manipulation.") (dist (string-append source "/dist"))) (copy-recursively dist targetdir))))))) +(define-public javascript-jquery-1.12.4 + (package + (inherit javascript-jquery) + (name "javascript-jquery-1.12.4") + (version "1.12.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jquery/jquery.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "02qgvwsyvvr6liijj1xyypq02svbwjlk8m9yr9dgd4hzfs50rlhq")))))) + +(define-public javascript-jquery-1.12 javascript-jquery-1.12.4) + +(define-public javascript-jquery-1 javascript-jquery-1.12) + (define-public javascript-d3js-4 (package (inherit javascript-d3js) diff --git a/gn/packages/python-web.scm b/gn/packages/python-web.scm index 88478a5..e0bfacf 100644 --- a/gn/packages/python-web.scm +++ b/gn/packages/python-web.scm @@ -12,29 +12,30 @@ (define-public python-authlib (package - (name "python-authlib") - (version "1.2.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "Authlib" version)) - (sha256 - (base32 - "178ycfypdv1hy4zjm09rmysxakmwch2n6a5wypwmx4d5hc4fi8sg")))) - (build-system python-build-system) - (native-inputs (list python-httpx - python-flask - python-django - python-werkzeug - python-starlette - python-sqlalchemy - python-pycryptodomex)) - (propagated-inputs (list python-cryptography)) - (arguments `(#:tests? #f)) ;; temporarily deactivate tests - (home-page "https://authlib.org/") - (synopsis - "The ultimate Python library in building OAuth and OpenID Connect servers and clients.") - (description - "The ultimate Python library in building OAuth and OpenID Connect servers and + (name "python-authlib") + (version "1.5.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "authlib" version)) + (sha256 + (base32 "08slfa8qm4ycjpwp8qcmixl59kw2k5bpp89rmhrab1b4h27vvn4g")))) + (build-system python-build-system) + (native-inputs + (list python-httpx + python-flask + python-django + python-werkzeug + python-starlette + python-sqlalchemy + python-pycryptodomex)) + (propagated-inputs + (list python-cryptography)) + (arguments `(#:tests? #f)) ;; temporarily deactivate tests + (home-page "https://authlib.org/") + (synopsis + "The ultimate Python library in building OAuth and OpenID Connect servers and clients.") + (description + "The ultimate Python library in building OAuth and OpenID Connect servers and clients. It is designed from low level specifications implementations to high level frameworks integrations, to meet the needs of everyone.") - (license license:bsd-3))) + (license license:bsd-3))) diff --git a/gn/packages/python.scm b/gn/packages/python.scm index e7cfdd7..7cb5d77 100644 --- a/gn/packages/python.scm +++ b/gn/packages/python.scm @@ -1703,19 +1703,26 @@ window to get to RStudio for example.") (define-public python-flask-debugtoolbar (package (name "python-flask-debugtoolbar") - (version "0.11.0") + (version "0.16.0") (source (origin (method url-fetch) - (uri (pypi-uri "Flask-DebugToolbar" version)) + (uri (string-append + "https://github.com/pallets-eco/flask-debugtoolbar/archive/refs/tags/" + version + ".tar.gz")) (sha256 (base32 - "1d5asdnk8bmh6m46pzg3i7677cjgdm9mlm3wcpk19q7dak9pjkiw")))) - (build-system python-build-system) + "1qk8kga6gjlwc0c0hr1i500rhm1qfa4gqq3djy40j95fiz1idkgy")))) + (build-system pyproject-build-system) + (native-inputs + `(("python-pytest" ,python-pytest))) (propagated-inputs `(("python-blinker" ,python-blinker) ("python-flask" ,python-flask) + ("python-flit-core" ,python-flit-core) ("python-itsdangerous" ,python-itsdangerous) + ("python-flask-sqlalchemy" ,python-flask-sqlalchemy) ("python-werkzeug" ,python-werkzeug))) (home-page "https://flask-debugtoolbar.readthedocs.io/") @@ -1955,3 +1962,60 @@ and messages in larger desktop or server-based applications.") implementation of the built-in float which supports formatted output with SI (decimal) and IEC (binary) prefixes.") (license license:mpl2.0))) + + +(define-public python-pillow-9 + (package + (name "python-pillow-9") + (version "9.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Pillow" version)) + (sha256 + (base32 "011wgm1mssjchpva9wsi2a07im9czyjvik137xlp5f0g7vykdrkm")) + (modules '((guix build utils))) + (snippet '(begin + (delete-file-recursively "src/thirdparty"))) + (patches (search-patches "python-pillow-CVE-2022-45199.patch" + ;; Included in 10.1.0. + "python-pillow-use-zlib-1.3.patch")))) + (build-system python-build-system) + (native-inputs (list python-pytest)) + (inputs (list freetype + lcms + libjpeg-turbo + libtiff + libwebp + openjpeg + zlib)) + (propagated-inputs (list python-olefile)) + (arguments + `(#:tests? #f + #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-ldconfig + (lambda _ + (substitute* "setup.py" + (("\\['/sbin/ldconfig', '-p'\\]") + "['true']")))) + (replace 'check + (lambda* (#:key outputs inputs tests? #:allow-other-keys) + (when tests? + (setenv "HOME" + (getcwd)) + (add-installed-pythonpath inputs outputs) + (invoke "python" "selftest.py" "--installed") + (invoke "python" "-m" "pytest" "-vv"))))))) + (home-page "https://python-pillow.org") + (synopsis "Fork of the Python Imaging Library") + (description + "The Python Imaging Library adds image processing capabilities to your +Python interpreter. This library provides extensive file format support, an +efficient internal representation, and fairly powerful image processing +capabilities. The core image library is designed for fast access to data +stored in a few basic pixel formats. It should provide a solid foundation for +a general image processing tool.") + (properties `((cpe-name . "pillow"))) + (license (license:x11-style + "http://www.pythonware.com/products/pil/license.htm" + "The PIL Software License")))) diff --git a/gn/packages/web.scm b/gn/packages/web.scm index 9290a64..734cbe1 100644 --- a/gn/packages/web.scm +++ b/gn/packages/web.scm @@ -76,6 +76,26 @@ entire app with our Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful plugins built on jQuery.") (license license:expat))) +(define-public web-bootstrap-5.3.3 + (package + (inherit web-bootstrap) + (name "web-bootstrap-5.3.3") + (version "5.3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/twbs/bootstrap.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zzfmvfps13329wyqlf453rvzfxq9zl4jva83jw695bacfdmax9c")))) + (native-inputs (list source)))) + +(define-public web-bootstrap-5.3 web-bootstrap-5.3.3) + +(define-public web-bootstrap-5 web-bootstrap-5.3) + (define-public web-bootstrap-3 (package (inherit web-bootstrap) diff --git a/gn/services/databases.scm b/gn/services/databases.scm index 91ac166..4cbbb5e 100644 --- a/gn/services/databases.scm +++ b/gn/services/databases.scm @@ -34,7 +34,7 @@ (server-port virtuoso-configuration-server-port (default 1111)) (dirs-allowed virtuoso-dirs-allowed - (default "/var/genenetwork/virtuoso-data")) + (default (list "/var/genenetwork/virtuoso-data"))) (number-of-buffers virtuoso-configuration-number-of-buffers (default #f)) (maximum-dirty-buffers virtuoso-configuration-maximum-dirty-buffers @@ -100,9 +100,9 @@ (format port "ServerPort = ~a:~a~%" #$(virtuoso-configuration-server-ip config) #$(virtuoso-configuration-server-port config))) - (when #$(virtuoso-dirs-allowed config) + (when #$(>= (length (virtuoso-dirs-allowed config)) 1) (format port "DirsAllowed = ~a~%" - #$(virtuoso-dirs-allowed config))) + #$(string-join (virtuoso-dirs-allowed config) ","))) (when #$(virtuoso-configuration-number-of-buffers config) (format port "NumberOfBuffers = ~a~%" #$(virtuoso-configuration-number-of-buffers config))) |