Criando pacotes customizados no buildroot


{getToc} $title={Índice}

Introdução

O presente artigo tem como finalidade mostrar brevemente como se manipula e cria um pacote customizado no buildroot.

Para a elaboração do tutorial foi utilizado a branch master do repositório oficial.

Obtendo o buildroot

A primeira etapa é fazer um clone do projeto, para isso utilize o comando 

```terminal
git clone git@github.com:buildroot/buildroot.git
```

Criando um pacote

Após o projeto ser clonado, iremos criar o nosso pacote de teste no diretório package.

```terminal
cd buildroot/package
```

o diretório package contem todos os pacotes disponiveis no sistema, após entrarmos no diretório, criaremos a pasta do nosso pacote.

```terminal
mkdir pack-test 
cd pack-test 
```

Os pacotes podem conter os seguintes arquivos:

  • Arquivo de configuração Config.in
  • Arquivo de instruções de compilação makefile pack-test.mk
  • Arquivos de patch git
  • Arquivo de licença
  • Entre outros
A ideia do artigo é criar um pacote basico, em posts futuros será abordado todos os arquivos. Para a criação do pacote, é obrigatório o uso dos arquivos Config.in e pack-test.mk, utilize os comandos a seguir para cria-los.

```terminal
touch pack-test.mk
touch Config.in
```

Config.in

Para que o pacote seja exibido na ferramenta de configuração, você precisa criar um arquivo Config em seu diretório de pacotes. Existem dois tipos: Config.ine Config.in.host, no exemplo criaremos apenas o arquivo Config.in

```terminal
config BR2_PACKAGE_PACK_TEST
bool "habilitar o teste"
help
Esse pacote de teste gera um script "pkg_test" que apresentar uma mensagem no terminal
```
Agora, devemos especificar ao arquivo de configuração geral, onde se localiza nosso pacote, para isso devemos editar o arquivo Config.in localizado no diretório package.

```terminal
cd buildroot/package
```
Adicione o trecho de codigo a seguir ao final do arquivo.

```terminal
menu "Test Package"
source "package/pack-test/Config.in"
endmenu
```

O print a seguir apresenta a localização do menu de teste, seu arquivo deve estar igual ao da imagem, se atente aos endmenu.



Após editar validaremos se o menu foi criado corretamente.

```terminal
cd ...
make menuconfig
```

Entre em Target packages.


A utima opção é a que criamos, Test Package. Ao entrar nela note que temos um checkbox, resultante do tipo bool, do arquivo Config.in do pacote.

Precionando a tecla ? será apresentado a mensagem de help que escrevemos, assim como localização, status e o tipo de configuração.


pack-test.mk

Esse arquivo descreve como o pacote deve ser baixado, configurado, construído, instalado, etc.

Dependendo do tipo de pacote, o arquivo makefile deve ser escrito de forma diferente, usando diferentes infraestruturas, no nosso exemplo utilizaremos o tipo genérico.

Note que o nome do arquivo make deve ser igual ao nome da pasta isso é uma regra, caso o nome esteja diferente  acarretará em erro na compilação.

```terminal
################################################################################
#
# pack-test.mk
#
################################################################################

PACK_TEST_VERSION = cf41a92
PACK_TEST_SITE = git@github.com:EmbeddedLima/pack-example-buildroot.git
PACK_TEST_SITE_METHOD = git
PACK_TEST_LICENSE_FILES = LICENSE
PACK_TEST_LICENSE = Apache V2.0

define PACK_TEST_INSTALL_TARGET_CMDS
$(INSTALL) -m 0755 -D $(@D)/pkg_test.sh $(TARGET_DIR)/usr/bin/
endef

$(eval $(generic-package))
```
Algumas observações sobre o arquivo:
  • Especificamos qual site a aplicação se encontra.
  • Qual o método, no nosso caso git
  • É especificado o tipo de licença (opcional)

O nosso exemplo é básico, não possui a etapa de compilação, note que temos apenas o comando de instalação, onde @D é o diretório do repositório git clonado, e TARGET_DIR é o diretório root que será encapsulado em uma imagem.

A linha eval especifica o tipo de pacote desenvolvido, como falado anteriormente, utilizaremos um pacote genérico.

Compilação

Para compilar o pacote basta utilizar o comando make NOME_DO_PACOTE no diretório raiz do buildroot.

Antes de realizar o procedimento, certifique que o projeto esteja compilado para alguma configuração do diretório configs.

```terminal
make pack-test 
```
Antes de compilar o exemplo, certifique-se que seu computador, está conseguindo clonar repositórios do git via ssh, se for o caso cadastre uma nova chave no git.

Após a compilação o pacote será instalado no diretório especificado no arquivo makefile.

```terminal
ls buildroot/output/target/usr/bin
```

Conclusão

A ideia do post é apresentar de forma simples a criação de pacotes. Em publicações futuras da serie de criação de pacotes, o blog apresentara com mais detalhes os arquivos Config.in e makefile.

Refêrencias



Bruno Lima

Engenheiro de computação atuando em desenvolvimento de sistemas embarcados (Firmware) com microcontroladores e processadores (Linux Embarcado). Contribuidor de projetos públicos e fóruns de c/c++. linkedin github

Postar um comentário

Deixe seu comentário ou sua sugestão!

Postagem Anterior Próxima Postagem

Formulário de contato