Re: CVS commit: pkgsrc/www/c-icap
Greg Troxel <[email protected]> Mon, 15 Jun 2026 08:36:05 -0400
| Newsgroups | gmane.os.netbsd.devel.packages |
|---|---|
| Message-ID | <[email protected]> |
Michael Bäuerle <[email protected]> writes: >> Given how compilers are, a package failing to probe for and set --std is >> an upstream bug. > > I don't agree. > > "--std" is not supported by all C compilers, e.g. the POSIX > C compiler use its name to select the language ("c99" or c17"). > Probing for nonstandard or undocumented options looks error prone. > > If the package does not use GNU autotools, CMake or meson, it may > be an enormous amount of work to implement such probing for little > benefit (it will cover only a few compilers known to the author). > I would expect it to work only with mainstream compilers like GCC > and Clang. > > I think the job of the author is to document what language (version) > is required. And it is the job of the user (not the build system) to > prepare an environment that provides a suitable compiler and suitable > flags for it. > > pkgsrc supports multiple compilers and its infrastructure would be > a good place to switch the mode (instead of doing it in the build > systems again and again -- likely wrong every time for non-mainstream > compilers). I can see this as reasonable, assuming this means: It is an usptream bug unless the compiler requirements are clearly documented in README (or some BUILDING-ish file *in the tarball* pointed to by README). The compiler requirements must include "This program is written in <dialect>." implying "a C compiler capable of supporting <dialect>". If upstream build does not search for and add --std=dialect, then it must state that the compiler in the build environment, when called without --std, must interpret programs as being in dialect, not seomthing else. and it means pkgsrc should arrange that when a compiler is invoked without --std, then the std in use is a reasonable default chosen by pkgsrc, not an aggressive default chosen by the compiler Simply picking c99 or gnu99 when there is no --std would likely solve 99% of the "old program written before C changed so much" problems.