From 4e702f5b140c8ab63afe07df4dd882310fc639be Mon Sep 17 00:00:00 2001 From: "Simon L. B. Nielsen" Date: Tue, 3 Aug 2004 22:12:45 +0000 Subject: [PATCH] Auto generate the device listings in the Hardware Notes based on manual pages, to avoid duplicating work between the Hardware Notes and manual pages. Each text line in the output from the manual page parser is generated as a SGML entity, making it possible for translators to only translate lines which actually contains English text (this neat idea came from hrs). To determine which drivers are usable on which architectures the dev.archlist.txt file is used to explicitly list this. It it an imperfect solution, but the best I have been able to come up with for now. This commit converts most of the devices which has a section 4 manual page with a HARDWARE section to be the new auto generated format. Reviewed in principle by: ru, hrs, trhodes Good ideas for improvements: hrs No objections: -doc, re --- release/doc/Makefile | 5 +- .../doc/en_US.ISO8859-1/hardware/Makefile.inc | 8 + .../en_US.ISO8859-1/hardware/alpha/Makefile | 2 + .../hardware/alpha/article.sgml | 2 + .../en_US.ISO8859-1/hardware/amd64/Makefile | 2 + .../hardware/amd64/article.sgml | 2 + .../doc/en_US.ISO8859-1/hardware/article.sgml | 117 ++---- .../en_US.ISO8859-1/hardware/common/dev.sgml | 117 ++---- .../en_US.ISO8859-1/hardware/i386/Makefile | 3 +- .../hardware/i386/article.sgml | 2 + .../en_US.ISO8859-1/hardware/ia64/Makefile | 2 + .../hardware/ia64/article.sgml | 2 + .../en_US.ISO8859-1/hardware/pc98/Makefile | 2 + .../hardware/pc98/article.sgml | 2 + .../en_US.ISO8859-1/hardware/sparc64/Makefile | 2 + .../hardware/sparc64/article.sgml | 2 + release/doc/share/misc/dev.archlist.txt | 63 ++++ release/doc/share/misc/man2hwnotes.pl | 353 ++++++++++++++++++ release/doc/share/mk/doc.relnotes.mk | 21 ++ release/doc/share/sgml/Makefile | 16 + 20 files changed, 542 insertions(+), 183 deletions(-) create mode 100644 release/doc/share/misc/dev.archlist.txt create mode 100644 release/doc/share/misc/man2hwnotes.pl create mode 100644 release/doc/share/sgml/Makefile diff --git a/release/doc/Makefile b/release/doc/Makefile index e5919e8a76ed..51076c21309a 100644 --- a/release/doc/Makefile +++ b/release/doc/Makefile @@ -3,10 +3,11 @@ # The user can override the default language to build and install # with the RELNOTES_LANG variable. # +SUBDIR = share/sgml .if defined(RELNOTES_LANG) && !empty(RELNOTES_LANG) -SUBDIR = ${RELNOTES_LANG} +SUBDIR+= ${RELNOTES_LANG} .else -SUBDIR = en_US.ISO8859-1 +SUBDIR+= en_US.ISO8859-1 .endif RELN_ROOT?= ${.CURDIR} diff --git a/release/doc/en_US.ISO8859-1/hardware/Makefile.inc b/release/doc/en_US.ISO8859-1/hardware/Makefile.inc index 439fdc56d7c5..37ebd11d4fce 100644 --- a/release/doc/en_US.ISO8859-1/hardware/Makefile.inc +++ b/release/doc/en_US.ISO8859-1/hardware/Makefile.inc @@ -5,3 +5,11 @@ DESTDIR?= ${DOCDIR}/hardware/${.CURDIR:T} .else DESTDIR?= ${DOCDIR}/en_US.ISO8859-1/hardware/${.CURDIR:T} .endif + +# Force include of the autogenerated catalog. It has to be set +# directly in the CATALOG variable since doc.docbook.mk check if each +# catalog file exist for the other *CATALOG variables, and +# catalog-auto does not exist yet when that check is performed, +# causing catalog-auto not to be added to CATALOGS which breaks the +# build. +CATALOGS+= -c ${DEV-AUTODIR}/catalog-auto diff --git a/release/doc/en_US.ISO8859-1/hardware/alpha/Makefile b/release/doc/en_US.ISO8859-1/hardware/alpha/Makefile index 7687c4b96f34..505825cfb817 100644 --- a/release/doc/en_US.ISO8859-1/hardware/alpha/Makefile +++ b/release/doc/en_US.ISO8859-1/hardware/alpha/Makefile @@ -15,6 +15,8 @@ SRCS+= proc-alpha.sgml SRCS+= ../common/hw.ent SRCS+= ../common/artheader.sgml SRCS+= ../common/dev.sgml +SRCS+= ${DEV-AUTODIR}/catalog-auto +SRCS+= ${DEV-AUTODIR}/dev-auto.sgml .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/release/doc/en_US.ISO8859-1/hardware/alpha/article.sgml b/release/doc/en_US.ISO8859-1/hardware/alpha/article.sgml index 38ca9661e4aa..fc342a1d3e1a 100644 --- a/release/doc/en_US.ISO8859-1/hardware/alpha/article.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/alpha/article.sgml @@ -9,6 +9,8 @@ %mlists; %release; + +%devauto; %sections; diff --git a/release/doc/en_US.ISO8859-1/hardware/amd64/Makefile b/release/doc/en_US.ISO8859-1/hardware/amd64/Makefile index d7bc7281b120..976e97a26eda 100644 --- a/release/doc/en_US.ISO8859-1/hardware/amd64/Makefile +++ b/release/doc/en_US.ISO8859-1/hardware/amd64/Makefile @@ -15,6 +15,8 @@ SRCS+= proc-amd64.sgml SRCS+= ../common/hw.ent SRCS+= ../common/artheader.sgml SRCS+= ../common/dev.sgml +SRCS+= ${DEV-AUTODIR}/catalog-auto +SRCS+= ${DEV-AUTODIR}/dev-auto.sgml .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/release/doc/en_US.ISO8859-1/hardware/amd64/article.sgml b/release/doc/en_US.ISO8859-1/hardware/amd64/article.sgml index 868ec8123375..c40771caa26f 100644 --- a/release/doc/en_US.ISO8859-1/hardware/amd64/article.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/amd64/article.sgml @@ -9,6 +9,8 @@ %mlists; %release; + +%devauto; %sections; diff --git a/release/doc/en_US.ISO8859-1/hardware/article.sgml b/release/doc/en_US.ISO8859-1/hardware/article.sgml index 2f0ff87d1d72..07726807d9ac 100644 --- a/release/doc/en_US.ISO8859-1/hardware/article.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/article.sgml @@ -66,25 +66,17 @@ - Adaptec AIC-6260 and AIC-6360 based boards - (&man.aic.4; driver) + &hwlist.aic; - Adaptec AHA-154X ISA and AHA-1640 MCA - SCSI controllers and compatibles (&man.aha.4; driver) + &hwlist.aha; - Adaptec AHA_174x series EISA SCSI controller in - enhanced mode (&man.ahb.4; driver) + &hwlist.ahb; - Adaptec AIC-7770, AIC-7850, - AIC-7860, AIC-7870, AIC-7880, and AIC789x based SCSI host - adapters (&man.ahc.4; driver) + &hwlist.ahc; - Ultra-320 SCSI controllers based on the Adaptec - AIC7901, AIC7901A, and AIC7902 Ultra320 controller chips - (&man.ahd.4; driver) - + &hwlist.ahd; - Adaptec FSA family RAID controllers (&man.aac.4; driver) + &hwlist.aac; NEC PC-9801-55, 92 and their compatible C-Bus SCSI interfaces (&man.ct.4; driver) @@ -199,6 +191,8 @@ + &hwlist.adw; + BusLogic MultiMaster W, C, S, and A Series Host Adapters (&man.bt.4; driver) @@ -211,23 +205,11 @@ - DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV and - SmartRAID IV SCSI/RAID controllers (&man.dpt.4; driver) + &hwlist.dpt; - Adaptec 21x0S/32x0S/34x0S SCSI RAID - controllers (&man.asr.4; driver) + &hwlist.asr; - Adaptec 2000S/2005S Zero-Channel RAID controllers - (&man.asr.4; driver) - - Adaptec 2400A ATA-100 RAID controller - (&man.asr.4; driver) - - DPT SmartRAID V and VI SCSI RAID controllers - (&man.asr.4; driver) - - AMI MegaRAID Express and Enterprise family RAID controllers - (&man.amr.4; driver) + &hwlist.amr; Booting from these controllers is supported. EISA adapters are not supported. @@ -235,7 +217,6 @@ Booting from these controllers is not supported due to SRM limitations. - Mylex DAC-family RAID controllers with 2.x, 3.x, 4.x and 5.x firmware (&man.mlx.4; driver) @@ -257,8 +238,7 @@ (&man.mly.4; driver) - 3ware Escalade ATA RAID controllers (&man.twe.4; driver) - + &hwlist.twe; LSI/Symbios (formerly NCR) 53C8XX and 53C10XX PCI @@ -274,8 +254,7 @@ adapters (&man.stg.4; driver) - Qlogic controllers and variants (&man.isp.4; driver) - + &hwlist.isp; DTC 3290 EISA SCSI controller in 1542 emulation mode. @@ -299,9 +278,7 @@ (&man.ida.4; driver) - SCSI adapters utilizing the Command Interface - for SCSI-3 Support (&man.ciss.4; driver) - + &hwlist.ciss; Intel Integrated RAID Controllers (&man.iir.4; driver) @@ -713,7 +690,7 @@ NICs and clones for PCI, MiniPCI, and CardBus (&man.dc.4; driver) - ADMtek Inc. AN986-based USB Ethernet NICs (&man.aue.4; driver) + &hwlist.aue; CATC USB-EL1210A-based USB Ethernet NICs (&man.cue.4; driver) @@ -726,18 +703,15 @@ RealTek RTL8150-based USB Ethernet NICs (&man.rue.4; driver) - Davicom DM9601-based USB Ethernet - NICs (&man.udav.4; driver) + &hwlist.udav; DEC DC21040, DC21041, DC21140, DC21141, DC21142, and DC21143 based NICs (&man.de.4; driver) - Fujitsu MB86960A/MB86965A based Fast Ethernet NICs - (&man.fe.4; driver) + &hwlist.fe; - Intel 82557-, 82258-, 82559-, 82550- - or 82562-based Fast Ethernet NICs (&man.fxp.4; driver) + &hwlist.fxp; Intel 82595-based Ethernet NICs (&man.ex.4; driver) @@ -750,8 +724,7 @@ 3Com 3C501 8-bit ISA Ethernet NIC (&man.el.4; driver) - 3Com Etherlink XL-based NICs (&man.xl.4; driver) - + &hwlist.xl; 3Com 3C59X series NICs (&man.vx.4; driver) @@ -763,9 +736,7 @@ Megahertz X-Jack Ethernet PC-Card CC-10BT (&man.sn.4; driver) - Xircom CreditCard adapters (16 bit) and - workalikes (&man.xe.4; driver) - + &hwlist.xe; National Semiconductor DP8393X (SONIC) Ethernet cards (snc driver) @@ -783,13 +754,9 @@ LXT1001 NetCellerator controller (&man.lge.4; driver) - Ethernet and Fast Ethernet NICs based - on the 3Com 3XP Typhoon/Sidewinder (3CR990) chipset (&man.txp.4; driver) - + &hwlist.txp; - Gigabit Ethernet NICs based on the Broadcom BCM570x - (&man.bge.4; driver) - + &hwlist.bge; Gigabit Ethernet NICs based on the Intel 82542 and 82543 controller chips (&man.gx.4; and &man.em.4; @@ -798,13 +765,12 @@ controller chips (&man.em.4; driver only) - Sun HME and QFE Ethernet NICs (&man.hme.4; driver) + &hwlist.hme; Sun GEM (Gigabit Ethernet) and ERI (Fast Ethernet) NICs (&man.gem.4; driver) - Myson Ethernet NICs (&man.my.4; driver) - + &hwlist.my; Broadcom BCM4401 based Fast Ethernet adapters (&man.bfe.4; driver) @@ -859,8 +825,7 @@ Raytheon Raylink 2.4GHz wireless adapters (&man.ray.4; driver) - AMD Am79C930 and Harris (Intersil) based 802.11b cards (&man.awi.4; driver) - + &hwlist.awi; Atheros AR5210, AR5211, and AR5212-based 802.11a/b/g network interfaces (&man.ath.4; driver) @@ -871,29 +836,7 @@ Miscellaneous Networks - Cronyx Sigma synchronous / asynchronous serial - adapters with V.35/RS-232/RS-530/RS-449 interfaces (&man.cx.4; driver) - - - Cronyx Sigma-22, Sigma-24 - - - Cronyx Sigma-100 - - - Cronyx Sigma-400, Sigma-401, Sigma-404, Sigma-410, Sigma-440 - - - Cronyx Sigma-500 - - - Cronyx Sigma-703 - - - Cronyx Sigma-800, Sigma-801, Sigma-810, Sigma-840 - - - + &hwlist.cx; Cronyx Tau-PCI synchronous serial adapters for PCI bus (&man.cp.4; driver) @@ -935,13 +878,7 @@ Granch SBNI16 SHDSL modems (&man.sbsh.4; driver) - SMC COM90cx6 ARCNET network adapters (cm driver) - - - SMC 90c26, 90c56, and 90c66 in 90c56 compatability mode - - - + &hwlist.cm; diff --git a/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml b/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml index 2f0ff87d1d72..07726807d9ac 100644 --- a/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml @@ -66,25 +66,17 @@ - Adaptec AIC-6260 and AIC-6360 based boards - (&man.aic.4; driver) + &hwlist.aic; - Adaptec AHA-154X ISA and AHA-1640 MCA - SCSI controllers and compatibles (&man.aha.4; driver) + &hwlist.aha; - Adaptec AHA_174x series EISA SCSI controller in - enhanced mode (&man.ahb.4; driver) + &hwlist.ahb; - Adaptec AIC-7770, AIC-7850, - AIC-7860, AIC-7870, AIC-7880, and AIC789x based SCSI host - adapters (&man.ahc.4; driver) + &hwlist.ahc; - Ultra-320 SCSI controllers based on the Adaptec - AIC7901, AIC7901A, and AIC7902 Ultra320 controller chips - (&man.ahd.4; driver) - + &hwlist.ahd; - Adaptec FSA family RAID controllers (&man.aac.4; driver) + &hwlist.aac; NEC PC-9801-55, 92 and their compatible C-Bus SCSI interfaces (&man.ct.4; driver) @@ -199,6 +191,8 @@ + &hwlist.adw; + BusLogic MultiMaster W, C, S, and A Series Host Adapters (&man.bt.4; driver) @@ -211,23 +205,11 @@ - DPT SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV and - SmartRAID IV SCSI/RAID controllers (&man.dpt.4; driver) + &hwlist.dpt; - Adaptec 21x0S/32x0S/34x0S SCSI RAID - controllers (&man.asr.4; driver) + &hwlist.asr; - Adaptec 2000S/2005S Zero-Channel RAID controllers - (&man.asr.4; driver) - - Adaptec 2400A ATA-100 RAID controller - (&man.asr.4; driver) - - DPT SmartRAID V and VI SCSI RAID controllers - (&man.asr.4; driver) - - AMI MegaRAID Express and Enterprise family RAID controllers - (&man.amr.4; driver) + &hwlist.amr; Booting from these controllers is supported. EISA adapters are not supported. @@ -235,7 +217,6 @@ Booting from these controllers is not supported due to SRM limitations. - Mylex DAC-family RAID controllers with 2.x, 3.x, 4.x and 5.x firmware (&man.mlx.4; driver) @@ -257,8 +238,7 @@ (&man.mly.4; driver) - 3ware Escalade ATA RAID controllers (&man.twe.4; driver) - + &hwlist.twe; LSI/Symbios (formerly NCR) 53C8XX and 53C10XX PCI @@ -274,8 +254,7 @@ adapters (&man.stg.4; driver) - Qlogic controllers and variants (&man.isp.4; driver) - + &hwlist.isp; DTC 3290 EISA SCSI controller in 1542 emulation mode. @@ -299,9 +278,7 @@ (&man.ida.4; driver) - SCSI adapters utilizing the Command Interface - for SCSI-3 Support (&man.ciss.4; driver) - + &hwlist.ciss; Intel Integrated RAID Controllers (&man.iir.4; driver) @@ -713,7 +690,7 @@ NICs and clones for PCI, MiniPCI, and CardBus (&man.dc.4; driver) - ADMtek Inc. AN986-based USB Ethernet NICs (&man.aue.4; driver) + &hwlist.aue; CATC USB-EL1210A-based USB Ethernet NICs (&man.cue.4; driver) @@ -726,18 +703,15 @@ RealTek RTL8150-based USB Ethernet NICs (&man.rue.4; driver) - Davicom DM9601-based USB Ethernet - NICs (&man.udav.4; driver) + &hwlist.udav; DEC DC21040, DC21041, DC21140, DC21141, DC21142, and DC21143 based NICs (&man.de.4; driver) - Fujitsu MB86960A/MB86965A based Fast Ethernet NICs - (&man.fe.4; driver) + &hwlist.fe; - Intel 82557-, 82258-, 82559-, 82550- - or 82562-based Fast Ethernet NICs (&man.fxp.4; driver) + &hwlist.fxp; Intel 82595-based Ethernet NICs (&man.ex.4; driver) @@ -750,8 +724,7 @@ 3Com 3C501 8-bit ISA Ethernet NIC (&man.el.4; driver) - 3Com Etherlink XL-based NICs (&man.xl.4; driver) - + &hwlist.xl; 3Com 3C59X series NICs (&man.vx.4; driver) @@ -763,9 +736,7 @@ Megahertz X-Jack Ethernet PC-Card CC-10BT (&man.sn.4; driver) - Xircom CreditCard adapters (16 bit) and - workalikes (&man.xe.4; driver) - + &hwlist.xe; National Semiconductor DP8393X (SONIC) Ethernet cards (snc driver) @@ -783,13 +754,9 @@ LXT1001 NetCellerator controller (&man.lge.4; driver) - Ethernet and Fast Ethernet NICs based - on the 3Com 3XP Typhoon/Sidewinder (3CR990) chipset (&man.txp.4; driver) - + &hwlist.txp; - Gigabit Ethernet NICs based on the Broadcom BCM570x - (&man.bge.4; driver) - + &hwlist.bge; Gigabit Ethernet NICs based on the Intel 82542 and 82543 controller chips (&man.gx.4; and &man.em.4; @@ -798,13 +765,12 @@ controller chips (&man.em.4; driver only) - Sun HME and QFE Ethernet NICs (&man.hme.4; driver) + &hwlist.hme; Sun GEM (Gigabit Ethernet) and ERI (Fast Ethernet) NICs (&man.gem.4; driver) - Myson Ethernet NICs (&man.my.4; driver) - + &hwlist.my; Broadcom BCM4401 based Fast Ethernet adapters (&man.bfe.4; driver) @@ -859,8 +825,7 @@ Raytheon Raylink 2.4GHz wireless adapters (&man.ray.4; driver) - AMD Am79C930 and Harris (Intersil) based 802.11b cards (&man.awi.4; driver) - + &hwlist.awi; Atheros AR5210, AR5211, and AR5212-based 802.11a/b/g network interfaces (&man.ath.4; driver) @@ -871,29 +836,7 @@ Miscellaneous Networks - Cronyx Sigma synchronous / asynchronous serial - adapters with V.35/RS-232/RS-530/RS-449 interfaces (&man.cx.4; driver) - - - Cronyx Sigma-22, Sigma-24 - - - Cronyx Sigma-100 - - - Cronyx Sigma-400, Sigma-401, Sigma-404, Sigma-410, Sigma-440 - - - Cronyx Sigma-500 - - - Cronyx Sigma-703 - - - Cronyx Sigma-800, Sigma-801, Sigma-810, Sigma-840 - - - + &hwlist.cx; Cronyx Tau-PCI synchronous serial adapters for PCI bus (&man.cp.4; driver) @@ -935,13 +878,7 @@ Granch SBNI16 SHDSL modems (&man.sbsh.4; driver) - SMC COM90cx6 ARCNET network adapters (cm driver) - - - SMC 90c26, 90c56, and 90c66 in 90c56 compatability mode - - - + &hwlist.cm; diff --git a/release/doc/en_US.ISO8859-1/hardware/i386/Makefile b/release/doc/en_US.ISO8859-1/hardware/i386/Makefile index 507b8ee37b5a..ab08a81a928c 100644 --- a/release/doc/en_US.ISO8859-1/hardware/i386/Makefile +++ b/release/doc/en_US.ISO8859-1/hardware/i386/Makefile @@ -1,5 +1,4 @@ # $FreeBSD$ - RELN_ROOT?= ${.CURDIR}/../../.. DOC?= article @@ -15,6 +14,8 @@ SRCS+= proc-i386.sgml SRCS+= ../common/hw.ent SRCS+= ../common/artheader.sgml SRCS+= ../common/dev.sgml +SRCS+= ${DEV-AUTODIR}/catalog-auto +SRCS+= ${DEV-AUTODIR}/dev-auto.sgml .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/release/doc/en_US.ISO8859-1/hardware/i386/article.sgml b/release/doc/en_US.ISO8859-1/hardware/i386/article.sgml index 3a6788983f65..c8a4bf44bcc2 100644 --- a/release/doc/en_US.ISO8859-1/hardware/i386/article.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/i386/article.sgml @@ -9,6 +9,8 @@ %mlists; %release; + +%devauto; %sections; diff --git a/release/doc/en_US.ISO8859-1/hardware/ia64/Makefile b/release/doc/en_US.ISO8859-1/hardware/ia64/Makefile index 3b302cc8b9a1..8896eccc6483 100644 --- a/release/doc/en_US.ISO8859-1/hardware/ia64/Makefile +++ b/release/doc/en_US.ISO8859-1/hardware/ia64/Makefile @@ -15,6 +15,8 @@ SRCS+= article.sgml SRCS+= ../common/hw.ent SRCS+= ../common/artheader.sgml SRCS+= ../common/dev.sgml +SRCS+= ${DEV-AUTODIR}/catalog-auto +SRCS+= ${DEV-AUTODIR}/dev-auto.sgml .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/release/doc/en_US.ISO8859-1/hardware/ia64/article.sgml b/release/doc/en_US.ISO8859-1/hardware/ia64/article.sgml index f6fc9ed6b283..4a188b79ef40 100644 --- a/release/doc/en_US.ISO8859-1/hardware/ia64/article.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/ia64/article.sgml @@ -9,6 +9,8 @@ %mlists; %release; + +%devauto; %sections; diff --git a/release/doc/en_US.ISO8859-1/hardware/pc98/Makefile b/release/doc/en_US.ISO8859-1/hardware/pc98/Makefile index 5d33ce7277a5..a4b5bc48e759 100644 --- a/release/doc/en_US.ISO8859-1/hardware/pc98/Makefile +++ b/release/doc/en_US.ISO8859-1/hardware/pc98/Makefile @@ -15,6 +15,8 @@ SRCS+= proc-pc98.sgml SRCS+= ../common/hw.ent SRCS+= ../common/artheader.sgml SRCS+= ../common/dev.sgml +SRCS+= ${DEV-AUTODIR}/catalog-auto +SRCS+= ${DEV-AUTODIR}/dev-auto.sgml .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/release/doc/en_US.ISO8859-1/hardware/pc98/article.sgml b/release/doc/en_US.ISO8859-1/hardware/pc98/article.sgml index 8c7bb176224c..205fd2b6e8b8 100644 --- a/release/doc/en_US.ISO8859-1/hardware/pc98/article.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/pc98/article.sgml @@ -9,6 +9,8 @@ %mlists; %release; + +%devauto; %sections; diff --git a/release/doc/en_US.ISO8859-1/hardware/sparc64/Makefile b/release/doc/en_US.ISO8859-1/hardware/sparc64/Makefile index cb8a4969b92f..4414433400da 100644 --- a/release/doc/en_US.ISO8859-1/hardware/sparc64/Makefile +++ b/release/doc/en_US.ISO8859-1/hardware/sparc64/Makefile @@ -15,6 +15,8 @@ SRCS+= proc-sparc64.sgml SRCS+= ../common/hw.ent SRCS+= ../common/artheader.sgml SRCS+= ../common/dev.sgml +SRCS+= ${DEV-AUTODIR}/catalog-auto +SRCS+= ${DEV-AUTODIR}/dev-auto.sgml .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/release/doc/en_US.ISO8859-1/hardware/sparc64/article.sgml b/release/doc/en_US.ISO8859-1/hardware/sparc64/article.sgml index b4ff29d904ad..9db57489cdb1 100644 --- a/release/doc/en_US.ISO8859-1/hardware/sparc64/article.sgml +++ b/release/doc/en_US.ISO8859-1/hardware/sparc64/article.sgml @@ -9,6 +9,8 @@ %mlists; %release; + +%devauto; %sections; diff --git a/release/doc/share/misc/dev.archlist.txt b/release/doc/share/misc/dev.archlist.txt new file mode 100644 index 000000000000..e18429183569 --- /dev/null +++ b/release/doc/share/misc/dev.archlist.txt @@ -0,0 +1,63 @@ +# +# Copyright (c) 2004 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. +# [,...] +# +aac i386,amd64 +adv i386,pc98,amd64 +adw i386,pc98,amd64 +aha i386 +ahb i386 +ahc i386,pc98,alpha,sparc64,amd64 +ahd i386,sparc64,amd64 +aic i386,pc98,amd64 +aue i386,pc98,amd64 +awi i386,pc98,amd64 +bge i386,pc98,ia64,amd64 +ciss i386,amd64 +cm i386 +cp i386,pc98 +ct pc98 +cx i386 +dpt i386,amd64 +fe i386,pc98,amd64 +hme sparc64 +isp i386,pc98,alpha,ia64,sparc64,amd64 +my i386,pc98 +twe i386 +txp i386,pc98,alpha,amd64 +udav i386,pc98,amd64 +xe i386,amd64 +xl i386,pc98,alpha,sparc64,amd64 diff --git a/release/doc/share/misc/man2hwnotes.pl b/release/doc/share/misc/man2hwnotes.pl new file mode 100644 index 000000000000..915728dfc783 --- /dev/null +++ b/release/doc/share/misc/man2hwnotes.pl @@ -0,0 +1,353 @@ +#!/usr/bin/perl -w +# Emacs should use -*- cperl -*- mode +# +# Copyright (c) 2003-2004 Simon L. Nielsen +# 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: +# mdoc2sgml [-l] [-d 0-6] [-a ] 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 $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:d:l",\%options)) { + die("Invalid command line arguments\n"); +} + +if (defined($options{d})) { + $debuglevel = $options{d}; +} +if (defined($options{a})) { + $archlist_file = $options{a}; +} +if (defined($options{l})) { + $only_list_out = 1; +} + +if ($debuglevel > 0) { + # Don't do output buffering in debug mode. + $| = 1; +} + +load_archlist($archlist_file); + +if ($only_list_out) { + # Print the default device preamble entities + print "\n"; + print "\n"; +} + +foreach my $page (@ARGV) { + dlog(2, "Parsing $page"); + parse($page); + + print join("\n", @out_lines); + print "\n"; + print join("\n", @out_dev); + print "\n"; + + @out_lines = (); + @out_dev = (); +} + +sub parse { + my ($manpage) = @_; + + my $cur_mansection; + my $found_hwlist = 0; + my %mdocvars; + $mdocvars{isin_hwlist} = 0; + $mdocvars{isin_list} = 0; + $mdocvars{parabuf} = ""; + $mdocvars{listtype} = ""; + + open(MANPAGE, "$manpage") || die(); + while() { + chomp; + my $line = $_; + + dlog(5, "Read '$line'"); + + # Find commands + if (s/^\.(.*)$/$1/) { + # Detect, and ignore, comment lines + if (s/^\\"(.*)$/$1/) { + next; + } + + if (/^Nm "?(\w+)"?/ && !defined($mdocvars{Nm})) { + dlog(3, "Setting Nm to $1"); + $mdocvars{Nm} = $1; + + } elsif (/^Nm$/) { + if (defined($mdocvars{Nm}) && $mdocvars{Nm} ne "") { + parabuf_addline(\%mdocvars, "&man.".$mdocvars{Nm}.".$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, "&hwlist.preamble.pre; " . + "&man.".$mdocvars{Nm}.".$cur_mansection; " . + "&hwlist.preamble.post;"); + } + } elsif ($mdocvars{isin_hwlist}) { + dlog(2, "Found a HWLIST STOP key!"); + add_sgmltag(\%mdocvars, "'>"); + $mdocvars{isin_hwlist} = 0; + } + + } elsif (/^Dt ([^ ]+) ([^ ]+)/) { + dlog(4, "Setting mansection to $2"); + $mdocvars{cur_manname} = lc($1); + $cur_mansection = $2; + + } elsif (/^It ?(.*)$/) { + # Flush last item + if ($mdocvars{parabuf} ne "") { + add_listitem(\%mdocvars); + } + parabuf_addline(\%mdocvars, $1); + } elsif (/^Bl/) { + $mdocvars{isin_list} = 1; + flush_out(\%mdocvars); + add_sgmltag(\%mdocvars, ""); + + if (/-tag/) { + $mdocvars{listtype} = "tag"; + # YACK! Hack for ata(4) + if ($mdocvars{Nm} eq "ata") { + $mdocvars{listtype} = "tagHACK"; + } + } elsif (/-bullet/) { + $mdocvars{listtype} = "bullet"; + } else { + $mdocvars{listtype} = "unknown"; + } + dlog(2, "Listtype set to $mdocvars{listtype}"); + } elsif (/^El/) { + if ($mdocvars{parabuf} ne "") { + add_listitem(\%mdocvars); + } + + add_sgmltag(\%mdocvars, ""); + $mdocvars{isin_list} = 0; + } elsif (/^Tn (.+)$/) { + # For now we print TradeName text as regular text. + my $txt = $1; + $txt =~ s/^(.+) ,$/$1,/; + + parabuf_addline(\%mdocvars, $txt); + } elsif (/^Xr (.+) (.+)/) { + # We need to check if the manual page exist to avoid + # breaking the doc build just because of a broken + # reference. + #parabuf_addline(\%mdocvars, "&man.$1.$2;"); + parabuf_addline(\%mdocvars, "$1($2)"); + } + # Ignore all other commands + } else { + # This is then regular text + parabuf_addline(\%mdocvars, $_); + } + } + close(MANPAGE) || die("Could not close input manual page"); + if (! $found_hwlist) { + dlog(1, "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, ""); + + 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}})) { + $para_arch = ' arch="' . $archlist{${$mdocvars}{Nm}} . '"'; + } + $out = "&".$entity_name.";"; + + 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(defined($archlist{${$mdocvars}{Nm}})) { + $para_arch = ' arch="' . $archlist{${$mdocvars}{Nm}} . '"'; + } + $listitem = "&".$entity_name.";"; + 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"); + + # We only care about the HW list for now. + if (!${$mdocvars}{isin_hwlist}) { + return; + } + if ($txt eq "") { + return; + } + + if ($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") { + 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\n"); + while() { + chomp; + $lineno++; + + if (/^#/ || $_ eq "") { + next; + } + + if (/(\w+)\t([\w,]+)/) { + dlog(4, "For driver $1 setting arch to $2"); + $archlist{$1} = $2; + } else { + dlog(1, "Could not parse line $lineno"); + } + } + + close(FILE); +} diff --git a/release/doc/share/mk/doc.relnotes.mk b/release/doc/share/mk/doc.relnotes.mk index 0335640342c1..da5dbc042735 100644 --- a/release/doc/share/mk/doc.relnotes.mk +++ b/release/doc/share/mk/doc.relnotes.mk @@ -26,3 +26,24 @@ JADEFLAGS+= -iinclude.historic .else JADEFLAGS+= -ino.include.historic .endif + +# +# 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/sgml +CLEANFILES+= ${DEV-AUTODIR}/dev-auto.sgml ${DEV-AUTODIR}/catalog-auto + +# Dependency that the article makefiles can use to pull in +# dev-auto.sgml. +${DEV-AUTODIR}/catalog-auto ${DEV-AUTODIR}/dev-auto.sgml: ${MAN4PAGES} \ + ${ARCHLIST} ${RELN_ROOT}/share/misc/man2hwnotes.pl + cd ${RELN_ROOT}/share/sgml && make dev-auto.sgml diff --git a/release/doc/share/sgml/Makefile b/release/doc/share/sgml/Makefile new file mode 100644 index 000000000000..8592fd053fce --- /dev/null +++ b/release/doc/share/sgml/Makefile @@ -0,0 +1,16 @@ +# $FreeBSD$ + +RELN_ROOT?= ${.CURDIR}/../.. + +.include "${RELN_ROOT}/share/mk/doc.relnotes.mk" +.include "${DOC_PREFIX}/share/mk/doc.project.mk" + +dev-auto.sgml: ${MAN4PAGES} ${ARCHLIST} ${RELN_ROOT}/share/misc/man2hwnotes.pl catalog-auto + ${PERL} ${RELN_ROOT}/share/misc/man2hwnotes.pl -a ${ARCHLIST} \ + ${MAN4PAGES} > ${.TARGET} + +catalog-auto: + ${ECHO_CMD} 'PUBLIC "-//FreeBSD//ENTITIES Auto Generated Device Lists//EN"' \ + '"dev-auto.sgml"' > ${.TARGET} + +all: dev-auto.sgml