Construções reproduzíveis - Reproducible builds
Construções reproduzíveis , também conhecidas como compilação determinística , é um processo de compilar software que garante que o código binário resultante possa ser reproduzido . O código-fonte compilado usando compilação determinística sempre produzirá o mesmo binário.
Construções reproduzíveis podem atuar como parte de uma cadeia de confiança ; o código-fonte pode ser assinado e a compilação determinística pode provar que o binário foi compilado a partir de um código-fonte confiável.
Métodos
Para que o processo de compilação seja determinístico, a entrada para o compilador deve ser a mesma, independentemente do ambiente de construção usado. Isso normalmente envolve a normalização de variáveis que podem mudar, como a ordem dos arquivos de entrada, carimbos de data / hora , localidades e caminhos .
Além disso, os compiladores não devem introduzir o não determinismo por si próprios. Isso às vezes acontece ao usar tabelas de hash com um valor de semente de hash aleatório. Isso também pode acontecer ao usar o endereço de variáveis porque isso varia da randomização do layout do espaço de endereço (ASLR).
Sistemas de compilação , como Bazel e Gitian, podem ser usados para automatizar processos de compilação determinísticos.
História
O Projeto GNU usou compilações reproduzíveis no início dos anos 1990. Changelogs de 1992 indicam o esforço contínuo.
Um dos projetos mais antigos para promover compilações reproduzíveis é o projeto Bitcoin com Gitian. Mais tarde, em 2013, o projeto Tor (rede de anonimato) começou a usar Gitian para suas compilações reproduzíveis.
Em julho de 2013, o projeto Debian começou a implementar compilações reproduzíveis em todo o seu arquivo de pacotes.
Em julho de 2017, mais de 90% dos pacotes no repositório foram comprovados para serem compilados de forma reproduzível.
Em novembro de 2018, o projeto Reproducible Builds se juntou à Software Freedom Conservancy .
F-droid usa compilações reproduzíveis para fornecer uma garantia de que os APKs distribuídos usam o código-fonte gratuito reivindicado .
O sistema operacional portátil Tails usa compilações reproduzíveis e explica a outros como verificar sua distribuição.
O NixOS afirma uma construção 100% reproduzível em junho de 2021.