Men­tor­ing again in the GSoC

Seems that I will active­ly men­tor again in this Google Sum­mer of Code (as opposed to just review the sub­mis­sions from stu­dents and/or act­ing as a fall-back mentor).

The project I will men­tor is the “Make option­al ker­nel sub­sys­tems reg­is­ter them­selves via sysctl”-one from the FreeB­SD ideas page.

The stu­dent already got into con­tact with me and it looks like he is moti­vat­ed (he is already sub­scribed to sev­er­al FreeB­SD mail­inglists, which is not a require­ment we have in our GSoC docs).

Doxy­gen stuff updat­ed in 9‑current

I com­mit­ted my patch for tools/kerneldoc/subsys. Except for not gen­er­at­ing the PDF part, this is now the same con­fig which I use to gen­er­ate the online ver­sion. While writ­ing the com­mit log I noticed that I did more changes than I thought…

So any­one who wants to gen­er­ate the Doxy­gen docs of some FreeB­SD ker­nel sub­sys­tems on his own, can do it now. Adding more sub­sys­tems is easy, just make a copy of one the the exist­ing Doxyfile-* files – keep the same nam­ing scheme – and change the con­tents. Every­thing else is han­dled automatically.

I also added a link to the FreeB­SD wiki. It is not at a promi­nent place (near the end of the main page), but at least some­one can find the link to the my FreeBSD-doxygen page there.

Dai­ly doxy­gen gen­er­at­ed docs of the FreeB­SD ker­nel (head)

I man­aged to get some time to set­up an auto­mat­ed gen­er­a­tion of the doxy­gen docs for ker­nel sub­sys­tems of FreeB­SD on my webserver.

Every night/morning (Ger­man time­zone) the sources will be updat­ed, and the docs get regen­er­at­ed (this takes some time). Cur­rent­ly this depends upon some patch­es to the make­file and doxy­gen con­fig files in tools/kerneldoc/subsys. Every­thing is gen­er­at­ed direct­ly in the place where the web­serv­er will look for to deliv­er the pages, so if you browse this in the mid­dle of the gen­er­a­tion, the con­tent may not be con­sis­tent (yet).

Please be nice to the web­serv­er and do not mir­ror this. You can gen­er­ate this your­self very easy. Assum­ing you have the FreeB­SD source on a local hard disk, you just need to down­load the patch from http://www.Leidinger.net/FreeBSD/current-patches/ (if you do not find dox.diff, update your FreeB­SD sources and every­thing will be OK), apply the patch, cd into tools/kerneldoc/subsys and run “make all” (or “make vm” or what­ev­er you are inter­est­ed in). You need doxy­gen installed, off course.

If you want to set­up some­thing like this your­self, just down­load the script which is doing all the work, change some vari­ables in the begin­ning, and cre­ate your own local ver­sion of the com­plete docs.

In case this is using sig­nif­i­cant traf­fic, I will ask core/admins if there is the pos­si­bil­i­ty to host it on FreeBSD.org resources.

lin­ux­o­la­tor day

A hap­py wel­come to Boris Samorodov to the ports com­mit­ters team (I’m his men­tor). This means I don’t have the bur­den to take care of the lin­ux­o­la­tor infra­struc­ture in the Ports Col­lec­tion alone any­more. Yeah!

Today I com­mit­ted anoth­er part of Roman’s work in the lin­ux­o­la­tor SoC. Now we should get log mes­sages for the new miss­ing syscalls for real. We defin­i­tive­ly need high lev­el overview doc­u­ments for subsystems.

The ker­nel sub­sys­tem API doc­u­men­ta­tion gen­er­a­tion framework.

I com­mit­ted the ker­nel sub­sys­tem API doc­u­men­ta­tion gen­er­a­tion frame­work. It allows to gen­er­ate the API doc­u­men­ta­tion of a sub­sys­tem (with doxy­gen) just by adding a short con­fig file (around 22 lines with com­ments and blank lines, maybe 14 lines with­out com­ments and blank lines). Here’s an exam­ple of such a config:

—snip—
PROJECT_NAME = “FreeB­SD ker­nel sound device code”
OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_sound/
EXTRACT_ALL = YES # for undoc­u­ment­ed src, no warn­ings enabled
INPUT = $(DOXYGEN_SRC_PATH)/dev/sound/

GENERATE_TAGFILE = dev_sound/dev_sound.tag
TAGFILES = dev_pci/dev_pci.tag=../../dev_pci/html \
dev_usb/dev_usb.tag=../../dev_usb/html
@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH)
@INCLUDE = common-Doxyfile
—snip—

The frame­work is con­fig­ured to not only gen­er­ate the HTML ver­sion, but also a PDF version.

Sub­sys­tems for which docs are gen­er­at­ed cur­rent­ly (con­figs for oth­er sub­sys­tems are welcome):

  • cam
  • cryp­to
  • dev_pci
  • dev_sound
  • dev_usb
  • geom
  • i4b
  • kern
  • libkern
  • lin­ux
  • net80211
  • net­graph
  • netinet
  • netinet6
  • netipsec
  • open­cryp­to
  • vm

Peo­ple which want to help doc­u­ment­ing the code may want to have a look at the spe­cial com­mands doxy­gen under­stands.