svn commit: r51064 - head/share/tools
Wolfram Schneider
wosch at FreeBSD.org
Fri Oct 6 09:36:07 UTC 2017
Author: wosch
Date: Fri Oct 6 09:36:06 2017
New Revision: 51064
URL: https://svnweb.freebsd.org/changeset/doc/51064
Log:
Import a regression test script for the build of www.freebsd.org
The main purpose of the script is to validate the output after
a refactoring of the Makefile tool chain, and to improve the build speed.
Added:
head/share/tools/webupdate-regression (contents, props changed)
Added: head/share/tools/webupdate-regression
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/tools/webupdate-regression Fri Oct 6 09:36:06 2017 (r51064)
@@ -0,0 +1,246 @@
+#!/bin/sh
+# Copyright (c) 2017 Wolfram Schneider <wosch at FreeBSD.org>
+#
+# regression test of the build of www.freebsd.org
+# Based on git
+#
+# examples:
+#
+# run on 2 CPUs
+# make_opt=-j2 /path/to/webupdate-regression
+#
+# run from a local GIT repo in $HOME/freebsd-doc
+# GIT_REPO_FREEBSD_DOC="$HOME/freebsd-doc" /path/to/webupdate-regression
+#
+# build html-split format only, on 8 CPUs
+# WEBUPDATE_FORMATS="html-split" make_opt=-j8 /path/to/webupdate-regression
+#
+# build html and html-split format, on 16 CPUs max.
+# WEBUPDATE_FORMATS="html html-split" make_opt=-j16 /path/to/webupdate-regression
+#
+# do not run the `make clean`' test after successfully build
+# WEBUPDATE_RUN_CLEAN=NO /path/to/webupdate-regression
+#
+# test only english pages
+# ENGLISH_ONLY=YES /path/to/webupdate-regression
+#
+# clean git checkout after success
+# WEBUPDATE_SANDBOX_CLEANUP=YES /path/to/webupdate-regression
+#
+#
+# $FreeBSD$
+
+set -e
+
+: ${NO_OBJ=YES}
+: ${make_opt=-j8}
+: ${GIT_REPO_FREEBSD_DOC="$HOME/freebsd-doc"}
+: ${WEBUPDATE_FORMATS="html-split html"}
+: ${WEBUPDATE_RUN_CLEAN=YES}
+: ${WEBUPDATE_LEVEL="3"}
+: ${WEBUPDATE_SANDBOX_CLEANUP="NO"}
+
+FORMATS=$WEBUPDATE_FORMATS
+export NO_OBJ
+export FORMATS
+
+
+log () {
+ file=$1
+ echo " ...done"
+}
+
+checkout ()
+{
+ dir=$(mktemp -d /tmp/doc-build.XXXXXXX)
+
+ cd $dir
+ echo "Run from $dir"
+ echo "date: $(date)"
+ echo "ENGLISH_ONLY=$ENGLISH_ONLY"
+ echo "WEB_ONLY=$WEB_ONLY"
+ echo "FORMATS=\"$FORMATS\""
+ echo "WEBUPDATE_RUN_CLEAN=$WEBUPDATE_RUN_CLEAN"
+ echo "WEBUPDATE_SANDBOX_CLEANUP=$WEBUPDATE_SANDBOX_CLEANUP"
+ echo "WEBUPDATE_LEVEL=$WEBUPDATE_LEVEL"
+ echo "NO_OBJ=$NO_OBJ"
+ echo "make_opt=$make_opt"
+
+ echo "git clone from $GIT_REPO_FREEBSD_DOC -> doc"
+ git clone -q $GIT_REPO_FREEBSD_DOC doc
+ cd doc
+ echo "branch: $(git branch)"
+ echo "cwd: $(pwd)"
+
+ echo ""
+}
+
+# build doc only, from ./doc
+# parallel build, 4-40 minutes
+build_doc ()
+{
+ logfile=$1
+ echo -n "build doc (4-40min) $(pwd)/$logfile"
+ time make $make_opt p-all >> $logfile 2>&1; log $logfile
+}
+
+# build web only, from english web pages
+build_htdocs_web ()
+{
+ logfile=$1
+ (
+ cd en_US.ISO8859-1/htdocs
+ echo -n "build htdocs web (1min) $(pwd)/$logfile"
+ WEB_ONLY=YES time make $make_opt >> $logfile 2>&1; log $logfile
+ echo -n "build htdocs web/ports (1min)"
+ WEB_ONLY=YES time make -C./ports $make_opt >> $logfile 2>&1; log $logfile
+ )
+}
+
+# build web + doc, from english web pages
+# after build_htdocs_web: 1-3 minutes (?)
+build_htdocs ()
+{
+ logfile=$1
+ (
+ cd en_US.ISO8859-1/htdocs
+ echo -n "build htdocs (1-3min) $(pwd)/$logfile"
+ time make $make_opt all >> $logfile 2>&1; log $logfile
+ )
+}
+
+# install web only, from english web pages
+install_htdocs ()
+{
+ logfile=$1
+ (
+ cd en_US.ISO8859-1/htdocs
+ echo -n "install htdocs web (<10 sec) $(pwd)/$logfile"
+ DESTDIR=$dir/www WEB_ONLY=YES time make $make_opt install >> $logfile 2>&1; log $logfile
+ #egrep -rl wosch $dir/www >/dev/null
+ )
+}
+
+# install web + doc, from english web pages
+install_doc ()
+{
+ logfile=$1
+ (
+ echo "no parallel install"
+ make_opt=
+
+ cd en_US.ISO8859-1/htdocs
+ echo -n "install htdocs (<30 sec) $(pwd)/$logfile"
+ DESTDIR=$dir/www time make $make_opt install >> $logfile 2>&1; log $logfile
+ )
+}
+
+# clean doc from ./doc
+# parallel clean
+clean_doc ()
+{
+ logfile=$1
+ echo -n "clean doc (<5 sec) $(pwd)/$logfile"
+ time make $make_opt p-clean >> $logfile 2>&1; log $logfile
+}
+
+# clean doc from english web pages
+# is required for docs which don't have a web pages (./htdocs)
+clean_htdocs ()
+{
+ logfile=$1
+ (
+ cd en_US.ISO8859-1/htdocs
+ echo -n "clean htdocs web + doc (<20 sec) $(pwd)/$logfile"
+ time make $make_opt clean >> $logfile 2>&1; log $logfile
+ )
+}
+
+########################################################################################
+#
+
+checkout
+
+# ./doc
+if [ "$WEB_ONLY" != "YES" ]; then
+ build_doc log.build_doc
+ if [ $WEBUPDATE_LEVEL -ge 2 ]; then
+ build_doc log.build_doc2
+ fi
+ if [ $WEBUPDATE_LEVEL -ge 3 ]; then
+ build_doc log.build_doc3
+ fi
+fi
+
+# doc/en_US.ISO8859-1/htdocs
+build_htdocs_web log.build_htdocs_web
+if [ $WEBUPDATE_LEVEL -ge 2 ]; then
+ build_htdocs_web log.build_htdocs_web2
+fi
+if [ $WEBUPDATE_LEVEL -ge 3 ]; then
+ build_htdocs_web log.build_htdocs_web3
+fi
+
+# doc/en_US.ISO8859-1/htdocs/doc
+build_htdocs log.build_htdocs
+if [ $WEBUPDATE_LEVEL -ge 2 ]; then
+ build_htdocs log.build_htdocs2
+fi
+if [ $WEBUPDATE_LEVEL -ge 3 ]; then
+ build_htdocs log.build_htdocs3
+fi
+
+# install doc/en_US.ISO8859-1/htdocs
+install_htdocs log.install_htdocs
+if [ $WEBUPDATE_LEVEL -ge 2 ]; then
+ install_htdocs log.install_htdocs2
+fi
+ if [ $WEBUPDATE_LEVEL -ge 3 ]; then
+install_htdocs log.install_htdocs3
+fi
+
+# install doc/en_US.ISO8859-1/htdocs/doc
+install_doc log.install_doc
+if [ $WEBUPDATE_LEVEL -ge 2 ]; then
+ install_doc log.install_doc2
+fi
+if [ $WEBUPDATE_LEVEL -ge 3 ]; then
+ install_doc log.install_doc3
+fi
+
+# make clean
+if [ "$WEBUPDATE_RUN_CLEAN" = "YES" ]; then
+ clean_htdocs log.clean_htdocs
+ if [ $WEBUPDATE_LEVEL -ge 2 ]; then
+ clean_htdocs log.clean_htdocs2
+ fi
+
+ clean_doc log.clean_doc
+ if [ $WEBUPDATE_LEVEL -ge 2 ]; then
+ clean_doc log.clean_doc2
+ fi
+fi
+
+echo ""
+echo "successfully done"
+echo ""
+
+# display user time for each task
+tail -n 1 $(ls -tr $(find . -name 'log.*' -type f))
+
+echo ""
+echo "installed data disk usage: $(du -hs $dir/www)"
+echo "installed file number: $(find $dir/www | wc -l)"
+( cd $dir/www && find -s . > ../find.www )
+
+if [ "$WEBUPDATE_SANDBOX_CLEANUP" = "YES" ]; then
+ echo "cleanup sandbox $dir"
+ rm -rf $dir
+else
+ echo ""
+ echo "Please cleanup: rm -rf $dir"
+fi
+
+exit 0
+
+#EOF
More information about the svn-doc-head
mailing list