Toon posts:

[Perl] Building with threading support

Pagina: 1
Acties:

Verwijderd

Topicstarter
Momenteel staat er een perl-5.8.0 op mijn systeem zonder threading support wat het bouwen van bepaalde apps toch moeilijk maakt. Om die reden probeer ik nu perl-5.8.5 met ithread support te installeren op mijn LFS-5.0 systeem, maar het build process faalt als ik threading support inschakel.

De configure regel die ik gebruik:
code:
1
sh Configure -Dprefix=/usr -Dusethreads -de


Ergens tijdens de configure geeft het (onder andere) dit weer:
code:
1
2
3
4
5
6
sethostent_r() found.
sethostent_r() prototype NOT found.

*** WHOA THERE!!! ***
    The previous value for $d_sethostent_r_proto on this machine was "define"!
    Keep the previous value? [y]


Tijdens het build proces gaar het dan ook fout, het blijkt dat bepaalde reentrant function prototypes niet gevonden kunnen worden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pp_sys.c: In function `Perl_pp_shostent':
pp_sys.c:5054: warning: implicit declaration of function `sethostent_r'
pp_sys.c:5054: error: structure has no member named `_hostent_data'
pp_sys.c: In function `Perl_pp_sprotoent':
pp_sys.c:5076: warning: implicit declaration of function `setprotoent_r'
pp_sys.c:5076: error: structure has no member named `_protoent_data'
pp_sys.c: In function `Perl_pp_sservent':
pp_sys.c:5087: warning: implicit declaration of function `setservent_r'
pp_sys.c:5087: error: structure has no member named `_servent_data'
pp_sys.c: In function `Perl_pp_ehostent':
pp_sys.c:5098: warning: implicit declaration of function `endhostent_r'
pp_sys.c:5098: error: structure has no member named `_hostent_data'
pp_sys.c: In function `Perl_pp_eprotoent':
pp_sys.c:5122: warning: implicit declaration of function `endprotoent_r'
pp_sys.c:5122: error: structure has no member named `_protoent_data'
pp_sys.c: In function `Perl_pp_eservent':
pp_sys.c:5134: warning: implicit declaration of function `endservent_r'
pp_sys.c:5134: error: structure has no member named `_servent_data'
make: *** [pp_sys.o] Error 1


Het klopt wel ongeveer wat er gezegd wordt, in /usr/include/netdb.h is helemaal niets terug te vinden van de reentrant sethostent_r. Deze is echter wel aanwezig op mijn systeem als een macro in /usr/include/lwres/netdb.h, waarschijnlijk als onderdeel van bind.

Wat ik mij afvraag, is het mogelijk na het configure process de regel(s) in config.h naar undef te veranderen:
code:
1
2
3
...
d_sethostent_r='define'
..

Zou perl dan builden en zo ja, zal het een goede built zijn?

Of is er misschien een mogelijkheid perl te laten werken met de netdb.h prototypes uit /usr/include/lwres/netdb.h?

Ik heb hier niet ernstig veel ervaring mee en de drie hits die google geeft concluderen enkel dat er sprake is van een nare situatie...

[ Voor 3% gewijzigd door Verwijderd op 18-08-2004 16:29 ]


Verwijderd

Topicstarter
Verwijderd schreef op 18 augustus 2004 @ 16:29:

Wat ik mij afvraag, is het mogelijk na het configure process de regel(s) in config.h naar undef te veranderen:
code:
1
2
3
...
d_sethostent_r='define'
..
Zou perl dan builden en zo ja, zal het een goede built zijn?
Ik heb Perl nu dus op deze wijze geinstalleerd. Dus door de config.h aanpassen. Perl build netjes met ithread support en lijkt mijn eigen scriptjes weer te draaien.

Maar op het moment dat ik nu mod_perl2 voor apache2 probeer te installeren gaat het al vroegtijdig fout. Het probleem lijkt hier mee te maken te hebben. Tijdens het Configure.PL process geeft het al vlot twee errors dat localhost niet ge'resolved kan worden. De vraag aan mij om mijn /etc/hosts te checken; deze is in order en bevat maar een enkele regel:
code:
1
127.0.0.1    localhost
Na wat speurwerk in de source lijkt het fout te gaan tijdens een call naar gethostent("localhost"), deze retouneert undef. Ik vraag me af of dit te maken heeft met de build van Perl, met dat gerommel met die 'hostent' functions.

Ik draai een eigen bind caching nameserver en de rest van mijn systeem lijkt totaal geen probleem te hebben met het begrip localhost.

anyone?

[ Voor 3% gewijzigd door Verwijderd op 24-08-2004 03:36 ]