[Xastir] Obsolete autoconf macro usage [was:Re: A few bugs under Gentoo]

Tom Russo russo at bogodyn.org
Sat Feb 18 10:36:13 PST 2023


These are known issues with recent versions of autoconf.  I addressed some of
them in 2021, but had to stop short of fixing them all.

For starters, see the commit message here:

https://github.com/Xastir/Xastir/commit/573d028243f58de74b51a232322f4d4b1406e0f4

which says, among other things:

    AC_TRY_COMPILE, AC_TRY_LINK, AC_LANG_C, AC_HEADER_TIME, and
    AC_HEADER_STDC are all now flagged as obsolete in this way.  The first
    three have easy equivalents in modern autoconf (modern being "after
    autoconf 2.60, which was released in 2006").  The latter two are
    really unnecessary with all standards-compliant C compilers (which
    these days is "all of them").
    
    Fixing the first three is easy, and I'm doing that now in this
    commit.  Fixing the other two is much more involved and I'm leaving
    them in place for now.

    Users who upgrade to a version of autoconf later than 2.69 may start
    seeing warnings that "AC_HEADER_STDC" and "AC_HEADER_TIME" are
    obsolete, and telling them to run autoupdate.  These users should
    IGNORE that warning and just keep going.
    
    We'll have to remove AC_HEADER_STDC, AC_HEADER_TIME, and a bunch of
    now-unnecessary probes for standard functions that should alwyas exist
    on any modern system at some later date, because this kind of thing is
    only going to get worse at the rate that things are going.


The commit I just referenced was specifically a commit that
removed most of the AC_TRY_COMPILE calls from our autoconf stuff, but clearly
I missed two of them in acinclude.m4.  They are *much* easier to fix and I'll
try to find time to fix them.  The AC_TRY_COMPILE macro is easily replaced
with more modern calls to AC_COMPILE_IFELSE and AC_LANG_PROGRAM, and that
commit does exactly those substitutions.  I just missed two.

While we can remove things like AC_HEADER_STDC and AC_HEADER_TIME etc. it
is more work than just fixing autoconf.  The code that *accesses* the macros
produced here has to become unconditionalized, which will take effort.

If you have time to go through the code and fix the code so that it doesn't
expect the macros produced by those autoconf probes, please submit a PR.

Same goes for anyone else who has the time to do that.  

In the meantime, simply ignoring those warnings is an option, and is what
we recommend until someone has time to address it properly.


I do not, at the moment, have any time to go through the entirety of the code
and find all the places where macros defined by AC_HEADER_STDC, AC_HEADER_TIME
and AC_TYPE_SIGNAL are actually used.  I know there are a few.  Mostly, fixing
this would be a matter of removing the ifdefs that access them.

A quick check shows that AC_HEADER_STDC's macros are never used as far as I
can tell.  It may just be that removing AC_HEADER_STDC from configure.ac
is enough to fix that issue.  However AC_HEADER_TIME's are used in 20 files.  
AC_TYPE_SIGNAL's is used in about 5.  Thos will have to be picked over and
the ifdefs that surround include statements will have to be removed, so the
include is unconditional.

This is not huge, time consuming work nor very complicated, I just don't
have time to do it myself.  Anyone with time to spare *and* access to more
than just one very new operating system on which to check for backward
compatibility is invited (indeed encouraged) to submit a PR.

On Sat, Feb 18, 2023 at 10:07:58AM -0800, we recorded a bogon-computron collision of the <david_flood at msn.com> flavor, containing:
> Hello All,
> 
> I revisited my home Xastir setup today and after a PULL (and nuking the
> source dir and doing a new CLONE) the following errors show up during
> ./bootstrap:
> 
>     5) Removing autom4te.cache directory...
>     4) Running aclocal...
>     3) Running autoheader...
>     2) Running autoconf...
> configure.ac:292: warning: The macro `AC_HEADER_STDC' is obsolete.
> configure.ac:292: You should run autoupdate.
> ./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
> configure.ac:292: the top level
> configure.ac:306: warning: The macro `AC_HEADER_TIME' is obsolete.
> configure.ac:306: You should run autoupdate.
> ./lib/autoconf/headers.m4:743: AC_HEADER_TIME is expanded from...
> configure.ac:306: the top level
> configure.ac:308: warning: The macro `AC_TYPE_SIGNAL' is obsolete.
> configure.ac:308: You should run autoupdate.
> ./lib/autoconf/types.m4:776: AC_TYPE_SIGNAL is expanded from...
> configure.ac:308: the top level
> configure.ac:329: warning: The macro `AC_TRY_COMPILE' is obsolete.
> configure.ac:329: You should run autoupdate.
> ./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
> acinclude.m4:562: AC_CHECK_GMTOFF is expanded from...
> configure.ac:329: the top level
> configure.ac:584: warning: The macro `AC_TRY_COMPILE' is obsolete.
> configure.ac:584: You should run autoupdate.
> ./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
> acinclude.m4:1030: XASTIR_BERKELEY_DB_CHK is expanded from...
> configure.ac:584: the top level
>     1) Running automake...
> configure.ac:53: installing './compile'
> configure.ac:45: installing './config.guess'
> configure.ac:45: installing './config.sub'
> configure.ac:34: installing './install-sh'
> configure.ac:34: installing './missing'
> callpass/Makefile.am: installing './depcomp'
> Bootstrap complete.
> 
> autoconf --version
> autoconf (GNU Autoconf) 2.71
> Copyright (C) 2021 Free Software Foundation, Inc.
> License GPLv3+/Autoconf: GNU GPL version 3 or later
> <https://gnu.org/licenses/gpl.html>,
> <https://gnu.org/licenses/exceptions.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> 
> Written by David J. MacKenzie and Akim Demaille.
> 
> If I run AUTOUPDTE as requested here's the output:
> 
> configure.ac:292: warning: The preprocessor macro `STDC_HEADERS' is
> obsolete.
>   Except in unusual embedded environments, you can safely include all
>   ISO C90 headers unconditionally.
> configure.ac:306: warning: Update your code to rely only on HAVE_SYS_TIME_H,
> then remove this warning and the obsolete code below it.
> All current systems provide time.h; it need not be checked for.
> Not all systems provide sys/time.h, but those that do, all allow
> you to include it and time.h simultaneously.
> configure.ac:308: warning: your code may safely assume C89 semantics that
> RETSIGTYPE is void.
> Remove this warning and the `AC_CACHE_CHECK' when you adjust the code.
> 
> The good news is that ./configure works fine and gets the options I need.I
> think.  Because when I fire it up on a 64-bit VM the "move map
> up/down/left/right" buttons are greyed out.  Everything else seems to work
> but those buttons aren't.  Those buttons are functional on a "matching"
> 32-bit VM.  The only difference (besides the bit count) is that the 32-bit
> doesn't see db.h but I'll fix that eventually.
> 
> The Help/About screen won't let me copy/paste but here's the highlights:
> 
> V2.1.9
> Libraries:  GraphicsMagik libProj GeoTiff ShapeLib PCRE map_caching libcurl
> 
> The Motif is reporting as 2.3.8
> 
> And yes, I have done a full world update of the Gentoo up to today on both
> bit VM's.
> 
> What other info would help?
> 
> Dave
> KD7MYC
> 
> _______________________________________________
> Xastir mailing list
> Xastir at lists.xastir.org
> http://xastir.org/mailman/listinfo/xastir

-- 
Tom Russo    KM5VY
Tijeras, NM  

 echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]



More information about the Xastir mailing list