[SOLVED] Errore di compilazione di ITK su 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 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

[SOLVED] Errore di compilazione di ITK su current

Messaggio da gian_d »

Segnalo per chiunque sia interessato un errore di compilazione del sorgente di Insight Toolkit 4.13.2 (ITK) e versioni inferiori, compreso lo slackbuild del repository di Ponce su GitHub.
L'errore ricorre nel caso si usi una versione di gcc >= 9.x (caso dell'attuale current) ed è dovuto ad un modulo di terze parti (VLN) i cui sorgenti fanno riferimento solo a compilatori della serie 8 o versioni inferiori.
La configurazione della compilazione non rileva incompatibilità, gcc 9 viene regolarmente identificato da CMake, infatti l'errore compare solo durante la compilazione del modulo (error: Dunno about this gcc).

Per risolvere il problema è sufficiente applicare nello slackbuild le patch di due file, riporto qui i codici:

Codice: Seleziona tutto

--- InsightToolkit-4.13.2/Modules/ThirdParty/VNL/src/vxl/vcl/tests/test_preprocessor.cxx	2019-02-28 17:45:49.000000000 +0100
+++ InsightToolkit-fix-4.13.2/Modules/ThirdParty/VNL/src/vxl/vcl/tests/test_preprocessor.cxx	2019-10-06 11:30:17.059498967 +0200
@@ -64,6 +64,23 @@
   ++minor_count;
 #endif
 
+#ifdef VCL_GCC_9
+  ++major_count;
+#endif
+#ifdef VCL_GCC_90
+  ++minor_count;
+#endif
+#ifdef VCL_GCC_91
+  ++minor_count;
+#endif
+#ifdef VCL_GCC_92
+  ++minor_count;
+#endif
+#ifdef VCL_GCC_93
+  ++minor_count;
+#endif
+
+
 #ifdef VCL_VC
   ++compiler_count;
 #endif
 
e

Codice: Seleziona tutto

--- InsightToolkit-4.13.2/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h	2019-02-28 17:45:49.000000000 +0100
+++ InsightToolkit-fix-4.13.2/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h	2019-10-06 12:13:42.135341958 +0200
@@ -97,6 +97,17 @@
 #  else
 #   define VCL_GCC_80
 #  endif
+# elif (__GNUC__==9)
+#  define VCL_GCC_9
+#  if (__GNUC_MINOR__ > 2 )
+#   define VCL_GCC_93
+#  elif (__GNUC_MINOR__ > 1 )
+#   define VCL_GCC_92
+#  elif (__GNUC_MINOR__ > 0 )
+#   define VCL_GCC_91
+#  else
+#   define VCL_GCC_90
+#  endif
 # else
 #  error "Dunno about this gcc"
 # endif

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

Re: [SOLVED] Errore di compilazione di ITK su current

Messaggio da ponce »

grazie Giancarlo!

dovrebbe bastare solo la seconda patch, l'ho trovata referenziata anche nella pull request del loro repository

https://github.com/InsightSoftwareConso ... K/pull/911

se mi mandi via pm il tuo indirizzo email ti metto come autore del commit col fix...

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: [SOLVED] Errore di compilazione di ITK su current

Messaggio da gian_d »

non so, io le ho messe contemporaneamente vedendo che in entrambi i file c'erano riferimenti alla versione del compilatore, quindi non ho verificato se siano entrambe necessarie. Le ho adattate da vecchie patch in circolazione che riguardavano problemi analoghi con precedenti versioni di gcc. A quanto pare il problema si ripropone ogni volta che viene rilasciato un upgrade di gcc.

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

Re: [SOLVED] Errore di compilazione di ITK su current

Messaggio da ponce »

quella ufficiale, datata 19 maggio, che e' nel loro repository per la versione 4.13.x (sara' inclusa nella 4.13.3 quando uscira') e' questa

https://github.com/InsightSoftwareConso ... lease-4.13

https://github.com/InsightSoftwareConso ... a966811ace

mi sembra identica alla seconda che hai postato: ti confermo che con quella e basta ITK compila su current.

non ti scordare di mandarmi l'indirizzo di email se vuoi che ti metta come autore del commit...

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: [SOLVED] Errore di compilazione di ITK su current

Messaggio da gian_d »

A seguito dell'upgrade di gcc alla versione 11.2.0 nella current si ripropone lo stesso problema per la compilazione di ITK 4.13.2. La patch del repository di Ponce non è più sufficiente perché aggiorna il sorgente del modulo VLN solo alla versione 10 di gcc.

