kylin-code/build.sh

160 lines
4.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 脚本名称build.sh
# 描述快速构建deb脚本用于解析参数、调用命令和显示帮助。
# 作者wangpenglong
# 创建日期2024年05月10日
# 开启调试模式,显示脚本执行过程 -x;
# 开启错误处理,脚本执行出错时退出 -e;
# set -ex
set -e
VERSION="1.0.0"
AUTHOR="wangpenglong"
DATE="2024年05月10日"
# 帮助信息
help_info() {
echo "使用方法:$0 [选项]"
echo " -h, --help 显示帮助信息"
echo " -v, --version 显示脚本版本信息"
echo " -c, --clean 清空构建的文件"
echo " -r, --replace_url 替换url为内网url"
echo " -b, --build 构建软件包"
}
# 版本信息
version_info() {
echo "脚本版本:${VERSION}"
echo "作者:${AUTHOR}"
echo "创建日期:${DATE}"
}
#添加参数clean清理编译出的所有内容
function clean() {
git clean -fdx -e '*.deb' -e '*.rpm' #清除新建or添加的文件
rm -rf ../VSCode-linux-*
# git reset --hard #清除修改的文件
}
#替换url为内网url
function replace_url() {
#修改yarn.lock中地址
NPM_URL='https://registry.yarnpkg.com'
NPM_LOCAL_SEVER="http://kylinos.zz.gitea.com:3000"
for i in $(find -name yarn.lock); do
sed -i "s#${NPM_URL}#${NPM_LOCAL_SEVER}#g" $i
done
#替换calculate-deps.ts中地址
calculate_deps_files=("build/linux/debian/calculate-deps.ts" "build/linux/debian/calculate-deps.js")
dpkgShlibdepsUrl="https://raw.githubusercontent.com/chromium"
dpkgShlibdepsUrl_local="http://127.0.0.1:9099"
for calculate_deps_file in ${calculate_deps_files[@]}; do
echo "替换${calculate_deps_file}中的地址"
sed -i "s#${dpkgShlibdepsUrl}#${dpkgShlibdepsUrl_local}#g" ${calculate_deps_file}
sed -i "s/\/third_party//" ${calculate_deps_file}
done
install_sysroot_files=("build/linux/debian/install-sysroot.ts" "build/linux/debian/install-sysroot.js")
URL_PREFIX="https://msftelectron.blob.core.windows.net"
URL_PREFIX_local="http://127.0.0.1:9099"
sysrootJSONUrl="https://raw.githubusercontent.com/electron"
sysrootJSONUrl_local="http://127.0.0.1:9099/sysroots"
for install_sysroot_file in ${install_sysroot_files[@]}; do
echo "替换${install_sysroot_file}中的地址"
sed -i "s#${URL_PREFIX}#${URL_PREFIX_local}#g" ${install_sysroot_file}
sed -i "s#${sysrootJSONUrl}#${sysrootJSONUrl_local}#g" ${install_sysroot_file}
sed -i "s/https/http/g" ${install_sysroot_file}
done
echo "electron_mirror=http://127.0.0.1:9099/electron/" > .npmrc
ELECTRON_URL="https://electronjs.org"
sed -i "s#${ELECTRON_URL}#${URL_PREFIX_local}#g" .yarnrc
echo "[done] replace local url end."
}
function build(){
#start build
echo "[start] build start."
set -ex
#设置环境变量,构建软件包时,可不下载 electron二进制和 playwright browser包
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
#CHILD_CONCURRENCY 控制并行运行以构建节点模块的子进程的数量。
#将此数字设置为 1 将导致节点模块按顺序构建,这可以避免使用 node-gyp 的 Windows 上的链接器错误。
# CHILD_CONCURRENCY=1 yarn --frozen-lockfile --check-files --network-timeout 180000
# yarn --frozen-lockfile --check-files --network-timeout 180000
yarn
#关闭telemetrynode_modules也会有地址
./close_telemetry.sh
#检查
yarn monaco-compile-check
yarn valid-layers-check
#编译
yarn gulp compile-build
yarn gulp compile-extension-media
yarn gulp compile-extensions-build
#压缩代码
yarn gulp minify-vscode
yarn gulp "vscode-linux-x64-min-ci" #this will download electron,need change code.
#打包
yarn gulp "vscode-linux-x64-build-deb"
cp .build/linux/deb/*/deb/*.deb .
echo "[done] build end."
}
# 解析参数
parse_args() {
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-h|--help)
help_info
exit 0
;;
-v|--version)
version_info
exit 0
;;
-c|--clean)
clean
exit 0
;;
-r|--replace_url)
replace_url
exit 0
;;
-b|--build)
build
exit 0
;;
*)
echo "未知选项:$1"
help_info
exit 1
;;
esac
shift
done
# 没有选项时,显示帮助信息
if [ $# -eq 0 ]; then
help_info
exit 1
fi
}
# 主函数
main() {
parse_args "$@"
}
# 调用主函数
main "$@"