Cross package maker. DEB/RPM generation or conversion. Derived from jordansissel/fpm.

⌈⌋ branch:  cross package maker


xpm provides a little convenience over standard fpm by creating multiple package targets at once.

Normally you'd invoke it repeatedly or in a shell loop:

fpm -s dir -t deb ...
fpm -s dir -t rpm ...
fpm -s dir -t ipk ...

But you can as well compact that into:

xpm -s dir -t deb,rpm,ipk ...

Notably that's only suitable for plain application packages. Distro-targeted packages with specific e.g. --after-install scripts may better be created individually.

Albeit you can often combine non-overlapping --deb.. and --rpm.. flags in one call:

xpm -s dir -t deb,rpm --deb-sign KEY --rpm-sign ...

It also depends on packaging plugins if the fpm build environment is left in a clean enough state. Some targets (composer, phar) may not yet be suitable for multi-target building.

Targets can also be delimited with , ; + or cominations thereof for readability:

xpm -s dir -t deb+rpm+exe
xpm -s dir -t "deb; rpm; exe"

Likewise it's possible to just list the -t flag multiple times:

xpm -s dir -t deb -t rpm -t exe

Internally it's a trivial loop to convert() from one input to different fpm output plugins.


It's slightly more work, but it might also be useful to permit source transformation lists later -s dir,zip,deb. Which would allow for "matroska" packages. (The composer plugin currently does this manually for phar-in-deb/rpm packing.)