2015-09-12 20:13:17 +03:00
# -*- mode: ruby -*-
# vi: set ft=ruby :
2015-09-30 18:42:20 +03:00
# Automated creation of testing environments / binaries on misc. platforms
2015-09-16 00:45:12 +03:00
2017-06-02 03:29:05 +03:00
$cpus = Integer ( ENV . fetch ( 'VMCPUS' , '4' ) ) # create VMs with that many cpus
$xdistn = Integer ( ENV . fetch ( 'XDISTN' , '4' ) ) # dispatch tests to that many pytest workers
$wmem = $xdistn * 256 # give the VM additional memory for workers [MB]
2017-09-04 22:33:23 +03:00
def packages_debianoid ( user )
2015-09-20 23:22:40 +03:00
return <<-EOF
2020-04-08 00:24:01 +03:00
export DEBIAN_FRONTEND = noninteractive
2019-11-27 03:32:31 +03:00
# this is to avoid grub asking about which device it should install to:
echo " set grub-pc/install_devices /dev/sda " | debconf - communicate
apt - get - y - qq update
apt - get - y - qq dist - upgrade
2015-09-28 01:05:52 +03:00
# for building borgbackup and dependencies:
2020-10-11 00:12:47 +03:00
apt install - y libssl - dev libacl1 - dev liblz4 - dev libzstd - dev pkg - config
apt install - y libfuse - dev fuse || true
apt install - y libfuse3 - dev fuse3 || true
2021-05-23 23:21:44 +03:00
apt install - y locales || true
sed - i '/en_US.UTF-8/s/^# //g' / etc / locale . gen && locale - gen
2017-09-04 22:33:23 +03:00
usermod - a - G fuse #{user}
2016-09-04 04:01:29 +03:00
chgrp fuse / dev / fuse
chmod 666 / dev / fuse
2018-06-27 02:44:44 +03:00
apt install - y fakeroot build - essential git curl
2020-04-18 22:48:04 +03:00
apt install - y python3 - dev python3 - setuptools virtualenv
2015-10-03 04:10:12 +03:00
# for building python:
2018-06-27 02:44:44 +03:00
apt install - y zlib1g - dev libbz2 - dev libncurses5 - dev libreadline - dev liblzma - dev libsqlite3 - dev libffi - dev
2015-09-12 20:13:17 +03:00
EOF
end
2018-06-23 04:31:25 +03:00
def packages_freebsd
return <<-EOF
# in case the VM has no hostname set
hostname freebsd
# install all the (security and other) updates, base system
freebsd - update - - not - running - from - cron fetch install
# for building borgbackup and dependencies:
2020-10-11 00:12:47 +03:00
pkg install - y liblz4 zstd pkgconf
pkg install - y fusefs - libs || true
pkg install - y fusefs - libs3 || true
2018-07-04 03:51:04 +03:00
pkg install - y git bash # fakeroot causes lots of troubles on freebsd
2021-09-16 00:40:00 +03:00
# for building python (for the tests we use pyenv built pythons):
pkg install - y python38 py38 - sqlite3 py38 - virtualenv py38 - pip
2018-06-23 04:31:25 +03:00
# make sure there is a python3 command
2021-09-16 00:40:00 +03:00
ln - sf / usr / local / bin / python3 . 8 / usr / local / bin / python3
2018-06-23 04:31:25 +03:00
# 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 /s ysctl . conf
kldload fuse
sysctl vfs . usermount = 1
pw groupmod operator - M vagrant
# /dev/fuse has group operator
chmod 666 / dev / fuse
# install all the (security and other) updates, packages
pkg update
yes | pkg upgrade
2019-03-16 03:56:22 +03:00
echo 'export BORG_OPENSSL_PREFIX=/usr' >> ~ vagrant / . bash_profile
2018-06-23 04:31:25 +03:00
EOF
end
2019-03-01 20:29:11 +03:00
def packages_openbsd
return <<-EOF
pkg_add bash
2021-06-17 01:30:19 +03:00
chsh - s bash vagrant
2019-03-01 20:29:11 +03:00
pkg_add lz4
pkg_add zstd
pkg_add git # no fakeroot
pkg_add py3 - pip
pkg_add py3 - virtualenv
EOF
end
2021-06-17 03:38:45 +03:00
def packages_netbsd
return <<-EOF
2022-01-24 00:02:00 +03:00
# use the latest stuff, some packages in "9.2" are quite broken
echo 'http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/$arch/9.0_current/All' > / usr / pkg / etc / pkgin / repositories . conf
pkgin update
pkgin - y upgrade
2021-06-17 03:38:45 +03:00
pkg_add zstd lz4 xxhash git
pkg_add bash
chsh - s bash vagrant
echo " export PROMPT_COMMAND= " >> ~ vagrant / . bash_profile # bug in netbsd 9.2, .bash_profile broken for screen
echo " export PROMPT_COMMAND= " >> ~ root / . bash_profile # bug in netbsd 9.2, .bash_profile broken for screen
pkg_add pkg - config
# pkg_add fuse # llfuse supports netbsd, but is still buggy.
# https://bitbucket.org/nikratio/python-llfuse/issues/70/perfuse_open-setsockopt-no-buffer-space
2022-01-24 00:02:00 +03:00
pkg_add python38 py38 - sqlite3 py38 - pip py38 - virtualenv py38 - expat
ln - s / usr / pkg / lib / python3 . 8 / _sysconfigdata_netbsd9 . py / usr / pkg / lib / python3 . 8 / _sysconfigdata__netbsd9_ . py # bug in netbsd 9.2, expected filename not there.
pkg_add python39 py39 - sqlite3 py39 - pip py39 - virtualenv py39 - expat
ln - s / usr / pkg / bin / python3 . 9 / usr / pkg / bin / python
ln - s / usr / pkg / bin / python3 . 9 / usr / pkg / bin / python3
ln - s / usr / pkg / bin / pip3 . 9 / usr / pkg / bin / pip
ln - s / usr / pkg / bin / pip3 . 9 / usr / pkg / bin / pip3
ln - s / usr / pkg / bin / virtualenv - 3 . 9 / usr / pkg / bin / virtualenv
ln - s / usr / pkg / bin / virtualenv - 3 . 9 / usr / pkg / bin / virtualenv3
ln - s / usr / pkg / lib / python3 . 9 / _sysconfigdata_netbsd9 . py / usr / pkg / lib / python3 . 9 / _sysconfigdata__netbsd9_ . py # bug in netbsd 9.2, expected filename not there.
2021-06-17 03:38:45 +03:00
EOF
end
2018-07-04 03:51:04 +03:00
def packages_darwin
return <<-EOF
# install all the (security and other) updates
sudo softwareupdate - - ignore iTunesX
sudo softwareupdate - - ignore iTunes
2020-08-16 10:12:47 +03:00
sudo softwareupdate - - ignore Safari
2018-07-04 03:51:04 +03:00
sudo softwareupdate - - ignore " Install macOS High Sierra "
sudo softwareupdate - - install - - all
2020-08-16 10:12:47 +03:00
which brew || CI = 1 / bin / bash - c " $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh) "
2019-03-16 03:56:22 +03:00
brew update > / dev /nu ll
2022-01-24 00:12:57 +03:00
brew install pkg - config readline openssl @ 1 . 1 zstd lz4 xz fakeroot
2022-01-22 19:41:50 +03:00
brew install - - cask macfuse
2022-01-24 00:12:57 +03:00
# brew upgrade # upgrade everything (takes rather long)
2019-04-21 21:23:18 +03:00
echo 'export PKG_CONFIG_PATH=/usr/local/opt/openssl@1.1/lib/pkgconfig' >> ~ vagrant / . bash_profile
2018-07-04 03:51:04 +03:00
EOF
end
2019-06-17 03:37:06 +03:00
def packages_openindiana
return <<-EOF
# needs separate provisioning step + reboot:
#pkg update
2021-09-16 00:40:00 +03:00
#pkg install gcc-7 python-39 setuptools-39
ln - sf / usr / bin / python3 . 9 / usr / bin / python3
2020-09-25 03:13:43 +03:00
python3 - m ensurepip
2021-09-16 00:40:00 +03:00
ln - sf / usr / bin / pip3 . 9 / usr / bin / pip3
2020-09-25 03:13:43 +03:00
pip3 install virtualenv
2019-06-17 03:37:06 +03:00
EOF
end
2015-09-28 01:05:52 +03:00
def install_pyenv ( boxname )
2017-09-04 22:33:23 +03:00
return <<-EOF
2015-09-28 01:05:52 +03:00
echo 'export PYTHON_CONFIGURE_OPTS="--enable-shared"' >> ~ / .bash_profile
2021-05-23 23:18:22 +03:00
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~ / .bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~ / .bash_profile
. ~ / .bash_profile
curl - s - L https : / / raw . githubusercontent . com / yyuu / pyenv - installer / master / bin / pyenv - installer | bash
echo 'eval "$(pyenv init --path)"' >> ~ / .bash_profile
2022-01-22 19:25:54 +03:00
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~ / .bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~ / .bashrc
2021-05-23 23:18:22 +03:00
echo 'eval "$(pyenv init -)"' >> ~ / .bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~ / .bashrc
2015-09-12 20:13:17 +03:00
EOF
end
2015-09-28 01:05:52 +03:00
def fix_pyenv_darwin ( boxname )
2015-09-12 20:13:17 +03:00
return <<-EOF
2015-09-28 01:05:52 +03:00
echo 'export PYTHON_CONFIGURE_OPTS="--enable-framework"' >> ~ / .bash_profile
EOF
end
2015-09-12 20:13:17 +03:00
2015-09-28 01:05:52 +03:00
def install_pythons ( boxname )
return <<-EOF
. ~ / .bash_profile
2022-01-07 01:28:46 +03:00
pyenv install 3 . 10 . 0 # tests, version supporting openssl 1.1
2022-01-20 19:43:49 +03:00
pyenv install 3 . 9 . 10 # tests, version supporting openssl 1.1, binary build
2019-11-26 21:05:17 +03:00
pyenv install 3 . 8 . 0 # tests, version supporting openssl 1.1
2015-09-28 01:05:52 +03:00
pyenv rehash
EOF
end
2015-09-13 19:05:03 +03:00
2015-09-28 01:05:52 +03:00
def build_sys_venv ( boxname )
return <<-EOF
. ~ / .bash_profile
2015-09-12 20:13:17 +03:00
cd / vagrant / borg
2015-09-16 00:45:12 +03:00
virtualenv - - python = python3 borg - env
2015-09-28 01:05:52 +03:00
EOF
end
def build_pyenv_venv ( boxname )
return <<-EOF
. ~ / .bash_profile
cd / vagrant / borg
2020-12-26 02:50:05 +03:00
# use the latest 3.9 release
2022-01-20 19:43:49 +03:00
pyenv global 3 . 9 . 10
pyenv virtualenv 3 . 9 . 10 borg - env
2015-09-28 01:05:52 +03:00
ln - s ~ / .pyenv / versions / borg - env .
EOF
end
2016-11-24 06:03:54 +03:00
def install_borg ( fuse )
2020-10-11 00:12:47 +03:00
return <<-EOF
2015-09-28 01:05:52 +03:00
. ~ / .bash_profile
cd / vagrant / borg
2015-09-12 20:13:17 +03:00
. borg - env / bin / activate
2021-06-16 16:31:34 +03:00
pip install - U wheel # upgrade wheel, might be too old
2015-09-12 20:13:17 +03:00
cd borg
2022-02-04 23:03:28 +03:00
pip install - r requirements . d / development . lock . txt
2017-06-02 07:12:30 +03:00
python setup . py clean
2022-01-22 19:45:28 +03:00
python setup . py clean2
2020-10-11 00:12:47 +03:00
pip install - e . [ #{fuse}]
2016-06-29 02:04:24 +03:00
EOF
end
2017-01-16 10:10:08 +03:00
def install_pyinstaller ( )
return <<-EOF
2015-09-28 01:05:52 +03:00
. ~ / .bash_profile
cd / vagrant / borg
. borg - env / bin / activate
2016-09-14 04:11:11 +03:00
git clone https : / / github . com / thomaswaldmann / pyinstaller . git
2015-09-28 01:05:52 +03:00
cd pyinstaller
2022-01-07 21:52:42 +03:00
git checkout v4 . 7 - maint
2017-01-16 10:10:08 +03:00
python setup . py install
2015-09-28 01:05:52 +03:00
EOF
end
def build_binary_with_pyinstaller ( boxname )
return <<-EOF
. ~ / .bash_profile
cd / vagrant / borg
. borg - env / bin / activate
cd borg
2016-10-02 01:43:06 +03:00
pyinstaller - - clean - - distpath = / vagrant / borg scripts / borg . exe . spec
2017-07-30 03:01:10 +03:00
echo 'export PATH="/vagrant/borg:$PATH"' >> ~ / .bash_profile
2020-08-16 10:12:47 +03:00
cd .. && tar - czvf borg . tgz borg - dir
2015-09-28 01:05:52 +03:00
EOF
end
2020-10-20 01:17:03 +03:00
def run_tests ( boxname , skip_env )
2015-09-28 01:05:52 +03:00
return <<-EOF
. ~ / .bash_profile
cd / vagrant / borg / borg
. .. / borg - env / bin / activate
2016-10-15 16:21:38 +03:00
if which pyenv 2 > / dev /nu ll ; then
2015-09-28 01:05:52 +03:00
# for testing, use the earliest point releases of the supported python versions:
2022-01-20 19:43:49 +03:00
pyenv global 3 . 8 . 0 3 . 9 . 10 3 . 10 . 0
pyenv local 3 . 8 . 0 3 . 9 . 10 3 . 10 . 0
2015-09-28 01:05:52 +03:00
fi
# otherwise: just use the system python
2020-10-20 01:17:03 +03:00
# some OSes can only run specific test envs, e.g. because they miss FUSE support:
export TOX_SKIP_ENV = '#{skip_env}'
2016-10-15 16:21:38 +03:00
if which fakeroot 2 > / dev /nu ll ; then
2015-10-21 00:27:11 +03:00
echo " Running tox WITH fakeroot -u "
2020-10-11 00:12:47 +03:00
fakeroot - u tox - - skip - missing - interpreters
2015-09-28 01:05:52 +03:00
else
2015-10-21 00:27:11 +03:00
echo " Running tox WITHOUT fakeroot -u "
2020-10-11 00:12:47 +03:00
tox - - skip - missing - interpreters
2015-09-28 01:05:52 +03:00
fi
2015-09-12 20:13:17 +03:00
EOF
end
2017-09-04 22:33:23 +03:00
def fs_init ( user )
2015-09-12 20:13:17 +03:00
return <<-EOF
2018-03-24 02:03:55 +03:00
# clean up (wrong/outdated) stuff we likely got via rsync:
2018-05-18 20:20:57 +03:00
rm - rf / vagrant / borg / borg / . tox 2 > / dev /nu ll
2018-06-08 10:01:25 +03:00
rm - rf / vagrant / borg / borg / borgbackup . egg - info 2 > / dev /nu ll
2018-05-18 20:20:57 +03:00
rm - rf / vagrant / borg / borg / __pycache__ 2 > / dev /nu ll
find / vagrant / borg / borg / src - name '__pycache__' - exec rm - rf { } \ \ ; 2 > / dev /nu ll
2017-09-04 22:33:23 +03:00
chown - R #{user} /vagrant/borg
touch ~ #{user}/.bash_profile ; chown #{user} ~#{user}/.bash_profile
echo 'export LANG=en_US.UTF-8' >> ~ #{user}/.bash_profile
echo 'export LC_CTYPE=en_US.UTF-8' >> ~ #{user}/.bash_profile
echo 'export XDISTN=#{$xdistn}' >> ~ #{user}/.bash_profile
2015-09-12 20:13:17 +03:00
EOF
end
Vagrant . configure ( 2 ) do | config |
# use rsync to copy content to the folder
2020-08-16 10:12:47 +03:00
config . vm . synced_folder " . " , " /vagrant/borg/borg " , :type = > " rsync " , :rsync__args = > [ " --verbose " , " --archive " , " --delete " , " --exclude " , " .python-version " ] , :rsync__chown = > false
2015-09-13 02:22:44 +03:00
# do not let the VM access . on the host machine via the default shared folder!
2015-09-12 20:13:17 +03:00
config . vm . synced_folder " . " , " /vagrant " , disabled : true
2015-09-13 02:22:44 +03:00
config . vm . provider :virtualbox do | v |
2015-09-13 19:05:03 +03:00
#v.gui = true
2017-06-02 03:29:05 +03:00
v . cpus = $cpus
2015-09-13 02:22:44 +03:00
end
2020-03-10 00:00:57 +03:00
config . vm . define " focal64 " do | b |
b . vm . box = " ubuntu/focal64 "
b . vm . provider :virtualbox do | v |
v . memory = 1024 + $wmem
end
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages debianoid " , :type = > :shell , :inline = > packages_debianoid ( " vagrant " )
b . vm . provision " build env " , :type = > :shell , :privileged = > false , :inline = > build_sys_venv ( " focal64 " )
2020-10-11 00:12:47 +03:00
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " llfuse " )
2020-12-05 00:40:54 +03:00
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " focal64 " , " .*none.* " )
2020-03-10 00:00:57 +03:00
end
2021-05-23 23:21:44 +03:00
config . vm . define " bullseye64 " do | b |
b . vm . box = " debian/bullseye64 "
b . vm . provider :virtualbox do | v |
v . memory = 1024 + $wmem
end
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages debianoid " , :type = > :shell , :inline = > packages_debianoid ( " vagrant " )
b . vm . provision " install pyenv " , :type = > :shell , :privileged = > false , :inline = > install_pyenv ( " bullseye64 " )
b . vm . provision " install pythons " , :type = > :shell , :privileged = > false , :inline = > install_pythons ( " bullseye64 " )
b . vm . provision " build env " , :type = > :shell , :privileged = > false , :inline = > build_pyenv_venv ( " bullseye64 " )
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " llfuse " )
b . vm . provision " install pyinstaller " , :type = > :shell , :privileged = > false , :inline = > install_pyinstaller ( )
b . vm . provision " build binary with pyinstaller " , :type = > :shell , :privileged = > false , :inline = > build_binary_with_pyinstaller ( " bullseye64 " )
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " bullseye64 " , " .*none.* " )
end
2020-03-10 00:00:57 +03:00
config . vm . define " buster64 " do | b |
b . vm . box = " debian/buster64 "
b . vm . provider :virtualbox do | v |
v . memory = 1024 + $wmem
end
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages debianoid " , :type = > :shell , :inline = > packages_debianoid ( " vagrant " )
b . vm . provision " install pyenv " , :type = > :shell , :privileged = > false , :inline = > install_pyenv ( " buster64 " )
b . vm . provision " install pythons " , :type = > :shell , :privileged = > false , :inline = > install_pythons ( " buster64 " )
b . vm . provision " build env " , :type = > :shell , :privileged = > false , :inline = > build_pyenv_venv ( " buster64 " )
2020-10-11 00:12:47 +03:00
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " llfuse " )
2020-03-10 00:00:57 +03:00
b . vm . provision " install pyinstaller " , :type = > :shell , :privileged = > false , :inline = > install_pyinstaller ( )
b . vm . provision " build binary with pyinstaller " , :type = > :shell , :privileged = > false , :inline = > build_binary_with_pyinstaller ( " buster64 " )
2020-12-05 00:40:54 +03:00
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " buster64 " , " .*none.* " )
2020-03-10 00:00:57 +03:00
end
2017-06-18 19:07:45 +03:00
config . vm . define " stretch64 " do | b |
b . vm . box = " debian/stretch64 "
b . vm . provider :virtualbox do | v |
v . memory = 1024 + $wmem
end
2017-09-04 22:33:23 +03:00
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages debianoid " , :type = > :shell , :inline = > packages_debianoid ( " vagrant " )
2018-06-27 02:44:44 +03:00
b . vm . provision " install pyenv " , :type = > :shell , :privileged = > false , :inline = > install_pyenv ( " stretch64 " )
b . vm . provision " install pythons " , :type = > :shell , :privileged = > false , :inline = > install_pythons ( " stretch64 " )
b . vm . provision " build env " , :type = > :shell , :privileged = > false , :inline = > build_pyenv_venv ( " stretch64 " )
2020-10-11 00:12:47 +03:00
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " llfuse " )
2017-01-16 10:10:08 +03:00
b . vm . provision " install pyinstaller " , :type = > :shell , :privileged = > false , :inline = > install_pyinstaller ( )
2017-07-30 03:01:10 +03:00
b . vm . provision " build binary with pyinstaller " , :type = > :shell , :privileged = > false , :inline = > build_binary_with_pyinstaller ( " stretch64 " )
2020-12-25 23:23:12 +03:00
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " stretch64 " , " .*(fuse3|none).* " )
2017-06-12 04:29:37 +03:00
end
2018-06-23 04:31:25 +03:00
config . vm . define " freebsd64 " do | b |
2020-04-19 21:46:24 +03:00
b . vm . box = " freebsd121-64 "
2018-06-23 04:31:25 +03:00
b . vm . provider :virtualbox do | v |
v . memory = 1024 + $wmem
end
b . ssh . shell = " sh "
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages freebsd " , :type = > :shell , :inline = > packages_freebsd
2020-04-20 17:59:35 +03:00
b . vm . provision " install pyenv " , :type = > :shell , :privileged = > false , :inline = > install_pyenv ( " freebsd64 " )
b . vm . provision " install pythons " , :type = > :shell , :privileged = > false , :inline = > install_pythons ( " freebsd64 " )
b . vm . provision " build env " , :type = > :shell , :privileged = > false , :inline = > build_pyenv_venv ( " freebsd64 " )
2020-10-11 00:12:47 +03:00
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " llfuse " )
2018-06-23 04:31:25 +03:00
b . vm . provision " install pyinstaller " , :type = > :shell , :privileged = > false , :inline = > install_pyinstaller ( )
b . vm . provision " build binary with pyinstaller " , :type = > :shell , :privileged = > false , :inline = > build_binary_with_pyinstaller ( " freebsd64 " )
2020-12-25 23:23:12 +03:00
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " freebsd64 " , " .*(fuse3|none).* " )
2018-06-23 04:31:25 +03:00
end
2019-03-01 20:29:11 +03:00
config . vm . define " openbsd64 " do | b |
2021-06-17 01:30:19 +03:00
b . vm . box = " generic/openbsd6 "
2019-03-01 20:29:11 +03:00
b . vm . provider :virtualbox do | v |
v . memory = 1024 + $wmem
end
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages openbsd " , :type = > :shell , :inline = > packages_openbsd
b . vm . provision " build env " , :type = > :shell , :privileged = > false , :inline = > build_sys_venv ( " openbsd64 " )
2020-10-11 00:12:47 +03:00
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " nofuse " )
2020-10-20 01:17:03 +03:00
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " openbsd64 " , " .*fuse.* " )
2019-03-01 20:29:11 +03:00
end
2021-06-17 03:38:45 +03:00
config . vm . define " netbsd64 " do | b |
b . vm . box = " generic/netbsd9 "
b . vm . provider :virtualbox do | v |
2022-01-24 00:02:00 +03:00
v . memory = 4096 + $wmem # need big /tmp tmpfs in RAM!
2021-06-17 03:38:45 +03:00
end
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
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 ( false )
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " netbsd64 " , " .*fuse.* " )
end
2018-07-04 03:51:04 +03:00
config . vm . define " darwin64 " do | b |
2020-04-20 13:52:53 +03:00
b . vm . box = " macos-sierra "
2018-07-04 03:51:04 +03:00
b . vm . provider :virtualbox do | v |
2022-01-22 19:48:57 +03:00
v . memory = 4096 + $wmem
2020-08-16 10:12:47 +03:00
v . customize [ 'modifyvm' , :id , '--ostype' , 'MacOS_64' ]
2018-07-04 03:51:04 +03:00
v . customize [ 'modifyvm' , :id , '--paravirtprovider' , 'default' ]
2020-08-16 10:12:47 +03:00
v . customize [ 'modifyvm' , :id , '--nested-hw-virt' , 'on' ]
2018-07-04 03:51:04 +03:00
# Adjust CPU settings according to
# https://github.com/geerlingguy/macos-virtualbox-vm
v . customize [ 'modifyvm' , :id , '--cpuidset' ,
'00000001' , '000306a9' , '00020800' , '80000201' , '178bfbff' ]
# Disable USB variant requiring Virtualbox proprietary extension pack
v . customize [ " modifyvm " , :id , '--usbehci' , 'off' , '--usbxhci' , 'off' ]
end
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages darwin " , :type = > :shell , :privileged = > false , :inline = > packages_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 " )
2020-10-11 00:12:47 +03:00
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " llfuse " )
2018-07-04 03:51:04 +03:00
b . vm . provision " install pyinstaller " , :type = > :shell , :privileged = > false , :inline = > install_pyinstaller ( )
b . vm . provision " build binary with pyinstaller " , :type = > :shell , :privileged = > false , :inline = > build_binary_with_pyinstaller ( " darwin64 " )
2020-12-25 23:23:12 +03:00
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " darwin64 " , " .*(fuse3|none).* " )
2018-07-04 03:51:04 +03:00
end
2019-06-17 03:37:06 +03:00
# rsync on openindiana has troubles, does not set correct owner for /vagrant/borg and thus gives lots of
# permission errors. can be manually fixed in the VM by: sudo chown -R vagrant /vagrant/borg ; then rsync again.
config . vm . define " openindiana64 " do | b |
b . vm . box = " openindiana "
b . vm . provider :virtualbox do | v |
2022-01-22 19:50:23 +03:00
v . memory = 2048 + $wmem
2019-06-17 03:37:06 +03:00
end
b . vm . provision " fs init " , :type = > :shell , :inline = > fs_init ( " vagrant " )
b . vm . provision " packages openindiana " , :type = > :shell , :inline = > packages_openindiana
b . vm . provision " build env " , :type = > :shell , :privileged = > false , :inline = > build_sys_venv ( " openindiana64 " )
2020-10-11 00:12:47 +03:00
b . vm . provision " install borg " , :type = > :shell , :privileged = > false , :inline = > install_borg ( " nofuse " )
2020-10-20 01:17:03 +03:00
b . vm . provision " run tests " , :type = > :shell , :privileged = > false , :inline = > run_tests ( " openindiana64 " , " .*fuse.* " )
2019-06-17 03:37:06 +03:00
end
2022-01-22 19:52:10 +03:00
# TODO: create more VMs with python 3.8+ and openssl 1.1.
# See branch 1.1-maint for a better equipped Vagrantfile (but still on py35 and openssl 1.0).
2015-09-12 20:13:17 +03:00
end