diff options
| author | Pjotr Prins | 2025-12-21 11:53:02 +0100 |
|---|---|---|
| committer | Pjotr Prins | 2025-12-21 11:53:02 +0100 |
| commit | 082a8afee37e8875fd15e60a2579bded0d3de8eb (patch) | |
| tree | 48ded300a7ec91ae780abcf7cf87a6754a00deab | |
| parent | bd9b2f6339f79b9eb60dd405dff9edc331578ed3 (diff) | |
| download | gn-ai-082a8afee37e8875fd15e60a2579bded0d3de8eb.tar.gz | |
One guix deployment
| -rw-r--r-- | topics/guix/genenetwork-fixating-guix.gmi | 34 | ||||
| -rw-r--r-- | topics/guix/packages.gmi | 6 |
2 files changed, 39 insertions, 1 deletions
diff --git a/topics/guix/genenetwork-fixating-guix.gmi b/topics/guix/genenetwork-fixating-guix.gmi new file mode 100644 index 00000000..844b0fd6 --- /dev/null +++ b/topics/guix/genenetwork-fixating-guix.gmi @@ -0,0 +1,34 @@ +# Fixating Guix for GN + +The GeneNetwork services depend on a rather complicated Guix deployment. The problem is not guix, but GN itself :) +But we were getting bitten by updates on upstream, as well as updates on our different targets/services. + +# Using channels that affect GN production + +To avoid duplication of work and unknown rabbit holes we decided to fixate guix trunk and other dependencies by using Guix channels. This means all GN development happens on a single version of Guix! That version is defined here: + +=> https://git.genenetwork.org/gn-machines/tree/.guix-channel + +Note that guix-forge and guix-bioinformatics are *also* fixated. The idea is that we only upgrade GN packages in gn-machines itself by inheriting definitions. E.g. + +=> https://git.genenetwork.org/gn-machines/tree/guix/gn-machines/genenetwork.scm + +We will probably get rid of the guix-past and guix-rust-past-crates sub-channels soon by removing those packages that depend on those (genenetwork1 will get its own tree, and @alexm will upgrade the rust packages). + +If someone wants to update guix channel or guix-bioinformatics channel they should not update this file. The one in charge is @fredm. Fred has to be in control because we don't want to break production. It is forbidden to touch this channel file. + +People can patch the packages and gn-machines, but if it involves CI/CD and/or production in any way, Fred will have to know about it. + +# Service level channels + +For individual services, such as genenetwork2, genenetwork3, gn-auth, etc., we have local channel files. These should mirror above gn-machines channel file to make sure we can migrate your code easily. E.g. + +=> https://github.com/genenetwork/genenetwork3/blob/main/.guix-channel + +Should match + +=> https://git.genenetwork.org/gn-machines/tree/.guix-channel + +If that is not the case we have a major problem! So before sending patches to Fred make sure the channels match. + +To be honest, I think we should fetch these channels automagically from gn-machines as a first step. diff --git a/topics/guix/packages.gmi b/topics/guix/packages.gmi index fc7f808f..b4a393cc 100644 --- a/topics/guix/packages.gmi +++ b/topics/guix/packages.gmi @@ -2,6 +2,10 @@ To deploy GN we have packages in Guix itself (that comes with a distribution), in guix-bioinformatics and in guix-past (for older packages). +When you develop a new package it is best to run against a recent version of guix. Note that with GeneNetwork this is different as we 'fixate' guix at an older version. See + +=> genenetwork-fixating-guix + Typically run a guix pull to get the latest guix: ``` @@ -28,7 +32,7 @@ genenetwork2 3.11-2.1328932 out /home/wrk/guix-bioinformatics/gn genenetwork3 0.1.0-2.e781996 out /home/wrk/guix-bioinformatics/gn/packages/genenetwork.scm:107:4 ``` -and we can try building +note that using the -L switch is a bit of a hack. Normally we use channels. We can try building ``` ~/opt/guix-pull/bin/guix build -L ~/guix-bioinformatics/ -L ~/guix-past/modules/ genenetwork2 |
