Commit Graph

1233 Commits

Author SHA1 Message Date
Jordan Sissel e96dc2729a Version bump 2021-06-19 00:50:47 -07:00
Jordan Sissel 4eed9d671b Move loading of 'git' library nearer to where it's used.
This is necessary because `require "git"` (at time of writing) will
error if the `git` program is not available.

Upstream (ruby git) issue:
https://github.com/ruby-git/ruby-git/issues/311

Related fpm issues: #1748, #1751
2021-06-19 00:44:23 -07:00
Philippe Poilbarbe 13dde8304e Replace hardcoded control.tar.gz by name depending on compression (#1759) 2021-06-19 00:38:04 -07:00
Jordan Sissel ab4eb18b5f FreeBSD package: Replace ruby-xz usage with alternative using `tar`
For #1795

This replaces another library which uses ffi with an implementation
that doesn't need ffi.

I am not certain this is an exact replacement, but for my casual tests,
comparing .txz files generated before/after this commit, things seem ok.
This would benefit from real freebsd testing, though.
2021-06-19 00:09:49 -07:00
Jordan Sissel 3965a0fd31 Remove childprocess library in the quest to remove ffi.
For #195.
2021-06-19 00:09:49 -07:00
Jordan Sissel 18c5adcd19 Remove the need to invoke mknod using FFI.
This removes fpm's direct use of FFI and removes `ffi` as a direct
dependency. For #1795

Cases:
* A unix socket.
* A named pipe
* A charDev should now fail (like /dev/tty)
* A blockDev should now fail (like /dev/sda1)

NOTE: In this change, chardev and blockdev support have been removed.
These "copies" previously were just calling `mknod` with identical
mode, basically copying the `mode` from stat(2) to mknod(2).
Exceptions are now thrown for chardev and blockdev.

Test cases:

    # Try to package a named pipe.
    % mkfifo /tmp/z.pipe
    % bundle exec bin/fpm -s dir -t rpm -n example /tmp/z.pipe
    Created package {:path=>"example-1.0-1.x86_64.rpm"}

    % rpm -qlvp example-1.0-1.x86_64.rpm
    prw-rw-r--    1 root     root                        0 Jun 17 22:40 /tmp/z.pipe

    # Create the unix socket
    % nc -lU /tmp/z.sock

    # Package it into an rpm
    % bin/fpm -s dir -t rpm -n example /tmp/z.sock |& less
    {:timestamp=>"2021-06-17T22:33:27.780347-0700", :message=>"Created package", :path=>"example-1.0-1.x86_64.rpm"}

    # Verify the file is of socket type ('s' at beginning of file mode
    % rpm -qlvp example-1.0-1.x86_64.rpm
    srwxrwxr-x    1 root     root                        0 Jun 17 22:33 /tmp/z.sock
2021-06-19 00:09:49 -07:00
Jordan Sissel e3b3f9d8e3 Begin replacing ChildProcess with Process.spawn()
The childprocess library uses `ffi`. Historically, installing ffi has
brought challenges for fpm users. This change is an attempt to use
ruby standard methods to replace ChildProcess.

For #1795
2021-06-19 00:09:49 -07:00
Jordan Sissel 2a6facbcce Escape single quotes in file names listed in `%files`
Fixes #1773
2021-06-17 08:21:41 -07:00
Steve Kamerman cc0a4e7369 Fixed Debian platform tag for aarch64/arm64 2021-06-17 07:58:02 -07:00
Jordan Sissel d50f756d0e Bump version prepare to release. 2021-01-19 15:12:20 -08:00
Andreas Ulm c795ed7ef4 implemented --deb-maintainerscripts-force-errorchecks (#1696)
Switched from always enabling errexit to fpm parameter as result of
discussion in #1696.

Signed-off-by: Andreas Ulm <andreas.ulm@root360.de>
2021-01-19 14:33:01 -08:00
Vlastimil Holer 292073fc35 deb: Fixes gem pessimistic version constrains for single component versions.
If gem had a version constraint with just major version (e.g., ~>1),
the Debian packages were generated with wrong zero upper limit
(e.g., >= 1 and << 0). This results in unresolvable dependencies.

Signed-off-by: Vlastimil Holer <vholer@opennebula.io>
2021-01-19 14:31:27 -08:00
Arnar Gauti Ingason cd7e428d9f Prepending pyfpm to PYTHONPATH instead of replacing 2021-01-19 14:16:34 -08:00
Jose 3db202a52f removed some pritnt statement I added 2021-01-19 13:06:50 -08:00
Jose 6735f9df69 intermediate error checking 2021-01-19 13:06:50 -08:00
Jose b2dd4dadb6 syntax error 2021-01-19 13:06:50 -08:00
Jose 922d4c5d4f Copy_entry error prevented pacman from working 2021-01-19 13:06:50 -08:00
Jose ca3477b67b added zstd as standard compressoin 2021-01-19 13:06:50 -08:00
Jose 66a4dea525 added zstd compression, standard for pacman 2021-01-19 13:06:50 -08:00
Jose 6b4b61a3f8 changed backports for backports/latest 2021-01-19 13:06:50 -08:00
Jordan Sissel 90d131b075 Call safesystem() with a list
instead of a space-separated argument string

Tested with this command:

    bundle exec bin/fpm --debug -s python -t deb --python-pip =pip django

And verified that safesystem() to invoke pip is given a list.

Mentioned this here:
https://github.com/jordansissel/fpm/pull/1737#discussion_r560474705
2021-01-19 13:03:27 -08:00
vv-p c9487a30c0 Add trusted-host option for pip 2021-01-19 12:36:59 -08:00
Federico Lancerin e05790fa92 Addresses DIR -> DEB error on big directories
Fixes https://github.com/jordansissel/fpm/issues/1739
2021-01-19 12:20:58 -08:00
Jeff Solomon b1e956e071 Add a new --rpm-compression-level option which addresses issue 1675:
https://github.com/jordansissel/fpm/issues/1675

The value can be a number from 0 to 9 inclusive. The default mirrors
the current behavior of 9. If the --rpm-compression value is set to
"none", this value is ignored.

Setting the value to 5 sped up RPM creation on my RPM from 9 to
3 minutes.
2020-03-07 19:54:46 -08:00
Julian Trzeciak 8a40cd1db7 rpm: add option to enable install-time macro expansion in scripts
- spec file sections affected: %pre %post %preun %postun
2020-03-07 19:46:46 -08:00
Jeff Solomon cc7610f434 Issue 1678
fix .deb creation
2020-01-30 12:02:34 -08:00
Mike Perham 83b4ad9d65 Use variable instead of hardcoded filename
The code specifies .gz when using non-gzip compression which breaks on recent debian packaging tools. Fixes #1647
2019-11-19 15:27:18 -08:00
c-ameron d7b466787d default to false for deb-systemd starts 2019-03-25 22:15:44 -07:00
c-aamm 823b3947fc allow starting of multiple deb systemd services 2019-03-25 22:15:44 -07:00
c-aamm a7626cb99b Allow auto-enable and auto-start for deb-systemd services after install
Adds in two new options to enable/disable and autostart systemd services
--[no-]deb-systemd-enable to enable the systemd service after install
--[no-]deb-systemd-auto-start to auto start the service after install

Additionally, any service start/stop/restart will use deb-systemd-invoke
wrapper if installed on the system
2019-03-25 22:15:44 -07:00
Richard Grainger 1c1ff7dc19 [Fixes #1557] Allow git repo as gem source 2019-03-25 22:13:29 -07:00
Alexander Weidinger 6628f175ff Dir#input: don't overwrite license and vendor
Calling Dir#input overwrote #license and #vendor with default values.
2019-03-25 22:10:02 -07:00
Jordan Sissel 57fb023ee2 Support rubygems >= 3.0.0
This rubygems release renamed --no-ri and --no-rdoc to --no-document
2019-02-23 22:00:15 -08:00
Jordan Sissel 5e4e30ce0e version bump 2019-02-03 14:52:26 -08:00
Kyle Fazzari 8f6f285271 Introduce support for snap packages (#1490)
[Snaps][1] are self-contained squashfs images. Add basic support for
using them as inputs and outputs.

Typically Snapcraft is used to create snaps, but #1149 indicated a
desire to not use Snapcraft, so the snap is created natively, using
mksquashfs at the end to actually create the squashfs image. This may
not work for all use-cases (e.g. when the source doesn't already have
its dependencies bundled).

[1]: https://snapcraft.io/

Resolve #1181

Signed-off-by: Kyle Fazzari <kyrofa@ubuntu.com>
2018-10-16 15:59:17 -07:00
Dave L ca02692bcb Changed the mode of templates file for deb packages to 0644 (#1489)
If "--deb-templates" is used, fpm uses the wrong mode for this file. Since it is not an executable file, it should
not have the executable bits set. The lintian tool complains (with an error) that the mode is incorrect, and that
it should not be executable. Changing the mode to 0644 resolves this.
2018-10-16 15:57:03 -07:00
Mike Vastola 0d67ab9e3e Support different compression types for the deb control.tar file (#1542)
On input, the compression type is detected automatically. For output, the compression type is determined by the `--deb-compression` flag.

Fixes jordansissel/fpm#1540
2018-10-15 22:04:36 -07:00
Jordan Sissel bf54a505ed
Fix virtualenv failure on Python 3.6 (#1406) (#1556) 2018-10-15 20:46:13 -07:00
gcoxmoz 2b70a025f4 Preserve build-time timestamps when building rpms [#1538] (#1559) 2018-10-13 14:46:50 -07:00
Jordan Sissel cad736ee6c
Version bump to 1.10.2 (#1516) 2018-07-03 22:11:58 -07:00
Jordan Sissel 20e89a6feb
Always treat perl dependency version as a string. (#1515)
Perl modules have both META.json and META.yml. In the JSON, the perl
dependency appears as a string `"5.004"`, but in YAML it appears as a
number `5.004`! This may cause fpm to fail when trying to convert the
perl version into a dependency, so we now always treat the perl version
as a string.

Fixes #1514
2018-07-03 22:08:48 -07:00
Jordan Sissel c36416d63f
Version bump for a cpan bug fix (#1512) 2018-07-03 21:22:14 -07:00
William N. Braswell, Jr 7f5538f76f Perl CPAN Support, Fix Broken PERL5LIB & Add cpanm Verbose Option (#1511)
Perl CPAN Support, Fix Broken PERL5LIB & Add cpanm Verbose Option

Fixes #1509
2018-07-03 21:16:37 -07:00
Jordan Sissel 0c1ef4e106 Version bump 2018-05-18 17:31:58 -07:00
Roman Vasilyev 1d04b94472 lignup 2018-05-12 21:16:35 -07:00
Roman Vasilyev 09fca24748 python3 fix 2018-05-12 21:16:35 -07:00
Jordan Sissel 40b1f2d741 Move the default value for `--deb-dist` into the option definition. 2018-05-11 22:12:31 -07:00
Timo Boettcher 07b0be428e Generate .changes file for Debian
This will generate .changes file for Debian packages. Some Debian
repository management tools use .changes files for importing packages.
The command line option --(no-)deb-generate-changes allows to select to
generate the .changes file, the option --deb-dist allows to set a
distribution (like sid) for the package.
2018-05-12 21:05:27 -07:00
Alexey Stepanov 51682db33e Process PEP0508 markers on python package requirements
Closes-bug: #1307
2018-04-14 19:55:08 -07:00
Jordan Sissel 8f2dd4516a Default :workdir attribute to Dir.tmpdir
This fixes a bug where rpm output passes an rpm build macro `_tmppath`
that is empty, and on Fedora 27 this causes rpmbuild to fail.

The test suite catches this by making most all RPM specs fail, and with
this change, most of them now pass.
2018-01-10 21:09:17 -08:00