Fedora 31 planeja atualizar para o RPM 4.15

Fedora 31 planeja atualizar para o RPM 4.15
rpm

O RPM 4.15 será lançado este ano como a mais recente atualização do RPM4 e o Fedora 31 está planejando fazer uso imediato do RPM 4.15, dado seus recursos novos/aprimorados. Espera-se que o RPM 4.15 forneça desempenho de criação mais rápido, um gerador de dependência de construção dinâmico, operações chroot experimentais para usuários não-root, detecção aprimorada de ARM e muitas correções. Portanto, o Fedora 31 planeja atualizar para o RPM 4.15.

Mais detalhes sobre os recursos/alterações do RPM 4.15 estão provisoriamente descritos no RPM.org.

Agora há uma proposta de mudança aguardando avaliação pelo FESCo para aprovar a mudança do Fedora 31 para fazer uso do RPM 4.15. O Fedora 31 deve ser lançado em novembro deste ano.

Resumo das alterações do RPM 4.14.x

Fedora 31 planeja atualizar para o RPM 4.15

Correções de bugs e melhorias gerais

  • Adicionar suporte para operações chroot sem raiz no Linux (experimental);
  • Adiciona um banco de dados fictício para melhor suportar sistemas sem rpmdb (Debian);
  • Melhora a detecção de ARM, adicione suporte armv8
  • Adicionar mapeamento de compatibilidade de arquitetura entre aarch64 e arm64
  • Atualizações de Documentação.

Linha de comando

  • Corrigir –setcaps em arquivos sem recursos não removendo-os
  • Corrigir rpm2archive retornando nomes inválidos em rpms de origem
  • Corrigir rpm2archive silenciosamente ignorando argumentos após o primeiro
  • Corrija o código de saída do rpmsign para ser consistente com outras ferramentas
  • Corrigir o argumento –dbpath não validado (RhBug: 1696408)
  • Erro de saída em arquivos com mais de 4 GB em rpm2cpio (RhBug: 1662481)

Transações

  • Sincronizar sistemas de arquivos atualizados no final das transações (RhBug: 1461765)
  • Garantir que as correspondências de dependência do rpmdb estejam realmente no intervalo
  • Manipule os digests não suportados da mesma forma que os desabilitados (RhBug: 1652529)
  • Corrigir% de dependências de scriptlet que afetam a ordem de instalação
  • Corrigir o SUID, o SGID e os recursos do% _minimize_writes stripping dos arquivos
  • Corrigir um obscuro segfault na impressão digital rodada symlink (RhBug: 1660232)
  • Corrigir pacotes sendo apagados em uma atualização com falha com dnf (RhBug: 1620275)

