-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall-salsrc.sh
executable file
·150 lines (129 loc) · 5.35 KB
/
install-salsrc.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/bash
# Script to install SAL/OCS from scrath on a centos7 machine
# It asumes that the user has sudo power
set -e
interactive=0
# Define default version as of today
SAL_VERSION=v3.10.0
XML_VERSION=v4.3.0
SAL_PATH=/opt/lsst/sal-home
: ${CCS_IDL_LIST:="EFD ATHeaderService ATCamera ATArchiver ATPtg ATMCS ATSpectrograph ATTCS ATHexapod"}
while [ "$1" != "" ]; do
case $1 in
-v_sal | --version ) shift
SAL_VERSION=$1
;;
-v_xml | --version ) shift
XML_VERSION=$1
;;
-p | --path ) shift
SAL_PATH=$1
;;
-i | --interactive ) interactive=1
;;
-h | --help ) echo "sal_install_fromSource.sh [-v_sal version] [-v_xml version] [-p path] [-i]] | [-h]]"
exit
;;
* ) echo "sal_install_fromSource.sh [-v_sal version] [-v_xml version] [-p path] [-i]] | [-h]]"
exit 1
esac
shift
done
if [ $interactive == 1 ]; then
echo "-----------------------------------------------------------------"
echo "Hello, "$USER". This script try to install the SAL/OCS software."
echo "-----------------------------------------------------------------"
# 1 - SAL_Version
read -p "Please enter the ts_sal version [$SAL_VERSION]: " SAL_VERSION
SAL_VERSION="${SAL_VERSION:-$SAL_VERSION_DEFAULT}"
# 2 - XML_Version
read -p "Please enter the ts_xml version [$XML_VERSION]: " XML_VERSION
XML_VERSION="${XML_VERSION:-$XML_VERSION_DEFAULT}"
# 3 -Install dir
SAL_PATH_DEFAULT=$HOME/SAL-$SAL_VERSION
read -p "Please enter the location where you will like to install it [$SAL_PATH_DEFAULT]: " SAL_PATH
SAL_PATH="${SAL_PATH:-$SAL_PATH_DEFAULT}"
fi
# 1 - Set the git paths based on versions
GIT_URL=https://github.com/lsst-ts
# 2 - Get the tarball and make the directory
# And create the soft links for SAL_HOME and SAL_WORK_DIR
# In this case SAL_PATH == LSST_SDK_INSTALL
# Clean up before installing
echo "Cleaning up $SAL_PATH"
rm -rf $SAL_PATH
mkdir -p $SAL_PATH
cd $SAL_PATH
echo "Cloning ts_sal:"
echo " git clone $GIT_URL/ts_sal.git -b $SAL_VERSION"
git clone $GIT_URL/ts_sal.git -b $SAL_VERSION
echo "Cloning ts_xml"
echo " git clone $GIT_URL/ts_xml.git -b $XML_VERSION"
git clone $GIT_URL/ts_xml.git -b $XML_VERSION
# 3 - Make the soft links for ts_sal/lsstsal and ts_sal/test
echo "Making soft links for $SAL_PATH/lsstsal"
ln -s ts_sal/lsstsal .
echo "Making soft links for $SAL_PATH/test"
ln -s ts_sal/test .
# 4 - Update the setup.env to reflect the install location
echo "Updating setup.env"
cp -p $SAL_PATH/ts_sal/setup.env $SAL_PATH/ts_sal/setup.env.orig
echo "export LSST_SDK_INSTALL=$SAL_PATH" > $SAL_PATH/ts_sal/setup.env
# Use the rpm location for V6.9 and above
echo "export OSPL_HOME=/opt/OpenSpliceDDS/V6.9.0/HDE/x86_64.linux" >> $SAL_PATH/ts_sal/setup.env
echo "export PYTHON_BUILD_VERSION=3.6m" >> $SAL_PATH/ts_sal/setup.env
echo "export PYTHON_BUILD_LOCATION=/usr" >> $SAL_PATH/ts_sal/setup.env
cat $SAL_PATH/ts_sal/setup.env.orig >> $SAL_PATH/ts_sal/setup.env
# SAL/OCS specific commands
cat << EOF > $SAL_PATH/setup_SAL.env
export LSST_SDK_INSTALL=$SAL_PATH
export OSPL_HOME=/opt/OpenSpliceDDS/V6.9.0/HDE/x86_64.linux
source \$LSST_SDK_INSTALL/ts_sal/setup.env
EOF
# Source for sal generation
source $SAL_PATH/ts_sal/setup.env
# Copy the extra xml for the ocs
# Geneate the SAL interfaces
echo "Will generate SAL interfaces now...."
echo "Copying XML files to $SAL_WORK_DIR"
cp -pv $LSST_SDK_INSTALL/ts_xml/sal_interfaces/SALGenerics.xml $SAL_WORK_DIR
cp -pv $LSST_SDK_INSTALL/ts_xml/sal_interfaces/SALSubsystems.xml $SAL_WORK_DIR
cp -pv $LSST_SDK_INSTALL/ts_xml/sal_interfaces/*/*xml $SAL_WORK_DIR
# go to the place where we will make the build
cd $SAL_WORK_DIR
# Edit CSC as required
# for csc in `cd /tmp/build/ts_xml/sal_interfaces; ls | grep -v xml`; do \
# Running salgenerator for all CSCs takes ~4hrs, so we'll only
# build the ones we strickly need
for csc in $CCS_IDL_LIST
do
echo "----------------------------------------"
echo " Running salgenerator for $csc "
echo "----------------------------------------"
salgenerator $csc validate > /dev/null && echo $csc validate done || exit 1
salgenerator $csc html > /dev/null && echo $csc html done || exit 1
salgenerator $csc sal cpp > /dev/null && echo $csc sal cpp done || exit 1
salgenerator $csc sal python > /dev/null && echo $csc sal python done || exit 1
done
# Copy the new libs
# $SAL_WORK_DIR/lib should already be on the PYTHONPATH
echo "Making soft links for SALPY libraries"
# This one get the SALPY files
ln -s $SAL_WORK_DIR/*/*/*/*.so $SAL_WORK_DIR/lib
# # Make the tarball -- optional
# dname=`dirname $SAL_PATH`
# bname=`basename $SAL_PATH`
# echo "Making tarball:"
# echo " cd $dname"
# echo " tar cf $bname-$SAL_VERSION.tar $bname"
# cd $dname
# tar cf $bname-$SAL_VERSION.tar $bname
# echo "Tarball ready at: $PWD/$bname-$SAL_VERSION.tar"
# Need to clean up some files that are copied to /tmp by the installation
cd /tmp
rm -v salgenerics
rm -v salhtml.log
rm -v Makefile.sacpp*
rm -v sreplace*
echo "To start: "
echo " source $SAL_PATH/setup_SAL.env"