all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Simon Josefsson via Guix-patches via <guix-patches@gnu.org>
To: 60358@debbugs.gnu.org
Cc: vivien@planete-kraus.eu
Subject: [bug#60358] [PATCH] gnu: Add gnulib.
Date: Thu, 29 Dec 2022 15:44:12 +0100	[thread overview]
Message-ID: <874jtei81v.fsf@josefsson.org> (raw)
In-Reply-To: <ecc975fdc2c44c1248652db67d68c5a32cf47a9e.camel@planete-kraus.eu> (Vivien Kraus via Guix-patches via's message of "Wed, 28 Dec 2022 02:57:40 +0100")

[-- Attachment #1: Type: text/plain, Size: 3915 bytes --]

Vivien Kraus via Guix-patches via <guix-patches@gnu.org> writes:

> Hello!
>
> Le mardi 27 décembre 2022 à 19:44 +0100, Simon Josefsson a écrit :
>> Hi.  Many packages needs a specific checkout of gnulib to work
>> reliably,
>> via --gnulib-refdir= (rather than --gnulib-srcdir=), would you
>> consider
>> installing the entire gnulib git archive instead of just the latest
>> checkout?  
>
> I did not know about gnulib-refdir.

It is newer than --gnulib-srcdir, but came about because --gnulib-srcdir
is often a fragile solution: you have no idea which gnulib version the
person building the package supplied.  Since gnulib is rolling,
compatibility becomes difficult.  The --gnulib-srcdir approach works if
you make sure to use the same gnulib git checkout as the project you
wish to build uses.  But then it becomes difficult to package gnulib: no
two projects are likely to rely on the same gnulib git commit.  So which
gnulib git version to package?

That's the motivation for packaging the gnulib git repository instead.
This may sound strange, but compare how gettext/autopoint ships a CVS
repository and checks out the particular files that are needed.

Yeah, I can agree that this approach is not ideal, and there are many
concerns with it.  I'm not convinced gnulib's idea of "source-level
library" is something that is viable long-term.  But it is what exists
today.

> Providing the entire gnulib archive is tempting, but there might be
> downsides. The contents of the .git directory depends on how trees and
> objects have been packed by git. As far as I understand, it is
> possible that pushing a commit in gnulib results in commit objects
> from previous commits to be re-packed. Thus, if I clone gnulib from
> the initial commit to a specific commit, the result might depend on
> other, unrelated commits. So, the content of .git is not reproducible.
>
> Maybe I could get around that by deleting all the refs, doing an
> aggressive garbage collection and then re-packing, but I’m not sure I
> would get a reproducible result.

Interesting -- I think researching this more would be useful.  It should
be possible to come up with a safe approach to produce a reproducible
checkout of a git repository.

Doesn't 'git archive' produce a reproducible output from a git
repository for a particular branch and commit?

> Now, I don’t know much about gnulib-refdir. How does gnulib-refdir
> work?

You supply --gnulib-refdir pointing to a local gnulib git repository
clone when you run ./bootstrap.  This avoid checking out the gnulib git
submodule from Savannah, and instead ./bootstrap will use the local git
repository instead.  I believe it should automatically extract the
intended gnulib git commit from the gnulib/ git submodule, and extract
that version from the local copy (please test -- may be bugs).

> Do you have an example of a package that uses this feature?

Packages wouldn't use it, but if they use gnulib's ./bootstrap script
the support this approach.  The idea is that people building projects
that use gnulib doesn't always have to fetch the gnulib git submodule,
but have a local copy for security or performance reasons.

> Can I convince the package to use a checkout instead of the gnulib
> repository, if I swear I have the exact checkout it wants, maybe by
> tweaking bootstrap.conf or something?

You can force a package to use another gnulib version by using
--gnulib-srcdir and point that to some other version of gnulib.  But the
project may not build.  The point of --gnulib-refdir is to actually get
the same version of gnulib that the project uses, why would you not want
that?  There is the GNULIB_REVISION environment variable that you can
set to something else, but this is probably not very well tested and
sounds like a bad idea (but I may be missing something).

/Simon

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]

  reply	other threads:[~2022-12-29 14:45 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-27 16:23 [bug#60358] [PATCH] gnu: Add gnulib Vivien Kraus via Guix-patches via
2022-12-27 16:23 ` [bug#60358] [PATCH v4 1/3] " Vivien Kraus via Guix-patches via
2022-12-27 16:23 ` [bug#60358] [PATCH v9 3/4] " Vivien Kraus via Guix-patches via
2023-01-01 16:25   ` Liliana Marie Prikler
2023-01-01 16:55     ` Vivien Kraus via Guix-patches via
2023-01-01 17:31       ` Liliana Marie Prikler
2022-12-27 16:23 ` [bug#60358] [PATCH v11 " Vivien Kraus via Guix-patches via
2023-01-01 20:48   ` Vivien Kraus via Guix-patches via
2022-12-27 16:23 ` [bug#60358] [PATCH v5 1/5] " Vivien Kraus via Guix-patches via
2022-12-31  6:53   ` Liliana Marie Prikler
2022-12-27 16:23 ` [bug#60358] [PATCH v10 3/4] " Vivien Kraus via Guix-patches via
2022-12-27 16:23 ` [bug#60358] [PATCH v7 4/5] " Vivien Kraus via Guix-patches via
2022-12-31 19:26   ` Liliana Marie Prikler
2022-12-27 16:23 ` [bug#60358] [PATCH v8 3/4] " Vivien Kraus via Guix-patches via
2022-12-27 16:23 ` [bug#60358] [PATCH v6 2/3] " Vivien Kraus via Guix-patches via
2022-12-27 17:33 ` [bug#60358] Providing gnulib Vivien Kraus via Guix-patches via
2022-12-27 18:44 ` [bug#60358] [PATCH] gnu: Add gnulib Simon Josefsson via Guix-patches via
2022-12-28  1:57   ` Vivien Kraus via Guix-patches via
2022-12-29 14:44     ` Simon Josefsson via Guix-patches via [this message]
2022-12-29 15:56       ` Simon Josefsson via Guix-patches via
2022-12-27 20:45 ` Liliana Marie Prikler
2022-12-27 16:23   ` [bug#60358] [PATCH v2 1/2] " Vivien Kraus via Guix-patches via
2022-12-28  2:20   ` [bug#60358] [PATCH v2 2/2] gnu: guile-gnutls: Update to 3.7.11 Vivien Kraus via Guix-patches via
2022-12-28  2:50     ` Vivien Kraus via Guix-patches via
2022-12-29 14:55       ` Simon Josefsson via Guix-patches via
2022-12-27 16:23         ` [bug#60358] [PATCH v3 1/2] gnu: Add gnulib Vivien Kraus via Guix-patches via
2022-12-29 20:02           ` Liliana Marie Prikler
2022-12-30 11:45             ` Vivien Kraus via Guix-patches via
2022-12-30 19:35               ` Liliana Marie Prikler
2022-12-28  2:20         ` [bug#60358] [PATCH v3 2/2] gnu: guile-gnutls: Update to 3.7.11 Vivien Kraus via Guix-patches via
2022-12-29 15:25           ` Vivien Kraus via Guix-patches via
2022-12-29 15:37             ` Simon Josefsson via Guix-patches via
2022-12-29 16:06               ` Vivien Kraus via Guix-patches via
2022-12-29 16:14                 ` Simon Josefsson via Guix-patches via
2022-12-28  2:20 ` [bug#60358] [PATCH v6 3/3] " Vivien Kraus via Guix-patches via
2022-12-28  2:20 ` [bug#60358] [PATCH v5 5/5] " Vivien Kraus via Guix-patches via
2022-12-31  6:53   ` Liliana Marie Prikler
2022-12-28  2:20 ` [bug#60358] [PATCH v4 3/3] " Vivien Kraus via Guix-patches via
2022-12-28  2:20 ` [bug#60358] [PATCH v10 4/4] " Vivien Kraus via Guix-patches via
2023-01-15  7:07   ` bug#60358: " Liliana Marie Prikler
2022-12-28  2:20 ` [bug#60358] [PATCH v9 " Vivien Kraus via Guix-patches via
2022-12-28  2:20 ` [bug#60358] [PATCH v8 " Vivien Kraus via Guix-patches via
2022-12-28  2:20 ` [bug#60358] [PATCH v11 " Vivien Kraus via Guix-patches via
2022-12-28  2:20 ` [bug#60358] [PATCH v7 5/5] " Vivien Kraus via Guix-patches via
2022-12-30 11:30 ` [bug#60358] [PATCH v4 2/3] gnu: gnulib: Enable tests Vivien Kraus via Guix-patches via
2022-12-30 11:30 ` [bug#60358] [PATCH v5 2/5] " Vivien Kraus via Guix-patches via
2022-12-30 21:20 ` [bug#60358] [PATCH v5 3/5] gnu: UCD: Add version 3.0-update1 Vivien Kraus via Guix-patches via
2022-12-31  6:49   ` Liliana Marie Prikler
2022-12-31 10:56     ` Vivien Kraus via Guix-patches via
2022-12-31 14:07       ` Liliana Marie Prikler
2022-12-30 21:20 ` [bug#60358] [PATCH v7 " Vivien Kraus via Guix-patches via
2022-12-31 19:17   ` Liliana Marie Prikler
2023-01-01  0:24     ` Vivien Kraus via Guix-patches via
2023-01-01  1:28       ` Liliana Marie Prikler
2022-12-30 21:20 ` [bug#60358] [PATCH v6 1/3] " Vivien Kraus via Guix-patches via
2022-12-30 22:05 ` [bug#60358] [PATCH v5 4/5] gnu: gnulib: Regenerate the unicode data Vivien Kraus via Guix-patches via
2022-12-31 17:33 ` [bug#60358] [PATCH v7 1/5] gnu: libunibreak: Use ucd instead of ucd-next Vivien Kraus via Guix-patches via
2022-12-31 17:33 ` [bug#60358] [PATCH v11 1/4] " Vivien Kraus via Guix-patches via
2022-12-31 17:33 ` [bug#60358] [PATCH v9 " Vivien Kraus via Guix-patches via
2022-12-31 17:33 ` [bug#60358] [PATCH v10 " Vivien Kraus via Guix-patches via
2022-12-31 17:33 ` [bug#60358] [PATCH v8 " Vivien Kraus via Guix-patches via
2022-12-31 17:34 ` [bug#60358] [PATCH v7 2/5] gnu: ucd-next: Update to 15.0.0 Vivien Kraus via Guix-patches via
2022-12-31 17:34 ` [bug#60358] [PATCH v10 2/4] " Vivien Kraus via Guix-patches via
2022-12-31 17:34 ` [bug#60358] [PATCH v11 " Vivien Kraus via Guix-patches via
2022-12-31 17:34 ` [bug#60358] [PATCH v8 " Vivien Kraus via Guix-patches via
2022-12-31 17:34 ` [bug#60358] [PATCH v9 " Vivien Kraus via Guix-patches via
2023-01-01 21:45 ` [bug#60358] [PATCH v11 0/4] Use a cover letter Vivien Kraus via Guix-patches via
2022-12-31 17:33   ` [bug#60358] [PATCH v11 1/4] gnu: libunibreak: Use ucd instead of ucd-next Vivien Kraus via Guix-patches via
2022-12-31 17:34     ` [bug#60358] [PATCH v11 2/4] gnu: ucd-next: Update to 15.0.0 Vivien Kraus via Guix-patches via
2022-12-27 16:23       ` [bug#60358] [PATCH v11 3/4] gnu: Add gnulib Vivien Kraus via Guix-patches via
2022-12-28  2:20         ` [bug#60358] [PATCH v11 4/4] gnu: guile-gnutls: Update to 3.7.11 Vivien Kraus via Guix-patches via
2023-01-01 21:59 ` [bug#60358] [PATCH v11 0/4] Using a cover letter with a shallow thread style Vivien Kraus via Guix-patches via
2022-12-27 16:23   ` [bug#60358] [PATCH v11 3/4] gnu: Add gnulib Vivien Kraus via Guix-patches via
2022-12-28  2:20   ` [bug#60358] [PATCH v11 4/4] gnu: guile-gnutls: Update to 3.7.11 Vivien Kraus via Guix-patches via
2022-12-31 17:33   ` [bug#60358] [PATCH v11 1/4] gnu: libunibreak: Use ucd instead of ucd-next Vivien Kraus via Guix-patches via
2022-12-31 17:34   ` [bug#60358] [PATCH v11 2/4] gnu: ucd-next: Update to 15.0.0 Vivien Kraus via Guix-patches via
2023-01-02 19:43 ` [bug#60358] [PATCH v12 0/4] Add my name to the copyright line Vivien Kraus via Guix-patches via
2022-12-27 16:23   ` [bug#60358] [PATCH v12 3/4] gnu: Add gnulib Vivien Kraus via Guix-patches via
2023-01-16 11:59     ` [bug#60358] [PATCH] " Ludovic Courtès
2022-12-28  2:20   ` [bug#60358] [PATCH v12 4/4] gnu: guile-gnutls: Update to 3.7.11 Vivien Kraus via Guix-patches via
2022-12-31 17:33   ` [bug#60358] [PATCH v12 1/4] gnu: libunibreak: Use ucd instead of ucd-next Vivien Kraus via Guix-patches via
2022-12-31 17:34   ` [bug#60358] [PATCH v12 2/4] gnu: ucd-next: Update to 15.0.0 Vivien Kraus via Guix-patches via
2023-01-07 10:21 ` [bug#60358] gnulib: Should this be in its own module? Vivien Kraus via Guix-patches via

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=874jtei81v.fsf@josefsson.org \
    --to=guix-patches@gnu.org \
    --cc=60358@debbugs.gnu.org \
    --cc=simon@josefsson.org \
    --cc=vivien@planete-kraus.eu \
    /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.