Contribuindo no projeto Void Linux
Esse artigo foi publicado por mim no VOL, com intuito de ajudar o pessoal a contribuir com essa interessante distribuição.
Void é um sistema operacional de propósito geral, baseado no kernel Linux monolítico. Seu sistema de pacotes permite instalar, atualizar e remover software rapidamente; o software é fornecido em pacotes binários ou pode ser construído diretamente de fontes com a ajuda da coleção de pacotes de fontes XBPS.
A atualização de pacote é feita ao abrir um PR no GitHub do projeto:
https://github.com/void-linux/void-packages
É necessário criar um fork do projeto (é preciso ter uma conta no github).
Agora o projeto é seu, crie um clone e atualize o fork:
Configurando e preparando o ambiente
Abra o terminal e realize os passos abaixo:
sudo xbps-install git base-devel xtools
git clone https://github.com/NOME_DO_SEU_GITHUB_QUE_FOI_COPIADO/void-packages.git
cd void-packages
git remote add upstream https://github.com/void-linux/void-packages.git
git fetch upstream
git rebase upstream/master
git push origin master
./xbps-src binary-bootstrap
O próximo passo não é necessário, embora, penso que é uma forma mais fácil de visualizar em que branch estou:
curl -sS https://starship.rs/install.sh | sh
Adicione o seguinte ao final de ~/.bashrc:
eval "$(starship init bash)"
Para os outros shells visite:
https://starship.rs/
Feche e abre o terminal novamente e entre na pasta:
cd void-packages
Escolhendo o pacote
Pronto, agora entaremos na página dos pacotes pendentes de atualização, iremos focar em pacotes simples e órfãos (nada impede de atualizar um pacote que já tenha um mantenedor, porém sempre dê preferência aos orfãos). Abra o navegador e entre no endereço abaixo:
https://repo-fi.voidlinux.org//void-updates/void-updates.txt
Dê control + f no navegador e pesquise por orphan.
Atualizaremos o pacote rpm:
Editando o template
Voltando ao terminal dentro da pasta void-packages:
git checkout -b rpm
Se quisermos voltar novamente para o branch master:
git checkout master
Para retornar ao branch rpm que criamos:
git checkout rpm
Editando o template com o nano:
nano srcpkgs/rpm/template
Editar a versão do pacote para o rpm de version=4.17.0 para (nesse exemplo é a) version=4.17.1 e salve.
Para verificar o checksum:
xgensum -f srcpkgs/rpm/template
Copie o gerado em vermelho e atualize no template:
nano srcpkgs/rpm/template
Salve o arquivo alterado.
Compilando
Rode o lint, Se estiver tudo ok, não retornará nenhuma informação:
xlint srcpkgs/rpm/template
Gerando o pacote com os testes:
./xbps-src -Q pkg rpm
Se tudo ocorreu bem, não apresentará mensagem de erro, caso dê erro, terá que verificar, pedir ajuda etc. Pacote criado corretamente.
É aconselhável compilar em uma outra arquitetura, para verificar se tudo ocorre bem, sempre compilo em ARM também.
./xbps-src -a armv7l pkg rpm
Tudo ocorrendo bem, instale o programa com o comando e teste:
sudo xbps-install --repository=/home/sua_home/void-packages/hostdir/binpkgs/rpm rpm
Obs.: substitua o rpm pelo pacote que foi compilado, nesse exemplo foi rpm, mas poderia ser icewm, htop etc.
Abrindo o PR no projeto
Salvar o commit:
git add srcpkgs/rpm/template
xbump rpm (rpm no caso o nome do pacote atualizado)
git push --set-upstream origin rpm (rpm nesse caso o nome do branch)
Entre com o nome e sua chave do github.
Ir para o GitHub do projeto:
https://github.com/void-linux/void-packages
Clique em "Compare & pull request".
Eu preenchi o comentário conforme abaixo( template padrão do projeto) e dei o ok:
<!-- Uncomment relevant sections and delete options which are not applicable -->
#### Testing the changes
- I tested the changes in this PR: **briefly**
<!--
#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO**
-->
<!-- Note: If the build is likely to take more than 2 hours, please [skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration)
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
#### Local build testing
- I built this PR locally for my native architecture, (x86_64)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- armv7l
Plus
Caso seja solicitado corrigir alguma linha, faça a alteração solicitada e repita os passos:
git add srcpkgs/rpm/template
xbump rpm #rpm no caso o nome do pacote atualizado
git push -f #terá que forçar o commit por isso -f
Caso o PR fique todo bagunçado, podemos limpar com os passos abaixo dentro do branch em que está realizando as alterações, nesse exemplo, estamos no branch rpm que criamos: No terminal execute:
git fetch --all --prune
cp srcpkgs/rpm/template .
git reset --hard upstream/master
mv template srcpkgs/rpm/
git add srcpkgs/rpm
xbump rpm (rpm no caso o nome do pacote atualizado)
git push -f
Pacote mesclado e atualizado no projeto:
Link do PR utilizado nessa dica:
https://github.com/void-linux/void-packages/pull/37880
Fontes:
https://www.lambda3.com.br/2016/02/mantendo-um-fork-atualizado-no-github/
https://a-hel-fi.m.voidlinux.org/void-updates/void-updates.txt
https://github.com/void-linux/void-packages/blob/master/Manual.md
https://www.vivaolinux.com.br/artigo/Como-contribuir-com-a-atualizacao-de-pacotes-no-Void-Linux/