Gerando um gráfico de dependência de pacotes com o Buildroot

- por Sergio Prado

Categorias: Buildroot Tags:

Um dos papéis de uma ferramenta de build de sistema (build system) é conhecer as dependências entre os pacotes que serão usados para construir o sistema, e garantir que eles sejam processados na ordem correta.

E quando usamos uma ferramenta de build para gerar um sistema Linux, podemos ficar na dúvida dos motivos pelos quais um determinado pacote foi compilado e instalado na imagem final.

Para nos ajudar, o Buildroot possui uma funcionalidade que permite gerar um gráfico de dependência de pacotes.

Para isso, o Buildroot utiliza a ferramenta dot do projeto Graphviz, que pode ser instalada no Ubuntu com o comando abaixo:

$ sudo apt-get install graphviz

E então o gráfico de dependências pode ser gerado no Buildroot processando o target graph-depends:

$ make graph-depends

O gráfico estará disponível em output/graphs/graph-depends.pdf, e pode ser exibido com qualquer leitor de PDF:

$ evince output/graphs/graph-depends.pdf

graph-depends

Se o sistema gerado for muito grande, o gráfico de dependências poderá ficar complexo e difícil de ler.

Neste caso, você pode gerar o gráfico de dependência específico de um pacote processando o target <pkg>-graph-depends, substituindo <pkg> pelo pacote em questão. Exemplo para o openssh:

$ make openssh-graph-depends

O gráfico gerado estará em output/graphs/openssh-graph-depends.pdf:

$ evince output/graphs/openssh-graph-depends.pdf

openssh-graph-depends

O Buildroot também é capaz de gerar histogramas de tempo de build.

Para isso, é necessário instalar as bibliotecas python Matplotlib and Numpy:

$ sudo apt-get install python-matplotlib python-numpy

E então é só processar o target graph-build:

$ make graph-build

Alguns gráficos serão gerados em output/graphs/:

$ ls output/graphs
build.hist-build.pdf build.pie-packages.pdf graph-depends.pdf
build.hist-duration.pdf build.pie-steps.pdf openssh-graph-depends.dot
build.hist-name.pdf graph-depends.dot openssh-graph-depends.pdf

Um histograma do tempo de build de cada pacote, ordenado por ordem de compilação, estará disponível em build.hist-build.pdf:

$ evince output/graphs/build.hist-build.pdf

hist-build

Bacana, não?

Um abraço,

Sergio Prado

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.