[MacPorts] #72452: base: Detect safe pattern for implicit declarations
MacPorts
noreply at macports.org
Thu May 8 23:15:49 UTC 2025
#72452: base: Detect safe pattern for implicit declarations
---------------------------+--------------------
Reporter: Dave-Allured | Owner: (none)
Type: enhancement | Status: new
Priority: Normal | Milestone:
Component: base | Version:
Resolution: | Keywords:
Port: |
---------------------------+--------------------
Description changed by ryandesign:
Old description:
> The documentation for
> [https://trac.macports.org/wiki/WimplicitFunctionDeclaration#AddnamestowhitelistviaPortfile
> Implicit Function Declaration:Add names to whitelist via Portfile]
> describes a case where the implicit declaration is a deliberate compiler
> test. Warnings for these known cases should be suppressed.
>
> The current ignore method is to whitelist all occurrences of specified
> functions, during port configuration. Here is a finer grained approach.
> These known cases follow a pattern which can be detected and
> automatically ignored. I suggest this is safer than ignoring all
> occurrences.
>
> The basic idea is to pattern-recognize the known special test for "detect
> undeclared functions". Based on my current debug problem, the pattern in
> `config.log` looks like this. This would be an enhancement to the
> existing checks in `portconfigure::check_implicit_function_declarations`.
> Match exactly **three consecutive lines** with regex:
> {{{
> configure:.* checking for .* needed to detect all undeclared functions
> configure:.* conftest.c >
> conftest\.c:.* call to undeclared library function (NAME)
> }}}
> When this three-line pattern is detected, the implicit warning is then
> automatically IGNORED and not output as a warning to the user. (NAME)
> might start out as simply `strchr`, maybe expanded later to a special
> short list of known test names.
>
> Benefits:
> * Reduced interactions for port maintainers.
> * Allow removal of port-specific whitelisted function names in many
> portfiles.
> * Increased safety, as I said above.
New description:
The documentation for
[wiki:WimplicitFunctionDeclaration#AddnamestowhitelistviaPortfile Implicit
Function Declaration:Add names to whitelist via Portfile] describes a case
where the implicit declaration is a deliberate compiler test. Warnings
for these known cases should be suppressed.
The current ignore method is to whitelist all occurrences of specified
functions, during port configuration. Here is a finer grained approach.
These known cases follow a pattern which can be detected and automatically
ignored. I suggest this is safer than ignoring all occurrences.
The basic idea is to pattern-recognize the known special test for "detect
undeclared functions". Based on my current debug problem, the pattern in
`config.log` looks like this. This would be an enhancement to the
existing checks in `portconfigure::check_implicit_function_declarations`.
Match exactly **three consecutive lines** with regex:
{{{
configure:.* checking for .* needed to detect all undeclared functions
configure:.* conftest.c >
conftest\.c:.* call to undeclared library function (NAME)
}}}
When this three-line pattern is detected, the implicit warning is then
automatically IGNORED and not output as a warning to the user. (NAME)
might start out as simply `strchr`, maybe expanded later to a special
short list of known test names.
Benefits:
* Reduced interactions for port maintainers.
* Allow removal of port-specific whitelisted function names in many
portfiles.
* Increased safety, as I said above.
--
--
Ticket URL: <https://trac.macports.org/ticket/72452#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list