From 4846e746577141232da11c90bf98ba9e00448ed4 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Wed, 22 May 2024 23:19:30 +0800 Subject: [PATCH] Add setup_tools.sh shell script --- tools/setup_tools.sh | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 152 insertions(+), 0 deletions(-) diff --git a/tools/setup_tools.sh b/tools/setup_tools.sh new file mode 100755 index 0000000..68620fb --- /dev/null +++ b/tools/setup_tools.sh @@ -0,0 +1,152 @@ +#!/bin/bash +# This shell script used to install system tools + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# config file path +CONF_FILE=$TOP_PATH/config.json + +# NXP document suggest cross compiler from ARM Developer: +# https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads +ARMTOOL_VER=10.3-2021.07 + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" +} + +# decompress a packet to destination path +function do_unpack() +{ + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +# parser configure file and export environment variable +function export_env() +{ + export BOARD=`jq -r ".bsp.board" $CONF_FILE | tr 'A-Z' 'a-z'` + export BSP_VER=`jq -r ".bsp.version" $CONF_FILE | tr 'A-Z' 'a-z'` + export BSP_URL=`jq -r ".bsp.giturl" $CONF_FILE` + export CROSS_COMPILE=`jq -r ".bsp.crosstool" $CONF_FILE` +} + +function install_systools() +{ + if command -v jq > /dev/null 2>&1 ; then + pr_info "All system tools already installed, skip it" + return 0; + fi + + pr_info "start apt install system tools(commands)" + + systools="coreutils jq wget curl tree gawk sed unzip cpio bc lzop zstd rsync kmod kpartx \ + desktop-file-utils iputils-ping xterm diffstat chrpath asciidoc docbook-utils help2man \ + build-essential gcc g++ make cmake automake groff socat flex texinfo bison texi2html \ + git cvs subversion mercurial autoconf autoconf-archive parted dosfstools \ + python3 python3-pip python3-pexpect python3-git python3-jinja2 \ + lib32z1 libssl-dev libncurses-dev libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev \ + u-boot-tools mtd-utils device-tree-compiler binfmt-support " + + apt update > /dev/null 2>&1 + apt install -y $systools +} + +function install_crosstool() +{ + # Crosstool installed path + CROSSTOOL_PATH=`dirname $CROSS_COMPILE` + + # crosstool name and version + tmp="${CROSS_COMPILE%/bin/*}" + CROSSTOOL_NAME="${tmp##*/}" + + # crosstool installed path + CROSSTOOL_DIR="${CROSS_COMPILE%%/$CROSSTOOL_NAME/*}/" + + + if [ -d $CROSSTOOL_PATH ] ; then + pr_info "Crosstool already installed to $CROSSTOOL_PATH, skip it" + return ; + fi + + wget $BSP_URL/at91/bsp/$BSP_VER/$CROSSTOOL_NAME.tar.xz + + # decompress source code packet + mkdir -p $CROSSTOOL_DIR + do_unpack $CROSSTOOL_NAME.tar.xz $CROSSTOOL_DIR + + # show cross compiler version information + ${CROSS_COMPILE}gcc -v + + rm -f $CROSSTOOL_NAME.tar.xz +} + +if [ `id -u` != 0 ] ; then + echo "" + pr_error "This shell script must be excuted as root privilege" + exit; +fi + +export_env + +install_systools + +install_crosstool + -- Gitblit v1.9.1