legOS, today, does not install itself. Most open source projects do have an install. A study of our typical use forms and the needs of those that package legOS show we could benefit from having an install. This page is a proposal for adding the install capability to legOS.
We know of at least the following styles of legOS use:Today all of these forms of use require downloading the source package and building the operating system and tools after which one can finally start writing code for the robots and/or modifying the operating system and testing it.
- a person wants to experiment with the legOS operating system directly, modifying and testing it
- a person who is only interested in writing code for robots which are simply running a pre-built legOS.
- a person who wants to do both from time to time.
Why did I first think of needing an install make target for legOS?
When I packaged legOS for Debian where the most common model is for packages to be installed and ready for immediate use I created the first install of legOS. At the time I was not part of the legOS team so I simply built from source and setup my packaging rules to find the appropriate pieces and copy them to the proper installed location.This is why I first thought of adding install targets to legOS. Most packages which I maintain for Debian simply run the
'make depend; make all install'pattern and the Debian package-build then moves the parts the project install installed to the desired locations in the Debian file system structure. In the case of legOS I could not follow this patter because there was no install build rule.
Typical project install target is /usr/local (meaning local to current machine).So using /usr/local at the root, I propose the following install tree:
/usr/local/bin/usr/local/lib/{projectName}
- top level executables (dll, firmdl3)
/usr/local/include/{projectName}
- legOS.srec, legOS.lds, *.a (static library) files
- utilities (invoked from Makefile's: merge-map, makelx, genlds, fixdeps, fontdesign
- common Makefile parts: Makefile.common, and Makefile.user.
/usr/local/doc/{projectName}
- our include sub-tree which (today) expands to:
/usr/local/include/legos/
/usr/local/include/legos/c++
/usr/local/include/legos/kernel
/usr/local/include/legos/lnp
/usr/local/include/legos/lnp/sys
/usr/local/include/legos/rom
/usr/local/include/legos/sys/usr/local/man/man1
- /usr/local/doc/legos/ - general doc's ChangeLog, NEW, TODO, etc.
- /usr/local/doc/legos/examples - our demo sub-tree
- /usr/local/doc/legos/html - HTML based documentation: HOWTO, API doc's etc.
- dll.1 and firmdl3.1 man pages
Obviously, in order to have a new make target, Makefile's are going to need to change. There is a little more, however.
As I alter content of this page I'll update this ChangeLog with what I've done. This way one can obtain a quick overview of changes since the document was last viewed.
- May11
- First draft
For details on legOS at sourceforge, try the development page.Most of all, remember: Have fun.
For discussion on legOS, try the newsgroup at lugnet: lugnet.robotics.rcx.legos. This is definitely the best place to get legOS questions answered ASAP.
Hosted by: