Je reçois le message d'erreur suivant lors de l'exécution de make
et je ne sais absolument pas ce que cela signifie ni quoi faire. Quelqu'un peut-il m'éclairer ou me diriger dans la bonne direction?
(cd libdvdnav-git && patch -p1) < ../../contrib/src/dvdnav/dvdnav.patch
patching file Makefile.am
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.am.rej
make: *** [dvdnav] Error 1
J'essaie de compiler VLC pour Win32 (avec Linux).
C'est une erreur générée par patch
. Si vous ouvriez le .patch
fichier, vous verriez qu'il est organisé en plusieurs segments, appelés "mecs". Chaque bloc identifie des morceaux de code correspondants (par des numéros de ligne) dans l'ancienne et la nouvelle version, les différences entre ces morceaux de code et leurs similitudes (le "contexte").
Un morceau peut échouer si les similitudes d'un morceau ne correspondent pas à ce qui est dans le fichier d'origine. Lorsque vous voyez cette erreur, c'est presque toujours parce que vous utilisez un correctif pour la version incorrecte du code que vous corrigez. Il existe plusieurs façons de contourner ce problème:
libdvdnav
qui inclut déjà le correctif (meilleure option)..patch
fichier pour la version de libdvdnav
que vous corrigez.libdvdnav
et corrigez-les conformément aux instructions du correctif.libdvdnav
qui est plus proche de la version de la .patch
fichier était destiné à (probablement une mauvaise idée).Conseils de débogage
markus@ubuntu:~$ patch -Np1 --ignore-whitespace -d software-1.0 < fix-bug.patch
voir tutoriel de markusDans certains cas, il n'y a aucune différence dans les versions de fichier, mais uniquement dans l'indentation, l'espacement, les fins de ligne ou les numéros de ligne.
Pour patcher malgré ces différences, il est possible d’utiliser les deux arguments suivants :
- ignore-whitespace: Il ignore les différences d'espaces (indentation, etc.).
- fuzz 3: l'option "--fuzz [~ # ~] x [~ # ~]" définit le facteur de fuzz maximum sur les lignes. Cette option ne s'applique qu'aux différences contextuelles et unifiées. il ignore jusqu'à [~ # ~] x [~ # ~] lignes lors de la recherche de l'emplacement où installer un morceau. Notez qu'un facteur fuzz plus élevé augmente les chances de créer un patch défectueux. Le facteur de fuzz par défaut est 2; il n'y a aucun intérêt à le fixer à plus que le nombre de lignes de contexte dans le diff, généralement 3.
N'oubliez pas l'utilisateur "--dry-run": il va essayer le patch sans l'appliquer.
Exemple :
patch --verbose --dry-run --ignore-whitespace --fuzz 3 < /path/to/patch.patch
Plus d'informations sur Fuzz:
https://www.gnu.org/software/diffutils/manual/html_node/Inexact.html
Suivez les instructions ici , cela a résolu mon problème.
vous devez exécuter la commande comme suit; patch -p0 --dry-run <chemin/vers/votre/patchFile/yourPatch.patch