Short QuestionWhat is the best way to create, maintain, and distribute software development tool chains?  BackgroundI am trying to develop a workflow / process to create an isolated environment in install and deploy software tool chains for embedded targets.  Each tool chain typically would contain an IDE, compiler, and a small set of common tools.  I have looked into two solutions but the both have their limitations and I hope to find a solution that has the best of both implementations.  The rational behind a stand alone tool chain is so that all developers would be able to build the exact same code (matching CRC etc..).  As well as be able to rebuild the same code after X number of years to support legacy code.  A third option would be to use a central build server, which we plan on doing for nightly builds, but we still need to be able to build 'on the fly' when working on a test bench or remotely.  So only using a build server will not suffice.  Ideal Goals for Deployed tool chain Work on Windows XP, Vista, and 7 (excluding drivers)  Contain all required information to run use the tool chain (excluding drivers)  ------------------ Possible Options ------------------ Option 1: Full Stand alone Virtual MachineProsOpen Source packaging via Virtual Box100% isolation Guarantees the tools can interact with one another  Cons Licensing multiple copies of windowsAt best only one developer could legally use a Windows VM at a time.  Running the same VM on physically different lap tops (Macbook Pro, Dell 830, Dell E6500, etc...).  Typically when Windows see's a new CPU or motherboard it will force a re-activation.  Very large files to maintainOption 2: Virtualized ApplicationProsThrough packagers like Cameyo, applications can run on nearly all versions of Windows.  (Note that Cameyo is also free)Little to no licensing issues for most tools / IDEs.  Purchased compilers might have additional restrictions, all of our current compilers do support this type of usage.  Smaller files to maintain via a SCM, such as  SVN or GIT.  Cons Difficult, if even possible, to get a single file that contains the entire tool chain  Difficult, if even possible, to get the tools to see / work with one another.  I have seen this very issue with Cameyo.  Closing ThoughtsThere may not be a solution that meets all of my design goals, but I would like to find out if anyone else been successful in this type of deployment.
What is the best way to maintain software tool chains?
development process;windows;virtual machine;developer tools;virtualization