当前位置: 首页 > news >正文

Linux运维_Bash脚本_构建安装Ninja-1.11.1(setup.py)

Linux运维_Bash脚本_构建安装Ninja-1.11.1(setup.py)

Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。

您可以在 Linux 和 MacOS 机器上使用 Bash,甚至可以通过适用于 Linux 的 Windows 子系统在 Windows 10 机器上使用。

使用方法

  • 下载源码包:

cmake-3.28.3.tar.gz

wheel-0.42.0.tar.gz

packaging-23.2.tar.gz

distro-1.9.0.tar.gz

setuptools-41.2.0.zip

setuptools_scm-1.17.0.tar.gz

scikit-build-0.15.0.tar.gz

ninja-1.11.1.tar.gz

  • 放于指定路径:

这里 Bash Shell 脚本的全局变量 STORAGE 指定的存放源码包的路径 /home/goufeng 可进行修改。

  • 执行 Bash Shell 脚本:

输入 /[路径名]/[脚本名].sh 即可进行自动编译部署,过程中提示输入 (y/n) 输入 y 则进行下一步,这样分阶段确认的原因是为了确保能够看到上一个源码编译结果中可能的错误和提示。

完整脚本

#! /bin/bash
# Create By GF 2024-03-03 00:05# --------------------- CMake ----------------------
# Need File: cmake-3.28.3.tar.gz
# ------------ Ninja - 1.11.1 - setup.py -----------
# Need File: wheel-0.42.0.tar.gz
# Need File: packaging-23.2.tar.gz
# Need File: distro-1.9.0.tar.gz
# Need File: setuptools-41.2.0.zip
# Need File: setuptools_scm-1.17.0.tar.gz
# Need File: scikit-build-0.15.0.tar.gz
# Need File: ninja-1.11.1.tar.gz# ##################################################
STORAGE=/home/goufeng# ############################################## CMake ################################################ Function: 编译安装(Compile Install) CMake-3.28.3
# ##################################################
function Compile_Install_CMake_3_28_3() {if [[ ! -d "/opt/cmake-3.28.3" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------echo "[Confirm] Compile and Install ( cmake-3.28.3 )? (y/n)"# ..........................................read VERIFY# ..........................................if [[ $VERIFY != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/cmake-3.28.3.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/cmake-3.28.3 && ./configure --prefix=/opt/cmake-3.28.3 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/cmake-3.28.3/bin/cmake /usr/local/bin/cmakefi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/cmake-3.28.3 && return 0elseecho "[Caution] Path: ( /opt/cmake-3.28.3 ) Already Exists."# ------------------------------------------return 0fi
}# ##################################### Ninja - 1.11.1 - setup.py ##################################### Function: 构建安装(Build Install) Wheel-0.42.0 (by Python3)
# ##################################################
function Build_Install_Wheel_0_42_0_by_Python3() {# 使用 expr index "$string" "$substring" 来判断字符串 $string 中是否包含子字符串 $substring。# Use the expr index "$string" and "$substring" to determine whether the string $string contains a substring $substring.# 如果子字符串存在, 则返回子字符串在原字符串中的位置 (从 1 开始), 否则返回 0。# If the substring exists, return the position of the substring in the original string (starting from 1), otherwise return 0.local EXISTS_LINE=$(pip3 list | grep "wheel")local EXISTS_NAME=$(expr index "$EXISTS_LINE" "wheel")local EXISTS_VERSION=$(expr index "$EXISTS_LINE" "0.42.0")if [[ $EXISTS_NAME == 0 && $EXISTS_VERSION == 0 ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_BUILDED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Build and Install ( Wheel-0.42.0 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/wheel-0.42.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/wheel-0.42.0 && python3 setup.py build && STEP_BUILDED=1# ------------------------------------------cd $STORAGE/wheel-0.42.0 && python3 setup.py install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/Python-3.8.0/bin/wheel /usr/local/bin/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/wheel-0.42.0 && return 0elseecho "[Caution] Python Program: ( wheel-0.42.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: Pip安装(Pip Install) Packaging-23.2 (by Python3)
# ##################################################
function Pip_Install_Packaging_23_2_by_Python3() {# 使用 expr index "$string" "$substring" 来判断字符串 $string 中是否包含子字符串 $substring。# Use the expr index "$string" and "$substring" to determine whether the string $string contains a substring $substring.# 如果子字符串存在, 则返回子字符串在原字符串中的位置 (从 1 开始), 否则返回 0。# If the substring exists, return the position of the substring in the original string (starting from 1), otherwise return 0.local EXISTS_LINE=$(pip3 list | grep "packaging")local EXISTS_NAME=$(expr index "$EXISTS_LINE" "packaging")local EXISTS_VERSION=$(expr index "$EXISTS_LINE" "23.2")if [[ $EXISTS_NAME == 0 && $EXISTS_VERSION == 0 ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Pip Install ( packaging-23.2 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/packaging-23.2.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# 如果项目位于其他目录, 则需要将其路径 "." 替换。# pip 工具会根据项目中的 pyproject.toml 文件自动安装相应的依赖项。cd $STORAGE/packaging-23.2 && pip3 install . && STEP_INSTALLED=1# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/packaging-23.2 && return 0elseecho "[Caution] Python Program: ( packaging-23.2 ) Already Exists."# ------------------------------------------return 0fi
}# Function: Pip安装(Pip Install) Distro-1.9.0 (by Python3)
# ##################################################
function Pip_Install_Distro_1_9_0_by_Python3() {# 使用 expr index "$string" "$substring" 来判断字符串 $string 中是否包含子字符串 $substring。# Use the expr index "$string" and "$substring" to determine whether the string $string contains a substring $substring.# 如果子字符串存在, 则返回子字符串在原字符串中的位置 (从 1 开始), 否则返回 0。# If the substring exists, return the position of the substring in the original string (starting from 1), otherwise return 0.local EXISTS_LINE=$(pip3 list | grep "distro")local EXISTS_NAME=$(expr index "$EXISTS_LINE" "distro")local EXISTS_VERSION=$(expr index "$EXISTS_LINE" "1.9.0")if [[ $EXISTS_NAME == 0 && $EXISTS_VERSION == 0 ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Pip Install ( distro-1.9.0 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/distro-1.9.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# 如果项目位于其他目录, 则需要将其路径 "." 替换。# pip 工具会根据项目中的 pyproject.toml 文件自动安装相应的依赖项。cd $STORAGE/distro-1.9.0 && pip3 install . && STEP_INSTALLED=1# ------------------------------------------# * Caution: 安装 Distro, 其实就是让系统在需要的时候能找到 Distro 这个二进制文件并运行。if [[ $STEP_INSTALLED == 1 ]]; thenln -sf $STORAGE/ninja-1.11.1/distro /usr/local/bin/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/distro-1.9.0 && return 0elseecho "[Caution] Python Program: ( distro-1.9.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 构建安装(Build Install) SetupTools-41.2.0 (by Python3)
# ##################################################
function Build_Install_SetupTools_41_2_0_by_Python3() {# 使用 expr index "$string" "$substring" 来判断字符串 $string 中是否包含子字符串 $substring。# Use the expr index "$string" and "$substring" to determine whether the string $string contains a substring $substring.# 如果子字符串存在, 则返回子字符串在原字符串中的位置 (从 1 开始), 否则返回 0。# If the substring exists, return the position of the substring in the original string (starting from 1), otherwise return 0.local EXISTS_LINE=$(pip3 list | grep "setuptools")local EXISTS_NAME=$(expr index "$EXISTS_LINE" "setuptools")local EXISTS_VERSION=$(expr index "$EXISTS_LINE" "41.2.0")if [[ $EXISTS_NAME == 0 && $EXISTS_VERSION == 0 ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_BUILDED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Build and Install ( packaging-23.2 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------unzip $STORAGE/setuptools-41.2.0.zip && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/setuptools-41.2.0 && python3 setup.py build && STEP_BUILDED=1# ------------------------------------------cd $STORAGE/setuptools-41.2.0 && python3 setup.py install && STEP_INSTALLED=1# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/setuptools-41.2.0 && return 0elseecho "[Caution] Python Program: ( setuptools-41.2.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 构建安装(Build Install) SetupTools-SCM-1.17.0 (by Python3)
# ##################################################
function Build_Install_SetupTools_SCM_1_17_0_by_Python3() {# * Caution: 安装 SetupTools-SCM-1.17.0 完成后, 其版本号为 0.0.0 而不是 1.17.0。# 使用 expr index "$string" "$substring" 来判断字符串 $string 中是否包含子字符串 $substring。# Use the expr index "$string" and "$substring" to determine whether the string $string contains a substring $substring.# 如果子字符串存在, 则返回子字符串在原字符串中的位置 (从 1 开始), 否则返回 0。# If the substring exists, return the position of the substring in the original string (starting from 1), otherwise return 0.local EXISTS_LINE=$(pip3 list | grep "setuptools-scm")local EXISTS_NAME=$(expr index "$EXISTS_LINE" "setuptools-scm")local EXISTS_VERSION=$(expr index "$EXISTS_LINE" "1.17.0")if [[ $EXISTS_NAME == 0 && $EXISTS_VERSION == 0 ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_BUILDED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Build and Install ( setuptools-scm-1.17.0 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/setuptools_scm-1.17.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/setuptools_scm-1.17.0 && python3 setup.py build && STEP_BUILDED=1# ------------------------------------------cd $STORAGE/setuptools_scm-1.17.0 && python3 setup.py install && STEP_INSTALLED=1# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/setuptools_scm-1.17.0 && return 0elseecho "[Caution] Python Program: ( setuptools-scm-1.17.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 构建安装(Build Install) Scikit-Build-0.15.0 (by Python3)
# ##################################################
function Build_Install_Scikit_Build_0_15_0_by_Python3() {# 使用 expr index "$string" "$substring" 来判断字符串 $string 中是否包含子字符串 $substring。# Use the expr index "$string" and "$substring" to determine whether the string $string contains a substring $substring.# 如果子字符串存在, 则返回子字符串在原字符串中的位置 (从 1 开始), 否则返回 0。# If the substring exists, return the position of the substring in the original string (starting from 1), otherwise return 0.local EXISTS_LINE=$(pip3 list | grep "scikit-build")local EXISTS_NAME=$(expr index "$EXISTS_LINE" "scikit-build")local EXISTS_VERSION=$(expr index "$EXISTS_LINE" "0.0.0")if [[ $EXISTS_NAME == 0 && $EXISTS_VERSION == 0 ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_BUILDED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Build and Install ( scikit-build-0.15.0 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/scikit-build-0.15.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/scikit-build-0.15.0 && python3 setup.py build && STEP_BUILDED=1# ------------------------------------------cd $STORAGE/scikit-build-0.15.0 && python3 setup.py install && STEP_INSTALLED=1# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/scikit-build-0.15.0 && return 0elseecho "[Caution] Python Program: ( scikit-build-0.15.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 构建安装(Build Install) Ninja-1.11.1-by-Py-Setup (by Python3)
# ##################################################
function Build_Install_Ninja_1_11_1_by_Py_Setup_by_Python3() {# 使用 expr index "$string" "$substring" 来判断字符串 $string 中是否包含子字符串 $substring。# Use the expr index "$string" and "$substring" to determine whether the string $string contains a substring $substring.# 如果子字符串存在, 则返回子字符串在原字符串中的位置 (从 1 开始), 否则返回 0。# If the substring exists, return the position of the substring in the original string (starting from 1), otherwise return 0.local EXISTS_LINE=$(pip3 list | grep "ninja")local EXISTS_NAME=$(expr index "$EXISTS_LINE" "ninja")local EXISTS_VERSION=$(expr index "$EXISTS_LINE" "1.11.1")if [[ $EXISTS_NAME == 0 && $EXISTS_VERSION == 0 ]]; then# Ninja 工具一般配合 Meson 工具使用。# Meson 可以使用 Python 的 Pip 工具安装: pip install --user meson# Meson 可以从源码进行构建安装: python3 setup.py build 以及 python3 setup.py install# Ninja 可以使用 Python 的 Pip 工具安装: pip install --user ninja# Ninja 可以从源码进行构建安装: python3 setup.py build 以及 python3 setup.py install (需要下载含有 setup.py 的源码包)local VERIFYlocal STEP_UNZIPPED=0local STEP_BUILDED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Build and Install ( ninja-1.11.1 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/ninja-1.11.1.tar.gz && STEP_UNZIPPED=1# ------------------------------------------if [[ $STEP_UNZIPPED == 1 && ! -f "$STORAGE/ninja-1.11.1/setup.py" ]]; thenecho "[Caution] Python Source Code: ( ninja-1.11.1.tar.gz ) is Not installing Through ( setup.py )."# ......................................exit 1fi# ------------------------------------------cd $STORAGE/ninja-1.11.1 && python3 setup.py build && STEP_BUILDED=1# ------------------------------------------cd $STORAGE/ninja-1.11.1 && python3 setup.py install && STEP_INSTALLED=1# ------------------------------------------# * Caution: 安装 Ninja, 其实就是让系统在需要的时候能找到 Ninja 这个二进制文件并运行。if [[ $STEP_INSTALLED == 1 ]]; thenln -sf $STORAGE/ninja-1.11.1/ninja /usr/local/bin/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/ninja-1.11.1 && return 0elseecho "[Caution] Python Program: ( ninja-1.11.1 ) Already Exists."# ------------------------------------------return 0fi
}function main() {# ------------------- CMake --------------------Compile_Install_CMake_3_28_3# ---------- Ninja - 1.11.1 - setup.py ---------Build_Install_Wheel_0_42_0_by_Python3Pip_Install_Packaging_23_2_by_Python3Pip_Install_Distro_1_9_0_by_Python3Build_Install_SetupTools_41_2_0_by_Python3Build_Install_SetupTools_SCM_1_17_0_by_Python3Build_Install_Scikit_Build_0_15_0_by_Python3Build_Install_Ninja_1_11_1_by_Py_Setup_by_Python3
}main

总结

以上就是关于 Linux运维 Bash脚本 构建安装Ninja-1.11.1(setup.py) 的全部内容。

更多内容可以访问我的代码仓库:

https://gitee.com/goufeng928/public

https://github.com/goufeng928/public

相关文章:

  • Linux 学习笔记(9)
  • Springboot同一台服务器部署多个项目,导致redis混淆,如何根据不同项目区分
  • 【NR 定位】3GPP NR Positioning 5G定位标准解读(四)
  • 全量知识系统问题及SmartChat给出的答复 之6 三套工具之1
  • Unity(第二十三部)导航
  • oracle基础体系
  • 安装Docker及DockerCompose
  • LockBit病毒入侵揭秘:如何防范与应对
  • (libusb) usb口自动刷新
  • YOLO V5、SAM、RESNET50模型在GPU环境下搭建过程
  • pytorch项目代码记录
  • 【亚马逊云科技】通过Amazon CloudFront(CDN)快速访问资源
  • C++ 面试题
  • 独立游戏《星尘异变》UE5 C++程序开发日志2——创建并编写一个C++类
  • 【java-面试题】start和run的区别
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【node学习】协程
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • JS实现简单的MVC模式开发小游戏
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PAT A1017 优先队列
  • PHP变量
  • react 代码优化(一) ——事件处理
  • Spring Boot MyBatis配置多种数据库
  • windows下使用nginx调试简介
  • 初识 webpack
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端之React实战:创建跨平台的项目架构
  • 实现简单的正则表达式引擎
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 正则表达式小结
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​力扣解法汇总946-验证栈序列
  • #WEB前端(HTML属性)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (简单) HDU 2612 Find a way,BFS。
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)程序员疫苗:代码注入
  • *上位机的定义
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题