Este é um miniguia de comandos usados para enviar um patch para o código fonte do kernel Linux.
Navegue até o diretório do repositório contendo o kernel do linux para o qual você fez alterações:
Por exemplo
cd ~/linux-iio/iio/
Neste diretório estarão subdiretórios importantes como arch
, drivers
, scripts
, entre outros.
Utilize uma ferramenta para verificar o estilo do seu código e conferir se as suas alterações respeitam o kernel coding style.
Opção número 1) Instale o KWorkflow e utilize o seu codestyle:
kw codestyle <arquivo que você alterou>
Exemplo:
kw codestyle drivers/staging/iio/impedance-analyzer/ad5933.c
Opção número 2) Use ferramentas já presentes no kernel:
perl scripts/checkpatch.pl --terse --no-tree --color=always -strict --file <camiho do arquivo>
Exemplo:
perl scripts/checkpatch.pl --terse --no-tree --color=always -strict --file drivers/staging/iio/impedance-analyzer/ad5933.c
Tenha certeza de que as suas alterações compilam antes de enviar seu código para revisão da comunidade. Para isso use o Makefile na raiz do kernel.
make M=<diretório que contém os arquivos que você alterou> clean
make M=<diretório que contém os arquivos que você alterou>
Exemplo:
make M=drivers/staging/iio/impedance-analyzer clean
make M=drivers/staging/iio/impedance-analyzer
Também é recomendado instalar o kernel modificado em uma máquina virtual e iniciá-la (dar boot) mas isso é assunto para um outro post.
Revise as coisas que você fez com git diff.
git diff <arquivo que você alterou>
Exemplo:
git diff drivers/staging/iio/impedance-analyzer/ad5933.c
Adicione o arquivo com as alterações feitas aos arquivos marcados para commit.
git add <arquivo que você alterou>
Exemplo:
git add drivers/staging/iio/impedance-analyzer/ad5933.c
Faça um commit.
git commit -s -v
Escreva o título e mensagem de commit descrevendo quais alterações você fez e por que. Este post explica como escrever boas mensagens de commit.
Obtenha a lista de revisores para os quais você deve enviar o e-mail com as suas modificações.
Opção 1)
kw m <caminho do arquivo>
Exemplo:
kw m drivers/staging/iio/impedance-analyzer/ad5933.c
Opção 2)
perl scripts/get_maintainer.pl <caminho do arquivo>
Exemplo:
perl scripts/get_maintainer.pl drivers/staging/iio/impedance-analyzer/ad5933.c
Obtenha o hash o commit anterior ao commit que você fez
git log
Utilize o git format-patch
para criar o e-mail que você mandará para a lista a lista de e-mails do subsistema em que está trabalhando e responsáveis pelos arquivos modificados. Substitua os e-mails após --to
pelos e-mails obtidos dos mantenedores do(s) arquivos que você alterou. No final coloque o hash do commit anterior ao commit das suas alterações.
git format-patch -o <local onde salvar o patch> --to="mandenedor1@dominio.com,mantenedor2@dominio2.org,mantenedorN@outrodominio.org" --cc="listadeemail1@dominio.org,listadeemail2@dominio.org,listadeemailN@outro.org" <hash do último commit antes do seu>
Exemplo:
git format-patch -o ~/ --to="mandenedor1@dominio.com,mantenedor2@dominio2.org,mantenedorN@outrodominio.org" --cc="listadeemail1@dominio.org,listadeemail2@dominio.org,listadeemailN@outro.org" e27aea341e1739b0f784e4656ed1c57d057dd8b3
Navegue até o local onde você salvou o seu pacth.
Exemplo:
cd ~/
Você pode abrir o seu patch com um editor de texto e confirir novamente as alterações feitas e endereços de e-mail.
Exemplo:
vim ~/0001-staging-iio-ad5933-replaced-kfifo-by-triggered_buffer.patch
Se tudo estiver certo você pode mandar o seu patch para os mantenedores utilizando o cliente de e-mail neomutt.
neomutt -H <arquivo com o seu patch>
Exemplo:
neomutt -H 0001-staging-iio-ad5933-replaced-kfifo-by-triggered_buffer.patch
Pronto, o patch com suas alterações foi enviado para os mantenedores para que eles possam revisar o seu código e talvez incluí-lo ao restante do código do kernel linux.