Subject: Re: bug#59099: 3-rd party aux files.

From: Van de Bugger <[email-masked]>
Date: Fri, 11 Nov 2022 00:47:40 +0300

> Since the purpose of the new feature is to support per-project helper
> files (right?), a single system directory doesn't seem right. Let's
> not mess around with system directories if we can help it.

Not exactly. Truly per-project helper files is *not* a problem — they
can  be stored in the project, and so, do not require any support from
autotools. The problem if the same helper files are shared, i. e. used
in more than one project.

Also, I often pack my own scripts/programs/whatever-else (which can be
used, at least potentially, by others) to RPM packages, so I would like
to have system directory for them.

At the same time, user-writable directory is also wanted, if helper
files are not yet packed, or for test/debug purposes.

> In general, the closer the new behavior is to the existing, the 
> easier I think it will be to understand (and implement and document).

That's right. So I am not going to invent something new. Instead, I am
thinking about copying existing aclocal behavior: it already have all
the required pieces, documented, and in use for a long time:

1. Default directory for automake-provided files: /usr/share/aclocal-
VERSION.
2. It can be overridden by the ACLOCAL_AUTOMAKE_DIR env var.
3. It can be overridden by the --automake-acdir command line option.
4. Default directory for third-party system-wide files:
/usr/share/aclocal.
5. It can be overridden by the --system-acdir command line option.
6. Extra directories can be specified with "dirlist" file in the
directory for third-party system-wide files.
7. Extra directories can be specified by the -I command line option.
8. Extra directories can be specified by the ACLOCAL_PATH env var.
9. There is a mechanism to version aclocal files by using "#serial"
comment.

(The only thing I do not like is "dirlist" file. As described in the
Automake manual, this file is intended to be edited by system
administrator. In such a case, the proper location for the file would
be /etc directory, not /usr/share/aclocal.)

So, my draft proposal looks like:

1. A directory for automake-provided files: /usr/share/automake-VERSION
— already in place.
2. It can be overridden by the AUTOMAKE_LIBDIR env var — already in
place.
3. It can be overridden by the --libdir option — already in place.
4. A directory for third-party system-wide files — to do. Directory
will be, obviously, /usr/share/automake (non-versioned).
5. An option to override it — to do. --system-libdir?
6. Extra directories with "dirlist" — to do.
7. An option for extra directories -- to do. -I?
8. An env var for extra directories -- to to. AUTOMAKE_PATH?
9. "#serial" comment — to do.

Env var/option names could be more uniform, but backward compatibility
limits it.

> I think we should have Jim and/or other more experienced Automakers
> weigh in before you start coding. But here are my comments.

How to get it?