[Risolto] applicare patch

Se avete dubbi o domande sulla programmazione in generale, fatele qui
Rispondi
zorro62
Arciere
Messaggi: 320
Iscritto il: 26 aprile 2011, 18:07

[Risolto] applicare patch

Messaggio da zorro62 » 19 aprile 2017, 14:42

c'è qualche anima pia che mi spiega passo passo come si applica la patch indicata qui?

https://bugs.archlinux.org/task/53712
io di bash ne so molto poco!
grazie
Ultima modifica di zorro62 il 20 aprile 2017, 18:21, modificato 2 volte in totale.
archlinux-xfce,archlinux.mate

Avatar utente
TheSaint
Robin Hood
Messaggi: 7915
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: applicare patch

Messaggio da TheSaint » 19 aprile 2017, 23:07

Primo passo scaricare il sorgente di Thunar.
Secondo localizzare il nome del file da patchare.
Terzo studiare un momento come sono i comandi da dare a patch per eseguire la voluta modifica.
Ultimo, neanch' io ho mai avuto da eseguire comandi con patch :)
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

zorro62
Arciere
Messaggi: 320
Iscritto il: 26 aprile 2011, 18:07

Re: applicare patch

Messaggio da zorro62 » 20 aprile 2017, 13:13

il sorgente l'ho messo in abs, e ho dato :

Codice: Seleziona tutto

makepkg -o
ora vorrei capire cosa debbo fare con questo :

Codice: Seleziona tutto

From 702a853ae41c888b0888f95a74ea0b8fe9dbc5a6 Mon Sep 17 00:00:00 2001
From: Viktor Odintsev <zakhams@gmail.com>
Date: Thu, 13 Apr 2017 01:15:53 +0300
Subject: [PATCH] Deadlock fix

file_rename_mutex could remain locked due to the return statement
in function thunar_file_monitor.
---
 thunar/thunar-file.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index c7aae58a..53bebbcd 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -827,16 +827,16 @@ thunar_file_monitor (GFileMonitor     *monitor,
           else
               other_file = thunar_file_get (other_path, NULL);
 
-          if (other_file == NULL)
-              return;
-
-          /* notify the thumbnail cache that we can now also move the thumbnail */
-          thunar_file_move_thumbnail_cache_file (event_path, other_path);
+          if (other_file != NULL)
+            {
+              /* notify the thumbnail cache that we can now also move the thumbnail */
+              thunar_file_move_thumbnail_cache_file (event_path, other_path);
 
-          /* reload the containing target folder */
-          thunar_file_reload_parent (other_file);
+              /* reload the containing target folder */
+              thunar_file_reload_parent (other_file);
 
-          g_object_unref (other_file);
+              g_object_unref (other_file);
+            }
 
           G_UNLOCK (file_rename_mutex);
         }
-- 
2.12.2
se mi spieghi come debbo chiamare questo file e dove devo metterlo.
grazie
edit
il file da patciare si chiama thunar-file.c e dovrebbe essere questo:
https://pastebin.com/UmTQeRk2
archlinux-xfce,archlinux.mate

VenereNera
Little John
Messaggi: 945
Iscritto il: 20 dicembre 2012, 19:50

Re: applicare patch

Messaggio da VenereNera » 20 aprile 2017, 15:54

Salve,
Spero di non sbagliare perché è da molto che non uso abs. Percorro un po' gli step per orientarmi. :P
Se abs l' hai installato da poco, dovrebbe chiamarsi subversion, quindi nella tua $HOME dovresti avere la cartella .subversion.
- Aggiornato i repo aprendo il terminale e entrato in .subversion

Codice: Seleziona tutto

$ cd $HOME/.subversion
$ svn checkout --depth=empty svn://svn.archlinux.org/packages
$ svn checkout --depth=empty svn://svn.archlinux.org/community
Scaricato il build di thunar.

Codice: Seleziona tutto

$ cd packages
$ svn update thunar
Dovrebbe esserci la cartella ../packages dove all' interno dobrebbe esserci la cartella thunar, nella quale dovresti trovare la cartella trunk e repos.
Apri la trunk e troverai il file pkgbuild e sarà quello che in teoria si usa per creare il pacchetto.
Dentro repos dovrebbe esserci un pkgbuild per x86 e x86_64 e qui sono un po' spiazzata perché non so bene se usare quello in base alla propria architettura di sistema. In caso prova.

