Após quase dois anos de desenvolvimento o lançamento do gerenciador de pacotes . O projeto RPM4 é desenvolvido pela Red Hat e utilizado em distribuições como RHEL (incluindo os projetos derivados CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen e muitas outras. Anteriormente, era desenvolvido por uma equipe independente de desenvolvedores projeto , que não está diretamente relacionado ao RPM4 e atualmente está abandonado (não atualizado desde 2010).
As melhorias mais notáveis no RPM 4.15:
- Foi adicionada suporte experimental para compilação não privilegiada em um ambiente chroot;
- suporte para paralelização da construção de pacotes em sistemas multicore. O limite de threads é definido através da macro "%_smp_build_ncpus" e da variável $RPM_BUILD_NCPUS. A macro "%getncpus" foi proposta para determinar o número de CPUs;
- Nos arquivos spec, foi adicionada a suporte para os operadores condicionais "%elif" (else if), bem como opções "%elifos" e "%elifarch" para vincular a distribuição e arquitetura;
- novas seções "%patchlist" e "%sourcelist", que podem ser usadas para adicionar patches e códigos-fonte simplesmente listando nomes sem indicar números de entradas (por exemplo, em vez de
"Patch0: popt-1.16-pkgconfig.patch" na seção %patchlist pode-se indicar "popt-1.16-pkgconfig.patch"); - No rpmbuild suporte para construção dinâmica de dependências com sua inclusão no src.rpm. No arquivo spec, foi adicionada a suporte para a seção "%generate_buildrequires", cujo conteúdo é processado como uma lista de dependências (BuildRequires), que precisa ser verificada (se a dependência estiver ausente, um erro será gerado).
- o operador "^" para verificar versões após uma determinada data, executando uma ação oposta ao operador "~". Por exemplo,
"1.1^20160101" abrangerá a versão 1.1 e patches adicionados após 1º de janeiro de 2016; - Adicionada a opção "—scm" para incluir o modo "%autosetup SCM";
- Adicionado um macro embutido "%{expr:…}" para calcular expressões arbitrárias (há alguns dias, também foi o formato "%[ expr ]");
- Garantido o uso padrão da codificação UTF-8 para dados de string nos cabeçalhos;
- Adicionados macros globais %build_cflags, %build_cxxflags, %build_fflags e %build_ldflags com flags para compiladores e linkers;
- Adicionado o macro "%dnl" (Descartar na Próxima Linha) para inserir comentários;
- Nos bindings para Python 3, assegurado o retorno de strings como sequências UTF-8 escapadas em vez de dados de byte;
- Adicionado um backend fictício de BD para melhorar o suporte em sistemas sem rpmdb (por exemplo, Debian);
- Melhorada a definição da arquitetura ARM e adicionado suporte a armv8;
- Assegurada suporte contínua para Lua 5.2-5.3, não exigindo definições compat no código.
Fonte: opennet.ru
