aplicar patch quando perguntado 'Arquivo para corrigir', o que devo fazer?

0

Eu tenho um problema de congelamento do sistema e encontrei esta discusão no github, um deles sugere adicionar 5 patches:

Quandoeudigito:

patchp1<0001-PM-autocomplet.patch

PerguntouFiletopatch,nãoseioquepreencher.Comopossoprocedereaplicaressespatches?

    
por buzhidao 02.09.2016 / 17:54

1 resposta

4

Para aplicar um patch deste formulário:

diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
index 0f65d36..ff59753 100644
--- a/include/linux/pm_qos.h

com patch -p1 , várias condições precisam ser atendidas.

  1. Você precisa estar no diretório de nível superior de uma árvore de origem do kernel. A opção -p1 removerá um componente do caminho dos nomes dos arquivos, de modo que a/include/linux/pm_qos.h será tratado como include/linux/pm_qos.h . Este é um caminho relativo que deve ser resolvido a partir do seu diretório de trabalho atual.

  2. O arquivo include/linux/pm_qos.h deve existir na versão do kernel que você está tentando corrigir.

Se 1 e 2 não forem atendidos, patch não encontrará o arquivo a ser aplicado e solicitará interativamente que você forneça o nome do caminho.

Então, é claro:

  1. O arquivo include/linux/pm_qos.h precisa ser "suficientemente semelhante" àquele do qual o patch foi produzido, caso contrário, o patch não será aplicado.

As mesmas observações aplicam-se separadamente a todos os outros arquivos mencionados no patch.

Se você está tentando corrigir uma versão diferente do kernel daquela em que o patch foi produzido, temo que você esteja "na sua cabeça"; isso requer algum nível de entendimento do desenvolvimento do kernel (dependendo de quão complexos são os ajustes requeridos no patch para que ele seja aplicado).

Às vezes, descobrimos que os arquivos do kernel acabaram de ser renomeados; um patch será aplicado de forma bastante clara se os arquivos mencionados nele forem renomeados para os novos nomes. No extremo oposto, nos piores casos, você tem que realmente entender o que o patch está fazendo (possivelmente observando o kernel original onde ele foi feito), e então implementar a mesma lógica do zero no kernel de destino. Em casos de "dificuldade intermediária", você só precisa lidar com problemas como nomes de variáveis, nomes de funções e nomes de membros de struct renomeados; o patch será aplicado se apenas seguir novos nomes.

    
por 02.09.2016 / 18:12