i just finished hacking on our XML for the month. several months ago, sven mentioned the changes needed to get the handbooks updated with initramfs/initrd instructions for separate
/usr partitions. it took me a few hours, but i finally closed bug numbers 415175, 434550, 434554, and 434732. thanks to raúl for the patches.
i initially started putting in the patches as-is, but then i noticed that the initramfs descriptions were just copied from the x86+amd64 handbook. so, i stripped them out, and rewrote them as an included section common to all affected architecture handbooks. that
<include> is then dynamically inserted by our XML processor, dropping the instructions into the appropriate place, so that there’s no extraneous text duplication.
the raw handbook XML looks something like this:
<pre caption="Installing the kernel"> # <i>cp arch/<keyval id="arch-sub"/>/boot/bzImage /boot/<keyval id="kernel-name" /></i> </pre> </body> </subsection> <subsection> <include href="hb-install-initramfs.xml"/> </subsection> </section>
that bit about
include href="hb-install-initramfs.xml" fills in the next subsection with whatever we put in the
hb-install-initramfs.xml include, which is never viewed by itself. little tricks like this make it much easier to maintain the documentation…we make one change to an include, and it’s propagated to all documents that use it. same goes for things like
<keyval> — that variable is set elsewhere in our documentation, so that as kernel versions or ISO sizes change, we can update that value in one place (
handbook-$ARCH.xml). every instance of the variable is automatically filled in when you view the handbook in your web browser.
not to say everything was smooth sailing while updating the handbooks…i ran into a few snags. i figured out why my initial commit attempts were blocked by our pre-commit hooks: it’s not that the xml interpreter was giving me spurious errors on each check. (“why you blocking me? i’m head of the project! DON’T YOU KNOW WHO I AM?!”) instead, i forgot a slash in a
</body> element. THAT ruined the next 300 lines of code. solution: fix, re-run
xmllint --valid --noout, add commit message, push to CVS.
the handbooks are now all set for the new initramfs/initrd mojo for those poor, poor souls mounting
/usr on a separate partition/disk. my own partition layout is much simpler; i’ve never needed an initramfs.