WellDone/MoMo-Firmware — pull request #53 by amcgee (2014-03-20 23:28:53+00:00)
Title: Create a virtual development environment

All dependancies are automatically download and installed in a self-contained VM. Vagrant is used to manage the virtual machine, tested with Vagrant 1.5.1.

Development setup procedure:
* Clone the depot
* Install [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
* Install [Vagrant](http://www.vagrantup.com/downloads.html)
* run `vagrant up` from anywhere in the cloned repository. (this will take a while the first time, faster later)
* run `vagrant ssh` to ssh into the virtual machine (On Windows, [do this](http://stackoverflow.com/questions/9885108/ssh-to-vagrant-box-in-windows))
* compile source by executing i.e. `cd /vagrant/momo_modules/gsm_module; mibtool build build/output` NOTE: /vagrant is a live share with the host machine's root repository directory. Changes made there are reflected on the guest and vice versa.
* connect an FSU and run i.e. `modtool list` from anywhere in the VM - USB devices matching the FSU's vid and pid are automatically attached to the VM

TODO:
* Install gpsim so the VM can compile and run unit tests. This shouldn't be difficult.
* Make an easy build alias - like a simple makefile in the vagrant user's home directory. Ideally you should just be able to say `./momo build gsm_module` from the host machine and everything works.
* Add support for building things in places other than the main root directory (for when we split repos)
* Make initial install faster - right now there's half a gig of downloads for the base VM and xc8/xc16. This could be prohibitively expensive in low-bandwidth situations. Note that once you've download the base box and xc installers they are cached for later use.
* Do more cool stuff