From: zimoun <zimon.toutoune@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Unreproducible “guix pack -f docker” because config.scm-builder
Date: Fri, 05 Feb 2021 18:22:10 +0100 [thread overview]
Message-ID: <86lfc2bfb1.fsf@gmail.com> (raw)
In-Reply-To: <87im766d30.fsf@gnu.org>
Hi Ludo,
On Fri, 05 Feb 2021 at 11:09, Ludovic Courtès <ludo@gnu.org> wrote:
> So I guess you can propose a patch and let someone else review it.
> :-)
I will. :-)
> Looks like tar made this file a hard link in one case and not in the
> other. This is weird because we don’t ask it to create hard links
> (there’s even a comment in (guix scripts pack)).
I have 2 machines running Debian and one running Ubuntu. The 2 Debian
produces the same things. Ubuntu not.
> Is this docker image the result of the same derivation? Could you try
> building that derivation on different machines? (You can copy the .drv
> around with ‘guix copy’.)
It was built with different derivations. I mean the scenario where
Alice wants to rebuild what Bob did.
Now, let use the same derivation. Some details in case I am doing
something wrong:
--8<---------------cut here---------------start------------->8---
$ echo Ubuntu
$ guix gc -D $(guix pack -f docker hello)
finding garbage collector roots...
[0 MiB] deleting
'/gnu/store/nkvlqwzvxdlhzlc7vhfcngxc19x2ay2f-docker-pack.tar.gz'
deleting `/gnu/store/trash'
deleting unused links...
C-c C-c
$ guix gc -D $(guix pack -f docker hello -d)
finding garbage collector roots...
[0 MiB] deleting
'/gnu/store/323k33sfx869d0nkh69ary8sj6xiy4s4-docker-pack.tar.gz.drv'
deleting `/gnu/store/trash'
deleting unused links...
C-c C-c
--8<---------------cut here---------------end--------------->8---
--8<---------------cut here---------------start------------->8---
$ echo Debian
$ guix copy $(guix pack -f docker hello -d) --to=meary
guix copy: sending 1 store item (0 MiB) to '193.48.40.110'...
/gnu/store/323k33sfx869d0nkh69ary8sj6xiy4s4-docker-pack.tar.gz.drv
--8<---------------cut here---------------end--------------->8---
--8<---------------cut here---------------start------------->8---
$ echo Ubuntu
$ guix build /gnu/store/323k33sfx869d0nkh69ary8sj6xiy4s4-docker-pack.tar.gz.drv
substitute: mise à jour des substituts depuis « https://ci.guix.gnu.org»... 100.0 %
La dérivation suivante sera compilée :
/gnu/store/323k33sfx869d0nkh69ary8sj6xiy4s4-docker-pack.tar.gz.drv
construction de
/gnu/store/323k33sfx869d0nkh69ary8sj6xiy4s4-docker-pack.tar.gz.drv...
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
construction de
/gnu/store/323k33sfx869d0nkh69ary8sj6xiy4s4-docker-pack.tar.gz.drv réussie
/gnu/store/nkvlqwzvxdlhzlc7vhfcngxc19x2ay2f-docker-pack.tar.gz
--8<---------------cut here---------------end--------------->8---
So tar is appearing here… Hum?! However, if I redo the same steps, it
does not. Well, I do not like that…
Building on Ubuntu using the derivation from Debian gives the same image
as building on Ubuntu using the derivation from Ubuntu.
I thought the tools were captured by the commit: same commit, same
tools. Well, I miss something…
> Could you also show the output of:
>
> stat /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/libexec/getconf/POSIX_V6_LP64_OFF64
>
> on the two machines you used?
First on Debian and second on Ubuntu
--8<---------------cut here---------------start------------->8---
$ stat /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/libexec/getconf/POSIX_V6_LP64_OFF64
File: /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/libexec/getconf/POSIX_V6_LP64_OFF64
Size: 29960 Blocks: 64 IO Block: 4096 regular file
Device: 801h/2049d Inode: 8129616 Links: 5
Access: (0555/-r-xr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-02-05 17:37:15.728728952 +0100
Modify: 1970-01-01 01:00:01.000000000 +0100
Change: 2020-06-17 12:40:06.389935679 +0200
Birth: -
--8<---------------cut here---------------end--------------->8---
--8<---------------cut here---------------start------------->8---
$ stat /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/libexec/getconf/POSIX_V6_LP64_OFF64
Fichier : /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/libexec/getconf/POSIX_V6_LP64_OFF64
Taille : 29960 Blocs : 64 Blocs d'E/S : 4096 fichier
Périphérique : 814h/2068d Inœud : 148900093 Liens : 1
Accès : (0555/-r-xr-xr-x) UID : ( 0/ root) GID : ( 0/ root)
Accès : 2021-02-05 17:46:05.537903382 +0100
Modif. : 1970-01-01 01:00:01.000000000 +0100
Changt : 2020-12-04 23:16:33.155711694 +0100
Créé : -
--8<---------------cut here---------------end--------------->8---
> I wonder if it could be that tar nowadays decides to preserve hard links
> by default and one of your machine had this file hard-linked while the
> other one didn’t.
Wow, I thought that the same tar was used the one provided by Guix and
not by the host. For sure the default tar are not the same on both
machine (v1.30 for Debian and v1.29 for Ubuntu).
What is the md5sum checksum of ’guix pack -f docker hello’ on Guix
System for commit b9a54aa?
Thanks for the help,
simon
next prev parent reply other threads:[~2021-02-05 18:09 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20210116182957.31075-1-ludo@gnu.org>
2021-01-27 13:14 ` bug#45919: [PATCH 0/8] Exporting a manifest and channels from a profile Ludovic Courtès
2021-01-27 21:02 ` [bug#45919] " zimoun
2021-01-28 15:54 ` Ludovic Courtès
2021-02-01 22:37 ` Unreproducible “guix pack -f docker” because config.scm-builder zimoun
2021-02-02 14:48 ` zimoun
2021-02-02 18:12 ` Ludovic Courtès
2021-02-02 20:11 ` zimoun
2021-02-05 10:09 ` Ludovic Courtès
2021-02-05 17:22 ` zimoun [this message]
2021-02-06 21:46 ` Ludovic Courtès
2021-02-08 18:44 ` [PATCH] Fix unreproducible “guix pack -f docker” (hard link) zimoun
[not found] ` <86lfbzad42.fsf@gmail.com>
2021-02-09 8:35 ` Unreproducible “guix pack -f docker” because config.scm-builder Ludovic Courtès
2021-02-09 8:51 ` zimoun
2021-01-28 17:57 ` [bug#45919] [PATCH 0/8] Exporting a manifest and channels from a profile Bengt Richter
2021-01-29 19:13 ` zimoun
2021-01-28 17:04 ` bug#45919: " Pierre Neidhardt
2021-01-29 17:57 ` [bug#45919] " Pierre Neidhardt
2021-01-29 18:57 ` zimoun
2021-01-29 21:51 ` Pierre Neidhardt
2021-01-30 14:31 ` zimoun
2021-01-30 21:23 ` bug#45919: " Ludovic Courtès
2021-01-31 5:08 ` Ryan Prior
2021-02-01 13:30 ` Ludovic Courtès
2021-01-30 13:55 ` Ludovic Courtès
2021-01-31 17:26 ` Pierre Neidhardt
2021-02-01 13:25 ` Ludovic Courtès
2021-02-01 15:32 ` Pierre Neidhardt
2021-02-01 17:04 ` 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=86lfc2bfb1.fsf@gmail.com \
--to=zimon.toutoune@gmail.com \
--cc=guix-devel@gnu.org \
--cc=ludo@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).