O openSUSE Leap 15.4 foi lançado em junho, enquanto o Linux Kamarada está na versão 15.3, lançada em dezembro do ano passado. Ao mesmo tempo em que inicio o desenvolvimento da nova versão, venho retomar a série “bastidores do Linux Kamarada”, em que tento compartilhar como é feito o desenvolvimento da distribuição. Por enquanto, essa série já conta com dois artigos:
- Como fazer uma distro baseada no openSUSE (bastidores do Linux Kamarada): começando
- Criando pacotes RPM no Open Build Service (OBS)
Se você ainda não leu os artigos anteriores, recomendo que comece por eles.
No primeiro artigo, vimos como iniciar o desenvolvimento da distribuição criando e configurando o repositório no Open Build Service (OBS) e criando o primeiro pacote já integrando o OBS com o GitLab. No segundo artigo, vimos como criar um pacote diretamente no OBS, sem usar o GitLab. Na época em que escrevi esses dois artigos, estava desenvolvendo o Linux Kamarada 15.3.
Note que em ambos os artigos eu iniciei o desenvolvimento dos pacotes do zero, para mostrar como é feito. Mas uma vez que eu já fiz o Linux Kamarada 15.3, posso reaproveitar muito do meu trabalho anterior para o Linux Kamarada 15.4, não preciso começar tudo do zero de novo.
No OBS, podemos fazer isso criando branches (ramificações) dos pacotes.
Se você já usa Git, essa palavra certamente lhe soará familiar. Mas o conceito de branch do OBS na verdade é análogo ao conceito de fork do Git.
Normalmente, no OBS (assim como no Git) usamos branches (ou forks) para contribuir com outros projetos: acessamos um pacote (repositório), criamos um branch (fork) dele em um espaço nosso, fazemos alterações e enviamos essas alterações de volta para o pacote (repositório) original.
Para iniciar uma nova versão de um pacote em um novo repositório, faremos um uso criativo dos branches no OBS. Sem mais conversa, vamos colocar a mão na massa.
Na verdade, antes, só mais uma observação: para o Linux Kamarada 15.4, hoje o nosso ponto de partida é o projeto de desenvolvimento (home:kamarada:15.4:dev), criado seguindo as instruções do primeiro artigo.
Criando branches no OBS
No primeiro artigo, vimos como criar o pacote patterns-kamarada-gnome do Linux Kamarada 15.3 do zero. Hoje, vamos fazer diferente: vamos fazer um branch daquele pacote para o projeto do Linux Kamarada 15.4, de modo a reaproveitar o trabalho anterior.
Comece acessando o pacote no projeto da versão anterior (no meu caso, o pacote patterns-kamarada-gnome no projeto home:kamarada:15.3:dev) e, na barra de ações à esquerda, clique em Branch Package (criar um branch do pacote):
Expanda More options (mais opções) e informe o nome do projeto (home:kamarada:15.4:dev
) e o nome do pacote (patterns-kamarada-gnome
) para o branch:
Marque a opção Stay on this revision (permaneça nessa revisão) para que o OBS não atualize o branch caso haja atualizações no pacote original.
Marque também a opção Disable Autocleanup (desabilitar limpeza automática) para que o OBS não exclua o branch caso fique um tempo sem receber alterações.
Ao final, clique no botão Branch.
O pacote patterns-kamarada-gnome é criado no projeto home:kamarada:15.4:dev.
Edite o arquivo _service
e atualize o parâmetro revision
:
Note como você pode fazer isso pela própria interface web do OBS. Se você não lembra do arquivo _service
, consulte um dos tutoriais a seguir:
Desfazendo a ligação com o pacote original
Como eu disse, estamos fazendo um uso criativo dos branches do OBS para reaproveitar o trabalho que tivemos com a versão anterior do pacote. Não queremos contribuir alterações de volta pro pacote original, tampouco receber atualizações dele. Sendo assim, vamos desfazer a ligação do branch com o pacote original, tornando o novo pacote independente.
Volte para a página do projeto, que lista os pacotes, e note que os pacotes que são branches são sinalizados com Link:
Abra o pacote em questão e note que também a página dele mostra que ele é um branch (Links to, tem ligação com):
Clique em show unmerged sources (mostrar código não mesclado) para mostrar apenas o código do branch, sem misturar com o código do pacote original.
Com isso, aparece o arquivo _link
, que guarda informações sobre a ligação:
Exclua esse arquivo e note que a ligação com o pacote original desaparece tanto na página do pacote:
Como na página do projeto, que lista os pacotes:
Finalizando
Termine de configurar a integração do OBS com o GitLab ou o GitHub.
E lembre-se também de atualizar os arquivos spec e changes.
Feito isso, está tudo pronto para que você possa trabalhar na próxima versão deste pacote.
Agora é repetir esse procedimento para todos os demais pacotes que você pretende atualizar de uma versão para a outra da distribuição.