Skip to main content

VSCodium 打包笔记

VSCodium 上游的构建过程:将 VS Code 的源码下载下来,再打上 VSCodium 的 patch。

%define

  • vscode_version:VS Code 的版本号。
  • vscodium_version:VSCodium 的版本号,一般是 VS Code 的版本号加上最后一位小版本号。
  • jsdebugcompanion_versionms-vscode.js-debug-companion 插件的版本号,可以在 VS Code 的 product.json 中找到。
  • jsdebug_versionms-vscode.js-debug 插件的版本号,可以在 product.json 中找到。
  • vscodejsprofiletable_versionms-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_urlcssparser_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 替换。