Consultas e verificação

  • Skip Relocations: linha em pacotes não relocáveis na saída -qi
  • Mostrar DistTag na saída -qi se presente no pacote
  • Distinguir os recursos vazios e sem recursos na verificação do RPM (# 585)
  • Corrigir o valor de saída do rpm -ql quando a opção -p for omitida (RhBug: 1680610)
  • Corrigir rpm -ql gerando várias cópias de listas de arquivos em múltiplos argumentos

Construção de pacotes

  • Várias operações paralelizadas até% _smp_build_ncpus:
    • classificação de arquivos
    • criação de sub-pacotes binários (# 211)
    • Verificação de consistência de consistência de buildroot (RhBug: 1704353)
    • Script de Política buildroot brp-strip-static-archive (RhBug: 1691822)

Spec

  • Adicione% patchlist e% sourcelist seções à especificação, útil para declarar patches e fontes com o mínimo de clichê
  • Adicione a variável $ RPM_BUILD_NCPUS a todos os ambientes de script de construção
  • Adicionar suporte para patch automático e numeração de fonte
  • Adicionar suporte para classificar o cursor (‘^’) acima da versão base
  • Adicionar a opção –scm cli para a seleção de% autosetup SCM
  • Adicionar ModularityLabel: tag e macro correspondente
  • Adicione aviso no texto seguindo as diretivas% else ou% endif
  • Adicionar aviso em links simbólicos absolutos em pacotes
  • Corrigir o rastreamento de dependência de til em dependências ricas
  • Corrigir espaço em branco em nomes de arquivos compactados não compactados em% setup
  • Corrigir o código de saída de descompactação de% de configuração inconsistente entre as variantes
  • Corrigir qualificadores de dependência inválidos nem sempre detectados
  • Corrija os scriptlets de construção que potencialmente deixam postos de trabalho em segundo plano (# 134)
  • Corrigir sinalizadores de verificação incorretos nos diretórios% doc e% license (# 655)
  • Corrigir macros criadas para muitas tags, onde não faz sentido (# 689, RhBug: 555926)
  • Corrigir algumas combinações% if-% else-% endif inválidas que não geram erro
  • Certifique-se de que SOURCE_DATE_EPOCH esteja no passado

Macros

  • Adicione macros de sinalizador de compilação específicas ao idioma global% build_cflags,% build_cxxflags,% build_fflags e% build_ldflags para opções do vinculador
  • Adicione a macro% set_build_flags que pode ser usada para definir variáveis de ambiente para flags do compilador (CFLAGS etc)
  • Adicionar macro primitiva getncpus incorporada para retornar o número de CPUs disponíveis para o processo
  • Adicione a macro% _smp_build_ncpus para determinar o número de CPUs usadas para compilação
  • Adicionar macro de ativação de LTO com reconhecimento de SMP% _lto_cflags
  • Adicione os parâmetros -m (in) e M (ax) ao% autopatch para aplicar o intervalo de patches
  • Rastrear e registrar falhas ao carregar arquivos de macro
  • Corrigir% _smp_mflags e% _lto_cflags não estarem com reconhecimento de afinidade (RhBug: 891588)
  • Corrigir erro no repositório do Git preexistente em% autosetup (# 239)
  • Corrigir uma detecção de fim de macro quando a linha começar com ‘}’ (# 401)
  • Corrigir redefinição de macros incorporadas falsamente
  • Corrigir macro% make_build para fornecer saída detalhada por padrão
  • Corrigir% {uncompress: …} falhas para gerar um erro real
  • Corrigir buffer over-read de uma macro inacabada “% {!” Expansão
  • Corrigir o nome do arquivo ausente e o número da linha para avisos e erros de macro
  • Remover macros auxiliares da linguagem de script e scripts associados
  • Remover as macros relacionadas com as ferramentas automáticas restantes

Políticas do Buildroot

  • Leve o% _prefix em conta ao compactar as páginas do manual etc (# 538)

Geradores

  • Adicione% {name},% {version},% {version} e% {release} disponíveis aos geradores
  • Corrigir o gerador dist de Python quando não houver informação de ovo ou informação de dist.
  • Corrigir elfdeps não retornando código de erro em erros
  • Remover Mono geradores desatualizados e sem manutenção (# 673)

Debuginfo

  • Adicione o sinalizador para usar a faixa -g em vez da faixa completa nos DSOs (RhBug: 1663264)
  • Adicionar saída de estatísticas dwz
  • Adicionar suporte para geração de ID de compilação a partir de arquivos ELF compactados (RhBug: 1650072,1650074)
  • Corrigir a detecção do módulo do kernel para usar uma heurística mais confiável
  • Corrigir a geração de debuginfo de interrupção (# 630) personalizada do% {_ smp_mflags}
  • Corrigir executáveis independentes de posição sendo identificados incorretamente
  • Corrigir ordem inconsistente de arquivos com link físico (RhBug: 1421272)

Formato do pacote

Fedora 31 planeja atualizar para o RPM 4.15

Assinaturas e chaves

  • Adicione o resumo SHA256 aos cabeçalhos gpg-pubkey também
  • Adicionar gpg (foo) fornece o keyid completo de pubkeys também
  • Tornar o resumo do gpg-pubkey mais significativo
  • Corrigir assinatura do arquivo IMA alterando hashes de pacotes e quebrando assinaturas
  • Verifique os pacotes antes de assinar (RhBug: 1646388)

Plugins

  • Adicione o plugin de auditoria do Linux para operações de pacote conforme o OSPP v4.2
  • Corrigir o nível de log de erros do plugin SELinux

Ligações Python

  • Adicione ligações para rpmdsIsWeak (), rpmdsIsRich () e rpmdsIsReverse ()
  • Adicione ligações para rpmteVerified () + símbolos RPMSIG * relacionados
  • Corrija o Python 3 para retornar dados de string como strings utf-8 com escape substituto em vez de bytes que nada mais na API aceita
  • Mesclar os três sub-módulos de volta em um

Interface Lua

  • Adicionar o auxiliar rpm.execute () para executar comandos sem shell
  • Adicionar variáveis globais patch_nums e source_nums no contexto de especificação
  • Mova o redirect2null () da posix para a extensão rpm (mas o posix ainda funciona para compatibilidade)

Recursos removidos

Alterações de API

APIs adicionadas

  • Reservas de tags para RPMTAG_AUTOINSTALLED e RPMTAG_IDENTITY
  • rpmdsIsWeak () e rpmdsIsReverse () para determinar os tipos de dependência
  • rpmteVerified () para recuperar o status de verificação dos elementos de transação

APIs alteradas

  • Descartar o suporte parcial para resumos não utilizados do MD2 e do RIPEMD160
  • Corrigir incompatibilidade de código de retorno headerCheck () & regressão em 4.14.x
  • Descarte o valor de retorno do tamanho do arquivo dos parâmetros rpmDoDigest ()

APIs removidas

  • Mudanças na estrutura do QVA (XXX explain)
  • Símbolos de arquivos VERIFY_FOO redundantes removidos, RPMVERIFY_FOO deve ser usado
  • Eliminar rpmVerifyFile () reprovado e não utilizado
  • Solte o cabeçalho rpmvf.h, os conteúdos relevantes movidos para rpmfiles.he rpmcli.h

Melhorias internas e limpezas

  • Limpezas para assinatura de arquivos IMA, filtragem de consulta / verificação, ordenação, mecanismo de macro, análise de especificações, execução de scripts de criação, geração de assinaturas…
  • Consolidar conhecimento de dependência em uma estrutura / tabela
  • Corrigir o tamanho da string errada nos cabeçalhos vindos do rpmdb (# 398)
  • Corrigir vários vazamentos de memória menores
  • Implementar proteção de thread no pool de strings
  • Otimizar a execução primitiva de macro integrada
  • Corrigir rpmlog () potencialmente mudando errno
  • Corrigir a saída de depuração ausente na configuração de capacidade
  • Corrigir regressão lendo alguns pacotes antigos da era v4.0 (# 610)
  • Suporte à queda para prelink desfazer no cálculo de resumo
  • Otimizações de gerador de dependência e retrabalho para o futuro

Processo de construção

  • Pule testes Lua e Python se não estiver habilitado no configure
  • Numerosos testcases adicionados
  • Parar de forçar sinalizadores de compilação -fPIC -DPIC na própria rpm
  • Adicionar interruptor para desabilitar o plugin systemd-inhibit (# 361)
  • Ligações do Python são padrão para o Python 3, o Python 2 está obsoleto (a versão mínima é o Python 2.7)
  • Suporte Lua 5.2 – 5.3 sem hacks de compatibilidade, suporte a queda para 5.1
  • Corrigir a construção do BDB ao selecionar automaticamente o BDB interno
  • Adicionar suporte para construir rpm sem Berkeley DB (–disable-bdb)
  • Remova o switch de configuração –with-external-db, simplifique a lógica

Notas de compatibilidade

  • Eliminar o segundo argumento do gatilho de arquivo (também conhecido como $ 2)
  • Arquivos de especificação que misturam a correção de numerosos / sintaxe de origem com patch / número de fonte 0 não funcionarão mais.