Taste the Rainbow:0.7.0
Jump to navigation
Jump to search
This page is a guided tour of the source code of the rainbow-0.7.0 release.
Source Code Overview
Please start in my rainbow-0.7.0 tree.
./rainbow |--- README : Standard boilerplate about where work gets done; somewhat dated in this release. |--- conf : installation-time configuration files | \--- session-olpc.conf : applies some unusual dbus rules to allow many uids | to use the same session bus and enables OLPC-specific | dbus access checks. When /etc/olpc-security exists, | session-olpc.conf is loaded by /usr/bin/sugar | |--- docs : explanations & notes | |--- DESIGN : A discussion of how the predecessor to the current architecture arose. | \--- NOTES : various problems I have encountered and thoughts on how to solve them. | *--- rainbow.txt : a sketch & justification of the current design | \--- rainbow : source code |--- permissions : a stub based on the secure installation work that marcopg and | neuralis did together a few weeks ago |--- util : functions wrapping frequently used idioms or useful syscalls |--- stages : logic implementing activity launching |--- targets : control flow describing how to call activity-launching code \--- service.py : dbus service entry-point ./rainbow.spec.in : spec-file template for building RPMS ./Makefile.package : package-specific variables for use in ../Makefile.fedora ../Makefile.fedora : rules for making local snapshot builds and internal releases, prior to pushing to Fedora
Activity Launching
The key functions for launching activities are
These functions are called in the order listed from
which are, in turn, called from
These six functions (and the relatively simple helpers they call) exhaust the functionality provided by rainbow-0.7.0.
Developing Rainbow
I develop Rainbow in four basic modes:
- From a live git clone, when developing new features.
cp setup.py.in setup.py sed -i -e 's/@VERSION@/1/' setup.py python setup.py develop
- By packaging snapshots of a git clone to try out packaging changes.
make snapshot
- With locally-built or scratch-built packages, when I'm getting ready to tag a release.
make release
- With an official release, built with Fedora's Koji build system from sources archived in Fedora CVS.