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 3636 days ago last checkin d275f1986 ⎘ | ||
📂 .batcave | 'dk add ruby fpm' ‹› | 4796 days ago |
📂 bin | - include some more paths in npm packages - set more default values s‹› | 5218 days ago |
📂 examples | Add api examples ‹› | 4796 days ago |
📂 experimental | - moved to lib/rpm/... ‹› | 5088 days ago |
📂 lib | actually require the new code ‹› | 5216 days ago |
📂 misc | - add work-in-progress to build packages with pkgsrc ‹› | 5063 days ago |
📂 spec | Added support for extra control files for debs (fixes #599) ‹› | 4005 days ago |
📂 templates | - purge swap file ‹› | 5218 days ago |
📂 test | - add more tests - better test running ‹› | 4973 days ago |
📂 tools | - make fpm-npm a toplevel tool ‹› | 5218 days ago |
📄 .travis.yml | - tell travis to run on more rubies ‹› | 4777 days ago |
📄 .travis.yml.disabled | - disable travis; it's too noisy and I don't have time to keep it hap‹› | 4395 days ago |
📄 CHANGELIST | - version bump ‹› | 5081 days ago |
📄 CODE_OF_CONDUCT.md | Add a Code of Conduct from http://contributor-covenant.org/ ‹› | 3800 days ago |
📄 CONTRIBUTORS | - add contributors and license file (License is MIT) ‹› | 5085 days ago |
📄 Gemfile | - try using rspec+insist ‹› | 4789 days ago |
📄 Gemfile.lock | . ‹› | 4777 days ago |
📄 Guardfile | - I don't use this. ‹› | 4788 days ago |
📄 LICENSE | - add contributors and license file (License is MIT) ‹› | 5085 days ago |
📄 Makefile | clean more stuff ‹› | 4788 days ago |
📄 NOTES.md | - Add notes ‹› | 5209 days ago |
📄 README | move to markdown ‹› | 5218 days ago |
📄 README.md | - add install notes ‹› | 5218 days ago |
📄 Rakefile | - Add gem packaging ‹› | 5218 days ago |
📄 TODO | - ok, I really use github issues for a todo list. ‹› | 4778 days ago |
📄 Vagrantfile | - Add Vagrantfile + puppet manifest to help me much more easily test ‹› | 4392 days ago |
📄 a | remove test file ‹› | 4668 days ago |
📄 notify-failure.sh | 'dk add ruby fpm' ‹› | 4796 days ago |
📄 pkg.rb | - finish move ‹› | 5218 days ago |
📄 xpm.gemspec | Release xpm branch as v1.3.3.3; rename binary and gem.‹› | 3769 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