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 ```