Commit 0d0026b4 authored by Maxime Perrotin's avatar Maxime Perrotin

Merge branch 'master' into mscedit2

parents e13c09ec f614cd6f
......@@ -55,3 +55,6 @@
[submodule "mscc"]
path = mscc
url = https://gitrepos.estec.esa.int/ivany4/mscc.git
[submodule "upython-taste"]
path = upython-taste
url = https://gitrepos.estec.esa.int/taste/uPython-mirror.git
#
# Process with:
# docker build -t taste .
#
FROM debian:stretch
RUN apt-get update
RUN apt-get -y install netcat net-tools wget
# There is immense waste of re-downloading the .deb files
# in every attempt to setup the Docker image.
# The following uses a locally-provided proxy
# that will make sure the .deb files are only downloaded once,
# and are re-used in all subsequent attempts to build the image.
RUN route -n | awk '/^0.0.0.0/ {print $2}' > /tmp/host_ip.txt
RUN echo "HEAD /" | nc `cat /tmp/host_ip.txt` 8000 | grep squid-deb-proxy \
&& (echo "Acquire::http::Proxy \"http://$(cat /tmp/host_ip.txt):8000\";" > /etc/apt/apt.conf.d/30proxy) \
&& (echo "Acquire::http::Proxy::ppa.launchpad.net DIRECT;" >> /etc/apt/apt.conf.d/30proxy) \
|| echo "No squid-deb-proxy detected on docker host"
RUN bash -c 'export DEBIAN_FRONTEND=noninteractive ; apt-get -y install git sudo'
RUN bash -c 'cd /root ; git clone https://gitrepos.estec.esa.int/taste/taste-setup.git tool-src'
# The following pieces correspond to the execution of Update-TASTE.sh ;
# but the execution has to be broken down into steps, so that Docker
# can resume the build from whichever step failed in the last attempt.
RUN bash -c 'cd /root/tool-src ; git submodule init ; git submodule update'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/01_sudo.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/03_debian.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/04_pythonlibs.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/05_antlr.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/06_stlink.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/10_dmt.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/15_asn1scc.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/20_msc.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/30_qemu.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/40_ocarina.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/45_pohi.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/50_opengeode.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/53_pymsc.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/54_speedometer.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/55_asn1valueEditor.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/56_msc-editor.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/60_buildsupport.sh'
# Those that need postgres can set it up themselves (avoid creating huge Docker image)
# RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/65_postgres.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/70_taste-model-checker.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/80_build-scripts.sh'
# Those that need RTEMS can set it up themselves (avoid creating huge Docker image)
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/85_rtems.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/90_misc.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/91_env.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/95_components_library.sh'
RUN bash -c 'cd /bin ; sudo rm sh ; sudo ln -s bash sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/98_bash.sh'
RUN bash -c 'cd /root/tool-src ; DISABLE_TASTE_BANNER=1 install/99_paths.sh'
RUN bash -c 'echo ". ~/.bashrc.taste" >> /root/.bashrc'
#
# Now run the Docker image with
#
# docker run -it taste /bin/bash
......@@ -4,7 +4,31 @@ TASTE
This is the meta package that is used to install all git modules required
to make a TASTE installation.
To install:
If possible, please use the TASTE VM - available at http://taste.tools
(follow the 'Downloads' link and download the .ova file - that's a VirtualBox
machine that you can import via VirtualBox's "File/Import Appliance")
$ git clone --recursive https://gitrepos.estec.esa.int/taste/taste-setup.git
Otherwise, use a Debian-based distribution, create a new 'taste' user, and...
$ git clone --recursive https://gitrepos.estec.esa.int/taste/taste-setup.git tool-src
...followed by
$ cd tool-src
$ ./Update-TASTE.sh
Then follow the prompts to fix whatever issues are detected in your configuration.
The setup depends on the environment being a Debian distro; if this is not the case,
you can try the setup from inside a debootstrap-ed chroot:
# mkdir /opt/stretch-chroot
# debootstrap stretch /opt/stretch-chroot
# mount -t proc none /opt/stretch-chroot/proc/
# mount -t sysfs none /opt/stretch-chroot/sys/
# mount -o bind /dev /opt/stretch-chroot/dev/
# mount -o bind /dev/pts /opt/stretch-chroot/dev/pts/
# chroot /opt/stretch-chroot
There is also a Dockerfile (currently under construction) that will eventually
automate the setup enough to allow working under any distribution.
function InstallBSP() {
DESCRIPTION="$1"
URL="$2"
BASE="$3"
FOLDER="${BASE}/$4"
echo '[-] This will install '"${DESCRIPTION}"','
echo '[-] under:'
echo '[-] '
echo '[-] '"${FOLDER}"
echo '[-] '
[ -e "${FOLDER}" ] && { \
echo '[-] It will remove anything that is currently there.'
echo '[-] '
}
echo -n '[-] Are you sure you want this? (y/n) '
read -r ANS
if [ "$ANS" != "y" ] ; then
echo '[-] Response was not "y", aborting...'
exit 1
fi
sudo rm -rf "${FOLDER}" 2>/dev/null
wget -q -O - "${URL}" | \
( cd "${BASE}" || exit 1 ; sudo tar jxvf - )
}
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. "${DIR}/common.sh"
InstallBSP \
"a generic non-SMP Leon2 BSP, without support for native FPU" \
"https://download.tuxfamily.org/taste/RTEMS/leon2-nfpu-nsmp.tar.bz2" \
"/opt/rtems-4.12-2017.07.17/sparc-rtems4.12" \
"leon2"
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. "${DIR}/common.sh"
InstallBSP \
"a generic non-SMP Leon3 BSP, with support for FPU" \
"https://download.tuxfamily.org/taste/RTEMS/leon3-fpu-nsmp.tar.bz2" \
"/opt/rtems-4.12-2017.07.17/sparc-rtems4.12" \
"leon3"
Subproject commit 0e47ad76475dab305ee14ebe6c3eb905fdfaee81
Subproject commit 222c849f0e1cd70e15047f35879d0620ca7f55e2
Subproject commit df13f1af480ece8ba5f06e87f4264ea7c469e0fb
Subproject commit 46e59cf19cc2a3fe005ba5bd1f71e8507e45b0dc
Subproject commit fab3838488611081d53f9d653f226378eb9cadfa
Subproject commit b3d442be61069e09a73d660c2e7b8088bd6583a8
Subproject commit 39cc32cbf479c8fafd80afdc64a1f57d41a5fd7b
Subproject commit d08bfe7c9e875b9f757fd5c0bb29d3b1d8e494a1
Subproject commit 55601c78cba5058ed692e1793f5e13fd1d1a4dad
Subproject commit eb2c2da62e7725e5c7b0a5af95cef7a4e61b5def
......@@ -9,4 +9,4 @@ sudo apt-get update
if [ "${ARCH}" == "x86_64" ] ; then
sudo apt-get install -y --force-yes libc6:i386 libgcc1:i386 libxft2:i386 libxss1:i386 libcairo2:i386 libc6-dev-i386
fi
sudo apt-get install -y --force-yes autoconf automake curl exuberant-ctags gcc git gnat gtkwave kate lcov libacl1 libacl1-dev libarchive-dev libattr1 libattr1-dev libbonoboui2-0 libdbd-sqlite3-perl libdbi-perl libfile-copy-recursive-perl libglib2.0-0 libgnome2-0 libgnome2-perl libgnome2-vfs-perl libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common libgtk2-gladexml-perl libgtk2-perl libgraphviz-dev libmono-system-data-linq4.0-cil libmono-system-numerics4.0-cil libmono-system-runtime-serialization-formatters-soap4.0-cil libmono-system-runtime4.0-cil libmono-system-web4.0-cil libmono-system-xml4.0-cil libmono-system4.0-cil libsqlite3-dev libtool libxenomai-dev libxml-libxml-perl libxml-libxml-simple-perl libxml-parser-perl libxml2-dev libxslt1-dev libzmq3-dev mono-mcs mono-reference-assemblies-2.0 mono-runtime nedit net-tools pgadmin3 postgresql postgresql-client postgresql-client-common postgresql-common python-antlr python-coverage python-gtk2-dev python-jinja2 python-lxml python-matplotlib python-pexpect python-pip python-ply python-psycopg2 python-pygraphviz python-pyside python3-pip qemu-system sqlite3 sudo tk8.5 tree vim-gtk wmctrl xenomai-system-tools xmldiff xpdf xterm xterm zip openjdk-8-jre python3-lxml bash-completion strace libtemplates-parser11.10.1-dev libusb-1.0-0-dev cmake dfu-util gnuplot
sudo apt-get install -y --force-yes autoconf automake curl exuberant-ctags gcc git gnat gtkwave kate lcov libacl1 libacl1-dev libarchive-dev libattr1 libattr1-dev libbonoboui2-0 libdbd-sqlite3-perl libdbi-perl libfile-copy-recursive-perl libglib2.0-0 libgnome2-0 libgnome2-perl libgnome2-vfs-perl libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common libgtk2-gladexml-perl libgtk2-perl libgraphviz-dev libmono-system-data-linq4.0-cil libmono-system-numerics4.0-cil libmono-system-runtime-serialization-formatters-soap4.0-cil libmono-system-runtime4.0-cil libmono-system-web4.0-cil libmono-system-xml4.0-cil libmono-system4.0-cil libsqlite3-dev libtool libxml-libxml-perl libxml-libxml-simple-perl libxml-parser-perl libxml2-dev libxslt1-dev libzmq3-dev mono-mcs mono-reference-assemblies-2.0 mono-runtime nedit net-tools pgadmin3 postgresql postgresql-client postgresql-client-common postgresql-common python-antlr python-coverage python-gtk2-dev python-jinja2 python-lxml python-matplotlib python-pexpect python-pip python-ply python-psycopg2 python-pygraphviz python-pyside python3-pip qemu-system sqlite3 sudo tk8.5 tree vim-gtk wmctrl xmldiff xpdf xterm xterm zip openjdk-8-jre python3-lxml bash-completion strace libtemplates-parser11.10.1-dev libusb-1.0-0-dev cmake dfu-util gnuplot libstdc++-6-dev
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
# Setup the tools in ~/.local/bin
cd $DIR/../dmt || exit 1
cd "$DIR/../dmt" || exit 1
# Skip install if the version installed is the same and the tree is clean
HEAD="$(grep version= setup.py | awk -F\" '{print $2}')"
VERSION_INSTALLED="$(dmt --version 2>/dev/null | grep ^TAST | awk '{print $NF}')"
git status >/dev/null
TREE_CLEAN=$?
if [ ${TREE_CLEAN} -eq 0 -a "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo DMT tree is clean and already installed. Skipping DMT install...
exit 0
fi
......
......@@ -5,7 +5,8 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Fetch and install latest ASN1SCC release
mkdir -p ${PREFIX}/share/asn1scc/ || exit 1
cd ${PREFIX}/share/ || exit 1
VER=$(asn1.exe 2>&1 | grep '^Current' | awk '{print $NF}')
ASN1SCC_BIN=$(which asn1.exe)
VER=$(mono $ASN1SCC_BIN 2>&1 | grep '^Current' | awk '{print $NF}')
if [ "${VER}" != "3.3.21" ] ; then
wget -q -O - https://github.com/ttsiodras/asn1scc/releases/download/3.3.21/asn1scc-bin-3.3.21.tar.bz2 \
| tar jxvf -
......
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
# Setup the tools in ~/.local/bin
cd $DIR/../ocarina || exit 1
cd "$DIR/../ocarina" || exit 1
# Skip Ocarina building if tree is clean and version is identical
HEAD="$(git log --oneline | head -1 | cut -d' ' -f1)"
VERSION_INSTALLED="$(ocarina -v 2>&1 | grep ^Oca | awk '{print $NF}' | sed 's,),,;s,r,,')"
git status >/dev/null
TREE_CLEAN=$?
if [ ${TREE_CLEAN} -eq 0 -a "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo Ocarina tree is clean and already installed. Skipping Ocarina build...
exit 0
fi
make distclean # ignore any errors here
./support/reconfig || exit 1
./configure --prefix=${PREFIX} || exit 1
./configure --prefix="${PREFIX}" || exit 1
make || exit 1
make install
# Install Maxime's customized version of available deployment targets
cat ../misc/supported-platforms/ocarina_components.aadl | \
sed "s,/home/taste/tool-inst,$(taste-config --prefix)," > \
${PREFIX}/share/ocarina/AADLv2/ocarina_components.aadl
# Add Ocarina to PATH
PATH_CMD='export PATH=$PATH:'"${PREFIX}/bin"
UpdatePATH
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
# Setup opengeode in ~/.local/bin
cd "$DIR/../opengeode" || exit 1
# Skip install if the version installed is the same and the tree is clean
HEAD="$(grep _version_ opengeode/opengeode.py | head -1 | awk -F\' '{print $2}')"
VERSION_INSTALLED="$(opengeode --version 2>&1)"
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo OpenGEODE tree is clean and already installed. Skipping OpenGEODE install...
exit 0
fi
# Unfortunately, the --upgrade DOES NOT ALWAYS WORK.
# Uninstall first...
echo y | pip2 uninstall opengeode
cd $DIR/../opengeode || exit 1
pip2 install --user --upgrade . || exit 1
# Add .local/bin to PATH
......
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
cd $DIR/../pymsc || exit 1
# Setup pymsc in ~/.local
cd "$DIR/../pymsc" || exit 1
# Skip install if the version installed is the same and the tree is clean
HEAD="$(grep __version msccore/__init__.py | awk '{print $NF}' | tr -d '"')"
VERSION_INSTALLED="$(pip2 freeze | grep taste-msc | awk -F= '{print $NF}')"
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo taste-msc tree is clean and already installed. Skipping taste-msc install...
exit 0
fi
# Unfortunately, the --upgrade DOES NOT ALWAYS WORK.
# Uninstall first...
echo y | pip2 uninstall taste-msc
pip2 install --user --upgrade . || exit 1
# Add .local/bin to PATH
......
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
cd $DIR/../speedometer || exit 1
# Setup speedometer library in ~/.local
cd "$DIR/../speedometer" || exit 1
# Skip install if the version installed is the same and the tree is clean
HEAD="$(grep version speedometer/speedometer.py | head -1 | awk -F\" '{print $(NF-1)}')"
# This is much slower than a --version option would be...
# But there's no such functionality in speedometer :-(
VERSION_INSTALLED="$(pip2 freeze | grep speedometer | awk -F= '{print $NF}')"
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo Speedometer tree is clean and already installed. Skipping Speedometer install...
exit 0
fi
# Unfortunately, the --upgrade DOES NOT ALWAYS WORK.
# Uninstall first...
echo y | pip2 uninstall speedometer
pip2 install --user --upgrade . || exit 1
# Add .local/bin to PATH
......
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
cd $DIR/../asn1-value-editor || exit 1
# Setup asn1valueEditor in ~/.local/bin
cd "$DIR/../asn1-value-editor" || exit 1
# Skip install if the version installed is the same and the tree is clean
HEAD="$(grep __version asn1_value_editor/asn1_value_editor.py | head -1 | awk -F\" '{print $(NF-1);}')"
VERSION_INSTALLED="$(taste-gui --version 2>&1 | head -1 | awk '{print $NF}')"
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo ASN.1 Value Editor tree is clean and already installed. Skipping asn1valueEditor install...
exit 0
fi
# Unfortunately, the --upgrade DOES NOT ALWAYS WORK.
# Uninstall first...
echo y | pip2 uninstall asn1-value-editor
pip2 install --user --upgrade . || exit 1
# Add .local/bin to PATH
......
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
cd $DIR/../msc-editor || exit 1
# Setup the tools in ~/.local/bin
cd "$DIR/../msc-editor" || exit 1
# Skip install if the version installed is the same and the tree is clean
HEAD="$(grep __version msce/msce.py | head -1 | awk -F\' '{print $(NF-1)}')"
# This is much slower than a --version option would be...
# But there's no such functionality in msc-editor :-(
VERSION_INSTALLED="$(pip2 freeze | grep msce | awk -F= '{print $NF}')"
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo MSC editor tree is clean and already installed. Skipping MSCE install...
exit 0
fi
# Unfortunately, the --upgrade DOES NOT ALWAYS WORK.
# Uninstall first...
echo y | pip2 uninstall msce
pip2 install --user --upgrade . || exit 1
# Add .local/bin to PATH
......
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
. "${DIR}/common.sh"
# Setup the tools in ~/.local/bin
cd $DIR/../buildsupport || exit 1
cd "$DIR/../buildsupport" || exit 1
# Skip Ocarina building if tree is clean and version is identical
HEAD="$(git log --oneline | head -1 | cut -d' ' -f1)"
VERSION_INSTALLED="$(buildsupport -v 2>&1 | grep -A1 Based | tail -1 | tr -d '\012')"
git status >/dev/null
TREE_CLEAN=$?
if [ ${TREE_CLEAN} -eq 0 -a "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
VERSION_INSTALLED="$(buildsupport -v 2>&1 | grep Version | cut -f 4 -d' ' | tr -d '\012')"
GIT_OUTPUT=$(git status --porcelain)
if [ "${GIT_OUTPUT}" == "" ] ; then
TREE_DIRTY=0
else
TREE_DIRTY=1
fi
if [ ${TREE_DIRTY} -eq 0 ] && [ "${HEAD}" == "${VERSION_INSTALLED}" ] ; then
echo Buildsupport tree is clean and already installed. Skipping Buildsupport build...
exit 0
fi
make clean # ignore any errors here
make || exit 1
cp buildsupport ${PREFIX}/bin || exit 1
cp buildsupport "${PREFIX}/bin" || exit 1
# Add Ocarina to PATH
PATH_CMD='export PATH=$PATH:'"${PREFIX}/bin"
......
#!/bin/bash
echo "[-] Checking for a local PostgreSQL installation..."
CONF_FILE=$(/bin/ls /etc/postgresql/*/main/pg_hba.conf 2>/dev/null | head -1)
if [ -z "${CONF_FILE}" ] ; then
echo '[x] No pg_hba.conf file under /etc/postgresql/*/main/ ... Aborting.'
exit 1
else
echo '[-] Good, found config file under '"${CONF_FILE}"
fi
echo "[-] Checking whether local connections to PostgreSQL are trusted..."
if ! sudo grep '^local.*trust$' "${CONF_FILE}" >/dev/null 2>&1 ; then
echo "[-] Setting local connections to PostgreSQL as trusted..."
echo "local all all trust" | \
sudo tee -a "${CONF_FILE}"
else
echo '[-] All good, already set as such.'
fi
echo "[-] Checking whether a local postgres DB install has a 'taste' user..."
echo | psql -U taste postgres 2>/dev/null
if [ $? -ne 0 ] ; then
echo "[-] Adding a 'taste' DB user..."
sudo su - postgres -c psql <<< \
"create user taste with password 'tastedb'; alter user taste with superuser;" >/dev/null
if [ $? -ne 0 ] ; then
echo "[x] Failed to create DB user 'taste'... Aborting."
exit 1
fi
else
echo '[-] Already there.'
fi
PGPASS="$HOME/.pgpass"
LINE='127.0.0.1:5432:*:postgres:tastevm'
echo "[-] Checking if 'taste' DB user credentials are stored in \$HOME/.pgpass..."
if ! grep "${LINE/*/\\*}" "$PGPASS" >/dev/null 2>&1 ; then
echo "[-] Adding the 'taste' DB user credentials to \$HOME/.pgpass ..."
echo "$LINE" >> "$PGPASS"
LINE='localhost:5432:*:postgres:tastevm'
echo "$LINE" >> "$PGPASS"
else
echo '[-] Already stored.'
fi
chmod 600 "${PGPASS}"
......@@ -48,7 +48,7 @@ fi
# Make sure the RTEMS_MAKEFILE_PATH_LEON is set
grep RTEMS_MAKEFILE_PATH_LEON $HOME/.bashrc.taste >/dev/null || {
read UNUSED FINAL_RTEMS_FOLDER <<< $(cat "$INSTALLED_RTEMS_INFO")
GR712_FOLDER="$(find $FINAL_RTEMS_FOLDER -type d -name gr712rc)"
GR712_FOLDER="$(find $FINAL_RTEMS_FOLDER -maxdepth 2 -type d -name gr712rc)"
echo Adding RTEMS_MAKEFILE_PATH_LEON env var to settings.
echo "export RTEMS_MAKEFILE_PATH_LEON=\"$GR712_FOLDER\"" >> $HOME/.bashrc.taste
}
......@@ -63,3 +63,9 @@ cat $HOME/.bashrc.taste | \
sed "s,/opt/rtems-4.[^/]*/sparc-rtems4.[^/]*/leon.,${NEW_RTEMS_FOLDER}/sparc-rtems4.12/gr712rc," \
> ${TMPCFG}
mv ${TMPCFG} $HOME/.bashrc.taste
# For Dockerfiles and chroots, the LEON3 simulator depends on these i386 libraries
ARCH=$(uname -m)
if [ "${ARCH}" == "x86_64" ] ; then
sudo apt-get install -y --force-yes libcurl3-gnutls:i386 libbz2-1.0:i386 libncurses5:i386 libglib2.0-0:i386
fi
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
. ${DIR}/common.sh
# Install the scripts
cd ${DIR} || exit 1
cd .. || exit 1
make -C upython-taste/mpy-cross/
export DISABLE_TASTE_BANNER=1
TASTE_PATHS=$HOME/.bashrc.taste
PREFIX=$HOME/tool-inst
......
#!/bin/bash -e
echo "Checking if target $1 is supported"
exit 0
#!/usr/bin/env python
import sys
import PySide
from PySide.QtGui import (QApplication,
QMessageBox)
def check_crazyflie():
''' This function should be in a different module '''
return
def check_snoopy():
raise NotImplementedError()
PLATFORMS = { "crazyflie.gnat" : check_crazyflie,
"snoopy" : check_snoopy}
def run_gui(platform):
app = QApplication(sys.argv)
msg_box = QMessageBox()
msg_box.setWindowTitle("This plaform is not installed!")
ok = msg_box.addButton("Install now", QMessageBox.AcceptRole)
later = msg_box.addButton("Install later", QMessageBox.RejectRole)
msg_box.setEscapeButton(later)
msg_box.setDefaultButton(ok)
msg_box.setIcon(QMessageBox.Warning)
msg_box.setText("Do you want to install target {} ?".format(platform))
msg_box.exec_()
if msg_box.clickedButton() == ok:
print("OK, will do.")
else:
warn_box = QMessageBox()
warn_box.setIcon(QMessageBox.Information)
warn_box.setText("You can install the platform later, manually")
warn_box.exec_()
def main():
# check if the target in supported
try:
platform = sys.argv[1]
PLATFORMS[platform]()
except KeyError:
print("Unknown platform: {}".format(platform))
return 1
except IndexError:
print("You must specify the target in the command line")
except NotImplementedError:
run_gui(platform)
else:
print("Platform {} is installed".format(platform))
sys.exit(0)
if __name__ == '__main__':
main()
......@@ -27,7 +27,7 @@ then
exit -1
fi
taste-extract-asn-from-design.exe -i "$INTERFACEVIEW" -j sql_db/$DBNAME.asn
mono $(which taste-extract-asn-from-design.exe) -i "$INTERFACEVIEW" -j sql_db/$DBNAME.asn
# (4) create Python and SQL Alchemy interfaces
......
#!/bin/bash
# TASTE Concurrency View Creator
# Logging with colors (only in a terminal)
if [ -t 1 ] ; then
COLORON="\e[1m\e[32m"
COLOROFF="\e[0m"
else
COLORON=""
COLOROFF=""
fi
INFO="${COLORON}[INFO]${COLOROFF}"
ERROR="${COLORON}[ERROR]${COLOROFF}"
error=0
NB_ARGS=3
......@@ -32,10 +44,23 @@ else
fi
fi
# Check if models are from V2 and convert to V1_3 accordingly
V2=0
grep "version => \"2" InterfaceView.aadl >/dev/null && {
echo -e "${INFO} Converting interface view from V2 to V1.3"
TASTE --load-interface-view InterfaceView.aadl --export-interface-view-to-1_3 __iv_1_3.aadl
INTERFACEVIEW=__iv_1_3.aadl
echo -e "${INFO} Converting deployment view from V2 to V1.3"
TASTE --load-deployment-view "$DEPLOYMENTVIEW" --export-deployment-view-to-1_3 __dv_1_3.aadl
DEPLOYMENTVIEW=__dv_1_3.aadl
V2=1
};
if [ $error -eq 1 ]
then
echo 'If you are using custom names for interface, deployment and data views, please specify them in order:
Usage: taste-edit-concurrency-view InterfaceView.aadl DeploymentView.aadl DataView.aadl'
echo -e "${ERROR} If you are using custom names for interface, deployment and data views, please specify them in order:
Usage: taste-edit-concurrency-view InterfaceView.aadl DeploymentView.aadl DataView.aadl"
exit -1
fi
......@@ -45,9 +70,9 @@ OCARINA_COMPONENTS="$(taste-config --prefix)/share/ocarina/AADLv2/ocarina_compon
# Tempdir will not be deleted - OS shall make the cleanup (likely at reboot)
tempdir=$(mktemp -d)
taste-extract-asn-from-design.exe -i "$INTERFACEVIEW" -j "$tempdir"/dataview-uniq.asn
mono $(which taste-extract-asn-from-design.exe) -i "$INTERFACEVIEW" -j "$tempdir"/dataview-uniq.asn
asn2aadlPlus "$tempdir"/dataview-uniq.asn "$tempdir"/dataview-uniq.aadl -aadlv2
taste-extract-asn-from-design.exe -i "$INTERFACEVIEW" -k "$tempdir"/dataview-uniq.asn
mono $(which taste-extract-asn-from-design.exe) -i "$INTERFACEVIEW" -k "$tempdir"/dataview-uniq.asn
DATAVIEW="$tempdir"/dataview-uniq.aadl
CMD="buildsupport -i ${INTERFACEVIEW}
-c ${DEPLOYMENTVIEW}
......@@ -72,10 +97,10 @@ then
done
PROCESS+=,$OCARINA_COMPONENTS
else
echo "The following command failed:
echo -e "${ERROR} The following command failed:
${CMD}
"
echo 'Buildsupport reported errors - Fix your models before you can edit the Concurrency View'
echo -e "${ERROR} Buildsupport reported errors - Fix your models before you can edit the Concurrency View"
exit -2
fi
......@@ -88,4 +113,12 @@ From this tool you may:
PROPERTIES=ConcurrencyView.pro
[ ! -z $DEBUG ] && echo TASTE-CV --edit-aadl $PROCESS --update-properties $PROPERTIES
TASTE-CV --edit-aadl $PROCESS --update-properties $PROPERTIES
if [ $V2 -eq 0 ]
then
TASTE-CV --edit-aadl $PROCESS --update-properties $PROPERTIES
else
rm -rf ConcurrencyView
mv "$tempdir"/ConcurrencyView .
fi
......@@ -40,9 +40,9 @@ if [ ! -f DeploymentView.aadl ]
then
EXTRA_CMD+=--load-interface-view
EXTRA_CMD+=' InterfaceView.aadl'
EXTRA_CMD+=' --aadl-library $(taste-config --prefix)/share/ocarina/AADLv2/ocarina_components.aadl '
EXTRA_CMD+=" --aadl-library $(taste-config --prefix)/share/ocarina/AADLv2/ocarina_components.aadl "
else
EXTRA_CMD=
EXTRA_CMD+=' --load-deployment-view DeploymentView.aadl '
fi
# Add the components from the components library
......@@ -62,6 +62,5 @@ done
echo -e "${INFO} Running
TASTE $EXTRA_CMD
--load-deployment-view DeploymentView.aadl
"
TASTE $EXTRA_CMD --load-deployment-view DeploymentView.aadl
TASTE $EXTRA_CMD
......@@ -55,6 +55,8 @@ $ FORCE=1 taste-generate-skeletons
fi
fi
md5sum "$INTERFACEVIEW" > InterfaceView.md5
# Detect models from Ellidiss tools v2, and convert them to 1.3