Por algum motivo, o arquivo de correção deve ser inserido no programa de correção por redirecionamento, ou seja,
patch file
não funciona, mas
patch < file
funciona
Estou tentando aplicar um patch fornecido pelo projeto do seek-for-android para o código que baixei da Cyanogenmod. O código compilado com sucesso com make, então eu sei que todos os arquivos estão lá. Eu simplesmente não consigo obter qualquer visibilidade sobre o que o patch está fazendo ou se está funcionando. Eu tentei a opção -verbose. Não sei quanto tempo leva para o patch percorrer o diretório e procurar os arquivos para atualizar. Eu não vejo muita atividade na minha CPU. Aqui estão as instruções que estou seguindo: insira a descrição do link aqui Aqui está uma captura de tela de o que eu vejo:
root@ubuntu:~/android/system# ls
abi cm-11-2 docs Makefile sdk
android cm-11-3 external ndk smartcard-api-3_1_0
art cts frameworks out smartcard-api-3_1_0.tgz
bionic dalvik hardware packages system
bootable developers kernel pdk tools
build development libcore prebuilt vendor
cm-11 device libnativehelper prebuilts
root@ubuntu:~/android/system# cd smartcard-api-3_1_0
root@ubuntu:~/android/system/smartcard-api-3_1_0# cd ..
root@ubuntu:~/android/system# patch -p1 smartcard-api-3_1_0/smartcard-api.patch ^C
root@ubuntu:~/android/system# patch -p1 -R smartcard-api-3_1_0/smartcard- api.patch
^C
root@ubuntu:~/android/system# patch -p1 -verbose smartcard- api-3_1_0/smartcard-
api.patch
patch 2.6.1
Copyright (C) 1988 Larry Wall
Copyright (C) 2003, 2009 Free Software Foundation, Inc.
Acho que, em alguns casos, devo procurar o arquivo de destino? A saída abaixo parece dizer que um patch foi bem sucedido, enquanto o outro arquivo não foi encontrado? Eu acho que tenho que encontrar o arquivo de destino e especificá-lo? Por alguma razão, até mesmo um caminho completo não é reconhecido.
root@ubuntu:~/android/system# patch -p1 < smartcard-api-3_1_0/uicc.patch
patching file frameworks/base/telephony/java/com/android/internal/telephony /ITelephony.aidl
Hunk #1 FAILED at 304.
1 out of 1 hunk FAILED -- saving rejects to file frameworks/base/telephony /java/com/android/internal/telephony/ITelephony.aidl.rej
patching file frameworks/base/telephony/java/com/android/internal/telephony /RILConstants.java
Hunk #1 FAILED at 55.
Hunk #2 FAILED at 262.
2 out of 2 hunks FAILED -- saving rejects to file frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java.rej
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony /CommandException.java
Hunk #1 FAILED at 42.
Hunk #2 FAILED at 83.
2 out of 2 hunks FAILED -- saving rejects to file frameworks/opt/telephony /src/java/com/android/internal/telephony/CommandException.java.rej
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony /CommandsInterface.java
Hunk #1 succeeded at 1250 (offset 109 lines).
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony /IccCard.java
Hunk #1 FAILED at 214.
1 out of 1 hunk FAILED -- saving rejects to file frameworks/opt/telephony /src/java/com/android/internal/telephony/IccCard.java.rej
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony /RIL.java
Hunk #1 succeeded at 2592 (offset 253 lines).
Hunk #2 succeeded at 4109 (offset 467 lines).
Hunk #3 succeeded at 4619 (offset 543 lines).
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony/sip/SipCommandInterface.java
Hunk #1 FAILED at 536.
1 out of 1 hunk FAILED -- saving rejects to file frameworks/opt/telephony/src/java/com/android/internal/telephony/sip/SipCommandInterface.java.rej
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony /test/SimulatedCommands.java
Hunk #1 FAILED at 1655.
1 out of 1 hunk FAILED -- saving rejects to file frameworks/opt/telephony /src/java/com/android/internal/telephony/test/SimulatedCommands.java.rej
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/IccCardProxy.java
Hunk #1 succeeded at 844 (offset 102 lines).
patching file frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/UiccCardApplication.java
Hunk #1 FAILED at 44.
Hunk #2 succeeded at 437 (offset 100 lines).
Hunk #3 succeeded at 941 (offset 194 lines).
1 out of 3 hunks FAILED -- saving rejects to file frameworks/opt/telephony /src/java/com/android/internal/telephony/uicc/UiccCardApplication.java.rej
patching file frameworks/opt/telephony/tests/telephonytests/src/com/android /internal/telephony/gsm/UsimDataDownloadCommands.java
Hunk #1 succeeded at 651 with fuzz 2 (offset 21 lines).
can't find file to patch at input line 404
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
diff --git a/packages/apps/Phone/src/com/android/phone /PhoneInterfaceManager.java b/packages/apps/Phone/src/com/android/phone /PhoneInterfaceManager.java
|index 6600ae5..2ae6739 100644
|--- a/packages/apps/Phone/src/com/android/phone/PhoneInterfaceManager.java
|+++ b/packages/apps/Phone/src/com/android/phone/PhoneInterfaceManager.java
--------------------------
File to patch:
Uma solução muito fácil é colocar seus arquivos sob controle de versão antes de aplicar o patch. As ferramentas de controle de versão do dia são o Git e o Mercurial. Eu pessoalmente uso e recomendo o Mercurial.
Além disso, se você quiser ver a quais arquivos um patch se aplica, você pode executar
diffstat patchname
Exemplo de saída com o Mercurial:
apt-get source hello
cd hello-2.9
hello-2.9$ hg init
hello-2.9$ hg add
hello-2.9$ hg ci # brings up an editor - add a commit message
hello-2.9$ patch -p1 < debian/patches/99-config-guess-config-sub
patching file build-aux/config.guess
patching file build-aux/config.sub
hello-2.9$ hg st
M build-aux/config.guess
M build-aux/config.sub
hello-2.9$ hg diff # diff output
hello-2.9$ diffstat debian/patches/99-config-guess-config-sub
config.guess | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------
config.sub | 36 ++++++++++++++++++++----------------
2 files changed, 106 insertions(+), 79 deletions(-)
Você pode usar a opção -i
em vez de usar o redirecionamento definitivo:
$ patch -i /path/to/file.patch