[RISOLTO] Correzione di un errore nel sorgente di GDAL per rendere possibile l'installazione dallo SB sulla current

Se avete problemi con l'installazione e la configurazione di Slackware64 postate qui. Non usate questo forum per argomenti che trattano la Slackware32 o generali... per quelli usate rispettivamente il forum Slackware e Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware64 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 Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o 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.
Rispondi
gian_d
Linux 2.x
Linux 2.x
Messaggi: 226
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 5.4.xx
Desktop: KDE 4.14.38
Località: Sardinia
Contatta:

[RISOLTO] Correzione di un errore nel sorgente di GDAL per rendere possibile l'installazione dallo SB sulla current

Messaggio da gian_d »

Non so se sia attinente agli argomenti del forum, ma avrei una segnalazione da fare a Ponce. Sto installando gqis e tutte le dipendenze dagli Slackbuild usando il repository dei SB per la current su GitHub, come suggerito dallo stesso Ponce.
La compilazione dei sorgenti di GDAL 2.2.4 ha dato però un errore causato da poppler, in quanto il codice di un file cpp è incompatibile con la nuova versione di poppler presente sulla current nella dichiarazione (credo) di una costante.
Cercando in rete ho trovato un contesto simile, ma non ricordo l'indirizzo, credo sia in un forum attinente a GDAL. Chi ha risposto al quesito ha detto che il bug è stato corretto nelle versioni successive (da GDAL 2.3.0)
Ho provato a installare la 2.3.0 modificando l'impostazione della versione nello SlackBuild, ma l'errore persisteva perché probabilmente lo SlackBuild va integrato con l'applicazione di una patch.

Detto questo, dal momento che non so come impostare una patch, ho aggirato l'ostacolo in modo poco ortodosso, scompattando l'archivio tar.xz dei sorgenti di GDAL 2.2.4 e modificando direttamente la riga specifica del codice del file incriminato. Poi ho ricreato il tar compresso con xz e ho rilanciato lo SlackBuild. È andato a buon fine! Peraltro ho integrato lo SB con la specifica --with-ecw=/usr/local \ per permettere la visualizzazione dei file in formato JPEG 2000 e nel formato proprietario ECW usando libecwj2 3.3, una vecchia libreria del 2006, l'ultima open source, che ancora è disponibile in un repository in rete.

Venendo al dunque, il file sorgente incriminato è pdfobject.cpp presente nell'archivio scompattato nel percorso gdal-2.2.4/frmts/pdf/.

Il sorgente va modificato sostituendo la riga 1058

Codice: Seleziona tutto

GooString* gooString = m_po->getString();
con la riga

Codice: Seleziona tutto

const GooString* gooString = m_po->getString();
Volendo si possono mantenere entrambe le righe in una condizione if per rendere la patch retrocompatibile con le vecchie versioni di poppler, ma non so fino a quale versione.

Questo è quanto, spero di essere stato chiaro.
Ultima modifica di gian_d il mar 9 apr 2019, 18:15, modificato 1 volta in totale.

Avatar utente
conraid
Staff
Staff
Messaggi: 13460
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Correzione di un errore nel sorgente di GDAL per rendere possibile l'installazione dallo SlackBuild sulla current

Messaggio da conraid »

Questo lo puoi fare in due modi:
1) con diff.
Metti i sorgenti in due directory diverse (per esempio a e b) e poi fai una cosa tipo

Codice: Seleziona tutto

# diff -Naupr a b > nome.patch
metti il file nome.patch dove c'è lo slackbuild e dentro lo slackbuild poi dai

Codice: Seleziona tutto

patch -p1 -i $CWD/nome.patch
2) con sed
Dentro lo slackbuild prima del configure, o quel che c'è, metti una cosa tipo

Codice: Seleziona tutto

sed '/gooString = m_po->getString/s/^GooString/const GooString/' -i pathfile/nomefile
ma controlla bene che l'ho scritta così di getto

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 2744
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 5.6.5
Desktop: lxde
Località: Pisa
Contatta:

Re: Correzione di un errore nel sorgente di GDAL per rendere possibile l'installazione dallo SlackBuild sulla current

Messaggio da ponce »

grazie mille della segnalazione, Giancarlo!

cercando un po' nel loro repository git ho trovato la patch che corregge la compatibilita' con la versione di poppler in current (ci sono pure quelle per le versioni superiori ed e' molto probabile che andranno applicate anche quelle presto).

https://github.com/OSGeo/gdal/commit/12 ... 41ea.patch

https://github.com/OSGeo/gdal/commits/m ... object.cpp

gian_d
Linux 2.x
Linux 2.x
Messaggi: 226
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 5.4.xx
Desktop: KDE 4.14.38
Località: Sardinia
Contatta:

Re: Correzione di un errore nel sorgente di GDAL per rendere possibile l'installazione dallo SlackBuild sulla current

Messaggio da gian_d »

@ ponce: sì il codice della patch è proprio quello, solo che io l'avevo trovato in un forum. Comunque l'importate è trovarla per chi si occupa degli aggiornamenti dello slackbuild
@ conraid: grazie per la dritta, mi servirà in futuro nel caso dovessi trovare problemi simili. Per adesso avevo già risolto a modo mio e l'importante è che abbia funzionato

Metto il [risolto] anche se in questo caso si trattava solo di una segnalazione

Rispondi