Newbie question about additional documentation

dave djf at
Mon Nov 23 20:23:25 UTC 2009

On Mon, 2009-11-23 at 12:21 +0000, Matthew Seaman wrote:
> David Fries wrote:
> > Hi everybody
> > 
> > I started working on my first port (a Haskell cabal package) over the
> > last weekend. I read the porter's handbook and then began by looking
> > at similar ports that already existed in the ports collection (e.g.
> > archivers/hs-zlib) to get a basic idea of what the port should look
> > like. I noticed that the only documentation listed in pkg-plist of
> > these ports is the LICENSE file. So pkg-plist looks something like
> > this:
> > 
> > ... other files..
> > %%PORTDOCS%%@dirrm %%DOCSDIR%%
> > ... @exec/@unexec...
> > 
> > However, when you install the port (assuming NOPORTDOCS is not set),
> > a HTML documentation will also be generated by the Haskell compiler
> > and put into %%PORTDOCS%%%%DOCSDIR%%/html/*. So my question is, is it
> > ok to omit these html files in the pkg-plist? I thought, you should
> > list those too...
> It's not OK to install files without any record in the pkgdb.  If you do
> things like that, firstly any committer working on the port should bounce
> it back to you as not fulfilling the required standards, and secondly, if
> the port does somehow get committed you'll be getting irate e-mails from
> various QA systems that spend all their time looking for such problems.
> Now, explicitly listing all of the files that get installed in pkg-plist
> in the port directory is one way of dealing with this.  There are alternatives
> though, which might suit your port better.  Check out the PLIST_FILES and
> PORTDOCS variables in /usr/ports/Mk/ -- in short these are:
>    PLIST_FILES a way of listing a short pkg_plist entirely from within
>                the port Makefile, which helps avoid using up inodes for
>                tiny little files
>    PORTDOCS a way of automatically adding a whole directory tree of
>             documentation to the pkg pretty much automatically. This is
>             particularly useful if your docco is generated automatically
>             and you can't always know exactly what files there will be
>             beforehand.
> 	Cheers,
> 	Matthew

Thanks for the hints. 

In section 5.14.4 of Porter's Handbook it says:
"As an alternative to enumerating the documentation files in pkg-plist,
a port can set the variable PORTDOCS to a list of file names and shell
glob patterns to add to the final packing list. The names will be
relative to DOCSDIR. Therefore, a port that utilizes PORTDOCS and uses a
non-default location for its documentation should set DOCSDIR
accordingly. If a directory is listed in PORTDOCS or matched by a glob
pattern from this variable, the entire subtree of contained files and
directories will be registered in the final packing list. If NOPORTDOCS
is defined then files and directories listed in PORTDOCS would not be
installed and neither would be added to port packing list"

After looking at the Makefile again, I noticed that the maintainer of
hs-zlib defined PORTDOCS= * . If I understand correctly, that means you
can put as many files in DOCSDIR as you want. The asterisk will match
everything and you always end up with everything registered in the final
packing list. Right?

If so, the line %%PORTDOCS%%%%DOCSDIR%%/LICENSE in pkg-plist would be
redundant, wouldn't it?

More information about the freebsd-ports mailing list