Come si patcha con un file .diff ?
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Come si patcha con un file .diff ?
allora faccio subito una premessa , il problema mi è nato su una NetBSD ma non essendoci forum di un certo livello sull'argomento , almeno a mia attuale conoscenza , e siccome la stessa utility è presente anche in ambito Linux , chiedo a voi come usarla .
allora io ho una Atheros 5007EG ( su un ASUS X50N ) , una scheda wifi che con i driver Atheros inclusi nel kernel non va e non è supportata ufficialmente , neanche dalla prossima FreeBSD 8 ( tanto per rimanere in ambito BSD ) a quanto pare ( HAL ritorna uno "status 13" ) , la stessa scheda è presente su un EEEPC e un tizio è riuscito a patchare qualcosa ... , diciamo che dal suo post non si evince molto , dice che ha un EEEPC 1000HA con la suddetta scheda e che la scheda wifi funziona perfettamente con NetBSD previa applicazione di questo file diff che patcha la distro ...
ok , adesso io ho un portatile diverso ma identico sistema operativo ( la patch andrebbe applicata su una NetBSD liscia ) , quante speranze ho di riciclare questa patch per il mio sistema ?
ftp://ftp.netbsd.org/pub/NetBSD/misc/mjf/ath_eee.diff
mi spiegate , anche velocemente , come fare ?
da quel poco che ho capito il comando prevede l'uso di 2 file , ma in realtà io ho solo la patch e non saprei neanche come usarla correttamente , considerato che non ho niente da perdere dato che appunto il mio sistema è fresco di installazione e potrei anche accettare di rifare tutto da 0 tanto ci metterei in più quei 5 minuti di installazione , mi azzardate qualche comando utile e qualche spiegazione ?
allora io ho una Atheros 5007EG ( su un ASUS X50N ) , una scheda wifi che con i driver Atheros inclusi nel kernel non va e non è supportata ufficialmente , neanche dalla prossima FreeBSD 8 ( tanto per rimanere in ambito BSD ) a quanto pare ( HAL ritorna uno "status 13" ) , la stessa scheda è presente su un EEEPC e un tizio è riuscito a patchare qualcosa ... , diciamo che dal suo post non si evince molto , dice che ha un EEEPC 1000HA con la suddetta scheda e che la scheda wifi funziona perfettamente con NetBSD previa applicazione di questo file diff che patcha la distro ...
ok , adesso io ho un portatile diverso ma identico sistema operativo ( la patch andrebbe applicata su una NetBSD liscia ) , quante speranze ho di riciclare questa patch per il mio sistema ?
ftp://ftp.netbsd.org/pub/NetBSD/misc/mjf/ath_eee.diff
mi spiegate , anche velocemente , come fare ?
da quel poco che ho capito il comando prevede l'uso di 2 file , ma in realtà io ho solo la patch e non saprei neanche come usarla correttamente , considerato che non ho niente da perdere dato che appunto il mio sistema è fresco di installazione e potrei anche accettare di rifare tutto da 0 tanto ci metterei in più quei 5 minuti di installazione , mi azzardate qualche comando utile e qualche spiegazione ?
- tigerwalk
- Linux 3.x

- Messaggi: 895
- Iscritto il: lun 25 feb 2008, 22:08
- Nome Cognome: Giuliano della Vecchia
- Slackware: 13.37-14.2
- Kernel: 3.10.17-tiger / 4.4.88-smp
- Desktop: kde4/xfce4
- Località: Napoli
Re: Come si patcha con un file .diff ?
genericamente, devi copiare il file.diff nella directory dei sorgenti da patchare, spostarti nella directory e dare:
patch -p1 < file.diff
patch -p1 < file.diff
Re: Come si patcha con un file .diff ?
quindi è plausibile che debba entrare nella directory con i sorgenti dei driver Atheros del kernel e ricompilare poi il kernel stesso ?tigerwalk ha scritto:genericamente, devi copiare il file.diff nella directory dei sorgenti da patchare, spostarti nella directory e dare:
patch -p1 < file.diff
- 414N
- Iper Master

