aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/sdks/agl
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2018-01-04 23:40:25 +0100
committerSebastien Douheret <sebastien.douheret@iot.bzh>2018-01-04 23:40:25 +0100
commit1a8b7603899f30f052ad123b7607b45a6d4c8772 (patch)
tree70323c3a7eee98289cc48c596e2a855c6045453b /scripts/sdks/agl
parentf2eecfb601acc6c67fb52bf2edda93505bc44da5 (diff)
Improved and fixed local SDK tarball installation.
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
Diffstat (limited to 'scripts/sdks/agl')
-rwxr-xr-xscripts/sdks/agl/add25
-rwxr-xr-xscripts/sdks/agl/db-dump (renamed from scripts/sdks/agl/list)3
-rwxr-xr-xscripts/sdks/agl/db-update (renamed from scripts/sdks/agl/update)0
-rwxr-xr-xscripts/sdks/agl/get-family-config (renamed from scripts/sdks/agl/get-config)0
-rwxr-xr-xscripts/sdks/agl/get-sdk-info146
-rwxr-xr-xscripts/sdks/agl/remove5
6 files changed, 169 insertions, 10 deletions
diff --git a/scripts/sdks/agl/add b/scripts/sdks/agl/add
index e9a9fd1..7c8321c 100755
--- a/scripts/sdks/agl/add
+++ b/scripts/sdks/agl/add
@@ -17,7 +17,8 @@
# limitations under the License.
###########################################################################
-. $(dirname "$0")/_env-init.sh
+SCRIPTS_DIR=$(cd $(dirname "$0") && pwd)
+. ${SCRIPTS_DIR}/_env-init.sh
usage() {
echo "Usage: $(basename $0) [-h|--help] [-f|--file <sdk-filename>] [-u|--url <https_url>] [--force] [--no-clean]"
@@ -27,10 +28,15 @@ usage() {
TMPDIR=""
SDK_FILE=""
URL=""
+DEBUG_OPT=""
do_cleanup=true
do_force=false
while [ $# -ne 0 ]; do
case $1 in
+ --debug)
+ set -x
+ DEBUG_OPT="-D"
+ ;;
-f|--file)
shift
SDK_FILE=$1
@@ -79,13 +85,16 @@ if [ "$URL" != "" ]; then
wget --no-check-certificate "$URL" -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= )
+# Retreive SDK info
+sdkNfo=$(${SCRIPTS_DIR}/get-sdk-info --file "${SDK_FILE}")
+if [ "$?" != "0" ]; then
+ echo $sdkNfo
+ exit 1
+fi
-PROFILE=$(basename $(dirname $DEFAULT_INSTALL_DIR))
-VERSION=$(basename $DEFAULT_INSTALL_DIR)
-ARCH=$(echo "$SDK_FILE" | sed -r 's/.*crosssdk-(.*)-toolchain.*/\1/')
+PROFILE=$(echo "$sdkNfo" |egrep -o '"profile"[^,]*' |cut -d'"' -f4)
+VERSION=$(echo "$sdkNfo" |egrep -o '"version"[^,]*' |cut -d'"' -f4)
+ARCH=$(echo "$sdkNfo" |egrep -o '"arch"[^,]*' |cut -d'"' -f4)
[ "$PROFILE" = "" ] && { echo "PROFILE is not set"; exit 1; }
[ "$VERSION" = "" ] && { echo "VERSION is not set"; exit 1; }
@@ -100,4 +109,4 @@ rm -rf ${DESTDIR} && mkdir -p ${DESTDIR} || exit 1
# Install sdk
chmod +x ${SDK_FILE}
-${SDK_FILE} -y -d ${DESTDIR}
+${SDK_FILE} ${DEBUG_OPT} -y -d ${DESTDIR} 2>&1
diff --git a/scripts/sdks/agl/list b/scripts/sdks/agl/db-dump
index af1d19f..e13a8d8 100755
--- a/scripts/sdks/agl/list
+++ b/scripts/sdks/agl/db-dump
@@ -43,8 +43,7 @@ sdksDBFile = path.join(envMap["SDK_ROOT_DIR"], "sdks_latest.json")
try {
// Fetch SDK Json database file when not existing
if (!fs.existsSync(sdksDBFile)) {
-
- var data = execSync(path.join(__dirname, 'update ' + sdksDBFile), opts);
+ var data = execSync(path.join(__dirname, 'update-db ' + sdksDBFile), opts);
}
// Read SDK Json database file
var data = fs.readFileSync(sdksDBFile);
diff --git a/scripts/sdks/agl/update b/scripts/sdks/agl/db-update
index a222db9..a222db9 100755
--- a/scripts/sdks/agl/update
+++ b/scripts/sdks/agl/db-update
diff --git a/scripts/sdks/agl/get-config b/scripts/sdks/agl/get-family-config
index 8d370b8..8d370b8 100755
--- a/scripts/sdks/agl/get-config
+++ b/scripts/sdks/agl/get-family-config
diff --git a/scripts/sdks/agl/get-sdk-info b/scripts/sdks/agl/get-sdk-info
new file mode 100755
index 0000000..19bf685
--- /dev/null
+++ b/scripts/sdks/agl/get-sdk-info
@@ -0,0 +1,146 @@
+#!/bin/bash
+ ###########################################################################
+# Copyright 2018 IoT.bzh
+#
+# author: Sebastien Douheret <sebastien@iot.bzh>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###########################################################################
+
+. $(dirname "$0")/_env-init.sh
+
+usage() {
+ echo "Usage: $(basename $0) [-h|--help] [-f|--file <sdk-filename>] [-u|--url <https_url>] [--md5 <string>]"
+ exit 1
+}
+
+SDK_FILE=""
+MD5VAL=""
+URL=""
+
+while [ $# -ne 0 ]; do
+ case $1 in
+ -f|--file)
+ shift
+ SDK_FILE=$1
+ ;;
+ -h|--help)
+ usage
+ ;;
+ --md5)
+ shift
+ MD5VAL=$1
+ ;;
+ -u|--url)
+ shift
+ URL=$1
+ ;;
+ *)
+ echo "Invalid argument: $1"
+ usage
+ ;;
+ esac
+ shift
+done
+
+if [ "${SDK_FILE}" != "" ]; then
+
+ if [ ! -f "${SDK_FILE}" ]; then
+ echo "sdk file doesn't exist"
+ exit 1
+ fi
+
+ # Criteria to consider that SDK is a valid AGL sdk:
+ # - shell and binary file type
+ # - "$MARKER:$" string found
+ # - md5sum match MD5VAL if MD5VAL is set
+
+ if ! file "${SDK_FILE}" |grep shell |grep -q binary ; then
+ echo "Not expected file type"
+ exit 2
+ fi
+
+ if ! grep -aq -m1 "^MARKER:$" "${SDK_FILE}"; then
+ echo "marker not found"
+ exit 4
+ fi
+
+ if [ "${MD5VAL}" != "" ]; then
+ if ! echo "${MD5VAL} ${SDK_FILE}" | md5sum --status -c -; then
+ echo "md5sum dit not match"
+ exit 5
+ fi
+ fi
+
+ filename=$(basename "${SDK_FILE}")
+ sdkUrl=file://${SDK_FILE}
+ sdkDate=$(stat -c %y "${SDK_FILE}")
+ sdkSize=$(/bin/ls -sh "${SDK_FILE}" |cut -d' ' -f1)
+
+elif [ "${URL}" != "" ]; then
+
+ filename=$(basename "${URL}")
+ sdkUrl=${URL}
+ sdkDate=""
+ sdkSize=""
+
+else
+ echo "--file or --url option must be set"
+ exit 1
+fi
+
+# assume that sdk name follow this format :
+# _PROFILE_-_COMPILER_ARCH_-_TARGET_-crosssdk-_ARCH_-toolchain-_VERSION_.sh
+# for example:
+# poky-agl-glibc-x86_64-agl-demo-platform-crosssdk-corei7-64-toolchain-4.0.1.sh
+
+
+if [[ "${filename}" != *"crosssdk"* ]]; then
+ echo "malformed sdk file name"
+ exit 6
+fi
+
+profile=$(echo "${filename}" | sed -r 's/(.*)-glibc.*/\1/')
+version=$(echo "${filename}" | sed -r 's/.*toolchain-(.*).sh/\1/')
+arch=$(echo "${filename}" | sed -r 's/.*crosssdk-(.*)-toolchain.*/\1/')
+installPath=${SDK_ROOT_DIR}/${profile}/${version}/${arch}
+
+[ "${profile}" = "" ] && { echo "profile not set"; exit 7; }
+[ "${version}" = "" ] && { echo "version not set"; exit 8; }
+[ "${arch}" = "" ] && { echo " arch not set"; exit 9; }
+
+status="Not Installed"
+if [ -d ${installPath} ]; then
+ envFile=$(find "${installPath}" -maxdepth 1 -name "${SDK_ENV_SETUP_FILENAME}")
+ [ "${envFile}" != "" ] && status="Installed"
+fi
+
+read -r -d '' res <<- EndOfMessage
+{
+ "name": "${profile}_${arch}_${version}",
+ "description": "AGL SDK ${arch} (version ${version})",
+ "profile": "${profile}",
+ "version": "${version}",
+ "arch": "${arch}",
+ "path": "${installPath}",
+ "url": "${sdkUrl}",
+ "status": "${status}",
+ "date": "${sdkDate}",
+ "size": "${sdkSize}",
+ "md5sum": "${MD5VAL}",
+ "setupFile": "${envFile}"
+}
+EndOfMessage
+
+echo "$res"
+exit 0
diff --git a/scripts/sdks/agl/remove b/scripts/sdks/agl/remove
index d0f30b1..ec98f72 100755
--- a/scripts/sdks/agl/remove
+++ b/scripts/sdks/agl/remove
@@ -30,3 +30,8 @@ if [ ! -d "${1}" ]; then
fi
rm -rf "${1}" && echo "SDK successfully removed."
+
+# Potentially remove parent directory when it is the latest SDK for this version
+rmdir "$(dirname ${1})"
+
+exit 0