LINTIAN

# `non-standard-file-perm`

The file has a mode different from 0644. In some cases this is intentional, but in other cases this is a bug.

Severity: | `warning`
Experimental: | `false`

## Screens

toolchain/gnat/ali-read-only

  In GNAT, the compiler also deals with dependencies and rebuild order. The `.ali` files contain the dependency information required to detect if a `.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 the `.o` is obsolete or unavailable, instead of attempting to rebuild. This is recommended for packaged libraries (the `.so` or `.a` are available but not the `.o` files).

  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 with `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."

  "Nicolas Boulenguez" nicolas@debian.org

  See also: Development files (Section 8.4) in the Debian Policy Manual, Bug#986400

## See also

- Permissions and owners (Section 10.9) in the Debian Policy Manual

- list of all the affected packages
- the source of this tag