Skip to content
Multi-platform software packager for Unix systems
Kit Shell Makefile Pascal
Branch: master
Clone or download
ToddMiller1 Merge pull request #15 from ToddMiller1/sles15
Newer SUSE uses /etc/os-release
Latest commit 182aa88 Sep 22, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
example
tests
DOC
DOC.functions
DOC.xml
LICENSE
Makefile
NOTES
README.md
pp.back
pp.back.aix
pp.back.aix.func
pp.back.bsd
pp.back.bsd.func
pp.back.bsd.svc
pp.back.deb
pp.back.deb.func
pp.back.deb.svc
pp.back.inst
pp.back.kit
pp.back.kit.kits
pp.back.kit.svc
pp.back.macos
pp.back.macos.func
pp.back.null
pp.back.rpm
pp.back.rpm.func
pp.back.rpm.svc
pp.back.sd
pp.back.sd.func
pp.back.solaris
pp.back.solaris.func
pp.back.solaris.svc
pp.expand
pp.front
pp.licence
pp.main
pp.model
pp.platform
pp.quest
pp.util

README.md

Polypkg

A cross-platform packaging tool that attempts to automate package building for Unix/Linux Systems

Design Goals

pp is a shell script with the following design goals/wish list

  • Easily redistributable with source packages (cf. configure, libtool)
  • Portable across platforms of interest (Linux, AIX, HPUX, Solaris)
  • Uses native platform package management tools (rpm, swinstall, installp, pkgadd)
  • Generates init scripts for services
  • Understands a lowest common denominator subset of 'components'. Components are independent but related packages, and currently include runtime documentation, developer libraries and debugging information
  • Can generates the debug component automatically
  • The input text is conceptually an extension of Bourne Shell (i.e. no new language to learn, yet permits fine-control, uh.. hacks)
  • All symbols start with pp_ to avoid user script conflict
  • Can automatically copy packages into a snapshot distribution area with a sane layout
  • Parameter substitution in post-install/service script fragments

Supported Package Types

  • IBM AIX (bff)
  • FreeBSD (pkg)
  • Debian (deb)
  • SGI IRIX (inst)
  • HP Tru64 Unix (kit)
  • HP-UX (depot)
  • macOS (pkg)
  • Redhat Package Manager (rpm)
  • Oracle Solaris (pkg)

Synopsis

usage: pp [options] [input.pp]
    -d --debug                  -- write copious info to stderr
       --destdir=path           -- defaults to $DESTDIR
    -? --help                   -- display this information
    -i --install                -- install after packaging
    -l --list                   -- write package filenames to stdout
       --no-clean               -- don't remove temporary files
       --no-package             -- do everything but create packages
       --only-front             -- only perform front-end actions
    -p --platform=platform      -- defaults to local platform
       --wrkdir=path            -- defaults to subdirectory of  or /tmp
    -v --verbose                -- write info to stderr
       --version                -- display version and quit

Architecture

As a shell script, pp has a simple design:

             ------------PolyPkg-----------
spec file -> front-end -> model -> back-end -> package
             ------------------------------

Front end

This stage parses the spec file; removes comments, and performs section handling. It either calls into the model on each line of input, or stores section bodies into files to pass to the model later.

Model

The model stage is just an internal representation of the package: the number of components defined, names of declared services, and also provides a generic view of the file set. The result of this stage is a directory full of well-known file names containing pre-examined/processed filenames, script fragments etc.

Back end

This is the platform-specific code which takes the collection of script fragment files, fileset lists and generates the output package file(s).

Examples

See Also

Other cross-platform packaging tools with similar goals to pp include:

You can’t perform that action at this time.