- Messaggi: 2924
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 15.0
- Kernel: 5.15.19
- Desktop: KDE5
- Località: Bulagna
- Contatta:
Re: Come si patcha con un file .diff ?
Occhio che quello non mi sembra un file diff prodotto da diff, quanto un file diff prodotto da git-diff (o simile).
Quindi può darsi che patch non riesca ad applicarlo senza qualche modifica.
Si tratta poi di tranciare le righe "descrittive", tipo
Quindi può darsi che patch non riesca ad applicarlo senza qualche modifica.
Si tratta poi di tranciare le righe "descrittive", tipo
Codice: Seleziona tutto
Index: contrib/dev/ath/ah.h
===================================================================
RCS file: /cvsroot/src/sys/contrib/dev/ath/ah.h,v
retrieving revision 1.4
diff -u -r1.4 ah.h
Re: Come si patcha con un file .diff ?
ho provato a lanciare il comando414N ha scritto:Occhio che quello non mi sembra un file diff prodotto da diff, quanto un file diff prodotto da git-diff (o simile).
Quindi può darsi che patch non riesca ad applicarlo senza qualche modifica.
Si tratta poi di tranciare le righe "descrittive", tipoCodice: Seleziona tutto
Index: contrib/dev/ath/ah.h =================================================================== RCS file: /cvsroot/src/sys/contrib/dev/ath/ah.h,v retrieving revision 1.4 diff -u -r1.4 ah.h
Codice: Seleziona tutto
patch < ath_eee.diffcome capisco quali linee togliere per fare come dici te ?
- 414N
- Iper Master

- Messaggi: 2924
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 15.0
- Kernel: 5.15.19
- Desktop: KDE5
- Località: Bulagna
- Contatta:
Re: Come si patcha con un file .diff ?
Ti sei dimenticato di specificare la profondità del percorso dei file. Mi spiego meglio:freax ha scritto: ho provato a lanciare il comando
sia nella directory con i driver atheros nei sorgenti del kernel , sia nella home , mi viene chiesto a quali file applicare la patch ... bella domanda , come faccio a capirlo ?Codice: Seleziona tutto
patch < ath_eee.diff
come capisco quali linee togliere per fare come dici te ?
i file da modificare nei file diff sono specificati tramite un percorso che, a seconda delle esigenze (leggi "di dove sei te con la shell"), può essere tranciato a piacimento con l'opzione -pN, dove N è il numero di componenti del percorso da affettare a mo' di mortadella
Tocciando dal file incriminato:
Codice: Seleziona tutto
--- contrib/dev/ath/ah.h 5 Jun 2006 05:14:38 -0000 1.4
+++ contrib/dev/ath/ah.h 4 Jan 2008 13:02:58 -0000
Supponendo che tu sia in /usr/src/linux (so che sei su BSD, ma è per fare un esempio), specificando
Codice: Seleziona tutto
patch -p0 ... Se specifichi, invece,
Codice: Seleziona tutto
patch -p1 ... Per poter applicare una patch (di tipo diff), devi innanzitutto sapere dove si trovano i file interessati. Comincia a cercare il file ah.h e/o la directory ath (non so se su BSD sia disponibile il find che usiamo su Linux...) per capire dove dovrai piazzarti per applicare la patch.
Venendo al discorso delle righe "superflue", il problema è dovuto al fatto che il diff che è lì è un diff prodotto da CVS (mi correggo ora, non era git), che patch molto probabilmente non riuscirà a gestire (c'è della fuffa in più che non si aspetta).
Prova a vedere se riesci a trovare lo script Python nel pacchetto "Ethereal" del quale si parla in questa pagina creato proprio per convertire diff di cvs in diff "lisci".
