Android desugaring and reproducible builds

David A. Wheeler dwheeler at dwheeler.com
Wed Aug 11 16:21:03 UTC 2021



> On Aug 11, 2021, at 11:54 AM, Chris Lamb <chris at reproducible-builds.org> wrote:
> ...
> I've not had experience with any Android-specific desugaring
> technique, but unfortunately quite a few languages targeting the JVM
> have nondeterministic desugaring.
> 
> Take, for instance, Clojure:
> 
>   https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/trapperkeeper-scheduler-clojure.html
> 
> (Note the automatically-generated proxy method / inner class is placed
> in a nondeterministic order within its parent class.)
> 
> I mention this because the *prevalence* of this issue within the JVM
> ecosystem indicates that reproducibility is, unfortunately, not yet a
> high priority in those circles. And so I am unsurprised that your
> Google searches are not returning results... :(

I think it’s important to clarify that desugaring *CAN* be deterministic.
The problem is that some low-level implementations fail to be deterministic (e.g., because they don’t force a sort order).

I think it’s not that hard from a technical view. It’s just that the people at those levels need to agree that it’s an issue & be willing to fix it.

--- David A. Wheeler


More information about the rb-general mailing list