Skip to content

Instantly share code, notes, and snippets.

@TTimo
Created August 27, 2013 14:50
Show Gist options
  • Save TTimo/6354568 to your computer and use it in GitHub Desktop.
Save TTimo/6354568 to your computer and use it in GitHub Desktop.
* Full build system redesign
I need to ditch the whole es_downloader horror and build something clean from scratch
I don't think it's even worth pursuing the current effort on Linux/OSX
Need to put down some clear goals to hit with a rewrite though.
** As a Developer, I expect to leverage build systems provided with the software I use
ACCEPTANCE TESTS:
- Not wasting time rewriting build system
- Not dealing with gyp at any point
- Extend and tweak the build systems that come with the software as needed
** As a Developer, I expect to write the build systems for all platforms
ACCEPTANCE TESTS:
- Reduce the amount of platform specific work
- Pick build technologies that adapt well to multiple platforms
** As a Developer, I expect the Linux compilation to install all the software to a special build prefix
ACCEPTANCE TESTS:
- Use one build prefix for all the supporting software
- Consider having final targets (es_core) use that prefix as well
** As a Developer, I expect to be able to quickly clean/update/rebuild specific components
ACCEPTANCE TESTS:
- Can clean and fully rebuild any specific part independently: Ogre for instance, or libzmq etc.
COMMENTS:
Is this the main argument for buildbot? Having a web page, where I can say 'clean this, update this, rebuild this'
** As a Developer, I expect release packaging to be integrated with the build system
ACCEPTANCE TESTS:
- The build system can go all the way to upload a new build to the public
** As a Developer, I expect a build system that is easy for everyone to add they own components and modify
ACCEPTANCE TESTS:
- Pick widely used technologies
- Make a documentation effort
** As a Developer, I expect to support making variant builds on a large scale easily
ACCEPTANCE TESTS:
- Can easily 'clone' an entire build setup and use a different branch for ogre for instance
- Can easily output builds side by side with a different compiler
- Support some kind of 'global build settings'
COMMENTS:
Is it crazy to think about scons at the top level?
Generate the BB configurations to give insight into the build steps and interactivity.
** As a Developer, I expect to write basic logic pieces that will help the build system as independent modules
ACCEPTANCE TESTS:
- Abstract out the logic of 'clone or update', 'checkout or update' into independent modules
- Make no assumptions on the overall environment, pass only the required configuration
- Python modules
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment