From fd454e5b74bc0a87effd755986ce33bf05b4d27c Mon Sep 17 00:00:00 2001 From: Aron Griffis Date: Tue, 7 Jun 2016 12:41:55 -0400 Subject: [PATCH] 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 --- Vagrantfile | 186 ++++++++++++++++++++++++---------------------- util/avr_setup.sh | 4 +- 2 files changed, 101 insertions(+), 89 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index c44eaf2d69..a6c3afd385 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,88 +1,98 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - -Vagrant.configure(2) do |config| - # 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 - config.vm.box = "dragon788/arch-ala-elasticdog" - - # VMware/Virtualbox 64 bit - # config.vm.box = "phusion/ubuntu-14.04-amd64" - # - # VMware/Virtualbox 64 bit - #config.vm.box = "puphpet/centos65-x64" - # - # The opensuse boxes don't have dfu-util in their default repositories - # - # The virtualbox version has tools issues - # VMware/Virtualbox 64 bit - #config.vm.box = "bento/opensuse-13.2-x86_64" - # - # Virtualbox only - #config.vm.box = "bento/opensuse-13.2-i386" - # config.vm.box = "" - # config.vm.box = "" - - # This section allows you to customize the Virtualbox VM - # settings, ie showing the GUI or upping the memory - # or cores if desired - config.vm.provider "virtualbox" do |vb| - # Hide the VirtualBox GUI when booting the machine - vb.gui = false - # Uncomment the below lines if you want to program - # your Teensy via the VM rather than your host OS - #vb.customize ['modifyvm', :id, '--usb', 'on'] - #vb.customize ['usbfilter', 'add', '0', - # '--target', :id, - # '--name', 'teensy', - # '--vendorid', '0x16c0', - # '--productid','0x0478' - # ] - # Customize the amount of memory on the VM: - vb.memory = "512" - end - - # This section allows you to customize the VMware VM - # settings, ie showing the GUI or upping the memory - # or cores if desired - config.vm.provider "vmware_workstation" do |vmw| - # Hide the VMware GUI when booting the machine - vmw.gui = false - - # Customize the amount of memory on the VM: - vmw.memory = "512" - end - - config.vm.provider "vmware_fusion" do |vmf| - # Hide the vmfare GUI when booting the machine - vmf.gui = false - - # Customize the amount of memory on the VM: - vmf.memory = "512" - end - - # This script ensures the required packages for AVR programming are installed - # It also ensures the system always gets the latest updates when powered on - # If this causes issues you can run a 'vagrant destroy' and then - # add a # before ,args: and run 'vagrant up' to get a working - # non-updated box and then attempt to troubleshoot or open a Github issue - - config.vm.provision "shell", run: "always", path: "./util/avr_setup.sh", args: "-update" - - config.vm.post_up_message = """ - 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 - (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 - - - """ -end +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure(2) do |config| + # 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 + config.vm.box = "dragon788/arch-ala-elasticdog" + + # VMware/Virtualbox 64 bit + # config.vm.box = "phusion/ubuntu-14.04-amd64" + # + # VMware/Virtualbox 64 bit + #config.vm.box = "puphpet/centos65-x64" + # + # The opensuse boxes don't have dfu-util in their default repositories + # + # The virtualbox version has tools issues + # VMware/Virtualbox 64 bit + #config.vm.box = "bento/opensuse-13.2-x86_64" + # + # Virtualbox only + #config.vm.box = "bento/opensuse-13.2-i386" + # config.vm.box = "" + # config.vm.box = "" + + # This section allows you to customize the Virtualbox VM + # settings, ie showing the GUI or upping the memory + # or cores if desired + config.vm.provider "virtualbox" do |vb| + # Hide the VirtualBox GUI when booting the machine + vb.gui = false + # Uncomment the below lines if you want to program + # your Teensy via the VM rather than your host OS + #vb.customize ['modifyvm', :id, '--usb', 'on'] + #vb.customize ['usbfilter', 'add', '0', + # '--target', :id, + # '--name', 'teensy', + # '--vendorid', '0x16c0', + # '--productid','0x0478' + # ] + # Customize the amount of memory on the VM: + vb.memory = "512" + end + + # This section allows you to customize the VMware VM + # settings, ie showing the GUI or upping the memory + # or cores if desired + config.vm.provider "vmware_workstation" do |vmw| + # Hide the VMware GUI when booting the machine + vmw.gui = false + + # Customize the amount of memory on the VM: + vmw.memory = "512" + end + + config.vm.provider "vmware_fusion" do |vmf| + # Hide the vmfare GUI when booting the machine + vmf.gui = false + + # Customize the amount of memory on the VM: + vmf.memory = "512" + end + + # Docker provider pulls from hub.docker.com respecting docker.image if + # config.vm.box is nil. Note that this bind-mounts from the current dir to + # /vagrant in the guest, so unless your UID is 1000 to match vagrant in the + # image, you'll need to: chmod -R a+rw . + config.vm.provider "docker" do |docker, override| + override.vm.box = nil + docker.image = "jesselang/debian-vagrant:jessie" + docker.has_ssh = true + end + + # This script ensures the required packages for AVR programming are installed + # It also ensures the system always gets the latest updates when powered on + # If this causes issues you can run a 'vagrant destroy' and then + # add a # before ,args: and run 'vagrant up' to get a working + # non-updated box and then attempt to troubleshoot or open a Github issue + + config.vm.provision "shell", run: "always", path: "./util/avr_setup.sh", args: "-update" + + config.vm.post_up_message = <<-EOT + 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 + (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 diff --git a/util/avr_setup.sh b/util/avr_setup.sh index 34a8a3281b..916d0378b4 100644 --- a/util/avr_setup.sh +++ b/util/avr_setup.sh @@ -38,8 +38,9 @@ elif [[ -n "$(type -P apt-get)" ]]; then gcc-avr \ binutils-avr \ avr-libc \ + dfu-programmer \ dfu-util - + elif [[ -n "$(type -P yum)" ]]; then # Fedora, CentOS or RHEL and derivatives yum -y makecache && yum -y update @@ -55,6 +56,7 @@ elif [[ -n "$(type -P yum)" ]]; then avr-binutils \ avr-gcc \ avr-libc \ + dfu-programmer \ dfu-util elif [[ -n "$(type -P zypper)" ]]; then