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