La patch che hai postato comincia da:

Codice: Seleziona tutto

diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
e termina con

Codice: Seleziona tutto

           G_UNLOCK (file_rename_mutex);
         }
Il resto son commenti, in pratica:

Codice: Seleziona tutto

diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index c7aae58a..53bebbcd 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -827,16 +827,16 @@ thunar_file_monitor (GFileMonitor     *monitor,
           else
               other_file = thunar_file_get (other_path, NULL);
 
-          if (other_file == NULL)
-              return;
-
-          /* notify the thumbnail cache that we can now also move the thumbnail */
-          thunar_file_move_thumbnail_cache_file (event_path, other_path);
+          if (other_file != NULL)
+            {
+              /* notify the thumbnail cache that we can now also move the thumbnail */
+              thunar_file_move_thumbnail_cache_file (event_path, other_path);
 
-          /* reload the containing target folder */
-          thunar_file_reload_parent (other_file);
+              /* reload the containing target folder */
+              thunar_file_reload_parent (other_file);
 
-          g_object_unref (other_file);
+              g_object_unref (other_file);
+            }
 
           G_UNLOCK (file_rename_mutex);
         }
La puoi salvare col nome-che-vuoi.patch
Ora con un editor apri il file ../thunar/trunk/pkgbuild, al suo interno individua le righe

Codice: Seleziona tutto

prepare() {
  cd "$srcdir/Thunar-$pkgver"
}
e inserisci il comando patch -p0 -i percorso-completo-del-file.patch, in pratica verrà così, esempio inventato:

Codice: Seleziona tutto

prepare() {
  cd "$srcdir/Thunar-$pkgver"
  patch -p0 -i /home/mio-utente/thunar1.patch
}
Salvi e chiudi l' editor, apri il terminale dentro ../trunk e lanci il comando per compilare.

Codice: Seleziona tutto

makepkg -s
A compilazione terminata dovresti avere il pacchetto da installare con pacman -U.
Se non ho sbagliato qualcosa, dovrebbe andare. :P

Bye ^_^

EDIT: Le info per il pkgbuild le ho reperite da qui.

zorro62
Arciere
Messaggi: 320
Iscritto il: 26 aprile 2011, 18:07

Re: applicare patch

Messaggio da zorro62 » 20 aprile 2017, 17:12

intanto ti ringrazio,non ho subversion,ma abs,comunque ho eseguito i passaggi,quando do makepkg -s,mi esce questo:

Codice: Seleziona tutto

mario ~/abs/thunar $ makepkg -s
==> Creazione del pacchetto: thunar 1.6.11-1 (gio 20 apr 2017, 17.09.23, CEST)
==> Controllo delle dipendenze durante l'avvio in corso...
==> Controllo delle dipendenze durante la compilazione in corso...
==> Download dei sorgenti in corso...
  -> È stato trovato Thunar-1.6.11.tar.bz2
==> Validazione di source file con sha256sums...
    Thunar-1.6.11.tar.bz2 ... Verificato
==> Estrazione dei sorgenti in corso...
  -> Estrazione di Thunar-1.6.11.tar.bz2 usando bsdtar in corso...
==> Avvio di prepare() in corso...
(Patch is indented 4 spaces.)
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|    diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
|    index c7aae58a..53bebbcd 100644
|    --- a/thunar/thunar-file.c
|    +++ b/thunar/thunar-file.c
--------------------------
File to patch: 
mi sapresti dire che debbo digitare?
grazie
edit
ho risolto,è bastato indicare il percorso del file da patchare
tante grazie a @venerenera
archlinux-xfce,archlinux.mate

VenereNera
Little John
Messaggi: 945
Iscritto il: 20 dicembre 2012, 19:50

Re: [Risolto] applicare patch

Messaggio da VenereNera » 20 aprile 2017, 18:57

