diff options
Diffstat (limited to 'release/doc/share')
-rw-r--r-- | release/doc/share/examples/Makefile.relnotesng | 61 | ||||
-rw-r--r-- | release/doc/share/misc/dev.archlist.txt | 178 | ||||
-rw-r--r-- | release/doc/share/misc/man2hwnotes.pl | 533 | ||||
-rw-r--r-- | release/doc/share/mk/doc.relnotes.mk | 54 | ||||
-rw-r--r-- | release/doc/share/xml/Makefile | 11 | ||||
-rw-r--r-- | release/doc/share/xml/catalog.xml | 13 | ||||
-rw-r--r-- | release/doc/share/xml/errata.xml | 28 | ||||
-rw-r--r-- | release/doc/share/xml/release.ent | 82 | ||||
-rw-r--r-- | release/doc/share/xml/release.xsl | 106 | ||||
-rw-r--r-- | release/doc/share/xml/security.xml | 28 | ||||
-rw-r--r-- | release/doc/share/xml/sponsor.ent | 55 | ||||
-rw-r--r-- | release/doc/share/xml/vendor.ent | 9 |
12 files changed, 1158 insertions, 0 deletions
diff --git a/release/doc/share/examples/Makefile.relnotesng b/release/doc/share/examples/Makefile.relnotesng new file mode 100644 index 0000000..9607e28 --- /dev/null +++ b/release/doc/share/examples/Makefile.relnotesng @@ -0,0 +1,61 @@ +# -*- makefile -*- +# +# $FreeBSD$ +# +# Sample makefile for rendering and uploading RELNOTESng files outside +# the build tree. +# + +ARCHS= amd64 i386 pc98 powerpc sparc64 +MULTITEXTS= +UNITEXTS= hardware readme relnotes errata + +IMAGEDIR= .imagedir +RHOST= freefall.freebsd.org +RDIR= public_html/relnotes/CURRENT +DOCDIR= ./release/doc +LANG= en_US.ISO8859-1 + +DOC_PREFIX?= /usr/doc +CSS_SHEET?= ${DOC_PREFIX}/share/misc/docbook.css +FORMATS?= html txt pdf + +BUILD_OPTIONS+= URLS_ABSOLUTE=YES + +all: + (cd ${DOCDIR}; ${MAKE} DOC_PREFIX=${DOC_PREFIX} FORMATS="${FORMATS}" ${BUILD_OPTIONS} all) + +lint: + (cd ${DOCDIR}; ${MAKE} DOC_PREFIX=${DOC_PREFIX} lint) + +image: all + @echo "#" + @echo "# Creating local image" + @echo "#" + rm -rf ${IMAGEDIR} + mkdir ${IMAGEDIR} + cp -p ${CSS_SHEET} ${IMAGEDIR}/docbook.css + for i in ${ARCHS}; do \ + for j in ${MULTITEXTS}; do \ + for k in ${FORMATS}; do \ + cp -p ${DOCDIR}/${LANG}/$${j}/$${i}/article.$${k} ${IMAGEDIR}/$${j}-$${i}.$${k} ; \ + done; \ + done; \ + done + for j in ${UNITEXTS}; do \ + for k in ${FORMATS}; do \ + cp -p ${DOCDIR}/${LANG}/$${j}/article.$${k} ${IMAGEDIR}/$${j}.$${k} ; \ + done; \ + done + +push: image + @echo "#" + @echo "# Pushing to ${RHOST}" + @echo "#" +# (cd ${IMAGEDIR}; tar -cf - .) | gzip -c -9 | (ssh ${RHOST} "( cd ${RDIR}; gunzip -c | tar -xf -)" ) + (cd ${IMAGEDIR}; rsync -azuv * ${RHOST}:${RDIR}) + rm -rf ${IMAGEDIR} + +clean: + (cd ${DOCDIR}; ${MAKE} DOC_PREFIX=${DOC_PREFIX} FORMATS="${FORMATS}" clean) + rm -rf ${IMAGEDIR} diff --git a/release/doc/share/misc/dev.archlist.txt b/release/doc/share/misc/dev.archlist.txt new file mode 100644 index 0000000..5f62f48 --- /dev/null +++ b/release/doc/share/misc/dev.archlist.txt @@ -0,0 +1,178 @@ +# +# Copyright (c) 2004-2006 The FreeBSD Project +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# +# This file is used by man2hwnotes.pl to set which drivers are usable +# on which architectures. +# +# Format: +# +# Empty lines, and lines beginning with "#" are ignored. +# <Driver name><tab><arch>[,<arch>...] +# +aac i386,amd64 +adv i386,pc98,amd64 +adw i386,pc98,amd64 +aha i386 +ahb i386 +ahd i386,sparc64,amd64 +aic i386,pc98,amd64 +amd i386,pc98,amd64 +arcmsr i386,amd64 +asr i386 +ath i386,pc98,amd64,sparc64 +aue i386,pc98,amd64,powerpc +axe i386,pc98,amd64,powerpc +bce i386,amd64 +bge i386,pc98,sparc64,amd64 +bktr i386,pc98 +bt i386,amd64 +bxe i386,amd64 +cdce i386,pc98,amd64,powerpc +ciss i386,amd64 +ce i386,pc98 +cm i386 +cnw i386,pc98,amd64 +cp i386,pc98 +ct pc98 +ctau i386 +cue i386,pc98,amd64,powerpc +cx i386 +cxgb i386,amd64 +de i386,pc98,amd64 +dpt i386,amd64 +ed i386,pc98 +ep i386,pc98,amd64 +esp sparc64 +ex i386,amd64 +fe i386,pc98,amd64 +fwohci i386,sparc64,amd64,powerpc +hifn i386,pc98,amd64 +hpt27xx i386,amd64 +hptiop i386,amd64 +hptmv i386,amd64 +hptrr i386,amd64 +ida i386 +ie i386 +iir i386,amd64 +ips i386,amd64 +isci i386,amd64 +ixgb i386,amd64 +kue i386,pc98,amd64,powerpc +lge i386,pc98,amd64 +mfi i386,amd64 +mlx i386,amd64 +mly i386,amd64 +msk i386,amd64 +mxge i386,amd64 +my i386,pc98 +ncr i386,pc98,amd64 +ncv i386,pc98 +nfe i386,amd64 +ng_bt3c i386,pc98,amd64 +ng_ubt i386,pc98,amd64 +nsp i386,pc98 +nxge i386,amd64 +oce i386,amd64 +ohci i386,pc98,amd64,powerpc +oltr i386 +otus i386,amd64 +pcn i386,pc98,amd64 +pst i386 +qlxgb amd64 +qlxgbe amd64 +qlxge amd64 +rc i386 +ral i386,amd64 +rsu i386,amd64 +rue i386,pc98,amd64 +rum i386,amd64 +run i386,amd64 +safe i386,pc98,amd64 +sbp i386,sparc64,amd64 +sfgxe amd64 +sn i386,amd64 +snc pc98 +snd_ad1816 i386,amd64 +snd_als4000 i386 +snd_atiixp i386,amd64 +snd_audiocs sparc64 +snd_cmi i386,amd64 +snd_cs4281 i386,amd64 +snd_csa i386,amd64 +snd_ds1 i386,amd64 +snd_emu10k1 i386,amd64 +snd_emu10kx i386,amd64 +snd_envy24 i386,amd64 +snd_envy24ht i386,amd64 +snd_es137x i386,sparc64,amd64 +snd_ess i386,amd64 +snd_fm801 i386,amd64 +snd_gusc i386,amd64 +snd_hda i386,amd64 +snd_hdspe i386,amd64 +snd_ich i386,amd64 +snd_maestro i386,amd64 +snd_maestro3 i386,amd64 +snd_mss i386 +snd_neomagic i386,amd64 +snd_sbc i386,amd64 +snd_solo i386,amd64 +snd_spicds i386,amd64 +snd_t4dwave i386,amd64,sparc64 +snd_via8233 i386,amd64 +snd_via82c686 i386,amd64 +snd_vibes i386,amd64 +stg i386,pc98 +ti i386,pc98,amd64,sparc64 +tl i386,pc98,amd64 +trm i386,amd64 +twa i386,amd64 +twe i386,amd64 +tws i386,amd64 +ubsa i386,pc98,amd64 +ubsec i386,pc98,amd64 +ubser i386,pc98,amd64 +ucycom i386,pc98,amd64 +udav i386,pc98,amd64 +uftdi i386,pc98,amd64 +uhci i386,pc98,amd64,powerpc +ulpt i386,pc98,amd64,powerpc +umass i386,pc98,amd64,powerpc +umodem i386,pc98,amd64 +uplcom i386,pc98,amd64 +ural i386,amd64 +urio i386,pc98,amd64,powerpc +uvisor i386,pc98,amd64 +uvscom i386,pc98,amd64 +vpo i386 +vx i386,pc98,amd64 +vxge i386,amd64 +wb i386,pc98,amd64 +xe i386,amd64 +zyd i386,amd64 diff --git a/release/doc/share/misc/man2hwnotes.pl b/release/doc/share/misc/man2hwnotes.pl new file mode 100644 index 0000000..a64aae8 --- /dev/null +++ b/release/doc/share/misc/man2hwnotes.pl @@ -0,0 +1,533 @@ +#!/usr/bin/perl -w +# Emacs should use -*- cperl -*- mode +# +# Copyright (c) 2003-2006 Simon L. Nielsen <simon@FreeBSD.org> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# Parse the list of supported hardware out of section 4 manual pages +# and output it on stdout as SGML/DocBook entities. + +# The script will look for the following line in the manual page: +# .Sh HARDWARE +# and make an entity of the content until the line containing: +# .Sh +# +# For Lists only the first line will be printed. If there are +# arguments to the .It command, only the argument will be printed. + +# Usage: +# man2hwnotes.pl [-cl] [-d 0-6] [-a <archlist file>] [-o <outputfile>] +# <manualpage> [<manualpage> ...] + +use strict; +use Getopt::Std; +use Digest::MD5 qw(md5_hex); + +# Section from manual page to extract +my $hwlist_sect = "HARDWARE"; + +# Override default archtecture list for some devices: +my $archlist_file = "dev.archlist.txt"; +my %archlist; + +# Globals +my $compat_mode = 0; # Enable compat for old Hardware Notes style +my $debuglevel = 0; +my $only_list_out = 0; # Should only lists be generated in the output? +my @out_lines; # Single lines +my @out_dev; # Device entities + +# Getopt +my %options = (); +if (!getopts("a:cd:lo:",\%options)) { + die("$!: Invalid command line arguments in ", __LINE__, "\n"); +} + +if (defined($options{c})) { + $compat_mode = 1; +} +if (defined($options{d})) { + $debuglevel = $options{d}; +} +if (defined($options{a})) { + $archlist_file = $options{a}; +} +if (defined($options{l})) { + $only_list_out = 1; +} + +my $outputfile = $options{o}; + +if ($debuglevel > 0) { + # Don't do output buffering in debug mode. + $| = 1; +} + +load_archlist($archlist_file); + +if (defined($outputfile)) { + open(OLDOUT, ">&STDOUT") || die("$!: Could not open STDOUT in ", __LINE__, ".\n"); + open(STDOUT, ">$outputfile") || die("$!: Could not open $outputfile in ", __LINE__, ".\n"); +} + +print <<EOT; +<!-- + These are automatically generated device lists for FreeBSD hardware notes. +--> +EOT + +if ($only_list_out) { + # Print the default device preamble entities + print "<!ENTITY hwlist.preamble.pre 'The'>\n"; + print "<!ENTITY hwlist.preamble.post 'driver supports:'>\n"; +} + +foreach my $page (@ARGV) { + if ($page !~ m/\.4$/) { + dlog(2, "Skipped $page (not *.4)"); + next; + } + dlog(2, "Parsing $page"); + parse($page); + + if (@out_lines) { + print join("\n", @out_lines), "\n"; + } + if (@out_dev) { + print join("\n", @out_dev), "\n"; + } + + @out_lines = (); + @out_dev = (); +} + +if (defined($outputfile)) { + open(STDOUT, ">&OLDOUT") || die("$!: Could not open STDOUT in ", __LINE__, ".\n"); + close(OLDOUT) || die("$!: Could not close OLDOUT in ", __LINE__, ".\n"); +} + +sub normalize (@) { + my @lines = @_; + + foreach my $l (@lines) { + $l =~ s/\\&//g; + $l =~ s:([\x21-\x2f\x5b-\x60\x7b-\x7f]):sprintf("&\#\%d;", ord($1)):eg; + # Make sure ampersand is encoded as & since jade seems to + # be confused when it is encoded as & inside an entity. + $l =~ s/&/&/g; + } + return (wantarray) ? @lines : join "", @lines; +} + +sub parse { + my ($manpage) = @_; + + my $cur_mansection; + my $found_hwlist = 0; + my %mdocvars; + $mdocvars{isin_hwlist} = 0; + $mdocvars{isin_list} = 0; + $mdocvars{first_para} = 1; + $mdocvars{parabuf} = ""; + $mdocvars{listtype} = ""; + $mdocvars{it_nr} = 0; + + open(MANPAGE, "$manpage") || die("$!: Could not open $manpage in ", __LINE__, ".\n"); + while(<MANPAGE>) { + chomp; + my $line = $_; + + dlog(5, "Read '$line'"); + + # Find commands + if (s/^\.(.*)$/$1/) { + my $cmd = $1; + + # Detect, and ignore, comment lines + if (s/^\\"(.*)$/$1/) { + next; + } + + $cmd =~ s/^([^ ]+).*$/$1/; + + if (/^Nm "?(\w+)"?/ && !defined($mdocvars{Nm})) { + dlog(3, "Setting Nm to $1"); + $mdocvars{Nm} = $1; + # "_" cannot be used for an entity name. + $mdocvars{EntNm} = $1; + $mdocvars{EntNm} =~ s,_,.,g; + + } elsif (/^Nm$/) { + if (defined($mdocvars{Nm}) && $mdocvars{Nm} ne "") { + parabuf_addline(\%mdocvars, "&man.".$mdocvars{EntNm}.".$cur_mansection;"); + } else { + dlog(2, "Warning: Bad Nm call in $manpage"); + } + + } elsif (/^Sh (.+)$/) { + dlog(4, "Setting section to $1"); + my $cur_section = $1; + + flush_out(\%mdocvars); + + if ($cur_section =~ /^${hwlist_sect}$/) { + dlog(2, "Found the device section ${hwlist_sect}"); + $mdocvars{isin_hwlist} = 1; + $found_hwlist = 1; + add_sgmltag(\%mdocvars, "<!ENTITY hwlist.".$mdocvars{cur_manname}." '"); + if ($only_list_out) { + add_sgmltag("<para xmlns=\"http://docbook.org/ns/docbook\">&hwlist.preamble.pre; " . + "&man.".$mdocvars{EntNm}.".$cur_mansection; " . + "&hwlist.preamble.post;</para>"); + } + } elsif ($mdocvars{isin_hwlist}) { + dlog(2, "Found a HWLIST STOP key!"); + add_sgmltag(\%mdocvars, "'>"); + $mdocvars{isin_hwlist} = 0; + } + if ($mdocvars{isin_list}) { + dlog(1, "Warning: Still in list, but just entered new " . + "section. This is probably due to missing .El; " . + "check manual page for errors."); + # If we try to recover from this we will probably + # just end with bad SGML output and it really + # should be fixed in the manual page so we don't + # even try to "fix" this. + } + + + } elsif (/^Dt ([^ ]+) ([^ ]+)/) { + dlog(4, "Setting mansection to $2"); + $mdocvars{cur_manname} = lc($1); + $cur_mansection = $2; + + # "_" cannot be used for an entity name. + $mdocvars{cur_manname} =~ s,_,.,g; + + } elsif (/^It ?(.*)$/) { + my $txt = $1; + + $mdocvars{it_nr}++; + + # Flush last item + if ($mdocvars{parabuf} ne "") { + add_listitem(\%mdocvars); + } + + # Remove quotes, if any. + $txt =~ s/"(.*)"/$1/; + + if ($mdocvars{listtype} eq "column") { + # Ignore first item when it is likely to be a + # header. + if ($mdocvars{it_nr} == 1 && $txt =~ m/^(Em|Sy) /) { + dlog(2, "Skipping header line in column list"); + next; + } + # Only extract the first column. + $txt =~ s/ Ta /\t/g; + $txt =~ s/([^\t]+)\t.*/$1/; + } + + # Remove Li commands + $txt =~ s/^Li //g; + + parabuf_addline(\%mdocvars, normalize($txt)); + } elsif (/^Bl/) { + $mdocvars{isin_list} = 1; + flush_out(\%mdocvars); + add_sgmltag(\%mdocvars, "<itemizedlist xmlns=\"http://docbook.org/ns/docbook\">"); + + if (/-tag/) { + $mdocvars{listtype} = "tag"; + # YACK! Hack for ata(4) + if ($mdocvars{Nm} eq "ata") { + $mdocvars{listtype} = "tagHACK"; + } + } elsif (/-bullet/) { + $mdocvars{listtype} = "bullet"; + } elsif (/-column/) { + $mdocvars{listtype} = "column"; + } else { + $mdocvars{listtype} = "unknown"; + } + dlog(2, "Listtype set to $mdocvars{listtype}"); + } elsif (/^El/) { + if ($mdocvars{parabuf} ne "") { + add_listitem(\%mdocvars); + } + + add_sgmltag(\%mdocvars, "</itemizedlist>"); + $mdocvars{isin_list} = 0; + } elsif (/^Tn (.+)$/) { + # For now we print TradeName text as regular text. + my ($txt, $punct_str) = split_punct_chars($1); + + parabuf_addline(\%mdocvars, normalize($txt . $punct_str)); + } elsif (/^Xr ([^ ]+) (.+)$/) { + my ($xr_sect, $punct_str) = split_punct_chars($2); + my $txt; + + # We need to check if the manual page exist to avoid + # breaking the doc build just because of a broken + # reference. + #$txt = "&man.$1.$xr_sect;$punct_str"; + $txt = "$1($xr_sect)$punct_str"; + parabuf_addline(\%mdocvars, normalize($txt)); + } elsif (/^Dq (.+)$/) { + my ($txt, $punct_str) = split_punct_chars($1); + + parabuf_addline(\%mdocvars, + normalize("<quote xmlns=\"http://docbook.org/ns/docbook\">$txt</quote>$punct_str")); + } elsif (/^Sx (.+)$/) { + if ($mdocvars{isin_hwlist}) { + dlog(1, "Warning: Reference to another section in the " . + "$hwlist_sect section in " . $mdocvars{Nm} . + "(${cur_mansection})"); + } + parabuf_addline(\%mdocvars, normalize($1)); + } elsif (/^Pa (.+)$/) { + my ($txt, $punct_str) = split_punct_chars($1); + + $txt = make_ulink($txt) . $punct_str; + parabuf_addline(\%mdocvars, normalize($txt)); + } elsif (/^Pp/) { + dlog(3, "Got Pp command - forcing new para"); + flush_out(\%mdocvars); + } elsif (/^Fx (.+)/) { + dlog(3, "Got Fx command"); + parabuf_addline(\%mdocvars, "FreeBSD $1"); + } elsif (/^Fx/) { + dlog(3, "Got Fx command"); + parabuf_addline(\%mdocvars, "FreeBSD"); + } elsif (/^Em (.+)$/) { + my ($txt, $punct_str) = split_punct_chars($1); + + parabuf_addline(\%mdocvars, + normalize("<emphasis xmlns=\"http://docbook.org/ns/docbook\">$txt</emphasis>$punct_str")); + } else { + # Ignore all other commands. + dlog(3, "Ignoring unknown command $cmd"); + } + } else { + # This is then regular text + parabuf_addline(\%mdocvars, normalize($_)); + } + } + close(MANPAGE) || die("$!: Could not close $manpage in ", __LINE__, ".\n"); + if (! $found_hwlist) { + dlog(2, "Hardware list not found in $manpage"); + } +} + +sub dlog { + my ($level, $txt) = @_; + + if ($level <= $debuglevel) { + print STDERR "$level: $txt\n"; + } +} + +# Output a SGML tag. +sub add_sgmltag { + my ($mdocvars, $txt) = (@_); + + # We only care about the HW list for now. + if (${$mdocvars}{isin_hwlist}) { + push(@out_dev, $txt); + } +} + +# Add a text entity, and return the used entity name. +sub add_txt_ent { + my ($itemtxt) = (@_); + my ($entity_name); + + # Convert mdoc(7) minus + $itemtxt =~ s/\\-/-/g; + + $itemtxt =~ s/'/‘/g; + + $entity_name = "hwlist." . md5_hex($itemtxt); + dlog(4, "Adding '$itemtxt' as entity $entity_name"); + push(@out_lines, "<!ENTITY $entity_name '$itemtxt'>"); + + return ($entity_name); +} +sub flush_out { + my ($mdocvars) = (@_); + my ($entity_name, $out); + my $para_arch = ""; + + if (!${$mdocvars}{isin_hwlist} || ${$mdocvars}{parabuf} eq "") { + return; + } + + $entity_name = add_txt_ent(${$mdocvars}{parabuf}); + ${$mdocvars}{parabuf} = ""; + if(defined($archlist{${$mdocvars}{Nm}})) { + if ($compat_mode) { + $para_arch = ' arch="' . $archlist{${$mdocvars}{Nm}} . '"'; + } else { + $para_arch = '[' . $archlist{${$mdocvars}{Nm}} . '] '; + } + } + if ($compat_mode) { + $out = "<para xmlns=\"http://docbook.org/ns/docbook\"".$para_arch.">&".$entity_name.";</para>"; + } else { + if (${$mdocvars}{first_para}) { + $out = "<para xmlns=\"http://docbook.org/ns/docbook\">".$para_arch."&".$entity_name.";</para>"; + } else { + $out = "<para xmlns=\"http://docbook.org/ns/docbook\">&".$entity_name.";</para>"; + } + ${$mdocvars}{first_para} = 0; + } + + dlog(4, "Flushing parabuf"); + add_sgmltag($mdocvars, $out); +} + +# Add a new list item from the "parabuf". +sub add_listitem { + my ($mdocvars) = (@_); + my ($listitem, $entity_name); + my $para_arch = ""; + + $entity_name = add_txt_ent(${$mdocvars}{parabuf}); + ${$mdocvars}{parabuf} = ""; + + if ($compat_mode) { + if(defined($archlist{${$mdocvars}{Nm}})) { + $para_arch = ' arch="' . $archlist{${$mdocvars}{Nm}} . '"'; + } + } + $listitem = "<listitem><para".$para_arch.">&".$entity_name.";</para></listitem>"; + dlog(4, "Adding '$listitem' to out_dev"); + push(@out_dev, $listitem); + +} + +# Add a line to the "paragraph buffer" +sub parabuf_addline { + my $mdocvars = shift; + my ($txt) = (@_); + + dlog(5, "Now in parabuf_addline for '$txt'"); + + # We only care about the HW list for now. + if (!${$mdocvars}{isin_hwlist}) { + dlog(6, "Exiting parabuf_addline due to: !\${\$mdocvars}{isin_hwlist}"); + return; + } + if ($txt eq "") { + dlog(6, "Exiting parabuf_addline due to: \$txt eq \"\""); + return; + } + + if ($only_list_out && !${$mdocvars}{isin_list}) { + dlog(6, "Exiting parabuf_addline due to: ". + "\$only_list_out && !\${\$mdocvars}{isin_list}"); + return; + } + + # We only add the first line for "tag" lists + if (${$mdocvars}{parabuf} ne "" && ${$mdocvars}{isin_list} && + ${$mdocvars}{listtype} eq "tag") { + dlog(6, "Exiting parabuf_addline due to: ". + "\${\$mdocvars}{parabuf} ne \"\" && \${\$mdocvars}{isin_list} && ". + "\${\$mdocvars}{listtype} eq \"tag\""); + return; + } + + if (${$mdocvars}{parabuf} ne "") { + ${$mdocvars}{parabuf} .= " "; + } + + dlog(4, "Adding '$txt' to parabuf"); + + ${$mdocvars}{parabuf} .= $txt; +} + +sub load_archlist { + my ($file) = (@_); + + my $lineno = 0; + + dlog(2, "Parsing archlist $file"); + + open(FILE, "$file") || die("$!: Could not open archlist $file in ", __LINE__, ".\n"); + while(<FILE>) { + chomp; + $lineno++; + + if (/^#/ || $_ eq "") { + next; + } + + if (/(\w+)\t([\w,]+)/) { + dlog(4, "For driver $1 setting arch to $2"); + $archlist{$1} = $2; + } else { + dlog(1, "Warning: Could not parse archlist line $lineno"); + } + } + + close(FILE); +} + +# Check if a character is a mdoc(7) punctuation character. +sub is_punct_char { + my ($str) = (@_); + + return (length($str) == 1 && $str =~ /[\.,:;()\[\]\?!]/); +} + +# Split out the punctuation characters of a mdoc(7) line. +sub split_punct_chars { + my ($str) = (@_); + my (@stritems, $stritem, $punct_str); + + $punct_str = ""; + @stritems = split(/ /, $str); + + while (defined($stritem = $stritems[$#stritems]) && + is_punct_char($stritem)) { + $punct_str = $stritem . $punct_str; + pop(@stritems); + } + + return (join(' ', @stritems), $punct_str); +} + +# Create a ulink, if the string contains an URL. +sub make_ulink { + my ($str) = (@_); + + $str =~ s,(http://[^ ]+),<link xmlns=\"http://docbook.org/ns/docbook\" xlink:href="$1"></link>,; + + return $str; +} diff --git a/release/doc/share/mk/doc.relnotes.mk b/release/doc/share/mk/doc.relnotes.mk new file mode 100644 index 0000000..ae8a31f --- /dev/null +++ b/release/doc/share/mk/doc.relnotes.mk @@ -0,0 +1,54 @@ +# $FreeBSD$ + +DOC_PREFIX?= ${RELN_ROOT}/../../../doc + +# XXX +RELEASETYPE!= grep -o 'release.type "[a-z]*"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[a-z.]* "\([a-z]*\)"|\1|' +RELEASEURL!= grep -o 'release.url \"[^\"]*\"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' +RELEASEBRANCH!= grep -o 'release.branch "\([^"]*\)"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' +RELEASEMAILLIST!= grep -o 'release.maillist "\([^"]*\)"' ${RELN_ROOT}/share/xml/release.ent | sed 's|[^ ]* "\([^"]*\)"|\1|' +.if ${RELEASETYPE} == "current" +PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'current'" +.elif ${RELEASETYPE} == "snapshot" +PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'snapshot'" +.elif ${RELEASETYPE} == "release" +PROFILING+= --param profile.attribute "'releasetype'" --param profile.value "'release'" +.endif +XSLTPROCFLAGS+= --param release.url "'${RELEASEURL}'" +XSLTPROCFLAGS+= --param release.branch "'${RELEASEBRANCH}'" +XSLTPROCFLAGS+= --param release.maillist "'${RELEASEMAILLIST}'" +XSLTPROCFLAGS+= --param toc.section.depth "'3'" + +# Find the RELNOTESng document catalogs +EXTRA_CATALOGS+= file://${RELN_ROOT}/${LANGCODE}/share/xml/catalog.xml \ + file://${RELN_ROOT}/share/xml/catalog.xml + +XSLXHTML= http://www.FreeBSD.org/release/XML/share/xml/release.xsl + +# +# Automatic device list generation: +# +.if exists(${RELN_ROOT}/../man4) +MAN4DIR?= ${RELN_ROOT}/../man4 +.elif exists(${RELN_ROOT}/../../man4) +MAN4DIR?= ${RELN_ROOT}/../../man4 +.else +MAN4DIR?= ${RELN_ROOT}/../../share/man/man4 +.endif +MAN4PAGES?= ${MAN4DIR}/*.4 ${MAN4DIR}/man4.*/*.4 +ARCHLIST?= ${RELN_ROOT}/share/misc/dev.archlist.txt +DEV-AUTODIR= ${RELN_ROOT:S/${.CURDIR}/${.OBJDIR}/}/share/xml +CLEANFILES+= ${DEV-AUTODIR}/dev-auto.ent + +MAN2HWNOTES_CMD=${RELN_ROOT}/share/misc/man2hwnotes.pl +.if defined(HWNOTES_MI) +MAN2HWNOTES_FLAGS= +.else +MAN2HWNOTES_FLAGS= -c +.endif + +# Dependency that the article makefiles can use to pull in +# dev-auto.ent. +${DEV-AUTODIR}/catalog-auto ${DEV-AUTODIR}/dev-auto.ent: ${MAN4PAGES} \ + ${ARCHLIST} ${MAN2HWNOTES_CMD} + cd ${RELN_ROOT}/share/xml && make MAN2HWNOTES_FLAGS=${MAN2HWNOTES_FLAGS} dev-auto.ent diff --git a/release/doc/share/xml/Makefile b/release/doc/share/xml/Makefile new file mode 100644 index 0000000..b2c1b6d --- /dev/null +++ b/release/doc/share/xml/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +RELN_ROOT?= ${.CURDIR}/../.. + +.include "${RELN_ROOT}/share/mk/doc.relnotes.mk" +.include "${DOC_PREFIX}/share/mk/doc.project.mk" + +dev-auto.ent: ${MAN4PAGES} ${ARCHLIST} ${MAN2HWNOTES_CMD} + ${PERL} ${MAN2HWNOTES_CMD} ${MAN2HWNOTES_FLAGS} -a ${ARCHLIST} -o ${.TARGET} ${MAN4PAGES} + +all: dev-auto.ent diff --git a/release/doc/share/xml/catalog.xml b/release/doc/share/xml/catalog.xml new file mode 100644 index 0000000..74f8ccd --- /dev/null +++ b/release/doc/share/xml/catalog.xml @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<!-- $FreeBSD$ --> +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + <rewriteSystem systemIdStartString="http://www.FreeBSD.org/release/XML/" + rewritePrefix="../../"/> + <rewriteURI uriStartString="http://www.FreeBSD.org/release/XML/" + rewritePrefix="../../"/> + + <public publicId="-//FreeBSD//ENTITIES Release Specification//EN" uri="release.ent"/> + <public publicId="-//FreeBSD//ENTITIES Sponsor Specification//EN" uri="sponsor.ent"/> + <public publicId="-//FreeBSD//ENTITIES Vendor Specification//EN" uri="vendor.ent"/> + <public publicId="-//FreeBSD//ENTITIES Auto Generated Device Lists//EN" uri="dev-auto.ent"/> +</catalog> diff --git a/release/doc/share/xml/errata.xml b/release/doc/share/xml/errata.xml new file mode 100644 index 0000000..efc21a1 --- /dev/null +++ b/release/doc/share/xml/errata.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- + The FreeBSD Documentation Project + + $FreeBSD$ +--> +<informaltable frame="none" pgwide="1"> + <tgroup cols="3"> + <colspec colwidth="40%"/> + <colspec colwidth="30%"/> + <colspec colwidth="30%"/> + <thead> + <row> + <entry>Errata</entry> + <entry>Date</entry> + <entry>Topic</entry> + </row> + </thead> + + <tbody> + <row> + <entry><para>No errata notices.</para></entry> + <entry><para> </para></entry> + <entry><para> </para></entry> + </row> + </tbody> + </tgroup> +</informaltable> diff --git a/release/doc/share/xml/release.ent b/release/doc/share/xml/release.ent new file mode 100644 index 0000000..f72b4d0 --- /dev/null +++ b/release/doc/share/xml/release.ent @@ -0,0 +1,82 @@ +<!-- -*- sgml -*- + + $FreeBSD$ + + OS Release Information --> + +<!-- Version of the OS we're describing. This needs to be updated + with each new release. --> +<!ENTITY release.current "11.0-CURRENT"> + +<!-- The previous version used for comparison in the "What's New" + section. For -CURRENT, we might point back to the last + branchpoint. --> +<!ENTITY release.prev "10.0-RELEASE"> + +<!-- The previous stable release, useful for pointing user's at the + release they SHOULD be running if they don't want the bleeding + edge. --> +<!ENTITY release.prev.stable "9.3-RELEASE"> + +<!-- The next version to be released, usually used for snapshots. --> +<!ENTITY release.next "11.0-RELEASE"> + +<!-- The name of this branch. --> +<!ENTITY release.branch "11-CURRENT"> + +<!-- The URL for obtaining this version of FreeBSD. --> +<!ENTITY release.url "https://www.FreeBSD.org/snapshots/"> + +<!-- The URL for Security Advisories and Errata Notices. --> +<!ENTITY security.url "https://www.FreeBSD.org/security/advisories"> + +<!-- The recommended mailing list to track. --> +<!ENTITY release.maillist "current"> + +<!-- The type of release (usually this will be either "snapshot" + or "release" --> +<!-- WARNING: Do not forget to also change the release type in + doc.relnotes.mk when updating this --> +<!ENTITY release.type "snapshot"> +<!ENTITY % release.type.current "INCLUDE"> +<!ENTITY % release.type.snapshot "IGNORE"> +<!ENTITY % release.type.release "IGNORE"> + +<![%release.type.current;[ +<!ENTITY release '&release.current;'> +]]> +<![%release.type.snapshot;[ +<!ENTITY release '&release.prev;'> +]]> +<![%release.type.release;[ +<!ENTITY release '&release.current;'> +]]> +<!ENTITY release ''> + +<!-- The manpaths for man page references --> +<!ENTITY release.man.url "https://www.FreeBSD.org/cgi/man.cgi"> +<!ENTITY release.manpath.xorg "7.5.1"> +<!ENTITY release.manpath.netbsd "5.1"> +<!ENTITY release.manpath.freebsd-ports "Ports"> +<!ENTITY release.manpath.freebsd "10-current"> + +<!-- Text constants which probably don't need to be changed.--> + +<!-- Name of our OS. This is almost certainly going to remain + FreeBSD, but we might want to try to do some other formatting or + other fancy markup on it in the future. --> +<!ENTITY os "FreeBSD"> + +<!-- Architecture names --> +<!ENTITY arch.amd64 "amd64"> +<!ENTITY arch.arm "arm"> +<!ENTITY arch.arm64 "aarch64"> +<!ENTITY arch.i386 "i386"> +<!ENTITY arch.mips "mips"> +<!ENTITY arch.pc98 "pc98"> +<!ENTITY arch.powerpc "powerpc"> +<!ENTITY arch.powerpc64 "powerpc64"> +<!ENTITY arch.sparc64 "sparc64"> + +<!-- The marker for MFCs. --> +<!ENTITY merged "MERGED"> diff --git a/release/doc/share/xml/release.xsl b/release/doc/share/xml/release.xsl new file mode 100644 index 0000000..f76ae68 --- /dev/null +++ b/release/doc/share/xml/release.xsl @@ -0,0 +1,106 @@ +<?xml version="1.0"?> +<!-- $FreeBSD$ --> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0' + xmlns="http://www.w3.org/TR/xhtml1/transitional" + xmlns:db="http://docbook.org/ns/docbook" + exclude-result-prefixes="db"> + + <xsl:import href="http://www.FreeBSD.org/XML/share/xml/freebsd-xhtml.xsl"/> + + <xsl:import href="http://www.FreeBSD.org/release/XML/lang/share/xml/release.xsl"/> + + <xsl:param name="release.url"/> + <xsl:param name="release.branch"/> + <xsl:param name="release.maillist"/> + + <xsl:template name="paragraph"> + <xsl:param name="class" select="''"/> + <xsl:param name="content"/> + + <xsl:variable name="p"> + <p> + <xsl:choose> + <xsl:when test="$class != ''"> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="class" select="$class"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="locale.html.attributes"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="@arch"> + <xsl:value-of select="concat('[', @arch, ']')"/> + <xsl:value-of select='" "'/> + </xsl:if> + <xsl:copy-of select="$content"/> + <xsl:value-of select='" "'/> + <xsl:if test="@revision"> + <xsl:element name="a"> + <xsl:attribute name="href"> + <xsl:value-of select="concat('http://svn.freebsd.org/viewvc/base?view=revision&revision=', @revision)"/> + </xsl:attribute> + <xsl:value-of select="concat('[r', @revision, ']')"/> + </xsl:element> + </xsl:if> + <xsl:if test="@contrib"> + <xsl:element name="span"> + <xsl:attribute name="class"> + <xsl:value-of select="'contrib'"/> + </xsl:attribute> + <xsl:choose> + <xsl:when test="@contrib = 'sponsor'"> + <xsl:if test="@sponsor != ''"> + (Sponsored by + <xsl:choose> + <xsl:when test="@sponsorurl != ''"> + <xsl:element name="a"> + <xsl:attribute name="href"> + <xsl:value-of select="@sponsorurl"/> + </xsl:attribute> + <xsl:value-of select="concat(@sponsor, ')')"/> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat(@sponsor, ')')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:when> + <xsl:when test="@contrib = 'vendor'"> + <xsl:if test="@vendor != ''"> + (Contributed / provided by + <xsl:choose> + <xsl:when test="@vendorurl != ''"> + <xsl:element name="a"> + <xsl:attribute name="href"> + <xsl:value-of select="@vendorurl"/> + </xsl:attribute> + <xsl:value-of select="concat(@vendor, ')')"/> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat(@vendor, ')')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:element> + </xsl:if> + </p> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$html.cleanup != 0"> + <xsl:call-template name="unwrap.p"> + <xsl:with-param name="p" select="$p"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$p"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> +</xsl:stylesheet> diff --git a/release/doc/share/xml/security.xml b/release/doc/share/xml/security.xml new file mode 100644 index 0000000..74a8cd7 --- /dev/null +++ b/release/doc/share/xml/security.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- + The FreeBSD Documentation Project + + $FreeBSD$ +--> +<informaltable frame="none" pgwide="1"> + <tgroup cols="3"> + <colspec colwidth="40%"/> + <colspec colwidth="30%"/> + <colspec colwidth="30%"/> + <thead> + <row> + <entry>Advisory</entry> + <entry>Date</entry> + <entry>Topic</entry> + </row> + </thead> + + <tbody> + <row> + <entry><para>No advisories.</para></entry> + <entry><para> </para></entry> + <entry><para> </para></entry> + </row> + </tbody> + </tgroup> +</informaltable> diff --git a/release/doc/share/xml/sponsor.ent b/release/doc/share/xml/sponsor.ent new file mode 100644 index 0000000..a76ef88 --- /dev/null +++ b/release/doc/share/xml/sponsor.ent @@ -0,0 +1,55 @@ +<!-- -*- sgml -*- + + $FreeBSD$ + + Sponsors of various works. + + Please keep the entity list sorted alphabetically. + +--> + +<!ENTITY abt "ABT Systems, Ltd."> +<!ENTITY afrl "AFRL"> + +<!ENTITY chelsio "Chelsio Communications"> + +<!ENTITY citrix "Citrix Systems"> +<!ENTITY citrix.rd "Citrix Systems R&D"> + +<!ENTITY clusterhq "ClusterHQ"> + +<!ENTITY darpa "DARPA"> +<!ENTITY darpa_afrl "DARPA, AFRL"> +<!ENTITY dell "Dell, Inc."> + +<!ENTITY emcisilon "EMC / Isilon Storage Division"> + +<!ENTITY ff "The &os; Foundation"> +<!ENTITY ff.url "https://www.FreeBSDFoundation.org/"> + +<!ENTITY gandi "Gandi.net"> +<!ENTITY google "Google"> + +<!ENTITY juniper "Juniper Networks, Inc."> + +<!ENTITY intelcorp "Intel Corporation"> +<!ENTITY ix "iXsystems"> + +<!ENTITY limelight "Limelight Networks"> +<!ENTITY lsi "LSI"> + +<!ENTITY msostc "Microsoft Open Source Technology Center"> +<!ENTITY mitail "MIT Computer Science & Artificial Intelligence Laboratory"> +<!ENTITY multiplay "Multiplay"> + +<!ENTITY netflix "Netflix"> +<!ENTITY netgate "Netgate"> +<!ENTITY nginx "Nginx, Inc."> +<!ENTITY norse "Norse Corporation"> + +<!ENTITY sandvine "Sandvine, Inc."> +<!ENTITY scaleengine "ScaleEngine, Inc."> +<!ENTITY solarflare "Solarflare Communications, Inc."> +<!ENTITY spectralogic "Spectra Logic"> + +<!ENTITY yandex "Yandex LLC"> diff --git a/release/doc/share/xml/vendor.ent b/release/doc/share/xml/vendor.ent new file mode 100644 index 0000000..75c879b --- /dev/null +++ b/release/doc/share/xml/vendor.ent @@ -0,0 +1,9 @@ +<!-- -*- sgml -*- + + $FreeBSD$ + + Vendors and contributors. + + Please keep the entity list sorted alphabetically. + +--> |