[slack] atualizacoes no simplepkg

Depois de um longo e tenebroso inverno, estou aproveitando a entresafra
para desafogar algumas pendências, dentre elas o retorno do Trac em
http://slack.sarava.org/trac e o do repositório binário em
http://slack.sarava.org/packages.

Além disso, efetuei alguns melhoramentos no simplepkg, vide

  http://slack.sarava.org/simplepkg/trunk/doc/CHANGELOG

Acho que agora estamos a poucos passos de termos uma suíte integrada e
desenvolvimento e administração. Nos próximos dias tentarei dar uma
arrumada na documentação, no site, corrigir eventuais bugs e de repente
até implementar mais alguma coisa.

As mudanças estão apenas no trunk e ainda estão em fase de testes. Se
você já utiliza o simplepkg e quiser atualizar sua versão, basta rodar:

  createpkg --sync
  createpkg --install simplepkg

Caso contrário, baixe o pacote mais recente a partir de
http://slack.sarava.org/noarch. Se preferir, crie um pacote diretamente
do código fonte:

  svn checkout http://slack.sarava.org/simplepkg
  cd simplepkg && make package
  upgradepkg --install-new /tmp/simplepkg*.tgz

A seguir explico algumas mudanças, espero que vocês gostem :)

Suporte a git
=============

Criação da seção "git_source" no generic.mkSlackBuild, que permite a
criação de SlackBuilds como o do metastore:

  http://slack.sarava.org/mkbuilds/app/backup/metastore/
  http://slack.sarava.org/slackbuilds/app/backup/metastore/

Arquivos de configuração padrão
===============================

Os arquivos de configuração padrão estão em

  - /etc/simplepkg/defaults/simplepkg.conf
  - /etc/simplepkg/defaults/repos.conf

O uso de /etc/simplepkg/simplepkg.conf e /etc/simplepkg/repos.conf é
opcional:

  - Parâmetros existentes no /etc/simplepkg/simplepkg.conf substituem
    os valores presentes no /etc/simplepkg/defaults/simplepkg.conf.

  - A existência do arquivo /etc/simplepkg/repos.conf faz com que o
    simplaret ignore inteiramente o /etc/simplepkg/defaults/repos.conf.

Dessa forma, apenas quem quiser uma configuração diferente do padrão
precisará manter seus próprios arquivos de configuração.

Integração com subversion
=========================

Mkbuild
-------

Mudei todas as antigas opções de "commit" do mkbuild. Agora o mkbuild
possui as seguintes opções para lidar com os repositórios de mkbuilds
e SlackBuilds:

  -ss, --submit-slackbuild
      submit SlackBuilds in local svn SlackBuild tree
  -sm, --submit-mkbuild
      submit .mkbuild in local svn mkbuild tree
  -sa, --submit-all
      submit SlackBuild and .mkbuild files in local svn tree
  -cs, --commit-slackbuild
      commit SlackBuilds in svn SlackBuild tree
  -cm, --commit-mkbuild
      commit .mkbuild in svn mkbuild tree
  -ca, --commit-all
      commit SlackBuild and .mkbuild files in svn tree

As opções "submit" apenas adicionam o mkbuild e/ou o SlackBuild nas
cópias de trabalho local, enquanto que as opções "commit" efetivamente
cometem as mudanças para o repositório subversion.

Como exemplo, segue o procedimento que utilizei para adicionar o
programa rsnapshot nas nossas árvores:

  $ mkdir ~/work && cd ~/work # para evitar poluicao
  $ mkbuild rsnapshot
  $ $EDITOR rsnapshot.mkbuild # edite principalmente "SLACKBUILD PATH"
  $ mkbuild rsnapshot.mkbuild 
  $ mkbuild -sa rsnapshot 
  
  Submiting rsnapshot.SlackBuild
  A         app/backup/rsnapshot
  A         rsnapshot.SlackBuild
  
  Submiting rsnapshot.mkbuild
  A         app/backup/rsnapshot
  A         rsnapshot.mkbuild
  
  $ mkbuild -ca rsnapshot "adding rsnapshot"
  Adding         app/backup/rsnapshot
  Adding         app/backup/rsnapshot/rsnapshot.SlackBuild
  Transmitting file data .
  Committed revision 1983.
  Adding         app/backup/rsnapshot
  Adding         app/backup/rsnapshot/rsnapshot.mkbuild
  Transmitting file data .
  Committed revision 274.

No caso em questão, eu havia editado um parâmetro erroneamente.
Sem problemas, basta corrigir o erro e enviar novamente para
a árvore:

  $ $EDITOR rsnapshot.mkbuild
  $ mkbuild rsnapshot 
  $ mkbuild -sa rsnapshot

  Submiting rsnapshot.SlackBuild

  Submiting rsnapshot.mkbuild

  $ mkbuild -ca rsnapshot "fixing key url"
  Sending        app/backup/rsnapshot/rsnapshot.SlackBuild
  Transmitting file data .
  Committed revision 1984.
  Sending        app/backup/rsnapshot/rsnapshot.mkbuild
  Transmitting file data .
  Committed revision 275.

Por enquanto, as opções de commit apenas funcionam após o mkbuild
e o SlackBuild terem sido criados.

