From mboxrd@z Thu Jan  1 00:00:00 1970
From: Adolf Belka <adolf.belka@ipfire.org>
To: development@lists.ipfire.org
Subject: Re: Failure building collectd when autoconf has been updated to 2.72
Date: Tue, 19 Nov 2024 14:43:11 +0100
Message-ID: <efe9729e-6617-4717-bde3-de4b9c1ba698@ipfire.org>
In-Reply-To: <7FF4003D-1ECC-4A48-8C4E-43B085EF0BD3@ipfire.org>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============4685822623505360872=="
List-Id: <development.lists.ipfire.org>

--===============4685822623505360872==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Hi Michael,

I obtained the configure created by the autoreconf etc and I have found the e=
rror. Here is the affected line 18710


18706   if test "x$ac_ct_CC" =3D x; then
18707     CC=3D""
18708   else
18709     case $cross_compiling:$ac_tool_warned in
18710 yes:
18711
18712 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tool=
s not prefixed with host triplet" >&5
18713 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with hos=
t triplet" >&2;}
18714 ac_tool_warned=3Dyes ;;
18715 esac
18716     CC=3D$ac_ct_CC
18717   fi
18718 else
18719   CC=3D"$ac_cv_prog_CC"
18720 fi

That line should be yes:) so it is missing a right bracket. Not sure if you c=
an figure where and why that is occurring but presumably a patch can be writt=
en to be applied after the autoreconf etc and before the ./configure command

Regards,
Adolf.


On 19/11/2024 12:41, Michael Tremer wrote:
> Hello Adolf,
>=20
> In the build script we are running autoreconf which will regenerate the con=
figure script:
>=20
>    https://git.ipfire.org/?p=3Dipfire-2.x.git;a=3Dblob;f=3Dlfs/collectd;h=
=3Dd1d4ea721386803c31599315de956373417c2dcf;hb=3DHEAD#l119
>=20
> Is there any output of that command? There should be some warnings which mi=
ght help us to find out what we need to change.
>=20
>> On 13 Nov 2024, at 10:30, Adolf Belka <adolf.belka(a)ipfire.org> wrote:
>>
>> Hi All,
>>
>> I did an update run with autoconf taking it from 2.71 to 2.72
>>
>> autoconf built without any problems, however collectd then failed for a sy=
ntax error in the configure file.
>>
>> Confirmed that this was due to autoconf by changing the versions back and =
forward and the problem went away and then came back again.
>>
>> The collectd build error message is
>>
>> checking for size_t... yes
>> checking for uid_t... yes
>> checking for gid_t... yes
>> ./configure: line 18710: syntax error near unexpected token `newline'
>> ./configure: line 18710: `yes:'
>> make: *** [collectd:120: /usr/src/log/collectd-4.10.9] Error 2
>>
>> The section around line 18710 in the configure file is
>>
>> 18707    do :
>> 18708       as_ac_Header=3D`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
>> 18709    ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Heade=
r" "$ac_includes_default"
>> 18710    if eval test \"x\$"$as_ac_Header"\" =3D x"yes"; then :
>=20
> There is an extra : here which is probably what causes the syntax error.
>=20
>> 18711      cat >>confdefs.h <<_ACEOF
>> 18712    #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
>> 18713    _ACEOF
>> 18714
>> 18715    else
>> 18716      with_libiptc=3D"no (header file missing)"
>> 18717    fi
>>
>> However there are 15 occurrences of the exact same text as line 18710 in t=
he configure file so I am not convinced if that line is the root cause for th=
e syntax error but some other earlier error that causes a knock-on effect.
>>
>> However, my knowledge of the coding syntax is definitely not enough to fig=
ure out what needs to be fixed/changed.
>>
>> As collectd is a very old version it is likely that some structural coding=
 or syntax was fine in the past but now with the change from autoconf-2.71 to=
 2.72 it is no longer allowed, or is flagged up when in the past it was just =
ignored.
>>
>> There are quite a few changes in autoconf-2.72 with some being marked as b=
ackwards compatibilities. All of them except one say that existing configure =
scripts will continue working. The one that doesn't mention that is the follo=
wing change:-
>>
>>    Configure scripts no longer support pre-1989 C compilers.
>>    Specifically, compilers that *only* implement the original =E2=80=9CK&R=
=E2=80=9D
>>    function definition syntax, and not the newer =E2=80=9Cprototyped=E2=80=
=9D syntax,
>>    will not be able to parse the test programs now emitted by
>>    AC_CHECK_FUNC, AC_LANG_CALL, and similar macros.  AC_PROG_CC still
>>    accepts such compilers, but this may change in the near future.
>>
>>    This change was necessary in order to support the upcoming 2024
>>    edition of the C standard (often referred to as =E2=80=9CC23=E2=80=9D),=
 which will
>>    officially remove the function declaration syntax used by
>>    AC_CHECK_FUNC in Autoconf 2.71 and earlier.  We feel that support
>>    for compilers that support only C 2024 is more useful, nowadays,
>>    than support for compilers that don=E2=80=99t implement a core feature =
of
>>    C 1989.
>>
>> However I am unable to figure out from this if the problem I am experienci=
ng is related to this or not. I would not have thought so as I don't believe =
we are using a pre-1989 C compiler.
>>
>> Any ideas from anyone on how to fix this issue?
>>
>> There is nothing critical from a security or other vulnerability aspect in=
 autoconf-2.72 but it would be nice to figure this out before we get to a sta=
ge where it has to be made to work.
>>
>>
>> Regards,
>>
>> Adolf.
>>
>=20


--===============4685822623505360872==--