• Nenhum resultado encontrado

Empacotamento de Software no Debian

N/A
N/A
Protected

Academic year: 2021

Share "Empacotamento de Software no Debian"

Copied!
21
0
0

Texto

(1)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Mini Aula

Noções sobre autotools

(outubro de 2016)

João Eriberto Mota Filho

eriberto@debian.org

http:///debianet.com.br

(2)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

AVISO

As mini aulas são voltadas para quem já sabe um

pouco sobre empacotamento e tratam de técnicas

específicas.

Se você deseja aprender a empacotar, comece pelas

aulas completas, disponíveis em

http://debianet.com.br

Aproveite e conheça os meus UDDs em

https://people.debian.org/~eriberto/udd/

(3)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Mini Aula

Noções sobre autotools

O que é o autotools

Exemplo de criação para um código simples

autoreconf e dh-autoreconf

Arquivos gerados

Antigamente...

Conclusão

(4)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

O que é o autotools

O autotools é um conjunto de ferramentas, criadas pela FSF,

que gera um configure e um Makefile que, em princípio, atendem a qualquer Unix ou derivado, permitindo a

portabilidade da instalação de programas.

As ferramentas básicas são o autoconf, o automake e o

libtool. Há outras.

A base do autotools está nos arquivos configure.ac

(antigamente chamado de configure.in) e Makefile.am (antigamente apenas Makefile.in, apesar deste hoje ser gerado pelo Makefile.am).

Eriberto - Out 16

Mini Aula autotools

(5)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

O que é o autotools

São os seguintes, o links para os sites e manuais oficiais:

https://www.gnu.org/software/autoconf/ https://www.gnu.org/software/autoconf/manual/index.html https://www.gnu.org/software/automake/ https://www.gnu.org/software/automake/manual/automake.html https://www.gnu.org/software/libtool/ https://www.gnu.org/software/libtool/manual/ Eriberto - Out 16 Mini Aula autotools

(6)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Exemplo de criação para um código simples

Debian: apt-get install autoconf automake libtool

Considere o arquivo hello.c com o seguinte conteúdo:

#include <stdio.h> #include <stdlib.h>

int main(void) {

printf("\n\nHello world!\nHo Ho Ho.\n\n"); }

Eriberto - Out 16

Mini Aula autotools

(7)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Exemplo de criação para um código simples

Para gerar o configure.ac, deveremos fazer um scan do

código. Então, no mesmo diretório do hello.c, execute:

$ autoscan

Isso irá gerar o autoscan.log e o configure.scan. Leia o

conteúdo dos dois.

A seguir, apague o autoscan.log e renomeie o configure.scan

para configure.ac.

Eriberto - Out 16

Mini Aula autotools

(8)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Exemplo de criação para um código simples

Edite o configure.ac e altere a linha AC_INIT. Não deverá

haver espaço entre o AC_INIT e o resto da linha. Exemplo:

AC_INIT([hello], [0.1], [eriberto@debian.org])

A seguir, gere o arquivo configure e execute-o para testar:

$ autoheader; ls $ autoconf; ls $ cat -n configure $ ./configure; ls Eriberto - Out 16 Mini Aula autotools

(9)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Exemplo de criação para um código simples

Agora precisamos de um Makefile.am.

Considerando que o hello final será instalado em /usr/bin,

crie o arquivo Makefile.am com as seguintes linhas:

bin_PROGRAMS = hello hello_SOURCES = hello.c

Agora, para prover integração com o configure, adicione no

fim do configure.ac, antes da linha AC_OUTPUT:

AC_CONFIG_FILES([Makefile]) AM_INIT_AUTOMAKE([foreign])

Eriberto - Out 16

Mini Aula autotools

(10)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Exemplo de criação para um código simples

Gere um configure atualizado, precedido por um aclocal:

$ ls

$ aclocal; ls $ autoconf; ls

Gere o Makefile.in a partir do Makefile.am:

$ automake --add-missing; ls

Para ter o Makefile final, execute:

$ ./configure; ls $ cat -n Makefile

Eriberto - Out 16

Mini Aula autotools

(11)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Exemplo de criação para um código simples

Para distribuir o código para usuários finais, execute:

$ ls

$ make distclean; ls

$ rm -rf autom4te.cache/ config.h.in~

Agora o usuário final poderá executar:

$ ./configure $ make # make install Eriberto - Out 16 Mini Aula autotools

(12)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Exemplo de criação para um código simples

Alternativamente, você poderá entregar somente os

seguintes arquivos para o usuário:

configure.ac hello.c Makefile.am

Agora basta ensinar ao usuário como criar os outros

arquivos (cite os comandos a serem emitidos, como

autoheader, autoconf etc.; isso deve ser colocado no arquivo INSTALL ou README) ou fazer um script executável de

criação, geralmente chamado de autogen.sh.

Eriberto - Out 16

Mini Aula autotools

(13)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

autoreconf e dh-autoreconf

O autoreconf executa, automaticamente, comandos como

autoheader, autoconf, aclocal, automake etc.

Considere apenas os seguintes arquivos (apague os outros):

configure.ac hello.c Makefile.am

Execute: $ ls $ autoreconf -fi; ls $ rm -rf autom4te.cache Eriberto - Out 16 Mini Aula autotools

