unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Josselin Poiret via Bug reports for GNU Guix <bug-guix@gnu.org>
To: "Ludovic Courtès" <ludo@gnu.org>, "Mathieu Othacehe" <othacehe@gnu.org>
Cc: Josselin Poiret <dev@jpoiret.xyz>, 53210@debbugs.gnu.org
Subject: bug#53210: [WIP PATCH 0/4] Make current-guix work when run outside a Git checkout
Date: Mon, 14 Feb 2022 10:29:04 +0100	[thread overview]
Message-ID: <20220214092908.16801-1-dev@jpoiret.xyz> (raw)
In-Reply-To: <87lezkrgvj.fsf@gnu.org>

Hello everyone,

I've been working on this for a bit, trying to find the best approach.

First, let me try to summarize the different ways in which Guix can be
run, and how it is built:

* From a `guix pull` profile.  This is the most common.  The `guix
  pull` profile's manifest file holds specific metadata describing the
  channels that were used to build the generation, which can be
  fetched by `(current-channels)` from (guix describe).

* From a built Guix inside the store, outside a `guix pull` profile.
  This is what happens when the user hasn't `guix pull`ed yet after a
  Guix System installation, for example.  Here, the only available
  metadata is the one embedded in (guix config) by the build process,
  and (current-channels) returns that one.

* From a Git checkout.  Here, there is no build metadata at all.

Furthermore, there are two ways to build Guix: either through the
`guix` package definition, which uses the Makefile, or through
`build-aux/build-self.scm` which uses `guix/self.scm`.

Here, I use the second method, since it's how the current guix is most
likely built.  This means that, with proper care, all the derivations
already have their output in the store.

This is only a WIP as there are some unresolved things: I've disabled
authentication, since I'm currently testing my own unsigned patches.
Should we indiscriminately enable it?  This would cause some issues
for people that have their own 'guix channel.  Maybe we could enable
authentication if the channel URL is the default one?  Also, when I
tried to replace the guix in the installer by (current-guix), it ended
up building the Guix derivation multiple times, even though the
package is memoized and the package->derivation process should be
cached.

There's a bit of rift between what the ci uses (renamed here to
channel-profile-build-system) and what current-guix uses, since the
former builds a profile as a package, whereas the latter simply builds
the derivation for the 'guix channel.  This avoids creating profile
collisions when the package is added to the system profile, but it
also means we don't get the package cache generation.

Best,

Josselin Poiret (4):
  gnu: ci: Move generic channel building code.
  gnu: Rename channel-build-system and channel-source->package.
  gnu: current-guix: Support when running outside a checkout.
  gnu: package-management: Memoize current-guix.

 etc/system-tests.scm                |  3 +-
 gnu/ci.scm                          | 40 +------------------
 gnu/packages/package-management.scm | 60 +++++++++++++++++++++++------
 guix/channels.scm                   | 51 ++++++++++++++++++++++++
 4 files changed, 102 insertions(+), 52 deletions(-)

-- 
2.34.0





  reply	other threads:[~2022-02-14  9:30 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-12 16:23 bug#53210: installer: referring to N-1 guix is problematic Mathieu Othacehe
2022-01-12 17:41 ` Ludovic Courtès
2022-02-14  9:29   ` Josselin Poiret via Bug reports for GNU Guix [this message]
2022-02-14  9:29     ` bug#53210: [WIP PATCH 1/4] gnu: ci: Move generic channel building code Josselin Poiret via Bug reports for GNU Guix
2022-02-14 17:12       ` Ludovic Courtès
2022-02-14  9:29     ` bug#53210: [WIP PATCH 2/4] gnu: Rename channel-build-system and channel-source->package Josselin Poiret via Bug reports for GNU Guix
2022-07-18 19:35       ` bug#53210: installer: referring to N-1 guix is problematic Ludovic Courtès
2022-02-14  9:29     ` bug#53210: [WIP PATCH 3/4] gnu: current-guix: Support when running outside a checkout Josselin Poiret via Bug reports for GNU Guix
2022-02-14 17:15       ` Ludovic Courtès
2022-02-14  9:29     ` bug#53210: [WIP PATCH 4/4] gnu: package-management: Memoize current-guix Josselin Poiret via Bug reports for GNU Guix
2022-02-14 17:10     ` bug#53210: [WIP PATCH 0/4] Make current-guix work when run outside a Git checkout Ludovic Courtès
2022-08-09 13:26     ` bug#53210: installer: referring to N-1 guix is problematic Ludovic Courtès
2022-08-09 19:17       ` Josselin Poiret via Bug reports for GNU Guix
2022-08-10 10:13       ` Mathieu Othacehe
2022-08-11 14:03         ` Ludovic Courtès

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

  List information: https://guix.gnu.org/

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

  git send-email \
    --in-reply-to=20220214092908.16801-1-dev@jpoiret.xyz \
    --to=bug-guix@gnu.org \
    --cc=53210@debbugs.gnu.org \
    --cc=dev@jpoiret.xyz \
    --cc=ludo@gnu.org \
    --cc=othacehe@gnu.org \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).