< Reproducible builds (Português)

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

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.

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.

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
linux-docsVários problemas- ordem, links, ...nenhumninguémNão
linux-headers/usr/lib/modules/*/build/vmlinux diff[link inativo 2021-11-15 ]nenhumninguémNão
linux-ltsmesmo que linuxnenhumninguémNão
linux-lts-docsmesmo que linux-docsnenhumninguémNão
linux-lts-headersmesmo que linux-headersnenhumninguémNão
nssDiferenças binárias para /usr/lib/lib{freebl3,freeblpriv3,softokn3}.chk do shlibsignnenhumninguémNão
perltimestamp, uname codificados na compilaçãonenhumninguémNão

[extra]

Pacote Problema Solução/Patch Atribuído(a) Resolvido
abiwordusr/lib/python2.7/site-packages/gi/overrides/Abi.pyc e .pyonenhumninguémNão
accounts-qml-moduleproblema no tamanho do .BUILDINFO - FTBFS durante recompilaçãonenhumninguémNão
amdvlkmuitas diferenças no usr/lib/amdvlk64.sonenhumninguémNão
antdiferenças no arquivo .jarnenhumninguémNão
ant-docvários carimbos de data/hora (javadoc) e diferença no arquivo .zipnenhumninguémNão
antlr2AURusr/share/java/antlr2.jarnenhumninguémNão
apparmorAdicionar arquivos ao array backup requer colocar em ordem, usr/lib/python3.8/site-packages/LibAppArmor/__pycache__/LibAppArmor.cpython-38.pycnenhumninguémNão
asymptoteDatas em aqruivos html e info. Diferenças em documento PDF (datas?)nenhumninguémNão
autogenCarimbo de data e hora em páginas man, sr/share/autogen/libopts-42.1.17.tar.gz com dono de arquivo diferentes e pequena alteração de binário no usr/bin/autogenprecisa exportar MAN_PAGE_DATE=... e configure --enable-timeout=70ninguémNão
bigloouname e carimbos de data/hora em todo lugarnenhumninguémNão
breezy3.0.2.3-3 reproduzível com ambos repro e makechrootpkgproblema de ferramental?ninguémNão
brlttyusr/share/java/brlapi.jarnenhumninguémNão
check-docsmuitos carimbos de data/hora texi2htmlnenhumninguémNão
chromaprintdiferença binária em usr/bin/fpcalcnenhumninguémNão
clispendereço ip; carimbos de data/hora em documentos ps, provavelmente muito maisnenhumninguémNão
colordProfile ID diverge em usr/share/color/icc/colord/{Crayons,x11-colors}.icc e diferenças binárias em usr/lib/colordnenhumninguémNão
conkycarimbo de data/hora (de toluapp) e uname (no mínimo)nenhumninguémNão
delugearquivo .pyc, arquivos .eggnenhumninguémNão
doxygen-docsmuitos pdfs com diferençasnenhumninguémNão
ecluname, carimbo de data/hora, gzip, muitas outras diferenças bináriasnenhumninguémNão
eclipse-ecjarquivo .jarnenhumninguémNão
efitools/usr/share/efitools/efi/LockDown.efi tem diferenças bináriasnenhumninguémNão
eflmuitas diferenças bináriasnenhumninguémNão
efl-docsdiferenças em pdf, incluindo datasnenhumninguémNão
emacsdiferenças binárias em usr/bin/emacsnenhumninguémNão
extra-cmake-modulesPequena divergência na ordem em /usr/share/doc/ECM/ExtraCMakeModules.qchnenhumninguémNão
firefoxÉ o firefox ; PGO?bug + patch[link inativo 2023-05-20 ]ninguémNão
fontconfigFTBFS com repro. Carimbo de data/hora dentro de páginas mannenhumninguémNão
fontforgeDiferenças binárias no fontforge e algumas bibliotecasnenhumninguémNão
libakonadiNomes de usuário/grupo de arquivos em usr/share/kdevappwizard/templates/akonadi{resource,serializer}.tar.bz2nenhumninguémNão
libblurayDiferenças de atributo de arquivos(?) em usr/share/java/{libbluray{,-awt}-j2se-1.2.0.jarnenhumninguémNão
libgeeDiferenças binárias em usr/lib/libgee-0.8.so.2.6.1nenhumninguémNão
libgtopuname em /usr/bin/libgtop_server2nenhumninguémNão
libibus/usr/lib/python2.7/site-packages/gi/overrides/IBus.pyc e .pyo têm diferençasnenhumninguémNão
libjpeg-turboFTBFS sob repro. makerepropkg - muitas diferenças em todo lado...nenhumninguémNão
liblangtag/usr/share/gir-1.0/LangTag-0.6.girnenhumninguémNão
libmp4v2carimbo de data/hora em usr/include/mp4v2/project.h e usr/lib/libmp4v2.so.2.0.0nenhumninguémNão
libquvicarimbo de data/hora em libquvi-0.9-0.9.4.sonenhumninguémNão
lirccarimbo de data/hora em arquivos yaml, usr/share/lirc/lirc-0.10.1.tar.gz 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
mesonArquivos .pyc também testa alguns arquivos .pyc em faltanenhumninguémNão
rVários carimbos de data/hora em arquivos, em gzip, caminhos gerados aleatoriamente(?) em /tmp/, divergências binárias...nenhumninguémNão
transmission-gtkuname em usr/bin/transmission-gtk, compilação com dependências fornecidas (miniupncpc que contém uname -r)nenhumninguémNão
zabbix-agent2Carimbo de data/hora em /usr/bin/zabbix_agent2nenhumninguémNão
zeitgeistdiff[link inativo 2021-11-15 ] Divergências estranhas de texto em /usr/lib/libzeitgeist-2.0.so.0.0.0nenhumninguémNão
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.