Add crude Python bdist_wheel generation method. Only tested with singular packages. Hack to relocate single module scripts into pkgname subdir + stub __init__.py. Otherwise relies on -s src or -s di | ||
---|---|---|
mario authored 3527 days ago last checkin d275f1986 ⎘ | ||
๐ .batcave | 'dk add ruby fpm' โนโบ | 4687 days ago |
๐ bin | - include some more paths in npm packages - set more default values sโนโบ | 5109 days ago |
๐ examples | Add api examples โนโบ | 4687 days ago |
๐ experimental | - moved to lib/rpm/... โนโบ | 4979 days ago |
๐ lib | actually require the new code โนโบ | 5107 days ago |
๐ misc | - add work-in-progress to build packages with pkgsrc โนโบ | 4954 days ago |
๐ spec | Added support for extra control files for debs (fixes #599) โนโบ | 3897 days ago |
๐ templates | - purge swap file โนโบ | 5109 days ago |
๐ test | - add more tests - better test running โนโบ | 4864 days ago |
๐ tools | - make fpm-npm a toplevel tool โนโบ | 5109 days ago |
๐ .travis.yml | - tell travis to run on more rubies โนโบ | 4668 days ago |
๐ .travis.yml.disabled | - disable travis; it's too noisy and I don't have time to keep it hapโนโบ | 4287 days ago |
๐ CHANGELIST | - version bump โนโบ | 4972 days ago |
๐ CODE_OF_CONDUCT.md | Add a Code of Conduct from http://contributor-covenant.org/ โนโบ | 3691 days ago |
๐ CONTRIBUTORS | - add contributors and license file (License is MIT) โนโบ | 4976 days ago |
๐ Gemfile | - try using rspec+insist โนโบ | 4680 days ago |
๐ Gemfile.lock | . โนโบ | 4668 days ago |
๐ Guardfile | - I don't use this. โนโบ | 4679 days ago |
๐ LICENSE | - add contributors and license file (License is MIT) โนโบ | 4976 days ago |
๐ Makefile | clean more stuff โนโบ | 4679 days ago |
๐ NOTES.md | - Add notes โนโบ | 5100 days ago |
๐ README | move to markdown โนโบ | 5109 days ago |
๐ README.md | - add install notes โนโบ | 5109 days ago |
๐ Rakefile | - Add gem packaging โนโบ | 5109 days ago |
๐ TODO | - ok, I really use github issues for a todo list. โนโบ | 4669 days ago |
๐ Vagrantfile | - Add Vagrantfile + puppet manifest to help me much more easily test โนโบ | 4283 days ago |
๐ a | remove test file โนโบ | 4560 days ago |
๐ notify-failure.sh | 'dk add ruby fpm' โนโบ | 4687 days ago |
๐ pkg.rb | - finish move โนโบ | 5109 days ago |
๐ xpm.gemspec | Release xpm branch as v1.3.3.3; rename binary and gem.โนโบ | 3660 days ago |
cross package maker
fpm greatly simplifies distribution package generation.
xpm is a feature-oriented branch of fpm.
It creates or converts between
- Debian
deb
- RedHat
rpm
- Node
npm
- OSX
pkg
- Ruby
gem
- Solaris packages, plain
zip
ortar
archives, and a few more..
See the โ Howto on common fpm
usage examples.
xpm target/source plugins
This variant (precautiosly renamed for parallel installation) adds a few more source/target modules:
-t exe assembles Windows SFX "installers"
-s src consumes per-file relative
pack:
specifiers from meta comment fields for source-based apps-t phar bundles PHP scripts into
.phar
/zip/tars with meta fields-t ipk creates a static Listaller (.IPK) or Limba archive (which is a cross-distro packaging format)
-s composer fetches PHP bundles per composer, allows to pack them as phars or system packages (or matroska phar in deb/rpm)
-t arch builds a binary Arch Linux package.
A few more are currently pondered..
new features
This fpm branch already provides a few extensions:
Multi-target creation in one swoop.
xpm -t deb,rpm,exe
Avoids having to call fpm multiple times for creating distinct system packages. Usually package-specific flags
--deb-โฆ
and--rpm-โฆ
can be mixed in one invocation - when they're non-overlapping.Simple post-processing with update filters:
xpm -u man,appdata
Update filters are run between input file collection and target package building. They're intended for quick tasks or semi-build functionality. Existing filters:
- man - compresses man pages
- appdata - creates pkg.appdata.xml for distro managers
- desktop - add stub fpm:pkg.desktop file
- composer - update/generate
composer.json
for phar target - fixperms - limit file permissions (umask 755 / 644)
- strip - strip debugging symbols from binaries
- deps - resolve cross-distro library names per whohas/distromatch
- unprefix - workaround for converting system packages back to local paths
- lcase - lowercase filenames prior packaging
- packfile - runs any
Packfile
within the /tmp/staging dir on assembled files
Debian package signing with
--deb-sign KEYNAME
integrated.Additional --attr option to add custom control header fields (practically an alias for --deb-field, but also works for phar packages, based on
attrs{}
, so src plugin implicitly populates extra fields).
possible extensions
It's planned or at least considered to add:
-t inst โ a GUI/Python-based BSD/Linux cross-distro installer (reusing zip, deb, alien, pkcon, xdg-tools)
-t msi - for proper Windows packages
depending on further research, one of the AppImage-formats (utilizing their actual tools) might make sense
See Research on existing and inactive cross-distro packagers, schemes and initiatives.
build and installation
Meanwhile xpm installs as xpm
, to keep any mainline fpm
accessible. It's installed per rubygems easily. Either download a prebuilt gem from apt.io
or assemble it yourself:
- Download the xpm.tgz tarball, extract somewhere
gem build ./xpm.gemspec
gem install ./xpm-1.3.3.6.gem
Take note that this fetches a few other dependencies, even compiles ffi
; so may take a few more seconds. But basically that's it.
fossil โ git
I just don't fancy git. That is all. But this fossil repo will be synced back to https://github.com/prof-milki/xpm once in a while.
Or you can just sync it directly from here. Download or install the single fossil binary, then:
fossil clone http://fossil.include-once.org/xpm/ xpm.fsl
fossil open xpm.fsl
fossil ui
From there you could also just fossil export --git
and pipe that into git fast-import
.
Alternatively just use the new direct remote export:
wget //fossil.include-once.org/xpm/git-fast-export
It should be noted that Git is occasionally flaky with its own export format though.
links
- mainline fpm version https://github.com/jordansissel/fpm
- apt/yum repo builder https://github.com/dnbert/prm