From 4a71613f147d1253eef0d49bf35a8f1751ee671a Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 28 Sep 2015 00:05:52 +0200 Subject: [PATCH] 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) --- Vagrantfile | 441 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 278 insertions(+), 163 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 381fceed..2d519034 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -4,23 +4,8 @@ # Automated creation of testing environments on misc. platforms # Usage: # vagrant up OS -# vagrant ssh OS command +# vagrant ssh OS -c command # 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 return <<-EOF @@ -33,64 +18,74 @@ def packages_prepare_precise return <<-EOF # ubuntu 12.04 precise does not have lz4, but it is available from a ppa: 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 end def packages_debianoid return <<-EOF apt-get update - apt-get install -y python-dev # pyinstaller needs py2 - apt-get install -y python3-dev python3-setuptools - 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 + # for building borgbackup and dependencies: + apt-get install -y libssl-dev libacl1-dev liblz4-dev libfuse-dev fuse pkg-config 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: easy_install3 pip 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 end def packages_freebsd return <<-EOF - pkg install -y python34 py34-setuptools34 - ln -s /usr/local/bin/python3.4 /usr/local/bin/python3 - pkg install -y openssl liblz4 - pkg install -y fusefs-libs pkgconf - pkg install -y fakeroot git - easy_install-3.4 pip - pip3 install virtualenv + # for building borgbackup and dependencies: + pkg install -y openssl liblz4 fusefs-libs pkgconf + pkg install -y fakeroot git bash + # for building python: + pkg install sqlite3 + # make bash default / work: + chsh -s bash vagrant + mount -t fdescfs fdesc /dev/fd + echo 'fdesc /dev/fd fdescfs rw 0 0' >> /etc/fstab # make FUSE work echo 'fuse_load="YES"' >> /boot/loader.conf echo 'vfs.usermount=1' >> /etc/sysctl.conf kldload fuse sysctl vfs.usermount=1 pw groupmod operator -M vagrant + touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile EOF end @@ -103,117 +98,166 @@ def packages_openbsd ln -sf /home/vagrant/borg /vagrant/ pkg_add bash 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 lz4 # pkg_add fuse # does not install, sdl dependency missing 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 pip3 install virtualenv + touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile EOF end def packages_netbsd - # ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/6.1.5/All/ return <<-EOF - #ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz - #tar xzf pkgsrc.tar.gz - #cd pkgsrc/bootstrap - #./bootstrap - #PATH="/usr/pkg/sbin:$PATH" - hostname netbsd # the box we use has an invalid hostname - PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/6.1.5/All/" - export PKG_PATH - pkg_add python34 py34-setuptools - ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python - ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python3 - pkg_add mozilla-rootcerts lz4 git - mkdir -p /usr/local/opt/lz4/include - mkdir -p /usr/local/opt/lz4/lib - ln -s /usr/pkg/include/lz4*.h /usr/local/opt/lz4/include/ - ln -s /usr/pkg/lib/liblz4* /usr/local/opt/lz4/lib/ - touch /etc/openssl/openssl.cnf # avoids a flood of "can't open ..." - mozilla-rootcerts install - #pkg_add pkg-config fuse-2.9.3 # llfuse does not support netbsd - easy_install-3.4 pip - pip install virtualenv + hostname netbsd # the box we use has an invalid hostname + PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/6.1.5/All/" + export PKG_PATH + pkg_add mozilla-rootcerts lz4 git bash + chsh -s bash vagrant + mkdir -p /usr/local/opt/lz4/include + mkdir -p /usr/local/opt/lz4/lib + ln -s /usr/pkg/include/lz4*.h /usr/local/opt/lz4/include/ + ln -s /usr/pkg/lib/liblz4* /usr/local/opt/lz4/lib/ + touch /etc/openssl/openssl.cnf # avoids a flood of "can't open ..." + mozilla-rootcerts install + # llfuse does not support netbsd + pkg_add python34 py34-setuptools + ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python + ln -s /usr/pkg/bin/python3.4 /usr/pkg/bin/python3 + easy_install-3.4 pip + pip install virtualenv + touch ~vagrant/.bash_profile ; chown vagrant ~vagrant/.bash_profile EOF end -def packages_darwin +def install_pyenv(boxname) return <<-EOF - ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - brew update - # this installs osxfuse 2.8.0 (which is based on libfuse 2.7.3). - # llfuse later complains about needing (libfuse) 2.8.0 at least. - #brew install caskroom/cask/brew-cask - #brew cask install osxfuse # needs cask install because of apple's unsigned kext ban - # get osxfuse 3.0.x pre-release code from github: - 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) \ - && sudo installer -pkg "${MOUNTDIR}/Extras/FUSE for OS X 3.0.5.pkg" -target / - brew install openssl - brew install lz4 - # looks dirty, is there a better way without root?: - mkdir -p /usr/local/opt/lz4 - ln -s /usr/local/Cellar/lz4/r*/include /usr/local/opt/lz4/ - ln -s /usr/local/Cellar/lz4/r*/lib /usr/local/opt/lz4/ - brew install fakeroot - brew install pyenv - if which pyenv > /dev/null; then - eval "$(pyenv init -)" - fi - env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.4.3 - pyenv global 3.4.3 + curl -s -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash + echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile + echo 'eval "$(pyenv init -)"' >> ~/.bash_profile + echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile + echo 'export PYTHON_CONFIGURE_OPTS="--enable-shared"' >> ~/.bash_profile + EOF +end + +def fix_pyenv_darwin(boxname) + return <<-EOF + echo 'export PYTHON_CONFIGURE_OPTS="--enable-framework"' >> ~/.bash_profile + EOF +end + +def install_pythons(boxname) + return <<-EOF + . ~/.bash_profile + pyenv install 3.2.2 # tests, 3.2(.0) and 3.2.1 deadlock, issue #221 + pyenv install 3.3.0 # tests + pyenv install 3.4.0 # tests + pyenv install 3.5.0 # tests + #pyenv install 3.5.1 # binary build, use latest 3.5.x release pyenv rehash - python -m pip install virtualenv EOF end -def prepare_user(boxname) +def build_sys_venv(boxname) return <<-EOF - echo export 'PATH=/usr/local/bin:$PATH' >> ~/.profile - . ~/.profile - - # initialize python on darwin - if which pyenv > /dev/null; then - eval "$(pyenv init -)" - fi - + . ~/.bash_profile cd /vagrant/borg - # this is the env with the STANDARD python3.x on this platform 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 + pip install -U wheel # upgrade wheel, too old for 3.5 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 -r requirements.d/development.txt pip install -e . + EOF +end - # on some platforms, we build a borg binary (and use py3.4 for it) - if which python3.4 > /dev/null; then - cd /vagrant/borg - virtualenv --python=python3.4 borg-env34 - . borg-env34/bin/activate - cd borg - pip install 'PyInstaller==3.0.dev2' - pip install 'llfuse<0.41' # 0.41 does not install due to UnicodeDecodeError - pip install -r requirements.d/development.txt - pip install -e . +def install_pyinstaller(boxname) + return <<-EOF + . ~/.bash_profile + cd /vagrant/borg + . borg-env/bin/activate + git clone https://github.com/pyinstaller/pyinstaller.git + cd pyinstaller + git checkout develop + 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 - - echo - echo "Run:" - echo " vagrant rsync #{boxname}" - echo " vagrant ssh #{boxname} -c 'cd project/path; ...'" EOF end def fix_perms return <<-EOF - . ~/.profile + # . ~/.profile chown -R vagrant /vagrant/borg EOF end @@ -229,68 +273,139 @@ Vagrant.configure(2) do |config| config.vm.provider :virtualbox do |v| #v.gui = true - v.cpus = 2 + v.cpus = 1 end - config.vm.define "centos7" do |b| + # Linux + config.vm.define "centos7_64" do |b| b.vm.box = "centos/7" - b.vm.provision "packages centos7 64", :type => :shell, :inline => packages_centos - b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("centos7_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("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 config.vm.define "trusty64" do |b| 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 "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 config.vm.define "precise32" do |b| b.vm.box = "ubuntu/precise32" 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 "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 config.vm.define "jessie64" do |b| 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 "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 config.vm.define "wheezy32" do |b| 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 debianoid", :type => :shell, :inline => packages_debianoid - b.vm.provision "prepare user", :type => :shell, :privileged => false, :inline => prepare_user("wheezy32") - end - - # 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") + b.vm.provision "build env", :type => :shell, :privileged => false, :inline => build_sys_venv("wheezy32") + 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") end # OS X - config.vm.define "darwin" do |b| + config.vm.define "darwin64" do |b| b.vm.box = "jhcook/yosemite-clitools" 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