D 2015-02-14T11:31:35.274 L update\sfilters N text/x-markdown P 2927c9a299dfb61615a592a619e2002e5f6a7526 U mario W 7386 Update filters are simple post-processing hooks. They're run after any input files have been collected, and before the target package is built.
-u man Compresses man pages.
-u appdata Creates pkg.appdata.xml for distro appcenters.
-u desktop Adds a stub fpm:pkg.desktop file.
-u composer Update a `composer.json` for phar target.
-u fixperms Limit file permissions (umask 755).
-u strip Strip debugging symbols from binaries.
-u deps Resolve library/dependency names across distros.
-u unprefix Converting system package filenames to local paths.
-u lcase Lowercase filenames and directories.
-u preprocess Expand preprocessing macros in source files.
You'd usually run them with: xpm -s dir -u man,appdata,desktop -t deb ... They're intended for simple tasks. * Can supplant build/make steps that rather belong into the packaging process. * They're partly resembling debian-helpers. * Can either be specified as comma-separated lists, or with multiple -u or --filter flags. * Some plugins take options separated by `=` from plugin name, as in -u deps=fedora or -u lcase=*:php:rb Note that filters are applied just once on the input, not on each output package in a [multi-target](wiki/multi-target) build.
*

-u man

The "man" filter simply compresses manpages found in the staging path. * It looks for a man/ directory. * Searches for files ending in .1 or .2 or other numeric suffixes. It's intended to avoid that step in Makefiles. (As this is clearly a packaging thing.)
*

-u appdata

The "appdata" filter crafts a plain PKG.appdata.xml file. Those are used by the application managers/centers in most distributions. It's an agreed format between DEB and RPM-based distros, Listaller, etc. See [http://www.freedesktop.org/wiki/Distributions/AppStream/](http://www.freedesktop.org/wiki/Distributions/AppStream/) A few things missing here: * We likely need a `--screenshot` flag. Those are the primary purpose of AppData/AppStream. * This filter will overwrite existing appdata.xml files. So don't use it, if you're already providing one.
*

-u desktop

State: very crude. With -u desktop an application icon file `appname.desktop` will be generated. * Don't use this update filter if you're already providing one. * It will be prefixed with `fpm:appname` to avoid collisions.
*

-u composer

When using the [-t phar](wiki/phar) module, you may wish to combine it with an implicit -u composer update. * Writes current version etc. to `composer.json` * Creates a stub composer.json otherwise, containing: * name * description * license * homepage * type: Library * extra: [ Maintainer, Epoch, Releases (stub) ] * autoload (shared.phar) * No dependency translation is handled whatsoever currently. (This plugin is primarily meant for -s src to -t phar conversion. The php plugin meta data fields are somewhat broader than composer bundle specs; and the dependencies specifically more localized application/api-targeted. Besides there's no agreed mapping yet between composer and system packages.) Note that there's a distinct [-s composer source package](wiki/source_composer) plugin. The two have orthogonal use cases.
*

-u lcase=*

Converts directory and filenames to lowercase. * Directories are always lowercased. * File extensions can be specified with -u lcase=* for all, or lcase=php:cpp for specific groups to lowercase. This is meant just for the [-t phar](wiki/phar) target. It's probably less suitable for system packages.
*

-u deps=fedora

State: incomplete The deps filter is supposed to convert distro-specific package names. It utilizes `whohas` or `distromatch`. Since the latter is discontinued, it might make sense to just bundle a few package maps with `xpm/fpm` directly, and perform the lookup (for major distros) internally. (Would also be faster, really.)
*

-u unprefix

For extracing system package contents back into relative/local path structures you can use: xpm -s deb -u unprefix=/usr/share/appfiles/ -t zip pkgname.deb This will slice out just the files given below the base path as filter= argument.
*

-u fixperms

State: redundant Applies umask 0755 to files. Which is somewhat redundant since both deb and rpm plugins already implement a variation thereof.
*

-u strip

Strips debugging symbols from binaries. * Is just applied to binaries. * Skips shared libraries currently.
*

-u preprocess=py

Pipes source files through `preprocess.py` to expand macros. This is meant for scripting languages, not as C/C++ build hook. Depending on source language (file extension) it recognizes `# #define` or `// #ifdef` or the `/* #include "file.ph" */` comment syntax, but not literal C-macros. * In-code substitutions of defined constants are enabled per default (preprocess -s flag). * Expects a file extension list, such as -u preprocess=pl:php:rb. * Requires `preprocess` to be available, which is packaged for Debian distros at least.
Z 997d2e0e6186a023e0232a46173318e0