image

Access unlimited bootcamps and 650+ courses forever

60
%OFF
Article image
Glaulher Medeiros
Glaulher Medeiros08/09/2024 10:14
Share

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

    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/

    Share
    Comments (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??