diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | doc/code/pangemma.md | 8 | ||||
-rw-r--r-- | guix.scm | 4 |
3 files changed, 12 insertions, 2 deletions
@@ -2,7 +2,7 @@ This repository is used to rewrite and modernize the original GEMMA tool. The idea it to upgrade the software, but keeping it going using ideas from Hanson and Sussman's book on *Software Design for Flexibility: How to Avoid Programming Yourself into a Corner*. It is work in progress (WIP). For more information see [PanGEMMA design](./doc/code/pangemma.md) -GEMMA is the original software toolkit for fast application of linear mixed models (LMMs) and related models to genome-wide association studies (GWAS) and other large-scale data sets. You can find the original code on [github](https://github.com/genetics-statistics/GEMMA). +GEMMA is the original software toolkit for fast application of linear mixed models (LMMs) and related models to genome-wide association studies (GWAS) and other large-scale data sets. You can find the original code on [github](https://github.com/genetics-statistics/GEMMA). It may even build from this repo for the time being. Check out [RELEASE-NOTES.md](./RELEASE-NOTES.md) to see what's new in each release. diff --git a/doc/code/pangemma.md b/doc/code/pangemma.md index eef522e..b588b7e 100644 --- a/doc/code/pangemma.md +++ b/doc/code/pangemma.md @@ -204,3 +204,11 @@ ZeroMQ provides a minimalistic message passing interface in most languages. It w ## Sharing data in RAM There are several methods for sharing data between threads and processes. First we can first use Linux copy on write for instantiated processes. The Linux kernel als has shared memory support and, more interesting, memory mapping support --- which is also used in lmdb. Lmdb is multi-platform and works on non-POSIX systems. It is very fast, but may need tweaking, for example by disabling read-ahead with MDB_NORDAHEAD. We'll get to that. +## Build system + +The build system for development relies on Guix. See the header of [guix.scm](../guix.scm). +Guix handles depencies well, so it is a great base to work from. + +For the actual build system we'll probably roll our own. +All build tools I know are too messy, including CMake, meson and make itself. So, as a real hacker, we +reinvent the wheel. A starting point is Arun's [g-exp blog](https://systemreboot.net/post/g-expressions-makings-of-a-make-killer). @@ -27,6 +27,7 @@ #:use-module (gnu packages maths) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages ruby) #:use-module (srfi srfi-1) #:use-module (ice-9 popen) #:use-module (ice-9 rdelim)) @@ -50,9 +51,10 @@ (list gsl openblas guile-3.0 - `(,guile-3.0-latest "debug") + `(,guile-3.0 "debug") guile-lmdb lmdb + ruby zlib)) ;; ("gsl-static" ,gsl-static) ;; ("zlib:static" ,zlib "static") |