2024-05-10 14:02:00 +08:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
2024-07-24 14:51:53 +08:00
|
|
|
|
# 脚本名称: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}"
|
|
|
|
|
}
|
2024-05-10 14:02:00 +08:00
|
|
|
|
|
|
|
|
|
#添加参数clean,清理编译出的所有内容
|
2024-07-24 14:51:53 +08:00
|
|
|
|
function clean() {
|
2024-05-10 14:02:00 +08:00
|
|
|
|
git clean -fdx -e '*.deb' -e '*.rpm' #清除新建or添加的文件
|
2024-07-24 14:51:53 +08:00
|
|
|
|
rm -rf ../VSCode-linux-*
|
2024-05-10 14:02:00 +08:00
|
|
|
|
# git reset --hard #清除修改的文件
|
2024-07-24 14:51:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#替换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 "[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
|
|
|
|
|
|
|
|
|
|
#关闭telemetry,node_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 "$@"
|