A ferramenta devtool do Yocto Project

- por Sergio Prado

Categorias: Yocto Project Tags: ,

A ferramenta devtool foi criada para que o desenvolvedor de aplicações pudesse integrar mais facilmente a sua aplicação na distribuição criada pelo Yocto Project, sem que precise conhecer em detalhes a sintaxe do BitBake e do sistema de build. Ela automatiza o processo de criação de receitas, compilação da aplicação e instalação no target, facilitando bastante a vida do desenvolvedor.

devtool

Por exemplo, dado o código-fonte de uma aplicação chamada app, os três comandos abaixo irão criar uma receita para a aplicação, compilar e instalar a aplicação no target:

$ devtool add app /path/to/app/source
$ devtool build app
$ devtool deploy-target app root@device_ip

Simples assim!

Vamos estudar mais detalhadamente como esta ferramenta funciona.

EXEMPLO 1: PROGRAMA SIMPLES EM C

Dado um simples programa em C:

$ vim /home/sprado/apps/apptest/apptest.c
#include <stdio.h>
 
int main(int argc, const char *argv[])
{
    printf("Aplicação de Teste V1.0\n");
 
    return 0;
}

O comando “devtool add” é capaz de criar um esqueleto de receita para este programa:

$ devtool add apptest /home/sprado/apps/apptest

Primeiro, o comando irá criar uma camada chamada “workspace” no diretório de build do Yocto Project:

$ tree workspace/
workspace/
├── appends
│   └── apptest.bbappend
├── conf
│   └── layer.conf
├── README
└── recipes
    └── apptest
        └── apptest.bb

Esta camada será adicionada automaticamente no bblayers.conf, e dentro dela serão criados todos os arquivos de trabalho da ferramenta, incluindo código-fonte, patches, receitas e arquivos de append.

Esta é a receita criada pela ferramenta devtool para a aplicação de teste:

$ cat workspace/recipes/apptest/apptest.bb
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)
 
# Unable to find any files that looked like license statements. Check the accompanying
# documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly.
#
# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if
# this is not accurate with respect to the licensing of the software being built (it
# will not be in most cases) you must specify the correct value before using this
# recipe for anything other than initial testing/development!
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""
 
# No information for SRC_URI yet (only an external source tree was specified)
SRC_URI = ""
 
# NOTE: no Makefile found, unable to determine what needs to be done
 
do_configure () {
	# Specify any needed configure commands here
	:
}
 
do_compile () {
	# Specify compilation commands here
	:
}
 
do_install () {
	# Specify install commands here
	:
}

Perceba que, como a aplicação de teste não tem um Makefile e não é baseada em nenhum sistema de build de aplicações como o autotools, a ferramenta devtool criou apenas um esqueleto da receita, que precisa de adaptações.

Podemos utilizar o comando “devtool edit-recipe” para adaptar a receita, que irá abrir o código-fonte da receita com o editor de textos padrão do terminal, que pode ser alterado através da variável de ambiente EDITOR.

$ devtool edit-recipe apptest

Para testar, apaguei todos os comentários e implementei as tarefas do_compile() e do_install():

LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""
 
# No information for SRC_URI yet (only an external source tree was specified)
SRC_URI = ""
 
do_compile () {
        ${CC} apptest.c -o apptest
}
 
do_install () {
        install -d ${D}${bindir}
        install -m 0755 apptest ${D}${bindir}
}

Com o comando “build apptest” podemos processar a receita e compilar a aplicação:

$ devtool build apptest

E o comando “devtool deploy-target” possibilita instalar a aplicação no target (via SSH) para testá-la:

$ devtool deploy-target apptest root@192.168.7.2

EXEMPLO 2: AUTOTOOLS

Como outro exemplo, podemos facilmente criar uma receita para a aplicação bc (baseada em autotools), processá-la e instalar no target com os comandos abaixo:

$ devtool add bc https://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz
$ devtool build bc
$ devtool deploy-target bc root@192.168.7.2

Fácil, não?

A ferramenta devtool é bem interessante e pode nos ajudar bastante no processo de criação de receitas, desenvolvimento e testes de aplicações. Mais informações sobre ela estão disponíveis no manual de desenvolvimento do Yocto Project.

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.