Imported Upstream version 1.22.1
[platform/core/ml/nnfw.git] / tools / cross / armel / tizen-fetch.sh
1 #!/usr/bin/env bash
2 set -e
3
4 if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
5         VERBOSE=0
6 fi
7
8 Log()
9 {
10         if [ $VERBOSE -ge $1 ]; then
11                 echo ${@:2}
12         fi
13 }
14
15 Inform()
16 {
17         Log 1 -e "\x1B[0;34m$@\x1B[m"
18 }
19
20 Debug()
21 {
22         Log 2 -e "\x1B[0;32m$@\x1B[m"
23 }
24
25 Error()
26 {
27         >&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
28 }
29
30 Fetch()
31 {
32         URL=$1
33         FILE=$2
34         PROGRESS=$3
35         if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
36                 CURL_OPT="--progress-bar"
37         else
38                 CURL_OPT="--silent"
39         fi
40         curl $CURL_OPT $URL > $FILE
41 }
42
43 hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
44 hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
45 hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
46
47 TMPDIR=$1
48 if [ ! -d $TMPDIR ]; then
49         TMPDIR=./tizen_tmp
50         Debug "Create temporary directory : $TMPDIR"
51         mkdir -p $TMPDIR
52 fi
53
54 TIZEN_URL=http://download.tizen.org/releases/daily/tizen
55 BUILD_XML=build.xml
56 REPOMD_XML=repomd.xml
57 PRIMARY_XML=primary.xml
58 TARGET_URL="http://__not_initialized"
59
60 Xpath_get()
61 {
62         XPATH_RESULT=''
63         XPATH=$1
64         XML_FILE=$2
65         RESULT=$(xmllint --xpath $XPATH $XML_FILE)
66         if [[ -z ${RESULT// } ]]; then
67                 Error "Can not find target from $XML_FILE"
68                 Debug "Xpath = $XPATH"
69                 exit 1
70         fi
71         XPATH_RESULT=$RESULT
72 }
73
74 fetch_tizen_pkgs_init()
75 {
76         TARGET=$1
77         PROFILE=$2
78         Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
79
80         TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
81         if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
82         mkdir -p $TMP_PKG_DIR
83
84         PKG_URL=$TIZEN_URL/$PROFILE/latest
85
86         BUILD_XML_URL=$PKG_URL/$BUILD_XML
87         TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
88         TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
89         TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
90         TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
91
92         Fetch $BUILD_XML_URL $TMP_BUILD
93
94         Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
95
96         TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
97         Xpath_get $TARGET_XPATH $TMP_BUILD
98         TARGET_PATH=$XPATH_RESULT
99         TARGET_URL=$PKG_URL/$TARGET_PATH
100
101         REPOMD_URL=$TARGET_URL/repodata/repomd.xml
102         PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
103
104         Fetch $REPOMD_URL $TMP_REPOMD
105
106         Debug "fetch $REPOMD_URL to $TMP_REPOMD"
107
108         Xpath_get $PRIMARY_XPATH $TMP_REPOMD
109         PRIMARY_XML_PATH=$XPATH_RESULT
110         PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
111
112         Fetch $PRIMARY_URL $TMP_PRIMARYGZ
113
114         Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
115
116         gunzip $TMP_PRIMARYGZ
117
118         Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
119 }
120
121 fetch_tizen_pkgs()
122 {
123         ARCH=$1
124         PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
125
126         PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
127
128         for pkg in ${@:2}
129         do
130                 Inform "Fetching... $pkg"
131                 XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
132                 XPATH=${XPATH/_ARCH_/$ARCH}
133                 Xpath_get $XPATH $TMP_PRIMARY
134                 PKG_PATH=$XPATH_RESULT
135
136                 XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
137                 XPATH=${XPATH/_ARCH_/$ARCH}
138                 Xpath_get $XPATH $TMP_PRIMARY
139                 CHECKSUM=$XPATH_RESULT
140
141                 PKG_URL=$TARGET_URL/$PKG_PATH
142                 PKG_FILE=$(basename $PKG_PATH)
143                 PKG_PATH=$TMPDIR/$PKG_FILE
144
145                 Debug "Download $PKG_URL to $PKG_PATH"
146                 Fetch $PKG_URL $PKG_PATH true
147
148                 echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
149                 if [ $? -ne 0 ]; then
150                         Error "Fail to fetch $PKG_URL to $PKG_PATH"
151                         Debug "Checksum = $CHECKSUM"
152                         exit 1
153                 fi
154         done
155 }
156
157 Inform "Initialize arm base"
158 fetch_tizen_pkgs_init standard base
159 Inform "fetch common packages"
160 fetch_tizen_pkgs armv7l glibc glibc-devel
161 fetch_tizen_pkgs noarch linux-glibc-devel
162 fetch_tizen_pkgs armv7l libgcc libstdc++ libstdc++-devel libunwind libunwind-devel
163
164
165 Inform "Initialize standard unified"
166 fetch_tizen_pkgs_init standard unified
167 Inform "fetch nnfw packages"
168 fetch_tizen_pkgs armv7l gmock-devel tensorflow-lite-devel boost-devel libarmcl-devel boost-program-options boost-system boost-filesystem gmock libarmcl
169