Vagrant/Fabric setup for testing Ubuntu, FreeBSD

This commit is contained in:
Nathan Fiedler
2016-02-13 13:09:06 -08:00
parent 0c3c8888a7
commit dd78d6bfac
8 changed files with 121 additions and 46 deletions

1
vagrant/freebsd10/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
ssh_config

View File

@ -3,7 +3,9 @@
#
Vagrant.configure(2) do |config|
config.vm.box = "freebsd/FreeBSD-10.2-RELEASE"
config.ssh.shell = 'sh'
config.vm.box = 'freebsd/FreeBSD-10.2-RELEASE'
# this box needs a MAC address
config.vm.base_mac = '0800273E2877'
@ -13,11 +15,14 @@ Vagrant.configure(2) do |config|
vb.memory = 2048
end
config.vm.synced_folder '.', '/vagrant', disabled: true
config.vbguest.auto_update = false
# bring the system up to date
config.vm.provision "shell", inline: <<-SHELL
config.vm.provision 'shell', privileged: false, inline: <<-SHELL
sudo freebsd-update fetch install
sudo pkg update
sudo pkg upgrade -y
sudo pkg update -q
sudo pkg upgrade -q -y
sudo pkg autoremove -y
sudo pkg clean -y
SHELL

46
vagrant/freebsd10/fabfile.py vendored Normal file
View File

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
# -------------------------------------------------------------------
#
# Copyright (c) 2016 Nathan Fiedler
#
# This file is provided to you under the Apache License,
# Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# -------------------------------------------------------------------
"""Fabric file for installing requirements on FreeBSD."""
import os
from fabric.api import env, run, sudo, task
env.shell = "/bin/sh -c"
env.hosts = ["default"]
env.use_ssh_config = True
if os.path.exists("user_ssh_config"):
env.ssh_config_path = "user_ssh_config"
else:
env.ssh_config_path = "ssh_config"
@task
def all():
"""Install everything needed to build magick-rust."""
sudo("pkg install -q -y git")
sudo("pkg install -q -y rust")
sudo("pkg install -q -y cargo")
sudo("pkg install -q -y ImageMagick-nox11")
sudo("pkg install -q -y clang-devel")
# set LIBCLANG_PATH so rustc can find libclang.so in its hidden place
# (using the append operation results in 'Unmatched ".' error)
run("echo 'setenv LIBCLANG_PATH /usr/local/llvm-devel/lib' >> .cshrc")

1
vagrant/ubuntu14/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
ssh_config

View File

@ -3,7 +3,7 @@
#
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.box = 'ubuntu/trusty64'
# need enough memory to build syntex_syntax crate
config.vm.provider 'virtualbox' do |vb|
@ -11,10 +11,10 @@ Vagrant.configure(2) do |config|
end
# bring the system up to date
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade
config.vm.provision 'shell', inline: <<-SHELL
sudo apt-get -y autoremove
sudo apt-get -y update
sudo apt-get -y upgrade
SHELL
end

51
vagrant/ubuntu14/fabfile.py vendored Normal file
View File

@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
# -------------------------------------------------------------------
#
# Copyright (c) 2014-2016 Nathan Fiedler
#
# This file is provided to you under the Apache License,
# Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# -------------------------------------------------------------------
"""Fabric file for installing requirements on Ubuntu Linux."""
import os
from fabric.api import cd, env, run, sudo, task
env.hosts = ["default"]
env.use_ssh_config = True
if os.path.exists("user_ssh_config"):
env.ssh_config_path = "user_ssh_config"
else:
env.ssh_config_path = "ssh_config"
@task
def all():
"""Install everything needed to build magick-rust."""
run('sudo apt-get -q -y install git')
run('wget -q https://static.rust-lang.org/rustup.sh')
run('chmod +x rustup.sh')
run('./rustup.sh --yes')
run('rm -f rustup.sh')
sudo('apt-get -q -y build-dep imagemagick')
run('wget -q http://www.imagemagick.org/download/ImageMagick.tar.gz')
run('tar zxf ImageMagick.tar.gz')
with cd('ImageMagick-*'):
run('./configure')
run('make')
sudo('make install')
run('rm -rf ImageMagick*')
run('sudo apt-get -q -y install libclang-dev')