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