From 8a1a59e2f58160897742e43a1203bc8b699e20b2 Mon Sep 17 00:00:00 2001
From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
Date: Mon, 17 Sep 2012 08:42:56 +0000
Subject: [PATCH] Hook-up advistories and patches to be installed to  
 www.freebsd.org/security/{advisories,patches}/... from the en_US.ISO8859-1
 directory as we do for logos, etc.

The magic is a bit special to avoid having to add each advisory
or errata notice, and their patches and signatures individually.

Factor out the slightly different to bsd.links.mk SYMLINKS
support as well as the "bulk data install" that cannot be
handled by just DATA as (i) the input dir differs, (ii) input
uses a 1 or more level of sub-directories.

This is the second of three steps.  The last one will be to link
to these files locally rather than to security.freebsd.org.

Approved by:	gabor
---
 en_US.ISO8859-1/htdocs/security/Makefile      |  3 ++
 en_US.ISO8859-1/htdocs/security/Makefile.inc  |  4 +++
 .../htdocs/security/advisories/Makefile       | 16 ++++++++++
 .../htdocs/security/patches/Makefile          | 29 +++++++++++++++++++
 share/mk/web.site.mk                          | 28 ++++++++++++++++--
 5 files changed, 78 insertions(+), 2 deletions(-)
 create mode 100644 en_US.ISO8859-1/htdocs/security/Makefile.inc
 create mode 100644 en_US.ISO8859-1/htdocs/security/advisories/Makefile
 create mode 100644 en_US.ISO8859-1/htdocs/security/patches/Makefile

diff --git a/en_US.ISO8859-1/htdocs/security/Makefile b/en_US.ISO8859-1/htdocs/security/Makefile
index 739ee38f18..8bbf737b70 100644
--- a/en_US.ISO8859-1/htdocs/security/Makefile
+++ b/en_US.ISO8859-1/htdocs/security/Makefile
@@ -7,6 +7,9 @@
 .include "../Makefile.inc"
 .endif
 
+SUBDIR=		advisories
+SUBDIR+=	patches
+
 DATA=	so_public_key.asc
 DOCS=	charter.sgml
 DOCS+=	security.sgml
diff --git a/en_US.ISO8859-1/htdocs/security/Makefile.inc b/en_US.ISO8859-1/htdocs/security/Makefile.inc
new file mode 100644
index 0000000000..6f9d04a9b4
--- /dev/null
+++ b/en_US.ISO8859-1/htdocs/security/Makefile.inc
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+WEBBASE?=	/data/security
+DOC_PREFIX?=	${.CURDIR}/../../../..
diff --git a/en_US.ISO8859-1/htdocs/security/advisories/Makefile b/en_US.ISO8859-1/htdocs/security/advisories/Makefile
new file mode 100644
index 0000000000..637ff08fa7
--- /dev/null
+++ b/en_US.ISO8859-1/htdocs/security/advisories/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+.if exists(../Makefile.conf)
+.include "../Makefile.conf"
+.endif
+.if exists(../Makefile.inc)
+.include "../Makefile.inc"
+.endif
+
+BULKDATADIRS=	${DOC_PREFIX}/share/security/advisories
+
+# Things that went wrong in the past and had to be fixed.
+# SYMLINKS+=	Source Target
+SYMLINKS=	FreeBSD-SA-09:06.ktimer.asc FreeBSD-SA-06:09.ktimer.asc
+
+.include "${DOC_PREFIX}/share/mk/web.site.mk"
diff --git a/en_US.ISO8859-1/htdocs/security/patches/Makefile b/en_US.ISO8859-1/htdocs/security/patches/Makefile
new file mode 100644
index 0000000000..d5edd2611e
--- /dev/null
+++ b/en_US.ISO8859-1/htdocs/security/patches/Makefile
@@ -0,0 +1,29 @@
+# $FreeBSD$
+
+.if exists(../Makefile.conf)
+.include "../Makefile.conf"
+.endif
+.if exists(../Makefile.inc)
+.include "../Makefile.inc"
+.endif
+
+BULKDATADIRS=	${DOC_PREFIX}/share/security/patches
+
+# Things that went wrong in the past and had to be fixed.
+# Source Target
+SYMLINKS=
+SYMLINKS+=	SA-04:04/tcp47.patch tcp47.patch
+SYMLINKS+=	SA-04:04/tcp47.patch.asc tcp47.patch.asc
+SYMLINKS+=	SA-04:04/tcp52.patch tcp52.patch
+SYMLINKS+=	SA-04:04/tcp52.patch.asc tcp52.patch.asc
+SYMLINKS+=	SA-10:05 SA-10-05
+SYMLINKS+=	kadmin.patch SA-04:09/kadmind.patch
+SYMLINKS+=	kadmin.patch.asc SA-04:09/kadmind.patch.asc
+SYMLINKS+=	kadmind.patch SA-02:40/kadmin.patch
+SYMLINKS+=	kadmind.patch.asc SA-02:40/kadmin.patch.asc
+SYMLINKS+=	ip-options.diff SA-00:23/ip_options.diff
+SYMLINKS+=	ip-options.diff.asc SA-00:23/ip_options.diff.asc
+# Lost?
+#SYMLINKS+=	../../tools/libfind.sh patches/SA-00:17/libfind.sh
+
+.include "${DOC_PREFIX}/share/mk/web.site.mk"
diff --git a/share/mk/web.site.mk b/share/mk/web.site.mk
index 44682e2224..dbd945da62 100644
--- a/share/mk/web.site.mk
+++ b/share/mk/web.site.mk
@@ -322,8 +322,12 @@ INSTALL_CGI?=	\
 _ALLINSTALL+=	${GENDOCS} ${DATA}
 
 realinstall: ${COOKIE} ${_ALLINSTALL} ${CGI} _PROGSUBDIR
