2018-10-25 20:55:20 +02:00
|
|
|
# -*- mode: ruby -*-
|
|
|
|
# vi: set ft=ruby :
|
|
|
|
|
2019-06-26 21:20:21 +02:00
|
|
|
Vagrant.require_version ">= 2.2.0"
|
|
|
|
|
2019-05-20 19:26:11 +02:00
|
|
|
module OS
|
|
|
|
def OS.windows?
|
|
|
|
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def OS.mac?
|
|
|
|
(/darwin/ =~ RUBY_PLATFORM) != nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def OS.unix?
|
|
|
|
!OS.windows?
|
|
|
|
end
|
|
|
|
|
|
|
|
def OS.linux?
|
|
|
|
OS.unix? and not OS.mac?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-25 20:55:20 +02:00
|
|
|
# Vagrant file for setting up a build environment for Proton.
|
2019-05-20 19:26:11 +02:00
|
|
|
if OS.linux?
|
|
|
|
cpus = `nproc`.to_i
|
|
|
|
# meminfo shows KB and we need to convert to MB
|
|
|
|
memory = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 2
|
|
|
|
elsif OS.mac?
|
|
|
|
cpus = `sysctl -n hw.physicalcpu`.to_i
|
|
|
|
# sysctl shows bytes and we need to convert to MB
|
|
|
|
memory = `sysctl hw.memsize | sed -e 's/hw.memsize: //'`.to_i / 1024 / 1024 / 2
|
|
|
|
else
|
|
|
|
cpus = 1
|
|
|
|
memory = 1024
|
|
|
|
puts "Vagrant launched from unsupported platform."
|
|
|
|
end
|
2020-04-21 14:59:47 +02:00
|
|
|
memory = [memory, 4096].max
|
2019-05-20 19:26:11 +02:00
|
|
|
puts "Platform: " + cpus.to_s + " CPUs, " + memory.to_s + " MB memory"
|
2018-10-25 20:55:20 +02:00
|
|
|
|
|
|
|
Vagrant.configure(2) do |config|
|
2019-05-07 21:01:31 +02:00
|
|
|
#libvirt doesn't have a decent synced folder, so we have to use vagrant-sshfs.
|
|
|
|
#This is not needed for virtualbox, but I couldn't find a way to use a
|
|
|
|
#different synced folder type per provider, so we always use it.
|
|
|
|
config.vagrant.plugins = "vagrant-sshfs"
|
|
|
|
|
2018-11-02 18:36:24 +01:00
|
|
|
config.vm.provider "virtualbox" do |v|
|
2020-03-28 00:29:11 +01:00
|
|
|
v.cpus = [cpus, 32].min # virtualbox limit is 32 cpus
|
2019-05-20 19:26:11 +02:00
|
|
|
v.memory = memory
|
2018-11-02 18:36:24 +01:00
|
|
|
end
|
2018-10-25 20:55:20 +02:00
|
|
|
|
2019-05-07 21:01:31 +02:00
|
|
|
config.vm.provider "libvirt" do |v|
|
2019-05-20 19:26:11 +02:00
|
|
|
v.cpus = cpus
|
|
|
|
v.memory = memory
|
2019-05-07 21:01:31 +02:00
|
|
|
v.random_hostname = true
|
|
|
|
v.default_prefix = ENV['USER'].to_s.dup.concat('_').concat(File.basename(Dir.pwd))
|
|
|
|
end
|
|
|
|
|
2020-09-29 10:21:08 +02:00
|
|
|
#debian10-based build VM
|
2019-10-04 15:16:29 +02:00
|
|
|
config.vm.define "debian10", primary: true do |debian10|
|
2018-11-19 20:08:55 +01:00
|
|
|
|
2019-10-04 15:16:29 +02:00
|
|
|
debian10.vm.box = "generic/debian10"
|
2018-11-19 20:08:55 +01:00
|
|
|
|
2019-10-04 15:16:29 +02:00
|
|
|
debian10.vm.synced_folder "./vagrant_share/", "/vagrant/", create: true, type: "sshfs", sshfs_opts_append: "-o cache=no"
|
|
|
|
debian10.vm.synced_folder ".", "/home/vagrant/proton", id: "proton", type: "rsync", rsync__exclude: ["vagrant_share"]
|
2018-11-19 20:08:55 +01:00
|
|
|
|
2019-10-04 15:16:29 +02:00
|
|
|
debian10.vm.provision "shell", privileged: "true", inline: <<-SHELL
|
2020-11-02 19:32:28 +01:00
|
|
|
set -e
|
2019-10-04 15:16:29 +02:00
|
|
|
#install docker and steam-runtime dependencies
|
|
|
|
dpkg --add-architecture i386
|
|
|
|
apt-get update
|
|
|
|
apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
|
2018-12-05 18:21:36 +01:00
|
|
|
|
2019-10-04 15:16:29 +02:00
|
|
|
#add docker repo
|
|
|
|
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
|
|
|
|
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"
|
2018-11-19 20:08:55 +01:00
|
|
|
|
2019-10-04 15:16:29 +02:00
|
|
|
#install host build-time dependencies
|
|
|
|
apt-get update
|
2020-08-17 17:06:22 +02:00
|
|
|
apt-get install -y ccache texinfo gpgv2 gnupg2 git docker-ce docker-ce-cli containerd.io \
|
2021-11-01 22:20:23 +01:00
|
|
|
fontforge-nox python-debian uuid-dev python3-pip
|
2019-08-16 20:06:09 +02:00
|
|
|
|
2021-11-02 14:39:25 +01:00
|
|
|
# https://github.blog/2021-09-01-improving-git-protocol-security-github/
|
|
|
|
git config --global url.https://github.com/.insteadOf git://github.com/
|
|
|
|
|
2019-10-04 15:16:29 +02:00
|
|
|
#install adobe font devkit to build source san hans
|
2021-11-01 22:20:23 +01:00
|
|
|
pip3 install afdko
|
2021-03-11 20:05:39 +01:00
|
|
|
|
2019-10-04 15:16:29 +02:00
|
|
|
#allow vagrant user to run docker
|
|
|
|
adduser vagrant docker
|
2018-11-19 20:08:55 +01:00
|
|
|
|
2021-01-21 15:32:26 +01:00
|
|
|
# use faster overlay2 docker driver
|
|
|
|
echo '{"storage-driver": "overlay2"}' >/etc/docker/daemon.json
|
|
|
|
|
2020-06-29 18:01:56 +02:00
|
|
|
#allow user to run stuff in steamrt
|
|
|
|
sysctl kernel.unprivileged_userns_clone=1
|
|
|
|
mkdir -p /etc/sysctl.d/
|
|
|
|
echo kernel.unprivileged_userns_clone=1 > /etc/sysctl.d/docker_user.conf
|
|
|
|
|
2019-11-25 20:08:03 +01:00
|
|
|
#ensure we use only the mingw-w64 that we built
|
|
|
|
apt-get remove -y '*mingw-w64*'
|
2019-10-04 15:16:29 +02:00
|
|
|
SHELL
|
|
|
|
end
|
2018-10-25 20:55:20 +02:00
|
|
|
end
|