* reproducibility
@ 2016-01-09 10:53 Federico Beffa
2016-01-10 20:49 ` reproducibility Ludovic Courtès
0 siblings, 1 reply; 9+ messages in thread
From: Federico Beffa @ 2016-01-09 10:53 UTC (permalink / raw)
To: Guix-devel
Hi,
I've noticed that a derivation is a function of the order of the
inputs. As an example, the following two input orders give rise to two
distinct derivations:
A)
(inputs
`(("texlive" ,texlive)
("texinfo" ,texinfo)
("m4" ,m4)
("libx11" ,libx11))
B)
(inputs
`(("texinfo" ,texinfo)
("texlive" ,texlive)
("m4" ,m4)
("libx11" ,libx11))
Is this intentional?
Regards,
Fede
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-09 10:53 reproducibility Federico Beffa
@ 2016-01-10 20:49 ` Ludovic Courtès
2016-01-12 20:11 ` reproducibility Federico Beffa
0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2016-01-10 20:49 UTC (permalink / raw)
To: Federico Beffa; +Cc: Guix-devel
Federico Beffa <beffa@ieee.org> skribis:
> I've noticed that a derivation is a function of the order of the
> inputs. As an example, the following two input orders give rise to two
> distinct derivations:
>
> A)
>
> (inputs
> `(("texlive" ,texlive)
> ("texinfo" ,texinfo)
> ("m4" ,m4)
> ("libx11" ,libx11))
>
> B)
> (inputs
> `(("texinfo" ,texinfo)
> ("texlive" ,texlive)
> ("m4" ,m4)
> ("libx11" ,libx11))
>
> Is this intentional?
Yes. There are several places where order matters, most importantly
search paths, and these are computed from the input lists.
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-10 20:49 ` reproducibility Ludovic Courtès
@ 2016-01-12 20:11 ` Federico Beffa
2016-01-12 21:37 ` reproducibility Ludovic Courtès
0 siblings, 1 reply; 9+ messages in thread
From: Federico Beffa @ 2016-01-12 20:11 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Guix-devel
On Sun, Jan 10, 2016 at 9:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> Federico Beffa <beffa@ieee.org> skribis:
>
>> I've noticed that a derivation is a function of the order of the
>> inputs. As an example, the following two input orders give rise to two
>> distinct derivations:
>>
>> A)
>>
>> (inputs
>> `(("texlive" ,texlive)
>> ("texinfo" ,texinfo)
>> ("m4" ,m4)
>> ("libx11" ,libx11))
>>
>> B)
>> (inputs
>> `(("texinfo" ,texinfo)
>> ("texlive" ,texlive)
>> ("m4" ,m4)
>> ("libx11" ,libx11))
>>
>> Is this intentional?
>
> Yes. There are several places where order matters, most importantly
> search paths, and these are computed from the input lists.
If order matters, it would probably be more robust to force internally
a specific order rather than relying on the (often random) order
defined in a package recipe (possibly created by an importer, ...).
Fede
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-12 20:11 ` reproducibility Federico Beffa
@ 2016-01-12 21:37 ` Ludovic Courtès
2016-01-13 8:13 ` reproducibility Federico Beffa
0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2016-01-12 21:37 UTC (permalink / raw)
To: Federico Beffa; +Cc: Guix-devel
Federico Beffa <beffa@ieee.org> skribis:
> On Sun, Jan 10, 2016 at 9:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>> Federico Beffa <beffa@ieee.org> skribis:
>>
>>> I've noticed that a derivation is a function of the order of the
>>> inputs. As an example, the following two input orders give rise to two
>>> distinct derivations:
>>>
>>> A)
>>>
>>> (inputs
>>> `(("texlive" ,texlive)
>>> ("texinfo" ,texinfo)
>>> ("m4" ,m4)
>>> ("libx11" ,libx11))
>>>
>>> B)
>>> (inputs
>>> `(("texinfo" ,texinfo)
>>> ("texlive" ,texlive)
>>> ("m4" ,m4)
>>> ("libx11" ,libx11))
>>>
>>> Is this intentional?
>>
>> Yes. There are several places where order matters, most importantly
>> search paths, and these are computed from the input lists.
>
> If order matters, it would probably be more robust to force internally
> a specific order rather than relying on the (often random) order
> defined in a package recipe (possibly created by an importer, ...).
Most of the time any order would work, but I can imagine situations
where the packager could purposefully choose a specific order. So I’d
rather not do any automatic sorting, if that’s what you have in mind.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-12 21:37 ` reproducibility Ludovic Courtès
@ 2016-01-13 8:13 ` Federico Beffa
2016-01-13 9:15 ` reproducibility Efraim Flashner
2016-01-13 13:56 ` reproducibility Ludovic Courtès
0 siblings, 2 replies; 9+ messages in thread
From: Federico Beffa @ 2016-01-13 8:13 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Guix-devel
On Tue, Jan 12, 2016 at 10:37 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> Federico Beffa <beffa@ieee.org> skribis:
>
>> On Sun, Jan 10, 2016 at 9:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>>> Federico Beffa <beffa@ieee.org> skribis:
>>>
>>>> I've noticed that a derivation is a function of the order of the
>>>> inputs. As an example, the following two input orders give rise to two
>>>> distinct derivations:
>>>>
>>>> A)
>>>>
>>>> (inputs
>>>> `(("texlive" ,texlive)
>>>> ("texinfo" ,texinfo)
>>>> ("m4" ,m4)
>>>> ("libx11" ,libx11))
>>>>
>>>> B)
>>>> (inputs
>>>> `(("texinfo" ,texinfo)
>>>> ("texlive" ,texlive)
>>>> ("m4" ,m4)
>>>> ("libx11" ,libx11))
>>>>
>>>> Is this intentional?
>>>
>>> Yes. There are several places where order matters, most importantly
>>> search paths, and these are computed from the input lists.
>>
>> If order matters, it would probably be more robust to force internally
>> a specific order rather than relying on the (often random) order
>> defined in a package recipe (possibly created by an importer, ...).
>
> Most of the time any order would work, but I can imagine situations
> where the packager could purposefully choose a specific order. So I’d
> rather not do any automatic sorting, if that’s what you have in mind.
Just out of curiosity, could you provide a concrete example where the
order is purposefully specified.
Thanks,
Fede
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-13 8:13 ` reproducibility Federico Beffa
@ 2016-01-13 9:15 ` Efraim Flashner
2016-01-13 19:51 ` reproducibility Federico Beffa
2016-01-13 13:56 ` reproducibility Ludovic Courtès
1 sibling, 1 reply; 9+ messages in thread
From: Efraim Flashner @ 2016-01-13 9:15 UTC (permalink / raw)
To: Federico Beffa; +Cc: Guix-devel
[-- Attachment #1: Type: text/plain, Size: 833 bytes --]
On Wed, 13 Jan 2016 09:13:25 +0100
Federico Beffa <beffa@ieee.org> wrote:
> On Tue, Jan 12, 2016 at 10:37 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> [...]
> [...]
> [...]
> [...]
> [...]
> [...]
> [...]
>
> Just out of curiosity, could you provide a concrete example where the
> order is purposefully specified.
>
> Thanks,
> Fede
>
I haven't had time (since reading this) to test if the order matters or not,
but some of the openstack packages say they care about order:
https://git.openstack.org/cgit/openstack/python-keystoneclient/tree/test-requirements.txt?h=2.0.0
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-13 8:13 ` reproducibility Federico Beffa
2016-01-13 9:15 ` reproducibility Efraim Flashner
@ 2016-01-13 13:56 ` Ludovic Courtès
2016-01-13 19:53 ` reproducibility Federico Beffa
1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2016-01-13 13:56 UTC (permalink / raw)
To: Federico Beffa; +Cc: Guix-devel
Federico Beffa <beffa@ieee.org> skribis:
> On Tue, Jan 12, 2016 at 10:37 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>> Federico Beffa <beffa@ieee.org> skribis:
>>
>>> On Sun, Jan 10, 2016 at 9:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>>>> Federico Beffa <beffa@ieee.org> skribis:
>>>>
>>>>> I've noticed that a derivation is a function of the order of the
>>>>> inputs. As an example, the following two input orders give rise to two
>>>>> distinct derivations:
>>>>>
>>>>> A)
>>>>>
>>>>> (inputs
>>>>> `(("texlive" ,texlive)
>>>>> ("texinfo" ,texinfo)
>>>>> ("m4" ,m4)
>>>>> ("libx11" ,libx11))
>>>>>
>>>>> B)
>>>>> (inputs
>>>>> `(("texinfo" ,texinfo)
>>>>> ("texlive" ,texlive)
>>>>> ("m4" ,m4)
>>>>> ("libx11" ,libx11))
>>>>>
>>>>> Is this intentional?
>>>>
>>>> Yes. There are several places where order matters, most importantly
>>>> search paths, and these are computed from the input lists.
>>>
>>> If order matters, it would probably be more robust to force internally
>>> a specific order rather than relying on the (often random) order
>>> defined in a package recipe (possibly created by an importer, ...).
>>
>> Most of the time any order would work, but I can imagine situations
>> where the packager could purposefully choose a specific order. So I’d
>> rather not do any automatic sorting, if that’s what you have in mind.
>
> Just out of curiosity, could you provide a concrete example where the
> order is purposefully specified.
No specific example, sorry, but it’s plausible IMO. With enough CPU
power, we could try rebuilding everything with a random order and see
what breaks.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-13 9:15 ` reproducibility Efraim Flashner
@ 2016-01-13 19:51 ` Federico Beffa
0 siblings, 0 replies; 9+ messages in thread
From: Federico Beffa @ 2016-01-13 19:51 UTC (permalink / raw)
To: Efraim Flashner; +Cc: Guix-devel
On Wed, Jan 13, 2016 at 10:15 AM, Efraim Flashner <efraim@flashner.co.il> wrote:
> On Wed, 13 Jan 2016 09:13:25 +0100
> Federico Beffa <beffa@ieee.org> wrote:
>
>> On Tue, Jan 12, 2016 at 10:37 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>> [...]
>> [...]
>> [...]
>> [...]
>> [...]
>> [...]
>> [...]
>>
>> Just out of curiosity, could you provide a concrete example where the
>> order is purposefully specified.
>>
>> Thanks,
>> Fede
>>
>
> I haven't had time (since reading this) to test if the order matters or not,
> but some of the openstack packages say they care about order:
> https://git.openstack.org/cgit/openstack/python-keystoneclient/tree/test-requirements.txt?h=2.0.0
Reading the comment sounds like its because pip installs packages
sequentially. Sounds like a different approach from what we are doing.
Anyway, thanks for the pointer.
Regards,
Fede
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: reproducibility
2016-01-13 13:56 ` reproducibility Ludovic Courtès
@ 2016-01-13 19:53 ` Federico Beffa
0 siblings, 0 replies; 9+ messages in thread
From: Federico Beffa @ 2016-01-13 19:53 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Guix-devel
On Wed, Jan 13, 2016 at 2:56 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> Federico Beffa <beffa@ieee.org> skribis:
>
>> On Tue, Jan 12, 2016 at 10:37 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>>> Federico Beffa <beffa@ieee.org> skribis:
>>>
>>>> On Sun, Jan 10, 2016 at 9:49 PM, Ludovic Courtès <ludo@gnu.org> wrote:
>>>>> Federico Beffa <beffa@ieee.org> skribis:
>>>>>
>>>>>> I've noticed that a derivation is a function of the order of the
>>>>>> inputs. As an example, the following two input orders give rise to two
>>>>>> distinct derivations:
>>>>>>
>>>>>> A)
>>>>>>
>>>>>> (inputs
>>>>>> `(("texlive" ,texlive)
>>>>>> ("texinfo" ,texinfo)
>>>>>> ("m4" ,m4)
>>>>>> ("libx11" ,libx11))
>>>>>>
>>>>>> B)
>>>>>> (inputs
>>>>>> `(("texinfo" ,texinfo)
>>>>>> ("texlive" ,texlive)
>>>>>> ("m4" ,m4)
>>>>>> ("libx11" ,libx11))
>>>>>>
>>>>>> Is this intentional?
>>>>>
>>>>> Yes. There are several places where order matters, most importantly
>>>>> search paths, and these are computed from the input lists.
>>>>
>>>> If order matters, it would probably be more robust to force internally
>>>> a specific order rather than relying on the (often random) order
>>>> defined in a package recipe (possibly created by an importer, ...).
>>>
>>> Most of the time any order would work, but I can imagine situations
>>> where the packager could purposefully choose a specific order. So I’d
>>> rather not do any automatic sorting, if that’s what you have in mind.
>>
>> Just out of curiosity, could you provide a concrete example where the
>> order is purposefully specified.
>
> No specific example, sorry, but it’s plausible IMO. With enough CPU
> power, we could try rebuilding everything with a random order and see
> what breaks.
I guess that's not necessary... I was just trying to learn something.
Thanks,
Fede
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-01-13 19:53 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-09 10:53 reproducibility Federico Beffa
2016-01-10 20:49 ` reproducibility Ludovic Courtès
2016-01-12 20:11 ` reproducibility Federico Beffa
2016-01-12 21:37 ` reproducibility Ludovic Courtès
2016-01-13 8:13 ` reproducibility Federico Beffa
2016-01-13 9:15 ` reproducibility Efraim Flashner
2016-01-13 19:51 ` reproducibility Federico Beffa
2016-01-13 13:56 ` reproducibility Ludovic Courtès
2016-01-13 19:53 ` reproducibility Federico Beffa
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).