-.if !empty(_ALLINSTALL)
+.if !empty(_ALLINSTALL) || !empty(BULKDATADIRS)
 	@${MKDIR} -p ${DOCINSTALLDIR}
+.for entry in ${BULKDATADIRS}
+	@(cd ${entry} && \
+	${FIND} * -type d -exec ${MKDIR} -p ${DOCINSTALLDIR}/{} \; )
+.endfor
 .for entry in ${_ALLINSTALL}
 .if exists(${.CURDIR}/${entry})
 	${INSTALL_WEB} ${.CURDIR}/${entry} ${DOCINSTALLDIR}
@@ -331,6 +335,10 @@ realinstall: ${COOKIE} ${_ALLINSTALL} ${CGI} _PROGSUBDIR
 	${INSTALL_WEB} ${entry} ${DOCINSTALLDIR}
 .endif
 .endfor
+.for entry in ${BULKDATADIRS}
+	@(cd ${entry} && \
+	${FIND} * -type f -exec ${INSTALL_WEB} ${entry}/{} ${DOCINSTALLDIR}/{} \; )
+.endfor
 .if defined(INDEXLINK) && !empty(INDEXLINK)
 	cd ${DOCINSTALLDIR}; ${LN} -fs ${INDEXLINK} index.html
 .endif
@@ -342,9 +350,25 @@ realinstall: ${COOKIE} ${_ALLINSTALL} ${CGI} _PROGSUBDIR
 .endfor
 .endif
 
+_installlinks:
+.if defined(SYMLINKS) && !empty(SYMLINKS)
+	@(${ECHO_CMD} "====> Creating symlinks in ${DOCINSTALLDIR}" && \
+	cd ${DOCINSTALLDIR} && \
+	set ${SYMLINKS}; \
+	while test $$# -ge 2; do \
+		l=$$1; \
+		shift; \
+		t=$$1; \
+		shift; \
+		${ECHO_CMD} $$t -\> $$l; \
+		${LN} -fs $$l $$t; \
+	done )
+.endif
+
 # Set up install dependencies so they happen in the correct order.
 install: afterinstall
-afterinstall: realinstall2
+afterinstall: _installlinks
+_installlinks: realinstall2
 realinstall: beforeinstall
 realinstall2: realinstall
 .endif