all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Pjotr Prins <pjotr.public12@thebird.nl>
To: Chris Marusich <cmmarusich@gmail.com>
Cc: guix-devel@gnu.org, Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
Subject: [Orchestration][RFC] A simple draft for channels
Date: Mon, 19 Mar 2018 13:04:00 +0100	[thread overview]
Message-ID: <20180319120400.GA13807@thebird.nl> (raw)
In-Reply-To: <87shar5wp8.fsf@gmail.com>

Let's start up again on this conversation in the context of
deployment. I have a simple use case. For GeneNetwork we maintain
GUIX_PACKAGE_PATH packages. It contains packages that ought to go in
main line (such as python-gunicorn), but also packages that will never
make it (such as a javascript twitter feed).

Now we deploy multiple setups, which I'll simplify to development,
testing and production here (there are more!). Each of these has a
combination of a Guix git checkout and a GUIX_PACKAGE_PATH checkout.

These git repo's are supposedly in sync with each other.

Moving from one to the other, however, is too complicated and error
prone. I can do it, but no one else really wants to. Even with my
explanations it proves to be a royal pain.

Especially with multiple people developing. The other thing is that it
takes too long to rebuild the Guix repo. Even on 20+ cores we have to
wait a significant amount of time. And things go wrong... 

Otherwise, only good stuff. I can provide binary packages, that is
great. It is just this git juggling and Guix repo building that is
killing me.

Maybe the short term solution for us is to no longer use
GUIX_PACKAGE_PATH, but to merge the differences in branches of the GNU
Guix tree. That takes care of the syncing problem (though it will
still be a headache). Maybe channels ought to be Guix git trees
anyway, so that is one step in the right direction.

Now I need a way to no longer rebuild all .go files for Guix tree
updates/changes. Not only between switching branches, but also when
just running 'git pull' from Guix savannah. I find I have to do that
very often. So often that I don't even try running make anymore
without make clean. Anyone here share that experience?

One thing I could do is split out 3 git repos for every use case and
update these individually not triggering rebuilds. And when I deploy
on other machines move the complete repo across with .go files.

Maybe also stick it into a container so I can deploy all dependencies
with it and update any substitute keys in user land.

HEY. Did I just invent a channel? 

If we allow channels to be architecture specific we could ship
dependencies and .go files with the git tree. No rebuilds.

If we allow using containers we can update substitute keys for
channels (like mine on http://guix.genenetwork.org).

The key updates are minor though. Main thing is to speed up deployment
and make it less error prone.

Maybe we should start thinking that a channel is simply an
architecture dependent Guix 'pack' of substitutes that includes the
pre-built Guix git repo. When deployed in a container we can inject
the keys. When this works we can design a pack repository, making the
channels searchable.

Pj.

  reply	other threads:[~2018-03-19 12:08 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-19  8:24 [RFC] A simple draft for channels Ricardo Wurmus
2018-01-19  8:55 ` Jelle Licht
2018-01-19 11:30 ` Pjotr Prins
2018-01-19 13:41 ` Ludovic Courtès
2018-01-19 13:56   ` Pjotr Prins
2018-01-23  6:38     ` Ricardo Wurmus
2018-01-23  8:54       ` Pjotr Prins
2018-01-23 23:01         ` Carlo Zancanaro
2018-01-23 16:03   ` myglc2
2018-01-23 16:50     ` ng0
2018-01-24  5:44       ` myglc2
2018-01-24 12:33         ` ng0
2018-01-24 15:04           ` Konrad Hinsen
2018-01-23 20:39     ` Ricardo Wurmus
2018-01-23 20:37   ` Ricardo Wurmus
2018-01-24 12:01     ` Pjotr Prins
2018-01-20  5:45 ` 宋文武
2018-01-24 14:08   ` Ludovic Courtès
2018-01-24 17:55     ` myglc2
2018-01-24 18:20       ` Ricardo Wurmus
2018-01-26 17:23         ` myglc2
2018-01-26 18:53           ` Oleg Pykhalov
2018-03-19 12:46         ` ng0
2018-01-27 12:10 ` Chris Marusich
2018-03-19 12:04   ` Pjotr Prins [this message]
2018-03-19 12:36     ` [Orchestration][RFC] " ng0
2018-03-19 18:21     ` myglc2
2018-03-19 18:31       ` Pjotr Prins
2018-03-19 20:18         ` myglc2
2018-03-19 20:29           ` Pjotr Prins
2018-03-20  7:02     ` Pjotr Prins
2018-03-20 10:41       ` Ricardo Wurmus
2018-03-20 13:10         ` Pjotr Prins
2018-03-20 13:41           ` Ricardo Wurmus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180319120400.GA13807@thebird.nl \
    --to=pjotr.public12@thebird.nl \
    --cc=cmmarusich@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=ricardo.wurmus@mdc-berlin.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.