Stampare variabili in configure file

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.

Un piccolo estratto da un bel… ./configure

la risposta è no.

da programma puoi leggere/scrivere/modificarre le variabili di una shell (man getenv/setenv)
da shell non puoi leggere le variabili di un programma.

Ciao Saso, che software è? ROOT?

Ciao Mario,

No e’ un software scritto apposta per fare data analisi di onde gravitazionali :slight_smile: :cin:
Tutto in C e python.
Se ti interessa dare un’occhiata, una parte di esso dovrebbe essere visibile agli outsiders.

S.

Fra l’altro ho risolto il problema, era la versione di sistema di libmetaio che dava problemi.
Ho passato la giornata giocando con pkg-config, esilarante.

Eh non c’ho abbastanza tempo per visionarlo :slight_smile: era per capire cosa poteva essere che non ti fungeva.
Ottimo che hai risolto!

ciao
Saso.

[quote=virus]ciao
Saso.[/quote]

Ciao Virus,

TI ho mandato i complimenti nella discussione per i 30x10^3 messaggi. :cin:

S.

grazie…