Parametrize variants at build scripts
[anna.git] / example / diameter / launcher / deploy-adml-http.sh
1 #!/bin/bash
2
3 #############
4 # VARIABLES #
5 #############
6 SCR_DIR=`readlink -f $0 | xargs dirname`
7 PROJECT_ROOT=$(readlink -f $SCR_DIR/../../..)
8
9 VARIANT=${1:-Release}
10
11 #############
12 # FUNCTIONS #
13 #############
14 _exit () {
15   local msg="$1"
16   local rc=$2
17   [ -z "$rc" ] && rc=1
18
19   # Exit message:
20   [ -n "$msg" ] && echo -e "\n${msg}\n"
21
22   exit $rc
23 }
24
25 #############
26 # EXECUTION #
27 #############
28
29 echo
30 echo "------------------------------------------------------"
31 echo "         ADML with HTTP support installation          "
32 echo "------------------------------------------------------"
33 echo
34 [ ! -d $PROJECT_ROOT/build/${VARIANT} ] && _exit "Cannot locate neither '${VARIANT}' variant. Build the project !"
35 echo "Variant: ${VARIANT}"
36 echo
37 build_type_letter=$(echo $VARIANT | cut -c1 | tr '[:upper:]' '[:lower:]')
38
39 version__dflt=v"`date +'%y'`.`date +'%m'`.`date +'%d'`$build_type_letter"
40 INSTALL__dflt=$HOME/3rdParty/anna-adml-http-builds/v"`date +'%y'`.`date +'%m'`.`date +'%d'`$build_type_letter"
41
42 echo "Choose the target path for installation [$INSTALL__dflt]:"
43 echo " (enter a non-existent directory)"
44 read INSTALL
45 [ -z "$INSTALL" ] && INSTALL=$INSTALL__dflt
46 INSTALL=`readlink -m $INSTALL`
47 [ -d $INSTALL ] && _exit "The target installation directory ($INSTALL) already exists ! (if you want to reinstall, remove it first)"
48
49 echo
50 echo "Stage 1: Deploying resources ......................"
51 echo
52 mkdir -p $INSTALL
53 cp -rL $SCR_DIR/deployments/adml/* $INSTALL
54
55 # VARIABLES ######################################
56 # Sources:
57 LDIR=${PROJECT_ROOT}/example/diameter/launcher
58 BIN_DIR=${PROJECT_ROOT}/build/$VARIANT/bin
59 LIB_DIR=${PROJECT_ROOT}/build/$VARIANT/lib
60
61 # Targets:
62 ADML=${INSTALL}
63 DTDs=${ADML}/DTDs
64 DYNLIBS=${ADML}/dynlibs
65 ##################################################
66
67 echo
68 echo "Variant: $VARIANT"
69 echo
70
71 # Empty directories:
72 mkdir -p ${ADML}/counters
73 mkdir -p ${ADML}/test-reports
74
75 # Scripts:
76 cp ${PROJECT_ROOT}/example/diameter/launcher/resources/scripts/operation.sh ${ADML}
77
78 # Templates:
79 mkdir $DTDs
80 cp ${PROJECT_ROOT}/include/anna/diameter/codec/message.dtd ${DTDs}
81 cp ${PROJECT_ROOT}/include/anna/diameter/stack/dictionary.dtd ${DTDs}
82 cp ${PROJECT_ROOT}/example/diameter/launcher/resources/services_examples/services.dtd ${DTDs}
83
84 # Main Launcher and dynamic libraries:
85 cp ${BIN_DIR}/anna_diameter_launcher ${ADML}/ADML
86 cp -r $LIB_DIR/dynamic/launcher ${DYNLIBS}
87 cp $LIB_DIR/libanna_testing_shared.so ${DYNLIBS}
88
89 # Get stuff from leaf directories:
90 cd $LIB_DIR/dynamic/launcher
91 leafs=( $(find . -type d -links 2) )
92 cd - >/dev/null
93
94 cd ${PROJECT_ROOT}/dynamic/launcher
95 for dir in ${leafs[@]}
96 do
97     cp $dir/*.xml ${DYNLIBS}/$dir 2>/dev/null
98     cp $dir/dynamic.suffix ${DYNLIBS}/$dir 2>/dev/null
99     cp -r $dir/services ${DYNLIBS}/$dir 2>/dev/null
100 done
101 cd - >/dev/null
102
103 # ADML dynamic libs selection script:
104 cp ${LDIR}/resources/scripts/select_dynlib.sh ${DYNLIBS}/select.sh
105
106 # Default dynamic library:
107 cd ${DYNLIBS}
108 ln -sf default/libanna_launcher_procedure_default_shared.so
109 cd - >/dev/null
110
111 # ADML Agent shall use http server:
112 httpOpt="--httpServerShared --httpServer \`grep -v ^# .httpServer\`"
113 echo "${httpOpt}" >> ${ADML}/args.ft
114 echo "${httpOpt}" >> ${ADML}/args.st
115 echo "localhost:8000" > ${ADML}/.httpServer
116
117 # Help
118 cp ${PROJECT_ROOT}/example/diameter/launcher/resources/HELP.md ${ADML}
119
120 # Simple services which only loads the diameter base dictionary:
121 cat << EOF > ${ADML}/services.xml
122 <services>
123   <stack id="0" dictionary="stacks/diameter_base.0.xml" fixMode="Never"/>
124 </services>
125 EOF
126
127 # Remove AOTS actions:
128 rm ${ADML}/ACTIONS.md
129
130 _exit "Done!" 0
131