#! /bin/sh # # RTEMS Tools Project (http://www.rtems.org/) # Copyright 2015,2016,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 # # This worker script bootstraps the RTEMS kernel. # # # Defaults. # . ${release_top}/rtems-release-defaults # # The package, version, revision and release URL. # if [ $# -ne 5 ]; then echo "error: must be arguments, the package, version," \ "release, release URL and the top directory." exit 1 fi package=$1 version=$2 revision=$3 release_url=$4 toptop=$5 . ${release_top}/rtems-release-version prefix=${package}-${release} echo "] RTEMS Release RTEMS Kernel, v${release}" echo "] Package: ${package}" echo "] Release: ${release}" if [ ${rtems_waf} = no ]; then # # Unpack the released RSB. # rsb=rtems-source-builder-${release} echo "tar ${comp_tar}xf ../${rsb}.tar.${comp_ext}" tar ${comp_tar}xf ../${rsb}.tar.${comp_ext} # # Build autoconf and automake. # cd ${rsb}/rtems ../source-builder/sb-set-builder --without-release-url \ --prefix=${top}/at ${version}/rtems-autotools cd ../.. # # Set the path to the autotools. # export XPATH=$PATH export PATH=${top}/at/bin:$PATH fi # # Massage the version.revision string into major.minor.revision # release_ver_rel=$(echo ${release} | sed 's/-.*//g') dots_plus_one=$(echo ${release_ver_rel} | tr . \\n | wc -l) if [ $dots_plus_one -ne 2 ]; then echo "error: invalid release string, only one dot allowed" exit 1 fi release_ver_rel_minor="${release_ver_rel}.0" # # Handle the different build system # cd ${prefix} if [ ${rtems_waf} = yes ]; then # # Waf build system. Update RTEMS version and collect the BSPs # echo "] RTEMS Build System: waf" f="spec/build/cpukit/optvermaj.yml" echo "] Update ${f}" sed -i "s/- get-string-command-line:.*/- get-string-command-line: '${version}'/" ${f} f="spec/build/cpukit/optvermin.yml" echo "] Update ${f}" minor=$(echo ${revision} | sed 's/-.*//') sed -i "s/- set-value:.*/- set-value: '${minor}'/" ${f} f="spec/build/cpukit/optverrev.yml" echo "] Update ${f}" sed -i "s/- set-value:.*/- set-value: '0'/" ${f} else # # Autoconf build system. Bootstrap RTEMS # echo "] RTEMS Build System: autoconf" echo "] Set the version in the build system.." for f in $(find . -name version.m4) do echo "] Generating ${f}" cat < ${f} dnl Autogenerated for RTEMS release: ${release} (${release_ver_rel_minor}) AC_DEFUN([RTEMS_VERSIONING], m4_define([_RTEMS_VERSION],[${release_ver_rel_minor}])) dnl RTEMS API Version m4_define([_RTEMS_API],[${version}]) EOF done echo "] Bootstrapping RTEMS" ./bootstrap -c if [ ${version} -lt 5 ]; then ./bootstrap -p ${top}/${rsb}/source-builder/sb-bootstrap else ./rtems-bootstrap fi echo "] Cleaning autom4te.cache" rm -rf $(find . -name autom4te.cache) fi # # Collect the BSPs, update the README. # echo "] Generate ARCH-BSP.txt" ./rtems-bsps -m > ${toptop}/ARCH-BSP.md echo "] Generate README" cp README README.tmp cat README.tmp | \ sed -e "s|docs\.rtems\.org\/branches\/master\/|docs\.rtems\.org\/releases\/rtems-docs-${release}\/|g" | \ sed -e "s|docs\.rtems\.org\/doxygen\/branches\/master\/|docs\.rtems\.org\/doxygen\/releases\/rtems-doxygen-${release}\/|g" | \ awk "/https:\/\/git\.rtems\.org\/rtems/{\$0=\$0\"?h=${version}\"}{print}" > README rm -r README.tmp cd .. if [ ${rtems_autoconf} = yes ]; then # # Clean up. # rm -rf ${rsb} ${at} echo "] Bootstrap complete." fi # # Only build doxygen output if present on the system. # if [ "`command -v doxygen`"no = no ]; then echo "warning: doxygen not built: doxygen not found" exit 0 fi # # Doxygen # echo "] Creating: Doxyfile" top_srcdir=$(echo ${prefix}/cpukit | sed -e 's/\//\\\//g') perl=$(which perl | sed -e 's/\//\\\//g') if [ -f ${prefix}/cpukit/Doxyfile.in ]; then cat ${prefix}/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/^HAVE_DOT[[:blank:]]/DOT_NUM_THREADS = 1\\ HAVE_DOT /g"> Doxyfile doxygen -q Doxyfile elif [ ${prefix}/Doxygen ]; then cat ${prefix}/Doxyfile | \ sed -e "s/^PROJECT_NUMBER[[:space:]].*=.*$/PROJECT_NUMBER = ${release}/g" \ > Doxyfile cd ${prefix} doxygen -q ../Doxyfile cd .. else echo "error: no doxygen configuration file found" exit 1 fi echo "] Creating: rtems-doxygen-${release}.tar.${comp_ext}" if [ ${version} -lt 5 ]; then mv cpukit_doxy/html rtems-doxygen-${release} else cp -r ${prefix}/doc/html rtems-doxygen-${release} fi tar cf - rtems-doxygen-${release} | \ ${comp} > ../rtems-${release}-doxygen-html.tar.${comp_ext} exit 0