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