From e9feeaf0ac874c65dbc66f38bcaf250f9f1e328b Mon Sep 17 00:00:00 2001 From: Thanassis Tsiodras Date: Thu, 10 Nov 2016 09:37:08 +0100 Subject: [PATCH] Added script for 4.11 (RC rightnow) --- OAR/contrib/build.rtems.4.11.smp.sh | 122 ++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100755 OAR/contrib/build.rtems.4.11.smp.sh diff --git a/OAR/contrib/build.rtems.4.11.smp.sh b/OAR/contrib/build.rtems.4.11.smp.sh new file mode 100755 index 0000000..f58bab5 --- /dev/null +++ b/OAR/contrib/build.rtems.4.11.smp.sh @@ -0,0 +1,122 @@ +#!/bin/bash +# +# This script builds the RTEMS/SPARC cross-compiler and the +# Leon2/Leon3/NGMP BSPs. +# +# To have a reproducible setup, it would be prudent if you +# executed this script under a Debian jessie chroot, +# bootstrapped via the following: +# +# mkdir /opt/jessie-chroot +# debootstrap jessie /opt/jessie-chroot +# mount -t proc none /opt/jessie-chroot/proc/ +# mount -t sysfs none /opt/jessie-chroot/sys/ +# mount -o bind /dev /opt/jessie-chroot/dev/ +# mount -o bind /dev/pts /opt/jessie-chroot/dev/pts/ +# chroot /opt/jessie-chroot +# apt-get update +# apt-get build-dep binutils gcc g++ gdb unzip git python2.7-dev pax +# +# Then chroot inside it and run this script: +# +# chroot /opt/jessie-chroot +# /path/to/build.rtems.4.12.sh + + +# Stop on any error +set -e + +DATE=$(date +"%Y.%m.%d") +mkdir -p ~/rtems.build.logs +BUILD_LOG=~/rtems.build.logs/${DATE}.log +[ -f ${BUILD_LOG} ] && { + echo "There's already a build log:" + echo " " ${BUILD_LOG} + echo Remove it to continue. + exit 1 +} + +# Record the output in $BUILD_LOG (see matching brace) +{ + # Begin by checking out the RTEMS Source Builder + + mkdir -p ~/development/rtems/src + RSB=~/development/rtems/src/rtems-source-builder-${DATE} + RTPREFIX=/opt/rtems-4.11-${DATE} + rm -rf ${RTPREFIX} + [ ! -d $RSB ] && { + cd ~/development/rtems/src/ + git clone git://git.rtems.org/rtems-source-builder.git rtems-source-builder-${DATE} + } + cd $RSB + + # Get the 4.11 branch + git checkout -f 4.11 + + # Verify that we have all we need to build + source-builder/sb-check + + # ESA's network is a pain ; PASV FTP is not allowed, so we basically fetched all the + # tarballs and hardlink to them each time (so no FTP action is triggered) + cd rtems + [ ! -d sources ] && { + mkdir -p sources + cd sources + cp -al /root/development/rtems/src/rtems-source-builder.working/rtems/sources/* . + cd .. + for i in config/tools/*cfg ; do + cat "$i" | sed 's,ftp://ftp.gnu.org,http://ftp.gnu.org,;s,ftp://gcc.gnu.org,http://gcc.gnu.org,;' > "$i".new && mv "$i".new "$i" + done + } + + # Your network firewall may or may not be an issue at this point: + # Many of the source tarballs needed by the RSB are fetched over + # PASV-enabled FTP servers. + # + # If your network is like the one in ESA/ESTEC and this is forbidden, + # you'll have to fetch these tarballs and hardlink to them each time + # (so no FTP action is triggered by the RTEMS RSB builder). + # The sed invocation below also replaces ftp: with http: + # (since this needs no PASV port meddling - which some firewalls object to) + # + # This is the way I do it - adapt it according to your needs: + # + # [ ! -d sources ] && { + # mkdir -p sources + # cd sources + # cp -al ~/development/rtems/pkg_sources_cache/* . + # cd .. + # for i in config/tools/*cfg ; do + # cat "$i" | sed 's,ftp://ftp.gnu.org,http://ftp.gnu.org,;s,ftp://gcc.gnu.org,http://gcc.gnu.org,;' > "$i".new && mv "$i".new "$i" + # done + # } + + # Build the cross compiling toolchain + ../source-builder/sb-set-builder --log=stage1.log --prefix=${RTPREFIX} 4.11/rtems-sparc + + # Add the cross compiler to the PATH + export PATH=${RTPREFIX}/bin:$PATH + cd .. + + # checkout RTEMS4.11 - avoid doing it twice :-) + [ ! -d rtems-git ] && { + git clone https://github.com/RTEMS/rtems.git rtems-git + cd rtems-git + git checkout -f 4.11 + cd .. + } + + # Build RTEMS + cd rtems-git + ./bootstrap + cd .. + rm -rf build.${DATE} + mkdir build.${DATE} + cd build.${DATE} + ../rtems-git/configure \ + --target=sparc-rtems4.11 --prefix=${RTPREFIX} \ + --enable-rtemsbsp="leon2 leon3 ngmp" --enable-posix \ + --enable-smp --enable-cxx --enable-networking --enable-experimental-smp + make all + make install +} |& tee ${BUILD_LOG} -- GitLab