├── .gitignore ├── LICENSE ├── README.md ├── Vagrantfile ├── buildbot.tac ├── centos-7.sh ├── debian-9.sh ├── freebsd-11.sh ├── install-mbedtls.sh ├── netbsd-7.sh ├── oas.sh ├── openbsd-6.sh ├── recipes └── Solaris113.txt ├── sbuild.sh ├── scripts ├── base.ps1 ├── build-deps.ps1 ├── buildbot.ps1 ├── cmake.ps1 ├── evaltimer.ps1 ├── git.ps1 ├── msibuilder.ps1 ├── pip.ps1 ├── ps_support.ps1 ├── python.ps1 ├── reboot.ps1 ├── vcpkg.ps1 └── vsbuildtools.ps1 ├── setup-generic-buildsystem.sh ├── setup-samba-share.sh ├── smb.conf.tmpl ├── solaris-113.sh └── ubuntu-1604.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | ubuntu-*-cloudimg-console.log 3 | *.swp 4 | buildbot-host/buildmaster/master.ini 5 | buildbot-host/buildmaster/worker.ini 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2017 Samuli Seppänen and OpenVPN Technologies, Inc (from this 2 | point onward "developers") and contributors. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation and/or 12 | other materials provided with the distribution. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ''AS IS'' AND ANY EXPRESS OR IMPLIED 15 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 17 | SHALL THE DEVELOPERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 18 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 19 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 21 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 22 | OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 23 | ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 | 25 | The views and conclusions contained in the software and documentation are those 26 | of the authors and should not be interpreted as representing official policies, 27 | either expressed or implied, of the developers. 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # openvpn-vagrant 2 | 3 | Vagrantfile and support scripts for use in OpenVPN development and testing. 4 | 5 | # Prequisites 6 | 7 | You need to install Virtualbox and Vagrant. 8 | 9 | # List of VMs 10 | 11 | The following Vagrant VM are provisioned to include everything needed to build 12 | OpenVPN on them. Both OpenSSL and MbedTLS builds are supported out of the box: 13 | 14 | * centos-7 15 | * debian-9 16 | * freebsd-11 17 | * netbsd-7 18 | * openbsd-6 19 | * solaris-113 20 | * ubuntu-1604 21 | * ubuntu-1804 22 | 23 | Note that it is not possible to legally distribute the base box for solaris-113; 24 | please refer to [recipes/Solaris113.txt](recipes/Solaris113.txt) for details. 25 | 26 | These VMs are special-purpose: 27 | 28 | * openvpn-build: cross-compile OpenVPN using [openvpn-build](https://github.com/OpenVPN/openvpn-build) (Ubuntu 16.04) 29 | * openvpn-build-bionic: cross-compile OpenVPN using [openvpn-build](https://github.com/OpenVPN/openvpn-build) (Ubuntu 18.04) 30 | * sbuild: build OpenVPN 2.x Debian/Ubuntu packages using [sbuild_wrapper](https://github.com/OpenVPN/sbuild_wrapper) (Ubuntu 18.04) 31 | * oas: [OpenVPN Access Server](https://openvpn.net/faq/what-is-openvpn-access-server/) for testing / experimentation (Ubuntu 18.04) 32 | * msibuilder: build package OpenVPN and package it as MSI using the [WiX toolset](http://wixtoolset.org) (Windows Server 2019) 33 | 34 | # Building and packaging OpenVPN on Windows for Windows 35 | 36 | Windows MSI packages can be built with the "msibuilder" VM. After provisioning 37 | you will find the build base directory under C:\\Users\\Vagrant\\build. To 38 | build just follow the instructions outlined in 39 | `openvpn-build/windows-msi/README.rst `_ 40 | 41 | # Logging into the Windows VMs from Linux 42 | 43 | If you're running Vagrant on Linux you're almost certainly using 44 | [FreeRDP](https://www.freerdp.com/). That means you have to accept the Windows 45 | VM's host key before attempting to "vagrant rdp" into it: 46 | 47 | $ xfreerdp /v:127.0.0.1:3389 48 | 49 | Once the host key is in FreeRDP's cache you can connect to the instance. For example: 50 | 51 | $ vagrant rdp msibuilder 52 | 53 | # Buildbot 54 | 55 | Everything buildbot-related is now in its own repository: 56 | 57 | * https://github.com/OpenVPN/openvpn-buildbot 58 | 59 | # TODO 60 | 61 | * Merge [testing: Add vagrant based integration tests](https://github.com/OpenVPN/openvpn/pull/45) into this repository 62 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | Vagrant.configure("2") do |config| 5 | 6 | config.vagrant.plugins = [ "vagrant-vbguest" ] 7 | 8 | config.vm.define "centos-7" do |box| 9 | box.vm.box = "centos/7" 10 | box.vm.box_version = "1710.01" 11 | box.vm.hostname = "centos-7.local" 12 | box.vm.network "private_network", ip: "192.168.58.101" 13 | box.vm.synced_folder ".", "/vagrant", type: "virtualbox" 14 | box.vm.provision "shell", path: "centos-7.sh" 15 | box.vm.provision "shell", path: "install-mbedtls.sh" 16 | box.vm.provider "virtualbox" do |vb| 17 | vb.gui = false 18 | vb.memory = 768 19 | end 20 | end 21 | 22 | config.vm.define "debian-9" do |box| 23 | box.vm.box = "debian/stretch64" 24 | box.vm.box_version = "9.2.0" 25 | box.vm.hostname = "debian-9.local" 26 | box.vm.network "private_network", ip: "192.168.58.102" 27 | box.vm.synced_folder ".", "/vagrant", type: "virtualbox" 28 | box.vm.provision "shell", path: "debian-9.sh" 29 | box.vm.provider "virtualbox" do |vb| 30 | vb.gui = false 31 | vb.memory = 768 32 | end 33 | end 34 | 35 | config.vm.define "freebsd-11" do |box| 36 | box.ssh.shell = "sh" 37 | box.vm.box = "openvpn/FreeBSD-11.1p3" 38 | box.vm.box_version = "1" 39 | box.vm.hostname = "freebsd-11.local" 40 | box.vm.network "private_network", ip: "192.168.58.103" 41 | box.vm.synced_folder ".", "/vagrant", type: "rsync" 42 | box.vm.provision "shell", path: "freebsd-11.sh" 43 | box.vm.provider "virtualbox" do |vb| 44 | vb.gui = false 45 | vb.memory = 768 46 | vb.customize ["modifyvm", :id, "--usb", "on"] 47 | vb.customize ["modifyvm", :id, "--usbehci", "off"] 48 | end 49 | end 50 | 51 | config.vm.define "openbsd-6" do |box| 52 | box.vm.box = "generic/openbsd6" 53 | box.vm.box_version = "1.2.38" 54 | box.vm.hostname = "openbsd-6.local" 55 | box.vm.network "private_network", ip: "192.168.58.104" 56 | box.vm.provision "shell", path: "openbsd-6.sh" 57 | box.vm.provider "virtualbox" do |vb| 58 | vb.gui = false 59 | vb.memory = 768 60 | end 61 | end 62 | 63 | config.vm.define "solaris-113" do |box| 64 | # we use a local box for licensing reasons, see recipes/Solaris113.txt 65 | box.vm.box = "solaris113-v1.box" 66 | #box.vm.box_version = "1" 67 | box.vm.hostname = "solaris113.local" 68 | box.vm.network "private_network", ip: "192.168.58.105" 69 | box.vm.provision "shell", path: "solaris-113.sh" 70 | box.vm.provider "virtualbox" do |vb| 71 | vb.gui = false 72 | vb.memory = 1024 73 | end 74 | end 75 | 76 | config.vm.define "ubuntu-1604" do |box| 77 | box.vm.box = "ubuntu/xenial64" 78 | box.vm.box_version = "20171118.0.0" 79 | box.vm.hostname = "ubuntu-1604.local" 80 | box.vm.network "private_network", ip: "192.168.58.106" 81 | box.vm.synced_folder ".", "/vagrant", type: "virtualbox" 82 | box.vm.provision "shell", path: "ubuntu-1604.sh" 83 | box.vm.provision "shell", path: "install-mbedtls.sh" 84 | box.vm.provider "virtualbox" do |vb| 85 | vb.gui = false 86 | vb.memory = 768 87 | end 88 | end 89 | 90 | config.vm.define "netbsd-7" do |box| 91 | box.vm.box = "netbsd/NetBSD-7.0" 92 | box.vm.box_version = "1.0.0" 93 | box.vm.hostname = "netbsd-7.local" 94 | box.vm.network "private_network", ip: "192.168.58.108" 95 | box.vm.provision "shell", path: "netbsd-7.sh" 96 | box.vm.synced_folder ".", "/vagrant", disabled: true 97 | box.vm.provider "virtualbox" do |vb| 98 | vb.gui = false 99 | vb.memory = 768 100 | end 101 | end 102 | 103 | config.vm.define "ubuntu-1804" do |box| 104 | box.vm.box = "ubuntu/bionic64" 105 | box.vm.box_version = "20180823.0.0" 106 | box.vm.hostname = "ubuntu-1804.local" 107 | box.vm.network "private_network", ip: "192.168.58.109" 108 | box.vm.provision "shell", path: "ubuntu-1604.sh" 109 | box.vm.provision "shell", path: "install-mbedtls.sh" 110 | box.vm.provider "virtualbox" do |vb| 111 | vb.gui = false 112 | vb.memory = 768 113 | end 114 | end 115 | 116 | config.vm.define "openvpn-build-bionic" do |box| 117 | box.vm.box = "ubuntu/bionic64" 118 | box.vm.box_version = "20180823.0.0" 119 | box.vm.hostname = "openvpn-build-bionic.local" 120 | box.vm.network "private_network", ip: "192.168.58.110" 121 | box.vm.synced_folder ".", "/vagrant", type: "virtualbox" 122 | box.vm.provision "shell" do |s| 123 | s.path = "setup-generic-buildsystem.sh" 124 | s.args = ["-f"] 125 | end 126 | box.vm.provision "shell", path: "setup-samba-share.sh" 127 | box.vm.provider "virtualbox" do |vb| 128 | vb.gui = false 129 | vb.memory = 1024 130 | end 131 | end 132 | 133 | config.vm.define "sbuild" do |box| 134 | box.vm.box = "ubuntu/bionic64" 135 | box.vm.box_version = "20180823.0.0" 136 | box.vm.hostname = "sbuild.local" 137 | box.vm.network "private_network", ip: "192.168.58.111" 138 | box.vm.provision "shell", path: "sbuild.sh" 139 | box.vm.provider "virtualbox" do |vb| 140 | vb.gui = false 141 | vb.memory = 1024 142 | end 143 | end 144 | 145 | config.vm.define "oas" do |box| 146 | box.vm.box = "ubuntu/bionic64" 147 | box.vm.box_version = "20191030.0.0" 148 | box.vm.hostname = "oas.local" 149 | box.vm.network "private_network", ip: "192.168.58.112" 150 | box.vm.provision "shell", path: "oas.sh" 151 | box.vm.provider "virtualbox" do |vb| 152 | vb.gui = false 153 | vb.memory = 2048 154 | end 155 | end 156 | 157 | config.vm.define "msibuilder" do |box| 158 | box.vm.box = "gusztavvargadr/windows-server" 159 | box.vm.box_version = "1809.0.2208" 160 | box.winrm.max_tries = 90 161 | box.winrm.retry_delay = 2 162 | box.winrm.timeout = 360 163 | box.vm.boot_timeout = 360 164 | box.vm.hostname = "msibuilder" 165 | box.vm.network "private_network", ip: "192.168.58.113" 166 | box.vm.synced_folder ".", "/vagrant" 167 | box.vm.provision "shell", path: "scripts/evaltimer.ps1" 168 | box.vm.provision "shell", path: "scripts/base.ps1" 169 | box.vm.provision "shell", path: "scripts/git.ps1" 170 | box.vm.provision "shell", path: "scripts/cmake.ps1" 171 | box.vm.provision "shell" do |s| 172 | s.path = "scripts/msibuilder.ps1" 173 | s.args = ["-workdir", "C:\\Users\\vagrant\\Downloads"] 174 | end 175 | box.vm.provision "shell", path: "scripts/python.ps1" 176 | box.vm.provision "shell", path: "scripts/pip.ps1" 177 | box.vm.provision "shell", path: "scripts/vsbuildtools.ps1" 178 | box.vm.provision "shell" do |s| 179 | s.path = "scripts/vcpkg.ps1" 180 | s.args = ["-workdir", "C:\\users\\vagrant\\buildbot\\windows-server-2019-static-msbuild"] 181 | end 182 | box.vm.provision "shell", path: "scripts/reboot.ps1" 183 | box.vm.provision "shell" do |s| 184 | s.path = "scripts/build-deps.ps1" 185 | s.args = ["-workdir", "C:\\users\\vagrant\\buildbot\\windows-server-2019-static-msbuild", 186 | "-openvpn_ref", "master", 187 | "-openvpn_build_ref", "master", 188 | "-openvpn_gui", "master", 189 | "-openssl", "openssl3"] 190 | end 191 | box.vm.provider "virtualbox" do |vb| 192 | vb.gui = false 193 | vb.cpus = 2 194 | vb.memory = 3072 195 | end 196 | box.vm.provider "hyperv" do |hv, override| 197 | hv.maxmemory = 3072 198 | hv.memory = 3072 199 | end 200 | end 201 | 202 | config.vm.define "msibuilder25" do |box| 203 | box.vm.box = "gusztavvargadr/windows-server" 204 | box.vm.box_version = "1809.0.2208" 205 | box.winrm.max_tries = 90 206 | box.winrm.retry_delay = 2 207 | box.winrm.timeout = 360 208 | box.vm.boot_timeout = 360 209 | box.vm.hostname = "msibuilder25" 210 | box.vm.network "private_network", ip: "192.168.58.114" 211 | box.vm.synced_folder ".", "/vagrant" 212 | box.vm.provision "shell", path: "scripts/evaltimer.ps1" 213 | box.vm.provision "shell", path: "scripts/base.ps1" 214 | box.vm.provision "shell", path: "scripts/git.ps1" 215 | box.vm.provision "shell", path: "scripts/cmake.ps1" 216 | box.vm.provision "shell" do |s| 217 | s.path = "scripts/msibuilder.ps1" 218 | s.args = ["-workdir", "C:\\Users\\vagrant\\Downloads"] 219 | end 220 | box.vm.provision "shell", path: "scripts/python.ps1" 221 | box.vm.provision "shell", path: "scripts/pip.ps1" 222 | box.vm.provision "shell", path: "scripts/vsbuildtools.ps1" 223 | box.vm.provision "shell" do |s| 224 | s.path = "scripts/vcpkg.ps1" 225 | s.args = ["-workdir", "C:\\users\\vagrant\\buildbot\\windows-server-2019-static-msbuild"] 226 | end 227 | box.vm.provision "shell", path: "scripts/reboot.ps1" 228 | box.vm.provision "shell" do |s| 229 | s.path = "scripts/build-deps.ps1" 230 | s.args = ["-workdir", "C:\\users\\vagrant\\buildbot\\windows-server-2019-static-msbuild", 231 | "-openvpn_ref", "release/2.5", 232 | "-openvpn_build_ref", "release/2.5", 233 | "-openvpn_gui", "master", 234 | "-openssl", "openssl"] 235 | end 236 | box.vm.provider "virtualbox" do |vb| 237 | vb.gui = false 238 | vb.cpus = 2 239 | vb.memory = 3072 240 | end 241 | box.vm.provider "hyperv" do |hv, override| 242 | hv.maxmemory = 3072 243 | hv.memory = 3072 244 | end 245 | end 246 | end 247 | -------------------------------------------------------------------------------- /buildbot.tac: -------------------------------------------------------------------------------- 1 | import fnmatch 2 | import os 3 | import sys 4 | 5 | from twisted.application import service 6 | from twisted.python.log import FileLogObserver 7 | from twisted.python.log import ILogObserver 8 | 9 | from buildbot_worker.bot import Worker 10 | 11 | # setup worker 12 | basedir = os.environ.get("BUILDBOT_BASEDIR", 13 | os.path.abspath(os.path.dirname(__file__))) 14 | application = service.Application('buildbot-worker') 15 | 16 | 17 | application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit) 18 | # and worker on the same process! 19 | buildmaster_host = os.environ.get("BUILDMASTER", 'localhost') 20 | port = int(os.environ.get("BUILDMASTER_PORT", 9989)) 21 | workername = os.environ.get("WORKERNAME", 'docker') 22 | passwd = os.environ.get("WORKERPASS") 23 | 24 | # delete the password from the environ so that it is not leaked in the log 25 | blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split() 26 | for name in list(os.environ.keys()): 27 | for toremove in blacklist: 28 | if fnmatch.fnmatch(name, toremove): 29 | del os.environ[name] 30 | 31 | keepalive = 600 32 | umask = None 33 | maxdelay = 300 34 | allow_shutdown = None 35 | maxretries = 10 36 | delete_leftover_dirs = False 37 | 38 | s = Worker(buildmaster_host, port, workername, passwd, basedir, 39 | keepalive, umask=umask, maxdelay=maxdelay, 40 | allow_shutdown=allow_shutdown, maxRetries=maxretries, 41 | delete_leftover_dirs=delete_leftover_dirs) 42 | s.setServiceParent(application) 43 | -------------------------------------------------------------------------------- /centos-7.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Preparing OpenVPN 2 build environment" 4 | echo 5 | yum -y install lzo-devel openssl-devel pam-devel pkcs11-helper-devel gnutls-devel autoconf libtool make cmake git net-tools 6 | echo 7 | echo "Preparing OpenVPN 3 build enviroment" 8 | echo 9 | yum install -y epel-release 10 | yum install -y mbedtls-devel glib2-devel jsoncpp-devel libuuid-devel lz4-devel gcc-c++ git autoconf automake make pkgconfig fping 11 | 12 | -------------------------------------------------------------------------------- /debian-9.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Updating package cache" 4 | apt-get update 5 | echo 6 | echo "Preparing OpenVPN 2 build environment" 7 | echo 8 | apt-get -y install liblzo2-dev libssl1.0-dev libpam-dev libpkcs11-helper1-dev libtool autoconf make cmake git fping net-tools liblz4-dev 9 | echo 10 | echo "Preparing OpenVPN 3 build environment" 11 | apt-get -y install pkg-config autoconf libglib2.0-dev libjsoncpp-dev uuid-dev libmbedtls-dev liblz4-dev build-essential 12 | -------------------------------------------------------------------------------- /freebsd-11.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Preparing OpenVPN build environment" 4 | pkg update 5 | pkg install --yes sudo automake autoconf fping git lzo2 liblz4 \ 6 | libtool mbedtls cmake 7 | 8 | # make sure tap driver is loaded (tun automatically is) 9 | kldload if_tap 10 | if grep if_tap /boot/loader.conf 11 | then 12 | echo "loader.conf already has if_tap" 13 | else 14 | echo 'if_tap_load="YES"' >>/boot/loader.conf 15 | fi 16 | 17 | # FreeBSD puts lzo into /usr/local/{include,lib} where our configure 18 | # will not find it -> make symlinks 19 | echo "creating lzo2 convenience symlinks..." 20 | cd /usr/include && ln -s ../local/include/lzo . 21 | cd /usr/lib && ln -s ../local/lib/liblzo2.* . 22 | 23 | # same thing for mbedtls... 24 | echo "creating mbedTLS convenience symlinks..." 25 | cd /usr/include && ln -s ../local/include/mbedtls . 26 | cd /usr/lib && ln -s ../local/lib/libmbed* . 27 | 28 | 29 | exit 0 30 | -------------------------------------------------------------------------------- /install-mbedtls.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | VERSION="2.6.0" 4 | BASENAME="mbedtls-$VERSION" 5 | TARBALL="$BASENAME-gpl.tgz" 6 | 7 | curl -O https://tls.mbed.org/download/$TARBALL 8 | tar -zxf $TARBALL 9 | cd $BASENAME 10 | make 11 | make install 12 | -------------------------------------------------------------------------------- /netbsd-7.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Preparing OpenVPN build environment" 4 | echo "installing packages... this will take a while if your network is slow" 5 | 6 | # https://www.netbsd.org/docs/pkgsrc/using.html 7 | PATH="/usr/pkg/sbin:$PATH" 8 | PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/7.0.2/All/" 9 | export PATH PKG_PATH 10 | 11 | # "-U" is needed to get cmake (because libarchive needs to be updated) 12 | pkg_add -U automake autoconf libtool fping git lzo lz4 mbedtls cmake 13 | 14 | # the fping package is stupid and is missing the "fping6" symlink 15 | echo "fixing missing fping6 symlink..." 16 | cd /usr/pkg/sbin && ln -s fping fping6 17 | 18 | # NetBSD puts lzo into /usr/pkg/{include,lib} where our configure 19 | # will not find it -> make symlinks 20 | echo "creating lzo2 convenience symlinks..." 21 | cd /usr/include && ln -s ../pkg/include/lzo . 22 | cd /usr/lib && ln -s ../pkg/lib/liblzo2.* . 23 | 24 | # same thing for mbedtls... 25 | echo "creating mbedTLS convenience symlinks..." 26 | cd /usr/include && ln -s ../pkg/include/mbedtls . 27 | cd /usr/lib && ln -s ../pkg/lib/libmbed* . 28 | 29 | exit 0 30 | -------------------------------------------------------------------------------- /oas.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Setting up OpenVPN Access Server" 4 | echo 5 | apt update && apt -y install ca-certificates wget net-tools 6 | wget -qO - https://as-repository.openvpn.net/as-repo-public.gpg | apt-key add - 7 | echo "deb http://as-repository.openvpn.net/as/debian bionic main">/etc/apt/sources.list.d/openvpn-as-repo.list 8 | apt update && apt -y install openvpn-as 9 | -------------------------------------------------------------------------------- /openbsd-6.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo "Preparing OpenVPN build environment" 4 | pkg_add -I sudo-- git autoconf-2.69p2 automake-1.15.1 \ 5 | fping lzo2 lz4 libtool mbedtls cmake 6 | 7 | # OpenBSD wants to be told which auto* version to run (can have multiple) 8 | echo "setting up AUTO_* environment variables (/etc/profile)" 9 | echo "export AUTOCONF_VERSION=2.69" >>/etc/profile 10 | echo "export AUTOMAKE_VERSION=1.15" >>/etc/profile 11 | 12 | # OpenBSD puts lzo into /usr/local/{include,lib} where our configure 13 | # will not find it -> make symlinks 14 | echo "creating lzo2 convenience symlinks..." 15 | cd /usr/include && ln -s ../local/include/lzo . 16 | cd /usr/lib && ln -s ../local/lib/liblzo2.* . 17 | 18 | # same thing for mbedtls... 19 | echo "creating mbedTLS convenience symlinks..." 20 | cd /usr/include && ln -s ../local/include/mbedtls . 21 | cd /usr/lib && ln -s ../local/lib/libmbed* . 22 | 23 | echo "done!" 24 | exit 0 25 | -------------------------------------------------------------------------------- /recipes/Solaris113.txt: -------------------------------------------------------------------------------- 1 | Build a (non-shared) Vagrant Box for Solaris 11.3 2 | ----------------------------------------------- 3 | 4 | - download the "Oracle Solaris 11.3 VM Template for Oracle VM VirtualBox" 5 | from 6 | 7 | http://www.oracle.com/technetwork/server-storage/solaris11/downloads/vm-templates-2245495.html 8 | (free license, but only for "developing and testing your software") 9 | 10 | -> sol-11_3-vbox.ova, about 1.8 Gbytes 11 | 12 | - import the ova into VirtualBox 13 | 14 | - work the installation menu (hostname, interface, timezone, language, ...) 15 | - root password (vagrant) 16 | - "create a user account" (vagrant/vagrant1) 17 | ["must contain one special character"] 18 | 19 | - machine will work a while, reboot, then come up with a gui login 20 | 21 | - vagrant has sudo rights, but no "no password" -> 22 | 23 | sudo bash 24 | echo "vagrant ALL=(ALL) NOPASSWD: ALL" >>sudoers 25 | 26 | - install the "known insecure" key for vagrant 27 | 28 | $ cd 29 | $ mkdir .ssh 30 | $ wget --no-check-certificate -O .ssh/authorized_keys \ 31 | https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub 32 | 33 | - no packages yet (nothing, no cc, auto*, git) 34 | 35 | $ sudo pkg install gcc autoconf automake libtool git 36 | 37 | non-existing: lzo2 lz4 mbedtls fping 38 | 39 | - get 3rd party packages: 40 | 41 | https://www.opencsw.org/package/fping/ 42 | https://www.opencsw.org/packages/CSWliblzo-dev [??] 43 | 44 | $ sudo pkgadd -d http://get.opencsw.org/now 45 | $ sudo /opt/csw/bin/pkgutil -U 46 | $ sudo /opt/csw/bin/pkgutil -y -i liblzo_dev fping 47 | 48 | (/opt/csw/include/lzo, /opt/csw/lib/liblzo2*) 49 | 50 | - base system updates 51 | 52 | $ sudo pkg install entire 53 | 54 | (do not ask...) 55 | 56 | 57 | - still missing at this point: 58 | - lz4 (use bundled) 59 | - mbedtls (compile on demand) 60 | - tun/tap driver! 61 | 62 | - shutdown -> pass to vagrant 63 | 64 | sudo init 0 65 | 66 | 67 | - export as vagrant box 68 | 69 | vagrant package --base sol-11_3-vbox --output solaris113-v1.box 70 | (15+ minutes, the vdisk needs about 2.3Gbyte of space) 71 | 72 | -rw-r--r-- 1 gert users 2236915305 Nov 12 16:45 solaris113-v1.box 73 | 74 | - possibly clean up $HOME/.vagrant.d/tmp/vagrant-package-