64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
|
Packaging Vagrant plugins
|
||
|
-------------------------
|
||
|
|
||
|
This convention is based on the Fedora vagrant package.
|
||
|
|
||
|
Vagrant plugins are ordinary rubygems, but they should not be packaged as
|
||
|
these. First off all, we don't need to build the plugin with a ruby version
|
||
|
other then the ruby version with which vagrant was built. Furthermore, vagrant
|
||
|
will _only_ recognize gems inside its own directory structure as plugins and not
|
||
|
arbitrary rubygems.
|
||
|
|
||
|
Note that we *must* explicitly specify the macros `rb_build_versions` and
|
||
|
`rb_build_abi` (and cannot use macros here!). Usually we can simply use the
|
||
|
default ruby here, but in case vagrant is incompatible with the default ruby, we
|
||
|
must override this in each plugin.
|
||
|
|
||
|
An example specfile for a vagrant plugin looks like this:
|
||
|
``` spec
|
||
|
%global rb_build_versions ruby26
|
||
|
%global rb_build_abi ruby:2.6.0
|
||
|
%global rb_ruby_suffix ruby2.6
|
||
|
|
||
|
Name: vagrant-MYPLUGIN
|
||
|
Version: $VERSION
|
||
|
Release: 0
|
||
|
%define mod_name %{name}
|
||
|
%define mod_full_name %{mod_name}-%{version}
|
||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||
|
BuildRequires: %{rubygem gem2rpm}
|
||
|
BuildRequires: %{ruby}
|
||
|
BuildRequires: ruby-macros >= 5
|
||
|
|
||
|
BuildRequires: vagrant
|
||
|
BuildArch: noarch
|
||
|
Url: $URL
|
||
|
Source: $SRC
|
||
|
Source1: gem2rpm.yml
|
||
|
Summary: $SUMMARY
|
||
|
License: $LICENSE
|
||
|
|
||
|
%description
|
||
|
$DESCRIPTION
|
||
|
|
||
|
%global vagrant_plugin_name %{name}
|
||
|
|
||
|
%prep
|
||
|
%gem_unpack
|
||
|
|
||
|
%build
|
||
|
%gem_build
|
||
|
|
||
|
%install
|
||
|
%vagrant_plugin_install
|
||
|
|
||
|
%files
|
||
|
%{vagrant_plugin_instdir}
|
||
|
%{vagrant_plugin_cache}
|
||
|
%{vagrant_plugin_spec}
|
||
|
|
||
|
|
||
|
%changelog
|
||
|
|
||
|
```
|