-- Starting Point --
- <http://www.openafs.org/cgi-bin/cvsweb.cgi/openafs/doc/pdf/> Early architectural documents. Out of date, but still important. You should especially read the Architectural Overview document (archov-doc.pdf)
-- <http://www.eyrie.org/~eagle/tmp/openafs/1/rxgen.html> for more rxgen documentation
- To understand the source layout, consult src/SOURCE-MAP -- this is a good place to go after reading the Architectural Overview
- Need to document the build environment issues -- README, README.DEVEL, README.CVS
- src/BUILDNOTES (at least in the 1.4 tree) is not very helpful
-- Source Browsing --
-- Getting the source, preferably via CVS
+- The source tree has been converted to git - see [[GitDevelopers]] for how to access it.
+- If you must use CVS, see [[OpenAFSCVS]]
-README.CVS has the following line:
+But in that tree, README.CVS has the following line:
Do not use the CVS tree unless you know what you're doing.
- **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:
-` find . -name \*.xg -exec grep -H "^package" {} \; | grep -v 'example' | grep -v 'bulktest' | sed -e 's|^./src/||' | sed -e 's/package/ /' | awk '{printf "%10s %s\n", $2, $1}' `
-
-which results in: ` VOTE_ ubik/ubik_int.xg: DISK_ ubik/ubik_int.xg: SAMPLE_ ubik/utst_int.xg: VL_ vlserver/vldbint.xg: UPDATE_ update/update.xg: TEST_ rxgk/test.xg: RXGK_ rxgk/rxgk_proto.xg: RXAFSCB_ fsint/afscbint.xg: RXAFS_ fsint/afsint.xg: RXSTATS_ rxstat/rxstat.xg: PR_ ptserver/ptint.xg: BOZO_ bozo/bosint.xg: BUMON_ bubasics/backmon.xg: TC_ bubasics/butc.xg: BC_ bubasics/bumon.xg: ADK_ dauth/adkint.xg: RMTSYS_ sys/rmtsys.xg: AFSVol volser/volint.xg: `
+ find . -name \*.xg -exec grep -H "^package" {} \; | grep -v 'example' | grep -v 'bulktest' | \
+ sed -e 's|^./src/||' | sed -e 's/package/ /' | awk '{printf "%10s %s\n", $2, $1}'
+
+which results in:
+
+ VOTE_ ubik/ubik_int.xg:
+ DISK_ ubik/ubik_int.xg:
+ SAMPLE_ ubik/utst_int.xg:
+ VL_ vlserver/vldbint.xg:
+ UPDATE_ update/update.xg:
+ TEST_ rxgk/test.xg:
+ RXGK_ rxgk/rxgk_proto.xg:
+ RXAFSCB_ fsint/afscbint.xg:
+ RXAFS_ fsint/afsint.xg:
+ RXSTATS_ rxstat/rxstat.xg:
+ PR_ ptserver/ptint.xg:
+ BOZO_ bozo/bosint.xg:
+ BUMON_ bubasics/backmon.xg:
+ TC_ bubasics/butc.xg:
+ BC_ bubasics/bumon.xg:
+ ADK_ dauth/adkint.xg:
+ RMTSYS_ sys/rmtsys.xg:
+ AFSVol volser/volint.xg:
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`.
In addition to the package name, also note that only rxstat uses an M prefix; all others use S.
-- cscope: what it is, how to set up, how to use, example
+- Assuming you have a fairly modern grep, you can use its recursive facility:
+
+ $ **grep -r regex .**
+
+and find every time <pattern> appears in a file
+
+- If you're looking for one specific word, the <tt>-w</tt> switch is your friend as well.
+
+ $ **egrep -w -r VFORMAT .**
+
+will find all instances of **VFORMAT** but will not find **ABVFORMAT**
+
+- cscope: a source code browser, linked to your editor. Setup is simple: cd to your source tree and run:
+
+ $ **cscope -R -b**
+
+Then run
+
+ $ **cscope -d**
+
+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`.
+
- doxygen: what it is, how to set up, how to use, how to make even more useful (ie, src code changes)
+
- gdb: examples of using (primarily b, bt)
+[Mari Berkomunitas Di Faceblog](http://www.rofingi.com/2011/05/mari-berkomunitas-di-faceblog.html)