VSCodium 打包笔记
VSCodium 上游的构建过程:将 VS Code 的源码下载下来,再打上 VSCodium 的 patch。
%define
vscode_version:VS Code 的版本号。vscodium_version:VSCodium 的版本号,一般是 VS Code 的版本号加上最后一位小版本号。jsdebugcompanion_version:ms-vscode.js-debug-companion插件的版本号,可以在 VS Code 的product.json中找到。jsdebug_version:ms-vscode.js-debug插件的版本号,可以在product.json中找到。vscodejsprofiletable_version:ms-vscode.vscode-js-profile-table的版本号,可以在product.json中找到。nodeheaders_version:编译 tree-sitter 需要的 Node.js 头文件的版本号,可以通过断网构建、观察报错信息确定。electron_version:Electron 的版本号,可以在 VS Code 的.npmrc中找到。electron_riscv64_tag:riscv64 架构的 Electron 的小版本号,可以在 VSCodium 的package_linux_bin.sh中找到。cssparser_commit:依赖库css-parser的 commit hash,可以在 VS Code 的package-lock.json中找到。cssparser_url和cssparser_git_url一般不需要特别更新。
Source
需要根据上面的各个 define 更新各个 Source,如果 Electron 的版本有更新的话,还需要运行 prepare-vendor.sh 重新打包新版 RISC-V Electron 的二进制。
Patch
如果更新版本时出现 patch 错误,需要根据新版本的源码重新生成 patch。我习惯的做法是 git clone 一份源码,再 git checkout xx.xx 到新版本的 tag,修改完代码之后 git diff 生成补丁,再修改 strip level。
-
do-not-exec-git.patch:构建过程中会运行git,但是因为打包使用的 VS Code 源码不带有 Git 信息,会报错,所以需要删去运行git的相关代码。 -
use-local-vsix.patch:构建过程中会从 GitHub 下载插件,但是因为打包时无法访问 GitHub,所以需要提供对应插件的 .vsix 文件,并相应地修改打包插件的相关代码。 -
ripgrep.patch:VS Code 使用@vscode/ripgrep库调用 ripgrep,该库会从 GitHub 下载 ripgrep。所以需要删去所有对@vscode/ripgrep库的调用,并修改 ripgrep 调用的路径为/usr/bin/rg。 -
riscv64-use-local-electron.patch:riscv64 架构的 Electron 需要手动提供,需要修改打包 Electron 的相关代码。 -
use-local-cssparser.patch:本来从 GitHub 下载的依赖库css-parser需要手动提供。后续可以将补丁改为通过 sed 替换。