54425529673d3406bb38983f3ed7fdd8d1c53a0b
[src/xds/xds-server.git] / scripts / xds-utils / install-agl-sdks.sh
1 #!/bin/bash
2
3 . /etc/xdtrc
4
5 [ -z "$SDK_BASEURL" ] && SDK_BASEURL="http://iot.bzh/download/public/2017/XDS/sdk/"
6 [ -z "$XDT_SDK" ] && XDT_SDK=/xdt/sdk
7
8 # Support only poky_agl profile for now
9 PROFILE="poky-agl"
10
11 # Dynamically retreive SDKs (reduce timeout in case of iot website is not available)
12 SDKS=$(curl -s ${SDK_BASEURL} --connect-timeout 10 | grep -oP  'href="[^"]*.sh"' | cut -d '"' -f 2) || echo "WARNING: IoT.bzh download site not available."
13
14 usage() {
15     echo "Usage: $(basename $0) [-h|--help] [-clean] [-f|--file <agl-sdk-filename>] [-a|--arch <arch name>] [-l|--list]"
16         echo "For example, arch name is: aarch64, armv7vehf or corei7-64"
17         exit 1
18 }
19
20 getFile() {
21     arch=$1
22     for sdk in ${SDKS}; do
23         echo $sdk | grep "${PROFILE}.*${arch}.*.sh" > /dev/null 2>&1
24         if [ "$?" = "0" ]; then
25             echo $sdk
26             return 0
27         fi
28     done
29     echo "No SDK tarball found for arch $arch"
30     return 1
31 }
32
33 do_cleanup=false
34 FILE=""
35 ARCH=""
36 while [ $# -ne 0 ]; do
37     case $1 in
38         -h|--help|"")
39             usage
40             ;;
41         -f|--file)
42             shift
43             FILE=$1
44             ;;
45         -a|--arch)
46             shift
47             ARCH=$1
48             ;;
49         -l|--list)
50             echo "Available SDKs tarballs:"
51             for sdk in $SDKS; do echo " $sdk"; done
52             exit 0
53             ;;
54         -clean)
55             do_cleanup=true
56             ;;
57         *)
58             echo "Invalid argument: $1"
59             usage
60             ;;
61     esac
62     shift
63 done
64
65 if [ "$ARCH" = "x86-64" ]; then
66     echo "Warning x86-64 architure name is deprecated, please use corei7-64 instead !"
67     exit 1
68 fi
69
70 [ ! -d ${XDT_SDK} ] && mkdir -p ${XDT_SDK}
71
72 if [ "$FILE" = "" ]; then
73     FILE=$(getFile $ARCH)
74     if [ "$?" != "0" ]; then
75         echo "$FILE"
76         exit 1
77     fi
78     SDK_FILE=${XDT_SDK}/${FILE}
79 elif [ ! -f "$FILE" ]; then
80     echo "SDK file not found: $FILE"
81     exit 1
82 else
83     DIR=$(cd $(dirname $FILE); pwd)
84     FILE=$(basename $FILE)
85     SDK_FILE=${DIR}/${FILE}
86 fi
87
88 if [ "$ARCH" = "" ]; then
89     echo "Option -a|--arch must be set"
90     usage
91 fi
92
93 # Check that ARCH name matching SDK tarball filename
94 echo "$FILE" | grep "$ARCH" > /dev/null 2>&1
95 if [ "$?" = "1" ]; then
96     echo "ARCH and provided filename doesn't match !"
97     exit 1
98 fi
99
100 cd ${XDT_SDK} || exit 1
101
102 # Cleanup
103 trap "cleanExit" 0 1 2 15
104 cleanExit ()
105 {
106     if ($do_cleanup); then
107         [[ -f ${SDK_FILE} ]] && rm -f ${SDK_FILE}
108     fi
109 }
110
111 # Get SDK installer
112 if [ ! -f "${SDK_FILE}" ]; then
113     do_cleanup=true
114     wget "$SDK_BASEURL/$FILE" -O "${SDK_FILE}" || exit 1
115 fi
116
117 # Retreive default install dir to extract version
118 offset=$(grep -na -m1 "^MARKER:$" "${SDK_FILE}" | cut -d':' -f1)
119 eval $(head -n $offset "${SDK_FILE}" | grep ^DEFAULT_INSTALL_DIR= )
120 VERSION=$(basename $DEFAULT_INSTALL_DIR)
121
122 [ "$PROFILE" = "" ] && { echo "PROFILE is not set"; exit 1; }
123 [ "$VERSION" = "" ] && { echo "VERSION is not set"; exit 1; }
124
125 DESTDIR=${XDT_SDK}/${PROFILE}/${VERSION}/${ARCH}
126
127 # Cleanup previous install
128 rm -rf ${DESTDIR} && mkdir -p ${DESTDIR} || exit 1
129
130 # Install sdk
131 chmod +x ${SDK_FILE}
132 ${SDK_FILE}  -y -d ${DESTDIR}