[ 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]>

Reply via email to