D 2015-04-15T16:40:31.204 L Packfile N text/x-markdown P a348db1020bcaf153b82e1702107f29bf3798c03 U mario W 1899

-u packfile

A `Packfile` is run via `make` after all source files have been collected into the staging directory. - The main `Packfile` will be picked up from wherever `fpm` was invoked at. Runs within the base `/tmp/pack-xyz123-staging/` path. - Any Packfiles that were grabbed along with source files (e.g. `usr/share/doc/Packfile`) will be run in the according staging subdirectory. And of course they'll be automatically removed after being run. ### Simple An example Packfile could just be: all: gzip -9 usr/share/doc/mypkg/changelog Note that the paths are relative, as it's already run within the staging directory. ### Env vars There are a few extra environment variables available: - `PACK_TYPE` = deb - `PACK_NAME` = mypkg - `PACK_VERSION` = 1.2.3 - `PACK_ARCH` = native - `PACK_STAGING` = /tmp/pack-dir-staging-123/ - `PACK_DIRECOTIRES` = "" ### Package-type specific rules So you *could* add rules depending on target package types for example: all: $(PACK_TYPE) deb: gzip -9 usr/share/doc/mypkg/changelog rpm: mv etc/rc.d/05-mypkg etc/init.d/mypkg ## Purpose Minor *mid-packaging* refinements. * Packfiles came to be, because they're more flexibile than builtin/default -u filters. They permit more cusomized hooks and packaging tasks. * It's **not** meant to delay actual build steps into the packaging phase. * Instead it's there to avoid packaging-workarounds creeping into and collecting dust in a regular Makefile. * Of course the boundaries can be somewhat arbitrary. But at least it's now feasible to cleanly spearate *Make*file and *Pack*file tasks. Less mashup / overlap. * Suitable for minor file renaming, data compression or stub/default creation tasks. Z 93155b307f83144b8f117e34d42c617e