Browse Source

[script] add install.sh for rt-thread (#9355)

* [script] add install.sh for rt-thread

* [install] add gitee chevk
Supper Thomas 10 months ago
parent
commit
8b4fb52905
1 changed files with 219 additions and 0 deletions
  1. 219 0
      tools/ci/install.sh

+ 219 - 0
tools/ci/install.sh

@@ -0,0 +1,219 @@
+#!/bin/bash
+
+#
+# Copyright (c) 2024, RT-Thread Development Team
+#
+# SPDX-License-Identifier: Apache-2.0
+#
+# Change Logs:
+# Date           Author       Notes
+# 2024-08-27     Supperthomas the first version
+#
+
+#这个脚本用于安装RT-Thread开发环境 请确保网络畅通
+
+# 设置环境变量 如果希望生效请在当前shell中执行source install.sh
+
+export RTT_ROOT=$(pwd)
+export RTT_CC=gcc
+
+echo "RTT_ROOT is set to: $RTT_ROOT"
+
+
+check_if_china_ip() {
+    # 默认情况下不使用gitee
+    use_gitee=false
+
+    # 尝试通过IP地址判断
+    ip=$(curl -s https://ifconfig.me/ip)
+    if [ -n "$ip" ]; then
+        location=$(curl -s http://www.ip-api.com/json/$ip | grep -o '"country":"China"')
+        if [ "$location" == '"country":"China"' ]; then
+            use_gitee=true
+            echo "Detected China IP. Using gitee."
+        else
+            echo "IP location is not in China."
+        fi
+    else
+        echo "Failed to retrieve IP address. Falling back to timezone check."
+        
+        # 通过时区判断
+        if [ $(($(date +%z)/100)) -eq 8 ]; then
+            use_gitee=true
+            echo "Detected timezone UTC+8. Using gitee."
+        else
+            echo "Timezone is not UTC+8."
+        fi
+    fi
+
+    echo $use_gitee
+}
+
+
+# 检测操作系统类型和发行版
+detect_os() {
+    if command -v uname >/dev/null 2>&1; then
+        OS=$(uname -s)
+    else
+        if [ -f "/etc/os-release" ]; then
+            OS="Linux"
+        elif [ -f "/System/Library/CoreServices/SystemVersion.plist" ]; then
+            OS="macOS"
+        elif [[ -d "/mnt/c/Windows" || -d "/c/Windows" ]]; then
+            OS="WSL"
+        else
+            OS="UNKNOWN"
+        fi
+    fi
+
+    if [ "$OS" == "Linux" ]; then
+        if [ -f /etc/os-release ]; then
+            . /etc/os-release
+            DISTRO=$ID
+            VERSION=$VERSION_ID
+        elif [ -f /etc/lsb-release ]; then
+            . /etc/lsb-release
+            DISTRO=$DISTRIB_ID
+            VERSION=$DISTRIB_RELEASE
+        else
+            DISTRO="UNKNOWN"
+            VERSION="UNKNOWN"
+        fi
+    fi
+
+    echo "Detected Operating System: $OS, Distribution: $DISTRO, Version: $VERSION"
+}
+
+# 修改的安装函数
+install_on_ubuntu() {
+    echo "Installing on Debian/Ubuntu..."
+    use_gitee=$(check_if_china_ip)
+
+    # 根据检测结果决定是否使用--gitee参数
+    if [ "$use_gitee" = true ]; then
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
+        chmod 777 install_ubuntu.sh
+        echo "Installing on China gitee..."
+        ./install_ubuntu.sh --gitee
+    else
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
+        chmod 777 install_ubuntu.sh
+        echo "Installing on no China..."
+        ./install_ubuntu.sh
+    fi
+    rm install_ubuntu.sh
+}
+
+
+install_on_fedora() {
+    echo "Installing on Fedora..."
+
+}
+
+install_on_centos() {
+    echo "Installing on CentOS/RHEL..."
+}
+
+install_on_arch() {
+    echo "Installing on Arch Linux..."
+}
+
+install_on_macos() {
+    echo "Installing on macOS..."
+    use_gitee=$(check_if_china_ip)
+
+    # 根据检测结果决定是否使用--gitee参数
+    if [ "$use_gitee" = true ]; then
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_macos.sh
+        chmod 777 install_macos.sh
+        echo "Installing on China gitee..."
+        ./install_macos.sh --gitee
+    else
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_macos.sh
+        chmod 777 install_macos.sh
+        echo "Installing on no China..."
+        ./install_macos.sh
+    fi
+    rm ./install_macos.sh
+}
+
+install_on_wsl() {
+    echo "Installing on Windows Subsystem for Linux (WSL)..."
+}
+
+install_on_windows() {
+    echo "Installing on Windows using PowerShell..."
+        use_gitee=$(check_if_china_ip)
+
+    # 根据检测结果决定是否使用--gitee参数
+    if [ "$use_gitee" = true ]; then
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_windows.ps1
+        echo "Installing on China gitee..."
+        ./install_windows.ps1 --gitee
+    else
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_windows.ps1
+        echo "Installing on no China..."
+        ./install_windows.ps1
+    fi
+    rm ./install_windows.ps1
+}
+
+install_on_opensuse() {
+    echo "Installing on openSUSE..."
+    use_gitee=$(check_if_china_ip)
+    if [ "$use_gitee" = true ]; then
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_suse.sh
+        chmod 777 install_suse.sh
+        echo "Installing on China gitee..."
+        ./install_suse.sh --gitee
+    else
+        wget https://raw.githubusercontent.com/RT-Thread/env/master/install_suse.sh
+        chmod 777 install_suse.sh
+        echo "Installing on no China..."
+        ./install_suse.sh
+    fi
+    rm ./install_suse.sh
+}
+# 主函数
+main() {
+    detect_os
+    case "$OS" in
+        Linux)
+            case "$DISTRO" in
+                ubuntu|debian)
+                    install_on_ubuntu
+                    ;;
+                fedora)
+                    install_on_fedora
+                    ;;
+                centos|rhel)
+                    install_on_centos
+                    ;;
+                arch)
+                    install_on_arch
+                    ;;
+                *)
+                    echo "Unsupported Linux distribution: $DISTRO"
+                    exit 1
+                    ;;
+            esac
+            ;;
+        macOS)
+            install_on_macos
+            ;;
+        WSL)
+            install_on_wsl
+            ;;
+        Windows)
+            install_on_windows
+            ;;
+        *)
+            echo "Unsupported Operating System: $OS"
+            exit 1
+            ;;
+    esac
+    echo "Installation completed!"
+}
+
+# 执行主函数
+main