Subject: Re: guitarix non-reproducible hard to reproduce

From: Ludovic Courtès <[email-masked]>
Date: Sat, 16 Nov 2019 17:12:18 +0100

Hello!

zimoun <[email-masked]> skribis:

> My intuition is: the non-determinism comes from the WAF configuration
> files (./waf or wscript or wafadmin/).
>
> The process conditionally enters in functions such as "do_install" or
> "symlink_as", so maybe something is hidden by Python module "os" or
> similar. Moreover, note that wscript:l.990 "add_group()" is used after
> "add_subdirs('libgxw/gxw')".

My intuition :-) is that waf traverses files using directly
opendir/readdir, which returns files in an order that’s file
system-dependent.  That, in turn, leads it to make .so a symlink or not
in a non-deterministic fashion.

So I would suggest looking for uses of ‘readdir’ (or anything equivalent
in Python).

It would also be worth checking what others involved in the Reproducible
Builds effort have done (Debian, openSuSE, etc.).

Thanks,
Ludo’.