diff --git a/Vagrantfile b/Vagrantfile index bf63c9be..4e8d3d28 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -42,7 +42,7 @@ def packages_freebsd freebsd-update --not-running-from-cron fetch install # for building borgbackup and dependencies: pkg install -y openssl-devel liblz4 fusefs-libs pkgconf - pkg install -y fakeroot git bash + pkg install -y git bash # fakeroot causes lots of troubles on freebsd # for building python: pkg install -y sqlite3 pkg install -y py27-virtualenv # provides "virtualenv" command @@ -67,6 +67,29 @@ def packages_freebsd EOF end +def packages_darwin + return <<-EOF + # install all the (security and other) updates + sudo softwareupdate --ignore iTunesX + sudo softwareupdate --ignore iTunes + sudo softwareupdate --ignore "Install macOS High Sierra" + sudo softwareupdate --install --all + # get osxfuse 3.x release code from github: + curl -s -L https://github.com/osxfuse/osxfuse/releases/download/osxfuse-3.8.0/osxfuse-3.8.0.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 macOS 3.8.0.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 xz # required for python lzma module + brew install fakeroot + brew install git + brew install pkg-config + EOF +end + def install_pyenv(boxname) return <<-EOF curl -s -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash @@ -261,6 +284,31 @@ Vagrant.configure(2) do |config| b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("freebsd64") end + config.vm.define "darwin64" do |b| + b.vm.box = "jhcook/yosemite-clitools" + b.vm.provider :virtualbox do |v| + v.memory = 1536 + $wmem + v.customize ['modifyvm', :id, '--ostype', 'MacOS1010_64'] + v.customize ['modifyvm', :id, '--paravirtprovider', 'default'] + # 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") + b.vm.provision "install borg", :type => :shell, :privileged => false, :inline => install_borg(true) + 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") + b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("darwin64") + end + # TODO: create more VMs with python 3.6 and openssl 1.1. # See branch 1.1-maint for a better equipped Vagrantfile (but still on py34 and openssl 1.0). end