Di nulla. ^_^
Stavo scrivendo che forse avevi lasciato quelle righe che io avevo chiamato ''commenti''.
Comunque ho provato perché non capivo bene e ho fatto così:
- Scaricato con $ abs extra/thunar;
- Creato nella mia home la cartella /abs;
- Copiato il pkgbuild in /abs con $ cp -r /var/abs/extra/thunar ~/abs;
- Apro il terminale $ cd ~/abs/thunar;
- Ci butto pure la patch in ~/abs/thunar;
- Apro il pkgbuild e inserisco il comando patch dove indicato nel post sopra e via, nessun problema e il pacchetto è stato creato con makepkg -s.

buh! :|

Adesso fai la prova del 9 secondo il topic in bugzilla?
1) Open a shell and run:
mkdir $HOME/test
cd $HOME/test
for i in 1 2 3 4 5; do touch 0$i.XXX.comment1.COMMENT2-YYY.log; done

2) Open thunar and navigate to $HOME/test ... you should see the 5 files we just created.

3) From the shell in step 1 run:
for i in .XXX .COMMENT2 .YYY; do rename "$i" "" *.log; done

On my system, this causes thunar to freeze as I described.
Bye ^_^

EDIT: Se thunar si blocca e bisogna killarlo, 90 su 100 è quella schifezza immonda di tumbler. :/

zorro62
Arciere
Messaggi: 320
Iscritto il: 26 aprile 2011, 18:07

Re: [Risolto] applicare patch

Messaggio da zorro62 » 20 aprile 2017, 19:17

fatto il test nessun crash,ma a te non ha chiesto il percorso della patch?io ho dovuto indicare il percorso di:

Codice: Seleziona tutto

~/abs/thunar/src/Thunar-1.6.11/thunar/thunar-file.c
se non ricordo male!
sto facendo la prova come l'hai fatta te!
boh non capisco come mai a te lo fa con:

Codice: Seleziona tutto

makepkg -s

e a me no! sig!
ho eseguito i tuoi comandi ma quando do:

Codice: Seleziona tutto

mario ~/abs/thunar $ makepkg -s
==> Creazione del pacchetto: thunar 1.6.11-1 (gio 20 apr 2017, 19.26.01, CEST)
==> Controllo delle dipendenze durante l'avvio in corso...
==> Controllo delle dipendenze durante la compilazione in corso...
==> Download dei sorgenti in corso...
  -> Download di Thunar-1.6.11.tar.bz2 in corso...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   340  100   340    0     0     60      0  0:00:05  0:00:05 --:--:--    82
100 1884k  100 1884k    0     0   114k      0  0:00:16  0:00:16 --:--:--  359k
==> Validazione di source file con sha256sums...
    Thunar-1.6.11.tar.bz2 ... Verificato
==> Estrazione dei sorgenti in corso...
  -> Estrazione di Thunar-1.6.11.tar.bz2 usando bsdtar in corso...
==> Avvio di prepare() in corso...
(Patch is indented 4 spaces.)
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|    diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
|    index c7aae58a..53bebbcd 100644
|    --- a/thunar/thunar-file.c
|    +++ b/thunar/thunar-file.c
--------------------------
File to patch: 
archlinux-xfce,archlinux.mate

VenereNera
Little John
Messaggi: 945
Iscritto il: 20 dicembre 2012, 19:50

Re: [Risolto] applicare patch

Messaggio da VenereNera » 20 aprile 2017, 21:44

No, nessun percorso file. Forse ho capito, se ricapita prova con patch -p1 < /nome/patch/completo.patch oppure patch -p1 -i /nome/patch/completo.patch.
In pratica -p0 cambia il nome del file da patchare. Non ci avevo pensato. :|
Dal man di patch.
-pnum or --strip=num
Strip the smallest prefix containing num leading slashes from each file name found in the patch file. A sequence of one or more adjacent slashes is counted as a single slash. This controls how file names found in the patch file are treated, in case you keep your files in a different directory than the person who sent out the patch. For example, supposing the file name in the patch file was

/u/howard/src/blurfl/blurfl.c

setting -p0 gives the entire file name unmodified, -p1 gives

u/howard/src/blurfl/blurfl.c

without the leading slash, -p4 gives

blurfl/blurfl.c

and not specifying -p at all just gives you blurfl.c. Whatever you end up with is looked for either in the current directory, or the directory specified by the -d option.

Rispondi