Jump to content

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

2 languages

- English
- 日本語

From ArchWiki
< Reproducible builds (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 [1]. 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` diverge | nenhum | ninguém | Não
gcc-ada | Tempos de arquivos dentro de alguns arquivos .ads | nenhum | ninguém | Não
linux | Módulos assinados | nenhum | ninguém | Não
linux-docs | Vários problemas- ordem, links, ... | nenhum | ninguém | Não
linux-headers | `/usr/lib/modules/*/build/vmlinux` diff[link inativo 2021-11-15 ⓘ] | nenhum | ninguém | Não
linux-lts | mesmo que linux | nenhum | ninguém | Não
linux-lts-docs | mesmo que linux-docs | nenhum | ninguém | Não
linux-lts-headers | mesmo que linux-headers | nenhum | ninguém | Não
nss | Diferenças binárias para `/usr/lib/lib{freebl3,freeblpriv3,softokn3}.chk` do shlibsign | nenhum | ninguém | Não
perl | timestamp, uname codificados na compilação | nenhum | ninguém | Não

### [extra]

Pacote | Problema | Solução/Patch | Atribuído(a) | Resolvido
--- | --- | --- | --- | ---
abiword | `usr/lib/python2.7/site-packages/gi/overrides/Abi.pyc` e `.pyo` | nenhum | ninguém | Não
accounts-qml-module | problema no tamanho do `.BUILDINFO` - FTBFS durante recompilação | nenhum | ninguém | Não
amdvlk | muitas diferenças no `usr/lib/amdvlk64.so` | nenhum | ninguém | Não
ant | diferenças no arquivo .jar | nenhum | ninguém | Não
ant-doc | vários carimbos de data/hora (javadoc) e diferença no arquivo .zip | nenhum | ninguém | Não
antlr2AUR | `usr/share/java/antlr2.jar` | nenhum | ninguém | Não
apparmor | Adicionar arquivos ao array backup requer colocar em ordem, `usr/lib/python3.8/site-packages/LibAppArmor/__pycache__/LibAppArmor.cpython-38.pyc` | nenhum | ninguém | Não
asymptote | Datas em aqruivos html e info. Diferenças em documento PDF (datas?) | nenhum | ninguém | Não
autogen | Carimbo 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/autogen` | precisa exportar MAN_PAGE_DATE=... e configure --enable-timeout=70 | ninguém | Não
bigloo | uname e carimbos de data/hora em todo lugar | nenhum | ninguém | Não
breezy | 3.0.2.3-3 reproduzível com ambos repro e makechrootpkg | problema de ferramental? | ninguém | Não
brltty | `usr/share/java/brlapi.jar` | nenhum | ninguém | Não
check-docs | muitos carimbos de data/hora texi2html | nenhum | ninguém | Não
chromaprint | diferença binária em `usr/bin/fpcalc` | nenhum | ninguém | Não
clisp | endereço ip; carimbos de data/hora em documentos ps, provavelmente muito mais | nenhum | ninguém | Não
colord | Profile ID diverge em `usr/share/color/icc/colord/{Crayons,x11-colors}.icc` e diferenças binárias em `usr/lib/colord` | nenhum | ninguém | Não
conky | carimbo de data/hora (de toluapp) e uname (no mínimo) | nenhum | ninguém | Não
deluge | arquivo .pyc, arquivos .egg | nenhum | ninguém | Não
doxygen-docs | muitos pdfs com diferenças | nenhum | ninguém | Não
ecl | uname, carimbo de data/hora, gzip, muitas outras diferenças binárias | nenhum | ninguém | Não
eclipse-ecj | arquivo .jar | nenhum | ninguém | Não
efitools | `/usr/share/efitools/efi/LockDown.efi` tem diferenças binárias | nenhum | ninguém | Não
efl | muitas diferenças binárias | nenhum | ninguém | Não
efl-docs | diferenças em pdf, incluindo datas | nenhum | ninguém | Não
emacs | diferenças binárias em `usr/bin/emacs` | nenhum | ninguém | Não
extra-cmake-modules | Pequena divergência na ordem em `/usr/share/doc/ECM/ExtraCMakeModules.qch` | nenhum | ninguém | Não
firefox | É o firefox ; PGO? | bug + patch[link inativo 2023-05-20 ⓘ] | ninguém | Não
fontconfig | FTBFS com repro. Carimbo de data/hora dentro de páginas man | nenhum | ninguém | Não
fontforge | Diferenças binárias no fontforge e algumas bibliotecas | nenhum | ninguém | Não
libakonadi | Nomes de usuário/grupo de arquivos em `usr/share/kdevappwizard/templates/akonadi{resource,serializer}.tar.bz2` | nenhum | ninguém | Não
libbluray | Diferenças de atributo de arquivos(?) em `usr/share/java/{libbluray{,-awt}-j2se-1.2.0.jar` | nenhum | ninguém | Não
libgee | Diferenças binárias em `usr/lib/libgee-0.8.so.2.6.1` | nenhum | ninguém | Não
libgtop | uname em `/usr/bin/libgtop_server2` | nenhum | ninguém | Não
libibus | `/usr/lib/python2.7/site-packages/gi/overrides/IBus.pyc` e `.pyo` têm diferenças | nenhum | ninguém | Não
libjpeg-turbo | FTBFS sob repro. makerepropkg - muitas diferenças em todo lado... | nenhum | ninguém | Não
liblangtag | `/usr/share/gir-1.0/LangTag-0.6.gir` | nenhum | ninguém | Não
libmp4v2 | carimbo de data/hora em `usr/include/mp4v2/project.h` e `usr/lib/libmp4v2.so.2.0.0` | nenhum | ninguém | Não
libquvi | carimbo de data/hora em `libquvi-0.9-0.9.4.so` | nenhum | ninguém | Não
lirc | carimbo 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 makerepropkg | patch | ninguém | Não
meson | Arquivos .pyc também testa alguns arquivos .pyc em falta | nenhum | ninguém | Não
r | Vários carimbos de data/hora em arquivos, em gzip, caminhos gerados aleatoriamente(?) em `/tmp/`, divergências binárias... | nenhum | ninguém | Não
transmission-gtk | uname em `usr/bin/transmission-gtk`, compilação com dependências fornecidas (miniupncpc que contém `uname -r`) | nenhum | ninguém | Não
zabbix-agent2 | Carimbo de data/hora em `/usr/bin/zabbix_agent2` | nenhum | ninguém | Não
zeitgeist | diff[link inativo 2021-11-15 ⓘ] Divergências estranhas de texto em `/usr/lib/libzeitgeist-2.0.so.0.0.0` | nenhum | ninguém | Não

Categories:

- Package management (Português)
- Package development (Português)

Hidden category:

- Pages with dead links