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