Gerando um gráfico de dependência de pacotes com o Buildroot
- por Sergio Prado
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 |
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 |
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 |
Bacana, não?
Um abraço,
Sergio Prado