Ciao a tutti
Ho un problema simpatico, e sono certo che qua in forum ci sono delle persone che sanno aiutarmi.
Per lavoro, devo installare un programma abbastanza lungo e complicato (>20.000 files) che e’ stato sviluppato da fisici+informatici.
Uno dei sottoprogrammi ha queste linee (fra le altre 30.000!) nel configure file:
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether MyMetaIO headers match the library" >&5
$as_echo_n "checking whether MyMetaIO headers match the library... " >&6; }
lib_structure=`echo MyMetaIO | sed 's/My/pal/'`Info
header_structure=`echo MyMetaIO | sed 's/My/pal/'`HeaderInfo
if test "$cross_compiling" = yes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <string.h>
#include <stdlib.h>
#include <lal/MyMetaIOInfo.h>
int main(void) {exit(MyInfoCompare(&$lib_structure, &$header_structure) ? 1 : 0); }
_ACEOF
if ac_fn_cxx_try_run "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
as_fn_error $? "Your MyMetaIO headers do not match your
library. Check config.log for details.
Ora, il configure mi fallisce andando a finire nell’else finale. Se ho capito bene questo e’ perche’ questa chiamata MyInfoCompare(&$lib_structure, &$header_structure) ritorna 1.
Quello che mi piacerebbe, per cui mi serve aiuto, e’ stampare, mentre configure viene eseguito, i path delle due variabili che lui sta provando a confrontare, trovandole diverse.
La funzione MyInfoCompare non fa altro che andare in tutti i campi delle due strutture che si passano come argomenti, e usando strcmp (il tutto e’ in C).
Questa e’ una versione alterata della funzione (ho dovuto cambiare un po’ di nomi anche prima visto che probabilmente non sono autorizzato a divulgare questa roba all’esterno)
int MyInfoCompare(const MyInfo *header, const MyInfo *library)
{
/* check for header/library mismatch */
if (strcmp(header->name, library->name) || \
strcmp(header->version, library->version))
{
/* version mismatch */
return 1;
}
return 0;
}
C’e’ un modo per stampare il campo “name” delle due variabili (o anche il campo version) direttamente dal config, senza modificare la funzione MyInfoCompare??
Grazie
S.