image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Glaulher Medeiros
Glaulher Medeiros08/09/2024 10:14
Compartilhe

Contribuindo no projeto Void Linux

  • #Linux
  • #GitHub
  • #Git

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).

image

Agora o projeto é seu, crie um clone e atualize o fork:

image

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 tenha um mantenedor, porém sempre preferência aos orfãos). Abra o navegador e entre no endereço abaixo:

https://repo-fi.voidlinux.org//void-updates/void-updates.txt

control + f no navegador e pesquise por orphan.

image

Atualizaremos o pacote rpm:

image

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.

image

Para verificar o checksum:

 xgensum -f srcpkgs/rpm/template

Copie o gerado em vermelho e atualize no template:

image

nano srcpkgs/rpm/template

image

Salve o arquivo alterado.

Compilando

Rode o lint, Se estiver tudo ok, não retornará nenhuma informação:

 xlint srcpkgs/rpm/template

image

Gerando o pacote com os testes:

 ./xbps-src -Q pkg rpm

Se tudo ocorreu bem, não apresentará mensagem de erro, caso erro, terá que verificar, pedir ajuda etc. Pacote criado corretamente.

image

É 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

image

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:

image

image

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/

Compartilhe
Comentários (2)
Glaulher Medeiros
Glaulher Medeiros - 08/09/2024 12:19

Para criar um novo pacote precisa fazer fork do repositório void package e criar o novo pacote, segue os passos:


sudo xbps-install xtools
git clone --depth=1 https://github.com/void-linux/void-packages.git
cd void-packages
./xbps-src binary-bootstrap


rodar o comando para gerar o novo template:

xnew meuPacote  # exemplo xnew dio

daí em diante, é seguir os passos desse artigo com as devidas alterações nas dependências que serão incluídas, alteração do checksum conforme o exemplo etc. é interessante ver o pacote no arch, alpine e linux from scratch que ja vai dar uma boa base para fazer a sua receita.

com isso conseguirá compilar e usar no seu sistema local, para entrar no repositório carece do PR ser aceito, os mantenedores são cautelosos com pacotes novos.


Fonte: https://re00.home.blog/2019/06/15/create-new-xbps-src-package/


João Sousa
João Sousa - 08/09/2024 11:46

Uaaaaaau, que incrível!!!! Eu não sabia que pacotes assim eram atualizado manualmente, e que seria um passo a passo que mesmo que complexo, bem documentado. Qual seria a dificuldade de criar um novo pacote no void??