summaryrefslogblamecommitdiffstats
path: root/rtems-release-cron
blob: 33ba7446c4f6cff788c82c6c96f19de57d19920a (plain) (tree)
1
2

          


































                                                                              


















                                                                                  
        


                                               

 


                       



                                  


                                              



                               











                                       










                                           
                                                         




                              
                                   










                                                         











                                                                        




                                                             
                         

                                                                   
              
                                                                              



                                                            













                                                               
                                                                   



                                          
                                            














                                                        
#! /bin/sh
#
# RTEMS Tools Project (http://www.rtems.org/)
# Copyright 2019 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
#
# 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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.
#

set -e

#
# Cron wrapper for releasing each month.
#

#
# Global release top path.
#
#
# Work in the release sandbox
#
export release_top=$(realpath $(dirname $0))
cd ${release_top}

if [ $# -ne 2 ]; then
 echo "error: 2 arguments must be supplied, version and revision. See -h for help"
 exit 1
fi

version=$1
revision=$2

. ./rtems-release-version

live=yes
if [ "${RTEMS_RELEASE_TESTING}" = "yes" ]; then
 live=no
fi

#
# Email addresses
#
from="chrisj@rtems.org"

#
# If not live use dummy addresses.
#
if [ ${live} = yes ]; then
 build_to="build@rtems.org"
 announce_to="users@rtems.org,devel@rtems.org"
else
 build_to="chrisj@rtems.org"
 announce_to="chrisj@rtems.org"
fi

#
# Supported SMTP hosts.
#
case $(hostname) in
 sync.rtems.org)
  smtphost="--smtp-host=192.168.80.141"
  ;;
 *)
  ;;
esac

#
# Announce template
#
announce="snapshot-announce.txt"

#
# Upload path
#
if [ ${live} = yes ]; then
 upload_path="/data/ftp/pub/rtems/releases"
else
 upload_path="/data/ftp/pub/rtems/people/chrisj/releases"
fi

#
# The version and the revision
#
release=${release}-$(date +"m%y%m")

#
# Activate the virtualenv for building the documentation.
#
. ../release/bin/activate

#
# Clean the work
#
rm -rf ${release}

git_hash=$(git log --pretty=format:'%h' -n 1)

#
# Build log
#
BUILD_LOG=rtems-release-build-log-${rtems_snapshot}.txt

#
# The lock file, used to stop cron running this script on top of itself.
#
LOCK=.cron-lock-rtems-release

#
# Clean up file list.
#
CLEANUP_FILES="${LOCK} ${BUILD_LOG} ${announce} ARCH-BSP.txt"

if [ ! -f ${LOCK} ]; then
 trap "rm -f ${CLEANUP_FILES}" EXIT
 trap "rm -f ${CLEANUP_FILES}; exit 1" INT TERM STOP INFO USR1 USR2
 touch ${LOCK}
 echo "] RTEMS Release Cron builder, v${release} (${git_hash})" > ${BUILD_LOG}
 echo "" >> ${BUILD_LOG}
 set +e
 ./rtems-release ${version} ${snapshot} >> ${BUILD_LOG} 2>&1
 ec=$?
 set -e
 if [ $ec -eq 0 ]; then
  result="PASS"
 else
  result="FAIL"
 fi
 subject="RTEMS Release Snapshot Build: ${release} - ${result}"
 ${release_top}/rtems-mailer --to=${build_to} \
                             --from=${from} \
                             --subject="${subject}" \
                             ${smtphost} \
                             ${BUILD_LOG}
 if [ $ec -eq 0 ]; then
  if [ -d ${upload_path} ]; then
   destdir=${upload_path}/${rtems_major}/${rtems_major}.${revision}
   mkdir -p ${destdir}
   cp -r ${release} ${destdir}/
   cat ${announce}.in | \
       sed -e "s/@VERSION@/${version}/g" \
	   -e "s/@REVISION@/${revision}/g" \
	   -e "s/@SNAPSHOT@/${snapshot}/g" \
	   -e "s/@RTEMS_SNAPSHOT@/${rtems_snapshot}/g" \
	   -e "s/@RELEASE@/${release}/g" > ${announce}
   now=$(date +"%d %b %Y")
   subject="RTEMS Release Snapshot: ${release} (${now})"
   ${release_top}/rtems-mailer --to=${announce_to} \
                               --from=${from} \
                               --subject="${subject}" \
                               ${smtphost} \
                               ${announce}
  fi
 fi
fi

exit 0