208 строки
5.9 KiB
Ruby
208 строки
5.9 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
require 'socket'
|
|
|
|
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
|
VAGRANTFILE_API_VERSION = "2"
|
|
|
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
# specify memory size in MiB
|
|
vm_ram = ENV['VAGRANT_VM_RAM'] || 4096
|
|
vm_cpu = ENV['VAGRANT_VM_CPU'] || 2
|
|
vm_ram_bytes = vm_ram * 1024 * 1024
|
|
|
|
config.vm.hostname = "gdal-vagrant"
|
|
config.vm.host_name = "gdal-vagrant"
|
|
|
|
# proxy configurations.
|
|
# these options are also specified by environment variables;
|
|
# VAGRANT_HTTP_PROXY, VAGRANT_HTTPS_PROXY, VAGRANT_FTP_PROXY
|
|
# VAGRANT_NO_PROXY, VAGRANT_SVN_PROXY, VAGRANT_GIT_PROXY
|
|
# if you want to set these on Vagrantfile, edit the following:
|
|
if Vagrant.has_plugin?("vagrant-proxyconf")
|
|
config.proxy.enabled = false # true|false
|
|
#config.proxy.http = "http://192.168.0.2:3128"
|
|
#config.proxy.ftp = "http://192.168.0.2:3128"
|
|
#config.proxy.https = "DIRECT"
|
|
#config.proxy.no_proxy = "localhost,127.0.0.1,.example.com"
|
|
#config.svn_proxy.http = ""
|
|
#config.git_proxy.http = ""
|
|
end
|
|
|
|
config.vm.network :forwarded_port, guest: 80, host: 8080
|
|
# See https://bugs.launchpad.net/cloud-images/+bug/1969664
|
|
# Ubuntu 22.04 no longer accepts RSA keys, which causes issues with older Vagrant
|
|
# The below location has a jammy64 image that accepts RSA keys
|
|
config.vm.box_url = "https://people.canonical.com/~jchittum/vagrant-testing/ubuntu-jammy-vagrant-TESTING-20220419.box"
|
|
config.vm.box = "ubuntu/jammy64"
|
|
|
|
config.vm.provider :virtualbox do |vb|
|
|
vb.customize ["modifyvm", :id, "--memory", vm_ram]
|
|
vb.customize ["modifyvm", :id, "--cpus", vm_cpu]
|
|
vb.customize ["modifyvm", :id, "--ioapic", "on"]
|
|
vb.name = "gdal-vagrant"
|
|
end
|
|
|
|
#config.vm.provider :lxc do |lxc,ovrd|
|
|
# ovrd.vm.box = "cultuurnet/ubuntu-14.04-64-puppet"
|
|
# lxc.backingstore = 'dir'
|
|
# lxc.customize 'cgroup.memory.limit_in_bytes', vm_ram_bytes
|
|
# # LXC 3 or later deprecated old parameter
|
|
# lxc.customize 'apparmor.allow_incomplete', 1
|
|
# # for LXC 2.1 or before
|
|
# #lxc.customize 'aa_allow_incomplete', 1
|
|
# lxc.container_name = "gdal-vagrant"
|
|
# # allow android adb connection from guest
|
|
# #ovrd.vm.synced_folder('/dev/bus', '/dev/bus')
|
|
# # allow runnng wine inside lxc
|
|
# ovrd.vm.synced_folder('/tmp/.X11-unix/', '/tmp/.X11-unix/')
|
|
#end
|
|
|
|
#config.vm.provider :hyperv do |hyperv,ovrd|
|
|
# ovrd.vm.box = "withinboredom/Trusty64"
|
|
# ovrd.ssh.username = "vagrant"
|
|
# hyperv.cpus = vm_cpu
|
|
# hyperv.memory = vm_ram
|
|
# # If you want to avoid copying an entire image with
|
|
# # differencing disk feature, uncomment a following line.
|
|
# # hyperv.differencing_disk = true
|
|
# hyperv.vmname = "gdal-vagrant"
|
|
#end
|
|
|
|
if Vagrant.has_plugin?("vagrant-cachier")
|
|
config.cache.scope = :box
|
|
config.cache.enable :generic, {
|
|
"wget" => { cache_dir: "/var/cache/wget" },
|
|
}
|
|
end
|
|
|
|
# Unless explicitly declined, use the VM host's file system to cache
|
|
# .deb files to avoid repeated downloads on each vagrant up
|
|
unless File.exists?("../.no_apt_cache")
|
|
cache_dir = "../apt-cache/#{config.vm.box}"
|
|
FileUtils.mkdir_p(cache_dir) unless Dir.exists?(cache_dir)
|
|
puts "Using local apt cache, #{cache_dir}"
|
|
config.vm.synced_folder cache_dir, "/var/cache/apt/archives"
|
|
end
|
|
|
|
ppaRepos = [
|
|
]
|
|
|
|
packageList = [
|
|
"build-essential",
|
|
"ca-certificates",
|
|
"git",
|
|
"make",
|
|
"ninja-build",
|
|
"cmake",
|
|
"ccache",
|
|
"gdb",
|
|
"g++",
|
|
"mold",
|
|
"bison",
|
|
"flex",
|
|
"wget",
|
|
"curl",
|
|
"unzip",
|
|
"libtool",
|
|
"autoconf",
|
|
"automake",
|
|
"zlib1g-dev",
|
|
"libsqlite3-dev",
|
|
"pkg-config",
|
|
"sqlite3",
|
|
"bash-completion",
|
|
"swig",
|
|
"ant",
|
|
"openjdk-11-jdk",
|
|
"mono-mcs",
|
|
"mono-runtime",
|
|
"libmono-system-drawing4.0-cil",
|
|
"python3-dev",
|
|
"python3-numpy",
|
|
"python3-setuptools",
|
|
"python3-pip",
|
|
"postgis",
|
|
"postgresql",
|
|
"postgresql-postgis",
|
|
"gpsbabel",
|
|
"doxygen",
|
|
"libproj-dev",
|
|
"proj-data",
|
|
"libarchive-dev",
|
|
"libcurl4-gnutls-dev",
|
|
"libtiff5-dev",
|
|
"libopenjp2-7-dev",
|
|
"libcairo2-dev",
|
|
"libpng-dev",
|
|
"libjpeg-dev",
|
|
"libgif-dev",
|
|
"liblzma-dev",
|
|
"libgeos-dev",
|
|
"libxml2-dev",
|
|
"libexpat-dev",
|
|
"libxerces-c-dev",
|
|
"libnetcdf-dev",
|
|
"libpoppler-dev",
|
|
"libpoppler-private-dev",
|
|
"libspatialite-dev",
|
|
"librasterlite2-dev",
|
|
"libhdf4-alt-dev",
|
|
"libhdf5-serial-dev",
|
|
"libfreexl-dev",
|
|
"unixodbc-dev",
|
|
"mdbtools-dev",
|
|
"libwebp-dev",
|
|
"liblcms2-2",
|
|
"libpcre3-dev",
|
|
"libcrypto++-dev",
|
|
"libfyba-dev",
|
|
"libkml-dev",
|
|
"libmysqlclient-dev",
|
|
"libogdi-dev",
|
|
"libcfitsio-dev",
|
|
"libzstd-dev",
|
|
"libpq-dev",
|
|
"libssl-dev",
|
|
"libboost-dev",
|
|
"libarmadillo-dev",
|
|
"libopenexr-dev",
|
|
"libheif-dev",
|
|
"libdeflate-dev",
|
|
"libblosc-dev",
|
|
"liblz4-dev",
|
|
"libbz2-dev",
|
|
"libbrotli-dev",
|
|
"libqhull-dev",
|
|
"libjson-c-dev",
|
|
"libtiff5-dev",
|
|
];
|
|
|
|
config.ssh.forward_agent = true
|
|
config.ssh.forward_x11 = true
|
|
|
|
if Dir.glob("#{File.dirname(__FILE__)}/.vagrant/machines/default/*/id").empty?
|
|
pkg_cmd = ""
|
|
if ppaRepos.length > 0
|
|
ppaRepos.each { |repo| pkg_cmd << "add-apt-repository -y " << repo << " ; " }
|
|
end
|
|
|
|
# install packages we need
|
|
pkg_cmd << "apt-get update -qq; "
|
|
pkg_cmd << "apt-get --no-install-recommends install -q -y " + packageList.join(" ") << " ; "
|
|
|
|
# setup environment when we log in
|
|
pkg_cmd << "echo 'CCACHE_DIR=/vagrant/ccache_vagrant' >> /etc/environment; "
|
|
pkg_cmd << "echo 'cd /vagrant/build_vagrant; source /vagrant/scripts/setdevenv.sh' >> /home/vagrant/.bashrc; "
|
|
|
|
config.vm.provision :shell, :inline => pkg_cmd
|
|
scripts = [
|
|
"arrow-parquet.sh",
|
|
"postgis.sh",
|
|
"gdal.sh",
|
|
];
|
|
scripts.each { |script| config.vm.provision :shell, :privileged => false, :path => "scripts/vagrant/" << script }
|
|
end
|
|
end
|