La patch vcl_compiler_10.diff va pertanto sostituita da questa patch (io l'ho rinominata vcl_compiler_11.diff):

Codice: Seleziona tutto

--- InsightToolkit-4.13.2/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h	2019-02-28 17:45:49.000000000 +0100
+++ InsightToolkit-4.13.2-fix/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h	2021-08-16 20:40:00.000000000 +0100
@@ -97,6 +97,39 @@
 #  else
 #   define VCL_GCC_80
 #  endif
+# elif (__GNUC__==9)
+#  define VCL_GCC_9
+#  if (__GNUC_MINOR__ > 2 )
+#   define VCL_GCC_93
+#  elif (__GNUC_MINOR__ > 1 )
+#   define VCL_GCC_92
+#  elif (__GNUC_MINOR__ > 0 )
+#   define VCL_GCC_91
+#  else
+#   define VCL_GCC_90
+#  endif
+# elif (__GNUC__==10)
+#  define VCL_GCC_10
+#  if (__GNUC_MINOR__ > 2 )
+#   define VCL_GCC_103
+#  elif (__GNUC_MINOR__ > 1 )
+#   define VCL_GCC_102
+#  elif (__GNUC_MINOR__ > 0 )
+#   define VCL_GCC_101
+#  else
+#   define VCL_GCC_100
+#  endif
+# elif (__GNUC__==11)
+#  define VCL_GCC_11
+#  if (__GNUC_MINOR__ > 2 )
+#   define VCL_GCC_113
+#  elif (__GNUC_MINOR__ > 1 )
+#   define VCL_GCC_112
+#  elif (__GNUC_MINOR__ > 0 )
+#   define VCL_GCC_111
+#  else
+#   define VCL_GCC_110
+#  endif
 # else
 #  error "Dunno about this gcc"
 # endif

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: [SOLVED] Errore di compilazione di ITK su current

Messaggio da gian_d »

PS: la ricompilazione non dovrebbe essere necessaria per chi avesse già ITK installato, tuttavia ITK è una dipendenza di OTB (Orfeo Toolbox) che andrebbe ricompilato a seguito dell'upgrade del Boost alla versione 1.77. La ricompilazione di OTB pertanto viene interrotta proprio a causa dell'incompatibilità degli header di ITK con gcc 11

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

Re: [SOLVED] Errore di compilazione di ITK su current

Messaggio da ponce »

gian_d ha scritto:
lun 16 ago 2021, 20:48
A seguito dell'upgrade di gcc alla versione 11.2.0 nella current si ripropone lo stesso problema per la compilazione di ITK 4.13.2. La patch del repository di Ponce non è più sufficiente perché aggiorna il sorgente del modulo VLN solo alla versione 10 di gcc.

La patch vcl_compiler_10.diff va pertanto sostituita da questa patch (io l'ho rinominata vcl_compiler_11.diff):

Codice: Seleziona tutto

--- InsightToolkit-4.13.2/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h	2019-02-28 17:45:49.000000000 +0100
+++ InsightToolkit-4.13.2-fix/Modules/ThirdParty/VNL/src/vxl/vcl/vcl_compiler.h	2021-08-16 20:40:00.000000000 +0100
@@ -97,6 +97,39 @@
 #  else
 #   define VCL_GCC_80
 #  endif
+# elif (__GNUC__==9)
+#  define VCL_GCC_9
+#  if (__GNUC_MINOR__ > 2 )
+#   define VCL_GCC_93
+#  elif (__GNUC_MINOR__ > 1 )
+#   define VCL_GCC_92
+#  elif (__GNUC_MINOR__ > 0 )
+#   define VCL_GCC_91
+#  else
+#   define VCL_GCC_90
+#  endif
+# elif (__GNUC__==10)
+#  define VCL_GCC_10
+#  if (__GNUC_MINOR__ > 2 )
+#   define VCL_GCC_103
+#  elif (__GNUC_MINOR__ > 1 )
+#   define VCL_GCC_102
+#  elif (__GNUC_MINOR__ > 0 )
+#   define VCL_GCC_101
+#  else
+#   define VCL_GCC_100
+#  endif
+# elif (__GNUC__==11)
+#  define VCL_GCC_11
+#  if (__GNUC_MINOR__ > 2 )
+#   define VCL_GCC_113
+#  elif (__GNUC_MINOR__ > 1 )
+#   define VCL_GCC_112
+#  elif (__GNUC_MINOR__ > 0 )
+#   define VCL_GCC_111
+#  else
+#   define VCL_GCC_110
+#  endif
 # else
 #  error "Dunno about this gcc"
 # endif
l'ho aggiunto al mio branch su SBo, grazie!

https://git.slackbuilds.org/slackbuilds ... ce/updates

gian_d
Linux 3.x
Linux 3.x
Messaggi: 654
Iscritto il: mer 16 lug 2014, 17:35
Nome Cognome: Giancarlo Dessì
Slackware: 64 current
Kernel: 6.6.xx
Desktop: KDE 5.27
Località: Sardinia
Contatta:

Re: [SOLVED] Errore di compilazione di ITK su current

Messaggio da gian_d »

Grazie a te, figurati! Senza il tuo repository avrei una slackware a pedali.
A margine, chiedo scusa se uso il forum di slacky per questioni riguardanti gli slackbuild, ma trattandosi comunque di argomenti correlati alla slackware e, in particolare alla current, preferisco farlo qui invece che nella sezione dedicata di Linux Questions, ambiente che non mi è molto familiare.

Rispondi