Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Short Question
What is the best way to create, maintain, and distribute software development tool chains?

Background
I 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. Note that this is a follow up to these SU questions one and two.

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 Machine
Pros

  • Open Source packaging via Virtual Box
  • 100% isolation
  • Guarantees the tools can interact with one another

Cons

  • Licensing multiple copies of windows
  • At 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 maintain

Option 2: Virtualized Application
Pros

  • Through 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 Thoughts
There 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.

share|improve this question
1  
Have you looked at the option of doing development using a cloud based platform ? While the field is in its infancy it is one with potential IMO to deal with the licensing and version issues you seem to be looking at. An example IDE would be (github.com/ajaxorg/cloud9). –  Nikhil Sep 5 '11 at 3:20
    
@Nikhil: I am all in favor of cloud based systems, however because there is often times where we have limited or no internet connectivity cloud base solutions may hinder progress. In addition, the embedded world is still predominately Windows based and each MCU often requires its own specialized IDE. –  Adam Lewis Sep 5 '11 at 3:30
    
@Nikhil: +1 for cloud9. I just set up an account and this is a really cool concept. However using this concept for embedded is a long way off because of the requirement that burning the generated HEX file to a physical target (usually via USB). –  Adam Lewis Sep 5 '11 at 3:45
    
Out of curiosity, what was the down vote for? I am all for improving the questions, but without a comment or answer explains what needs to change it's rather hard. –  Adam Lewis Sep 5 '11 at 5:57
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.