]> rtime.felk.cvut.cz Git - hercules2020/jailhouse-build.git/commitdiff
Add source_sync.sh from "L4T Jetson TX2 Driver Package 28.2"
authorMichal Sojka <michal.sojka@cvut.cz>
Fri, 11 May 2018 14:28:42 +0000 (16:28 +0200)
committerMichal Sojka <michal.sojka@cvut.cz>
Fri, 11 May 2018 14:28:42 +0000 (16:28 +0200)
It can be downloaded from
https://developer.nvidia.com/embedded/dlc/l4t-jetson-tx2-driver-package-28-2-ga.

We will use this script to clone all needed nv-tegra repositories.

nv-tegra/source_sync.sh [new file with mode: 0755]

diff --git a/nv-tegra/source_sync.sh b/nv-tegra/source_sync.sh
new file mode 100755 (executable)
index 0000000..5a848b8
--- /dev/null
@@ -0,0 +1,331 @@
+#!/bin/bash
+
+# Copyright (c) 2012-2017 NVIDIA CORPORATION.  All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#  * Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#  * Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#  * Neither the name of NVIDIA CORPORATION nor the names of its
+#    contributors may be used to endorse or promote products derived
+#    from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+#
+# This script sync's NVIDIA's version of
+# 1. the kernel source
+# 2. the u-boot source
+# from nv-tegra, NVIDIA's public git repository.
+# The script also provides opportunities to the sync to a specific tag
+# so that the binaries shipped with a release can be replicated.
+#
+# Usage:
+# By default it will download all the listed sources
+# ./source_sync.sh
+# Use the -t <TAG> option to provide the TAG to be used to sync all the sources.
+# Use the -k <TAG> option to download only the kernel and device tree repos and optionally sync to TAG
+# Use the -u <TAG> option to download only the u-boot repo and optionally sync to TAG
+# For detailed usage information run with -h option.
+#
+
+
+# verify that git is installed
+if  ! which git > /dev/null  ; then
+  echo "ERROR: git is not installed. If your linux distro is 10.04 or later,"
+  echo "git can be installed by 'sudo apt-get install git-core'."
+  exit 1
+fi
+
+# source dir
+LDK_DIR=$(cd `dirname $0` && pwd)
+LDK_DIR="${LDK_DIR}/sources"
+# script name
+SCRIPT_NAME=`basename $0`
+# info about sources.
+# NOTE: *Add only kernel repos here. Add new repos separately below. Keep related repos together*
+SOURCE_INFO="
+k:kernel/kernel-4.4:nv-tegra.nvidia.com/linux-4.4.git:
+k:kernel/t18x:nv-tegra.nvidia.com/linux-t18x.git:
+k:kernel/nvgpu:nv-tegra.nvidia.com/linux-nvgpu.git:
+k:kernel/nvhost:nv-tegra.nvidia.com/linux-nvhost.git:
+k:kernel/nvmap:nv-tegra.nvidia.com/linux-nvmap.git:
+k:kernel/nvmap-t18x:nv-tegra.nvidia.com/linux-nvmap-t18x.git:
+k:kernel/display:nv-tegra.nvidia.com/linux-display.git:
+k:hardware/nvidia/soc/t18x:nv-tegra.nvidia.com/device/hardware/nvidia/soc/t18x.git:
+k:hardware/nvidia/platform/tegra/common:nv-tegra.nvidia.com/device/hardware/nvidia/platform/tegra/common.git:
+k:hardware/nvidia/platform/t18x/common:nv-tegra.nvidia.com/device/hardware/nvidia/platform/t18x/common.git:
+k:hardware/nvidia/platform/t18x/quill:nv-tegra.nvidia.com/device/hardware/nvidia/platform/t18x/quill.git:
+k:hardware/nvidia/soc/t210:nv-tegra.nvidia.com/device/hardware/nvidia/soc/t210.git:
+k:hardware/nvidia/platform/t210/common:nv-tegra.nvidia.com/device/hardware/nvidia/platform/t210/common.git:
+k:hardware/nvidia/platform/t210/jetson:nv-tegra.nvidia.com/device/hardware/nvidia/platform/t210/jetson.git:
+k:hardware/nvidia/soc/tegra:nv-tegra.nvidia.com/device/hardware/nvidia/soc/tegra.git:
+"
+SOURCE_INFO+="
+u:u-boot:nv-tegra.nvidia.com/3rdparty/u-boot.git:
+"
+
+# exit on error on sync
+EOE=0
+# after processing SOURCE_INFO
+NSOURCES=0
+declare -a SOURCE_INFO_PROCESSED
+# download all?
+DALL=1
+
+function Usages {
+       local ScriptName=$1
+       local LINE
+       local OP
+       local DESC
+       local PROCESSED=()
+       local i
+
+       echo "Use: $1 [options]"
+       echo "Available general options are,"
+       echo "     -h     :     help"
+       echo "     -e     : exit on sync error"
+       echo "     -d [DIR] : root of source is DIR"
+       echo "     -t [TAG] : Git tag that will be used to sync all the sources"
+       echo ""
+       echo "By default, all sources are downloaded."
+       echo "Only specified sources are downloaded, if one or more of the following options are mentioned."
+       echo ""
+       echo "$SOURCE_INFO" | while read LINE; do
+               if [ ! -z "$LINE" ]; then
+                       OP=$(echo "$LINE" | cut -f 1 -d ':')
+                       DESC=$(echo "$LINE" | cut -f 2 -d ':')
+                       if [[ ! " ${PROCESSED[@]} " =~ " ${OP} " ]]; then
+                               echo "     -${OP} [TAG]: Download $DESC source and optionally sync to TAG"
+                               PROCESSED+=("${OP}")
+                       else
+                               echo "           and download $DESC source and sync to the same TAG"
+                       fi
+               fi
+       done
+       echo ""
+}
+
+function ProcessSwitch {
+       local SWITCH="$1"
+       local TAG="$2"
+       local i
+       local found=0
+
+       for ((i=0; i < NSOURCES; i++)); do
+               local OP=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 1 -d ':')
+               if [ "-${OP}" == "$SWITCH" ]; then
+                       SOURCE_INFO_PROCESSED[i]="${SOURCE_INFO_PROCESSED[i]}${TAG}:y"
+                       DALL=0
+                       found=1
+               fi
+       done
+
+       if [ "$found" == 1 ]; then
+               return 0
+       fi
+
+       echo "Terminating... wrong switch: ${SWITCH}" >&2
+       Usages "$SCRIPT_NAME"
+       exit 1
+}
+
+function UpdateTags {
+       local SWITCH="$1"
+       local TAG="$2"
+       local i
+
+       for ((i=0; i < NSOURCES; i++)); do
+               local OP=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 1 -d ':')
+               if [ "${OP}" == "$SWITCH" ]; then
+                       SOURCE_INFO_PROCESSED[i]=$(echo "${SOURCE_INFO_PROCESSED[i]}" \
+                               | awk -F: -v OFS=: -v var="${TAG}" '{$4=var; print}')
+               fi
+       done
+}
+
+function DownloadAndSync {
+       local WHAT_SOURCE="$1"
+       local LDK_SOURCE_DIR="$2"
+       local REPO_URL="$3"
+       local TAG="$4"
+       local OPT="$5"
+       local RET=0
+
+       if [ -d "${LDK_SOURCE_DIR}" ] ; then
+               echo "Directory for $WHAT, ${LDK_SOURCE_DIR}, already exists!"
+               pushd "${LDK_SOURCE_DIR}" > /dev/null
+               git status 2>&1 >/dev/null
+               if [ $? -ne 0 ]; then
+                       echo "But the directory is not a git repository -- clean it up first"
+                       echo ""
+                       echo ""
+                       popd > /dev/null
+                       return 1
+               fi
+               git fetch --all 2>&1 >/dev/null
+               popd > /dev/null
+       else
+               echo "Downloading default $WHAT source..."
+
+               git clone "$REPO_URL" -n ${LDK_SOURCE_DIR} 2>&1 >/dev/null
+               if [ $? -ne 0 ]; then
+                       echo "$2 source sync failed!"
+                       echo ""
+                       echo ""
+                       return 1
+               fi
+
+               echo "The default $WHAT source is downloaded in: ${LDK_SOURCE_DIR}"
+       fi
+
+       if [ -z "$TAG" ]; then
+               echo "Please enter a tag to sync $2 source to"
+               echo -n "(enter nothing to skip): "
+               read TAG
+               TAG=$(echo $TAG)
+               UpdateTags $OPT $TAG
+       fi
+
+       if [ ! -z "$TAG" ]; then
+               pushd ${LDK_SOURCE_DIR} > /dev/null
+               git tag -l 2>/dev/null | grep -q -P "^$TAG\$"
+               if [ $? -eq 0 ]; then
+                       echo "Syncing up with tag $TAG..."
+                       git checkout -b mybranch_$(date +%Y-%m-%d-%s) $TAG
+                       echo "$2 source sync'ed to tag $TAG successfully!"
+               else
+                       echo "Couldn't find tag $TAG"
+                       echo "$2 source sync to tag $TAG failed!"
+                       RET=1
+               fi
+               popd > /dev/null
+       fi
+       echo ""
+       echo ""
+
+       return "$RET"
+}
+
+# prepare processing ....
+GETOPT=":ehd:t:"
+
+OIFS="$IFS"
+IFS=$(echo -en "\n\b")
+SOURCE_INFO_PROCESSED=($(echo "$SOURCE_INFO"))
+IFS="$OIFS"
+NSOURCES=${#SOURCE_INFO_PROCESSED[*]}
+
+for ((i=0; i < NSOURCES; i++)); do
+       OP=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 1 -d ':')
+       GETOPT="${GETOPT}${OP}:"
+done
+
+# parse the command line first
+while getopts "$GETOPT" opt; do
+       case $opt in
+               d)
+                       case $OPTARG in
+                               -[A-Za-z]*)
+                                       Usages "$SCRIPT_NAME"
+                                       exit 1
+                                       ;;
+                               *)
+                                       LDK_DIR="$OPTARG"
+                                       ;;
+                       esac
+                       ;;
+               e)
+                       EOE=1
+                       ;;
+               h)
+                       Usages "$SCRIPT_NAME"
+                       exit 1
+                       ;;
+               t)
+                       TAG="$OPTARG"
+                       PROCESSED=()
+                       for ((i=0; i < NSOURCES; i++)); do
+                               OP=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 1 -d ':')
+                               if [[ ! " ${PROCESSED[@]} " =~ " ${OP} " ]]; then
+                                       UpdateTags $OP $TAG
+                                       PROCESSED+=("${OP}")
+                               fi
+                       done
+                       ;;
+               [A-Za-z])
+                       case $OPTARG in
+                               -[A-Za-z]*)
+                                       eval arg=\$$((OPTIND-1))
+                                       case $arg in
+                                               -[A-Za-Z]-*)
+                                                       Usages "$SCRIPT_NAME"
+                                                       exit 1
+                                                       ;;
+                                               *)
+                                                       ProcessSwitch "-$opt" ""
+                                                       OPTIND=$((OPTIND-1))
+                                                       ;;
+                                       esac
+                                       ;;
+                               *)
+                                       ProcessSwitch "-$opt" "$OPTARG"
+                                       ;;
+                       esac
+                       ;;
+               :)
+                       case $OPTARG in
+                               #required arguments
+                               d)
+                                       Usages "$SCRIPT_NAME"
+                                       exit 1
+                                       ;;
+                               #optional arguments
+                               [A-Za-z])
+                                       ProcessSwitch "-$OPTARG" ""
+                                       ;;
+                       esac
+                       ;;
+               \?)
+                       echo "Terminating... wrong switch: $@" >&2
+                       Usages "$SCRIPT_NAME"
+                       exit 1
+                       ;;
+       esac
+done
+shift $((OPTIND-1))
+
+GRET=0
+for ((i=0; i < NSOURCES; i++)); do
+       OPT=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 1 -d ':')
+       WHAT=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 2 -d ':')
+       REPO=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 3 -d ':')
+       TAG=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 4 -d ':')
+       DNLOAD=$(echo "${SOURCE_INFO_PROCESSED[i]}" | cut -f 5 -d ':')
+
+       if [ $DALL -eq 1 -o "x${DNLOAD}" == "xy" ]; then
+               DownloadAndSync "$WHAT" "${LDK_DIR}/${WHAT}" "git://${REPO}" "${TAG}" "${OPT}"
+               tRET=$?
+               let GRET=GRET+tRET
+               if [ $tRET -ne 0 -a $EOE -eq 1 ]; then
+                       exit $tRET
+               fi
+       fi
+done
+
+exit $GRET