7e4eb76f8611ab998994948e1848211b8206cce7
[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 x86-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 [ ! -d ${XDT_SDK} ] && mkdir -p ${XDT_SDK}
65
66 if [ "$FILE" = "" ]; then
67     FILE=$(getFile $ARCH)
68     SDK_FILE=${XDT_SDK}/${FILE}
69     if [ "$?" != 0 ]; then
70         exit 1
71     fi
72 elif [ ! -f $FILE ]; then
73     echo "SDK file not found: $FILE"
74     exit 1
75 else
76     DIR=$(cd $(dirname $FILE); pwd)
77     SDK_FILE=${DIR}/${FILE}
78 fi
79
80 if [ "$ARCH" = "" ]; then
81     echo "Option -a|--arch must be set"
82     usage
83 fi
84
85 # Check that ARCH name matching SDK tarball filename
86 echo "$FILE" | grep "$ARCH" > /dev/null 2>&1
87 if [ "$?" = "1" ]; then
88     echo "ARCH and provided filename doesn't match !"
89     exit 1
90 fi
91
92 cd ${XDT_SDK} || exit 1
93
94 # Cleanup
95 trap "cleanExit" 0 1 2 15
96 cleanExit ()
97 {
98     if ($do_cleanup); then
99         [[ -f ${SDK_FILE} ]] && rm -f ${SDK_FILE}
100     fi
101 }
102
103 # Get SDK installer
104 if [ ! -f ${SDK_FILE} ]; then
105     do_cleanup=true
106     wget "$SDK_BASEURL/$FILE" -O ${SDK_FILE} || exit 1
107 fi
108
109 # Retreive default install dir to extract version
110 offset=$(grep -na -m1 "^MARKER:$" $FILE | cut -d':' -f1)
111 eval $(head -n $offset $FILE | grep ^DEFAULT_INSTALL_DIR= )
112 VERSION=$(basename $DEFAULT_INSTALL_DIR)
113
114 [ "$PROFILE" = "" ] && { echo "PROFILE is not set"; exit 1; }
115 [ "$VERSION" = "" ] && { echo "VERSION is not set"; exit 1; }
116
117 DESTDIR=${XDT_SDK}/${PROFILE}/${VERSION}/${ARCH}
118
119 # Cleanup previous install
120 rm -rf ${DESTDIR} && mkdir -p ${DESTDIR} || exit 1
121
122 # Install sdk
123 chmod +x ${SDK_FILE}
124 ${SDK_FILE}  -y -d ${DESTDIR}