Text Blame History Raw

Vagrant development boxes

This directory contains a Vagrantfile which can be used to automatically create virtual machines for testing purposes. The virtual machines are automatically provisioned with all required dependencies for building & testing of exiv2 (the provisioning is shared with the GitLab CI).

The following Linux distributions are provided (the name in the brackets is the name of the Vagrant VM): - Fedora 28 ("Fedora") - Debian 9 aka Stretch ("Debian") - Archlinux ("Archlinux") - Ubuntu 16.04 aka Bionic Beaver ("Ubuntu") - CentOS 7 ("CentOS") - OpenSUSE Tumbleweed ("OpenSUSE")

The Fedora, Archlinux and OpenSUSE boxes are the 'vanilla' distribution with some additional packages installed.

For Debian and Ubuntu, we build gtest manually from source and install the resulting library to /usr/lib/.

On CentOS, we have to install a cmake3 and python36 (the default cmake is too old and a default python3 does not exist) which we symlink to /usr/bin/cmake & /usr/bin/python3 to retain a similar workflow to the other distributions.

For further details, consult the shell scripts setup.sh and ci/install_dependencies.sh.

All boxes come with conan installed via pip in the vagrant user's home directory and the exiv2 git repository cloned.

Please note that these VMs are not continuously tested and the provisioning can break. Please open an issue on GitHub if you happen to encounter a problem.

Usage

Please install Vagrant and a supported provider (e.g. libvirt, VirtualBox).

Choose a box from the above list and run in the directory where the Vagrantfile resides:

vagrant up $name

where $name is the name in the brackets in the above list, e.g. OpenSUSE or Archlinux. Depending on your default provider you may have to set the provider manually via vagrant up $name --provider $provider_name (the Ubuntu image does only support VirtualBox, which is not the default on Linux and will result in an error unless you explicitly set the provider to virtualbox).

This will download a box from the vagrantcloud and set it up. Once the whole process is finished, you can ssh into the machine via:

vagrant ssh $name

Don't forget to turn it off via vagrant halt $name or the VM will keep running! A VM can be discarded when it is no longer required via vagrant destroy $name (Vagrant will keep the base box around in ~/.vagrant.d/boxes and libvirt sometimes leaves images around in /var/lib/libvirt/ or /var/libvirt, so check these folders too).

You can also setup & start all VMs at once via vagrant up, but keep in mind that it will start 6 VMs and occupy between 10 and 20 GB of disk space.

Notes for OpenSUSE Tumbleweed

Unfortunately the OpenSUSE Tumbleweed box cannot be provisioned easily with Vagrant as it must perform a system upgrade first, which cannot be done non-interactively. To get the OpenSUSE box up and running, follow these steps:

$ vagrant up OpenSUSE
# you'll get a failure in the first provisioning script
$ vagrant ssh OpenSUSE
vagrant@opensuse-exiv2:~> su - # the root password is vagrant
Password:
opensuse-exiv2:~ # zypper refresh
opensuse-exiv2:~ # zypper dup
# zypper will now perform a system upgrade
# you'll probably get a few file conflicts, confirm the overwrite with 'yes'
# once the upgrade is done, exit the ssh session
$ vagrant halt OpenSUSE
$ vagrant up OpenSUSE
$ vagrant provision OpenSUSE

Provided the system upgrade went fine, you should now have an OpenSUSE Tumbleweed virtual machine ready to go.