[ On , August 24, 2000 at 23:33:32 (-0400), Paul D. Smith wrote: ]
> Subject: Re: HTML format documentation
>
> %% [EMAIL PROTECTED] (Greg A. Woods) writes:
>
> >> Moving man to .../share (${datadir}) on some systems was painful
> >> enough, and there was a very solid technical reason to do that.
>
> gaw> It was painful only because too many people made too many
> gaw> assumptions! ;-)
>
> What were these assumptions, and how could they have been avoided?
Most were related to hard-coding /usr/man or some such into Makefiles
and scripts, without even allowing for a variable name there --
i.e. assuming that /usr/man was an invariant commonality between all
types of systems.
I doubt there could ever have been any way to avoid those assumptions by
default. Even when people started to separate their locally installed
software off in /usr/local or /local it took a long time before software
authors made their installation procedures flexible enough to take such
differences into account.
The GNU Coding Standards (General Conventions for Makefiles), and their
implementation in the form of GNU Automake, do not, by default, hold this
assumption (${mandir}), of course.
It would be nice if the GNU Coding Standards either also made the switch
to put `man' and `info' into `.../share' too, or else at least allowed
for that common default. Perhaps something like this:
`datadirname'
The name of the subdirectory for `datadir'.
`datadir'
The directory for installing read-only architecture independent
data files. This should normally be `/usr/local/share', but write
it as `$(prefix)/$(datadirname). (If you are using Autoconf, write
it as `@datadir@'.) As a special exception, see `$(infodir)' and
`$(includedir)' below.
`docsindatadir'
This will be either empty, or set to `/$(datadirname)', depending
on the default conventions of the target system.
`mandir'
The top-level directory for installing the man pages (if any) for
this package. It will normally be `/usr/local/share/man', but you
should write it as `$(prefix)$(docsindatadir)/man'. (If you are
using Autoconf, write it as `@mandir@'.)
`infodir'
The directory for installing the Info files for this package. By
default, it should be `/usr/local/share/info', but it should be
written as `$(prefix)$(docsindatadir)/info'. (If you are using
Autoconf, write it as `@infodir@'.)
Of course this will hopefully result in the various *BSDs also adjusting
their hier(7) documents to include a .../share subdirectory in
/usr/local and to include `man' and `info' within it, just as I've done
in my local version:
/usr/ contains the majority of the system utilities and files
local/ local executables, libraries, etc. (This directory
mirrors the layout of the /usr directory)
bin/ local binaries
include/ local include files
libexec/ local daemons
libdata/ local data files
share/ local architecture-independent files
info/ formatted Texinfo documents
man/ formatted manual pages
Personally I've been avoiding /usr/local (and its variants) on most
systems now because I have packaging utilities (RPM, pkgsrc, ports,
etc.) that can easily restore local configurations on bare virgin
systems (i.e. without requiring remembering what was installed and then
having to rebuild everything from scratch).
I'd really like to do away with the silly notion of /usr too! ;-)
Which reminds me: $(sysconfdir) should never include $(prefix). If
there's a common need for a configuration directory under $(prefix) then
it should be represented by $(localconfdir) or some similarly named
variable.
--
Greg A. Woods
+1 416 218-0098 VE3TCP <[EMAIL PROTECTED]> <robohack!woods>
Planix, Inc. <[EMAIL PROTECTED]>; Secrets of the Weird <[EMAIL PROTECTED]>