On 2025-07-22, Chris Lamb wrote:
> Whilst working on the Reproducible Builds effort [0], we noticed that
> piglit could not be built reproducibly.
>
> This is because when rendering sets in an XML file, it does so via by
> calling repr() on the set object, which results in nondeterminstic
> output.
>
> Patch attached that renders the set as sorted whilst retaining the
> "{a, b, c}" nomenclature. 
>
>   [0] https://reproducible-builds.org/
...
> diff --git tests/serializer.py tests/serializer.py
> index 5ee9a15..e2c48e1 100644
> --- tests/serializer.py
> +++ tests/serializer.py
> @@ -67,6 +67,8 @@ def _serialize_skips(test, elem):
>          if not value:
>              value = getattr(test, f, None)
>          if value:
> +            if isinstance(value, set):
> +                value = "{" + repr(sorted(value))[1:-1] + "}"
>              et.SubElement(elem, 'option', name=f, value=repr(value))

This still appears to be an issue on both reproduce.debian.net:

  https://reproduce.debian.net/excuses.html?source_name=piglit

As well as tests.reproducible-builds.org:

  
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/piglit.html

I have just confirmed that the proposed patch fixes the issue.

I would like to NMU this in the coming weeks to fix this issue; please
let me know of any outstanding concerns!


live well,
  vagrant

Attachment: signature.asc
Description: PGP signature

Reply via email to