Skip to content
  • Adriaan de Groot's avatar
    CPack-FreeBSD: add a generator for FreeBSD pkg(8) · 2042cae9
    Adriaan de Groot authored and Brad King's avatar Brad King committed
    Adds an option CPACK_ENABLE_FREEBSD_PKG to allow CPack to look
    for FreeBSD's libpkg / pkg(8). If this is set and the libpkg
    headers and library are found (which they will be, by default,
    on any FreeBSD system), then add a FreeBSD pkg(8) generator.
    
    The FreeBSD package tool pkg(8) uses tar.xz files (.txz) with two
    metadata files embedded (+MANIFEST and +COMPACT_MANIFEST).
    This introduces a bunch of FreeBSD-specific CPACK_FREEBSD_PACKAGE_*
    variables for filling in the metadata; the Debian generator does
    something similar. Documentation for the CPack CMake-script is styled
    after the Debian generator.
    
    Implementation notes:
     - Checks for libpkg -- the underlying implementation for pkg(8) --
       and includes FreeBSD package-generation if building CMake on
       a UNIX host. Since libpkg can be used on BSDs, Linux and OSX,
       this potentially adds one more packaging format. In practice,
       this will only happen on FreeBSD and DragonflyBSD.
     - Copy-paste from cmCPackArchiveGenerator to special-case
       the metadata generation and to run around the internal
       archive generation: use libpkg instead.
     - Generating the metadata files is a little contrived.
     - Most of the validation logic for package settings is in
       CPackFreeBSD.cmake, as well as the code that tries to re-use
       packaging settings that may already be set up for Debian.
     - libpkg has its own notion of output filename, so we have
       another contrived bit of code that munges the output file
       list so that CPack can find the output.
     - Stick with C++98.
    2042cae9