modularize Vagrantfile, use centos6 boxes for building the binaries

for building binaries that run everywhere, we need to love old stuff like centos6,
because it has the oldest glibc version which we want to support.

use 768MB for 64bit machines (not 512)
This commit is contained in:
Thomas Waldmann 2015-09-28 00:05:52 +02:00
parent 86502d2729
commit 4a71613f14
1 changed files with 278 additions and 163 deletions

441
Vagrantfile vendored
View File

@ -4,23 +4,8 @@
# Automated creation of testing environments on misc. platforms # Automated creation of testing environments on misc. platforms
# Usage: # Usage:
# vagrant up OS # vagrant up OS
# vagrant ssh OS command # vagrant ssh OS -c command
# vagrant halt OS # vagrant halt OS
#
# packages_OS goals:
# - have all dependencies installed
# - have a working "virtualenv" command
# - have a working "python3" command
# - have a working "python3.4" command on platforms where we build a binary
#
# packages_prepare_OS goals: (for some older OS)
# - adds additional package sources, so packages_OS can find all it needs.
#
# prepare_user goals:
# - have a working "borg-env" virtual env installed, with code from "borg".
# both directories are in /vagrant/borg/.
# - have a working "borg-env34" virtual env installed, with code from "borg"
# and pyinstaller.
def packages_prepare_wheezy def packages_prepare_wheezy
return <<-EOF return <<-EOF
@ -33,64 +18,74 @@ def packages_prepare_precise
return <<-EOF return <<-EOF
# ubuntu 12.04 precise does not have lz4, but it is available from a ppa: # ubuntu 12.04 precise does not have lz4, but it is available from a ppa:
add-apt-repository -y ppa:gezakovacs/lz4 add-apt-repository -y ppa:gezakovacs/lz4
# we build the 32bit binary here also, using pyinstaller and py3.4.
add-apt-repository -y ppa:fkrull/deadsnakes
EOF
end
def packages_prepare_trusty
return <<-EOF
# we build the 64bit binary here also, using pyinstaller and py3.4.
add-apt-repository -y ppa:fkrull/deadsnakes
EOF
end
def packages_centos
return <<-EOF
yum install -y epel-release
yum update -y
yum install -y python34 python34-devel
ln -s /usr/bin/python3.4 /usr/bin/python3
yum install -y openssl-devel openssl
yum install -y libacl-devel libacl
yum install -y lz4-devel
yum install -y fuse-devel fuse pkgconfig
yum install -y fakeroot gcc git
yum install -y python-pip
pip install virtualenv
EOF EOF
end end
def packages_debianoid def packages_debianoid
return <<-EOF return <<-EOF
apt-get update apt-get update
apt-get install -y python-dev # pyinstaller needs py2 # for building borgbackup and dependencies:
apt-get install -y python3-dev python3-setuptools apt-get install -y libssl-dev libacl1-dev liblz4-dev libfuse-dev fuse pkg-config
apt-get install -y python3.4-dev # for pyinstaller / binary building
apt-get install -y libssl-dev libacl1-dev liblz4-dev
apt-get install -y libfuse-dev fuse pkg-config
apt-get install -y fakeroot build-essential git apt-get install -y fakeroot build-essential git
apt-get install -y python3-dev python3-setuptools
# this way it works on older dists (like ubuntu 12.04) also: # this way it works on older dists (like ubuntu 12.04) also:
easy_install3 pip easy_install3 pip
pip3 install virtualenv pip3 install virtualenv
touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile
EOF
end
def packages_redhatted
return <<-EOF
yum install -y epel-release
yum update -y
# for building borgbackup and dependencies:
yum install -y openssl-devel openssl libacl-devel libacl lz4-devel fuse-devel fuse pkgconfig
usermod -a -G fuse vagrant
yum install -y fakeroot gcc git patch
# for building python:
yum install -y zlib-devel bzip2-devel ncurses-devel readline-devel xz-devel sqlite-devel
#yum install -y python-pip
#pip install virtualenv
touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile
EOF
end
def packages_darwin
return <<-EOF
# get osxfuse 3.0.x pre-release code from github:
curl -s -L https://github.com/osxfuse/osxfuse/releases/download/osxfuse-3.0.5/osxfuse-3.0.5.dmg >osxfuse.dmg
MOUNTDIR=$(echo `hdiutil mount osxfuse.dmg | tail -1 | awk '{$1="" ; print $0}'` | xargs -0 echo) \
&& sudo installer -pkg "${MOUNTDIR}/Extras/FUSE for OS X 3.0.5.pkg" -target /
sudo chown -R vagrant /usr/local # brew must be able to create stuff here
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update
brew install openssl
brew install lz4
brew install fakeroot
brew install git
touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile
EOF EOF
end end
def packages_freebsd def packages_freebsd
return <<-EOF return <<-EOF
pkg install -y python34 py34-setuptools34 # for building borgbackup and dependencies:
ln -s /usr/local/bin/python3.4 /usr/local/bin/python3 pkg install -y openssl liblz4 fusefs-libs pkgconf
pkg install -y openssl liblz4 pkg install -y fakeroot git bash
pkg install -y fusefs-libs pkgconf # for building python:
pkg install -y fakeroot git pkg install sqlite3
easy_install-3.4 pip # make bash default / work:
pip3 install virtualenv chsh -s bash vagrant
mount -t fdescfs fdesc /dev/fd
echo 'fdesc /dev/fd fdescfs rw 0 0' >> /etc/fstab
# make FUSE work # make FUSE work
echo 'fuse_load="YES"' >> /boot/loader.conf echo 'fuse_load="YES"' >> /boot/loader.conf
echo 'vfs.usermount=1' >> /etc/sysctl.conf echo 'vfs.usermount=1' >> /etc/sysctl.conf
kldload fuse kldload fuse
sysctl vfs.usermount=1 sysctl vfs.usermount=1
pw groupmod operator -M vagrant pw groupmod operator -M vagrant
touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile
EOF EOF
end end
@ -103,117 +98,166 @@ def packages_openbsd
ln -sf /home/vagrant/borg /vagrant/ ln -sf /home/vagrant/borg /vagrant/
pkg_add bash pkg_add bash
chsh -s /usr/local/bin/bash vagrant chsh -s /usr/local/bin/bash vagrant
pkg_add python-3.4.2
pkg_add py3-setuptools
ln -sf /usr/local/bin/python3.4 /usr/local/bin/python3
ln -sf /usr/local/bin/python3.4 /usr/local/bin/python
pkg_add openssl pkg_add openssl
pkg_add lz4 pkg_add lz4
# pkg_add fuse # does not install, sdl dependency missing # pkg_add fuse # does not install, sdl dependency missing
pkg_add git # no fakeroot pkg_add git # no fakeroot
pkg_add python-3.4.2
pkg_add py3-setuptools
ln -sf /usr/local/bin/python3.4 /usr/local/bin/python3
ln -sf /usr/local/bin/python3.4 /usr/local/bin/python
easy_install-3.4 pip easy_install-3.4 pip
pip3 install virtualenv pip3 install virtualenv
touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile
EOF EOF
end end
def packages_netbsd def packages_netbsd
# ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/6.1.5/All/
return <<-EOF return <<-EOF
#ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz hostname netbsd # the box we use has an invalid hostname
#tar xzf pkgsrc.tar.gz PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/6.1.5/All/"
#cd pkgsrc/bootstrap export PKG_PATH
#./bootstrap pkg_add mozilla-rootcerts lz4 git bash
#PATH="/usr/pkg/sbin:$PATH" chsh -s bash vagrant
hostname netbsd # the box we use has an invalid hostname mkdir -p /usr/local/opt/lz4/include
PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/6.1.5/All/" mkdir -p /usr/local/opt/lz4/lib
export PKG_PATH ln -s /usr/pkg/include/lz4*.h /usr/local/opt/lz4/include/
pkg_add python34 py34-setuptools ln -s /usr/pkg/lib/liblz4* /usr/local/opt/lz4/lib/
ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python touch /etc/openssl/openssl.cnf # avoids a flood of "can't open ..."
ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python3 mozilla-rootcerts install
pkg_add mozilla-rootcerts lz4 git # llfuse does not support netbsd
mkdir -p /usr/local/opt/lz4/include pkg_add python34 py34-setuptools
mkdir -p /usr/local/opt/lz4/lib ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python
ln -s /usr/pkg/include/lz4*.h /usr/local/opt/lz4/include/ ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python3
ln -s /usr/pkg/lib/liblz4* /usr/local/opt/lz4/lib/ easy_install-3.4 pip
touch /etc/openssl/openssl.cnf # avoids a flood of "can't open ..." pip install virtualenv
mozilla-rootcerts install touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile
#pkg_add pkg-config fuse-2.9.3 # llfuse does not support netbsd
easy_install-3.4 pip
pip install virtualenv
EOF EOF
end end
def packages_darwin def install_pyenv(boxname)
return <<-EOF return <<-EOF
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" curl -s -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
brew update echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
# this installs osxfuse 2.8.0 (which is based on libfuse 2.7.3). echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
# llfuse later complains about needing (libfuse) 2.8.0 at least. echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
#brew install caskroom/cask/brew-cask echo 'export PYTHON_CONFIGURE_OPTS="--enable-shared"' >> ~/.bash_profile
#brew cask install osxfuse # needs cask install because of apple's unsigned kext ban EOF
# get osxfuse 3.0.x pre-release code from github: end
curl https://github.com/osxfuse/osxfuse/releases/download/osxfuse-3.0.5/osxfuse-3.0.5.dmg -L >osxfuse.dmg
MOUNTDIR=$(echo `hdiutil mount osxfuse.dmg | tail -1 | awk '{$1="" ; print $0}'` | xargs -0 echo) \ def fix_pyenv_darwin(boxname)
&& sudo installer -pkg "${MOUNTDIR}/Extras/FUSE for OS X 3.0.5.pkg" -target / return <<-EOF
brew install openssl echo 'export PYTHON_CONFIGURE_OPTS="--enable-framework"' >> ~/.bash_profile
brew install lz4 EOF
# looks dirty, is there a better way without root?: end
mkdir -p /usr/local/opt/lz4
ln -s /usr/local/Cellar/lz4/r*/include /usr/local/opt/lz4/ def install_pythons(boxname)
ln -s /usr/local/Cellar/lz4/r*/lib /usr/local/opt/lz4/ return <<-EOF
brew install fakeroot . ~/.bash_profile
brew install pyenv pyenv install 3.2.2 # tests, 3.2(.0) and 3.2.1 deadlock, issue #221
if which pyenv > /dev/null; then pyenv install 3.3.0 # tests
eval "$(pyenv init -)" pyenv install 3.4.0 # tests
fi pyenv install 3.5.0 # tests
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.4.3 #pyenv install 3.5.1 # binary build, use latest 3.5.x release
pyenv global 3.4.3
pyenv rehash pyenv rehash
python -m pip install virtualenv
EOF EOF
end end
def prepare_user(boxname) def build_sys_venv(boxname)
return <<-EOF return <<-EOF
echo export 'PATH=/usr/local/bin:$PATH' >> ~/.profile . ~/.bash_profile
. ~/.profile
# initialize python on darwin
if which pyenv > /dev/null; then
eval "$(pyenv init -)"
fi
cd /vagrant/borg cd /vagrant/borg
# this is the env with the STANDARD python3.x on this platform
virtualenv --python=python3 borg-env virtualenv --python=python3 borg-env
EOF
end
def build_pyenv_venv(boxname)
return <<-EOF
. ~/.bash_profile
cd /vagrant/borg
# use the latest 3.5 release
pyenv global 3.5.0
pyenv virtualenv 3.5.0 borg-env
ln -s ~/.pyenv/versions/borg-env .
EOF
end
def install_borg(boxname)
return <<-EOF
. ~/.bash_profile
cd /vagrant/borg
. borg-env/bin/activate . borg-env/bin/activate
pip install -U wheel # upgrade wheel, too old for 3.5
cd borg cd borg
# clean up (wrong/outdated) stuff we likely got via rsync:
rm -f borg/*.so borg/*.cpy*
rm -f borg/{chunker,crypto,compress,hashindex,platform_linux}.c
rm -rf borg/__pycache__ borg/support/__pycache__ borg/testsuite/__pycache__
pip install 'llfuse<0.41' # 0.41 does not install due to UnicodeDecodeError pip install 'llfuse<0.41' # 0.41 does not install due to UnicodeDecodeError
pip install -r requirements.d/development.txt pip install -r requirements.d/development.txt
pip install -e . pip install -e .
EOF
end
# on some platforms, we build a borg binary (and use py3.4 for it) def install_pyinstaller(boxname)
if which python3.4 > /dev/null; then return <<-EOF
cd /vagrant/borg . ~/.bash_profile
virtualenv --python=python3.4 borg-env34 cd /vagrant/borg
. borg-env34/bin/activate . borg-env/bin/activate
cd borg git clone https://github.com/pyinstaller/pyinstaller.git
pip install 'PyInstaller==3.0.dev2' cd pyinstaller
pip install 'llfuse<0.41' # 0.41 does not install due to UnicodeDecodeError git checkout develop
pip install -r requirements.d/development.txt pip install -e .
pip install -e . EOF
end
def install_pyinstaller_bootloader(boxname)
return <<-EOF
. ~/.bash_profile
cd /vagrant/borg
. borg-env/bin/activate
git clone https://github.com/pyinstaller/pyinstaller.git
cd pyinstaller
git checkout python3
# build bootloader, if it is not included
cd bootloader
python ./waf all
cd ..
pip install -e .
EOF
end
def build_binary_with_pyinstaller(boxname)
return <<-EOF
. ~/.bash_profile
cd /vagrant/borg
. borg-env/bin/activate
cd borg
pyinstaller -F -n borg --hidden-import=logging.config borg/__main__.py
EOF
end
def run_tests(boxname)
return <<-EOF
. ~/.bash_profile
cd /vagrant/borg/borg
. ../borg-env/bin/activate
if which pyenv > /dev/null; then
# for testing, use the earliest point releases of the supported python versions:
pyenv global 3.2.2 3.3.0 3.4.0 3.5.0
fi
# otherwise: just use the system python
if which fakeroot > /dev/null; then
fakeroot -u tox --skip-missing-interpreters
else
tox --skip-missing-interpreters
fi fi
echo
echo "Run:"
echo " vagrant rsync #{boxname}"
echo " vagrant ssh #{boxname} -c 'cd project/path; ...'"
EOF EOF
end end
def fix_perms def fix_perms
return <<-EOF return <<-EOF
. ~/.profile # . ~/.profile
chown -R vagrant /vagrant/borg chown -R vagrant /vagrant/borg
EOF EOF
end end
@ -229,68 +273,139 @@ Vagrant.configure(2) do |config|
config.vm.provider :virtualbox do |v| config.vm.provider :virtualbox do |v|
#v.gui = true #v.gui = true
v.cpus = 2 v.cpus = 1
end end
config.vm.define "centos7" do |b| # Linux
config.vm.define "centos7_64" do |b|
b.vm.box = "centos/7" b.vm.box = "centos/7"
b.vm.provision "packages centos7 64", :type => :shell, :inline => packages_centos b.vm.provider :virtualbox do |v|
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("centos7_64") v.memory = 768
end
b.vm.provision "install system packages", :type => :shell, :inline => packages_redhatted
b.vm.provision "install pyenv", :type => :shell, :privileged => false, :inline => install_pyenv("centos7_64")
b.vm.provision "install pythons", :type => :shell, :privileged => false, :inline => install_pythons("centos7_64")
b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_pyenv_venv("centos7_64")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("centos7_64")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("centos7_64")
end
config.vm.define "centos6_32" do |b|
b.vm.box = "centos6-32"
b.vm.provision "install system packages", :type => :shell, :inline => packages_redhatted
b.vm.provision "install pyenv", :type => :shell, :privileged => false, :inline => install_pyenv("centos6_32")
b.vm.provision "install pythons", :type => :shell, :privileged => false, :inline => install_pythons("centos6_32")
b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_pyenv_venv("centos6_32")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("centos6_32")
b.vm.provision "install pyinstaller", :type => :shell, :privileged => false, :inline => install_pyinstaller("centos6_32")
b.vm.provision "build binary with pyinstaller", :type => :shell, :privileged => false, :inline => build_binary_with_pyinstaller("centos6_32")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("centos6_32")
end
config.vm.define "centos6_64" do |b|
b.vm.box = "centos6-64"
b.vm.provider :virtualbox do |v|
v.memory = 768
end
b.vm.provision "install system packages", :type => :shell, :inline => packages_redhatted
b.vm.provision "install pyenv", :type => :shell, :privileged => false, :inline => install_pyenv("centos6_64")
b.vm.provision "install pythons", :type => :shell, :privileged => false, :inline => install_pythons("centos6_64")
b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_pyenv_venv("centos6_64")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("centos6_64")
b.vm.provision "install pyinstaller", :type => :shell, :privileged => false, :inline => install_pyinstaller("centos6_64")
b.vm.provision "build binary with pyinstaller", :type => :shell, :privileged => false, :inline => build_binary_with_pyinstaller("centos6_64")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("centos6_64")
end end
config.vm.define "trusty64" do |b| config.vm.define "trusty64" do |b|
b.vm.box = "ubuntu/trusty64" b.vm.box = "ubuntu/trusty64"
b.vm.provision "packages prepare trusty", :type => :shell, :inline => packages_prepare_trusty b.vm.provider :virtualbox do |v|
v.memory = 768
end
b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("trusty64") b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_sys_venv("trusty64")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("trusty64")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("trusty64")
end end
config.vm.define "precise32" do |b| config.vm.define "precise32" do |b|
b.vm.box = "ubuntu/precise32" b.vm.box = "ubuntu/precise32"
b.vm.provision "packages prepare precise", :type => :shell, :inline => packages_prepare_precise b.vm.provision "packages prepare precise", :type => :shell, :inline => packages_prepare_precise
b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("precise32") b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_sys_venv("precise32")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("precise32")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("precise32")
end end
config.vm.define "jessie64" do |b| config.vm.define "jessie64" do |b|
b.vm.box = "debian/jessie64" b.vm.box = "debian/jessie64"
b.vm.provider :virtualbox do |v|
v.memory = 768
end
b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("jessie64") b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_sys_venv("jessie64")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("jessie64")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("jessie64")
end end
config.vm.define "wheezy32" do |b| config.vm.define "wheezy32" do |b|
b.vm.box = "puppetlabs/debian-7.8-32-nocm" b.vm.box = "puppetlabs/debian-7.8-32-nocm"
b.vm.provision "packages prepare wheezy", :type => :shell, :inline => packages_prepare_wheezy b.vm.provision "packages prepare wheezy", :type => :shell, :inline => packages_prepare_wheezy
b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid b.vm.provision "packages debianoid", :type => :shell, :inline => packages_debianoid
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("wheezy32") b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_sys_venv("wheezy32")
end b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("wheezy32")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("wheezy32")
# BSD
config.vm.define "freebsd" do |b|
b.vm.box = "geoffgarside/freebsd-10.2"
b.vm.provision "packages freebsd", :type => :shell, :inline => packages_freebsd
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("freebsd")
end
config.vm.define "openbsd" do |b|
b.vm.box = "bodgit/openbsd-5.7-amd64"
b.vm.provision "packages openbsd", :type => :shell, :inline => packages_openbsd
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("openbsd")
end
config.vm.define "netbsd" do |b|
#b.vm.box = "Kralian/netbsd_6.1.5_amd64"
b.vm.box = "alex-skimlinks/netbsd-6.1.5-amd64"
b.ssh.shell = "ksh -l"
#b.ssh.shell = "sh"
b.vm.provision "packages netbsd", :type => :shell, :inline => packages_netbsd
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("netbsd")
end end
# OS X # OS X
config.vm.define "darwin" do |b| config.vm.define "darwin64" do |b|
b.vm.box = "jhcook/yosemite-clitools" b.vm.box = "jhcook/yosemite-clitools"
b.vm.provision "packages darwin", :type => :shell, :privileged => false, :inline => packages_darwin b.vm.provision "packages darwin", :type => :shell, :privileged => false, :inline => packages_darwin
b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("darwin") b.vm.provision "install pyenv", :type => :shell, :privileged => false, :inline => install_pyenv("darwin64")
b.vm.provision "fix pyenv", :type => :shell, :privileged => false, :inline => fix_pyenv_darwin("darwin64")
b.vm.provision "install pythons", :type => :shell, :privileged => false, :inline => install_pythons("darwin64")
b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_pyenv_venv("darwin64")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("darwin64")
b.vm.provision "install pyinstaller", :type => :shell, :privileged => false, :inline => install_pyinstaller("darwin64")
b.vm.provision "build binary with pyinstaller", :type => :shell, :privileged => false, :inline => build_binary_with_pyinstaller("darwin64")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("darwin64")
end
# BSD
config.vm.define "freebsd64" do |b|
b.vm.box = "geoffgarside/freebsd-10.2"
b.vm.provider :virtualbox do |v|
v.memory = 768
end
b.vm.provision "install system packages", :type => :shell, :inline => packages_freebsd
b.vm.provision "install pyenv", :type => :shell, :privileged => false, :inline => install_pyenv("freebsd")
b.vm.provision "install pythons", :type => :shell, :privileged => false, :inline => install_pythons("freebsd")
b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_pyenv_venv("freebsd")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("freebsd")
b.vm.provision "install pyinstaller", :type => :shell, :privileged => false, :inline => install_pyinstaller_bootloader("freebsd")
b.vm.provision "build binary with pyinstaller", :type => :shell, :privileged => false, :inline => build_binary_with_pyinstaller("freebsd")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("freebsd")
end
config.vm.define "openbsd64" do |b|
b.vm.box = "bodgit/openbsd-5.7-amd64"
b.vm.provider :virtualbox do |v|
v.memory = 768
end
b.vm.provision "packages openbsd", :type => :shell, :inline => packages_openbsd
b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_sys_venv("openbsd64")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("openbsd64")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("openbsd64")
end
config.vm.define "netbsd64" do |b|
b.vm.box = "alex-skimlinks/netbsd-6.1.5-amd64"
b.vm.provider :virtualbox do |v|
v.memory = 768
end
b.vm.provision "packages netbsd", :type => :shell, :inline => packages_netbsd
b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_sys_venv("netbsd64")
b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg("netbsd64")
b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("netbsd64")
end end
end end