(14)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

autoreconf e dh-autoreconf

Agora o usuário final poderá executar:

$ ./configure $ make

# make install

O autoreconf também poderá ser utilizado para atualizar

arquivos do autotools já existentes no código do upstream.

Isso será importante quando houver a mudança de versão do

autotools no sistema, pois os seus arquivos poderão ficar obsoletos e o comando ./configure não mais funcionará.

Eriberto - Out 16

Mini Aula autotools

(15)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

autoreconf e dh-autoreconf

Considere apenas os seguintes arquivos (apague os outros):

configure.ac hello.c Makefile.am

Execute: $ autoheader $ aclocal $ autoconf $ automake --add-missing; ls $ autoreconf -fi; ls $ rm -rf autom4te.cache config.h.in~ Eriberto - Out 16 Mini Aula autotools

(16)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

autoreconf e dh-autoreconf

Então, é sempre bom utilizar o autoreconf para garantir o

funcionamento correto do autotools, ainda mais depois que houver atualizações de versão do autotools.

Como exemplo de problemas, veja o texto inicial (apenas a

primeira mensagem; ignore os anexos) do seguinte bug no Debian: #737666.

No Debian, o pacote dh-autoreconf automatiza a utilização

de autoreconf.

O dh-autoreconf, ao ser instalado, já provê os pacotes

autoconf, automake, libtool e outros.

Eriberto - Out 16

Mini Aula autotools

(17)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

autoreconf e dh-autoreconf

Para utilizar o dh-autoreconf, coloque-o no campo

Build-Depends no debian/control e ajuste o debian/rules. Assim:

Build-Depends: debhelper (>= 10), dh-autoreconf

%:

dh $@ --with autoreconf

Caso exista, remova as referências ao autotools-dev no

Build-Depends e --with autotools_dev no debian/rules.

Eriberto - Out 16

Mini Aula autotools

(18)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Arquivos gerados

É importante sabermos quais arquivos são gerados pelo

autotools, pois a sua licença permite não descrevermos esses arquivos no debian/copyright. São eles:

aclocal.m4 compile config.h config.h.in config.status configure configure.ac depcomp install-sh Makefile Makefile.am Makefile.in missing

Dependendo da estrutura do código do upstream, também

serão gerados:

config.guess config.rpath config.sub

Eriberto - Out 16

Mini Aula autotools

(19)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Arquivos gerados

Se o autotools também estiver provendo tradução i18n (isso

é feito via gettext, intltoolize etc.), também teremos:

ABOUT-NLS m4/* po/Makefile.in.in po/Makevars po/Makevars.template

Há uma relação desses arquivos em:

http://eriberto.pro.br/files/videoaulas/debian/autotools.txt

Caso você esteja interessado em aprender a fazer autotools

com tradução i18n, esse é um ótimo link:

http://ptomato.name/advanced-gtk-techniques/html/gettext-project.html

Veja também o código fonte do pacote axel.

Eriberto - Out 16

Mini Aula autotools

(20)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Antigamente...

Antigamente, o configure.ac se chamava configure.in e o

Makefile.am era Makefile.in.

Isso ainda funciona, mas vai gerar o seguinte lintian:

source: deprecated-configure-filename

Esse problema só poderá ser corrigido pelo upstream em

uma nova versão do programa, devendo o mesmo renomear os arquivos.

No Debian, não existia o dh-autoreconf. Então era utilizado o

autotools-dev, que não é tão eficiente.

Eriberto - Out 16

Mini Aula autotools

(21)

Empacotamento

Empacotamento

de Software no Debian

de Software no Debian

Conclusão

Ao detectar autotools no upstream, use dh-autoreconf.

Substitua o autotools-dev pelo dh-autoreconf.

Arquivos do autotools não precisam ser citados no

debian/copyright.

Eriberto - Out 16

Mini Aula autotools

Referências

Documentos relacionados

Art.7º - O Biólogo, como pessoa física ou como representante legal de pessoa jurídica prestadora de serviços em Biologia recusará emprego ou tarefa em substituição a

* Mestrando em Desenvolvimento Social na UCPel... Alguns negócios de Fernando Henrique Cardoso: a) - Empresas Telefônicas: O governo investiu 21 bilhões, em 2 anos e meio e após

A utilização do gráfico Manufacturing Critical-path Time (MCT) permitiu identificar que o estoque de produtos acabados seria a etapa foco de redução de lead time, com este fim,

Sendo assim, mantenha-se sempre atento ao que diz, a forma como diz as coisas em seu trabalho, como escreve seus e-mails, as mensagens que troca no apli- cativo com os

vou colocar meu nome à disposição para esta comissão porque eu pretendo concorrer

Os objetos mais próximos entre si são percebidos como grupos independentes dos mais distantes Na figura abaixo há quatro grupos sendo que os três grupos da direita ainda

Aos 28 dias de idade foi ensaiado um total de 68 blocos de concreto, sendo 17 para cada dosagem de concreto (10 blocos para a realização dos ensaios de resistência à compressão,

A história sobretudo, sem querer ofender, E a pintura, e a música, A música anda a resistir desde que nasceu, ora vai, ora vem, quer livrar-se da palavra, suponho que por inveja, mas