fix some script bugs (#304)

add arch linux prerequisited packages

Co-authored-by: Yao Zhao <dragonlinux@gmail.com>
This commit is contained in:
zhaoyao73 2023-07-25 10:02:42 -04:00 committed by GitHub
parent 40fe15e095
commit a30434f520
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -19,29 +19,29 @@ CHANGE_SOURCE=0
FORCE=0 FORCE=0
SAVE_CACHE=0 SAVE_CACHE=0
while true; do while true; do
if [ ! -n "$1" ]; then if [ ! -n "$1" ]; then
break break
fi fi
case "$1" in case "$1" in
"-save-cache") "-save-cache")
SAVE_CACHE=1 SAVE_CACHE=1
;; ;;
"-rebuild") "-rebuild")
echo "清除${INSTALL_POS}目录下的所有信息" echo "清除${INSTALL_POS}目录下的所有信息"
rm -rf "${INSTALL_POS}" rm -rf "${INSTALL_POS}"
;; ;;
"-kb") "-kb")
KEEP_BINUTILS=1 KEEP_BINUTILS=1
;; ;;
"-kg") "-kg")
KEEP_GCC=1 KEEP_GCC=1
;; ;;
"-cs") "-cs")
CHANGE_SOURCE=1 CHANGE_SOURCE=1
;; ;;
"-f") "-f")
FORCE=1 FORCE=1
;; ;;
"-help") "-help")
echo "脚本选项如下:" echo "脚本选项如下:"
echo "-save-cache: 保留最后的下载压缩包" echo "-save-cache: 保留最后的下载压缩包"
@ -50,12 +50,12 @@ while true; do
echo "-kb(keep-binutils): 您确保binutils已被编译安装, 本次调用脚本不重复编译安装binutils. 如果没有安装,脚本仍然会自动安装." echo "-kb(keep-binutils): 您确保binutils已被编译安装, 本次调用脚本不重复编译安装binutils. 如果没有安装,脚本仍然会自动安装."
echo "-cs(change source): 如果包含该选项, 使用清华源下载gcc和binutils. 否则默认官方源." echo "-cs(change source): 如果包含该选项, 使用清华源下载gcc和binutils. 否则默认官方源."
echo "-f(force): 如果包含该选项, 可以强制使用root权限安装在/root/目录下." echo "-f(force): 如果包含该选项, 可以强制使用root权限安装在/root/目录下."
;; ;;
*) *)
echo "不认识参数$1" echo "不认识参数$1"
;; ;;
esac esac
shift 1 shift 1
done done
# check: Don't install the gcc-toolchain in /root/* # check: Don't install the gcc-toolchain in /root/*
@ -74,16 +74,26 @@ fi
# install prerequisited # install prerequisited
# 注意texinfo和binutils的版本是否匹配 # 注意texinfo和binutils的版本是否匹配
# 注意gmp/mpc/mpfr和gcc/g++的版本是否匹配 # 注意gmp/mpc/mpfr和gcc/g++的版本是否匹配
sudo apt-get install -y \ echo "Start installing prerequisited packages"
g++ \ case `cat /etc/os-release | grep '^NAME=' | cut -d'"' -f2` in
gcc \ "Debian"* | "Ubuntu"*)
make \ sudo apt-get install -y \
texinfo \ g++ \
libgmp3-dev \ gcc \
libmpc-dev \ make \
libmpfr-dev \ texinfo \
flex \ libgmp3-dev \
wget libmpc-dev \
libmpfr-dev \
flex \
wget
;;
"Arch"*)
sudo pacman -S --needed --noconfirm gcc make flex wget texinfo libmpc gmp mpfr
;;
*)
;;
esac
# build the workspace # build the workspace
mkdir $HOME/opt mkdir $HOME/opt
@ -95,8 +105,8 @@ cd $INSTALL_POS
# compile binutils # compile binutils
BIN_UTILS="binutils-2.38" BIN_UTILS="binutils-2.38"
BIN_UTILS_TAR="${BIN_UTILS}.tar.gz" BIN_UTILS_TAR="${BIN_UTILS}.tar.gz"
if [[ ! -n "$(find $PREFIX/bin/ -name ${TARGET_LD})" && ! -n "$(find $PREFIX/bin/ -name ${TARGET_AS})" ]] || [ KEEP_BINUTILS -ne 1 ]; then if [[ ! -n "$(find $PREFIX/bin/ -name ${TARGET_LD})" && ! -n "$(find $PREFIX/bin/ -name ${TARGET_AS})" ]] || [ ${KEEP_BINUTILS} -ne 1 ]; then
if [ KEEP_BINUTILS -eq 1 ]; then if [ ${KEEP_BINUTILS} -eq 1 ]; then
echo -e "\033[35m 没有检测到 ${TARGET_LD} 或 没有检测到 ${TARGET_AS}, -kb参数无效 \033[0m" echo -e "\033[35m 没有检测到 ${TARGET_LD} 或 没有检测到 ${TARGET_AS}, -kb参数无效 \033[0m"
echo -e "\033[35m 开始安装binutils \033[0m" echo -e "\033[35m 开始安装binutils \033[0m"
sleep 1s sleep 1s
@ -104,7 +114,7 @@ if [[ ! -n "$(find $PREFIX/bin/ -name ${TARGET_LD})" && ! -n "$(find $PREFIX/bin
if [ ! -d "$BIN_UTILS" ]; then if [ ! -d "$BIN_UTILS" ]; then
if [ ! -f "$BIN_UTILS_TAR" ]; then if [ ! -f "$BIN_UTILS_TAR" ]; then
echo -e "\033[33m [提醒] 如果使用的是国外源, 下载时间可能偏久. 如果需要使用清华源, 请以输入参数-cs, 即: bash build_gcc_toolchain.sh -cs \033[0m " echo -e "\033[33m [提醒] 如果使用的是国外源, 下载时间可能偏久. 如果需要使用清华源, 请以输入参数-cs, 即: bash build_gcc_toolchain.sh -cs \033[0m "
if [ CHANGE_SOURCE ]; then if [ ${CHANGE_SOURCE} -eq 1 ]; then
# 国内源 # 国内源
wget "https://mirrors.ustc.edu.cn/gnu/binutils/${BIN_UTILS_TAR}" -P "$INSTALL_POS" wget "https://mirrors.ustc.edu.cn/gnu/binutils/${BIN_UTILS_TAR}" -P "$INSTALL_POS"
else else
@ -126,8 +136,8 @@ fi
# compile GCC # compile GCC
GCC_FILE="gcc-11.3.0" GCC_FILE="gcc-11.3.0"
GCC_FILE_TAR="${GCC_FILE}.tar.gz" GCC_FILE_TAR="${GCC_FILE}.tar.gz"
if [ ! -n "$(find $PREFIX/bin/* -name $TARGET_GCC)" ] || [ KEEP_GCC -ne 1 ]; then if [ ! -n "$(find $PREFIX/bin/* -name $TARGET_GCC)" ] || [ ${KEEP_GCC} -ne 1 ]; then
if [ KEEP_GCC -eq 1 ]; then if [ $KEEP_GCC -eq 1 ]; then
echo -e "\033[35m 没有检测到 $TARGET_GCC, -kg参数无效 \033[0m" echo -e "\033[35m 没有检测到 $TARGET_GCC, -kg参数无效 \033[0m"
echo -e "\033[35m 开始安装binutils \033[0m" echo -e "\033[35m 开始安装binutils \033[0m"
sleep 1s sleep 1s
@ -135,7 +145,7 @@ if [ ! -n "$(find $PREFIX/bin/* -name $TARGET_GCC)" ] || [ KEEP_GCC -ne 1 ]; the
if [ ! -d "$GCC_FILE" ]; then if [ ! -d "$GCC_FILE" ]; then
if [ ! -f "$GCC_FILE_TAR" ]; then if [ ! -f "$GCC_FILE_TAR" ]; then
echo -e "\033[33m [提醒] 如果使用的是国外源, 下载时间可能偏久. 如果需要使用清华源, 请以输入参数-cs, 即: bash build_gcc_toolchain.sh -cs \033[0m " echo -e "\033[33m [提醒] 如果使用的是国外源, 下载时间可能偏久. 如果需要使用清华源, 请以输入参数-cs, 即: bash build_gcc_toolchain.sh -cs \033[0m "
if [ CHANGE_SOURCE ]; then if [ ${CHANGE_SOURCE} -eq 1 ]; then
# 国内源 # 国内源
wget "https://mirrors.ustc.edu.cn/gnu/gcc/${GCC_FILE}/${GCC_FILE_TAR}" -P "$INSTALL_POS" wget "https://mirrors.ustc.edu.cn/gnu/gcc/${GCC_FILE}/${GCC_FILE_TAR}" -P "$INSTALL_POS"
else else
@ -187,4 +197,4 @@ else
echo -e "\033[31m [构建失败] 请尝试重新运行build_gcc_toolchain.sh, 或者查看输出,找到错误的原因. \033[0m" echo -e "\033[31m [构建失败] 请尝试重新运行build_gcc_toolchain.sh, 或者查看输出,找到错误的原因. \033[0m"
fi fi
cd "$current_pwd" cd "$current_pwd"