Hello, I'd like to make the proposal to invent dirlist.d/ directory support into aclocal. Currently the macro search path can be modified by a user by adding the repective path or a pattern that includes this path to the dirlist file contained in ACDIR. This is a very useful feature if you have some additional software installed on your system you want to be considered on the search. In such a case the system administrator can easily add this path to the dirlist file. Unfortunately this is a bit problematic for package vendors if they want to provide a package (.rpm, .deb, ...) that automatically adds a specific directory to this search path. Currently this package has to modify the dirlist file by a script or leave it up to the installer of the package to do this work manually. If now a dirlist.d/ directory would exist that can contain various scripts that are handled in the same way like the current dirlist file, the package could just provide a file ACDIR/dirlist.d/PACKAGENAME to extend the search path. The user could still make modifications to the dirlist file or create a private dirlist.d/* file without conflicting with any automatic setting of a package.
Currently SUSE does use such a feature but due to the lack of this support in aclocal they do create a dirlist file from all diles in the dirlist.d/ directory by a script. This is quite an ugly solution in my opinion because it silently overwrites all manual edits one does in the dirlist file. I am not aware whether other vendors use similar features. The following patch does provide the feature as described above and I would like to see it in future automake releases. Comments, suggestions, questions, or rants are always welcome. Index: aclocal.in =================================================================== RCS file: /cvs/automake/automake/aclocal.in,v retrieving revision 1.139 diff -u -r1.139 aclocal.in --- aclocal.in 4 Aug 2006 08:42:54 -0000 1.139 +++ aclocal.in 23 Aug 2006 16:00:40 -0000 @@ -1001,22 +1001,26 @@ } else { - # Finally, adds any directory listed in the `dirlist' file. - if (open (DIRLIST, "$system_includes[0]/dirlist")) - { - while (<DIRLIST>) + # Finally, adds any directory listed in the `dirlist' file + # and `dirlist.d' directories. + foreach my $dirlistfile (<$system_includes[0]/dirlist{,.d/*}>) + { + if (open (DIRLIST, $dirlistfile)) { - # Ignore '#' lines. - next if /^#/; - # strip off newlines and end-of-line comments - s/\s*\#.*$//; - chomp; - foreach my $dir (glob) + while (<DIRLIST>) { - push (@system_includes, $dir) if -d $dir; + # Ignore '#' lines. + next if /^#/; + # strip off newlines and end-of-line comments + s/\s*\#.*$//; + chomp; + foreach my $dir (glob) + { + push (@system_includes, $dir) if -d $dir; + } } + close (DIRLIST); } - close (DIRLIST); } } } Index: doc/automake.texi =================================================================== RCS file: /cvs/automake/automake/doc/automake.texi,v retrieving revision 1.149 diff -u -r1.149 automake.texi --- doc/automake.texi 22 Aug 2006 10:04:52 -0000 1.149 +++ doc/automake.texi 23 Aug 2006 16:00:59 -0000 @@ -3206,6 +3206,14 @@ list @emph{after} all other directories. @file{dirlist} entries may use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}. +All files contained in a @file{dirlist.d} directory in @var{acdir} are +handled in the same way. Putting pathes into various files within the [EMAIL PROTECTED] directory instead of putting them directly into the [EMAIL PROTECTED] file is especially useful for packagers that want to +make their package to automatically customize the system [EMAIL PROTECTED] when their package is installed without changing any +user's config file. + For example, suppose @[EMAIL PROTECTED]/dirlist} contains the following: Robert -- Robert Schiele Tel.: +49-621-181-2214 Dipl.-Wirtsch.informatiker mailto:[EMAIL PROTECTED] "Quidquid latine dictum sit, altum sonatur."
pgpXfI8Tjv355.pgp
Description: PGP signature