2021-06-30 11:24:06 +03:00
|
|
|
# Build
|
|
|
|
|
|
|
|
## Table of Contents
|
|
|
|
|
|
|
|
- [Dependencies](#dependencies)
|
|
|
|
- [Linux](#dependencies-linux)
|
|
|
|
- [MacOS](#dependencies-macos)
|
|
|
|
- [Windows](#dependencies-windows)
|
|
|
|
- [Build Scripts](#build-scripts)
|
|
|
|
- [Build in Docker](#build-docker)
|
2022-06-20 11:34:50 +03:00
|
|
|
- [X64](#build-docker-x64)
|
|
|
|
- [ARM 32bits](#build-docker-arm32)
|
2022-09-05 16:19:04 +03:00
|
|
|
- [Build Snap](#build-snap)
|
2022-06-19 13:08:28 +03:00
|
|
|
- [Patch Update Process](#patch-update-process)
|
2022-06-20 11:34:50 +03:00
|
|
|
- [Semi-Automated](#patch-update-process-semiauto)
|
|
|
|
- [Manual](#patch-update-process-manual)
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
## <a id="dependencies"></a>Dependencies
|
|
|
|
|
2022-04-19 23:55:02 +03:00
|
|
|
- node 16
|
2021-06-30 11:24:06 +03:00
|
|
|
- yarn
|
|
|
|
- jq
|
2021-08-23 06:05:01 +03:00
|
|
|
- git
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
### <a id="dependencies-linux"></a>Linux
|
|
|
|
|
2021-12-13 00:08:34 +03:00
|
|
|
- GCC
|
|
|
|
- make
|
|
|
|
- pkg-config
|
2021-06-30 11:24:06 +03:00
|
|
|
- libx11-dev
|
|
|
|
- libxkbfile-dev
|
|
|
|
- libsecret-1-dev
|
|
|
|
- fakeroot
|
|
|
|
- rpm
|
2021-07-23 10:48:52 +03:00
|
|
|
- rpmbuild
|
|
|
|
- dpkg
|
2021-12-13 00:08:34 +03:00
|
|
|
- python3
|
|
|
|
- imagemagick (for AppImage)
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
### <a id="dependencies-macos"></a>MacOS
|
2023-04-03 01:09:32 +03:00
|
|
|
- imagemagick
|
|
|
|
- png2icns (`npm install png2icns -g`)
|
|
|
|
- librsvg
|
|
|
|
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
### <a id="dependencies-windows"></a>Windows
|
|
|
|
|
|
|
|
- powershell
|
|
|
|
- sed
|
2021-09-09 02:38:07 +03:00
|
|
|
- 7z
|
|
|
|
- [WiX Toolset](http://wixtoolset.org/releases/)
|
2022-05-07 10:50:30 +03:00
|
|
|
- python3
|
2021-12-13 00:08:34 +03:00
|
|
|
- 'Tools for Native Modules' from official Node.js installer
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
## <a id="build-scripts"></a>Build Scripts
|
|
|
|
|
2022-08-29 16:13:25 +03:00
|
|
|
A build helper script can be found at `build/build.sh`.
|
2021-06-30 11:24:06 +03:00
|
|
|
|
2022-08-29 16:13:25 +03:00
|
|
|
- Linux: `./build/build.sh`
|
|
|
|
- MacOS: `./build/build.sh`
|
|
|
|
- Windows: `powershell -ExecutionPolicy ByPass -File .\build\build.ps1` or `"C:\Program Files\Git\bin\bash.exe" ./build/build.sh`
|
|
|
|
|
|
|
|
### Insider
|
|
|
|
|
|
|
|
The `insider` version can be built with `./build/build.sh -i` on the `insider` branch.
|
|
|
|
|
|
|
|
You can try the lastest version with the command `./build/build.sh -il` but the patches might not be up to date.
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
## <a id="build-docker"></a>Build in Docker
|
|
|
|
|
|
|
|
To build for Linux, you can alternatively build VSCodium in docker
|
|
|
|
|
2022-06-20 11:34:50 +03:00
|
|
|
### <a id="build-docker-x64"></a>X64
|
2022-05-14 19:44:59 +03:00
|
|
|
|
2021-06-30 11:24:06 +03:00
|
|
|
Firstly, create the container with:
|
|
|
|
```
|
|
|
|
docker run -ti --volume=<local vscodium source>:/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:bionic-x64 bash
|
|
|
|
```
|
2022-08-05 14:09:02 +03:00
|
|
|
like
|
|
|
|
```
|
|
|
|
docker run -ti --volume=$(pwd):/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:bionic-x64 bash
|
|
|
|
```
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
When inside the container, you can use the following commands to build:
|
|
|
|
```
|
2022-04-19 23:55:02 +03:00
|
|
|
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
|
2021-07-26 02:15:55 +03:00
|
|
|
sudo apt-get install -y nodejs desktop-file-utils
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
npm install -g yarn
|
|
|
|
|
2022-05-14 19:44:59 +03:00
|
|
|
cd /root/vscodium
|
2021-06-30 11:24:06 +03:00
|
|
|
|
2022-08-16 23:39:08 +03:00
|
|
|
. get_repo.sh
|
2021-06-30 11:24:06 +03:00
|
|
|
|
|
|
|
export SHOULD_BUILD=yes
|
|
|
|
export OS_NAME=linux
|
|
|
|
export VSCODE_ARCH=x64
|
|
|
|
|
2022-08-16 23:39:08 +03:00
|
|
|
. build.sh
|
2021-10-28 04:37:44 +03:00
|
|
|
```
|
2022-05-14 19:44:59 +03:00
|
|
|
|
2022-06-20 11:34:50 +03:00
|
|
|
### <a id="build-docker-arm32"></a>ARM 32bits
|
2022-05-14 19:44:59 +03:00
|
|
|
|
|
|
|
Firstly, create the container with:
|
|
|
|
```
|
|
|
|
docker run -ti --volume=<local vscodium source>:/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:stretch-armhf bash
|
|
|
|
```
|
2022-08-05 14:09:02 +03:00
|
|
|
like
|
|
|
|
```
|
|
|
|
docker run -ti --volume=$(pwd):/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:stretch-armhf bash
|
|
|
|
```
|
2022-05-14 19:44:59 +03:00
|
|
|
|
|
|
|
When inside the container, you can use the following commands to build:
|
|
|
|
```
|
|
|
|
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
|
|
|
|
sudo apt-get install -y nodejs desktop-file-utils
|
|
|
|
|
|
|
|
cd /root/vscodium
|
|
|
|
|
2022-08-16 23:39:08 +03:00
|
|
|
. get_repo.sh
|
2022-05-14 19:44:59 +03:00
|
|
|
|
|
|
|
export SHOULD_BUILD=yes
|
|
|
|
export OS_NAME=linux
|
|
|
|
export VSCODE_ARCH=armhf
|
|
|
|
export npm_config_arch=armv7l
|
|
|
|
export npm_config_force_process_config="true"
|
|
|
|
|
2022-08-16 23:39:08 +03:00
|
|
|
. build.sh
|
2022-05-14 19:44:59 +03:00
|
|
|
```
|
2022-06-19 13:08:28 +03:00
|
|
|
|
2022-09-05 16:19:04 +03:00
|
|
|
## <a id="build-snap"></a>Build Snap
|
|
|
|
|
|
|
|
```
|
|
|
|
# for the stable version
|
|
|
|
cd ./stores/snapcraft/stable
|
|
|
|
|
|
|
|
# for the insider version
|
|
|
|
cd ./stores/snapcraft/insider
|
|
|
|
|
|
|
|
# create the snap
|
|
|
|
snapcraft --use-lxd
|
|
|
|
|
|
|
|
# verify the snap
|
|
|
|
review-tools.snap-review --allow-classic codium*.snap
|
|
|
|
```
|
|
|
|
|
2022-06-19 13:08:28 +03:00
|
|
|
## <a id="patch-update-process"></a>Patch Update Process
|
|
|
|
|
2022-06-20 11:34:50 +03:00
|
|
|
## <a id="patch-update-process-semiauto"></a>Semi-Automated
|
|
|
|
|
|
|
|
- run `./build/build_<os>.sh`, if a patch is failing then,
|
|
|
|
- run `./build/update_patches.sh`
|
|
|
|
- when the script pause at `Press any key when the conflict have been resolved...`, open `vscode` directory in **VSCodium**
|
|
|
|
- fix all the `*.rej` files
|
|
|
|
- run `yarn watch`
|
|
|
|
- run `./script/code.sh` until everything ok
|
|
|
|
- press any key to continue the script `update_patches.sh`
|
|
|
|
|
|
|
|
## <a id="patch-update-process-manual"></a>Manual
|
|
|
|
|
2022-06-19 13:08:28 +03:00
|
|
|
- run `./build/build_<os>.sh`, if a patch is failing then,
|
2022-06-20 11:34:50 +03:00
|
|
|
- open `vscode` directory in **VSCodium**
|
2022-06-19 13:08:28 +03:00
|
|
|
- revert all changes
|
|
|
|
- run `git apply --reject ../patches/<name>.patch`
|
|
|
|
- fix all the `*.rej` files
|
|
|
|
- run `yarn watch`
|
|
|
|
- run `./script/code.sh` until everything ok
|
|
|
|
- run `git diff > ../patches/<name>.patch`
|