Createpkg
---------

A integração do createpkg a um repositório de pacotes em subversion
funciona de modo semelhante ao do mkbuild, mas é um pouco mais
automática:

  # createpkg homecrypt
  createpkg[1]: found script homecrypt.SlackBuild, now checking for dependencies
  createpkg[1]: no unmet dependencies for homecrypt
  createpkg[1]: processing homecrypt.SlackBuild
  [snip]
  Package creation complete.

  A         app
  A         app/crypt
  A         app/crypt/homecrypt
  A  (bin)  homecrypt-8_svn-noarch-1rha.tgz
  Created metafile for homecrypt-8_svn-noarch-1rha.tgz
  A         homecrypt-8_svn-noarch-1rha.meta
  Created new FILELIST.TXT
  Updated CHECKSUMS.md5 at /var/simplepkg/repos/slackware/slackware-12.1
  Cleaning up the repository...
  Copying package to noarch repository...
  A         app
  A         app/crypt
  A         app/crypt/homecrypt
  A  (bin)  homecrypt-8_svn-noarch-1rha.tgz
  A         homecrypt-8_svn-noarch-1rha.meta
  Created metafile for homecrypt-8_svn-noarch-1rha.tgz
  Created new FILELIST.TXT
  Updated CHECKSUMS.md5 at /var/simplepkg/repos/noarch
  Package saved at /var/simplepkg/repos/slackware/slackware-12.1/[...]
  Aditional copy saved at /var/simplepkg/repos/noarch/app/crypt/[...]
  
  # createpkg --commit "adding homecrypt"
  Enviando       slackware-12.1/CHECKSUMS.md5
  Enviando       slackware-12.1/CHECKSUMS.md5.gz
  Enviando       slackware-12.1/FILELIST.TXT
  Adicionando    slackware-12.1/app
  Adicionando    slackware-12.1/app/crypt
  Adicionando    slackware-12.1/app/crypt/homecrypt
  Adicionando    
slackware-12.1/app/crypt/homecrypt/homecrypt-8_svn-noarch-1rha.meta
  Adic.    (bin) 
slackware-12.1/app/crypt/homecrypt/homecrypt-8_svn-noarch-1rha.tgz
  Transmitindo dados do arquivo .....
  Commit da revisão 2.
  Enviando       noarch/CHECKSUMS.md5
  Enviando       noarch/CHECKSUMS.md5.gz
  Enviando       noarch/FILELIST.TXT
  Adicionando    noarch/app
  Adicionando    noarch/app/crypt
  Adicionando    noarch/app/crypt/homecrypt
  Adicionando    noarch/app/crypt/homecrypt/homecrypt-8_svn-noarch-1rha.meta
  Adic.    (bin) noarch/app/crypt/homecrypt/homecrypt-8_svn-noarch-1rha.tgz
  Transmitindo dados do arquivo .....
  Commit da revisão 3.

Não é mais necessário que todos esses comandos sejam rodados por
superusuários. Os seguintes parâmetros do simplepkg.conf permitem
inclusive que o mkbuild e o createpkg manipulem cópias de trabalho
de usuários específicos:

  MAKEPKG_SVN_USER
  MKBUILDS_SVN_USER
  MAKEPKG_SVN_GROUP
  MKBUILDS_SVN_GROUP

Repositório binário integrado
-----------------------------

Para quem armazena pacotes criados com o createpkg em
/var/simplepkg/repos, a configuração padrão mudou a pasta
para /var/simplepkg/repos/DISTRIBUICAO/DISTRIBUICAO-VERSAO.

Isso pode ser mudado através do parâmetro de configuração
MAKEPKG_REPOS_STYLE, mas o valor padrão faz com que os pacotes
criados com o createpkg estejam automaticamente disponíveis
ao simplaret.

Considerando o exemplo anterior, com a configuração padrão de
repositórios e pastas o recém-criado pacote homecrypt já aparece
disponível ao simplaret:

  # simplaret update Copying 
/var/simplepkg/repos/slackware/slackware-12.1//FILELIST.TXT...  done.

  Copying /var/simplepkg/repos/slackware/slackware-12.1//CHECKSUMS.md5...  done.

  # simplaret search homecrypt
  ROOT repository local, arch: i386, version: 12.1: 
homecrypt-8_svn-noarch-1rha.tgz

Essa integração é local, ou seja, independente dos seus pacotes criados
pelo createpkg estarem num repositório subversion.

Novo formato para templates
===========================

Criei o formato "compact" de armazenamento de templates do templatepkg.
Os formatos anteriores ainda são suportados, mas o novo guarda dados de
jaulas de forma mais limpa:

  - /etc/simplepkg/templates/JAULA/packages: lista de pacotes
  - /etc/simplepkg/templates/JAULA/files: pasta com arquivos
  - /etc/simplepkg/templates/JAULA/scripts: scripts de pós-instalação
  - /etc/simplepkg/templates/JAULA/perms: permissões

Mais informações
================

Mais detalhes podem ser obtidos através do log do repositório.

-- 
rhatto em riseup.net
chave publica: id 0x6B566777 / keyserver.noreply.org

Other related posts: