From 828bb2042915d50e48bc0cd724fc701df742c1c5 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Fri, 15 Sep 2017 00:58:04 +0000 Subject: Add doxygen support. --- doxygen/builder/.gitignore | 1 + doxygen/builder/rtems-doxygen-build-branches | 183 +++++++++++++++++++++++++++ doxygen/builder/rtems-doxygen-build-cron | 23 ++++ doxygen/builder/rtems-doxygen-upload | 61 +++++++++ 4 files changed, 268 insertions(+) create mode 100644 doxygen/builder/.gitignore create mode 100755 doxygen/builder/rtems-doxygen-build-branches create mode 100755 doxygen/builder/rtems-doxygen-build-cron create mode 100755 doxygen/builder/rtems-doxygen-upload diff --git a/doxygen/builder/.gitignore b/doxygen/builder/.gitignore new file mode 100644 index 0000000..a0f9a4b --- /dev/null +++ b/doxygen/builder/.gitignore @@ -0,0 +1 @@ +latest diff --git a/doxygen/builder/rtems-doxygen-build-branches b/doxygen/builder/rtems-doxygen-build-branches new file mode 100755 index 0000000..249582d --- /dev/null +++ b/doxygen/builder/rtems-doxygen-build-branches @@ -0,0 +1,183 @@ +#! /bin/sh +# +# RTEMS Kernel Project +# +# Copyright 2017 Chris Johns +# All rights reserved +# +# Public domain +# + +# +# Exit on error. +# +set -e + +# +# Executables +# +git=/usr/local/bin/git +doxygen=/usr/local/bin/doxygen + +# +# Top directory +# +top=$PWD + +# +# Directory of builds. +# +output=${top}/output + +# +# The build tags files. +# +tags=${output}/.tags + +# +# Branches to build and install as current +# +branches="master 4.11" + +# +# Branch hash cache +# +hash_cache=${top}/git-hash-cache + +# +# Lastest builds +# +latest=${top}/latest + +# +# Git repository. +# +repo=rtems.git + +# +# Logging. +# +log() { + echo $* >> ${log_file} +} +log_file=${top}/build.log +for f in 9 8 7 6 5 4 3 2 1 +do + t=`expr $f + 1` + rm -f ${top}/build-${t}.log + if [ -f ${top}/build-${f}.log ]; then + mv ${top}/build-${f}.log ${top}/build-${t}.log + fi +done +if [ -f ${top}/build.log ]; then + mv ${top}/build.log ${top}/build-1.log +fi +rm -rf ${log_file} + +# Create or clone the repository and then check if a commit has been added on +# each branch we are interesed in and if there is a commit build the doco and +# install. + +log "RTEMS Kernel Doxygen Build: " `date` + +log rm -f rtems-doxygen-latest.tar.xz rtems-doxygen-latest-tags +rm -f rtems-doxygen-latest.tar.xz rtems-doxygen-latest-tags + +if [ ! -d ${hash_cache} ]; then + mkdir ${hash_cache} +fi + +# +# If there is no repo create it. +# +if [ ! -d ${repo} ]; then + log git clone git://git.rtems.org/${repo} ${repo} + ${git} clone git://git.rtems.org/${repo} ${repo} >> ${log_file} 2>&1 +fi + +# +# If output exists we have an existing build so clean it first. +# +builds=0 +log rm -rf ${output} ${latest} +rm -rf ${output} ${latest} +log mkdir ${latest} +mkdir ${latest} + +log cd ${repo} +cd ${repo} + # + # Fetch any updates and reset the repo to be safe. + # + log git fetch + ${git} fetch >> ${log_file} 2>&1 + log git reset --hard + ${git} reset --hard >> ${log_file} 2>&1 + for b in ${branches} + do + log git co ${b} + ${git} co ${b} >> ${log_file} 2>&1 + log git pull + ${git} pull >> ${log_file} 2>&1 + hash=`${git} log -n 1 --pretty=format:"%H"` + build=yes + if [ -f ${hash_cache}/${b} ]; then + if [ ${hash} = `cat ${hash_cache}/${b}` ]; then + build=no + fi + fi + log "Building ${b} : ${build}" + if [ ${build} = yes ]; then + cwd=$PWD + prefix=${output}/${b} + log rm -rf ${prefix} + rm -rf ${prefix} + log mkdir -p ${prefix} + mkdir -p ${prefix} + log cd ${prefix} + cd ${prefix} + log "Creating: Doxyfile" + top_srcdir=$(echo ${top}/${repo}/cpukit | sed -e 's/\//\\\//g') + perl=$(which perl | sed -e 's/\//\\\//g') + cat ${top}/${repo}/cpukit/Doxyfile.in | \ + sed -e "s/@PACKAGE_VERSION@/${release}/g" \ + -e "s/@top_srcdir@/${top_srcdir}/g" \ + -e "s/@PERL@/${perl}/g" \ + -e "s/^INPUT[[:space:]].*=.*$/INPUT = ${top_srcdir}/g" \ + -e "s/^FULL_PATH_NAMES[[:space:]].*=.*$/FULL_PATH_NAMES = NO/g" \ + -e "s/^GENERATE_LATEX[[:space:]].*=.*$/GENERATE_LATEX = no/g" \ + -e "s/^HAVE_DOT[[:blank:]]/DOT_NUM_THREADS = 1\\ + HAVE_DOT /g"> Doxyfile + log "Building: Doxyfile in ${prefix}" + ${doxygen} Doxyfile >> ${log_file} 2>&1 + log cd .. + cd .. + log rm -rf tmp + rm -rf tmp + log mv ${b} tmp + mv ${b} tmp + log mv tmp/cpukit_doxy/html ${b} + mv tmp/cpukit_doxy/html ${b} + log rm -rf tmp + rm -rf tmp + log cd ${cwd} + cd ${cwd} + echo ${hash} > ${hash_cache}/${b} + echo "${b} ${hash}" >> ${tags} + builds=$(expr ${builds} + 1) + fi + done + log cd ${top} + cd ${top} + +if [ ${builds} -gt 0 ]; then + cd output + # + # Package the builds. + # + tar zcf ../rtems-doxygen-latest.tar.gz .tags * + cp .tags ../rtems-doxygen-latest-tags + cd . +fi + +exit 0 diff --git a/doxygen/builder/rtems-doxygen-build-cron b/doxygen/builder/rtems-doxygen-build-cron new file mode 100755 index 0000000..f49425a --- /dev/null +++ b/doxygen/builder/rtems-doxygen-build-cron @@ -0,0 +1,23 @@ +#! /bin/sh +# +# RTEMS Documentation Project +# +# Copyright 2017 Chris Johns +# All rights reserved +# +# Public domain +# + +# +# Exit on error. +# +set -e + +# +# We run where the script is located. +# +cd $(dirname $0) + +./rtems-doxygen-upload + +exit 0 diff --git a/doxygen/builder/rtems-doxygen-upload b/doxygen/builder/rtems-doxygen-upload new file mode 100755 index 0000000..f9cb7d8 --- /dev/null +++ b/doxygen/builder/rtems-doxygen-upload @@ -0,0 +1,61 @@ +#! /bin/sh +# +# RTEMS Documentation Project +# +# Copyright 2017 Chris Johns +# All rights reserved +# +# Public domain +# + +# +# Exit on error. +# +set -e + +# +# Executables +# +mkdir=/bin/mkdir + +# +# Handover path. +# +handover=/data/ftp/pub/rtems/people/chrisj/docs.rtems.org/doxygen + +# +# We run where the script is located. +# +cd $(dirname $0) + +# +# If no update directory create it. +# +if [ ! -d latest ]; then + ${mkdir} latest +fi + +cd latest + #../rtems-doxygen-build-branches + if [ -f rtems-doxygen-latest.tar.gz ] && [ -f rtems-doxygen-latest-tags ]; then + if [ ! -d ${handover} ]; then + ${mkdir} -p ${handover} + fi + # + # Empty the directory. + # + rm -rf ${handover}/* + # + # Copy to a holding directory on the destination file system and then move + # the files. The move will be quick while the move to the file system will be + # a slower copy and may result in the otherside looking at a partially copied + # file. + # + ${mkdir} -p ${handover}/hold + mv rtems-doxygen-latest.tar.gz rtems-doxygen-latest-tags ${handover}/hold/ + mv ${handover}/hold/* ${handover}/ + rm -rf ${handover}/hold + fi + cd .. + +exit 0 -- cgit v1.2.3