Newsgroup: it.comp.os.linux.debian
Titolo: Errore compilazione netsukuku

Salve a tutti,
sto cercando di compilare netsukuku 0.0.9 con debian etch, ma sia che
utilizzi make, sia che utilizzi scons ho sempre gli stessi errori.
Vi posto la breve procedura, dalla configurazione al make.
Configurazione:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for unistd.h... (cached) yes
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking openssl/crypto.h usability... yes
checking openssl/crypto.h presence... yes
checking for openssl/crypto.h... yes
checking gmp.h usability... yes
checking gmp.h presence... yes
checking for gmp.h... yes
checking OS... linux
checking Netsukuku kernel interface method... netlink
checking interface looking up method... netlink
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/man/Makefile
config.status: creating src/scripts/Makefile
config.status: creating src/conf/Makefile
config.status: creating src/conf/netsukuku.conf
config.status: creating src/config.h
config.status: src/config.h is unchanged
config.status: executing depfiles commands
Make:
Making all in src
make[1]: Entering directory `/home/paride/src/netsukuku-0.0.9b/src'
make  all-recursive
make[2]: Entering directory `/home/paride/src/netsukuku-0.0.9b/src'
Making all in man
make[3]: Entering directory `/home/paride/src/netsukuku-0.0.9b/src/man'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src/man'
Making all in scripts
make[3]: Entering directory
`/home/paride/src/netsukuku-0.0.9b/src/scripts'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory
`/home/paride/src/netsukuku-0.0.9b/src/scripts'
Making all in conf
make[3]: Entering directory `/home/paride/src/netsukuku-0.0.9b/src/conf'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src/conf'
make[3]: Entering directory `/home/paride/src/netsukuku-0.0.9b/src'
if gcc -DHAVE_CONFIG_H -I. -I. -I.    -g -I.  -I -g -O2 -MT accept.o -MD
-MP -MF ".deps/accept.Tpo" -c -o accept.o accept.c; \
        then mv -f ".deps/accept.Tpo" ".deps/accept.Po"; else rm -f
".deps/accept.Tpo"; exit 1; fi
make[3]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src'
make[2]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src'
make[1]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src'
In file included from /usr/include/asm/bitops.h:8,
                 from includes.h:31,
                 from accept.c:29:
/usr/include/asm-i486/bitops.h:244: error: expected ‘=’, ‘,’, ‘;’, ‘asm’
or
/‘__attribute__’ before ‘int’
make[3]: *** [accept.o] Error 1
make[3]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/paride/src/netsukuku-0.0.9b/src'
make: *** [all-recursive] Error 1
Come posso risolvere il problema?

 Come posso risolvere il problema?
a seconda del kernel che usi, il problema e':
i) aggirabile con le envvars prima di configure
ii) irritante
iii) irrisolvibile
che kernel usi ? :P
se usi una stable, prova a ridecomprimerlo dopo aver installato gli 
headers specifici e poi
CPPFLAGS="-I/usr/src/`uname -r`/include" ./configure
o smanetti del genere, a me col 2.6.22 per mancanza di alcuni headers non 
funge a meno di una pesante patch che non so/non voglio fare :P
ciao,
--
oggei

 oggei
Provo a reinstallare gli header altrimenti parto con il suo originale e
poi ti faccio sapere.
Paride

 Come posso risolvere il problema?
Ciao :)
Credevo di aver mandato risposta a questo messaggio, ma non lo vedo in
cache quindi me lo sono sognato... :)
Tanto per compilare, basta modificare /usr/include/asm-i486/bitops.h alla
riga 244 come indicato dall'errore.
Devi mettere "inline" anziché "__always_inline" e compilerà.
/usr/include/asm-i486/bitops.h fa parte di "linux-kernel-headers" e
metterci mano è male.
Anche nel kernel 2.6.22 (preso da 
kernel.org
) vedo che bitopts.h contiene 
sempre la keyword __always_inline quindi nel Makefile di netsukuku da
qualche parte c'è qualcosa che disabilità delle funzionalità di GCC che
gli impediscono di interpretare quell'attributo.
Bisognerebbe fare un bugreport a netsukuku per segnalare il problema...
Ad ogni modo, fatta questa modifica, per compilare compila.
Se funziona però non te lo so dire, mi manca tempo per provarlo.
ciao!
gl

g...@decadence.it
 ha scritto:

Provo a faree un bud report a netsukuku, perche' non mi funziona bene :-(
Grazie.

 
Scusa ma CPPFLAGS e' una variabile di ambiente?
Ovvero debbo fare export CPPFLAGS....... ?
Paride

Paride Desimone ha scritto:

Vi posto la risoluzione del problema, arrivatami direttamente da un
membro di fraknet, nel caso interessi qualcuno:
togliere #include <asm/bitops.h> da src/includes.h
in inet.h aggiungere proprio all'inizio di inet.h:
#include "asm/types.h"
#include "sys/types.h"
#include "arpa/inet.h"
Paride