1 -- Steven Jenkins - 08 Jun 2007
3 This is an entry point into the code architecture. As always, the source for your release is the authoritative reference, but this wiki is designed to help navigate the source and point out relevant documentation.
7 - Early architectural documents are in the source tree at openafs/doc/pdf. They are out of date, but still important. You should especially read the Architectural Overview document (archov-doc.pdf)
8 - To understand the source layout, consult src/SOURCE-MAP -- this is a good place to go after reading the Architectural Overview
9 - Need to document the build environment issues -- README, README.DEVEL, README.CVS
10 - src/BUILDNOTES (at least in the 1.4 tree) is not very helpful
14 - The source tree has been converted to git - see [[GitDevelopers]] for how to access it.
15 - If you must use CVS, see [[OpenAFSCVS]]
17 But in that tree, README.CVS has the following line:
19 Do not use the CVS tree unless you know what you're doing.
21 This document helps you learn what you're doing.
23 - cvs co, regen.sh (& when to run regen.sh)
26 In the source itself ---
28 - **find | grep** is very helpful. For example, to find all the RX packages (ie, so that you can start to identify the various namespaces of components), you can do:
30 find . -name \*.xg -exec grep -H "^package" {} \; | grep -v 'example' | grep -v 'bulktest' | \
31 sed -e 's|^./src/||' | sed -e 's/package/ /' | awk '{printf "%10s %s\n", $2, $1}'
35 VOTE_ ubik/ubik_int.xg:
36 DISK_ ubik/ubik_int.xg:
37 SAMPLE_ ubik/utst_int.xg:
38 VL_ vlserver/vldbint.xg:
39 UPDATE_ update/update.xg:
41 RXGK_ rxgk/rxgk_proto.xg:
42 RXAFSCB_ fsint/afscbint.xg:
43 RXAFS_ fsint/afsint.xg:
44 RXSTATS_ rxstat/rxstat.xg:
45 PR_ ptserver/ptint.xg:
47 BUMON_ bubasics/backmon.xg:
49 BC_ bubasics/bumon.xg:
51 RMTSYS_ sys/rmtsys.xg:
52 AFSVol volser/volint.xg:
54 In other words, if something starts with BOZO\_, you know that it is generated by rxgen, and the interface is defined in `bozo/bosint.xg`.
56 In addition to the package name, also note that only rxstat uses an M prefix; all others use S.
58 - Assuming you have a fairly modern grep, you can use its recursive facility:
62 and find every time <pattern> appears in a file
64 - If you're looking for one specific word, the <tt>-w</tt> switch is your friend as well.
66 $ **egrep -w -r VFORMAT .**
68 will find all instances of **VFORMAT** but will not find **ABVFORMAT**
70 - cscope: a source code browser, linked to your editor. Setup is simple: cd to your source tree and run:
78 to start. The interface is simple. I tend to use it for finding things, but not necessarily for editing. When I'm studying the source, trying to understand how components link together, or bug-hunting, I tend to live inside `cscope`.
80 - doxygen: what it is, how to set up, how to use, how to make even more useful (ie, src code changes)
82 - gdb: examples of using (primarily b, bt)