moving man pages from monolith to modular

Alan Coopersmith Alan.Coopersmith at Sun.COM
Sun May 22 11:10:48 PDT 2005


I've been playing a bit with the man page bits in the conversion
and hit across a few issues in trying to make automake do everything
Imake currently does.

1) InstallManPageLong:  Long long ago, in the dark days before BSD rewrote
     the filesystem, Unix was limited to 14 character filenames.   This
     persisted in the SysV line up to SysVR3.   X has traditionally supported
     those poor souls stuck on these backwards OS'es by keeping file names
     shorter than 14 characters, which is why the libX11 source & man page
     files are so awkwardly named.   For most OS'es (in the current Imake
     configs, everything that isn't (SystemV & not SVR4), which is pretty
     much everything in widespread use today), Imake provides a macro
     InstallManPageLong that maps the short name to the long name.
     Replicating this in automake seems very messy, and since we've already
     broken the 14-character filename length limit elsewhere in the tree
     without complaint, seems unnecessary.   Therefore, I'd like to suggest
     we use the modularization as our chance to rename the man pages to their
     full names and will change symlink.sh entries to do this:
	action      BlkPScrn.man    BlackPixelOfScreen.man
	action      Dis3C.man       DisplayOfCCC.man
	[...]

2) InstallManPageAliases: Many of the man pages document multiple functions,
    so the Imakefiles include rules to generate "shadow" man pages like:
     InstallManPageAliases(DisplayOfCCC,$(MANDIR),VisualOfCCC
       ScreenNumberOfCCC ScreenWhitePointOfCCC ClientWhitePointOfCCC)
    (these man pages consist of simply a .so macro listing the name of the
     real man page to show).   For these I'm not sure if it's best to just
     check the shadow pages into CVS or if it's worth trying to replicate
     the Imake macros in automake syntax.

3) CppManTarget:  Most of the man pages are run through cpp now, to do
    things like substitute in the current Xorg version number, set the man
    page  sections to the correct ones for the current systems, set
    ProjectRoot to match the installation target, allow substituting the
    server name with Xorg or XFree86 as necessary, and so on.   I've been
    able to create rules to do most of this, but copying them into every
    single module seems cumbersome and difficult to update.   Are we going
    to have some sort of common repository for autoconf macros and automake
    include files shared across all the modules?   Also, what should we use
    for the __xorgversion__  value in the man pages?  Will it become the
    name & version of the module it's shipping in instead?

-- 
	-Alan Coopersmith-           alan.coopersmith at sun.com
	 Sun Microsystems, Inc. - X Window System Engineering



More information about the xorg-modular mailing list