Em 24 de maio de 2010 11:51, Gustavo Franco <stra...@debian.org> escreveu:

> Opa,
>
> 2010/5/24 Anderson Goulart <ander...@goulart.info>:
> >
> > Em 24 de maio de 2010 10:06, Tiago Bortoletto Vaz <ti...@debian.org>
> > escreveu:
> >>
> >> Olá Anderson,
> >>
> >> On Mon, 24 May 2010 09:39:23 -0300, Anderson Goulart wrote
> >> > Ae pessoal,
> >> >
> >> > Há alguma forma de fazer uma geração de pacotes condicionais? Algo
> como
> >> > o
> >> %if / %endif do SPEC para o rpm?
> >> >
> >> > A necessidade é a seguinte, imagine que eu tenha em um control mais de
> >> > um
> >> package declarado. Mas alguns desses packages só serão gerados caso o
> host
> >> de
> >> build tiver alguns requisitos. Isso pq tenho vários hosts que fazem
> build
> >> do
> >> mesmo pacote e, em alguns casos, dependendo do host/plataforma, alguns
> >> .deb
> >> são gerados e outros não.
> >> >
> >> > Eu pensei em gerar um control.in e criar umas macros para isso, mas
> não
> >> achei a solução tão elegante. Alguém conhece uma outra forma?
>
> Quais outros critérios além de plataforma você tem? O que você quis
> dizer com host? Se fosse só plataforma, você poderia restringir
> utilizando o campo Architecture na declaração dos pacotes mesmo[0].
>
>
Não é só arquitetura, mas é uma delas. O que eu queria era montar um source
único que fosse capaz de compilar dependendo do que existe na máquina que
estou fazendo o build. Por exemplo:

Imagine que um certo source deb gere dois pacotes:

nome-main e nome-java

Mas o nome-java é uma geração condicional. Ele só deve ser gerado caso eu
tenha instalado na máquina de build o jdk, por exemplo. A idéia é quase que
fazer um debian/control capaz de gerar N pacotes, dependendo de alguma
variável de sistema, ou de algum parâmetro que eu especifique.

Ou seja, o número de pacotes gerados com o debuild depende do host (qual
arquitetura ele é, quais variáveis de ambiente estão configuradas, quais
pacotes estão instalados, etc), sempre com uma com uma opção default, que
gere ao menos 1 pacote com o mínimo de configuração.

Com o RPM eu crio alguns %ifs e consigo com o mesmo source e o mesmo spec
gerar o pacote para várias arquiteturas e várias distros (redhat, suse,
mandriva, etc). Uma das consequências disso que falei acima seria criar um
único source que gerasse pacotes para debian (stable, testing e sid) e para
ubuntu.

Meu cenário é o seguinte: eu tenho um monte de VM, cada qual com sua
configuração e distro instalada. E tenho um script de build que copia o
source (no caso atual, src.rpm) para cada VM e automaticamente roda-se o
rpmbuild. Como o SPEC é cheio de ifs, ele consegue reconhecer qual distro e
qual conf eu tenho em cada máquina de build, gerando um ou mais RPMs para
cada uma.



> Em outras palavras, se você só quer garantir que amd64 compila "coisas
> para amd64", é bem simples. Já se você precisa garantir que host foo
> compila pacote asd e xyz, mas bar só compila zxc e qwe -- tudo a
> partir de um mesmo fonte X. Quando você mandar o fonte X para outro
> canto que não seja foo e bar você vai ter um FTBFS para um `set' de
> pacotes ou outro. Presumo que era disso que o Tiago falava.
>
>
Imagino que era essa a idéia colocada por ele. Como parece que essas idéias
confrontam com a Policy, isso já foi discutido em algum momento, já que elas
poderiam reduzir o trabalho dos matenedores?


> >> Como esta é uma situação que confrontaria com a policy (pois de certa
> >> forma
> >> 'legitimaria' um FTBTS), eu penso que não há uma implementação no
> Debian,
> >> portanto a tua proposta na minha opinião é elegante o suficiente para
> algo
> >> extra-oficial.
> >>
> >
> > Só uma pergunta, o que é um FTBTS?
>
> FTBFS = Fail To Build From Source.
>
>

thanks!



Abraços, global

Responder a