I agree that most of those header files seem like they should be internal to the library. However, each of those are currently included by files over in the package commands. As we discussed, I will run a couple quick tests to see if we can get rid of any of these includes. It is likely that at least some of them are not actually valid.
-Moriah James Carlson wrote: >>> usr/src/lib/libpkg/common/llib-lpkg >>> >>> I'm not sure what this file is for. It doesn't have any content. >>> >> Well, I did a search for the header files in libpkg and found that 9 of >> the header files were included by code under usr/src/cmd/svr4pkg. I >> included the following files in llib-lpkg: >> cfext.h >> keystore.h >> nhash.h >> p12lib.h >> pkgerr.h >> pkglib.h >> pkglibmsgs.h >> pkglocale.h >> pkgweb.h > > I don't think I follow. The things in llib-lpkg should be *only* the > header files that are required to define the interfaces exported by > the library. Things internal to the library (at least some of the > above appears to be internal) don't belong there. > > The llib-l* file is used to construct the lint library (*.ln). The > lint library contains the interfaces for the library, so you can lint > other things against the library without having to lint them against > the library source. Because of this usage, you generally want to > minimize the things defined in there to *just* the things you need, > and nothing else. (The ideal lint library defines exactly the same > set of symbols that are in the mapfile. It's usually hard to get to > that ideal, because common headers are often needed to make the > llib-l* file syntactically correct, but it shouldn't just be > "everything.") >