summaryrefslogtreecommitdiffstats
path: root/scripts/xds-utils/install-agl-sdks.sh
blob: 54425529673d3406bb38983f3ed7fdd8d1c53a0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/bash

. /etc/xdtrc

[ -z "$SDK_BASEURL" ] && SDK_BASEURL="http://iot.bzh/download/public/2017/XDS/sdk/"
[ -z "$XDT_SDK" ] && XDT_SDK=/xdt/sdk

# Support only poky_agl profile for now
PROFILE="poky-agl"

# Dynamically retreive SDKs (reduce timeout in case of iot website is not available)
SDKS=$(curl -s ${SDK_BASEURL} --connect-timeout 10 | grep -oP  'href="[^"]*.sh"' | cut -d '"' -f 2) || echo "WARNING: IoT.bzh download site not available."

usage() {
    echo "Usage: $(basename $0) [-h|--help] [-clean] [-f|--file <agl-sdk-filename>] [-a|--arch <arch name>] [-l|--list]"
	echo "For example, arch name is: aarch64, armv7vehf or corei7-64"
	exit 1
}

getFile() {
    arch=$1
    for sdk in ${SDKS}; do
        echo $sdk | grep "${PROFILE}.*${arch}.*.sh" > /dev/null 2>&1
        if [ "$?" = "0" ]; then
            echo $sdk
            return 0
        fi
    done
    echo "No SDK tarball found for arch $arch"
    return 1
}

do_cleanup=false
FILE=""
ARCH=""
while [ $# -ne 0 ]; do
    case $1 in
        -h|--help|"")
            usage
            ;;
        -f|--file)
            shift
            FILE=$1
            ;;
        -a|--arch)
            shift
            ARCH=$1
            ;;
        -l|--list)
            echo "Available SDKs tarballs:"
            for sdk in $SDKS; do echo " $sdk"; done
            exit 0
            ;;
        -clean)
            do_cleanup=true
            ;;
        *)
            echo "Invalid argument: $1"
            usage
            ;;
    esac
    shift
done

if [ "$ARCH" = "x86-64" ]; then
    echo "Warning x86-64 architure name is deprecated, please use corei7-64 instead !"
    exit 1
fi

[ ! -d ${XDT_SDK} ] && mkdir -p ${XDT_SDK}

if [ "$FILE" = "" ]; then
    FILE=$(getFile $ARCH)
    if [ "$?" != "0" ]; then
        echo "$FILE"
        exit 1
    fi
    SDK_FILE=${XDT_SDK}/${FILE}
elif [ ! -f "$FILE" ]; then
    echo "SDK file not found: $FILE"
    exit 1
else
    DIR=$(cd $(dirname $FILE); pwd)
    FILE=$(basename $FILE)
    SDK_FILE=${DIR}/${FILE}
fi

if [ "$ARCH" = "" ]; then
    echo "Option -a|--arch must be set"
    usage
fi

# Check that ARCH name matching SDK tarball filename
echo "$FILE" | grep "$ARCH" > /dev/null 2>&1
if [ "$?" = "1" ]; then
    echo "ARCH and provided filename doesn't match !"
    exit 1
fi

cd ${XDT_SDK} || exit 1

# Cleanup
trap "cleanExit" 0 1 2 15
cleanExit ()
{
    if ($do_cleanup); then
        [[ -f ${SDK_FILE} ]] && rm -f ${SDK_FILE}
    fi
}

# Get SDK installer
if [ ! -f "${SDK_FILE}" ]; then
    do_cleanup=true
    wget "$SDK_BASEURL/$FILE" -O "${SDK_FILE}" || exit 1
fi

# Retreive default install dir to extract version
offset=$(grep -na -m1 "^MARKER:$" "${SDK_FILE}" | cut -d':' -f1)
eval $(head -n $offset "${SDK_FILE}" | grep ^DEFAULT_INSTALL_DIR= )
VERSION=$(basename $DEFAULT_INSTALL_DIR)

[ "$PROFILE" = "" ] && { echo "PROFILE is not set"; exit 1; }
[ "$VERSION" = "" ] && { echo "VERSION is not set"; exit 1; }

DESTDIR=${XDT_SDK}/${PROFILE}/${VERSION}/${ARCH}

# Cleanup previous install
rm -rf ${DESTDIR} && mkdir -p ${DESTDIR} || exit 1

# Install sdk
chmod +x ${SDK_FILE}
${SDK_FILE}  -y -d ${DESTDIR}