Kurzer Zusammenfassung der Erkenntnisse von gestern abend:
Nach einigem hin & her liegt der Fehler im configure script von hylafax. Entgegen der Meldung, das irgendein code snippet nicht kompiliert werden kann, scheitert hylafax
tatsächlich an einem ziemlich wirren sed-script beim Versuch die Compiler Version zu bestimmen.
Der Fehler ist (bei hylafax 4.3.0) in der Datei "configure" Zeilen 799-817:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
checkGCCVersion()
{
app=$1; shift
eval `$app -v 2>&1 | \
sed -n -e '/[Vv]ersion/s/.* [a-z\-]*\([0-9]*\)\.\([0-9]*\).\([0-9]*\).*/GCCdist=\1;GCCmajor=\2;GCCminor=\3/p'`
GCCversion="${GCCdist}.${GCCmajor}.${GCCminor}"; export GCCversion
if [ ${GCCdist} -gt $1 ]; then
return 0
fi
if [ ${GCCdist} -eq $1 ]; then
if [ ${GCCmajor} -gt $2 ]; then
return 0
fi
if [ ${GCCmajor} -eq $2 -a ${GCCminor} -ge $3 ]; then
return 0
fi
fi
return 1
}
|
Der Eingabeparamter ($1) ist der gcc ("gcc").
Das Problem dabei ist, das der Gentoo gcc nach der Versionsnummer noch einige Zusatzwerte in den Versionsstring setzt.
So ist auf meiner Maschine die Ausgabe von
|
Quellcode
|
1
2
|
# gcc -v
gcc version 4.1.2 (Gentoo 4.1.2)
|
auf Sonie's Maschine ist es jedoch
|
Quellcode
|
1
2
|
# gcc -v
gcc-Version 4.2.0 (Gentoo 4.2.0 p1.4)
|
Die sed-magic im script oben analysiert leider den
letzten Teil der Versionsnummer, wodurch für hylafax bei Sonie der gcc die Versionsnummer
1.4. hat!
Was Müll ist.
Ein kleines Demoscript zum reproduzieren:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#! /bin/sh
checkGCCVersionDEMO()
{
echo $* 2>&1 | sed -n -e '/[Vv]ersion/s/.* [a-z\-]*\([0-9]*\)\.\([0-9]*\).\([0-9]*\).*/GCCdist=\1;GCCmajor=\2;GCCminor=\3/p'
GCCversion="${GCCdist}.${GCCmajor}.${GCCminor}"; export GCCversion
}
# Good version numbers
GCC_GOOD_1="gcc version 4.1.2 (Gentoo 4.1.2)"
GCC_GOOD_2="gcc version 4.1.2"
GCC_GOOD_3="gcc version 4.2.0"
# Bad, very bad version numbers
GCC_BAD_1="gcc-Version 4.2.0 (Gentoo 4.2.0 p1.4)"
GCC_BAD_2="gcc-Version 4.2.0 (built on 02.08.2007)"
# --- test ---
echo "testing string: " "$GCC_GOOD_1"; checkGCCVersionDEMO $GCC_GOOD_1; echo
echo "testing string: " "$GCC_GOOD_2"; checkGCCVersionDEMO $GCC_GOOD_2; echo
echo "testing string: " "$GCC_GOOD_3"; checkGCCVersionDEMO $GCC_GOOD_3; echo
echo "testing string: " "$GCC_BAD_1"; checkGCCVersionDEMO $GCC_BAD_1; echo
echo "testing string: " "$GCC_BAD_2"; checkGCCVersionDEMO $GCC_BAD_2; echo
|
liefert
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
testing string: "gcc version 4.1.2 (Gentoo 4.1.2)"
GCCdist=4;GCCmajor=1;GCCminor=2
testing string: "gcc version 4.1.2"
GCCdist=4;GCCmajor=1;GCCminor=2
testing string: "gcc version 4.2.0"
GCCdist=4;GCCmajor=2;GCCminor=0
testing string: "gcc-Version 4.2.0 (Gentoo 4.2.0 p1.4)"
GCCdist=1;GCCmajor=4;GCCminor=
testing string: "gcc-Version 4.2.0 (built on 02.08.2007)"
GCCdist=02;GCCmajor=08;GCCminor=2007
|
Man beachte die letzten beiden Analysen ... völliger Quatsch.
@Sonie: DAS ist definitv ein Bug. Du postest in Bugzilla? Hylafax oder Gentoo? So wie ich das sehe liegt das Problem upstream, also bei hylafax. Was hast du getan?