In GNAT, the compiler also deals with dependencies and rebuild order.
.ali files contain the dependency information required to detect
.o is more recent than the closure of all sources it depends
upon, or if it should be rebuilt.
By convention, a read-only
.ali file tells
GNAT to fail if
.o is obsolete or unavailable, instead of attempting to rebuild.
This is recommended for packaged libraries (the
are available but not the
This convention may seem bizarre according to modern standards, but it has been in use for 25 years, so Adacore would probably need a compelling reason to break it.
See also Debian Policy 8.4, which explicitly requires this:
If the package provides Ada Library Information (
*.ali) files for use
GNAT, these files must be installed read-only (mode 0444) so that
GNAT will not attempt to recompile them. This overrides the normal
file mode requirements given in "Permissions and owners."
Read more in Development files (Section 8.4) in the Debian Policy Manual.
This screen masks the tag non-standard-file-perm.
The screen is present in Lintian version
That is the most recent version we know about.
We use semantic versions.
The patch number is a commit step indicator relative to the
release tag in our Git
You can find the masking logic for this version at commit ea05801. For merge requests, please use the latest version in the Lintian screen toolchain/gnat/ali-read-only.