multi-target
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
implementation
Internally it's a trivial loop to convert()
from one input
to different fpm output
plugins.
planning
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.)