Pagina 1 di 1

[SOLVED] Errore di compilazione di ITK su current

Inviato: dom 6 ott 2019, 13:34
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

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

Inviato: dom 6 ott 2019, 19:12
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...

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

Inviato: dom 6 ott 2019, 20:01
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.

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

Inviato: dom 6 ott 2019, 20:24
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...

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

Inviato: lun 16 ago 2021, 20:48
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

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

Inviato: lun 16 ago 2021, 20:52
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

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

Inviato: mar 17 ago 2021, 11:22
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

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

Inviato: mer 18 ago 2021, 10:03
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.