diff --git a/scripts/nightly/README b/scripts/nightly/README index 059d46a..f28bf7b 100644 --- a/scripts/nightly/README +++ b/scripts/nightly/README @@ -1,10 +1,11 @@ lcdproc-finish-nightly.sh sits on the sourceforge server located at lcdproc.sf.net -The two other scripts (generate-nightlies.sh and make-nightly.sh) sit on a +The other scripts (generate-nightlies.sh, make-nightly.sh & make-docs.sh) sit on a local server and are run every night. -generate-nightlies.sh calls make-nightly.sh for each cvs branch. +generate-nightlies.sh calls make-nightly.sh for each CVS branch, +and make-docs for each CVS branch for each documentation (user guide, admin guide). -At the time of writing the nightly are generated on a PC running Debian Linux +At the time of writing the nightly tar balls are generated on a PC running Debian Linux maintained by Guillaume Filion diff --git a/scripts/nightly/generate-nightlies.sh b/scripts/nightly/generate-nightlies.sh index 2b57bbe..875296c 100755 --- a/scripts/nightly/generate-nightlies.sh +++ b/scripts/nightly/generate-nightlies.sh @@ -1,7 +1,10 @@ #!/bin/sh -NIGHTLYDIR=/home/gfk/lcdproc/nightly -MAKENIGHTLY=${NIGHTLYDIR}/make-nightly.sh -MAKEDOCS=${NIGHTLYDIR}/make-docs.sh + +LCDPROC_DIR=${LCDPROC_DIR:-$HOME/lcdproc} +NIGHTLY_DIR=${NIGHTLY_DIR:-$LCDPROC_DIR/nightly} + +MAKENIGHTLY=${NIGHTLY_DIR}/make-nightly.sh +MAKEDOCS=${NIGHTLY_DIR}/make-docs.sh ##### for branch in current stable-0-5-x; do @@ -13,3 +16,5 @@ for branch in current stable-0-5-x; do ${MAKEDOCS} $branch $doc done done + +# EOF diff --git a/scripts/nightly/make-docs.sh b/scripts/nightly/make-docs.sh index a2241c7..9855daa 100755 --- a/scripts/nightly/make-docs.sh +++ b/scripts/nightly/make-docs.sh @@ -1,22 +1,24 @@ #!/bin/sh -DIR=/home/gfk/lcdproc/nightly +SF_ACCOUNT=${SF_ACCOUNT:-$USER} +LCDPROC_DIR=${LCDPROC_DIR:-$HOME/lcdproc} +NIGHTLY_DIR=${NIGHTLY_DIR:-$LCDPROC_DIR/nightly} -# stable-0-5-x or current -BRANCH=$1 +# stable-0-5-x or current (default) +BRANCH=${1:-current} -# dev or user -DOCS=$2 +# dev or user (default) +DOCS=${2:-user} XMLTO=/usr/bin/xmlto -SSH=/usr/bin/ssh RSYNC=/usr/bin/rsync -############################# -cd ${DIR} -DOCSPATH=${DIR}/${BRANCH}/docs/lcdproc-${DOCS} +DOCSPATH=${NIGHTLY_DIR}/${BRANCH}/docs/lcdproc-${DOCS} DOCSFILE=${DOCSPATH}/lcdproc-${DOCS}.docbook +############################# +test -d ${NIGHTLY_DIR} && cd ${NIGHTLY_DIR} + # Generate HTML ${XMLTO} xhtml-nochunks ${DOCSFILE} >/dev/null 2>&1 mv lcdproc-${DOCS}.html ${BRANCH}-${DOCS}.html @@ -29,11 +31,9 @@ mv lcdproc-${DOCS}.html ${BRANCH}-${DOCS}.html ${XMLTO} txt ${DOCSFILE} >/dev/null 2>&1 mv lcdproc-${DOCS}.txt ${BRANCH}-${DOCS}.txt -# Upload the thing -#${SCP} -r -qB \ +# Upload to sf.net ${RSYNC} -qr \ -${BRANCH}-${DOCS}.html ${BRANCH}-${DOCS}.txt \ -gfk,lcdproc@web.sourceforge.net:htdocs/docs/ + ${BRANCH}-${DOCS}.html ${BRANCH}-${DOCS}.txt \ + ${SF_ACCOUNT},lcdproc@web.sourceforge.net:htdocs/docs/ -# Finish the process on the server -#${SSH} -q -l gfk shell.sourceforge.net "sh lcdproc-compress-html-docs.sh ${BRANCH}-${DOCS}-html" +# EOF diff --git a/scripts/nightly/make-nightly.sh b/scripts/nightly/make-nightly.sh index ddcb832..8707ebf 100755 --- a/scripts/nightly/make-nightly.sh +++ b/scripts/nightly/make-nightly.sh @@ -1,97 +1,122 @@ -#!/bin/sh -NIGHTLYDIR=/home/gfk/lcdproc/nightly +#!/bin/bash +#set -x + +SF_ACCOUNT=${SF_ACCOUNT:-$USER} +LCDPROC_DIR=${LCDPROC_DIR:-$HOME/lcdproc} +NIGHTLY_DIR=${NIGHTLY_DIR:-$LCDPROC_DIR/nightly} + CVS=/usr/bin/cvs MAKE=/usr/bin/make -DATE=`/bin/date` PERL=/usr/bin/perl GUNZIP=/bin/gunzip BZIP2=/usr/bin/bzip2 -CVS2CL=/home/gfk/lcdproc/cvs2cl.pl -SSH=/usr/bin/ssh +CVS2CL=/usr/bin/cvs2cl RSYNC=/usr/bin/rsync + +TODAY=`/bin/date` ##### -# Branch, can be stable-0-4-x, stable-0-5-x or current -BRANCH=$1 +# Branch, can be stable-0-4-x, stable-0-5-x or current (default) +BRANCH=${1:-current} -cd ${NIGHTLYDIR}/${BRANCH}/ +test -d ${NIGHTLY_DIR}/${BRANCH}/ && cd ${NIGHTLY_DIR}/${BRANCH}/ -# Clean up (just in case) -rm -f lcdproc-*.tar.gz +# make sure, we're in an LCDproc source directory +if [ -e README ] && [ -e ChangeLog ] && [ -e LCDd.conf ]; then -# Fetch of the changes -${CVS} update -d &> nightly-cvsChanges.txt + # Clean up (just in case) + rm -f lcdproc-*.tar.gz lcdproc-*.tar.bz2 -# Add of the warning and changes to the README file -mv README README.temp -echo "################################################" > README -echo "# WARNING! WARNING! WARNING! WARNING! WARNING! #" >> README -echo "# #" >> README -echo "# This is an automated nightly distribution #" >> README -echo "# made with the ${BRANCH} CVS branch." >> README -echo "# Date: ${DATE} #" >> README -echo "# NO WARANTIES AT ALL. Expect this to crash. #" >> README -echo "# Please report problems to the mailing list. #" >> README -echo "# #" >> README -echo "# http://lcdproc.omnipotent.net/ #" >> README -echo "################################################" >> README -echo >> README -cat README.temp >> README -echo "Here's what CVS update said (Check ChangeLog for more infos):" >> README -cat nightly-cvsChanges.txt >> README + # Fetch the changes (ignore the file we store the changes in) + ${CVS} update -d 2>&1 | grep -v '^? nightly-cvsChanges.txt' > nightly-cvsChanges.txt -# Produce a ChangeLog for yesterday -mv ChangeLog ChangeLog.temp -${CVS2CL} "-d'1 day ago<1 second ago'" --file nightly-ChangeLog &>/dev/null -echo "Changes since yesterday:" > ChangeLog -touch nightly-ChangeLog -cat nightly-ChangeLog >> ChangeLog + # Add warning and changes to the README file + mv README README.nightly-temp + echo "################################################" > README + echo "# WARNING! WARNING! WARNING! WARNING! WARNING! #" >> README + echo "# #" >> README + echo "# This is an automated nightly distribution #" >> README + printf '# %-44s #\n' "made with the ${BRANCH} CVS branch." >> README + printf '# %-44s #\n' "Date: ${TODAY}" >> README + echo "# NO WARANTIES AT ALL. Expect this to crash. #" >> README + echo "# Please report problems to the mailing list. #" >> README + echo "# #" >> README + echo "# http://lcdproc.omnipotent.net/ #" >> README + echo "################################################" >> README + echo >> README + cat README.nightly-temp >> README + echo >> README + echo "Here's what CVS update said (Check ChangeLog for more infos):" >> README + echo >> README + cat nightly-cvsChanges.txt >> README -# Change the version number to CVS-${BRANCH}-${DATE} -cp configure.in configure.in.temp -BRANCH=${BRANCH} \ -${PERL} -MPOSIX -i -p -e '$version = "CVS-".$ENV{BRANCH}."-".strftime("%Y%m%d", localtime); - s/(AM_INIT_AUTOMAKE\s*)\(\s*(\[?lcdproc\]?)\s*,\s*[\w\d.-]+\s*\)/$1($2, $version)/; - s/(AC_INIT\s*)\(\s*(\[?lcdproc\]?)\s*,\s*[\w\d.-]+\s*\)/$1($2, $version)/; - s/(AC_INIT\s*)\(\s*(\[?lcdproc\]?)\s*,\s*[\w\d.-]+(\s*[^)]+)\s*\)/$1($2, $version$3)/;' \ - configure.in + # Produce a ChangeLog for yesterday + mv ChangeLog ChangeLog.nightly-temp + echo "Changes since yesterday:" > ChangeLog + echo >> ChangeLog + ${CVS2CL} -l '-d yesterday<=' --stdout 2>/dev/null >> ChangeLog -# Debian-specific stuff -for dir in debian scripts/debian ; do - # Increase version number in debian/changelog accordingly - if [ -d "$dir" ] && [ -e "$dir/changelog" ]; then - ${PERL} -MPOSIX -i -p -e '$date = strftime("%Y%m%d", localtime); - s/\((\d\.\d\.\d{1,2})([+~])cvs\d{8}(.*?)\)/(${1}${2}cvs${date}${3})/i if ($. == 1);' \ - $dir/changelog - fi + # Change the version number to CVS-${BRANCH}-${DATE} + cp -a configure.in configure.in.nightly-temp + BRANCH=${BRANCH} \ + ${PERL} -MPOSIX -i -p \ + -e '$version = "CVS-".$ENV{BRANCH}."-".strftime("%Y%m%d", localtime); + s/(AM_INIT_AUTOMAKE\s*)\(\s*(\[?lcdproc\]?)\s*,\s*[\w\d.-]+\s*\)/$1($2, $version)/; + s/(AC_INIT\s*)\(\s*(\[?lcdproc\]?)\s*,\s*[\w\d.-]+\s*\)/$1($2, $version)/; + s/(AC_INIT\s*)\(\s*(\[?lcdproc\]?)\s*,\s*[\w\d.-]+(\s*[^)]+)\s*\)/$1($2, $version$3)/;' \ + configure.in - # Make debian/rules executable - test -e $dir/rules && chmod +x $dir/rules -done + # Debian-specific stuff + for dir in debian scripts/debian ; do + # Increase version number in debian/changelog accordingly + if [ -d "$dir" ] && [ -e "$dir/changelog" ]; then + cp -a $dir/changelog debian_changelog.nightly-temp + ${PERL} -MPOSIX -i -p \ + -e '$date = strftime("%Y%m%d", localtime); + s/\((\d\.\d\.\d{1,2})([+~])cvs\d{8}(.*?)\)/(${1}${2}cvs${date}${3})/i if ($. == 1);' \ + $dir/changelog + fi -# Re-generate the autotools files -sh autogen.sh >/dev/null -./configure --silent >/dev/null + # Make debian/rules executable + test -e $dir/rules && chmod +x $dir/rules + done -# Creation of the distribution -${MAKE} dist >/dev/null &>/dev/null -mv lcdproc-*.tar.gz lcdproc-CVS-${BRANCH}.tar.gz + # Re-generate the autotools files + sh autogen.sh >/dev/null + ./configure --silent >/dev/null -# Make bzip2 archive -# ${GUNZIP} --stdout lcdproc-CVS-${BRANCH}.tar.gz > lcdproc-CVS-${BRANCH}.tar -# ${BZIP2} lcdproc-CVS-${BRANCH}.tar + # Creation of the distribution + ${MAKE} dist dist-bzip2 >/dev/null &>/dev/null + mv lcdproc-*.tar.gz lcdproc-CVS-${BRANCH}.tar.gz + mv lcdproc-*.tar.bz2 lcdproc-CVS-${BRANCH}.tar.bz2 -# Date of the last nightly -date > last-nightly.txt + # Date of the last nightly + echo "${TODAY}" > last-nightly.txt -# Upload -${RSYNC} -q lcdproc-CVS-${BRANCH}.tar.gz last-nightly.txt \ -gfk,lcdproc@web.sourceforge.net:htdocs/nightly/ + # Upload to sf.net + ${RSYNC} -q lcdproc-CVS-${BRANCH}.tar.gz lcdproc-CVS-${BRANCH}.tar.bz2 \ + last-nightly.txt \ + ${SF_ACCOUNT},lcdproc@web.sourceforge.net:htdocs/nightly/ -# Cleanup -mv configure.in.temp configure.in -mv README.temp README -mv ChangeLog.temp ChangeLog -rm -f nightly-ChangeLog -rm -f nightly-cvsChanges.txt -mv lcdproc-CVS-${BRANCH}.tar.gz ../ -sh autogen.sh >/dev/null + mv lcdproc-CVS-${BRANCH}.tar.gz ${LCDPROC_DIR}/ + + # Cleanup + mv configure.in.nightly-temp configure.in + mv README.nightly-temp README + mv ChangeLog.nightly-temp ChangeLog + rm -f nightly-cvsChanges.txt last-nightly.txt + for dir in debian scripts/debian ; do + test -d $dir && mv debian_changelog.nightly-temp $dir/changelog + done + + # remove files generated by ./configure --silent + ${MAKE} distclean + + # re-create files accidentially deleted + ${CVS} update -d &> /dev/null + + # build configure (& Makefile.in's ?) based on original configure.in from CVS + sh autogen.sh >/dev/null + +fi + +# EOF