< Reproducible builds (Português)

Reproducible builds (Português)/Status (Português)

O Arch Linux está constantemente recompilando pacotes do core e extra e tem uma página de status . Esta página contém um status de pacotes ruins e o que precisa ser corrigido.

Status de tradução: Esse artigo é uma tradução de Reproducible builds/Status. Data da última tradução: 2022-08-05. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Problemas

Geral

  • Uma recompilação é necessária para todos os pacotes compilados com pacman < 5.2 para resolver problemas de ordem de arquivo e um bug de tamanho btrfs. Para o problema de ordem de arquivo, os pacotes extra afetados podem ser encontrados executando o seguinte liner em um diretório espelho:
for i in /srv/ftp/extra/os/x86_64/*.pkg.tar.??; do
   bsdtar -tf $i | grep "^\." > pkg-order
   sort pkg-order > sort-order
   if ! diff pkg-order sort-order &>/dev/null; then
     echo $i;
   fi
   rm pkg-order sort-order
done

Ordem de arquivos para recompilação do FTBFS

accounts-qml-module-0.7-2-x86_64.pkg.tar.xz
archboot-2019.03-1-any.pkg.tar.xz
cmark-0.29.0-1-x86_64.pkg.tar.xz
gtk-sharp-2-2.12.45-2-x86_64.pkg.tar.xz
guile1.8-1.8.8-7-x86_64.pkg.tar.xz
java11-openjfx-11.0.3.u1-1-x86_64.pkg.tar.xz
java11-openjfx-doc-11.0.3.u1-1-x86_64.pkg.tar.xz
java11-openjfx-src-11.0.3.u1-1-x86_64.pkg.tar.xz
java8-openjfx-8.u202-3-x86_64.pkg.tar.xz
java8-openjfx-doc-8.u202-3-x86_64.pkg.tar.xz
java8-openjfx-src-8.u202-3-x86_64.pkg.tar.xz
java-openjfx-13.u14-1-x86_64.pkg.tar.xz
java-openjfx-doc-13.u14-1-x86_64.pkg.tar.xz
java-openjfx-src-13.u14-1-x86_64.pkg.tar.xz
jdk10-openjdk-10.0.2.u13-2-x86_64.pkg.tar.xz
jre10-openjdk-10.0.2.u13-2-x86_64.pkg.tar.xz
jre10-openjdk-headless-10.0.2.u13-2-x86_64.pkg.tar.xz
jsonrpc-glib-3.34.0-1-x86_64.pkg.tar.xz
libva-vdpau-driver-0.7.4-4-x86_64.pkg.tar.xz
liferea-1.12.7-1-x86_64.pkg.tar.xz
linux-atm-2.5.2-6-x86_64.pkg.tar.xz
mono-tools-4.2-2-x86_64.pkg.tar.xz
npapi-sdk-0.27.2-2-any.pkg.tar.xz
nss_ldap-265-7-x86_64.pkg.tar.xz
openjdk10-doc-10.0.2.u13-2-x86_64.pkg.tar.xz
openjdk10-src-10.0.2.u13-2-x86_64.pkg.tar.xz
pam_ldap-186-6-x86_64.pkg.tar.xz
portaudio-1:19.6.0-6-x86_64.pkg.tar.xz
qtav-1.13.0-1-x86_64.pkg.tar.xz

Pacotes com arquivos JAR

Os JARs incluem um carimbo de data/hora de modificação para cada arquivo, tornando-os irreproduzíveis. Dependendo do sistema de compilação, existem diferentes soluções disponíveis para isso.

Ant

Atualmente, ele não tem suporte para compilações reproduzíveis, veja a solicitação de recurso no upstream.

Gradle

Deve ter suporte a compilações reproduzíveis por padrão.

Maven

Tem suporte à propriedade project.build.outputTimestamp que pode ser configurada para um timestamp fixo. Versões recentes de plugins Maven respeitam essa propriedade para criar artefatos reproduzíveis. A propriedade deve ser definida no arquivo pom.xml do projeto, se o upstream ainda não fizer isso, você pode defini-la em tempo de compilação usando um comando como

mvn -Dproject.build. outputTimestamp="$SOURCE_DATE_EPOCH" clean package

. Pode ser necessário corrigir o pom.xml do projeto para atualizar os plugins para uma versão mais recente com suporte para compilações reproduzíveis, consulte o Guia do Maven para compilações reproduzíveis para as versões mínimas necessárias e mais informações, como opções de configuração adicionais necessárias.

Pacote de exemplo (incluindo um patch para uma atualização de versão do plugin Maven): junit-system-rules.

Comando jar do OpenJDK

O programa jar, embutido no OpenJDK, terá suporte a SOURCE_DATE_EPOCH começando com OpenJDK versão 15.

strip-nondeterminism

Como último recurso, strip-nondeterminism do Debian é capaz de remover metadados não reproduzíveis, como carimbos de data/hora de arquivos, de vários tipos de arquivos, incluindo JARs. Não é uma cura para tudo (por exemplo, sistemas de compilação podem incluir metadados não reproduzíveis adicionais no manifesto JAR, o não determinismo remove alguns, mas não todos) e deve ser usado apenas como último recurso se nenhum suporte nativo para compilações reproduzíveis for disponível:

strip-nondeterminism --timestamp "$SOURCE_DATE_EPOCH"

Pacote de exemplo: pdftk.

Arquivos do projeto KDE Kdeveloper

O KDE cria arquivos .tar.bz2 de modelo de Package App (aplicativo de pacote) cujos arquivos tar e userid são diferentes ao reproduzir com repro, o que pode ser um bug no repro. https://gist.githubusercontent.com/jelly/570313f56ee59be7674ad4cc002232e7/raw/b85536690c48b23ce97650e8db8f0ca18c2dbf1a/gistfile1.txt

O arquivo cmake que gera o problema.

Compilação de documentação doxygen com graphviz-2.44.0-2

O graphviz não tinha uma dependência do libpng, tornando a geração do PNG indisponível no dot, pois o graphviz era instalado antes do libpng estar disponível e, portanto, não o marcando como dlopen. Todos os pacotes que dependem do doxygen para documentação de geração e com o seguinte diff requerem uma recompilação.

│ │ --rw-r--r--   0 root         (0) root         (0)    20234 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser.html
│ │ --rw-r--r--   0 root         (0) root         (0)      265 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.map
│ │ --rw-r--r--   0 root         (0) root         (0)       32 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.md5
│ │ --rw-r--r--   0 root         (0) root         (0)     3136 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.png
│ │ +-rw-r--r--   0 root         (0) root         (0)    19961 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser.html
│ │ +-rw-r--r--   0 root         (0) root         (0)      598 2020-05-16 12:32:36.000000 usr/share/doc/grantlee/classGrantlee_1_1Parser__inherit__graph.dot

[core]

Pacote Problema Solução/Patch Atribuído(a) Resolvido
dnssec-anchors/etc/trusted-key.key divergenenhumninguémNão
gcc-adaTempos de arquivos dentro de alguns arquivos .adsnenhumninguémNão
linuxMódulos assinadosnenhumninguémNão
Vários problemas- ordem, links, ...nenhumninguémNão
diff[link inativo 2021-11-15 ]nenhumninguémNão
linux-ltsmesmo que linuxnenhumninguémNão
mesmo que nenhumninguémNão
mesmo que nenhumninguémNão
Diferenças binárias para do shlibsignnenhumninguémNão
timestamp, uname codificados na compilaçãonenhumninguémNão

[extra]

Pacote Problema Solução/Patch Atribuído(a) Resolvido
e nenhumninguémNão
accounts-qml-moduleproblema no tamanho do - FTBFS durante recompilaçãonenhumninguémNão
muitas diferenças no nenhumninguémNão
antdiferenças no arquivo .jarnenhumninguémNão
vários carimbos de data/hora (javadoc) e diferença no arquivo .zipnenhumninguémNão
nenhumninguémNão
Adicionar arquivos ao array backup requer colocar em ordem, nenhumninguémNão
asymptoteDatas em aqruivos html e info. Diferenças em documento PDF (datas?)nenhumninguémNão
Carimbo de data e hora em páginas man, com dono de arquivo diferentes e pequena alteração de binário no precisa exportar MAN_PAGE_DATE=... e configure --enable-timeout=70ninguémNão
uname e carimbos de data/hora em todo lugarnenhumninguémNão
3.0.2.3-3 reproduzível com ambos repro e makechrootpkgproblema de ferramental?ninguémNão
brlttynenhumninguémNão
muitos carimbos de data/hora texi2htmlnenhumninguémNão
diferença binária em usr/bin/fpcalcnenhumninguémNão
endereço ip; carimbos de data/hora em documentos ps, provavelmente muito maisnenhumninguémNão
Profile ID diverge em e diferenças binárias em nenhumninguémNão
carimbo de data/hora (de toluapp) e uname (no mínimo)nenhumninguémNão
delugearquivo .pyc, arquivos .eggnenhumninguémNão
muitos pdfs com diferençasnenhumninguémNão
uname, carimbo de data/hora, gzip, muitas outras diferenças bináriasnenhumninguémNão
arquivo .jarnenhumninguémNão
efitools tem diferenças bináriasnenhumninguémNão
muitas diferenças bináriasnenhumninguémNão
diferenças em pdf, incluindo datasnenhumninguémNão
diferenças binárias em nenhumninguémNão
Pequena divergência na ordem em /usr/share/doc/ECM/ExtraCMakeModules.qchnenhumninguémNão
É o firefox ; PGO?bug + patchninguémNão
FTBFS com repro. Carimbo de data/hora dentro de páginas mannenhumninguémNão
fontforgeDiferenças binárias no fontforge e algumas bibliotecasnenhumninguémNão
Nomes de usuário/grupo de arquivos em nenhumninguémNão
Diferenças de atributo de arquivos(?) em nenhumninguémNão
Diferenças binárias em nenhumninguémNão
uname em nenhumninguémNão
libibus e têm diferençasnenhumninguémNão
FTBFS sob repro. makerepropkg - muitas diferenças em todo lado...nenhumninguémNão
liblangtagnenhumninguémNão
carimbo de data/hora em e nenhumninguémNão
carimbo de data/hora em nenhumninguémNão
lirccarimbo de data/hora em arquivos yaml, tem várias divergências por carimbo de data/hora, repro causa problema de detecção de poll() não encontrado no makerepropkgpatchninguémNão
Arquivos .pyc também testa alguns arquivos .pyc em faltanenhumninguémNão
Vários carimbos de data/hora em arquivos, em gzip, caminhos gerados aleatoriamente(?) em , divergências binárias...nenhumninguémNão
uname em , compilação com dependências fornecidas (miniupncpc que contém uname -r)nenhumninguémNão
Carimbo de data/hora em nenhumninguémNão
zeitgeistdiff[link inativo 2021-11-15 ] Divergências estranhas de texto em nenhumninguémNão
gollark: Which apparently entirely broke at some point in the last few weeks.
gollark: Now I need to fix Reminding 2™.
gollark: Okay, bridging appears to be fully functional again.
gollark: Great!
gollark: Oh, you mean the BAD LyricLy?
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.