diff options
-rw-r--r-- | gn/packages/bnw.scm | 12 | ||||
-rw-r--r-- | gn/services/bnw-README | 14 | ||||
-rw-r--r-- | gn/services/bnw-container.scm | 88 |
3 files changed, 84 insertions, 30 deletions
diff --git a/gn/packages/bnw.scm b/gn/packages/bnw.scm index f7e95e3..5b7131b 100644 --- a/gn/packages/bnw.scm +++ b/gn/packages/bnw.scm @@ -44,6 +44,9 @@ (substitute* (find-files "." "\\.php") (("HTTP_POST_VARS") "_POST") (("HTTP_POST_FILES") "_FILES")) + ;; change $dir to a writable directory + ;(substitute* (find-files "sourcecodes" "\\.php$") + ; (("\\$dir=\"./data") "$dir=\"./data/tmp")) #t)) (add-after 'patch-source-shebangs 'patch-more-shebangs (lambda* (#:key inputs #:allow-other-keys) @@ -84,6 +87,11 @@ (substitute* '("sourcecodes/build.sh" "downloads/BNW/src/build.sh") (("./localscore/libRmath.so") (string-append rmath "/lib/libRmath.so"))) + (substitute* "sourcecodes/run.sh" + (("rm ") (string-append (which "rm") " ")) + (("rmdir ") (string-append (which "rmdir") " ")) + (("mkdir ") (string-append (which "mkdir") " ")) + (("dirname ") (string-append (which "dirname")" "))) ;(substitute* "sourcecodes/layout_cyto.php" ; (("https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.7.1/cytoscape.min.js") ; (string-append cyto js-path "cytoscape/cytoscape.min.js")) @@ -127,8 +135,8 @@ (lambda (file) (chmod file #o555)) (append (find-files out "\\.(sh|py)$") - (find-files (string-append out "/sourcecodes/run_scripts" ".*")) - )) + (find-files (string-append out "/sourcecodes/run_scripts/" ".")))) + (chmod (string-append out "/sourcecodes/data") #o777) ; needs to be writable #t))) (replace 'build (lambda _ diff --git a/gn/services/bnw-README b/gn/services/bnw-README index 29cc816..ab7de53 100644 --- a/gn/services/bnw-README +++ b/gn/services/bnw-README @@ -1,10 +1,9 @@ SETUP: The setup process works like this: -$ guix build bnw -$ mkdir -p /home/bnw/server/bnw -$ cp -a $(guix build bnw)/* /home/bnw/server/bnw/ -$ chmod a+w /home/bnw/server -R +$ guix pull +$ cd guix-bioinformatics && git pull +# systemctl enable --now bnw.service for testing changes to the container, you'll want to do the following (or thereabouts): $ guix system container gn/services/GN1-container.scm --share=/home/bnw/server=/srv/http --network @@ -15,8 +14,5 @@ see included bnw.service for upgrades: $ guix pull -$ rm -rf /home/bnw/server -$ guix build bnw -$ mkdir -p /home/bnw/server/bnw -$ cp -a $(guix build bnw)/* /home/bnw/server/bnw/ -$ chmod a+w /home/bnw/server -R +$ cd guix-bioinformatics && git pull +# systemctl restart bnw.service diff --git a/gn/services/bnw-container.scm b/gn/services/bnw-container.scm index 13a9317..2e5e521 100644 --- a/gn/services/bnw-container.scm +++ b/gn/services/bnw-container.scm @@ -1,8 +1,69 @@ (define-module (gn services bnw-container)) (use-modules (gnu) - (gn packages bnw)) -(use-service-modules base networking web) + (gn packages bnw) + (guix records) + (ice-9 match)) +(use-service-modules networking web) + +(define-record-type* <bnw-configuration> + bnw-configuration + make-bnw-configuration + bnw-configuration? + (package bnw-configuration-package ; package + (default bnw)) + (deploy-directory bnw-deploy-directory ; string + (default "/home/bnw/server")) + (port bnw-configuration-port ; list of strings + (default '("8880")))) + +(define bnw-activation + (match-lambda + (($ <bnw-configuration> package deploy-directory port) + #~(begin + (use-modules (guix build utils)) + (when (directory-exists? #$deploy-directory) + (delete-file-recusively #$deploy-directory)) + (mkdir-p #$deploy-directory) + (copy-recursively #$package #$deploy-directory) + (system* #$(file-append coreutils "/bin/chmod") "a+w" + (string-append #$deploy-directory "/sourcecodes/data")))))) + +(define bnw-nginx-config + (match-lambda + (($ <bnw-configuration> package deploy-directory port) + (list + (nginx-server-configuration + (server-name '("Bayesian Network")) + (listen port) + ;(root package) + (root "/srv/http") + (locations + (list + (nginx-php-location) + ;(nginx-location-configuration + ; (uri "/sourcecodes/data/") + ; (body (list "alias /tmp/bnw/;"))) + ))))))) + +(define bnw-service-type + (service-type + (name 'bnw) + (extensions + (list + (service-extension activation-service-type + bnw-activation) + (service-extension nginx-service-type + bnw-nginx-config) + ;; Make sure BNW doesn't get garbage collected. + (service-extension profile-service-type + (compose list bnw-configuration-package)) + ;; Make sure php-fpm is instantiated. + (service-extension php-fpm-service-type + (const #t)))) + (default-value (bnw-configuration)) + (description + "Run a Bayesian Network Webserver."))) (operating-system (host-name "bnw") @@ -17,20 +78,9 @@ (firmware '()) (services (list (service dhcp-client-service-type) - (service php-fpm-service-type) - (service nginx-service-type - (nginx-configuration - (server-blocks - (list - (nginx-server-configuration - (server-name '("Bayesian Network")) - (listen '("8888")) - (root bnw) - (locations - (list - (nginx-php-location) - (nginx-location-configuration - (uri "/sourcecodes/data/") - (body (list "alias /tmp/bnw/;"))) - )) - )))))))) + (service bnw-service-type + ;; The following is for testing: + ;(bnw-configuration + ; (deploy-directory "/home/efraimf/bnw") + ; (port '("8888"))) + )))) |