Add support for vagrant-docker (#389)

* clean trailing ws in Vagrantfile and util/avr_setup.sh

* replace triple quotes with heredoc.

Ruby doesn't have triple quotes; that's a Python thing. This was just being
parsed as multiple strings concatenated.

* add docker support to Vagrantfile

* make wants to find dfu-programmer in vagrant guest
This commit is contained in:
Aron Griffis 2016-06-07 12:41:55 -04:00 committed by Jack Humbert
parent 6b8b332f77
commit fd454e5b74
2 changed files with 101 additions and 89 deletions

186
Vagrantfile vendored
View file

@ -1,88 +1,98 @@
# -*- mode: ruby -*- # -*- mode: ruby -*-
# vi: set ft=ruby : # vi: set ft=ruby :
Vagrant.configure(2) do |config| Vagrant.configure(2) do |config|
# You can only have one config.vm.box uncommented at a time # You can only have one config.vm.box uncommented at a time
# Comment this and uncomment another if you don't want to use the minimal Arch box # Comment this and uncomment another if you don't want to use the minimal Arch box
config.vm.box = "dragon788/arch-ala-elasticdog" config.vm.box = "dragon788/arch-ala-elasticdog"
# VMware/Virtualbox 64 bit # VMware/Virtualbox 64 bit
# config.vm.box = "phusion/ubuntu-14.04-amd64" # config.vm.box = "phusion/ubuntu-14.04-amd64"
# #
# VMware/Virtualbox 64 bit # VMware/Virtualbox 64 bit
#config.vm.box = "puphpet/centos65-x64" #config.vm.box = "puphpet/centos65-x64"
# #
# The opensuse boxes don't have dfu-util in their default repositories # The opensuse boxes don't have dfu-util in their default repositories
# #
# The virtualbox version has tools issues # The virtualbox version has tools issues
# VMware/Virtualbox 64 bit # VMware/Virtualbox 64 bit
#config.vm.box = "bento/opensuse-13.2-x86_64" #config.vm.box = "bento/opensuse-13.2-x86_64"
# #
# Virtualbox only # Virtualbox only
#config.vm.box = "bento/opensuse-13.2-i386" #config.vm.box = "bento/opensuse-13.2-i386"
# config.vm.box = "" # config.vm.box = ""
# config.vm.box = "" # config.vm.box = ""
# This section allows you to customize the Virtualbox VM # This section allows you to customize the Virtualbox VM
# settings, ie showing the GUI or upping the memory # settings, ie showing the GUI or upping the memory
# or cores if desired # or cores if desired
config.vm.provider "virtualbox" do |vb| config.vm.provider "virtualbox" do |vb|
# Hide the VirtualBox GUI when booting the machine # Hide the VirtualBox GUI when booting the machine
vb.gui = false vb.gui = false
# Uncomment the below lines if you want to program # Uncomment the below lines if you want to program
# your Teensy via the VM rather than your host OS # your Teensy via the VM rather than your host OS
#vb.customize ['modifyvm', :id, '--usb', 'on'] #vb.customize ['modifyvm', :id, '--usb', 'on']
#vb.customize ['usbfilter', 'add', '0', #vb.customize ['usbfilter', 'add', '0',
# '--target', :id, # '--target', :id,
# '--name', 'teensy', # '--name', 'teensy',
# '--vendorid', '0x16c0', # '--vendorid', '0x16c0',
# '--productid','0x0478' # '--productid','0x0478'
# ] # ]
# Customize the amount of memory on the VM: # Customize the amount of memory on the VM:
vb.memory = "512" vb.memory = "512"
end end
# This section allows you to customize the VMware VM # This section allows you to customize the VMware VM
# settings, ie showing the GUI or upping the memory # settings, ie showing the GUI or upping the memory
# or cores if desired # or cores if desired
config.vm.provider "vmware_workstation" do |vmw| config.vm.provider "vmware_workstation" do |vmw|
# Hide the VMware GUI when booting the machine # Hide the VMware GUI when booting the machine
vmw.gui = false vmw.gui = false
# Customize the amount of memory on the VM: # Customize the amount of memory on the VM:
vmw.memory = "512" vmw.memory = "512"
end end
config.vm.provider "vmware_fusion" do |vmf| config.vm.provider "vmware_fusion" do |vmf|
# Hide the vmfare GUI when booting the machine # Hide the vmfare GUI when booting the machine
vmf.gui = false vmf.gui = false
# Customize the amount of memory on the VM: # Customize the amount of memory on the VM:
vmf.memory = "512" vmf.memory = "512"
end end
# This script ensures the required packages for AVR programming are installed # Docker provider pulls from hub.docker.com respecting docker.image if
# It also ensures the system always gets the latest updates when powered on # config.vm.box is nil. Note that this bind-mounts from the current dir to
# If this causes issues you can run a 'vagrant destroy' and then # /vagrant in the guest, so unless your UID is 1000 to match vagrant in the
# add a # before ,args: and run 'vagrant up' to get a working # image, you'll need to: chmod -R a+rw .
# non-updated box and then attempt to troubleshoot or open a Github issue config.vm.provider "docker" do |docker, override|
override.vm.box = nil
config.vm.provision "shell", run: "always", path: "./util/avr_setup.sh", args: "-update" docker.image = "jesselang/debian-vagrant:jessie"
docker.has_ssh = true
config.vm.post_up_message = """ end
Log into the VM using 'vagrant ssh' on OSX or from Git Bash (Win)
or 'vagrant ssh-config' and Putty or Bitvise SSH or another SSH tool # This script ensures the required packages for AVR programming are installed
# It also ensures the system always gets the latest updates when powered on
Change directory (cd) to the keyboard you wish to program # If this causes issues you can run a 'vagrant destroy' and then
(Optionally) modify your layout, # add a # before ,args: and run 'vagrant up' to get a working
then run 'make clean' # non-updated box and then attempt to troubleshoot or open a Github issue
and then 'make' to compile the .eep and .hex files.
config.vm.provision "shell", run: "always", path: "./util/avr_setup.sh", args: "-update"
Or you can copy and paste the example line below.
config.vm.post_up_message = <<-EOT
cd /vagrant; cd keyboard; cd ergodox_ez; make clean; make Log into the VM using 'vagrant ssh' on OSX or from Git Bash (Win)
or 'vagrant ssh-config' and Putty or Bitvise SSH or another SSH tool
""" Change directory (cd) to the keyboard you wish to program
end (Optionally) modify your layout,
then run 'make clean'
and then 'make' to compile the .eep and .hex files.
Or you can copy and paste the example line below.
cd /vagrant; cd keyboard; cd ergodox_ez; make clean; make
EOT
end

View file

@ -38,8 +38,9 @@ elif [[ -n "$(type -P apt-get)" ]]; then
gcc-avr \ gcc-avr \
binutils-avr \ binutils-avr \
avr-libc \ avr-libc \
dfu-programmer \
dfu-util dfu-util
elif [[ -n "$(type -P yum)" ]]; then elif [[ -n "$(type -P yum)" ]]; then
# Fedora, CentOS or RHEL and derivatives # Fedora, CentOS or RHEL and derivatives
yum -y makecache && yum -y update yum -y makecache && yum -y update
@ -55,6 +56,7 @@ elif [[ -n "$(type -P yum)" ]]; then
avr-binutils \ avr-binutils \
avr-gcc \ avr-gcc \
avr-libc \ avr-libc \
dfu-programmer \
dfu-util dfu-util
elif [[ -n "$(type -P zypper)" ]]; then elif [[ -n "$(type -P zypper)" ]]; then