mirror of
https://github.com/VSCodium/vscodium.git
synced 2026-04-12 00:37:19 +10:00
Compare commits
517 Commits
1.94.2.242
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4338c0d091 | ||
|
|
e9ef32366d | ||
|
|
397bef3984 | ||
|
|
48c8ddf405 | ||
|
|
0307465fec | ||
|
|
ca017a7861 | ||
|
|
d8b2d1464f | ||
|
|
4898eb90eb | ||
|
|
8077599387 | ||
|
|
2c31dca7e2 | ||
|
|
cb68d26217 | ||
|
|
43be3f1816 | ||
|
|
a1bf8e32bc | ||
|
|
5786ae0d99 | ||
|
|
5f4aa29275 | ||
|
|
d3d93691db | ||
|
|
803457343a | ||
|
|
2321c2c695 | ||
|
|
8384dd0980 | ||
|
|
e8a8565bdb | ||
|
|
414aa4862b | ||
|
|
81a5f96569 | ||
|
|
a06532dfaf | ||
|
|
b369b69597 | ||
|
|
db1eeed5b2 | ||
|
|
e49b649a19 | ||
|
|
44cb5e2073 | ||
|
|
3d7e85c307 | ||
|
|
0ff5473194 | ||
|
|
5b5008e570 | ||
|
|
c95b880148 | ||
|
|
12ee0524bf | ||
|
|
88a290aa68 | ||
|
|
e8c2ca40dd | ||
|
|
419245db4b | ||
|
|
ccd71421da | ||
|
|
1dec128c07 | ||
|
|
ccf4d751c8 | ||
|
|
34d6a7b4d5 | ||
|
|
ff5eff419c | ||
|
|
b4409deee2 | ||
|
|
5ea412eee4 | ||
|
|
55615878f9 | ||
|
|
be4746a775 | ||
|
|
15cc1eadd2 | ||
|
|
7d6f546461 | ||
|
|
cf38c857b2 | ||
|
|
eaeb6e6bb3 | ||
|
|
22a615e8ff | ||
|
|
399b022266 | ||
|
|
be3bb0ad5b | ||
|
|
6b229ed069 | ||
|
|
325e7a79e9 | ||
|
|
273901d3c2 | ||
|
|
8a26e54d3e | ||
|
|
091907f2c0 | ||
|
|
47e2863d9e | ||
|
|
91d172cd42 | ||
|
|
94f90090cb | ||
|
|
412aa78881 | ||
|
|
a199c0a529 | ||
|
|
cf437da521 | ||
|
|
e8ec5e2452 | ||
|
|
2b2bef0927 | ||
|
|
17b5b6ed50 | ||
|
|
72b795d984 | ||
|
|
71afd18e59 | ||
|
|
7d910f4077 | ||
|
|
fc8f76ad58 | ||
|
|
a5210af800 | ||
|
|
3bf7629f7a | ||
|
|
bfaa0ebd4e | ||
|
|
fe63a5a5d9 | ||
|
|
7224e53e62 | ||
|
|
962f1ac04c | ||
|
|
7656ee4017 | ||
|
|
a053a4a5c2 | ||
|
|
0079f51fe2 | ||
|
|
47c5d7d549 | ||
|
|
26fd8577a7 | ||
|
|
9931513623 | ||
|
|
de5bd6bf1f | ||
|
|
de91c92a23 | ||
|
|
c0d5246c70 | ||
|
|
63fad3ddfa | ||
|
|
d54958e349 | ||
|
|
dc3ffab8bf | ||
|
|
a80048c451 | ||
|
|
26ee7024a2 | ||
|
|
895ada1ac1 | ||
|
|
859e1f1a1c | ||
|
|
cc1a3ef5bd | ||
|
|
163fff4742 | ||
|
|
79adc487cb | ||
|
|
b69846f794 | ||
|
|
42ab5a8aa3 | ||
|
|
846096bd53 | ||
|
|
3981f5dcb8 | ||
|
|
4ecf45044e | ||
|
|
cec35aab94 | ||
|
|
6901a0ca2b | ||
|
|
ca9b356c3b | ||
|
|
8d8db1de1b | ||
|
|
53ff95933c | ||
|
|
39be6d3a95 | ||
|
|
f7de31a582 | ||
|
|
ccb2819b25 | ||
|
|
d2cdc6e515 | ||
|
|
b88fdc76f5 | ||
|
|
f2f1594771 | ||
|
|
88f558aafc | ||
|
|
11b807517c | ||
|
|
9664f9e77d | ||
|
|
5993ddb3a5 | ||
|
|
59e21c9cc6 | ||
|
|
2fccc0e2fe | ||
|
|
51ad421762 | ||
|
|
646b42473b | ||
|
|
068f270488 | ||
|
|
4ba37835b2 | ||
|
|
2487cd7ce2 | ||
|
|
75df078e52 | ||
|
|
9061e7e264 | ||
|
|
adef3f0534 | ||
|
|
dab94316d5 | ||
|
|
60b7a4640e | ||
|
|
f81d3d53ad | ||
|
|
a95e1ff14f | ||
|
|
36270ef9c3 | ||
|
|
c0ac4bd72e | ||
|
|
f60f14d085 | ||
|
|
a9167d21e2 | ||
|
|
e1f7642bcb | ||
|
|
94a6ad5495 | ||
|
|
73046b84aa | ||
|
|
22d1929f41 | ||
|
|
6264d064e4 | ||
|
|
578df58363 | ||
|
|
20382726b4 | ||
|
|
b943cab988 | ||
|
|
a69d10fa91 | ||
|
|
ac024726a3 | ||
|
|
e3c3b6fdf7 | ||
|
|
fbdc680c69 | ||
|
|
dd8511cc6b | ||
|
|
f6b143dbd6 | ||
|
|
cde9fd233a | ||
|
|
284d83b24e | ||
|
|
8cc366bb76 | ||
|
|
4c2b2b8a79 | ||
|
|
8e49f5f8b1 | ||
|
|
0ac07d6fcc | ||
|
|
bf53c50a5b | ||
|
|
d0973e3104 | ||
|
|
8e10409b4a | ||
|
|
bcd3d6bffa | ||
|
|
b3c1e8901a | ||
|
|
c2cff308aa | ||
|
|
0d1fecf0d4 | ||
|
|
5bf3fdcc05 | ||
|
|
acf298a9c2 | ||
|
|
2d9bbfb2f3 | ||
|
|
9d798626aa | ||
|
|
f574039dc4 | ||
|
|
e648323548 | ||
|
|
bc2c678d47 | ||
|
|
69fe88f58c | ||
|
|
43d4061cec | ||
|
|
471a81e89f | ||
|
|
e84017f36b | ||
|
|
e494154c9b | ||
|
|
dc302f89af | ||
|
|
0545b56f6f | ||
|
|
914f0da189 | ||
|
|
a3bf4232ba | ||
|
|
23683879d3 | ||
|
|
177bb9032d | ||
|
|
7245ccb8bd | ||
|
|
166e10c23b | ||
|
|
69fee0be29 | ||
|
|
68d5becf4d | ||
|
|
a425c2ca5d | ||
|
|
9b20ef5f08 | ||
|
|
242a448627 | ||
|
|
e298421027 | ||
|
|
51f1643852 | ||
|
|
279bb37012 | ||
|
|
2af82b8c5b | ||
|
|
930f570146 | ||
|
|
b1ee5b1428 | ||
|
|
23688ef492 | ||
|
|
fcffce5d9a | ||
|
|
3f44e3f4a3 | ||
|
|
9ffd0a3632 | ||
|
|
57832e4688 | ||
|
|
418209fe92 | ||
|
|
96af93b5de | ||
|
|
7bdf2348e1 | ||
|
|
e114e120f3 | ||
|
|
e4091b268c | ||
|
|
ed516ab087 | ||
|
|
c6eec8f00d | ||
|
|
4959ac2e25 | ||
|
|
2717404c48 | ||
|
|
ef86a20ce4 | ||
|
|
3c07d343da | ||
|
|
ae7ac2e35c | ||
|
|
29424ad4fb | ||
|
|
067a4d4e7d | ||
|
|
c31bc7e230 | ||
|
|
1d870bf372 | ||
|
|
bfdcc2257b | ||
|
|
abf3fc3fc2 | ||
|
|
5304abe421 | ||
|
|
2520a81540 | ||
|
|
4647664892 | ||
|
|
c377e8f70f | ||
|
|
fdc6d3bebc | ||
|
|
912c3f9173 | ||
|
|
0dfc93c35e | ||
|
|
6240fdfdc4 | ||
|
|
376bde0817 | ||
|
|
fe0394dea4 | ||
|
|
62554e05ac | ||
|
|
e645075872 | ||
|
|
203a782f9a | ||
|
|
2baf08383c | ||
|
|
866ffbe78e | ||
|
|
9058cdcc7d | ||
|
|
d9b77fcacc | ||
|
|
a31eb8e3dd | ||
|
|
f0ccf4ecd5 | ||
|
|
b8e20569f5 | ||
|
|
a23732caea | ||
|
|
b7b23e46c4 | ||
|
|
7be4f9ef01 | ||
|
|
7faa9a9a92 | ||
|
|
40e0612320 | ||
|
|
2b4b1ef94e | ||
|
|
a8a38988f4 | ||
|
|
19811fd824 | ||
|
|
be711f4223 | ||
|
|
0a6c00edaf | ||
|
|
f16b836998 | ||
|
|
bdee794538 | ||
|
|
dd046b275e | ||
|
|
18904d2319 | ||
|
|
f35cd2e4f9 | ||
|
|
9e38904cc5 | ||
|
|
f8462bb0a4 | ||
|
|
0fdce0c326 | ||
|
|
efd176d43d | ||
|
|
b1de0f1293 | ||
|
|
670a5ae8a6 | ||
|
|
7ef31896fd | ||
|
|
d3ac1bf13d | ||
|
|
e05bc77aff | ||
|
|
bc889a5b62 | ||
|
|
bd3f4701ad | ||
|
|
ab40f02ad6 | ||
|
|
db5536f14a | ||
|
|
61005f975b | ||
|
|
ff4a7c91a4 | ||
|
|
6931eea602 | ||
|
|
203923b6ac | ||
|
|
138b7979b4 | ||
|
|
02812dccdf | ||
|
|
dbb1e6f852 | ||
|
|
6c61163651 | ||
|
|
92b23ab7ed | ||
|
|
c7b5ab02b1 | ||
|
|
8f961b9288 | ||
|
|
8d01927a20 | ||
|
|
96d4cb9597 | ||
|
|
125e424d8d | ||
|
|
73d25f45c2 | ||
|
|
dd1773b631 | ||
|
|
892a698c11 | ||
|
|
f7f40b9f63 | ||
|
|
ec8648f4bc | ||
|
|
61a6d6c1b4 | ||
|
|
100f4c0288 | ||
|
|
5fb0752690 | ||
|
|
08ebe04167 | ||
|
|
7f17b5ca0e | ||
|
|
a64179d80b | ||
|
|
1fc99ea06a | ||
|
|
c699dfee82 | ||
|
|
68a4e26ded | ||
|
|
ab6dd4186b | ||
|
|
8884ddb324 | ||
|
|
1ce59dc161 | ||
|
|
b2ed4911fa | ||
|
|
345324bd68 | ||
|
|
a4f7e8e0e7 | ||
|
|
86336a51f4 | ||
|
|
821bc722f7 | ||
|
|
4401ea9121 | ||
|
|
8049c398bf | ||
|
|
a87892cee2 | ||
|
|
7d98a96494 | ||
|
|
fa8e51dc0d | ||
|
|
bd89e61489 | ||
|
|
1ddbacad96 | ||
|
|
479e3d8769 | ||
|
|
f30a9df3f4 | ||
|
|
f47684a94c | ||
|
|
91bb9d7184 | ||
|
|
3b764c31b7 | ||
|
|
e45f1ef420 | ||
|
|
6c5a8eb3fb | ||
|
|
bbc892183f | ||
|
|
bc47aeedce | ||
|
|
68a1ef4416 | ||
|
|
32aec3155b | ||
|
|
f9c35a6d6e | ||
|
|
c6ab439c07 | ||
|
|
e4bb5229f3 | ||
|
|
b8126f6313 | ||
|
|
83a701c025 | ||
|
|
f3959bd08b | ||
|
|
c05116e677 | ||
|
|
e93c8cd217 | ||
|
|
a9bdba172d | ||
|
|
14e40dbd37 | ||
|
|
d4b6a02c80 | ||
|
|
c6f10002f1 | ||
|
|
13633eca28 | ||
|
|
7eb89b4189 | ||
|
|
4102592509 | ||
|
|
1ed73dedda | ||
|
|
f6fc863b48 | ||
|
|
b67d4ad805 | ||
|
|
25ce08f318 | ||
|
|
ea37c213bd | ||
|
|
d285d1b68e | ||
|
|
f7ed0b2643 | ||
|
|
c8c89ba8f0 | ||
|
|
c9976ec085 | ||
|
|
b312c1742a | ||
|
|
6944a05db8 | ||
|
|
8edb591353 | ||
|
|
242452d5c9 | ||
|
|
e11db8cc6b | ||
|
|
67445281d7 | ||
|
|
0179179f72 | ||
|
|
993c7d1efa | ||
|
|
fb3d195874 | ||
|
|
1313e56599 | ||
|
|
89b4e9a712 | ||
|
|
b63c8404c3 | ||
|
|
bc784e7823 | ||
|
|
71edc8b5e2 | ||
|
|
ce9450ec98 | ||
|
|
c3ba8f9bb6 | ||
|
|
5ca1fc84d3 | ||
|
|
109d240f13 | ||
|
|
9c310cba11 | ||
|
|
addf837996 | ||
|
|
8c23c50846 | ||
|
|
336e9ce32f | ||
|
|
0af2244d05 | ||
|
|
27af1a39b3 | ||
|
|
0de1698e15 | ||
|
|
6192957778 | ||
|
|
03be485c33 | ||
|
|
b9975ba5d2 | ||
|
|
adaefe4ed5 | ||
|
|
7d6a521838 | ||
|
|
3bee276094 | ||
|
|
803289b688 | ||
|
|
2a016207cc | ||
|
|
5ef55c6c48 | ||
|
|
3150c6a9b0 | ||
|
|
ef81b3de3b | ||
|
|
05759066e3 | ||
|
|
c773d683f4 | ||
|
|
8d180a2888 | ||
|
|
b895f72f2c | ||
|
|
941e4a01a2 | ||
|
|
306c01d5cd | ||
|
|
1108d8ef70 | ||
|
|
6d7d20d5e7 | ||
|
|
30e3df2bdd | ||
|
|
a755da638b | ||
|
|
0a2efd96eb | ||
|
|
94187707d3 | ||
|
|
5094d6d12d | ||
|
|
79dfaf1991 | ||
|
|
30a637eb3f | ||
|
|
38de66d324 | ||
|
|
446d8ebc0e | ||
|
|
11f3d7c371 | ||
|
|
7fab58adba | ||
|
|
856c5e3dad | ||
|
|
624dc9436d | ||
|
|
6fdc08b665 | ||
|
|
b17a273e47 | ||
|
|
62e1bd290b | ||
|
|
a895ded49e | ||
|
|
6c79f57434 | ||
|
|
0b8e88072a | ||
|
|
d84b144ea6 | ||
|
|
b5928d7a3c | ||
|
|
50e1085c52 | ||
|
|
7bef72f48b | ||
|
|
dae0a9ebce | ||
|
|
13cedd5950 | ||
|
|
6818d7e831 | ||
|
|
2b8d91b170 | ||
|
|
092b639253 | ||
|
|
54a977bc14 | ||
|
|
097441843d | ||
|
|
e82135fa3e | ||
|
|
ddea3c8c24 | ||
|
|
fef4a9aa03 | ||
|
|
31f2fa2936 | ||
|
|
292d2783db | ||
|
|
d0d0da180d | ||
|
|
6aae07dad9 | ||
|
|
a6ae85fa52 | ||
|
|
3a9708856a | ||
|
|
52cc756ed2 | ||
|
|
1bff9fc2e9 | ||
|
|
169506fb8d | ||
|
|
91fa81be98 | ||
|
|
e53ab6ab9b | ||
|
|
5cdecc4b06 | ||
|
|
d0aed99033 | ||
|
|
33711f5a48 | ||
|
|
453b07c8c6 | ||
|
|
96905a4dec | ||
|
|
e5db309f8f | ||
|
|
e61cd2295d | ||
|
|
244841eb46 | ||
|
|
7df2a31432 | ||
|
|
93fd95feb2 | ||
|
|
7930db61b8 | ||
|
|
67fd09f6b8 | ||
|
|
573a70ede1 | ||
|
|
7ca11a2b2e | ||
|
|
8ddfccd6b8 | ||
|
|
8bcb412ec5 | ||
|
|
52601b91bf | ||
|
|
81562bbd3a | ||
|
|
1aa1ba1eba | ||
|
|
377ff77104 | ||
|
|
b9b5425af1 | ||
|
|
4317f99fc4 | ||
|
|
c4debee59f | ||
|
|
5537da3d42 | ||
|
|
e7ed2de4f8 | ||
|
|
1364ac4639 | ||
|
|
c9e2046201 | ||
|
|
e8abb85f36 | ||
|
|
023fee37a3 | ||
|
|
45927b08c7 | ||
|
|
aae1c62fe4 | ||
|
|
6cb2291016 | ||
|
|
e3a0ba975b | ||
|
|
d7e6fa1217 | ||
|
|
29779adedd | ||
|
|
d598450d02 | ||
|
|
da8a3ee91f | ||
|
|
ccec55599b | ||
|
|
5fb2dedcbd | ||
|
|
a023a24173 | ||
|
|
d736414896 | ||
|
|
1731aa55d1 | ||
|
|
cc540f9f83 | ||
|
|
fe2d6e465b | ||
|
|
77e58edfe0 | ||
|
|
2aae045dba | ||
|
|
7e79fdc303 | ||
|
|
0baf7a131d | ||
|
|
04a8a93152 | ||
|
|
820be10fd0 | ||
|
|
606a83c4c5 | ||
|
|
2b8134a202 | ||
|
|
1125a02e16 | ||
|
|
e4e4be70c9 | ||
|
|
b80aa30a35 | ||
|
|
85ce7aa131 | ||
|
|
7fbe30a3f5 | ||
|
|
9ed563921b | ||
|
|
34a8803363 | ||
|
|
33a2643e1b | ||
|
|
4418bab702 | ||
|
|
c910d1447d | ||
|
|
656d6cea58 | ||
|
|
3d2a91c693 | ||
|
|
b10b54d0be | ||
|
|
9eff6e1bc0 | ||
|
|
5db0194218 | ||
|
|
8386f6057b | ||
|
|
b4943a7ef5 | ||
|
|
773b81f25f | ||
|
|
f02532900b | ||
|
|
8aa6281b5d | ||
|
|
929efa9c89 | ||
|
|
a6cd884c37 | ||
|
|
e5d9fa5143 | ||
|
|
aa4d1fe3c9 | ||
|
|
6c5a93fd32 | ||
|
|
46b4f54548 | ||
|
|
7578449a67 | ||
|
|
95fd5b764a | ||
|
|
0489bd5ca1 | ||
|
|
cdbf4e17bd | ||
|
|
5cb1be9c61 | ||
|
|
aa340c1b5b | ||
|
|
043f1c4c60 | ||
|
|
f10855ca77 | ||
|
|
53ca646162 | ||
|
|
c6f099228b | ||
|
|
98747a7251 | ||
|
|
5d1d56247d |
1
.github/dependabot.yml
vendored
1
.github/dependabot.yml
vendored
@@ -7,5 +7,6 @@ version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
target-branch: insider
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
||||
216
.github/workflows/insider-linux.yml
vendored
216
.github/workflows/insider-linux.yml
vendored
@@ -18,6 +18,7 @@ on:
|
||||
branches: [ insider ]
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
- 'upstream/*.json'
|
||||
pull_request:
|
||||
branches: [ insider ]
|
||||
paths-ignore:
|
||||
@@ -29,7 +30,9 @@ env:
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}-insiders
|
||||
BINARY_NAME: codium-insiders
|
||||
DISABLE_UPDATE: 'yes'
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
GITHUB_BRANCH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || 'insider' }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: linux
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_QUALITY: insider
|
||||
@@ -45,7 +48,7 @@ jobs:
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -71,7 +74,7 @@ jobs:
|
||||
compile:
|
||||
needs:
|
||||
- check
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
env:
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
@@ -82,7 +85,7 @@ jobs:
|
||||
BUILD_SOURCEVERSION: ${{ env.BUILD_SOURCEVERSION }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
@@ -92,18 +95,20 @@ jobs:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
- name: Setup GCC
|
||||
uses: egor-tensin/setup-gcc@v2
|
||||
with:
|
||||
node-version: '18.17'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
version: 10
|
||||
platform: x64
|
||||
|
||||
- name: Install Yarn
|
||||
run: npm install -g yarn
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
@@ -132,7 +137,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Upload vscode artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: vscode
|
||||
path: ./vscode.tar.gz
|
||||
@@ -148,22 +153,35 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- vscode_arch: x64
|
||||
- slug: X64
|
||||
vscode_arch: x64
|
||||
npm_arch: x64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-x64
|
||||
- vscode_arch: arm64
|
||||
- slug: ARM64
|
||||
vscode_arch: arm64
|
||||
npm_arch: arm64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-arm64
|
||||
- vscode_arch: armhf
|
||||
- slug: ARM32
|
||||
vscode_arch: armhf
|
||||
npm_arch: arm
|
||||
image: vscodium/vscodium-linux-build-agent:focal-armhf
|
||||
- vscode_arch: riscv64
|
||||
- slug: RISCV64
|
||||
vscode_arch: riscv64
|
||||
npm_arch: riscv64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-riscv64
|
||||
- slug: LOONG64
|
||||
vscode_arch: loong64
|
||||
npm_arch: loong64
|
||||
image: vscodium/vscodium-linux-build-agent:crimson-loong64
|
||||
- slug: PPC64
|
||||
vscode_arch: ppc64le
|
||||
npm_arch: ppc64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-ppc64le
|
||||
container:
|
||||
image: ${{ matrix.image }}
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
DISABLED: ${{ vars[format('DISABLE_INSIDER_LINUX_APP_{0}', matrix.slug)] }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
@@ -176,19 +194,20 @@ jobs:
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Install GH
|
||||
run: ./install_gh.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
run: ./build/linux/install_gh.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
@@ -196,38 +215,41 @@ jobs:
|
||||
DISABLE_APPIMAGE: ${{ vars.DISABLE_INSIDER_APPIMAGE }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./check_tags.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Install libkrb5-dev
|
||||
run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
- name: Install dependencies
|
||||
run: ./build/linux/deps.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.npm_arch }}
|
||||
run: ./package_linux_bin.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
run: ./build/linux/package_bin.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Prepare assets
|
||||
env:
|
||||
SHOULD_BUILD_REH: 'no'
|
||||
SHOULD_BUILD_REH_WEB: 'no'
|
||||
run: ./prepare_assets.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./release.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Update versions repo
|
||||
env:
|
||||
@@ -235,37 +257,49 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./update_version.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: bin-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
retention-days: 3
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
|
||||
reh_linux:
|
||||
needs:
|
||||
- check
|
||||
- compile
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- vscode_arch: x64
|
||||
- slug: X64
|
||||
vscode_arch: x64
|
||||
npm_arch: x64
|
||||
- vscode_arch: arm64
|
||||
- slug: ARM64
|
||||
vscode_arch: arm64
|
||||
npm_arch: arm64
|
||||
- vscode_arch: armhf
|
||||
- slug: ARM32
|
||||
vscode_arch: armhf
|
||||
npm_arch: arm
|
||||
- vscode_arch: ppc64le
|
||||
- slug: PPC64
|
||||
vscode_arch: ppc64le
|
||||
npm_arch: ppc64
|
||||
- vscode_arch: riscv64
|
||||
- slug: RISCV64
|
||||
vscode_arch: riscv64
|
||||
npm_arch: riscv64
|
||||
- slug: LOONG64
|
||||
vscode_arch: loong64
|
||||
npm_arch: loong64
|
||||
- slug: S390X
|
||||
vscode_arch: s390x
|
||||
npm_arch: s390x
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
DISABLED: ${{ vars[format('DISABLE_INSIDER_LINUX_REH_{0}', matrix.slug)] }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
@@ -275,81 +309,97 @@ jobs:
|
||||
if: needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Setup GCC
|
||||
uses: egor-tensin/setup-gcc@v2
|
||||
with:
|
||||
version: 10
|
||||
platform: x64
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '18.17'
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Install libkrb5-dev
|
||||
run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Install GH
|
||||
run: ./install_gh.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
run: ./build/linux/install_gh.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CHECK_ONLY_REH: 'yes'
|
||||
run: ./check_tags.sh
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.npm_arch }}
|
||||
run: ./package_linux_reh.sh
|
||||
if: env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
run: ./build/linux/package_reh.sh
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./release.sh
|
||||
if: (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no')
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: reh-linux-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
retention-days: 3
|
||||
if: env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
|
||||
reh_alpine:
|
||||
needs:
|
||||
- check
|
||||
- compile
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- vscode_arch: x64
|
||||
- slug: X64
|
||||
vscode_arch: x64
|
||||
npm_arch: x64
|
||||
- vscode_arch: arm64
|
||||
- slug: ARM64
|
||||
vscode_arch: arm64
|
||||
npm_arch: arm64
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
DISABLED: ${{ vars[format('DISABLE_INSIDER_ALPINE_REH_{0}', matrix.slug)] }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
OS_NAME: alpine
|
||||
@@ -360,7 +410,7 @@ jobs:
|
||||
if: needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -369,8 +419,19 @@ jobs:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
- name: Setup GCC
|
||||
uses: egor-tensin/setup-gcc@v2
|
||||
with:
|
||||
version: 10
|
||||
platform: x64
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install GH
|
||||
run: ./install_gh.sh
|
||||
run: ./build/linux/install_gh.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
@@ -384,32 +445,32 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD_REH != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.npm_arch }}
|
||||
run: ./package_alpine_reh.sh
|
||||
if: env.SHOULD_BUILD_REH != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
run: ./build/alpine/package_reh.sh
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./release.sh
|
||||
if: env.SHOULD_BUILD_REH != 'no' && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no')
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: reh-alpine-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
retention-days: 3
|
||||
if: env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
|
||||
aur:
|
||||
needs:
|
||||
@@ -453,10 +514,10 @@ jobs:
|
||||
platform:
|
||||
- amd64
|
||||
- arm64
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && vars.DISABLE_INSIDER_SNAP != 'yes'
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && needs.check.outputs.SHOULD_BUILD_SNAP != 'no' && vars.DISABLE_INSIDER_SNAP != 'yes'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -465,7 +526,7 @@ jobs:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
- uses: docker/setup-qemu-action@v3
|
||||
- uses: docker/setup-qemu-action@v4
|
||||
|
||||
- uses: diddlesnaps/snapcraft-multiarch-action@v1
|
||||
with:
|
||||
@@ -473,10 +534,10 @@ jobs:
|
||||
architecture: ${{ matrix.platform }}
|
||||
id: build
|
||||
|
||||
- uses: diddlesnaps/snapcraft-review-action@v1
|
||||
with:
|
||||
snap: ${{ steps.build.outputs.snap }}
|
||||
isClassic: 'true'
|
||||
# - uses: diddlesnaps/snapcraft-review-action@v1
|
||||
# with:
|
||||
# snap: ${{ steps.build.outputs.snap }}
|
||||
# isClassic: 'true'
|
||||
|
||||
- uses: svenstaro/upload-release-action@v2
|
||||
with:
|
||||
@@ -484,3 +545,18 @@ jobs:
|
||||
repo_token: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
file: ${{ steps.build.outputs.snap }}
|
||||
tag: ${{ env.RELEASE_VERSION }}
|
||||
|
||||
deploy-repo-dev:
|
||||
needs:
|
||||
- check
|
||||
- build
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && github.event.inputs.generate_assets != 'true'
|
||||
|
||||
steps:
|
||||
- name: Trigger repository rebuild
|
||||
uses: peter-evans/repository-dispatch@v4
|
||||
with:
|
||||
token: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
repository: VSCodium/repositories-linux
|
||||
event-type: deploy
|
||||
|
||||
17
.github/workflows/insider-macos.yml
vendored
17
.github/workflows/insider-macos.yml
vendored
@@ -18,6 +18,7 @@ on:
|
||||
branches: [ insider ]
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
- 'upstream/*.json'
|
||||
pull_request:
|
||||
branches: [ insider ]
|
||||
paths-ignore:
|
||||
@@ -26,7 +27,10 @@ on:
|
||||
env:
|
||||
APP_NAME: VSCodium
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}-insiders
|
||||
BINARY_NAME: codium-insiders
|
||||
GITHUB_BRANCH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || 'insider' }}
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: osx
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_QUALITY: insider
|
||||
@@ -40,14 +44,13 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runner: macos-12
|
||||
- runner: macos-15-intel
|
||||
vscode_arch: x64
|
||||
# - runner: macos-14
|
||||
- runner: [self-hosted, macOS, ARM64]
|
||||
vscode_arch: arm64
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -57,12 +60,12 @@ jobs:
|
||||
run: . get_pr.sh
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20.12'
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.VSCODE_ARCH == 'x64'
|
||||
@@ -113,7 +116,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: bin-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
|
||||
41
.github/workflows/insider-spearhead.yml
vendored
41
.github/workflows/insider-spearhead.yml
vendored
@@ -20,25 +20,29 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-14
|
||||
runs-on: macos-15
|
||||
env:
|
||||
APP_NAME: VSCodium
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}-insiders
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
BINARY_NAME: codium-insiders
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: osx
|
||||
SOURCEMAPS_REPOSITORY: ${{ github.repository_owner }}/sourcemaps
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_ARCH: arm64
|
||||
VSCODE_LATEST: ${{ github.event.inputs.dont_update == 'true' && 'no' || 'yes' }}
|
||||
VSCODE_QUALITY: insider
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: insider
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20.12'
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: . get_repo.sh
|
||||
@@ -56,17 +60,30 @@ jobs:
|
||||
run: ./build.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Update <quality>.json
|
||||
run: ./update_qualityjson.sh
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
- name: Import GPG key
|
||||
uses: crazy-max/ghaction-import-gpg@v7
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
||||
git_user_signingkey: true
|
||||
git_commit_gpgsign: true
|
||||
if: env.SHOULD_BUILD == 'yes' && github.event.inputs.dont_update != 'true'
|
||||
|
||||
- name: Update upstream version
|
||||
run: ./update_upstream.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && github.event.inputs.dont_update != 'true'
|
||||
|
||||
- name: Prepare source
|
||||
run: ./prepare_src.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Upload sourcemaps
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./upload_sourcemaps.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Release source
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
@@ -75,7 +92,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Dispatch builds
|
||||
uses: peter-evans/repository-dispatch@v3
|
||||
uses: peter-evans/repository-dispatch@v4
|
||||
with:
|
||||
event-type: 'insider'
|
||||
event-type: insider
|
||||
if: github.event.inputs.dont_dispatch != 'true' && (env.SHOULD_BUILD == 'yes' || github.event.inputs.force_dispatch == 'true')
|
||||
|
||||
217
.github/workflows/insider-windows.yml
vendored
217
.github/workflows/insider-windows.yml
vendored
@@ -18,6 +18,7 @@ on:
|
||||
branches: [ insider ]
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
- 'upstream/*.json'
|
||||
pull_request:
|
||||
branches: [ insider ]
|
||||
paths-ignore:
|
||||
@@ -26,32 +27,26 @@ on:
|
||||
env:
|
||||
APP_NAME: VSCodium
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}-insiders
|
||||
BINARY_NAME: codium-insiders
|
||||
GITHUB_BRANCH: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || 'insider' }}
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: windows
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_QUALITY: insider
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-2019
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
VSCODE_ARCH: ${{ matrix.vscode_arch }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vscode_arch:
|
||||
- x64
|
||||
# - ia32
|
||||
- arm64
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
MS_COMMIT: ${{ env.MS_COMMIT }}
|
||||
MS_TAG: ${{ env.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ env.RELEASE_VERSION }}
|
||||
SHOULD_BUILD: ${{ env.SHOULD_BUILD }}
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -60,19 +55,6 @@ jobs:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20.12'
|
||||
|
||||
- name: Install Yarn
|
||||
run: npm install -g yarn
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: ./get_repo.sh
|
||||
|
||||
@@ -84,21 +66,190 @@ jobs:
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CHECK_ALL: 'yes'
|
||||
run: ./check_tags.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true'
|
||||
|
||||
compile:
|
||||
needs:
|
||||
- check
|
||||
runs-on: windows-2022
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
SHOULD_BUILD: ${{ (needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true') && 'yes' || 'no' }}
|
||||
VSCODE_ARCH: 'x64'
|
||||
outputs:
|
||||
BUILD_SOURCEVERSION: ${{ env.BUILD_SOURCEVERSION }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
# - name: Setup GCC
|
||||
# uses: egor-tensin/setup-gcc@v1
|
||||
# with:
|
||||
# version: 10
|
||||
# platform: x64
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
# - name: Install libkrb5-dev
|
||||
# run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev
|
||||
# if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: ./get_repo.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
SHOULD_BUILD_REH: 'no'
|
||||
SHOULD_BUILD_REH_WEB: 'no'
|
||||
run: ./build.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Compress vscode artifact
|
||||
run: |
|
||||
find vscode -type f -not -path "*/node_modules/*" -not -path "vscode/.build/node/*" -not -path "vscode/.git/*" > vscode.txt
|
||||
echo "vscode/.build/extensions/node_modules" >> vscode.txt
|
||||
echo "vscode/.git" >> vscode.txt
|
||||
tar -czf vscode.tar.gz -T vscode.txt
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Upload vscode artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: vscode
|
||||
path: ./vscode.tar.gz
|
||||
retention-days: ${{ needs.check.outputs.SHOULD_DEPLOY == 'yes' && 30 || 1 }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
build:
|
||||
needs:
|
||||
- check
|
||||
- compile
|
||||
runs-on: windows-2022
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vscode_arch:
|
||||
- x64
|
||||
- arm64
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
SHOULD_BUILD: ${{ (needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true') && 'yes' || 'no' }}
|
||||
SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }}
|
||||
VSCODE_ARCH: ${{ matrix.vscode_arch }}
|
||||
outputs:
|
||||
RELEASE_VERSION: ${{ env.RELEASE_VERSION }}
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
DISABLE_MSI: ${{ vars.DISABLE_INSIDER_MSI }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./check_tags.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.vscode_arch }}
|
||||
npm_config_target_arch: ${{ matrix.vscode_arch }}
|
||||
run: ./build.sh
|
||||
run: ./build/windows/package.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Prepare assets
|
||||
run: ./prepare_assets.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Upload unsigned artifacts
|
||||
id: upload-unsigned-artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: unsigned-${{ matrix.vscode_arch }}
|
||||
path: |
|
||||
assets/*.exe
|
||||
assets/*.msi
|
||||
retention-days: 1
|
||||
if: env.SHOULD_BUILD == 'yes' && vars.DISABLE_INSIDER_WINDOWS_SIGNING != 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Signing
|
||||
uses: signpath/github-action-submit-signing-request@v2
|
||||
with:
|
||||
api-token: ${{ secrets.SIGNPATH_API_TOKEN }}
|
||||
organization-id: ${{ secrets.SIGNPATH_ORGANIZATION_ID }}
|
||||
project-slug: ${{ secrets.SIGNPATH_PROJECT_SLUG }}
|
||||
signing-policy-slug: ${{ secrets.SIGNPATH_POLICY_SLUG }}
|
||||
github-artifact-id: ${{ steps.upload-unsigned-artifacts.outputs.artifact-id }}
|
||||
artifact-configuration-slug: ${{ matrix.vscode_arch }}
|
||||
wait-for-completion: true
|
||||
# 3h to manually approve the request
|
||||
wait-for-completion-timeout-in-seconds: 10800
|
||||
output-artifact-directory: assets/
|
||||
if: env.SHOULD_BUILD == 'yes' && vars.DISABLE_INSIDER_WINDOWS_SIGNING != 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Prepare checksums
|
||||
run: ./prepare_checksums.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
@@ -115,7 +266,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: bin-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
@@ -124,7 +275,7 @@ jobs:
|
||||
|
||||
winget:
|
||||
needs: build
|
||||
runs-on: windows-latest
|
||||
runs-on: windows-2022
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
@@ -134,7 +285,7 @@ jobs:
|
||||
if: needs.build.outputs.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
|
||||
5
.github/workflows/lock.yml
vendored
5
.github/workflows/lock.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: Lock Issues
|
||||
name: Lock Closed Threads
|
||||
|
||||
on:
|
||||
schedule:
|
||||
@@ -8,9 +8,10 @@ jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v5
|
||||
- uses: dessant/lock-threads@v6
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-inactive-days: '90'
|
||||
pr-inactive-days: '90'
|
||||
discussion-inactive-days: '90'
|
||||
log-output: true
|
||||
|
||||
226
.github/workflows/stable-linux.yml
vendored
226
.github/workflows/stable-linux.yml
vendored
@@ -9,6 +9,9 @@ on:
|
||||
generate_assets:
|
||||
type: boolean
|
||||
description: Generate assets
|
||||
force_snap:
|
||||
type: boolean
|
||||
description: Force Snap
|
||||
checkout_pr:
|
||||
type: string
|
||||
description: Checkout PR
|
||||
@@ -18,6 +21,7 @@ on:
|
||||
branches: [ master ]
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
- 'upstream/*.json'
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths-ignore:
|
||||
@@ -29,6 +33,8 @@ env:
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}
|
||||
BINARY_NAME: codium
|
||||
DISABLE_UPDATE: 'yes'
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: linux
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_QUALITY: stable
|
||||
@@ -44,7 +50,7 @@ jobs:
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -65,12 +71,13 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CHECK_ALL: 'yes'
|
||||
FORCE_LINUX_SNAP: ${{ github.event.inputs.force_snap }}
|
||||
run: ./check_tags.sh
|
||||
|
||||
compile:
|
||||
needs:
|
||||
- check
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
env:
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
@@ -81,7 +88,7 @@ jobs:
|
||||
BUILD_SOURCEVERSION: ${{ env.BUILD_SOURCEVERSION }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
@@ -90,19 +97,23 @@ jobs:
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18.17'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Install Yarn
|
||||
run: npm install -g yarn
|
||||
- name: Setup GCC
|
||||
uses: egor-tensin/setup-gcc@v2
|
||||
with:
|
||||
version: 10
|
||||
platform: x64
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
@@ -131,7 +142,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Upload vscode artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: vscode
|
||||
path: ./vscode.tar.gz
|
||||
@@ -147,22 +158,35 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- vscode_arch: x64
|
||||
- slug: X64
|
||||
vscode_arch: x64
|
||||
npm_arch: x64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-x64
|
||||
- vscode_arch: arm64
|
||||
- slug: ARM64
|
||||
vscode_arch: arm64
|
||||
npm_arch: arm64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-arm64
|
||||
- vscode_arch: armhf
|
||||
- slug: ARM32
|
||||
vscode_arch: armhf
|
||||
npm_arch: arm
|
||||
image: vscodium/vscodium-linux-build-agent:focal-armhf
|
||||
- vscode_arch: riscv64
|
||||
- slug: RISCV64
|
||||
vscode_arch: riscv64
|
||||
npm_arch: riscv64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-riscv64
|
||||
- slug: LOONG64
|
||||
vscode_arch: loong64
|
||||
npm_arch: loong64
|
||||
image: vscodium/vscodium-linux-build-agent:crimson-loong64
|
||||
- slug: PPC64
|
||||
vscode_arch: ppc64le
|
||||
npm_arch: ppc64
|
||||
image: vscodium/vscodium-linux-build-agent:focal-ppc64le
|
||||
container:
|
||||
image: ${{ matrix.image }}
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
DISABLED: ${{ vars[format('DISABLE_STABLE_LINUX_APP_{0}', matrix.slug)] }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
@@ -175,19 +199,20 @@ jobs:
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Install GH
|
||||
run: ./install_gh.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
run: ./build/linux/install_gh.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
@@ -195,38 +220,41 @@ jobs:
|
||||
DISABLE_APPIMAGE: ${{ vars.DISABLE_STABLE_APPIMAGE }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./check_tags.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Install libkrb5-dev
|
||||
run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
- name: Install dependencies
|
||||
run: ./build/linux/deps.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.npm_arch }}
|
||||
run: ./package_linux_bin.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
run: ./build/linux/package_bin.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Prepare assets
|
||||
env:
|
||||
SHOULD_BUILD_REH: 'no'
|
||||
SHOULD_BUILD_REH_WEB: 'no'
|
||||
run: ./prepare_assets.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./release.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Update versions repo
|
||||
env:
|
||||
@@ -234,37 +262,49 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./update_version.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: bin-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
retention-days: 3
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
|
||||
reh_linux:
|
||||
needs:
|
||||
- check
|
||||
- compile
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- vscode_arch: x64
|
||||
- slug: X64
|
||||
vscode_arch: x64
|
||||
npm_arch: x64
|
||||
- vscode_arch: arm64
|
||||
- slug: ARM64
|
||||
vscode_arch: arm64
|
||||
npm_arch: arm64
|
||||
- vscode_arch: armhf
|
||||
- slug: ARM32
|
||||
vscode_arch: armhf
|
||||
npm_arch: arm
|
||||
- vscode_arch: ppc64le
|
||||
- slug: PPC64
|
||||
vscode_arch: ppc64le
|
||||
npm_arch: ppc64
|
||||
- vscode_arch: riscv64
|
||||
- slug: RISCV64
|
||||
vscode_arch: riscv64
|
||||
npm_arch: riscv64
|
||||
- slug: LOONG64
|
||||
vscode_arch: loong64
|
||||
npm_arch: loong64
|
||||
- slug: S390X
|
||||
vscode_arch: s390x
|
||||
npm_arch: s390x
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
DISABLED: ${{ vars[format('DISABLE_STABLE_LINUX_REH_{0}', matrix.slug)] }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
@@ -274,81 +314,97 @@ jobs:
|
||||
if: needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Setup GCC
|
||||
uses: egor-tensin/setup-gcc@v2
|
||||
with:
|
||||
version: 10
|
||||
platform: x64
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '18.17'
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Install libkrb5-dev
|
||||
run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Install GH
|
||||
run: ./install_gh.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
run: ./build/linux/install_gh.sh
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CHECK_ONLY_REH: 'yes'
|
||||
run: ./check_tags.sh
|
||||
if: env.DISABLED != 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.npm_arch }}
|
||||
run: ./package_linux_reh.sh
|
||||
if: env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
run: ./build/linux/package_reh.sh
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./release.sh
|
||||
if: (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no') && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no')
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: reh-linux-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
retention-days: 3
|
||||
if: env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
|
||||
reh_alpine:
|
||||
needs:
|
||||
- check
|
||||
- compile
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- vscode_arch: x64
|
||||
- slug: X64
|
||||
vscode_arch: x64
|
||||
npm_arch: x64
|
||||
- vscode_arch: arm64
|
||||
- slug: ARM64
|
||||
vscode_arch: arm64
|
||||
npm_arch: arm64
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
DISABLED: ${{ vars[format('DISABLE_STABLE_ALPINE_REH_{0}', matrix.slug)] }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
OS_NAME: alpine
|
||||
@@ -359,7 +415,7 @@ jobs:
|
||||
if: needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -368,8 +424,19 @@ jobs:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
- name: Setup GCC
|
||||
uses: egor-tensin/setup-gcc@v2
|
||||
with:
|
||||
version: 10
|
||||
platform: x64
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install GH
|
||||
run: ./install_gh.sh
|
||||
run: ./build/linux/install_gh.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
@@ -383,32 +450,32 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD_REH != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.npm_arch }}
|
||||
run: ./package_alpine_reh.sh
|
||||
if: env.SHOULD_BUILD_REH != 'no' || github.event.inputs.generate_assets == 'true'
|
||||
run: ./build/alpine/package_reh.sh
|
||||
if: env.DISABLED != 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./release.sh
|
||||
if: env.SHOULD_BUILD_REH != 'no' && env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'yes' && (env.SHOULD_BUILD_REH != 'no' || env.SHOULD_BUILD_REH_WEB != 'no')
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: reh-alpine-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
retention-days: 3
|
||||
if: env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
if: env.DISABLED != 'yes' && env.SHOULD_DEPLOY == 'no' && github.event.inputs.generate_assets == 'true'
|
||||
|
||||
aur:
|
||||
needs:
|
||||
@@ -421,8 +488,8 @@ jobs:
|
||||
include:
|
||||
- package_name: vscodium
|
||||
package_type: stable
|
||||
- package_name: vscodium-git
|
||||
package_type: rolling
|
||||
# - package_name: vscodium-git
|
||||
# package_type: rolling
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
steps:
|
||||
@@ -443,16 +510,17 @@ jobs:
|
||||
env:
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
SNAP_NAME: codium
|
||||
SNAP_PUBLISHER: vscodium
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform:
|
||||
- amd64
|
||||
- arm64
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && vars.DISABLE_STABLE_SNAP != 'yes'
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && needs.check.outputs.SHOULD_BUILD_SNAP != 'no' && vars.DISABLE_STABLE_SNAP != 'yes'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -465,10 +533,11 @@ jobs:
|
||||
env:
|
||||
ARCHITECTURE: ${{ matrix.platform }}
|
||||
GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }}
|
||||
SNAPCRAFT_STORE_CHANNEL: ${{ vars.SNAP_STORE_CHANNEL }}
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_STORE_LOGIN }}
|
||||
run: ./stores/snapcraft/check_version.sh
|
||||
|
||||
- uses: docker/setup-qemu-action@v3
|
||||
- uses: docker/setup-qemu-action@v4
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- uses: diddlesnaps/snapcraft-multiarch-action@v1
|
||||
@@ -500,15 +569,30 @@ jobs:
|
||||
release: ${{ vars.SNAP_STORE_CHANNEL }}
|
||||
if: env.SHOULD_DEPLOY_TO_STORE == 'yes'
|
||||
|
||||
deb-rpm-repo-hook:
|
||||
deploy-repo-rudy:
|
||||
needs:
|
||||
- check
|
||||
- build
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes'
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && github.event.inputs.generate_assets != 'true'
|
||||
|
||||
steps:
|
||||
- name: Trigger repository rebuild
|
||||
env:
|
||||
GL_PAGES_TOKEN: ${{ secrets.GL_PAGES_TOKEN }}
|
||||
run: curl -X POST --fail -F token="${GL_PAGES_TOKEN}" -F ref=master https://gitlab.com/api/v4/projects/8762263/trigger/pipeline
|
||||
|
||||
deploy-repo-dev:
|
||||
needs:
|
||||
- check
|
||||
- build
|
||||
runs-on: ubuntu-latest
|
||||
if: needs.check.outputs.SHOULD_DEPLOY == 'yes' && github.event.inputs.generate_assets != 'true'
|
||||
|
||||
steps:
|
||||
- name: Trigger repository rebuild
|
||||
uses: peter-evans/repository-dispatch@v4
|
||||
with:
|
||||
token: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
repository: VSCodium/repositories-linux
|
||||
event-type: deploy
|
||||
|
||||
17
.github/workflows/stable-macos.yml
vendored
17
.github/workflows/stable-macos.yml
vendored
@@ -18,6 +18,7 @@ on:
|
||||
branches: [ master ]
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
- 'upstream/*.json'
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths-ignore:
|
||||
@@ -26,6 +27,9 @@ on:
|
||||
env:
|
||||
APP_NAME: VSCodium
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}
|
||||
BINARY_NAME: codium
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: osx
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_QUALITY: stable
|
||||
@@ -39,14 +43,13 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runner: macos-12
|
||||
- runner: macos-15-intel
|
||||
vscode_arch: x64
|
||||
# - runner: macos-14
|
||||
- runner: [self-hosted, macOS, ARM64]
|
||||
vscode_arch: arm64
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -56,12 +59,12 @@ jobs:
|
||||
run: . get_pr.sh
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20.12'
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.VSCODE_ARCH == 'x64'
|
||||
@@ -111,7 +114,7 @@ jobs:
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: bin-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
|
||||
41
.github/workflows/stable-spearhead.yml
vendored
41
.github/workflows/stable-spearhead.yml
vendored
@@ -17,23 +17,27 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-14
|
||||
runs-on: macos-15
|
||||
env:
|
||||
APP_NAME: VSCodium
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
BINARY_NAME: codium
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: osx
|
||||
SOURCEMAPS_REPOSITORY: ${{ github.repository_owner }}/sourcemaps
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_ARCH: arm64
|
||||
VSCODE_LATEST: ${{ github.event.inputs.dont_update == 'true' && 'no' || 'yes' }}
|
||||
VSCODE_QUALITY: stable
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20.12'
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: . get_repo.sh
|
||||
@@ -51,17 +55,30 @@ jobs:
|
||||
run: ./build.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Update <quality>.json
|
||||
run: ./update_qualityjson.sh
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
- name: Import GPG key
|
||||
uses: crazy-max/ghaction-import-gpg@v7
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
||||
git_user_signingkey: true
|
||||
git_commit_gpgsign: true
|
||||
if: env.SHOULD_BUILD == 'yes' && github.event.inputs.dont_update != 'true'
|
||||
|
||||
- name: Update upstream version
|
||||
run: ./update_upstream.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && github.event.inputs.dont_update != 'true'
|
||||
|
||||
- name: Prepare source
|
||||
run: ./prepare_src.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Upload sourcemaps
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./upload_sourcemaps.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Release source
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
@@ -70,7 +87,7 @@ jobs:
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Dispatch builds
|
||||
uses: peter-evans/repository-dispatch@v3
|
||||
uses: peter-evans/repository-dispatch@v4
|
||||
with:
|
||||
event-type: 'stable'
|
||||
event-type: stable
|
||||
if: env.SHOULD_BUILD == 'yes' || github.event.inputs.force_dispatch == 'true'
|
||||
|
||||
220
.github/workflows/stable-windows.yml
vendored
220
.github/workflows/stable-windows.yml
vendored
@@ -18,6 +18,7 @@ on:
|
||||
branches: [ master ]
|
||||
paths-ignore:
|
||||
- '**/*.md'
|
||||
- 'upstream/*.json'
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths-ignore:
|
||||
@@ -26,32 +27,25 @@ on:
|
||||
env:
|
||||
APP_NAME: VSCodium
|
||||
ASSETS_REPOSITORY: ${{ github.repository }}
|
||||
BINARY_NAME: codium
|
||||
GH_REPO_PATH: ${{ github.repository }}
|
||||
ORG_NAME: ${{ github.repository_owner }}
|
||||
OS_NAME: windows
|
||||
VERSIONS_REPOSITORY: ${{ github.repository_owner }}/versions
|
||||
VSCODE_QUALITY: stable
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-2019
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
VSCODE_ARCH: ${{ matrix.vscode_arch }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vscode_arch:
|
||||
- x64
|
||||
# - ia32
|
||||
- arm64
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
MS_COMMIT: ${{ env.MS_COMMIT }}
|
||||
MS_TAG: ${{ env.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ env.RELEASE_VERSION }}
|
||||
SHOULD_BUILD: ${{ env.SHOULD_BUILD }}
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
@@ -60,19 +54,6 @@ jobs:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20.12'
|
||||
|
||||
- name: Install Yarn
|
||||
run: npm install -g yarn
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: ./get_repo.sh
|
||||
|
||||
@@ -84,21 +65,190 @@ jobs:
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CHECK_ALL: 'yes'
|
||||
run: ./check_tags.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true'
|
||||
|
||||
compile:
|
||||
needs:
|
||||
- check
|
||||
runs-on: windows-2022
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
SHOULD_BUILD: ${{ (needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true') && 'yes' || 'no' }}
|
||||
VSCODE_ARCH: 'x64'
|
||||
outputs:
|
||||
BUILD_SOURCEVERSION: ${{ env.BUILD_SOURCEVERSION }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
|
||||
# - name: Setup GCC
|
||||
# uses: egor-tensin/setup-gcc@v1
|
||||
# with:
|
||||
# version: 10
|
||||
# platform: x64
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
# - name: Install libkrb5-dev
|
||||
# run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev
|
||||
# if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Clone VSCode repo
|
||||
run: ./get_repo.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
SHOULD_BUILD_REH: 'no'
|
||||
SHOULD_BUILD_REH_WEB: 'no'
|
||||
run: ./build.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Compress vscode artifact
|
||||
run: |
|
||||
find vscode -type f -not -path "*/node_modules/*" -not -path "vscode/.build/node/*" -not -path "vscode/.git/*" > vscode.txt
|
||||
echo "vscode/.build/extensions/node_modules" >> vscode.txt
|
||||
echo "vscode/.git" >> vscode.txt
|
||||
tar -czf vscode.tar.gz -T vscode.txt
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Upload vscode artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: vscode
|
||||
path: ./vscode.tar.gz
|
||||
retention-days: ${{ needs.check.outputs.SHOULD_DEPLOY == 'yes' && 30 || 1 }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
build:
|
||||
needs:
|
||||
- check
|
||||
- compile
|
||||
runs-on: windows-2022
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vscode_arch:
|
||||
- x64
|
||||
- arm64
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }}
|
||||
MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }}
|
||||
MS_TAG: ${{ needs.check.outputs.MS_TAG }}
|
||||
RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }}
|
||||
SHOULD_BUILD: ${{ (needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true') && 'yes' || 'no' }}
|
||||
SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }}
|
||||
VSCODE_ARCH: ${{ matrix.vscode_arch }}
|
||||
outputs:
|
||||
RELEASE_VERSION: ${{ env.RELEASE_VERSION }}
|
||||
SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Switch to relevant branch
|
||||
env:
|
||||
PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }}
|
||||
run: ./get_pr.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Setup Python 3
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.11'
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Check existing VSCodium tags/releases
|
||||
env:
|
||||
DISABLE_MSI: ${{ vars.DISABLE_STABLE_MSI }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: ./check_tags.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Download vscode artifact
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: vscode
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
npm_config_arch: ${{ matrix.vscode_arch }}
|
||||
npm_config_target_arch: ${{ matrix.vscode_arch }}
|
||||
run: ./build.sh
|
||||
run: ./build/windows/package.sh
|
||||
if: env.SHOULD_BUILD == 'yes'
|
||||
|
||||
- name: Prepare assets
|
||||
run: ./prepare_assets.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Upload unsigned artifacts
|
||||
id: upload-unsigned-artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: unsigned-${{ matrix.vscode_arch }}
|
||||
path: |
|
||||
assets/*.exe
|
||||
assets/*.msi
|
||||
retention-days: 1
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Signing
|
||||
uses: signpath/github-action-submit-signing-request@v2
|
||||
with:
|
||||
api-token: ${{ secrets.SIGNPATH_API_TOKEN }}
|
||||
organization-id: ${{ secrets.SIGNPATH_ORGANIZATION_ID }}
|
||||
project-slug: ${{ secrets.SIGNPATH_PROJECT_SLUG }}
|
||||
signing-policy-slug: ${{ secrets.SIGNPATH_POLICY_SLUG }}
|
||||
github-artifact-id: ${{ steps.upload-unsigned-artifacts.outputs.artifact-id }}
|
||||
artifact-configuration-slug: ${{ matrix.vscode_arch }}
|
||||
wait-for-completion: true
|
||||
# 8h to manually approve the request
|
||||
wait-for-completion-timeout-in-seconds: 28800
|
||||
output-artifact-directory: assets/
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Prepare checksums
|
||||
run: ./prepare_checksums.sh
|
||||
if: env.SHOULD_BUILD == 'yes' && (env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true')
|
||||
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -111,10 +261,10 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
|
||||
GITHUB_USERNAME: ${{ github.repository_owner }}
|
||||
run: ./update_version.sh
|
||||
if: env.SHOULD_DEPLOY == 'yes'
|
||||
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
- name: Upload assets
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: bin-${{ matrix.vscode_arch }}
|
||||
path: assets/
|
||||
@@ -123,7 +273,7 @@ jobs:
|
||||
|
||||
winget:
|
||||
needs: build
|
||||
runs-on: windows-latest
|
||||
runs-on: windows-2022
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
@@ -132,7 +282,7 @@ jobs:
|
||||
if: needs.build.outputs.SHOULD_DEPLOY == 'yes'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: ${{ env.GITHUB_BRANCH }}
|
||||
|
||||
|
||||
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v9
|
||||
- uses: actions/stale@v10
|
||||
with:
|
||||
days-before-stale: 180
|
||||
days-before-close: 30
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -14,5 +14,8 @@ build/linux/appimage/VSCodium
|
||||
build/windows/msi/releasedir
|
||||
build/windows/msi/Files*.wxs
|
||||
build/windows/msi/Files*.wixobj
|
||||
sourcemaps/
|
||||
stores/snapcraft/insider/*.snap
|
||||
stores/snapcraft/stable/*.snap
|
||||
font-size/node_modules/
|
||||
font-size/generate-css.js
|
||||
|
||||
@@ -34,9 +34,9 @@ If you want to update the existing patches, please follow the section [`Patch Up
|
||||
### Add a new patch
|
||||
|
||||
- first, you need to build VSCodium
|
||||
- then use the command `patch.sh <your patch name>`, to initiate a new patch
|
||||
- then use the command `./dev/patch.sh <your patch name>`, to initiate a new patch
|
||||
- when the script pauses at `Press any key when the conflict have been resolved...`, open `vscode` directory in **VSCodium**
|
||||
- run `yarn watch`
|
||||
- run `npm run watch`
|
||||
- run `./script/code.sh`
|
||||
- make your changes
|
||||
- press any key to continue the script `patch.sh`
|
||||
|
||||
22
README.md
22
README.md
@@ -2,7 +2,7 @@
|
||||
<br />
|
||||
<img src="./icons/stable/codium_cnl.svg" alt="VSCodium Logo" width="200"/>
|
||||
<h1>VSCodium</h1>
|
||||
<h3>Free/Libre Open Source Software Binaries of VS Code</h3>
|
||||
<h3>Free/Libre Open Source Software Binaries of Visual Studio Code</h3>
|
||||
</div>
|
||||
|
||||
<div id="badges" align="center">
|
||||
@@ -56,12 +56,9 @@ If you are on a Mac and have [Homebrew](https://brew.sh/) installed:
|
||||
brew install --cask vscodium
|
||||
|
||||
# insiders
|
||||
brew tap homebrew/cask-versions
|
||||
brew install --cask vscodium-insiders
|
||||
brew install --cask vscodium@insiders
|
||||
```
|
||||
|
||||
*Note for macOS users: if you can't open the App, please read [the following troubleshooting](https://github.com/VSCodium/vscodium/blob/master/docs/troubleshooting.md#macos).*
|
||||
|
||||
#### <a id="install-with-winget"></a>Install with Windows Package Manager (WinGet)
|
||||
|
||||
If you use Windows and have [Windows Package Manager](https://github.com/microsoft/winget-cli) installed:
|
||||
@@ -134,7 +131,7 @@ Build instructions can be found [here](https://github.com/VSCodium/vscodium/blob
|
||||
|
||||
## <a id="why"></a>Why Does This Exist
|
||||
|
||||
This repository contains build files to generate free release binaries of Microsoft's VS Code. When we speak of "free software", we're talking about freedom, not price.
|
||||
This repository contains build files to generate free release binaries of Microsoft's Visual Studio Code. When we speak of "free software", we're talking about freedom, not price.
|
||||
|
||||
Microsoft's releases of Visual Studio Code are licensed under [this not-FLOSS license](https://code.visualstudio.com/license) and contain telemetry/tracking. According to [this comment](https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005) from a Visual Studio Code maintainer:
|
||||
|
||||
@@ -144,7 +141,7 @@ Microsoft's releases of Visual Studio Code are licensed under [this not-FLOSS li
|
||||
|
||||
This repo exists so that you don't have to download+build from source. The build scripts in this repo clone Microsoft's vscode repo, run the build commands, and upload the resulting binaries to [GitHub releases](https://github.com/VSCodium/vscodium/releases). __These binaries are licensed under the MIT license. Telemetry is disabled.__
|
||||
|
||||
If you want to build from source yourself, head over to [Microsoft's vscode repo](https://github.com/Microsoft/vscode) and follow their [instructions](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run). This repo exists to make it easier to get the latest version of MIT-licensed VS Code.
|
||||
If you want to build from source yourself, head over to [Microsoft's vscode repo](https://github.com/Microsoft/vscode) and follow their [instructions](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run). This repo exists to make it easier to get the latest version of MIT-licensed Visual Studio Code.
|
||||
|
||||
Microsoft's build process (which we are running to build the binaries) does download additional files. Those packages downloaded during build are:
|
||||
|
||||
@@ -168,9 +165,9 @@ If you have any issue, please check [the Troubleshooting page](https://github.co
|
||||
|
||||
### Extensions and the Marketplace
|
||||
|
||||
According to the VS Code Marketplace [Terms of Use](https://aka.ms/vsmarketplace-ToU), _you may only install and use Marketplace Offerings with Visual Studio Products and Services._ For this reason, VSCodium uses [open-vsx.org](https://open-vsx.org/), an open source registry for VS Code extensions. See the [Extensions + Marketplace](https://github.com/VSCodium/vscodium/blob/master/docs/index.md#extensions-marketplace) section on the Docs page for more details.
|
||||
According to the Visual Studio Marketplace [Terms of Use](https://aka.ms/vsmarketplace-ToU), _you may only install and use Marketplace Offerings with Visual Studio Products and Services._ For this reason, VSCodium uses [open-vsx.org](https://open-vsx.org/), an open source registry for Visual Studio Code extensions. See the [Extensions + Marketplace](https://github.com/VSCodium/vscodium/blob/master/docs/index.md#extensions-marketplace) section on the Docs page for more details.
|
||||
|
||||
Please note that some Visual Studio Code extensions have licenses that restrict their use to the official Visual Studio Code builds and therefore do not work with VSCodium. See [this note](https://github.com/VSCodium/vscodium/blob/master/docs/index.md#proprietary-debugging-tools) on the Docs page for what's been found so far and possible workarounds.
|
||||
Please note that some Visual Studio Code extensions have licenses that restrict their use to the official Visual Studio Code builds and therefore do not work with VSCodium. See [this note](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#proprietary-debugging-tools) on the Docs page for what's been found so far and possible workarounds.
|
||||
|
||||
### How are the VSCodium binaries built?
|
||||
|
||||
@@ -187,6 +184,9 @@ The minimal version is limited by the core component Electron, you may want to c
|
||||
- [x] GNU/Linux x64 (`deb`, `rpm`, `AppImage`, `snap`, `tar.gz`)
|
||||
- [x] GNU/Linux arm64 (`deb`, `rpm`, `snap`, `tar.gz`)
|
||||
- [x] GNU/Linux armhf (`deb`, `rpm`, `tar.gz`)
|
||||
- [x] GNU/Linux riscv64 (`tar.gz`)
|
||||
- [x] GNU/Linux loong64 (`tar.gz`)
|
||||
- [x] GNU/Linux ppc64le (`tar.gz`)
|
||||
- [x] Windows 10 / Server 2012 R2 or newer x64
|
||||
- [x] Windows 10 / Server 2012 R2 or newer arm64
|
||||
|
||||
@@ -209,6 +209,10 @@ The minimal version is limited by the core component Electron, you may want to c
|
||||
<td><a href="https://github.com/daiyam" target="_blank">@daiyam</a></td>
|
||||
<td>for macOS certificate</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://signpath.org/" target="_blank"><img src="https://avatars.githubusercontent.com/u/34448643" height="30" alt="SignPath logo" /></a></td>
|
||||
<td>free code signing on Windows provided by <a href="https://signpath.io/" target="_blank">SignPath.io</a>, certificate by <a href="https://signpath.org/" target="_blank">SignPath Foundation</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## <a id="license"></a>License
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[
|
||||
{
|
||||
"id": "#1227",
|
||||
"title": "Issue(macOS): manual update to `1.90.x`",
|
||||
"url": "https://github.com/VSCodium/vscodium/issues/1917"
|
||||
"id": "#2668",
|
||||
"title": "[Windows] broken update on 1.107, need manual update",
|
||||
"url": "https://github.com/VSCodium/vscodium/issues/2668"
|
||||
}
|
||||
]
|
||||
|
||||
61
build.sh
61
build.sh
@@ -14,50 +14,77 @@ if [[ "${SHOULD_BUILD}" == "yes" ]]; then
|
||||
|
||||
export NODE_OPTIONS="--max-old-space-size=8192"
|
||||
|
||||
yarn monaco-compile-check
|
||||
yarn valid-layers-check
|
||||
npm run monaco-compile-check
|
||||
npm run valid-layers-check
|
||||
|
||||
yarn gulp compile-build
|
||||
yarn gulp compile-extension-media
|
||||
yarn gulp compile-extensions-build
|
||||
yarn gulp minify-vscode
|
||||
npm run gulp compile-build-without-mangling
|
||||
npm run gulp compile-extension-media
|
||||
npm run gulp compile-extensions-build
|
||||
npm run gulp minify-vscode
|
||||
|
||||
if [[ "${OS_NAME}" == "osx" ]]; then
|
||||
yarn gulp "vscode-darwin-${VSCODE_ARCH}-min-ci"
|
||||
# remove win32 node modules
|
||||
rm -f .build/extensions/ms-vscode.js-debug/src/win32-app-container-tokens.*.node
|
||||
|
||||
# generate Group Policy definitions
|
||||
npm run copy-policy-dto --prefix build
|
||||
node build/lib/policies/policyGenerator.ts build/lib/policies/policyData.jsonc darwin
|
||||
|
||||
npm run gulp "vscode-darwin-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
find "../VSCode-darwin-${VSCODE_ARCH}" -print0 | xargs -0 touch -c
|
||||
|
||||
. ../build_cli.sh
|
||||
|
||||
VSCODE_PLATFORM="darwin"
|
||||
elif [[ "${OS_NAME}" == "windows" ]]; then
|
||||
. ../build/windows/rtf/make.sh
|
||||
# in CI, packaging will be done by a different job
|
||||
if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
. ../build/windows/rtf/make.sh
|
||||
|
||||
yarn gulp "vscode-win32-${VSCODE_ARCH}-min-ci"
|
||||
# generate Group Policy definitions
|
||||
npm run copy-policy-dto --prefix build
|
||||
node build/lib/policies/policyGenerator.ts build/lib/policies/policyData.jsonc win32
|
||||
|
||||
if [[ "${VSCODE_ARCH}" != "ia32" && "${VSCODE_ARCH}" != "x64" ]]; then
|
||||
SHOULD_BUILD_REH="no"
|
||||
SHOULD_BUILD_REH_WEB="no"
|
||||
npm run gulp "vscode-win32-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
if [[ "${VSCODE_ARCH}" != "x64" ]]; then
|
||||
SHOULD_BUILD_REH="no"
|
||||
SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
. ../build_cli.sh
|
||||
fi
|
||||
|
||||
VSCODE_PLATFORM="win32"
|
||||
else # linux
|
||||
# remove win32 node modules
|
||||
rm -f .build/extensions/ms-vscode.js-debug/src/win32-app-container-tokens.*.node
|
||||
|
||||
# in CI, packaging will be done by a different job
|
||||
if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
yarn gulp "vscode-linux-${VSCODE_ARCH}-min-ci"
|
||||
# generate Group Policy definitions
|
||||
npm run copy-policy-dto --prefix build
|
||||
node build/lib/policies/policyGenerator.ts build/lib/policies/policyData.jsonc linux
|
||||
|
||||
npm run gulp "vscode-linux-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
find "../VSCode-linux-${VSCODE_ARCH}" -print0 | xargs -0 touch -c
|
||||
|
||||
. ../build_cli.sh
|
||||
fi
|
||||
|
||||
VSCODE_PLATFORM="linux"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
|
||||
yarn gulp minify-vscode-reh
|
||||
yarn gulp "vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
npm run gulp minify-vscode-reh
|
||||
npm run gulp "vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH_WEB}" != "no" ]]; then
|
||||
yarn gulp minify-vscode-reh-web
|
||||
yarn gulp "vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
npm run gulp minify-vscode-reh-web
|
||||
npm run gulp "vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
||||
@@ -7,6 +7,11 @@ if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# include common functions
|
||||
. ./utils.sh
|
||||
|
||||
mkdir -p assets
|
||||
|
||||
tar -xzf ./vscode.tar.gz
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
@@ -22,27 +27,21 @@ export VSCODE_HOST_MOUNT VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME
|
||||
if [[ -d "../patches/alpine/reh/" ]]; then
|
||||
for file in "../patches/alpine/reh/"*.patch; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
echo applying patch: "${file}";
|
||||
if ! git apply --ignore-whitespace "${file}"; then
|
||||
echo failed to apply patch "${file}" >&2
|
||||
exit 1
|
||||
fi
|
||||
apply_patch "${file}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci && break
|
||||
if [[ $i == 3 ]]; then
|
||||
if [[ $i == 5 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
node build/azure-pipelines/distro/mixin-npm
|
||||
|
||||
yarn gulp minify-vscode-reh
|
||||
node build/azure-pipelines/distro/mixin-npm.ts
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
PA_NAME="linux-alpine"
|
||||
@@ -50,17 +49,32 @@ else
|
||||
PA_NAME="alpine-arm64"
|
||||
fi
|
||||
|
||||
yarn gulp "vscode-reh-${PA_NAME}-min-ci"
|
||||
if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
|
||||
echo "Building REH"
|
||||
npm run gulp minify-vscode-reh
|
||||
npm run gulp "vscode-reh-${PA_NAME}-min-ci"
|
||||
|
||||
cd ..
|
||||
pushd "../vscode-reh-${PA_NAME}"
|
||||
|
||||
APP_NAME_LC="$( echo "${APP_NAME}" | awk '{print tolower($0)}' )"
|
||||
echo "Archiving REH"
|
||||
tar czf "../assets/${APP_NAME_LC}-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
|
||||
|
||||
mkdir -p assets
|
||||
popd
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH_WEB}" != "no" ]]; then
|
||||
echo "Building REH-web"
|
||||
npm run gulp minify-vscode-reh-web
|
||||
npm run gulp "vscode-reh-web-${PA_NAME}-min-ci"
|
||||
|
||||
pushd "../vscode-reh-web-${PA_NAME}"
|
||||
|
||||
echo "Archiving REH-web"
|
||||
tar czf "../assets/${APP_NAME_LC}-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
|
||||
|
||||
popd
|
||||
fi
|
||||
|
||||
echo "Building and moving REH"
|
||||
cd "vscode-reh-${PA_NAME}"
|
||||
tar czf "../assets/${APP_NAME_LC}-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
|
||||
cd ..
|
||||
|
||||
npm install -g checksum
|
||||
@@ -22,21 +22,28 @@ if [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
./pkg2appimage.AppImage --appimage-extract && mv ./squashfs-root ./pkg2appimage.AppDir
|
||||
|
||||
# add update's url
|
||||
sed -i 's/generate_type2_appimage/generate_type2_appimage -u "gh-releases-zsync|VSCodium|vscodium|latest|*.AppImage.zsync"/' pkg2appimage.AppDir/AppRun
|
||||
|
||||
if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
|
||||
sed -i 's/generate_type2_appimage/generate_type2_appimage -u "gh-releases-zsync|VSCodium|vscodium-insiders|latest|*.AppImage.zsync"/' pkg2appimage.AppDir/AppRun
|
||||
else
|
||||
sed -i 's/generate_type2_appimage/generate_type2_appimage -u "gh-releases-zsync|VSCodium|vscodium|latest|*.AppImage.zsync"/' pkg2appimage.AppDir/AppRun
|
||||
fi
|
||||
# remove check so build in docker can succeed
|
||||
sed -i 's/grep docker/# grep docker/' pkg2appimage.AppDir/usr/share/pkg2appimage/functions.sh
|
||||
|
||||
APP_NAME_LC="$( echo "${APP_NAME}" | awk '{print tolower($0)}' )"
|
||||
|
||||
if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
|
||||
sed -i 's|@@NAME@@|VSCodium-Insiders|g' recipe.yml
|
||||
sed -i 's|@@APPNAME@@|codium-insiders|g' recipe.yml
|
||||
sed -i 's|@@ICON@@|vscodium-insiders|g' recipe.yml
|
||||
sed -i "s|@@NAME@@|${APP_NAME}-Insiders|g" recipe.yml
|
||||
sed -i "s|@@APPNAME@@|${BINARY_NAME}|g" recipe.yml
|
||||
sed -i "s|@@ICON@@|${APP_NAME_LC}-insiders|g" recipe.yml
|
||||
else
|
||||
sed -i 's|@@NAME@@|VSCodium|g' recipe.yml
|
||||
sed -i 's|@@APPNAME@@|codium|g' recipe.yml
|
||||
sed -i 's|@@ICON@@|vscodium|g' recipe.yml
|
||||
sed -i "s|@@NAME@@|${APP_NAME}|g" recipe.yml
|
||||
sed -i "s|@@APPNAME@@|${BINARY_NAME}|g" recipe.yml
|
||||
sed -i "s|@@ICON@@|${APP_NAME_LC}|g" recipe.yml
|
||||
fi
|
||||
|
||||
# workaround that enforces x86 ARCH for pkg2appimage having /__w/vscodium/vscodium/build/linux/appimage/VSCodium/VSCodium.AppDir/usr/share/codium/resources/app/node_modules/rc/index.js is of architecture armhf
|
||||
export ARCH=x86_64
|
||||
bash -ex pkg2appimage.AppDir/AppRun recipe.yml
|
||||
|
||||
rm -f pkg2appimage-*.AppImage
|
||||
|
||||
13
build/linux/deps.sh
Executable file
13
build/linux/deps.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
sudo apt-get update -y
|
||||
|
||||
sudo apt-get install -y libkrb5-dev
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" ]]; then
|
||||
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu crossbuild-essential-arm64
|
||||
elif [[ "${VSCODE_ARCH}" == "armhf" ]]; then
|
||||
sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf crossbuild-essential-armhf
|
||||
fi
|
||||
32
build/linux/install_gh.sh
Executable file
32
build/linux/install_gh.sh
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
GH_ARCH="amd64"
|
||||
|
||||
for i in {1..5}; do
|
||||
TAG=$( curl --retry 12 --retry-delay 30 "https://api.github.com/repos/cli/cli/releases/latest" 2>/dev/null | jq --raw-output '.tag_name' )
|
||||
|
||||
if [[ $? == 0 && "${TAG}" != "null" ]]; then
|
||||
break
|
||||
fi
|
||||
|
||||
if [[ $i == 5 ]]; then
|
||||
echo "GH install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "GH install failed $i, trying again..."
|
||||
|
||||
sleep $(( 15 * (i + 1)))
|
||||
done
|
||||
|
||||
VERSION="${TAG#v}"
|
||||
|
||||
curl --retry 12 --retry-delay 120 -sSL "https://github.com/cli/cli/releases/download/${TAG}/gh_${VERSION}_linux_${GH_ARCH}.tar.gz" -o "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
|
||||
|
||||
tar xf "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
|
||||
|
||||
cp "gh_${VERSION}_linux_${GH_ARCH}/bin/gh" /usr/local/bin/
|
||||
|
||||
gh --version
|
||||
13
build/linux/install_nodejs.sh
Executable file
13
build/linux/install_nodejs.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
NODEJS_VERSION=$( cat .nvmrc )
|
||||
|
||||
curl -fsSL "${NODEJS_SITE}${NODEJS_URLROOT}/v${NODEJS_VERSION}/node-v${NODEJS_VERSION}-linux-${NODEJS_ARCH}${NODEJS_URLSUFFIX}.tar.xz" -o node.tar.xz
|
||||
|
||||
tar -xf node.tar.xz
|
||||
|
||||
sudo mv "node-v${NODEJS_VERSION}-linux-${NODEJS_ARCH}${NODEJS_URLSUFFIX}" /usr/local/node
|
||||
|
||||
echo "/usr/local/node/bin" >> $GITHUB_PATH
|
||||
6
build/linux/loong64/electron.sh
Normal file
6
build/linux/loong64/electron.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
export ELECTRON_VERSION="39.2.3"
|
||||
export VSCODE_ELECTRON_TAG="v${ELECTRON_VERSION}"
|
||||
9
build/linux/loong64/electron.sha256sums
Normal file
9
build/linux/loong64/electron.sha256sums
Normal file
@@ -0,0 +1,9 @@
|
||||
d26b2189e7466a08c73861d0225c9b28730fdfc30918f3ea70853b43a2581dc4 *chromedriver-v39.2.3-linux-loong64.zip
|
||||
8cc36f7468f5b2d98cde3f73c10c535555754c54be43e45c320a382c35b8e466 *electron-v39.2.3-linux-loong64.zip
|
||||
f6e7462d6fd795ae2b08344ee0fdca817eba148b62a62717b3f512c845d96a64 *ffmpeg-v39.2.3-linux-loong64.zip
|
||||
b122599dc84b81526ba4eecbca4794f3a2d25300242ad3829d1445cb6948f470 *hunspell-dictionaries.zip
|
||||
76ef17d2810df5e77c5071863e2a375df914cfb7a362ad0582ee0eedca2441b9 *libcxx-headers.zip
|
||||
9b61ba9f0780a57ee2749f7963759395784eadcaccc54af313de1a540240298e *libcxx-objects-v39.2.3-linux-loong64.zip
|
||||
9ae64aff9e391eae401142e55654b5b8cf54d0611b1ecb540f2f4e89a2b4f772 *libcxxabi-headers.zip
|
||||
7d7e6e08c84aa38b74037f5910534918bc792ffbe2ca6d667067f587f27f5118 *mksnapshot-v39.2.3-linux-loong64.zip
|
||||
db48f8a9d2271e8b3a1c3f26ea1ae9bd489deb1b464b6ae424a15d5df7529fdc *node-v39.2.3-headers.tar.gz
|
||||
18
build/linux/loong64/ripgrep.sh
Executable file
18
build/linux/loong64/ripgrep.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# When installing @vscode/ripgrep, it will try to download prebuilt ripgrep binary from https://github.com/microsoft/ripgrep-prebuilt,
|
||||
# however, loong64 is not a supported architecture and x86 will be picked as fallback, so we need to replace it with a native one.
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 <path_to_node_modules>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RG_PATH="$1/@vscode/ripgrep/bin/rg"
|
||||
RG_VERSION="14.1.1"
|
||||
|
||||
echo "Replacing ripgrep binary with loong64 one"
|
||||
|
||||
rm "${RG_PATH}"
|
||||
curl --silent --fail -L https://github.com/darkyzhou/ripgrep-loongarch64-musl/releases/download/${RG_VERSION}/rg -o "${RG_PATH}"
|
||||
chmod +x "${RG_PATH}"
|
||||
147
build/linux/package_bin.sh
Executable file
147
build/linux/package_bin.sh
Executable file
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
set -ex
|
||||
|
||||
if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# include common functions
|
||||
. ./utils.sh
|
||||
|
||||
tar -xzf ./vscode.tar.gz
|
||||
|
||||
chown -R root:root vscode
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
export VSCODE_PLATFORM='linux'
|
||||
export VSCODE_SKIP_NODE_VERSION_CHECK=1
|
||||
export VSCODE_SYSROOT_PREFIX='-glibc-2.28-gcc-10.5.0'
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" || "${VSCODE_ARCH}" == "armhf" ]]; then
|
||||
export VSCODE_SKIP_SYSROOT=1
|
||||
# export USE_GNUPP2A=1
|
||||
elif [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
|
||||
export VSCODE_SYSROOT_REPOSITORY='VSCodium/vscode-linux-build-agent'
|
||||
export VSCODE_SYSROOT_VERSION='20240129-253798'
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
export VSCODE_SKIP_SETUPENV=1
|
||||
export VSCODE_ELECTRON_REPOSITORY='lex-ibm/electron-ppc64le-build-scripts'
|
||||
elif [[ "${VSCODE_ARCH}" == "riscv64" ]]; then
|
||||
export VSCODE_ELECTRON_REPOSITORY='riscv-forks/electron-riscv-releases'
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
export VSCODE_SKIP_SETUPENV=1
|
||||
elif [[ "${VSCODE_ARCH}" == "loong64" ]]; then
|
||||
export VSCODE_ELECTRON_REPOSITORY='darkyzhou/electron-loong64'
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
export VSCODE_SKIP_SETUPENV=1
|
||||
fi
|
||||
|
||||
if [[ -f "../build/linux/${VSCODE_ARCH}/electron.sh" ]]; then
|
||||
# add newline at the end of the file
|
||||
echo "" >> build/checksums/electron.txt
|
||||
|
||||
if [[ -f "../build/linux/${VSCODE_ARCH}/electron.sha256sums" ]]; then
|
||||
cat "../build/linux/${VSCODE_ARCH}/electron.sha256sums" >> build/checksums/electron.txt
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "../build/linux/${VSCODE_ARCH}/electron.sh"
|
||||
|
||||
TARGET=$( npm config get target )
|
||||
|
||||
# Only fails at different major versions
|
||||
if [[ "${ELECTRON_VERSION%%.*}" != "${TARGET%%.*}" ]]; then
|
||||
# Fail the pipeline if electron target doesn't match what is used.
|
||||
echo "Electron ${VSCODE_ARCH} binary version doesn't match target electron version!"
|
||||
echo "Releases available at: https://github.com/${VSCODE_ELECTRON_REPOSITORY}/releases"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${ELECTRON_VERSION}" != "${TARGET}" ]]; then
|
||||
# Force version
|
||||
replace "s|target=\"${TARGET}\"|target=\"${ELECTRON_VERSION}\"|" .npmrc
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -d "../patches/linux/client/" ]]; then
|
||||
for file in "../patches/linux/client/"*.patch; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
apply_patch "${file}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -n "${USE_GNUPP2A}" ]]; then
|
||||
INCLUDES=$(cat <<EOF
|
||||
{
|
||||
"target_defaults": {
|
||||
"conditions": [
|
||||
["OS=='linux'", {
|
||||
'cflags_cc!': [ '-std=gnu++20' ],
|
||||
'cflags_cc': [ '-std=gnu++2a' ],
|
||||
}]
|
||||
]
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [ ! -d "$HOME/.gyp" ]; then
|
||||
mkdir -p "$HOME/.gyp"
|
||||
fi
|
||||
|
||||
echo "${INCLUDES}" > "$HOME/.gyp/include.gypi"
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci --prefix build && break
|
||||
if [[ $i == 5 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
if [[ -z "${VSCODE_SKIP_SETUPENV}" ]]; then
|
||||
if [[ -n "${VSCODE_SKIP_SYSROOT}" ]]; then
|
||||
source ./build/azure-pipelines/linux/setup-env.sh --skip-sysroot
|
||||
else
|
||||
source ./build/azure-pipelines/linux/setup-env.sh
|
||||
fi
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci && break
|
||||
if [[ $i == 5 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
node build/azure-pipelines/distro/mixin-npm.ts
|
||||
|
||||
# delete native files built in the `compile` step
|
||||
find .build/extensions -type f -name '*.node' -print -delete
|
||||
|
||||
# generate Group Policy definitions
|
||||
npm run copy-policy-dto --prefix build
|
||||
node build/lib/policies/policyGenerator.ts build/lib/policies/policyData.jsonc linux
|
||||
|
||||
npm run gulp "vscode-linux-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
if [[ -f "../build/linux/${VSCODE_ARCH}/ripgrep.sh" ]]; then
|
||||
bash "../build/linux/${VSCODE_ARCH}/ripgrep.sh" "../VSCode-linux-${VSCODE_ARCH}/resources/app/node_modules"
|
||||
fi
|
||||
|
||||
find "../VSCode-linux-${VSCODE_ARCH}" -print0 | xargs -0 touch -c
|
||||
|
||||
. ../build_cli.sh
|
||||
|
||||
cd ..
|
||||
264
build/linux/package_reh.sh
Executable file
264
build/linux/package_reh.sh
Executable file
@@ -0,0 +1,264 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
set -ex
|
||||
|
||||
if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# include common functions
|
||||
. ./utils.sh
|
||||
|
||||
mkdir -p assets
|
||||
|
||||
tar -xzf ./vscode.tar.gz
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
GLIBC_VERSION="2.28"
|
||||
GLIBCXX_VERSION="3.4.26"
|
||||
NODE_VERSION="22.21.1"
|
||||
|
||||
export VSCODE_NODEJS_URLROOT='/download/release'
|
||||
export VSCODE_NODEJS_URLSUFFIX=''
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:focal-devtoolset-x64"
|
||||
|
||||
export VSCODE_SKIP_SETUPENV=1
|
||||
elif [[ "${VSCODE_ARCH}" == "arm64" ]]; then
|
||||
EXPECTED_GLIBC_VERSION="2.30"
|
||||
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:focal-devtoolset-arm64"
|
||||
|
||||
export VSCODE_SKIP_SYSROOT=1
|
||||
export USE_GNUPP2A=1
|
||||
elif [[ "${VSCODE_ARCH}" == "armhf" ]]; then
|
||||
EXPECTED_GLIBC_VERSION="2.30"
|
||||
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:focal-devtoolset-armhf"
|
||||
|
||||
export VSCODE_SKIP_SYSROOT=1
|
||||
export USE_GNUPP2A=1
|
||||
elif [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
|
||||
GLIBC_VERSION="2.28"
|
||||
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:focal-devtoolset-ppc64le"
|
||||
VSCODE_SYSROOT_PREFIX="-glibc-${GLIBC_VERSION}"
|
||||
|
||||
export VSCODE_SYSROOT_REPOSITORY='VSCodium/vscode-linux-build-agent'
|
||||
export VSCODE_SYSROOT_VERSION='20240129-253798'
|
||||
elif [[ "${VSCODE_ARCH}" == "riscv64" ]]; then
|
||||
NODE_VERSION="22.21.1"
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:focal-devtoolset-riscv64"
|
||||
|
||||
export VSCODE_SKIP_SETUPENV=1
|
||||
export VSCODE_NODEJS_SITE='https://unofficial-builds.nodejs.org'
|
||||
elif [[ "${VSCODE_ARCH}" == "loong64" ]]; then
|
||||
NODE_VERSION="22.21.1"
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:beige-devtoolset-loong64"
|
||||
|
||||
export VSCODE_SKIP_SETUPENV=1
|
||||
export VSCODE_NODEJS_SITE='https://unofficial-builds.nodejs.org'
|
||||
elif [[ "${VSCODE_ARCH}" == "s390x" ]]; then
|
||||
GLIBC_VERSION="2.28"
|
||||
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:focal-devtoolset-s390x"
|
||||
VSCODE_SYSROOT_PREFIX="-glibc-${GLIBC_VERSION}"
|
||||
|
||||
export VSCODE_SYSROOT_REPOSITORY='VSCodium/vscode-linux-build-agent'
|
||||
export VSCODE_SYSROOT_VERSION='20241108'
|
||||
fi
|
||||
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
export VSCODE_PLATFORM='linux'
|
||||
export VSCODE_SKIP_NODE_VERSION_CHECK=1
|
||||
|
||||
if [[ -z "${VSCODE_SYSROOT_PREFIX}" ]]; then
|
||||
export VSCODE_SYSROOT_PREFIX="-glibc-${GLIBC_VERSION}-gcc-10.5.0"
|
||||
else
|
||||
export VSCODE_SYSROOT_PREFIX
|
||||
fi
|
||||
|
||||
EXPECTED_GLIBC_VERSION="${EXPECTED_GLIBC_VERSION:=GLIBC_VERSION}"
|
||||
VSCODE_HOST_MOUNT="$( pwd )"
|
||||
|
||||
export VSCODE_HOST_MOUNT
|
||||
export VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME
|
||||
|
||||
sed -i "/target/s/\"22.*\"/\"${NODE_VERSION}\"/" remote/.npmrc
|
||||
|
||||
if [[ -d "../patches/linux/reh/" ]]; then
|
||||
for file in "../patches/linux/reh/"*.patch; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
apply_patch "${file}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -d "../patches/linux/reh/${VSCODE_ARCH}/" ]]; then
|
||||
for file in "../patches/linux/reh/${VSCODE_ARCH}/"*.patch; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
apply_patch "${file}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ -n "${USE_GNUPP2A}" ]]; then
|
||||
INCLUDES=$(cat <<EOF
|
||||
{
|
||||
"target_defaults": {
|
||||
"conditions": [
|
||||
["OS=='linux'", {
|
||||
'cflags_cc!': [ '-std=gnu++20' ],
|
||||
'cflags_cc': [ '-std=gnu++2a' ],
|
||||
}]
|
||||
]
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)
|
||||
|
||||
if [ ! -d "${HOME}/.gyp" ]; then
|
||||
mkdir -p "${HOME}/.gyp"
|
||||
fi
|
||||
|
||||
echo "${INCLUDES}" > "${HOME}/.gyp/include.gypi"
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci --prefix build && break
|
||||
if [[ $i == 5 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
if [[ -z "${VSCODE_SKIP_SETUPENV}" ]]; then
|
||||
if [[ -n "${VSCODE_SKIP_SYSROOT}" ]]; then
|
||||
source ./build/azure-pipelines/linux/setup-env.sh --skip-sysroot
|
||||
else
|
||||
cat ./build/checksums/vscode-sysroot.txt
|
||||
|
||||
source ./build/azure-pipelines/linux/setup-env.sh
|
||||
fi
|
||||
|
||||
export VSCODE_SYSROOT_DIR="${VSCODE_REMOTE_SYSROOT_DIR}"
|
||||
else
|
||||
mkdir -p .build/x86_64-linux-gnu/x86_64-linux-gnu/bin
|
||||
|
||||
ln -s $( which objdump ) .build/x86_64-linux-gnu/x86_64-linux-gnu/bin/objdump
|
||||
|
||||
export VSCODE_SYSROOT_DIR=".build"
|
||||
fi
|
||||
|
||||
node build/npm/preinstall.ts
|
||||
|
||||
mv .npmrc .npmrc.bak
|
||||
cp ../npmrc .npmrc
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci && break
|
||||
if [[ $i == 5 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
|
||||
# remove dependencies that fail during cleanup
|
||||
rm -rf node_modules/@vscode node_modules/node-pty
|
||||
done
|
||||
|
||||
# if [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
# pushd "remote"
|
||||
|
||||
# for LIB in @parcel/watcher @vscode/spdlog kerberos node-pty
|
||||
# do
|
||||
# pushd "node_modules/${LIB}"
|
||||
|
||||
# CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" npx node-gyp rebuild
|
||||
|
||||
# popd
|
||||
# done
|
||||
|
||||
# popd
|
||||
|
||||
# VERIFY_CXX11=1
|
||||
# fi
|
||||
|
||||
mv .npmrc.bak .npmrc
|
||||
|
||||
node build/azure-pipelines/distro/mixin-npm.ts
|
||||
|
||||
export VSCODE_NODE_GLIBC="-glibc-${GLIBC_VERSION}"
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
|
||||
echo "Building REH"
|
||||
npm run gulp minify-vscode-reh
|
||||
npm run gulp "vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
EXPECTED_GLIBC_VERSION="${EXPECTED_GLIBC_VERSION}" EXPECTED_GLIBCXX_VERSION="${GLIBCXX_VERSION}" SEARCH_PATH="../vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}" ./build/azure-pipelines/linux/verify-glibc-requirements.sh
|
||||
|
||||
# if [[ -n "${VERIFY_CXX11}" ]]; then
|
||||
# SEARCH_PATH="../vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}" ../build/linux/verify_cxx11_requirements.sh
|
||||
# fi
|
||||
|
||||
pushd "../vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}"
|
||||
|
||||
if [[ -f "../build/linux/${VSCODE_ARCH}/ripgrep.sh" ]]; then
|
||||
bash "../build/linux/${VSCODE_ARCH}/ripgrep.sh" "node_modules"
|
||||
fi
|
||||
|
||||
echo "Archiving REH"
|
||||
tar czf "../assets/${APP_NAME_LC}-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
|
||||
|
||||
popd
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH_WEB}" != "no" ]]; then
|
||||
echo "Building REH-web"
|
||||
npm run gulp minify-vscode-reh-web
|
||||
npm run gulp "vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
EXPECTED_GLIBC_VERSION="${EXPECTED_GLIBC_VERSION}" EXPECTED_GLIBCXX_VERSION="${GLIBCXX_VERSION}" SEARCH_PATH="../vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}" ./build/azure-pipelines/linux/verify-glibc-requirements.sh
|
||||
|
||||
# if [[ -n "${VERIFY_CXX11}" ]]; then
|
||||
# SEARCH_PATH="../vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}" ../build/linux/verify_cxx11_requirements.sh
|
||||
# fi
|
||||
|
||||
pushd "../vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}"
|
||||
|
||||
if [[ -f "../build/linux/${VSCODE_ARCH}/ripgrep.sh" ]]; then
|
||||
bash "../build/linux/${VSCODE_ARCH}/ripgrep.sh" "node_modules"
|
||||
fi
|
||||
|
||||
echo "Archiving REH-web"
|
||||
tar czf "../assets/${APP_NAME_LC}-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
|
||||
|
||||
popd
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
||||
npm install -g checksum
|
||||
|
||||
sum_file() {
|
||||
if [[ -f "${1}" ]]; then
|
||||
echo "Calculating checksum for ${1}"
|
||||
checksum -a sha256 "${1}" > "${1}".sha256
|
||||
checksum "${1}" > "${1}".sha1
|
||||
fi
|
||||
}
|
||||
|
||||
cd assets
|
||||
|
||||
for FILE in *; do
|
||||
if [[ -f "${FILE}" ]]; then
|
||||
sum_file "${FILE}"
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
6
build/linux/ppc64le/electron.sh
Normal file
6
build/linux/ppc64le/electron.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
export ELECTRON_VERSION="39.2.7"
|
||||
export VSCODE_ELECTRON_TAG="v${ELECTRON_VERSION}"
|
||||
10
build/linux/ppc64le/electron.sha256sums
Normal file
10
build/linux/ppc64le/electron.sha256sums
Normal file
@@ -0,0 +1,10 @@
|
||||
bacff46523cea806df9788d9e24f7f53fad2317f18afdcbc596b86863dd40805 *chromedriver-v39.2.7-linux-ppc64le.zip
|
||||
b83820b37325c0a6ce0bbb98344b54f70ef7c2a949eea61bcb423b18c623a742 *electron-v39.2.7-linux-ppc64le-debug.zip
|
||||
7d3b4ff4320a54572f9e1e0286702a0bed3e1596a2cb34f8fdc455acf3b9234f *electron-v39.2.7-linux-ppc64le-symbols.zip
|
||||
6974cf1c8a550019b04762222742b8f1d9d76387594a191d3522cd65da075db1 *electron-v39.2.7-linux-ppc64le.zip
|
||||
40c772eb189d100087b75da6c2ad1aeb044f1d661c90543592546a654b0b6d5b *electron.d.ts
|
||||
0c923001d08e474d0dcd3b747b4f9a4bfca685d755ec08de8e44556a63f9ad3a *hunspell_dictionaries.zip
|
||||
ee57f79e88f50f199a6aeb87fa45c83d1bd0f92eb72e00787cfdf4cf11863562 *libcxx-objects-v39.2.7-linux-ppc64le.zip
|
||||
a8709029737d3073758ccb384161a37d91f16e5a3f8110ca8e2c30f83ef8d7e6 *libcxx_headers.zip
|
||||
238dcec817528659a86b0cd3d7dabe301e65b4cab25e45c5bbab7642a8849c02 *libcxxabi_headers.zip
|
||||
be033ed825bd8be92bb6ca86ff81f0907e60aa999aa011f5ddf1360abb19429b *mksnapshot-v39.2.7-linux-ppc64le.zip
|
||||
6
build/linux/riscv64/electron.sh
Executable file
6
build/linux/riscv64/electron.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
export ELECTRON_VERSION="39.2.7"
|
||||
export VSCODE_ELECTRON_TAG="v${ELECTRON_VERSION}.riscv1"
|
||||
11
build/linux/riscv64/electron.sha256sums
Normal file
11
build/linux/riscv64/electron.sha256sums
Normal file
@@ -0,0 +1,11 @@
|
||||
6759ef2bd69a2e31a3f0e17c4e4c0bf239b54f08525572201ae7760851168487 *chromedriver-v39.2.7-linux-riscv64.zip
|
||||
89562e30982d8ac71fbc1e0f549a4a6e19abd5cb98ea904d5f3cfceb7c61e582 *electron-v39.2.7-linux-riscv64-debug.tar.zst
|
||||
71c6f265a2ef065f478ef910a06466a21009c02783dcb7053767549a6dbeb80d *electron-v39.2.7-linux-riscv64-symbols.tar.zst
|
||||
136804dbd04f1c6b9a6047c4e7bb648876214ff453b62fb3bdc81505b6f5aab2 *electron-v39.2.7-linux-riscv64.zip
|
||||
1059d6cb97b87464b3bd415bb5f96fceaf91d6e3af1c9733724ab9f2e14e2a08 *ffmpeg-v39.2.7-linux-riscv64.zip
|
||||
224a84d4aaceb5ed8be3c4f65f8404d492dc86ded8ab336c2562dfdd21752068 *hunspell-dictionaries.zip
|
||||
b6cb4f8902aad5de811efd106ddbdbca79e43cb7c8fa67f7eeddaedf2efd82d5 *libcxx-headers.zip
|
||||
0664e200ec1eab1ce1957bc6e17ad89f6c0d4d904a9492d64fcf4175cd81e537 *libcxx-objects-v39.2.7-linux-riscv64.zip
|
||||
96f9b66be7ff11e79ec2e781a0025938eb5ef97cbab429c05e9b45d24d421abf *libcxxabi-headers.zip
|
||||
be0774857454f81b9407f6b941200f8843a0b3ecb86e2bb072209ef9f9bfe74a *mksnapshot-v39.2.7-linux-riscv64.zip
|
||||
a8fca541e8f9a18de73c78f6862cbf439723c80c5eb60fe50405dfb751d2ee13 *node-v39.2.7-headers.tar.gz
|
||||
18
build/linux/riscv64/ripgrep.sh
Executable file
18
build/linux/riscv64/ripgrep.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# microsoft/ripgrep-prebuilt doesn't support riscv64.
|
||||
# Tracking PR: https://github.com/microsoft/ripgrep-prebuilt/pull/41
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 <path_to_node_modules>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RG_PATH="$1/@vscode/ripgrep/bin/rg"
|
||||
RG_VERSION="14.1.1-4"
|
||||
|
||||
echo "Replacing ripgrep binary with riscv64 one"
|
||||
|
||||
rm "${RG_PATH}"
|
||||
curl --silent --fail -L https://github.com/riscv-forks/ripgrep-riscv64-prebuilt/releases/download/${RG_VERSION}/rg -o "${RG_PATH}"
|
||||
chmod +x "${RG_PATH}"
|
||||
29
build/linux/verify_abi_requirements.sh
Executable file
29
build/linux/verify_abi_requirements.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
FILES=$(
|
||||
find "${SEARCH_PATH}" -type f -executable -name "node"
|
||||
find "${SEARCH_PATH}" -name "*.node" -not -path "*prebuilds*" -not -path "*extensions/node_modules/@parcel/watcher*"
|
||||
)
|
||||
|
||||
echo "Verifying requirements for files: ${FILES}"
|
||||
|
||||
for FILE in ${FILES}; do
|
||||
CXXABI_VERSION="0.0.0"
|
||||
|
||||
while IFS= read -r LINE; do
|
||||
VERSION=${LINE#*_}
|
||||
|
||||
if [[ $( printf "%s\n%s" "${VERSION}" "${CXXABI_VERSION}" | sort -V | tail -n1 ) == "${VERSION}" ]]; then
|
||||
CXXABI_VERSION="${VERSION}"
|
||||
fi
|
||||
done < <( strings "${FILE}" | grep -i ^CXXABI )
|
||||
|
||||
if [[ $( printf "%s\n%s" "${EXPECTED_CXXABI_VERSION}" "${CXXABI_VERSION}" | sort -V | tail -n1 ) == "${EXPECTED_CXXABI_VERSION}" ]]; then
|
||||
echo "File ${FILE} has dependency on ABI ${CXXABI_VERSION} <= ${EXPECTED_CXXABI_VERSION}"
|
||||
else
|
||||
echo "Error: File ${FILE} has dependency on ABI ${CXXABI_VERSION} > ${EXPECTED_CXXABI_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
14
build/linux/verify_cxx11_requirements.sh
Executable file
14
build/linux/verify_cxx11_requirements.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
FILES=$( find "${SEARCH_PATH}" -name "*.node" -not -path "*prebuilds*" -not -path "*extensions/node_modules/@parcel/watcher*" )
|
||||
|
||||
echo "Verifying requirements for files: ${FILES}"
|
||||
|
||||
for FILE in ${FILES}; do
|
||||
if [[ -n "$( strings "${FILE}" | grep cxx11 | tail -n1 )" ]]; then
|
||||
echo "Error: File ${FILE} has dependency on CXX11"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
11
build/osx/include.gypi
Normal file
11
build/osx/include.gypi
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
'target_defaults': {
|
||||
'conditions': [
|
||||
['OS=="mac"', {
|
||||
'xcode_settings': {
|
||||
'OTHER_CPLUSPLUSFLAGS': ['-std=c++20']
|
||||
}
|
||||
}]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
export VSCODE_QUALITY="stable"
|
||||
|
||||
while getopts ":i" opt; do
|
||||
case "$opt" in
|
||||
i)
|
||||
export VSCODE_QUALITY="insider"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
check_file() {
|
||||
if [[ -f "${1}" ]]; then
|
||||
echo applying patch: "${1}"
|
||||
if ! git apply --ignore-whitespace "${1}"; then
|
||||
echo failed to apply patch "${1}"
|
||||
|
||||
git apply --reject "${1}"
|
||||
git apply --reject "../patches/helper/settings.patch"
|
||||
|
||||
read -rp "Press any key when the conflict have been resolved..." -n1 -s
|
||||
|
||||
git restore .vscode/settings.json
|
||||
git add .
|
||||
git diff --staged -U1 > "${1}"
|
||||
fi
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
fi
|
||||
}
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
|
||||
for FILE in ../patches/*.patch; do
|
||||
check_file "${FILE}"
|
||||
done
|
||||
|
||||
if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
|
||||
for FILE in ../patches/insider/*.patch; do
|
||||
check_file "${FILE}"
|
||||
done
|
||||
fi
|
||||
|
||||
for FILE in ../patches/linux/*/*.patch; do
|
||||
check_file "${FILE}"
|
||||
done
|
||||
14
build/windows/appx/build.sh
Executable file
14
build/windows/appx/build.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
# Add Windows SDK to path
|
||||
SDK='/C/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x64'
|
||||
export PATH="${SDK}:${PATH}"
|
||||
|
||||
APPX_NAME="${BINARY_NAME//-/_}"
|
||||
|
||||
makeappx pack /d "../../../VSCode-win32-${VSCODE_ARCH}/appx/manifest" /p "../../../VSCode-win32-${VSCODE_ARCH}/appx/${APPX_NAME}_${VSCODE_ARCH}.appx" /nv
|
||||
|
||||
# Remove the raw manifest folder
|
||||
rm -rf "../../../VSCode-win32-${VSCODE_ARCH}/appx/manifest"
|
||||
52
build/windows/package.sh
Executable file
52
build/windows/package.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
set -ex
|
||||
|
||||
if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tar -xzf ./vscode.tar.gz
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci && break
|
||||
if [[ $i == 5 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
node build/azure-pipelines/distro/mixin-npm.ts
|
||||
|
||||
# delete native files built in the `compile` step
|
||||
find .build/extensions -type f -name '*.node' -print -delete
|
||||
|
||||
. ../build/windows/rtf/make.sh
|
||||
|
||||
# generate Group Policy definitions
|
||||
npm run copy-policy-dto --prefix build
|
||||
node build/lib/policies/policyGenerator.ts build/lib/policies/policyData.jsonc win32
|
||||
|
||||
npm run gulp "vscode-win32-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
. ../build_cli.sh
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
|
||||
echo "Building REH"
|
||||
npm run gulp minify-vscode-reh
|
||||
npm run gulp "vscode-reh-win32-${VSCODE_ARCH}-min-ci"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH_WEB}" != "no" ]]; then
|
||||
echo "Building REH-web"
|
||||
npm run gulp minify-vscode-reh-web
|
||||
npm run gulp "vscode-reh-web-win32-${VSCODE_ARCH}-min-ci"
|
||||
fi
|
||||
fi
|
||||
|
||||
cd ..
|
||||
97
build_cli.sh
Executable file
97
build_cli.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
cd cli
|
||||
|
||||
export CARGO_NET_GIT_FETCH_WITH_CLI="true"
|
||||
export VSCODE_CLI_APP_NAME="$( echo "${APP_NAME}" | awk '{print tolower($0)}' )"
|
||||
export VSCODE_CLI_BINARY_NAME="$( node -p "require(\"../product.json\").serverApplicationName" )"
|
||||
export VSCODE_CLI_UPDATE_ENDPOINT="https://raw.githubusercontent.com/VSCodium/versions/refs/heads/master"
|
||||
|
||||
if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
|
||||
export VSCODE_CLI_DOWNLOAD_ENDPOINT="https://github.com/VSCodium/vscodium-insiders/releases"
|
||||
else
|
||||
export VSCODE_CLI_DOWNLOAD_ENDPOINT="https://github.com/VSCodium/vscodium/releases"
|
||||
fi
|
||||
|
||||
TUNNEL_APPLICATION_NAME="$( node -p "require(\"../product.json\").tunnelApplicationName" )"
|
||||
NAME_SHORT="$( node -p "require(\"../product.json\").nameShort" )"
|
||||
|
||||
npm pack @vscode/openssl-prebuilt@0.0.11
|
||||
mkdir openssl
|
||||
tar -xvzf vscode-openssl-prebuilt-0.0.11.tgz --strip-components=1 --directory=openssl
|
||||
|
||||
if [[ "${OS_NAME}" == "osx" ]]; then
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" ]]; then
|
||||
VSCODE_CLI_TARGET="aarch64-apple-darwin"
|
||||
else
|
||||
VSCODE_CLI_TARGET="x86_64-apple-darwin"
|
||||
fi
|
||||
|
||||
export OPENSSL_LIB_DIR="$( pwd )/openssl/out/${VSCODE_ARCH}-osx/lib"
|
||||
export OPENSSL_INCLUDE_DIR="$( pwd )/openssl/out/${VSCODE_ARCH}-osx/include"
|
||||
|
||||
rustup target add "${VSCODE_CLI_TARGET}"
|
||||
|
||||
cargo build --release --target "${VSCODE_CLI_TARGET}" --bin=code
|
||||
|
||||
cp "target/${VSCODE_CLI_TARGET}/release/code" "../../VSCode-darwin-${VSCODE_ARCH}/${NAME_SHORT}.app/Contents/Resources/app/bin/${TUNNEL_APPLICATION_NAME}"
|
||||
elif [[ "${OS_NAME}" == "windows" ]]; then
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" ]]; then
|
||||
VSCODE_CLI_TARGET="aarch64-pc-windows-msvc"
|
||||
export VSCODE_CLI_RUST="-C target-feature=+crt-static -Clink-args=/guard:cf -Clink-args=/CETCOMPAT:NO"
|
||||
else
|
||||
VSCODE_CLI_TARGET="x86_64-pc-windows-msvc"
|
||||
export VSCODE_CLI_RUSTFLAGS="-Ctarget-feature=+crt-static -Clink-args=/guard:cf -Clink-args=/CETCOMPAT"
|
||||
fi
|
||||
|
||||
export VSCODE_CLI_CFLAGS="/guard:cf /Qspectre"
|
||||
export OPENSSL_LIB_DIR="$( pwd )/openssl/out/${VSCODE_ARCH}-windows-static/lib"
|
||||
export OPENSSL_INCLUDE_DIR="$( pwd )/openssl/out/${VSCODE_ARCH}-windows-static/include"
|
||||
|
||||
rustup target add "${VSCODE_CLI_TARGET}"
|
||||
|
||||
cargo build --release --target "${VSCODE_CLI_TARGET}" --bin=code
|
||||
|
||||
cp "target/${VSCODE_CLI_TARGET}/release/code.exe" "../../VSCode-win32-${VSCODE_ARCH}/bin/${TUNNEL_APPLICATION_NAME}.exe"
|
||||
else
|
||||
export OPENSSL_LIB_DIR="$( pwd )/openssl/out/${VSCODE_ARCH}-linux/lib"
|
||||
export OPENSSL_INCLUDE_DIR="$( pwd )/openssl/out/${VSCODE_ARCH}-linux/include"
|
||||
export VSCODE_SYSROOT_DIR="../.build/sysroots"
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" ]]; then
|
||||
VSCODE_CLI_TARGET="aarch64-unknown-linux-gnu"
|
||||
|
||||
if [[ "${CI_BUILD}" != "no" ]]; then
|
||||
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
|
||||
export CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc
|
||||
export CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
fi
|
||||
elif [[ "${VSCODE_ARCH}" == "armhf" ]]; then
|
||||
VSCODE_CLI_TARGET="armv7-unknown-linux-gnueabihf"
|
||||
|
||||
export OPENSSL_LIB_DIR="$( pwd )/openssl/out/arm-linux/lib"
|
||||
export OPENSSL_INCLUDE_DIR="$( pwd )/openssl/out/arm-linux/include"
|
||||
|
||||
if [[ "${CI_BUILD}" != "no" ]]; then
|
||||
export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc
|
||||
export CC_armv7_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc
|
||||
export CXX_armv7_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
fi
|
||||
elif [[ "${VSCODE_ARCH}" == "x64" ]]; then
|
||||
VSCODE_CLI_TARGET="x86_64-unknown-linux-gnu"
|
||||
fi
|
||||
|
||||
if [[ -n "${VSCODE_CLI_TARGET}" ]]; then
|
||||
rustup target add "${VSCODE_CLI_TARGET}"
|
||||
|
||||
cargo build --release --target "${VSCODE_CLI_TARGET}" --bin=code
|
||||
|
||||
cp "target/${VSCODE_CLI_TARGET}/release/code" "../../VSCode-linux-${VSCODE_ARCH}/bin/${TUNNEL_APPLICATION_NAME}"
|
||||
fi
|
||||
fi
|
||||
|
||||
cd ..
|
||||
686
check_tags.sh
686
check_tags.sh
@@ -1,6 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2129
|
||||
|
||||
# Env Paramaters
|
||||
# CHECK_ALL: yes | no
|
||||
# CHECK_REH: yes | no
|
||||
# CHECK_ONLY_REH: yes | no
|
||||
# FORCE_LINUX_SNAP: true
|
||||
|
||||
set -e
|
||||
|
||||
if [[ -z "${GH_TOKEN}" ]] && [[ -z "${GITHUB_TOKEN}" ]] && [[ -z "${GH_ENTERPRISE_TOKEN}" ]] && [[ -z "${GITHUB_ENTERPRISE_TOKEN}" ]]; then
|
||||
@@ -22,7 +28,7 @@ else
|
||||
LATEST_VERSION=$( echo "${GITHUB_RESPONSE}" | jq -c -r '.tag_name' )
|
||||
RECHECK_ASSETS="${SHOULD_BUILD}"
|
||||
|
||||
if [[ "${LATEST_VERSION}" =~ ^([0-9]+\.[0-9]+\.[0-9]+) ]]; then
|
||||
if [[ "${LATEST_VERSION}" =~ ^([0-9]+\.[0-9]+\.[0-5]) ]]; then
|
||||
if [[ "${MS_TAG}" != "${BASH_REMATCH[1]}" ]]; then
|
||||
echo "New VSCode version, new build"
|
||||
export SHOULD_BUILD="yes"
|
||||
@@ -105,6 +111,13 @@ elif [[ "${ASSETS}" != "null" ]]; then
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-cli-darwin-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on MacOS because we have no CLI archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the MacOS builds"
|
||||
fi
|
||||
@@ -136,63 +149,15 @@ elif [[ "${ASSETS}" != "null" ]]; then
|
||||
export SHOULD_BUILD_REH="no"
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Windows arm64 builds"
|
||||
fi
|
||||
|
||||
# windows-ia32
|
||||
elif [[ "${VSCODE_ARCH}" == "ia32" ]]; then
|
||||
if [[ -z $( contains "${APP_NAME}Setup-${VSCODE_ARCH}-${RELEASE_VERSION}.exe" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no system setup"
|
||||
if [[ -z $( contains "${APP_NAME_LC}-cli-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Windows arm64 because we have no CLI archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_EXE_SYS="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "UserSetup-${VSCODE_ARCH}-${RELEASE_VERSION}.exe" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no user setup"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_EXE_USR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.zip" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no zip"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_ZIP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-${RELEASE_VERSION}.msi" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_MSI="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-updates-disabled-${RELEASE_VERSION}.msi" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no updates-disabled msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_MSI_NOUP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Windows ia32 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Windows ia32 builds"
|
||||
echo "Already have all the Windows arm64 builds"
|
||||
fi
|
||||
|
||||
# windows-x64
|
||||
@@ -218,14 +183,18 @@ elif [[ "${ASSETS}" != "null" ]]; then
|
||||
export SHOULD_BUILD_ZIP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-${RELEASE_VERSION}.msi" ) ]]; then
|
||||
if [[ "${DISABLE_MSI}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_MSI="no"
|
||||
elif [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-${RELEASE_VERSION}.msi" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_MSI="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-updates-disabled-${RELEASE_VERSION}.msi" ) ]]; then
|
||||
if [[ "${DISABLE_MSI}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_MSI_NOUP="no"
|
||||
elif [[ -z $( contains "${APP_NAME}-${VSCODE_ARCH}-updates-disabled-${RELEASE_VERSION}.msi" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no updates-disabled msi"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
@@ -246,281 +215,400 @@ elif [[ "${ASSETS}" != "null" ]]; then
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-cli-win32-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Windows x64 because we have no CLI archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Windows x64 builds"
|
||||
fi
|
||||
fi
|
||||
elif [[ "${OS_NAME}" == "linux" ]]; then
|
||||
else
|
||||
if [[ "${OS_NAME}" == "linux" ]]; then
|
||||
if [[ "${CHECK_ONLY_REH}" == "yes" ]]; then
|
||||
|
||||
if [[ "${CHECK_ONLY_REH}" == "yes" ]]; then
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux ${VSCODE_ARCH} because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Linux REH ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux ${VSCODE_ARCH} because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Linux REH-web ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux ${VSCODE_ARCH} because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Linux REH ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-linux-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux ${VSCODE_ARCH} because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Linux REH-web ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
# linux-arm64
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ -z $( contains "arm64.deb" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
else
|
||||
if [[ -z $( contains "aarch64.rpm" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
# linux-arm64
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ -z $( contains "arm64.deb" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
if [[ -z $( contains "${APP_NAME}-linux-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "aarch64.rpm" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
if [[ -z $( contains "arm64.snap" ) || "${FORCE_LINUX_SNAP}" == "true" ]]; then
|
||||
echo "Building on Linux arm64 because we have no SNAP"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_SNAP="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm64 builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
# linux-armhf
|
||||
if [[ "${VSCODE_ARCH}" == "armhf" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ -z $( contains "armhf.deb" ) ]]; then
|
||||
echo "Building on Linux arm because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "armv7hl.rpm" ) ]]; then
|
||||
echo "Building on Linux arm because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-armhf-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-armhf-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-armhf-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
# linux-ppc64le
|
||||
if [[ "${VSCODE_ARCH}" == "ppc64le" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
SHOULD_BUILD_APPIMAGE="no"
|
||||
SHOULD_BUILD_DEB="no"
|
||||
SHOULD_BUILD_RPM="no"
|
||||
SHOULD_BUILD_TAR="no"
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-linux-ppc64le-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux PowerPC64LE because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-linux-ppc64le-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux PowerPC64LE because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux PowerPC64LE builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
# linux-riscv64
|
||||
if [[ "${VSCODE_ARCH}" == "riscv64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-riscv64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux RISC-V 64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-linux-riscv64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux RISC-V 64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-linux-riscv64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux RISC-V 64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux riscv64 builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
# linux-x64
|
||||
if [[ "${VSCODE_ARCH}" == "x64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ -z $( contains "amd64.deb" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "x86_64.rpm" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ "${DISABLE_APPIMAGE}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
elif [[ -z $( contains "x86_64.AppImage" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no AppImage"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-cli-linux-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm64 because we have no CLI archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
fi
|
||||
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm64 builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
# linux-armhf
|
||||
if [[ "${VSCODE_ARCH}" == "armhf" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ -z $( contains "armhf.deb" ) ]]; then
|
||||
echo "Building on Linux arm because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "armv7hl.rpm" ) ]]; then
|
||||
echo "Building on Linux arm because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-armhf-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-armhf-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-armhf-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-cli-linux-armhf-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux arm because we have no CLI archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
fi
|
||||
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
# linux-ppc64le
|
||||
if [[ "${VSCODE_ARCH}" == "ppc64le" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-ppc64le-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux PowerPC64LE because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-ppc64le-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux PowerPC64LE because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-ppc64le-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux PowerPC64LE because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux PowerPC64LE builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
# linux-riscv64
|
||||
if [[ "${VSCODE_ARCH}" == "riscv64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-riscv64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux RISC-V 64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-riscv64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux RISC-V 64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-riscv64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux RISC-V 64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux riscv64 builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux x64 builds"
|
||||
# linux-loong64
|
||||
if [[ "${VSCODE_ARCH}" == "loong64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-loong64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux Loong64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-loong64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux Loong64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-loong64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux Loong64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux Loong64 builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
# linux-s390x
|
||||
if [[ "${VSCODE_ARCH}" == "s390x" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
SHOULD_BUILD_APPIMAGE="no"
|
||||
SHOULD_BUILD_DEB="no"
|
||||
SHOULD_BUILD_RPM="no"
|
||||
SHOULD_BUILD_TAR="no"
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-linux-s390x-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux s390x because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-linux-s390x-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux s390x because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux s390x builds"
|
||||
fi
|
||||
fi
|
||||
|
||||
# linux-x64
|
||||
if [[ "${VSCODE_ARCH}" == "x64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ -z $( contains "amd64.deb" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_DEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "x86_64.rpm" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_RPM="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME}-linux-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_TAR="no"
|
||||
fi
|
||||
|
||||
if [[ "${DISABLE_APPIMAGE}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
elif [[ -z $( contains "x86_64.AppImage" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no AppImage"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "amd64.snap" ) || "${FORCE_LINUX_SNAP}" == "true" ]]; then
|
||||
echo "Building on Linux x64 because we have no SNAP"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_SNAP="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-linux-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-linux-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-cli-linux-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Linux x64 because we have no CLI archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_CLI="no"
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD}" != "yes" ]]; then
|
||||
echo "Already have all the Linux x64 builds"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
elif [[ "${OS_NAME}" == "alpine" ]]; then
|
||||
if [[ "${OS_NAME}" == "alpine" ]] || [[ "${OS_NAME}" == "linux" && "${CHECK_ALL}" == "yes" ]]; then
|
||||
|
||||
if [[ "${CHECK_ONLY_REH}" == "yes" ]]; then
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-alpine-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine ${VSCODE_ARCH} because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Alpine REH ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-alpine-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine ${VSCODE_ARCH} because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Alpine REH-web ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
else
|
||||
|
||||
# alpine-arm64
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-alpine-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine arm64 because we have no REH archive"
|
||||
if [[ "${CHECK_ONLY_REH}" == "yes" ]]; then
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-alpine-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine ${VSCODE_ARCH} because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Alpine REH ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-alpine-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine arm64 because we have no REH-web archive"
|
||||
if [[ -z $( contains "${APP_NAME_LC}-reh-web-alpine-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine ${VSCODE_ARCH} because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
echo "Already have the Alpine REH-web ${VSCODE_ARCH} archive"
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
|
||||
# alpine-x64
|
||||
if [[ "${VSCODE_ARCH}" == "x64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-alpine-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine x64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
# alpine-arm64
|
||||
if [[ "${VSCODE_ARCH}" == "arm64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-alpine-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine arm64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-alpine-arm64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine arm64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-alpine-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine x64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
# alpine-x64
|
||||
if [[ "${VSCODE_ARCH}" == "x64" || "${CHECK_ALL}" == "yes" ]]; then
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-alpine-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine x64 because we have no REH archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
fi
|
||||
|
||||
if [[ "${CHECK_REH}" != "no" && -z $( contains "${APP_NAME_LC}-reh-web-alpine-x64-${RELEASE_VERSION}.tar.gz" ) ]]; then
|
||||
echo "Building on Alpine x64 because we have no REH-web archive"
|
||||
export SHOULD_BUILD="yes"
|
||||
else
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -533,9 +621,19 @@ else
|
||||
SHOULD_BUILD_DEB="no"
|
||||
SHOULD_BUILD_RPM="no"
|
||||
SHOULD_BUILD_TAR="no"
|
||||
SHOULD_BUILD_CLI="no"
|
||||
elif [[ "${VSCODE_ARCH}" == "riscv64" ]]; then
|
||||
SHOULD_BUILD_DEB="no"
|
||||
SHOULD_BUILD_RPM="no"
|
||||
SHOULD_BUILD_CLI="no"
|
||||
elif [[ "${VSCODE_ARCH}" == "loong64" ]]; then
|
||||
SHOULD_BUILD_DEB="no"
|
||||
SHOULD_BUILD_RPM="no"
|
||||
SHOULD_BUILD_CLI="no"
|
||||
elif [[ "${VSCODE_ARCH}" == "s390x" ]]; then
|
||||
SHOULD_BUILD_DEB="no"
|
||||
SHOULD_BUILD_RPM="no"
|
||||
SHOULD_BUILD_CLI="no"
|
||||
fi
|
||||
if [[ "${VSCODE_ARCH}" != "x64" || "${DISABLE_APPIMAGE}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_APPIMAGE="no"
|
||||
@@ -545,6 +643,10 @@ else
|
||||
export SHOULD_BUILD_REH="no"
|
||||
export SHOULD_BUILD_REH_WEB="no"
|
||||
fi
|
||||
if [[ "${DISABLE_MSI}" == "yes" ]]; then
|
||||
export SHOULD_BUILD_MSI="no"
|
||||
export SHOULD_BUILD_MSI_NOUP="no"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Release assets do not exist at all, continuing build"
|
||||
@@ -562,7 +664,9 @@ echo "SHOULD_BUILD_MSI=${SHOULD_BUILD_MSI}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_MSI_NOUP=${SHOULD_BUILD_MSI_NOUP}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_REH=${SHOULD_BUILD_REH}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_REH_WEB=${SHOULD_BUILD_REH_WEB}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_CLI=${SHOULD_BUILD_CLI}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_RPM=${SHOULD_BUILD_RPM}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_SNAP=${SHOULD_BUILD_SNAP}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_TAR=${SHOULD_BUILD_TAR}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_ZIP=${SHOULD_BUILD_ZIP}" >> "${GITHUB_ENV}"
|
||||
echo "SHOULD_BUILD_SRC=${SHOULD_BUILD_SRC}" >> "${GITHUB_ENV}"
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
# first so `bash` is the one installed with `git`, avoid conflict with WSL
|
||||
$env:Path = "C:\Program Files\Git\bin;" + $env:Path
|
||||
|
||||
bash ./build/build.sh
|
||||
bash ./dev/build.sh
|
||||
@@ -2,12 +2,15 @@
|
||||
# shellcheck disable=SC1091,SC2129
|
||||
|
||||
### Windows
|
||||
# to run with Bash: "C:\Program Files\Git\bin\bash.exe" ./build/build.sh
|
||||
# to run with Bash: "C:\Program Files\Git\bin\bash.exe" ./dev/build.sh
|
||||
###
|
||||
|
||||
export APP_NAME="VSCodium"
|
||||
export ASSETS_REPOSITORY="VSCodium/vscodium"
|
||||
export BINARY_NAME="codium"
|
||||
export CI_BUILD="no"
|
||||
export GH_REPO_PATH="VSCodium/vscodium"
|
||||
export ORG_NAME="VSCodium"
|
||||
export SHOULD_BUILD="yes"
|
||||
export SKIP_ASSETS="yes"
|
||||
export SKIP_BUILD="no"
|
||||
@@ -19,6 +22,7 @@ export VSCODE_SKIP_NODE_VERSION_CHECK="yes"
|
||||
while getopts ":ilops" opt; do
|
||||
case "$opt" in
|
||||
i)
|
||||
export ASSETS_REPOSITORY="VSCodium/vscodium-insiders"
|
||||
export BINARY_NAME="codium-insiders"
|
||||
export VSCODE_QUALITY="insider"
|
||||
;;
|
||||
@@ -59,6 +63,10 @@ elif [[ "${UNAME_ARCH}" == "ppc64le" ]]; then
|
||||
export VSCODE_ARCH="ppc64le"
|
||||
elif [[ "${UNAME_ARCH}" == "riscv64" ]]; then
|
||||
export VSCODE_ARCH="riscv64"
|
||||
elif [[ "${UNAME_ARCH}" == "loongarch64" ]]; then
|
||||
export VSCODE_ARCH="loong64"
|
||||
elif [[ "${UNAME_ARCH}" == "s390x" ]]; then
|
||||
export VSCODE_ARCH="s390x"
|
||||
else
|
||||
export VSCODE_ARCH="x64"
|
||||
fi
|
||||
@@ -80,16 +88,16 @@ if [[ "${SKIP_SOURCE}" == "no" ]]; then
|
||||
. version.sh
|
||||
|
||||
# save variables for later
|
||||
echo "MS_TAG=\"${MS_TAG}\"" > build.env
|
||||
echo "MS_COMMIT=\"${MS_COMMIT}\"" >> build.env
|
||||
echo "RELEASE_VERSION=\"${RELEASE_VERSION}\"" >> build.env
|
||||
echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\"" >> build.env
|
||||
echo "MS_TAG=\"${MS_TAG}\"" > dev/build.env
|
||||
echo "MS_COMMIT=\"${MS_COMMIT}\"" >> dev/build.env
|
||||
echo "RELEASE_VERSION=\"${RELEASE_VERSION}\"" >> dev/build.env
|
||||
echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\"" >> dev/build.env
|
||||
else
|
||||
if [[ "${SKIP_ASSETS}" != "no" ]]; then
|
||||
rm -rf VSCode*
|
||||
rm -rf vscode-* VSCode-*
|
||||
fi
|
||||
|
||||
. build.env
|
||||
. dev/build.env
|
||||
|
||||
echo "MS_TAG=\"${MS_TAG}\""
|
||||
echo "MS_COMMIT=\"${MS_COMMIT}\""
|
||||
@@ -104,14 +112,38 @@ if [[ "${SKIP_BUILD}" == "no" ]]; then
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
|
||||
while [[ -n "$( git log -1 | grep "VSCODIUM HELPER" )" ]]; do
|
||||
git reset -q --hard HEAD~
|
||||
done
|
||||
|
||||
rm -rf .build out*
|
||||
|
||||
cd ..
|
||||
fi
|
||||
|
||||
if [[ -f "./include_${OS_NAME}.gypi" ]]; then
|
||||
echo "Installing custom ~/.gyp/include.gypi"
|
||||
|
||||
mkdir -p ~/.gyp
|
||||
|
||||
if [[ -f "${HOME}/.gyp/include.gypi" ]]; then
|
||||
mv ~/.gyp/include.gypi ~/.gyp/include.gypi.pre-vscodium
|
||||
else
|
||||
echo "{}" > ~/.gyp/include.gypi.pre-vscodium
|
||||
fi
|
||||
|
||||
cp ./build/osx/include.gypi ~/.gyp/include.gypi
|
||||
fi
|
||||
|
||||
. build.sh
|
||||
|
||||
if [[ -f "./include_${OS_NAME}.gypi" ]]; then
|
||||
mv ~/.gyp/include.gypi.pre-vscodium ~/.gyp/include.gypi
|
||||
fi
|
||||
|
||||
if [[ "${VSCODE_LATEST}" == "yes" ]]; then
|
||||
jsonTmp=$( cat "${VSCODE_QUALITY}.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )
|
||||
echo "${jsonTmp}" > "${VSCODE_QUALITY}.json" && unset jsonTmp
|
||||
jsonTmp=$( cat "./upstream/${VSCODE_QUALITY}.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )
|
||||
echo "${jsonTmp}" > "./upstream/${VSCODE_QUALITY}.json" && unset jsonTmp
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -120,8 +152,8 @@ if [[ "${SKIP_ASSETS}" == "no" ]]; then
|
||||
rm -rf build/windows/msi/releasedir
|
||||
fi
|
||||
|
||||
if [[ "${OS_NAME}" == "osx" && -f "./macos-codesign.env" ]]; then
|
||||
. macos-codesign.env
|
||||
if [[ "${OS_NAME}" == "osx" && -f "dev/osx/codesign.env" ]]; then
|
||||
. dev/osx/macos-codesign.env
|
||||
|
||||
echo "CERTIFICATE_OSX_ID: ${CERTIFICATE_OSX_ID}"
|
||||
fi
|
||||
@@ -20,20 +20,13 @@ while getopts ":ilp" opt; do
|
||||
export VSCODE_LATEST="yes"
|
||||
;;
|
||||
p)
|
||||
export SKIP_ASSETS="no"
|
||||
export SKIP_ASSETS="no"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if ! exists yarn; then
|
||||
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs desktop-file-utils
|
||||
|
||||
npm install -g yarn
|
||||
fi
|
||||
|
||||
UNAME_ARCH=$( uname -m )
|
||||
|
||||
if [[ "${UNAME_ARCH}" == "x86_64" ]]; then
|
||||
12
dev/cli.sh
Executable file
12
dev/cli.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
export CARGO_NET_GIT_FETCH_WITH_CLI="true"
|
||||
export VSCODE_CLI_APP_NAME="vscodium"
|
||||
export VSCODE_CLI_BINARY_NAME="codium-server-insiders"
|
||||
export VSCODE_CLI_DOWNLOAD_URL="https://github.com/VSCodium/vscodium-insiders/releases"
|
||||
export VSCODE_CLI_QUALITY="insider"
|
||||
export VSCODE_CLI_UPDATE_URL="https://raw.githubusercontent.com/VSCodium/versions/refs/heads/master"
|
||||
|
||||
cargo build --release --target aarch64-apple-darwin --bin=code
|
||||
|
||||
cp target/aarch64-apple-darwin/release/code "../../VSCode-darwin-arm64/VSCodium - Insiders.app/Contents/Resources/app/bin/codium-tunnel-insiders"
|
||||
|
||||
"../../VSCode-darwin-arm64/VSCodium - Insiders.app/Contents/Resources/app/bin/codium-insiders" serve-web
|
||||
64
dev/merge-patches.sh
Executable file
64
dev/merge-patches.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
normalize_file() {
|
||||
if [[ "${1}" == *patch ]]; then
|
||||
FILE="${1}"
|
||||
else
|
||||
FILE="${1}.patch"
|
||||
fi
|
||||
|
||||
if [[ "${FILE}" == patches/* ]]; then
|
||||
FILE="../${FILE}"
|
||||
else
|
||||
FILE="../patches/${FILE}"
|
||||
fi
|
||||
}
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
|
||||
while [[ -n "$( git log -1 | grep "VSCODIUM HELPER" )" ]]; do
|
||||
git reset -q --hard HEAD~
|
||||
done
|
||||
|
||||
git apply --reject "../patches/helper/settings.patch"
|
||||
git add .
|
||||
git commit --no-verify -q -m "VSCODIUM HELPER"
|
||||
|
||||
while [ $# -gt 1 ]; do
|
||||
normalize_file "${1}"
|
||||
|
||||
echo "FILE: ${FILE}"
|
||||
|
||||
if [[ -f "${FILE}" ]]; then
|
||||
if [[ -f "${FILE}.bak" ]]; then
|
||||
mv -f $FILE{.bak,}
|
||||
fi
|
||||
|
||||
git apply --reject "${FILE}" || true
|
||||
fi
|
||||
|
||||
while [[ -n "$( find . -name '*.rej' -print )" ]]; do
|
||||
echo
|
||||
read -rp "Press any key when the conflict have been resolved..." -n1 -s
|
||||
done
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
normalize_file "${1}"
|
||||
|
||||
git add .
|
||||
git diff --staged -U1 > "${FILE}"
|
||||
|
||||
if [[ "${FILE}" != "../patches/helper/settings.patch" ]]; then
|
||||
git reset -q --hard HEAD
|
||||
else
|
||||
git reset -q --hard HEAD~
|
||||
fi
|
||||
|
||||
echo "The patch has been generated."
|
||||
74
dev/patch.sh
Executable file
74
dev/patch.sh
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
normalize_file() {
|
||||
if [[ "${1}" == *patch ]]; then
|
||||
FILE="${1}"
|
||||
else
|
||||
FILE="${1}.patch"
|
||||
fi
|
||||
|
||||
if [[ "${FILE}" == patches/* ]]; then
|
||||
FILE="../${FILE}"
|
||||
else
|
||||
FILE="../patches/${FILE}"
|
||||
fi
|
||||
}
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
|
||||
while [[ -n "$( git log -1 | grep "VSCODIUM HELPER" )" ]]; do
|
||||
git reset -q --hard HEAD~
|
||||
done
|
||||
|
||||
normalize_file "${1}"
|
||||
|
||||
if [[ "${FILE}" != "../patches/helper/settings.patch" ]]; then
|
||||
git apply --reject "../patches/helper/settings.patch"
|
||||
|
||||
while [ $# -gt 1 ]; do
|
||||
echo "Parameter: $1"
|
||||
normalize_file "${1}"
|
||||
|
||||
git apply --reject "${FILE}"
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
git add .
|
||||
git commit --no-verify -q -m "VSCODIUM HELPER"
|
||||
|
||||
normalize_file "${1}"
|
||||
fi
|
||||
|
||||
echo "FILE: ${FILE}"
|
||||
|
||||
if [[ -f "${FILE}" ]]; then
|
||||
if [[ -f "${FILE}.bak" ]]; then
|
||||
mv -f $FILE{.bak,}
|
||||
fi
|
||||
|
||||
git apply --reject "${FILE}" || true
|
||||
fi
|
||||
|
||||
read -rp "Press any key when the conflict have been resolved..." -n1 -s
|
||||
|
||||
while [[ -n "$( find . -name '*.rej' -print )" ]]; do
|
||||
echo
|
||||
read -rp "Press any key when the conflict have been resolved..." -n1 -s
|
||||
done
|
||||
|
||||
git add .
|
||||
git diff --staged -U1 > "${FILE}"
|
||||
|
||||
if [[ "${FILE}" != "../patches/helper/settings.patch" ]]; then
|
||||
git reset -q --hard HEAD
|
||||
else
|
||||
git reset -q --hard HEAD~
|
||||
fi
|
||||
|
||||
echo "The patch has been generated."
|
||||
@@ -14,7 +14,6 @@ while getopts ":i" opt; do
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
URL=$( curl -s "https://update.code.visualstudio.com/api/update/win32-x64-archive/${VSCODE_QUALITY}/0000000000000000000000000000000000000000" | jq -c '.url' | sed -E 's/.*"([^"]+)".*/\1/' )
|
||||
# echo "url: ${URL}"
|
||||
FILE="${URL##*/}"
|
||||
@@ -30,10 +29,17 @@ if [[ ! -d "${DIRECTORY}" ]]; then
|
||||
unzip "${FILE}" -d "${DIRECTORY}"
|
||||
fi
|
||||
|
||||
APIS=$( jq -r '.extensionEnabledApiProposals' "${DIRECTORY}/resources/app/product.json" )
|
||||
BIN_PATH=$(find "${DIRECTORY}/bin" -type f ! -name "*.*")
|
||||
|
||||
LINE="$( grep -E '^[[:space:]]*(export[[:space:]]+)?VERSIONFOLDER[[:space:]]*=' "$BIN_PATH" | tail -n1 )"
|
||||
VERSIONFOLDER="${LINE#*=}"
|
||||
VERSIONFOLDER="${VERSIONFOLDER#\"}"
|
||||
VERSIONFOLDER="${VERSIONFOLDER%\"}"
|
||||
|
||||
APIS=$( jq -r '.extensionEnabledApiProposals' "${DIRECTORY}/${VERSIONFOLDER}/resources/app/product.json" )
|
||||
APIS=$( echo "${APIS}" | jq '. += {"jeanp413.open-remote-ssh": ["resolvers", "tunnels", "terminalDataWriteEvent", "contribRemoteHelp", "contribViewsRemote"]}' )
|
||||
APIS=$( echo "${APIS}" | jq '. += {"jeanp413.open-remote-wsl": ["resolvers", "contribRemoteHelp", "contribViewsRemote"]}' )
|
||||
echo "$( jq --argjson v "${APIS}" 'setpath(["extensionEnabledApiProposals"]; $v)' product.json )" > product.json
|
||||
|
||||
jsonTmp=$( jq --argjson v "${APIS}" 'setpath(["extensionEnabledApiProposals"]; $v)' product.json )
|
||||
echo "${jsonTmp}" > product.json && unset jsonTmp
|
||||
APIS=$( jq -r '.extensionsEnabledWithApiProposalVersion' "${DIRECTORY}/${VERSIONFOLDER}/resources/app/product.json" )
|
||||
echo "$( jq --argjson v "${APIS}" 'setpath(["extensionsEnabledWithApiProposalVersion"]; $v)' product.json )" > product.json
|
||||
190
dev/update_patches.sh
Executable file
190
dev/update_patches.sh
Executable file
@@ -0,0 +1,190 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
export VSCODE_QUALITY="stable"
|
||||
|
||||
while getopts ":i" opt; do
|
||||
case "$opt" in
|
||||
i)
|
||||
export VSCODE_QUALITY="insider"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
generate_rejects() {
|
||||
local PATCH_FILE="$1"
|
||||
|
||||
if ! command -v python3 >/dev/null 2>&1; then
|
||||
echo "python3 not found; cannot create reject files for ${PATCH_FILE}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
PATCH_FOR_REJECT="${PATCH_FILE}" python3 <<'PY'
|
||||
import os
|
||||
import pathlib
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
|
||||
def chunk_needs_reject(raw_chunk: str) -> bool:
|
||||
"""Return True when a patch chunk cannot be applied nor reversed."""
|
||||
|
||||
chunk = raw_chunk if raw_chunk.endswith("\n") else raw_chunk + "\n"
|
||||
|
||||
def _run_git(extra_args):
|
||||
return subprocess.run(
|
||||
["git", "apply", "--check", "--ignore-whitespace", *extra_args],
|
||||
input=chunk,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
)
|
||||
|
||||
forward = _run_git([])
|
||||
if forward.returncode == 0:
|
||||
return False
|
||||
|
||||
reverse = _run_git(["--reverse"])
|
||||
if reverse.returncode == 0:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
patch_path = os.environ["PATCH_FOR_REJECT"]
|
||||
with open(patch_path, "r", encoding="utf-8", errors="ignore") as src:
|
||||
content = src.read()
|
||||
|
||||
chunks = re.split(r'(?m)^diff --git ', content)
|
||||
for chunk in chunks:
|
||||
chunk = chunk.strip()
|
||||
if not chunk:
|
||||
continue
|
||||
chunk = "diff --git " + chunk
|
||||
match = re.search(r'^diff --git a/(.*?) b/(.*?)$', chunk, re.MULTILINE)
|
||||
if not match:
|
||||
continue
|
||||
a_path, b_path = match.groups()
|
||||
candidate = b_path if b_path != "/dev/null" else a_path
|
||||
if candidate in ("/dev/null", ""):
|
||||
continue
|
||||
if candidate.startswith("../") or candidate.startswith("..\\") or candidate.startswith("/"):
|
||||
continue
|
||||
dest = pathlib.Path(candidate + ".rej")
|
||||
if not chunk_needs_reject(chunk):
|
||||
continue
|
||||
dest.parent.mkdir(parents=True, exist_ok=True)
|
||||
with dest.open("w", encoding="utf-8") as fh:
|
||||
fh.write(chunk)
|
||||
if not chunk.endswith("\n"):
|
||||
fh.write("\n")
|
||||
print(f"generated reject: {dest}")
|
||||
PY
|
||||
}
|
||||
|
||||
check_file() {
|
||||
while [ $# -gt 1 ]; do
|
||||
git apply --reject "${1}"
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
if [[ -f "${1}.bak" ]]; then
|
||||
mv -f $1{.bak,}
|
||||
fi
|
||||
|
||||
if [[ -f "${1}" ]]; then
|
||||
git apply --reject "../patches/helper/settings.patch"
|
||||
git add .
|
||||
git commit --no-verify -q -m "VSCODIUM HELPER"
|
||||
|
||||
echo applying patch: "${1}"
|
||||
|
||||
if ! git apply --ignore-whitespace "${1}"; then
|
||||
echo failed to apply patch "${1}"
|
||||
|
||||
git apply --reject --verbose "${1}"
|
||||
|
||||
if [[ -z "$( find . -name '*.rej' -print )" ]]; then
|
||||
echo "no .rej generated by git; creating fallback rejects for ${1}"
|
||||
|
||||
if ! generate_rejects "${1}"; then
|
||||
echo "failed to generate reject files for ${1}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$( find . -name '*.rej' -print )" ]]; then
|
||||
echo "still no .rej after attempting to create them for ${1}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
while [[ -n "$( find . -name '*.rej' -print )" ]]; do
|
||||
find . -name '*.rej' -print
|
||||
read -rp "Press any key when the conflict have been resolved..." -n1 -s
|
||||
echo
|
||||
done
|
||||
|
||||
git restore .vscode/settings.json
|
||||
git add .
|
||||
git diff --staged -U1 > "${1}"
|
||||
fi
|
||||
|
||||
git add .
|
||||
git reset -q --hard HEAD~
|
||||
fi
|
||||
}
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
|
||||
while [[ -n "$( git log -1 | grep "VSCODIUM HELPER" )" ]]; do
|
||||
git reset -q --hard HEAD~
|
||||
done
|
||||
|
||||
for FILE in ../patches/*.patch; do
|
||||
if [[ "${FILE}" == *"/fix-policies.patch" ]]; then
|
||||
check_file "../patches/fix-keymap.patch" "../patches/fix-policies.patch"
|
||||
else
|
||||
check_file "${FILE}"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
|
||||
for FILE in ../patches/insider/*.patch; do
|
||||
check_file "${FILE}"
|
||||
done
|
||||
fi
|
||||
|
||||
for ARCH in alpine linux osx windows; do
|
||||
for FILE in "../patches/${ARCH}/"*.patch; do
|
||||
if [[ "${ARCH}" == "linux" && "${FILE}" == *"/arch-"* ]] || [[ "${ARCH}" == "linux" && "${FILE}" == *"/fix-dependencies.patch" ]] || [[ "${ARCH}" == "windows" && "${FILE}" == *"/cli"* ]]; then
|
||||
echo "skip ${FILE}"
|
||||
else
|
||||
check_file "${FILE}"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "${ARCH}" == "linux" ]]; then
|
||||
check_file "../patches/optional-tree-sitter.patch" "../patches/linux/fix-dependencies.patch"
|
||||
|
||||
check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch"
|
||||
check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch"
|
||||
check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch" "../patches/linux/arch-2-riscv64.patch"
|
||||
check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch" "../patches/linux/arch-2-riscv64.patch" "../patches/linux/arch-3-loong64.patch"
|
||||
check_file "../patches/cli.patch" "../patches/linux/arch-0-support.patch" "../patches/linux/arch-1-ppc64le.patch" "../patches/linux/arch-2-riscv64.patch" "../patches/linux/arch-3-loong64.patch" "../patches/linux/arch-4-s390x.patch"
|
||||
elif [[ "${ARCH}" == "windows" ]]; then
|
||||
check_file "../patches/cli.patch" "../patches/windows/cli.patch"
|
||||
fi
|
||||
|
||||
for TARGET in client reh; do
|
||||
for FILE in "../patches/${ARCH}/${TARGET}/"*.patch; do
|
||||
check_file "${FILE}"
|
||||
done
|
||||
|
||||
for FILE in "../patches/${ARCH}/${TARGET}/"*/*.patch; do
|
||||
check_file "${FILE}"
|
||||
done
|
||||
done
|
||||
done
|
||||
@@ -1,3 +1,5 @@
|
||||
<!-- order: 0 -->
|
||||
|
||||
# Accounts authentication
|
||||
|
||||
## GitHub
|
||||
|
||||
22
docs/ext-github-copilot.md
Normal file
22
docs/ext-github-copilot.md
Normal file
@@ -0,0 +1,22 @@
|
||||
<!-- order: 16 -->
|
||||
|
||||
# Extension: GitHub Copilot
|
||||
|
||||
Unlike Visual Studio Code, in VSCodium, Copilot features are disabled and not configured.
|
||||
|
||||
## Update your settings
|
||||
|
||||
In your settings, sets:
|
||||
```
|
||||
"chat.disableAIFeatures": false,
|
||||
```
|
||||
|
||||
## Configure product.json
|
||||
|
||||
You need to create a custom `product.json` at the following location (replace `VSCodium` by `VSCodium - Insiders` if you use that):
|
||||
- Windows: `%APPDATA%\VSCodium` or `%USERPROFILE%\AppData\Roaming\VSCodium`
|
||||
- macOS: `~/Library/Application Support/VSCodium`
|
||||
- Linux: `$XDG_CONFIG_HOME/VSCodium` or `~/.config/VSCodium`
|
||||
|
||||
Then you will need to follow the guide [Running with Code OSS](https://github.com/microsoft/vscode-copilot-chat/blob/main/CONTRIBUTING.md#running-with-code-oss) with the `product.json` file created previously.
|
||||
You will need to add the properties: `trustedExtensionAuthAccess` and `defaultChatAgent`.
|
||||
@@ -1,29 +1,44 @@
|
||||
<!-- order: 0 -->
|
||||
|
||||
# Extensions compatibility
|
||||
|
||||
## Partial Compatibility
|
||||
## Table of Contents
|
||||
|
||||
- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)
|
||||
> [Since May 2021](https://devblogs.microsoft.com/python/python-in-visual-studio-code-may-2021-release/), Python is using a closed source language server ([Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance))
|
||||
- [Incompatibility](#incompatibility)
|
||||
- [Replacements](#replacements)
|
||||
- [C/C++](#cc)
|
||||
- [Python](#python)
|
||||
- [Remote](#remote)
|
||||
|
||||
## Incompatibility
|
||||
## <a id="incompatibility"></a>Incompatibility
|
||||
|
||||
- [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop)
|
||||
> It's officially unsupported: https://github.com/James-Yu/LaTeX-Workshop/wiki/FAQ#vscodium-is-not-officially-supported
|
||||
|
||||
## Incompatibility due to licensing
|
||||
|
||||
The following extensions are not compatible with VSCodium due to their licensing:
|
||||
Most Microsoft extensions are limited to run on only MS products by their license and by running additional checks in their proprietary code.
|
||||
|
||||
Extensions incompatible with VSCodium **include**:
|
||||
- [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)
|
||||
- [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop) (explicitly unsupported, as [indicated in the FAQ](https://github.com/James-Yu/LaTeX-Workshop/wiki/FAQ#vscodium-is-not-officially-supported))
|
||||
- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare)
|
||||
- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)
|
||||
- [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
||||
- [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh)
|
||||
- [Remote - SSH: Editing Configuration Files](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-edit)
|
||||
- [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl)
|
||||
|
||||
## Replacements
|
||||
## <a id="replacements"></a>Replacements
|
||||
|
||||
The following extensions are functional replacements for incompatible extensions:
|
||||
|
||||
- [Open Remote - SSH](https://open-vsx.org/extension/jeanp413/open-remote-ssh)
|
||||
### <a id="cc"></a>C/C++
|
||||
|
||||
- [clangd](https://open-vsx.org/extension/llvm-vs-code-extensions/vscode-clangd) for full featured editing (including IntelliSense)
|
||||
- [Native Debug](https://open-vsx.org/extension/webfreak/debug) for Debugging with GDB + LLDB
|
||||
Note that there are many working debugging extensions and specialized ones including for microcontrollers.
|
||||
|
||||
### <a id="python"></a>Python
|
||||
|
||||
- [BasedPyright](https://open-vsx.org/extension/detachhead/basedpyright)
|
||||
|
||||
### <a id="remote"></a>Remote Development
|
||||
|
||||
- [Open Remote - SSH](https://open-vsx.org/extension/jeanp413/open-remote-ssh) (SSH server must be configured with the setting `AllowTcpForwarding yes`.)
|
||||
- [Open Remote - WSL](https://open-vsx.org/extension/jeanp413/open-remote-wsl)
|
||||
- [BasedPyright](https://open-vsx.org/extension/detachhead/basedpyright) (open-source alternative to Pylance)
|
||||
|
||||
136
docs/extensions.md
Normal file
136
docs/extensions.md
Normal file
@@ -0,0 +1,136 @@
|
||||
<!-- order: 15 -->
|
||||
|
||||
# Extensions + Marketplace
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Marketplace](#marketplace)
|
||||
- [How to use the OpenVSX Marketplace](#howto-openvsx-marketplace)
|
||||
- [How to use a different extension gallery](#howto-switch-marketplace)
|
||||
- [How to self host your own extension gallery](#howto-selfhost-marketplace)
|
||||
- [Visual Studio Marketplace](#visual-studio-marketplace)
|
||||
- [Proprietary Debugging Tools](#proprietary-debugging-tools)
|
||||
- [Proprietary Extensions](#proprietary-extensions)
|
||||
- [Using the "VSIX Manager" Extension](#vsix-manager)
|
||||
- [Extensions compatibility](https://github.com/VSCodium/vscodium/blob/master/docs/extensions-compatibility.md)
|
||||
|
||||
## <a id="marketplace"></a>Marketplace
|
||||
|
||||
Being a vscode based editor, VSCodium gets additional features by installing Visual Studio Code extensions.
|
||||
Unfortunately, as Microsoft [prohibits usages of the Microsoft marketplace by any other products](https://github.com/microsoft/vscode/issues/31168) or redistribution of `.vsix` files from it, in order to use Visual Studio Code extensions in non-Microsoft products those need to be installed differently.
|
||||
|
||||
By default, the `product.json` file is set up to use [open-vsx.org](https://open-vsx.org/) as extension gallery, which has an [adapter](https://github.com/eclipse/openvsx/wiki/Using-Open-VSX-in-VS-Code) to the Marketplace API used by Visual Studio Code. Since that is a rather new project, you will likely miss some extensions you know from the Visual Studio Marketplace. You have the following options to obtain such missing extensions:
|
||||
|
||||
* Ask the extension maintainers to publish to [open-vsx.org](https://open-vsx.org/) in addition to the Visual Studio Marketplace. The publishing process is documented in the [Open VSX Wiki](https://github.com/eclipse/openvsx/wiki/Publishing-Extensions).
|
||||
* Create a pull request to [this repository](https://github.com/open-vsx/publish-extensions) to have the [@open-vsx](https://github.com/open-vsx) service account publish the extensions for you.
|
||||
* Download and [install the vsix files](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix), for example from the release page in their source repository.
|
||||
|
||||
## <a id="howto-openvsx-marketplace"></a>How to use the Open VSX Registry
|
||||
|
||||
As noted above, the [Open VSX Registry](https://open-vsx.org/) is the pre-set extension gallery in VSCodium. Using the extension view in VSCodium will therefore by default use it.
|
||||
See [this article](https://www.gitpod.io/blog/open-vsx/) for more information on the motivation behind Open VSX.
|
||||
|
||||
## <a id="howto-switch-marketplace"></a>How to use a different extension gallery
|
||||
|
||||
You can switch from the pre-set Open VSX Registry by configuring the endpoints using the following solutions.
|
||||
|
||||
You can either use the following environment variables:
|
||||
- `VSCODE_GALLERY_SERVICE_URL` ***(required)***
|
||||
- `VSCODE_GALLERY_ITEM_URL` ***(required)***
|
||||
- `VSCODE_GALLERY_CACHE_URL`
|
||||
- `VSCODE_GALLERY_CONTROL_URL`
|
||||
- `VSCODE_GALLERY_EXTENSION_URL_TEMPLATE` ***(required)***
|
||||
- `VSCODE_GALLERY_RESOURCE_URL_TEMPLATE`
|
||||
|
||||
Or by creating a custom `product.json` at the following location (replace `VSCodium` by `VSCodium - Insiders` if you use that):
|
||||
- Windows: `%APPDATA%\VSCodium` or `%USERPROFILE%\AppData\Roaming\VSCodium`
|
||||
- macOS: `~/Library/Application Support/VSCodium`
|
||||
- Linux: `$XDG_CONFIG_HOME/VSCodium` or `~/.config/VSCodium`
|
||||
|
||||
with the content like:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"extensionsGallery": {
|
||||
"serviceUrl": "", // required
|
||||
"itemUrl": "", // required
|
||||
"cacheUrl": "",
|
||||
"controlUrl": "",
|
||||
"extensionUrlTemplate": "", // required
|
||||
"resourceUrlTemplate": "",
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## <a id="howto-selfhost-marketplace"></a>How to self-host your own extension gallery
|
||||
|
||||
Individual developers and enterprise companies in regulated or security-conscious industries can self-host their own extension gallery.
|
||||
|
||||
There are likely other options, but the following were reported to work:
|
||||
|
||||
* [Open VSX](https://github.com/eclipse/openvsx) eclipse open-source project
|
||||
While the public instance which is run by the Eclipse Foundation is the pre-set endpoint in VSCodium, you can host your own instance.
|
||||
|
||||
> Open VSX is a [vendor-neutral](https://projects.eclipse.org/projects/ecd.openvsx) open-source alternative to the [Visual Studio Marketplace](https://marketplace.visualstudio.com/vscode). It provides a server application that manages [Visual Studio Code extensions](https://code.visualstudio.com/api) in a database, a web application similar to the Visual Studio Marketplace, and a command-line tool for publishing extensions similar to [vsce](https://code.visualstudio.com/api/working-with-extensions/publishing-extension#vsce).
|
||||
|
||||
* [code-marketplace](https://coder.com/blog/running-a-private-vs-code-extension-marketplace) open-source project
|
||||
|
||||
> `code-marketplace` is a self-contained go binary that does not have a frontend or any mechanisms for extension authors to add or update extensions in the marketplace. It simply reads extensions from file storage and provides an API for VSCode compatible editors to consume.
|
||||
|
||||
## <a id="visual-studio-marketplace"></a>Visual Studio Marketplace
|
||||
|
||||
As with any online service, ensure you've understood [its terms of use](https://aka.ms/vsmarketplace-ToU) which include:
|
||||
> Marketplace Offerings are intended for use only with Visual Studio Products and Services and you may only install and use Marketplace Offerings with Visual Studio Products and Services.
|
||||
|
||||
So, we can't provide any help if you intend to infringe their terms of use.
|
||||
|
||||
Also note that this extension gallery hosts multiple extensions that are non-free and have license-agreements that explicitly forbid using them in non-Microsoft products, along with using telemetry.
|
||||
|
||||
## <a id="proprietary-debugging-tools"></a>Proprietary Debugging Tools
|
||||
|
||||
The debugger provided with Microsoft's [C# extension](https://github.com/OmniSharp/omnisharp-vscode) as well as the (Windows) debugger provided with their [C++ extension](https://github.com/Microsoft/vscode-cpptools) are very restrictively licensed to only work with the official Visual Studio Code build. See [this comment in the C# extension repo](https://github.com/OmniSharp/omnisharp-vscode/issues/2491#issuecomment-418811364) and [this comment in the C++ extension repo](https://github.com/Microsoft/vscode-cpptools/issues/21#issuecomment-248349017).
|
||||
|
||||
A workaround exists to get debugging working in C# projects, by using Samsung's opensource [netcoredbg](https://github.com/Samsung/netcoredbg) package. See [this comment](https://github.com/VSCodium/vscodium/issues/82#issue-409806641) for instructions on how to set that up.
|
||||
|
||||
## <a id="proprietary-extensions"></a>Proprietary Extensions
|
||||
|
||||
Like the debuggers mentioned above, some extensions you may find in the marketplace (like the [Remote Development Extensions](https://code.visualstudio.com/docs/remote/remote-overview)) only function with the official Visual Studio Code build. You can work around this by adding the extension's internal ID (found on the extension's page) to the `extensionAllowedProposedApi` property of the product.json in your VSCodium installation. For example:
|
||||
|
||||
```jsonc
|
||||
"extensionAllowedProposedApi": [
|
||||
// ...
|
||||
"ms-vscode-remote.vscode-remote-extensionpack",
|
||||
"ms-vscode-remote.remote-wsl",
|
||||
// ...
|
||||
],
|
||||
```
|
||||
|
||||
In some cases, the above change won't help because the extension is hard-coded to only work with the official Visual Studio Code product.
|
||||
|
||||
## <a id="vsix-manager"></a>Using the "VSIX Manager" Extension
|
||||
|
||||
The [**VSIX Manager**](https://github.com/zokugun/vscode-vsix-manager) extension provides a powerful and user-friendly interface for managing `.vsix` files directly within VSCodium. Its author is the main maintainer of VSCodium ;)
|
||||
|
||||
It is particularly beneficial for:
|
||||
- **Support for Multiple Marketplaces**: Seamlessly install and manage extensions from several marketplaces at the same time, allowing access to a broader range of extensions.
|
||||
- **Local Files**: Manage a collection of `.vsix` files stored locally.
|
||||
- **GitHub/Forgejo Release**: Install the extension directly from its GitHub/Forgejo release pages.
|
||||
- **Fallback Options**
|
||||
|
||||
### <a id="use-cases"></a>Use Cases
|
||||
|
||||
- Developers working offline can easily manage `.vsix` files.
|
||||
- Teams can distribute specific versions of extensions across systems.
|
||||
- Enterprises with restricted environments can maintain control over installed extensions.
|
||||
- Users can connect to multiple marketplaces and access a wider range of extensions or switch seamlessly between them.
|
||||
|
||||
### <a id="marketplace-support"></a>Marketplace Support
|
||||
|
||||
The **VSIX Manager** extension supports managing extensions from several marketplaces simultaneously. This feature enables:
|
||||
- **Access to Diverse Extensions**: Install extensions from different sources like Open VSX or private repositories.
|
||||
- **Fallback Options**: Ensure extension availability even if one marketplace is temporarily inaccessible.
|
||||
- **Enterprise Flexibility**: Use private or self-hosted marketplaces alongside public ones to meet security and compliance requirements.
|
||||
- **Custom Configurations**: Prioritize specific marketplaces for particular needs while keeping access to others.
|
||||
|
||||
## [Extensions compatibility](https://github.com/VSCodium/vscodium/blob/master/docs/extensions-compatibility.md)
|
||||
|
||||
50
docs/getting-started.md
Normal file
50
docs/getting-started.md
Normal file
@@ -0,0 +1,50 @@
|
||||
<!-- order: 5 -->
|
||||
|
||||
# Getting Started with VSCodium
|
||||
|
||||
This guide will help you get started with VSCodium.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Installation](#installation)
|
||||
- [First Steps](#first-steps)
|
||||
- [Basic Usage](#basic-usage)
|
||||
- [Keyboard Shortcuts](#keyboard-shortcuts)
|
||||
- [Next Steps](#next-steps)
|
||||
|
||||
## <a id="installation"></a>Installation
|
||||
|
||||
VSCodium can be installed on Windows, macOS, and Linux. Visit the [download page](https://vscodium.com/#install) for installation instructions.
|
||||
|
||||
## <a id="first-steps"></a>First Steps
|
||||
|
||||
After installing VSCodium, here are some first steps to get started:
|
||||
|
||||
1. **Open a folder**: Use File > Open Folder to open your project
|
||||
2. **Install extensions**: Click on the Extensions icon in the sidebar to browse and install extensions
|
||||
3. **Configure settings**: Use File > Preferences > Settings to customize your editor
|
||||
|
||||
## <a id="basic-usage"></a>Basic Usage
|
||||
|
||||
VSCodium works just like Visual Studio Code, with a few differences:
|
||||
|
||||
- It uses Open VSX for extensions by default instead of the Visual Studio Marketplace
|
||||
- It doesn't include Microsoft telemetry or branding
|
||||
- Some proprietary features may not be available
|
||||
|
||||
## <a id="keyboard-shortcuts"></a>Keyboard Shortcuts
|
||||
|
||||
Here are some essential keyboard shortcuts to get you started:
|
||||
|
||||
- `Ctrl+P` (Windows/Linux) or `Cmd+P` (macOS): Quick Open, Go to File
|
||||
- `Ctrl+Shift+P` (Windows/Linux) or `Cmd+Shift+P` (macOS): Show Command Palette
|
||||
- `Ctrl+,` (Windows/Linux) or `Cmd+,` (macOS): User Settings
|
||||
- `Ctrl+K Ctrl+S` (Windows/Linux) or `Cmd+K Cmd+S` (macOS): Keyboard Shortcuts
|
||||
|
||||
## <a id="next-steps"></a>Next Steps
|
||||
|
||||
Once you're comfortable with the basics, you might want to:
|
||||
|
||||
- Explore the [documentation](https://github.com/VSCodium/vscodium/blob/master/docs/index.md) for more details
|
||||
- Join the [community](https://github.com/VSCodium/vscodium/discussions) to ask questions and share tips
|
||||
- Contribute to the [project](https://github.com/VSCodium/vscodium/blob/master/CONTRIBUTING.md) if you're interested
|
||||
@@ -1,3 +1,5 @@
|
||||
<!-- order: 35 -->
|
||||
|
||||
# How to build VSCodium
|
||||
|
||||
## Table of Contents
|
||||
@@ -6,7 +8,8 @@
|
||||
- [Linux](#dependencies-linux)
|
||||
- [MacOS](#dependencies-macos)
|
||||
- [Windows](#dependencies-windows)
|
||||
- [Build Scripts](#build-scripts)
|
||||
- [Build for Development](#build-dev)
|
||||
- [Build for CI/Downstream](#build-ci)
|
||||
- [Build Snap](#build-snap)
|
||||
- [Patch Update Process](#patch-update-process)
|
||||
- [Semi-Automated](#patch-update-process-semiauto)
|
||||
@@ -14,11 +17,11 @@
|
||||
|
||||
## <a id="dependencies"></a>Dependencies
|
||||
|
||||
- node 20.14
|
||||
- yarn
|
||||
- node (check [.nvmrc](../.nvmrc) for version)
|
||||
- jq
|
||||
- git
|
||||
- python3 3.11
|
||||
- rustup
|
||||
|
||||
### <a id="dependencies-linux"></a>Linux
|
||||
|
||||
@@ -43,29 +46,95 @@ see [the common dependencies](#dependencies)
|
||||
|
||||
### <a id="dependencies-windows"></a>Windows
|
||||
|
||||
- powershell
|
||||
- sed
|
||||
- 7z
|
||||
- [WiX Toolset](http://wixtoolset.org/releases/)
|
||||
- 'Tools for Native Modules' from the official Node.js installer
|
||||
The build scripts are written in Bash, so on Windows you must run them inside **Git Bash** (bundled with [Git for Windows](https://gitforwindows.org/)) or **WSL2**.
|
||||
|
||||
## <a id="build-scripts"></a>Build Scripts
|
||||
#### Required tools
|
||||
|
||||
A build helper script can be found at `build/build.sh`.
|
||||
- **Git for Windows** — provides Git Bash, `sed`, and POSIX utilities used by the build scripts:
|
||||
|
||||
- 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`
|
||||
```cmd
|
||||
winget install --id Git.Git -e
|
||||
```
|
||||
|
||||
- **Node.js** — exact version is specified in [`.nvmrc`](../.nvmrc). Use [nvm-windows](https://github.com/coreybutler/nvm-windows) to manage versions:
|
||||
|
||||
```cmd
|
||||
nvm install <version-from-.nvmrc>
|
||||
nvm use <version-from-.nvmrc>
|
||||
```
|
||||
|
||||
Alternatively, download directly from [nodejs.org](https://nodejs.org/). During installation, enable **"Automatically install the necessary tools"** to get the C++ build tools (required for native Node addons).
|
||||
|
||||
- **jq** — JSON processor used throughout the build scripts:
|
||||
|
||||
```cmd
|
||||
winget install --id jqlang.jq -e
|
||||
```
|
||||
|
||||
- **7-Zip** — used to package `.zip` archives:
|
||||
|
||||
```cmd
|
||||
winget install --id 7zip.7zip -e
|
||||
```
|
||||
|
||||
- **Python 3.11** — required by the VS Code build system:
|
||||
|
||||
```cmd
|
||||
winget install --id Python.Python.3.11 -e
|
||||
```
|
||||
|
||||
Ensure `python` / `python3` is on your `PATH` after installation.
|
||||
|
||||
- **Rustup** — required to compile some native VS Code modules:
|
||||
|
||||
```cmd
|
||||
winget install --id Rustlang.Rustup -e
|
||||
```
|
||||
|
||||
Restart your shell afterwards so `cargo` and `rustc` are on your `PATH`.
|
||||
|
||||
#### Optional tools
|
||||
|
||||
- **WiX Toolset v3** _(only needed for `.msi` installer packaging, i.e., the `-p` flag)_:
|
||||
|
||||
Download from [wixtoolset.org](https://wixtoolset.org/releases/) and ensure `candle.exe` / `light.exe` are on your `PATH`.
|
||||
|
||||
#### PATH verification
|
||||
|
||||
After installing all tools, verify each is discoverable from Git Bash:
|
||||
|
||||
```bash
|
||||
node --version # should match .nvmrc
|
||||
npm --version
|
||||
jq --version
|
||||
python3 --version # should be 3.11.x
|
||||
cargo --version
|
||||
7z i 2>&1 | head -1
|
||||
git --version
|
||||
```
|
||||
|
||||
If any command is not found, add its install directory to your `PATH` via **System Properties → Environment Variables → Path**.
|
||||
|
||||
## <a id="build-dev"></a>Build for Development
|
||||
|
||||
A build helper script can be found at `dev/build.sh`.
|
||||
|
||||
- Linux: `./dev/build.sh`
|
||||
- MacOS: `./dev/build.sh`
|
||||
- Windows (Git Bash — **recommended**): `"C:\Program Files\Git\bin\bash.exe" ./dev/build.sh`
|
||||
- Windows (PowerShell): `powershell -ExecutionPolicy ByPass -File .\dev\build.ps1`
|
||||
|
||||
> **Note for Windows users**: Git Bash is the recommended shell because the build scripts rely on POSIX utilities (`sed`, `grep`, `find`, etc.) bundled with Git for Windows. If you use WSL2, follow the Linux dependencies section instead.
|
||||
|
||||
### Insider
|
||||
|
||||
The `insider` version can be built with `./build/build.sh -i` on the `insider` branch.
|
||||
The `insider` version can be built with `./dev/build.sh -i` on the `insider` branch.
|
||||
|
||||
You can try the latest version with the command `./build/build.sh -il` but the patches might not be up to date.
|
||||
You can try the latest version with the command `./dev/build.sh -il` but the patches might not be up to date.
|
||||
|
||||
### Flags
|
||||
|
||||
The script `build/build.sh` provides several flags:
|
||||
The script `dev/build.sh` provides several flags:
|
||||
|
||||
- `-i`: build the Insiders version
|
||||
- `-l`: build with latest version of Visual Studio Code
|
||||
@@ -73,6 +142,32 @@ The script `build/build.sh` provides several flags:
|
||||
- `-p`: generate the packages/assets/installers
|
||||
- `-s`: do not retrieve the source code of Visual Studio Code, it won't delete the existing build
|
||||
|
||||
## <a id="build-ci"></a>Build for CI/Downstream
|
||||
|
||||
Here is the base script to build VSCodium:
|
||||
|
||||
```bash
|
||||
# Export necessary environment variables
|
||||
export SHOULD_BUILD="yes"
|
||||
export SHOULD_BUILD_REH="no"
|
||||
export CI_BUILD="no"
|
||||
export OS_NAME="linux"
|
||||
export VSCODE_ARCH="${vscode_arch}"
|
||||
export VSCODE_QUALITY="stable"
|
||||
export RELEASE_VERSION="${version}"
|
||||
|
||||
. get_repo.sh
|
||||
. build.sh
|
||||
```
|
||||
|
||||
To go further, you should look at how we build it:
|
||||
|
||||
- Linux: https://github.com/VSCodium/vscodium/blob/master/.github/workflows/stable-linux.yml
|
||||
- macOS: https://github.com/VSCodium/vscodium/blob/master/.github/workflows/stable-macos.yml
|
||||
- Windows: https://github.com/VSCodium/vscodium/blob/master/.github/workflows/stable-windows.yml
|
||||
|
||||
The `./dev/build.sh` script is for development purpose and must be avoided for a packaging purpose.
|
||||
|
||||
## <a id="build-snap"></a>Build Snap
|
||||
|
||||
```
|
||||
@@ -93,24 +188,23 @@ review-tools.snap-review --allow-classic codium*.snap
|
||||
|
||||
## <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`
|
||||
- run `./dev/build.sh`, if a patch is failing then,
|
||||
- run `./dev/update_patches.sh`
|
||||
- when the script pauses at `Press any key when the conflict have been resolved...`, open `vscode` directory in **VSCodium**
|
||||
- fix all the `*.rej` files
|
||||
- run `yarn watch`
|
||||
- run `npm run watch`
|
||||
- run `./script/code.sh` until everything is ok
|
||||
- press any key to continue the script `update_patches.sh`
|
||||
|
||||
## <a id="patch-update-process-manual"></a>Manual
|
||||
|
||||
- run `./build/build_<os>.sh`, if a patch is failing then,
|
||||
- open `vscode` directory in **VSCodium**
|
||||
- revert all changes
|
||||
- run `git apply --reject ../patches/<name>.patch`
|
||||
- run `./dev/build.sh`, if a patch is failing then,
|
||||
- run `./dev/patch.sh <name>.patch` where `<name>.patch` is the failed patch
|
||||
- open `vscode` directory in a new **VSCodium**'s window
|
||||
- fix all the `*.rej` files
|
||||
- run `yarn watch`
|
||||
- run `npm run watch`
|
||||
- run `./script/code.sh` until everything is ok
|
||||
- run `git diff > ../patches/<name>.patch`
|
||||
- go back to the command line running `./dev/patch.sh`, press `enter` to validate the changes and it will update the patch
|
||||
|
||||
### <a id="icons"></a>icons/build_icons.sh
|
||||
|
||||
|
||||
260
docs/index.md
260
docs/index.md
@@ -1,224 +1,44 @@
|
||||
# More Info
|
||||
# Documentation
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Getting all the Telemetry Out](#disable-telemetry)
|
||||
- [Replacements to Microsoft Online Services](#replacement-online-services)
|
||||
- [Extensions + Marketplace](#extensions-marketplace)
|
||||
- [How to use the OpenVSX Marketplace](#howto-openvsx-marketplace)
|
||||
- [How to use the VS Code Marketplace](#howto-vscode-marketplace)
|
||||
- [How to self host your own VS Code Marketplace](#howto-selfhost-marketplace)
|
||||
- [Proprietary Debugging Tools](#proprietary-debugging-tools)
|
||||
- [Proprietary Extensions](#proprietary-extensions)
|
||||
- [Extensions compatibility](https://github.com/VSCodium/vscodium/blob/master/docs/extensions-compatibility.md)
|
||||
- [Migrating from Visual Studio Code to VSCodium](#migrating)
|
||||
- [Sign in with GitHub](#signin-github)
|
||||
- [Accounts authentication](https://github.com/VSCodium/vscodium/blob/master/docs/accounts-authentication.md)
|
||||
- [How do I run VSCodium in portable mode?](#portable)
|
||||
- [How do I fix the default file manager?](#file-manager)
|
||||
- [How do I press and hold a key and have it repeat in VSCodium?](#press-and-hold)
|
||||
- [How do I open VSCodium from the terminal?](#terminal-support)
|
||||
- [From Linux .tar.gz](#from-linux-targz)
|
||||
- [Getting Started with VSCodium](https://github.com/VSCodium/vscodium/blob/master/docs/getting-started.md)
|
||||
- [Installation](https://github.com/VSCodium/vscodium/blob/master/docs/getting-started.md#installation)
|
||||
- [First Steps](https://github.com/VSCodium/vscodium/blob/master/docs/getting-started.md#first-steps)
|
||||
- [Basic Usage](https://github.com/VSCodium/vscodium/blob/master/docs/getting-started.md#basic-usage)
|
||||
- [Keyboard Shortcuts](https://github.com/VSCodium/vscodium/blob/master/docs/getting-started.md#keyboard-shortcuts)
|
||||
- [Next Steps](https://github.com/VSCodium/vscodium/blob/master/docs/getting-started.md#next-steps)
|
||||
- [Getting all the Telemetry Out](https://github.com/VSCodium/vscodium/blob/master/docs/telemetry.md)
|
||||
- [Telemetry in VSCodium](https://github.com/VSCodium/vscodium/blob/master/docs/telemetry.md#telemetry)
|
||||
- [Replacements to Microsoft Online Services](https://github.com/VSCodium/vscodium/blob/master/docs/telemetry.md#replacements)
|
||||
- [Checking for Telemetry](https://github.com/VSCodium/vscodium/blob/master/docs/telemetry.md#checking)
|
||||
- [Additional Privacy Settings](https://github.com/VSCodium/vscodium/blob/master/docs/telemetry.md#additional-settings)
|
||||
- [VSCodium Announcements](https://github.com/VSCodium/vscodium/blob/master/docs/telemetry.md#announcements)
|
||||
- [Malicious & Deprecated Extensions](https://github.com/VSCodium/vscodium/blob/master/docs/telemetry.md#malicious-extensions)
|
||||
- [Extensions and Marketplace](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md)
|
||||
- [Marketplace](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#marketplace)
|
||||
- [How to use the OpenVSX Marketplace](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#howto-openvsx-marketplace)
|
||||
- [How to use a different extension gallery](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#howto-switch-marketplace)
|
||||
- [How to self host your own extension gallery](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#howto-selfhost-marketplace)
|
||||
- [Visual Studio Marketplace](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#visual-studio-marketplace)
|
||||
- [Proprietary Debugging Tools](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#proprietary-debugging-tools)
|
||||
- [Proprietary Extensions](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#proprietary-extensions)
|
||||
- [Using the "VSIX Manager" Extension](https://github.com/VSCodium/vscodium/blob/master/docs/extensions.md#vsix-manager)
|
||||
- [Extensions compatibility](https://github.com/VSCodium/vscodium/blob/master/docs/extensions-compatibility.md)
|
||||
- [Ext: GitHub Copilot](https://github.com/VSCodium/vscodium/blob/master/docs/ext-github-copilot.md)
|
||||
- [Migration](https://github.com/VSCodium/vscodium/blob/master/docs/migration.md)
|
||||
- [Manual Migration from Visual Studio Code to VSCodium](https://github.com/VSCodium/vscodium/blob/master/docs/migration.md#manual-migration)
|
||||
- [Semi-Automatic Migration with "Sync Settings" Extension](https://github.com/VSCodium/vscodium/blob/master/docs/migration.md#semi-automatic-migration)
|
||||
- [Usage](https://github.com/VSCodium/vscodium/blob/master/docs/usage.md)
|
||||
- [Sign in with GitHub](https://github.com/VSCodium/vscodium/blob/master/docs/usage.md#signin-github)
|
||||
- [Accounts authentication](https://github.com/VSCodium/vscodium/blob/master/docs/accounts-authentication.md)
|
||||
- [How do I run VSCodium in portable mode?](https://github.com/VSCodium/vscodium/blob/master/docs/usage.md#portable)
|
||||
- [How do I fix the default file manager?](https://github.com/VSCodium/vscodium/blob/master/docs/usage.md#file-manager)
|
||||
- [How do I press and hold a key and have it repeat in VSCodium?](https://github.com/VSCodium/vscodium/blob/master/docs/usage.md#press-and-hold)
|
||||
- [How do I open VSCodium from the terminal?](https://github.com/VSCodium/vscodium/blob/master/docs/usage.md#terminal-support)
|
||||
- [Troubleshooting](https://github.com/VSCodium/vscodium/blob/master/docs/troubleshooting.md)
|
||||
- [Contributing](https://github.com/VSCodium/vscodium/blob/master/CONTRIBUTING.md)
|
||||
- [How to build VSCodium](https://github.com/VSCodium/vscodium/blob/master/docs/howto-build.md)
|
||||
|
||||
## <a id="disable-telemetry"></a>Getting all the Telemetry Out
|
||||
|
||||
Even though we do not pass the telemetry build flags (and go out of our way to cripple the baked-in telemetry), Microsoft will still track usage by default.
|
||||
|
||||
We do however set the default `telemetry.enableCrashReporter` and `telemetry.enableTelemetry` values to false. You can see those by viewing your VSCodium settings.json and searching for `telemetry`.
|
||||
|
||||
The instructions [here](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting) and [here](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-crash-reporting) help with explaining and toggling telemetry.
|
||||
|
||||
It is also highly recommended that you review all the settings that "use online services" by following [these instructions](https://code.visualstudio.com/docs/getstarted/telemetry#_managing-online-services). The `@tag:usesOnlineServices` filter on the settings page will show that by default:
|
||||
|
||||
- Extensions auto check for updates and auto install updates
|
||||
- Searches within the app are sent to an online service for "natural language processing"
|
||||
- Updates to the app are fetched in the background
|
||||
|
||||
These can all be disabled.
|
||||
|
||||
__Please note that some extensions send telemetry data to Microsoft as well. We have no control over this and can only recommend removing the extension.__ _(For example, the C# extension `ms-vscode.csharp` sends tracking data to Microsoft.)_
|
||||
|
||||
### <a id="replacement-online-services"></a>Replacements to Microsoft Online Services
|
||||
|
||||
When searching the `@tag:usesOnlineServices` filter, note that while the "Update: Mode" setting description still says "The updates are fetched from a Microsoft online service", VSCodium's build script [sets the `updateUrl` field](https://github.com/VSCodium/vscodium/blob/master/prepare_vscode.sh#L36) in `product.json` to that of VSCodium's own small [update server](https://github.com/VSCodium/update-api), so enabling that setting won't actually result in any calls to Microsoft servers.
|
||||
|
||||
Likewise, while the descriptions for "Extensions: Auto Check Updates" and "Extensions: Auto Update" include the same phrase, VSCodium [replaces](https://github.com/VSCodium/vscodium/blob/master/prepare_vscode.sh#L42) the Visual Studio Marketplace with Open VSX, so these settings won't call Microsoft, either.
|
||||
|
||||
## <a id="extensions-marketplace"></a>Extensions + Marketplace
|
||||
|
||||
Being a vscode based editor, VSCodium gets additional features by installing VS Code extensions.
|
||||
Unfortunately, as Microsoft [prohibits usages of the Microsoft marketplace by any other products](https://github.com/microsoft/vscode/issues/31168) or redistribution of `.vsix` files from it, in order to use VS Code extensions in non-Microsoft products those need to be installed differently.
|
||||
|
||||
By default, the `product.json` file is set up to use [open-vsx.org](https://open-vsx.org/) as extension gallery, which has an [adapter](https://github.com/eclipse/openvsx/wiki/Using-Open-VSX-in-VS-Code) to the Marketplace API used by VS Code. Since that is a rather new project, you will likely miss some extensions you know from the VS Code Marketplace. You have the following options to obtain such missing extensions:
|
||||
|
||||
* Ask the extension maintainers to publish to [open-vsx.org](https://open-vsx.org/) in addition to the VS Code Marketplace. The publishing process is documented in the [Open VSX Wiki](https://github.com/eclipse/openvsx/wiki/Publishing-Extensions).
|
||||
* Create a pull request to [this repository](https://github.com/open-vsx/publish-extensions) to have the [@open-vsx](https://github.com/open-vsx) service account publish the extensions for you.
|
||||
* Download and [install the vsix files](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix), for example from the release page in their source repository.
|
||||
|
||||
### <a id="howto-openvsx-marketplace"></a>How to use the Open VSX Registry
|
||||
|
||||
As noted above, the [Open VSX Registry](https://open-vsx.org/) is the pre-set extension gallery in VSCodium. Using the extension view in VSCodium will therefore by default use it.
|
||||
See [this article](https://www.gitpod.io/blog/open-vsx/) for more information on the motivation behind Open VSX.
|
||||
|
||||
### <a id="howto-switch-marketplace"></a>How to use a different extension gallery
|
||||
|
||||
You can switch from the pre-set Open VSX Registry by configuring the endpoints using the following solutions.
|
||||
These examples use the URLs for Microsoft's VS Code Marketplace, see [below](#howto-vscode-marketplace) for more information on that.
|
||||
|
||||
With the following environment variables:
|
||||
- `VSCODE_GALLERY_SERVICE_URL='https://marketplace.visualstudio.com/_apis/public/gallery'`
|
||||
- `VSCODE_GALLERY_ITEM_URL='https://marketplace.visualstudio.com/items'`
|
||||
- `VSCODE_GALLERY_CACHE_URL='https://vscode.blob.core.windows.net/gallery/index'`
|
||||
- `VSCODE_GALLERY_CONTROL_URL=''`
|
||||
|
||||
Or by creating a custom `product.json` at the following location (replace `VSCodium` by `VSCodium - Insiders` if you use that):
|
||||
- Windows: `%APPDATA%\VSCodium` or `%USERPROFILE%\AppData\Roaming\VSCodium`
|
||||
- macOS: `~/Library/Application Support/VSCodium`
|
||||
- Linux: `$XDG_CONFIG_HOME/VSCodium` or `~/.config/VSCodium`
|
||||
|
||||
with the content:
|
||||
|
||||
- Note: set `cacheUrl` to empty string for every other extension gallery
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"extensionsGallery": {
|
||||
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
|
||||
"itemUrl": "https://marketplace.visualstudio.com/items",
|
||||
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
|
||||
"controlUrl": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### <a id="howto-selfhost-marketplace"></a>How to self-host your own extension gallery
|
||||
|
||||
Individual developers and enterprise companies in regulated or security-conscious industries can self-host their own extension gallery. In all of these cases, you'd enter its endpoint URLs as noted above, replacing `marketplace.visualstudio.com` with `your-self-hosted-marketplace-address.example.com` (or IP address), setting `cacheUrl` / `VSCODE_GALLERY_CACHE_URL` to an empty string.
|
||||
|
||||
There are likely other options, but the following were reported to work:
|
||||
|
||||
* [Open VSX](https://github.com/eclipse/openvsx) eclipse open-source project
|
||||
While the public instance which is run by the Eclipse Foundation is the pre-set endpoint in VSCodium, you can host your own instance.
|
||||
|
||||
> Open VSX is a [vendor-neutral](https://projects.eclipse.org/projects/ecd.openvsx) open-source alternative to the [Visual Studio Marketplace](https://marketplace.visualstudio.com/vscode). It provides a server application that manages [VS Code extensions](https://code.visualstudio.com/api) in a database, a web application similar to the VS Code Marketplace, and a command-line tool for publishing extensions similar to [vsce](https://code.visualstudio.com/api/working-with-extensions/publishing-extension#vsce).
|
||||
|
||||
* [code-marketplace](https://coder.com/blog/running-a-private-vs-code-extension-marketplace) open-source project
|
||||
|
||||
> `code-marketplace` is a self-contained go binary that does not have a frontend or any mechanisms for extension authors to add or update extensions in the marketplace. It simply reads extensions from file storage and provides an API for VSCode compatible editors to consume.
|
||||
|
||||
### <a id="howto-vscode-marketplace"></a>How to use the VS Code Marketplace
|
||||
|
||||
As with any online service, ensure you've understood [its terms of use](https://aka.ms/vsmarketplace-ToU).
|
||||
Also note that this extension gallery hosts multiple extensions that are non-free and have license-agreements that explicitly forbid using them in non-Microsoft products, along with using telemetry.
|
||||
|
||||
The endpoint URLs are given in the [example above](#howto-switch-marketplace).
|
||||
|
||||
|
||||
### <a id="proprietary-debugging-tools"></a>Proprietary Debugging Tools
|
||||
|
||||
The debugger provided with Microsoft's [C# extension](https://github.com/OmniSharp/omnisharp-vscode) as well as the (Windows) debugger provided with their [C++ extension](https://github.com/Microsoft/vscode-cpptools) are very restrictively licensed to only work with the official Visual Studio Code build. See [this comment in the C# extension repo](https://github.com/OmniSharp/omnisharp-vscode/issues/2491#issuecomment-418811364) and [this comment in the C++ extension repo](https://github.com/Microsoft/vscode-cpptools/issues/21#issuecomment-248349017).
|
||||
|
||||
A workaround exists to get debugging working in C# projects, by using Samsung's opensource [netcoredbg](https://github.com/Samsung/netcoredbg) package. See [this comment](https://github.com/VSCodium/vscodium/issues/82#issue-409806641) for instructions on how to set that up.
|
||||
|
||||
### <a id="proprietary-extensions"></a>Proprietary Extensions
|
||||
|
||||
Like the debuggers mentioned above, some extensions you may find in the marketplace (like the [Remote Development Extensions](https://code.visualstudio.com/docs/remote/remote-overview)) only function with the official Visual Studio Code build. You can work around this by adding the extension's internal ID (found on the extension's page) to the `extensionAllowedProposedApi` property of the product.json in your VSCodium installation. For example:
|
||||
|
||||
```jsonc
|
||||
"extensionAllowedProposedApi": [
|
||||
// ...
|
||||
"ms-vscode-remote.vscode-remote-extensionpack",
|
||||
"ms-vscode-remote.remote-wsl",
|
||||
// ...
|
||||
],
|
||||
```
|
||||
|
||||
In some cases, the above change won't help because the extension is hard-coded to only work with the official Visual Studio Code product.
|
||||
|
||||
## <a id="migrating"></a>Migrating from Visual Studio Code to VSCodium
|
||||
|
||||
VSCodium (and a freshly cloned copy of vscode built from source) stores its extension files in `~/.vscode-oss`. So if you currently have Visual Studio Code installed, your extensions won't automatically populate. You can reinstall your extensions from the Marketplace in VSCodium, or copy the `extensions` from `~/.vscode/extensions` to `~/.vscode-oss/extensions`.
|
||||
|
||||
Visual Studio Code stores its `keybindings.json` and `settings.json` file in these locations:
|
||||
|
||||
- __Windows__: `%APPDATA%\Code\User`
|
||||
- __macOS__: `$HOME/Library/Application Support/Code/User`
|
||||
- __Linux__: `$HOME/.config/Code/User`
|
||||
|
||||
You can copy these files to the VSCodium user settings folder:
|
||||
|
||||
- __Windows__: `%APPDATA%\VSCodium\User`
|
||||
- __macOS__: `$HOME/Library/Application Support/VSCodium/User`
|
||||
- __Linux__: `$HOME/.config/VSCodium/User`
|
||||
|
||||
To copy your settings manually:
|
||||
|
||||
- In Visual Studio Code, go to Settings (Command+, if on a Mac)
|
||||
- Click the three dots `...` and choose 'Open settings.json'
|
||||
- Copy the contents of settings.json into the same place in VSCodium
|
||||
|
||||
## <a id="signin-github"></a>Sign in with GitHub
|
||||
|
||||
In VSCodium, `Sign in with GitHub` is using a Personal Access Token.<br />
|
||||
Follow the documentation https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token to create your token.<br />
|
||||
Select the scopes dependending on the extension which needs access to GitHub. (GitLens requires the `repo` scope.)
|
||||
|
||||
### Linux
|
||||
|
||||
If you are getting the error `Writing login information to the keychain failed with error 'The name org.freedesktop.secrets was not provided by any .service files'.`, you need to install the package `gnome-keyring`.
|
||||
|
||||
## <a id="portable"></a>How do I run VSCodium in portable mode?
|
||||
You can follow the [Portable Mode instructions](https://code.visualstudio.com/docs/editor/portable) from the Visual Studio Code website.
|
||||
- **Windows** / **Linux** : the instructions can be followed as written.
|
||||
- **macOS** : portable mode is enabled by the existence of a specially named folder. For Visual Studio Code that folder name is `code-portable-data`. For VSCodium, that folder name is `codium-portable-data`. So to enable portable mode for VSCodium on Mac OS, follow the instructions outlined in the [link above](https://code.visualstudio.com/docs/editor/portable), but create a folder named `codium-portable-data` instead of `code-portable-data`.
|
||||
|
||||
## <a id="file-manager"></a>How do I fix the default file manager (Linux)?
|
||||
|
||||
In some cases, VSCodium becomes the file manager used to open directories (instead of apps like Dolphin or Nautilus).<br />
|
||||
It's due to that no application was defined as the default file manager and so the system is using the latest capable application.
|
||||
|
||||
To set the default app, create the file `~/.config/mimeapps.list` with the content like:
|
||||
```
|
||||
[Default Applications]
|
||||
inode/directory=org.gnome.Nautilus.desktop;
|
||||
```
|
||||
|
||||
You can find your regular file manager with the command:
|
||||
```
|
||||
> grep directory /usr/share/applications/mimeinfo.cache
|
||||
inode/directory=codium.desktop;org.gnome.Nautilus.desktop;
|
||||
```
|
||||
|
||||
## <a id="press-and-hold"></a>How do I press and hold a key and have it repeat in VSCodium (Mac)?
|
||||
|
||||
This is a common question for Visual Studio Code and the procedure is slightly different in VSCodium because the `defaults` path is different.
|
||||
|
||||
```bash
|
||||
$ defaults write com.vscodium ApplePressAndHoldEnabled -bool false
|
||||
```
|
||||
|
||||
## <a id="terminal-support"></a>How do I open VSCodium from the terminal?
|
||||
|
||||
For macOS and Windows:
|
||||
- Go to the command palette (View | Command Palette...)
|
||||
- Choose `Shell command: Install 'codium' command in PATH`.
|
||||
|
||||

|
||||
|
||||
This allows you to open files or directories in VSCodium directly from your terminal:
|
||||
|
||||
```bash
|
||||
~/in-my-project $ codium . # open this directory
|
||||
~/in-my-project $ codium file.txt # open this file
|
||||
```
|
||||
|
||||
Feel free to alias this command to something easier to type in your shell profile (e.g. `alias code=codium`).
|
||||
|
||||
On Linux, when installed with a package manager, `codium` has been installed in your `PATH`.
|
||||
|
||||
### <a id="from-linux-targz"></a>From Linux .tar.gz
|
||||
|
||||
When the archive `VSCodium-linux-<arch>-<version>.tar.gz` is extracted, the main entry point for VSCodium is `./bin/codium`.
|
||||
- [Linux](https://github.com/VSCodium/vscodium/blob/master/docs/troubleshooting.md#linux)
|
||||
- [Other Resources](https://github.com/VSCodium/vscodium/blob/master/docs/others.md)
|
||||
- [What are reh and reh-web archives?](https://github.com/VSCodium/vscodium/blob/master/docs/others.md#reh)
|
||||
- [Contributing Guidelines](https://github.com/VSCodium/vscodium/blob/master/CONTRIBUTING.md)
|
||||
- [Building VSCodium](https://github.com/VSCodium/vscodium/blob/master/docs/howto-build.md)
|
||||
|
||||
54
docs/migration.md
Normal file
54
docs/migration.md
Normal file
@@ -0,0 +1,54 @@
|
||||
<!-- order: 20 -->
|
||||
|
||||
# Migration
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Manual Migration from Visual Studio Code to VSCodium](#manual-migration)
|
||||
- [Semi-Automatic Migration with "Sync Settings" Extension](#semi-automatic-migration)
|
||||
|
||||
## <a id="manual-migration"></a>Manual Migration from Visual Studio Code to VSCodium
|
||||
|
||||
VSCodium (and a freshly cloned copy of vscode built from source) stores its extension files in `~/.vscode-oss`. So if you currently have Visual Studio Code installed, your extensions won't automatically populate. You can copy the `extensions` from `~/.vscode/extensions` to `~/.vscode-oss/extensions`.
|
||||
|
||||
Visual Studio Code stores its `keybindings.json` and `settings.json` file in these locations:
|
||||
|
||||
- __Windows__: `%APPDATA%\Code\User`
|
||||
- __macOS__: `$HOME/Library/Application Support/Code/User`
|
||||
- __Linux__: `$HOME/.config/Code/User`
|
||||
|
||||
You can copy these files to the VSCodium user settings folder:
|
||||
|
||||
- __Windows__: `%APPDATA%\VSCodium\User`
|
||||
- __macOS__: `$HOME/Library/Application Support/VSCodium/User`
|
||||
- __Linux__: `$HOME/.config/VSCodium/User`
|
||||
|
||||
To copy your settings manually:
|
||||
|
||||
- In Visual Studio Code, go to Settings (`Meta+,`)
|
||||
- Click the three dots `...` and choose 'Open settings.json'
|
||||
- Copy the contents of settings.json into the same place in VSCodium
|
||||
|
||||
## <a id="semi-automatic-migration"></a>Semi-Automatic Migration with "Sync Settings" Extension
|
||||
|
||||
The [**Sync Settings**](https://github.com/zokugun/vscode-sync-settings) extension can simplify the migration process by enabling synchronization of settings, keybindings, extensions, and more between Visual Studio Code and VSCodium. Its author is the main maintainer of VSCodium ;)
|
||||
|
||||
The extension is available in the Visual Studio Marketplace, OpenVSX or directly in its GitHub repository.
|
||||
|
||||
### Steps:
|
||||
|
||||
1. Install the **Sync Settings** extension in both Visual Studio Code and VSCodium.
|
||||
2. Configure the extension on both Visual Studio Code and VSCodium:
|
||||
- Open Command Palette (`Meta+Shift+P`).
|
||||
- Search for `Sync Settings: Open the repository settings` and execute the command.
|
||||
- Configure the repository
|
||||
3. Export your current settings from Visual Studio Code:
|
||||
- Open Command Palette (`Meta+Shift+P`).
|
||||
- Search for `Sync Settings: Upload (user -> repository)` and execute the command.
|
||||
4. Import the settings into VSCodium:
|
||||
- I recommend the setting `"syncSettings.openOutputOnActivity": true,`.
|
||||
- Open Command Palette (`Meta+Shift+P`).
|
||||
- Search for `Sync Settings: Download (repository -> user)` and execute the command.
|
||||
- Wait for all the extensions to be downloaded and installed (follow logs in the `Output` panel) before restarting VSCodium.
|
||||
|
||||
This method ensures that all supported configurations are seamlessly transferred.
|
||||
12
docs/others.md
Normal file
12
docs/others.md
Normal file
@@ -0,0 +1,12 @@
|
||||
<!-- order: 30 -->
|
||||
|
||||
# Other Resources
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [What are reh and reh-web archives?](#reh)
|
||||
|
||||
## <a id="reh"></a>What are reh and reh-web archives?
|
||||
|
||||
- Remote Host (`reh`) is the server component for remote ssh/wsl which runs it on a "remote" computer and makes that remote computer accessible via VSCodium.
|
||||
- Web Host (`reh-web`) is the server component of the command `codium serve-web` which runs it locally and makes VSCodium accessible via a browser.
|
||||
43
docs/patches.md
Normal file
43
docs/patches.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Patches
|
||||
|
||||
Documentation for VSCodium patches applied on top of VS Code.
|
||||
|
||||
---
|
||||
|
||||
## fix-policies
|
||||
|
||||
**Replace `@vscode/policy-watcher` with `@vscodium/policy-watcher`**
|
||||
|
||||
VS Code uses `@vscode/policy-watcher` to enforce Group Policy Objects (GPOs) on
|
||||
Windows. That package reads from:
|
||||
|
||||
```
|
||||
HKLM\SOFTWARE\Policies\Microsoft\<productName>
|
||||
```
|
||||
|
||||
VSCodium forks this into `@vscodium/policy-watcher`, which takes a separate
|
||||
`vendorName` argument. The `createWatcher()` call becomes:
|
||||
|
||||
```ts
|
||||
createWatcher('VSCodium', this.productName, ...)
|
||||
```
|
||||
|
||||
Because VSCodium sets `product.nameLong = 'VSCodium'` (via `prepare_vscode.sh`),
|
||||
`this.productName` resolves to `'VSCodium'` at runtime. Therefore, the final
|
||||
Windows registry key that VSCodium reads policies from is:
|
||||
|
||||
```
|
||||
HKLM\SOFTWARE\Policies\VSCodium\VSCodium\<PolicyName>
|
||||
```
|
||||
|
||||
(or `HKCU\SOFTWARE\Policies\VSCodium\VSCodium\<PolicyName>` for per-user policies)
|
||||
|
||||
This differs from VS Code's path (`Microsoft\VSCode`) and is the root cause of
|
||||
[issue #2714](https://github.com/VSCodium/vscodium/issues/2714) where users mirror
|
||||
VS Code's registry structure and find their GPOs ignored. Enterprise admins must
|
||||
use the VSCodium-specific registry path.
|
||||
|
||||
### References
|
||||
|
||||
- [VSCodium issue #2714](https://github.com/VSCodium/vscodium/issues/2714)
|
||||
- [VSCodium/policy-watcher — RegistryPolicy.hh](https://github.com/VSCodium/policy-watcher/blob/main/src/windows/RegistryPolicy.hh)
|
||||
87
docs/telemetry.md
Normal file
87
docs/telemetry.md
Normal file
@@ -0,0 +1,87 @@
|
||||
<!-- order: 10 -->
|
||||
|
||||
# Getting all telemetry out
|
||||
|
||||
This page explains how VSCodium handles telemetry and how it enhances your privacy.
|
||||
|
||||
## Table of contents
|
||||
|
||||
- [Telemetry in VSCodium](#telemetry)
|
||||
- [Replacements to Microsoft Online Services](#replacements)
|
||||
- [Checking for telemetry](#checking)
|
||||
- [VSCodium announcements](#announcements)
|
||||
- [Malicious & deprecated extensions](#malicious-extensions)
|
||||
|
||||
## <a id="telemetry"></a>Telemetry in VSCodium
|
||||
|
||||
Even though we do not pass the telemetry build flags and go out of our way to cripple the baked-in telemetry, Microsoft still can track usage by default depending on your settings.
|
||||
|
||||
We disable all the following telemetry-related settings by default to enhance your privacy:
|
||||
|
||||
```
|
||||
telemetry.telemetryLevel
|
||||
telemetry.enableCrashReporter
|
||||
telemetry.enableTelemetry
|
||||
telemetry.editStats.enabled
|
||||
workbench.enableExperiments
|
||||
workbench.settings.enableNaturalLanguageSearch
|
||||
workbench.commandPalette.experimental.enableNaturalLanguageSearch
|
||||
```
|
||||
|
||||
It is also recommended that you review all the settings that "use online services" by following [these instructions](https://code.visualstudio.com/docs/getstarted/telemetry#_managing-online-services). You can use the search filter `@tag:usesOnlineServices` to show such settings and review what to change.
|
||||
|
||||
**Please note that some extensions send telemetry data to Microsoft as well. We have no control over this and can only recommend removing the extension.**
|
||||
For example, the C# extension `ms-vscode.csharp` sends tracking data to Microsoft. Be sure to check each extension's settings page to disable their telemetry if applicable.
|
||||
|
||||
### Update services
|
||||
|
||||
By default, the app periodically fetches connections to check for the latest version available to download and install.
|
||||
Extensions are also checked for updates automatically from time to time.
|
||||
|
||||
If you want to prevent such behaviors, modify the following preferences:
|
||||
|
||||
For the app itself:
|
||||
|
||||
- `update.mode` -> `manual` (or `none`)
|
||||
- `update.enableWindowsBackgroundUpdates` -> `false` (only applicable for Microsoft Windows)
|
||||
|
||||
For extensions:
|
||||
|
||||
- `extensions.autoUpdate` -> `false`
|
||||
- `extensions.autoCheckUpdates` -> `false`
|
||||
|
||||
_Note: on Linux, the app update service is disabled completely at build-time even if the `update.mode` preference is configured. This is because users will more likely use their package managers to update the app rather than updating via the app itself._
|
||||
|
||||
### Feedback telemetry
|
||||
|
||||
By default, we keep the preference `telemetry.feedback.enabled` enabled. It's used to allow the button `Report Issue...` to be used on the app depending on the context. It does not send any data by having it enabled (other options already cover it). If you want, you can disable this behavior by toggling the preference value.
|
||||
|
||||
## <a id="replacements"></a>Replacements to Microsoft Online Services
|
||||
|
||||
When searching the `@tag:usesOnlineServices` filter, note that while the "Update: Mode" setting description still says "The updates are fetched from a Microsoft online service", VSCodium's build script [sets the `updateUrl` field](https://github.com/VSCodium/vscodium/blob/8cc366bb76d6c0ddb64374f9530b42094646a660/prepare_vscode.sh#L132-L133) in `product.json` directly to the GitHub page, so enabling that setting won't actually result in any calls to the Microsoft online service.
|
||||
|
||||
Likewise, while the descriptions for "Extensions: Auto Check Updates" and "Extensions: Auto Update" include the same phrase, VSCodium [replaces](https://github.com/VSCodium/vscodium/blob/8cc366bb76d6c0ddb64374f9530b42094646a660/prepare_vscode.sh#L119) the Visual Studio Marketplace with Open VSX, so these settings won't call Microsoft either.
|
||||
|
||||
## <a id="checking"></a>Checking for telemetry
|
||||
|
||||
If you want to verify that no telemetry is being sent, you can use network monitoring tools like:
|
||||
|
||||
- Wireshark
|
||||
- Little Snitch (macOS)
|
||||
- GlassWire (Windows)
|
||||
|
||||
Look for connections to Microsoft domains and telemetry endpoints.
|
||||
|
||||
## <a id="announcements"></a>VSCodium announcements
|
||||
|
||||
The welcome page in VSCodium displays announcements that are fetched via the internet from the project's GitHub repository.
|
||||
|
||||
If you prefer to disable this feature, you can disable the preference `workbench.welcomePage.extraAnnouncements`.
|
||||
|
||||
## <a id="malicious-extensions"></a>Malicious & deprecated extensions
|
||||
|
||||
The definitions for malicious and deprecated extensions are dynamically loaded from the following URL:
|
||||
https://raw.githubusercontent.com/EclipseFdn/publish-extensions/refs/heads/master/extension-control/extensions.json
|
||||
|
||||
If you prefer to avoid any external connections, you can disable the preference `extensions.excludeUnsafes`.
|
||||
However, this is not recommended as it may reduce the safety of your environment.
|
||||
@@ -1,20 +1,24 @@
|
||||
<!-- order: 25 -->
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Linux](#linux)
|
||||
- [Fonts showing up as rectangles](#linux-fonts-rectangle)
|
||||
- [Text and/or the entire interface not appearing](#linux-rendering-glitches)
|
||||
- [Global menu workaround for KDE](#linux-kde-global-menu)
|
||||
- [Flatpak most common issues](#linux-flatpak-most-common-issues)
|
||||
- [Remote SSH doesn't work](#linux-remote-ssh)
|
||||
- [macOS](#macos)
|
||||
- [App can't be opened because Apple cannot check it for malicious software](#macos-unidentified-developer)
|
||||
- ["VSCodium.app" is damaged and can’t be opened. You should move it to the Bin](#macos-quarantine)
|
||||
|
||||
- [The window doesn't show up](#linux-no-window)
|
||||
- [Windows](#windows)
|
||||
- [Group Policy Objects (GPOs) are ignored](#windows-gpo)
|
||||
- ["Open with VSCodium" missing from context menu](#windows-context-menu)
|
||||
- [Windows Defender flags the installer as malware](#windows-defender)
|
||||
|
||||
## <a id="linux"></a>Linux
|
||||
|
||||
#### <a id="linux-fonts-rectangle"></a>*Fonts showing up as rectangles*
|
||||
### <a id="linux-fonts-rectangle"></a>_Fonts showing up as rectangles_
|
||||
|
||||
The following command should help:
|
||||
|
||||
@@ -24,19 +28,27 @@ rm -rf ~/snap/codium/common/.cache
|
||||
fc-cache -r
|
||||
```
|
||||
|
||||
#### <a id="linux-kde-global-menu"></a>*Global menu workaround for KDE*
|
||||
### <a id="linux-rendering-glitches"></a>_Text and/or the entire interface not appearing_
|
||||
|
||||
You have likely encountered [a bug in Chromium and Electron](microsoft/vscode#190437) when compiling Mesa shaders, which has affected all Visual Studio Code and VSCodium versions for Linux distributions since 1.82. The current workaround (see microsoft/vscode#190437) is to delete the GPU cache as follows:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.config/VSCodium/GPUCache
|
||||
```
|
||||
|
||||
### <a id="linux-kde-global-menu"></a>_Global menu workaround for KDE_
|
||||
|
||||
Install these packages on Fedora:
|
||||
|
||||
* libdbusmenu-devel
|
||||
* dbus-glib-devel
|
||||
* libdbusmenu
|
||||
- libdbusmenu-devel
|
||||
- dbus-glib-devel
|
||||
- libdbusmenu
|
||||
|
||||
On Ubuntu this package is called `libdbusmenu-glib4`.
|
||||
|
||||
Credits: [Gerson](https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/issues/91)
|
||||
|
||||
#### <a id="linux-flatpak-most-common-issues"></a>*Flatpak most common issues*
|
||||
### <a id="linux-flatpak-most-common-issues"></a>_Flatpak most common issues_
|
||||
|
||||
- blurry screen with HiDPI on wayland run:
|
||||
```bash
|
||||
@@ -56,26 +68,87 @@ Credits: [Gerson](https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/issues/
|
||||
|
||||
- If you have any other problems with the flatpak package try to look on the [FAQ](https://github.com/flathub/com.vscodium.codium?tab=readme-ov-file#faq) maybe the solution is already there or open an [issue](https://github.com/flathub/com.vscodium.codium/issues).
|
||||
|
||||
##### <a id="linux-remote-ssh"></a>*Remote SSH doesn't work*
|
||||
### <a id="linux-remote-ssh"></a>_Remote SSH doesn't work_
|
||||
|
||||
Use the VSCodium's compatible extension [Open Remote - SSH](https://open-vsx.org/extension/jeanp413/open-remote-ssh).
|
||||
|
||||
On the server, in the `sshd` config, `AllowTcpForwarding` need to be set to `yes`.
|
||||
|
||||
It might requires additional dependeincies due to the OS/distro (alpine).
|
||||
It might requires additional dependencies due to the OS/distro (alpine).
|
||||
|
||||
## <a id="macos"></a>macOS
|
||||
### <a id="linux-no-window"></a>_The window doesn't show up_
|
||||
|
||||
Since the App is signed with a self-signed certificate, on the first launch, you might see the following messages:
|
||||
If you are under Wayland:
|
||||
|
||||
#### <a id="macos-unidentified-developer"></a>*App can't be opened because Apple cannot check it for malicious software*
|
||||
- try the command `codium --verbose`
|
||||
- if you see an error like `:ERROR:ui/gl/egl_util.cc:92] EGL Driver message (Error) eglCreateContext: Requested version is not supported`
|
||||
- try `codium --ozone-platform=x11`
|
||||
|
||||
You can right-click the App and choose `Open`.
|
||||
## <a id="windows"></a>Windows
|
||||
|
||||
#### <a id="macos-quarantine"></a>*"VSCodium.app" is damaged and can’t be opened. You should move it to the Bin.*
|
||||
### <a id="windows-gpo"></a>_Group Policy Objects (GPOs) are ignored_
|
||||
|
||||
The following command will remove the quarantine attribute.
|
||||
VSCodium uses its own policy-watcher library (`@vscodium/policy-watcher`) which reads GPO values from a **different registry path** than VS Code.
|
||||
|
||||
**VSCodium reads policies from:**
|
||||
|
||||
```
|
||||
xattr -r -d com.apple.quarantine /Applications/VSCodium.app
|
||||
HKLM\SOFTWARE\Policies\VSCodium\VSCodium
|
||||
```
|
||||
|
||||
**VS Code reads policies from:**
|
||||
|
||||
```
|
||||
HKLM\SOFTWARE\Policies\Microsoft\VSCode
|
||||
```
|
||||
|
||||
If you are deploying VSCodium in an enterprise environment via Group Policy:
|
||||
|
||||
1. Copy the `.admx` template file to `C:\Windows\PolicyDefinitions\`
|
||||
2. Copy the `.adml` language file to `C:\Windows\PolicyDefinitions\en-US\`
|
||||
3. Open `gpedit.msc` and configure policies under the VSCodium group
|
||||
4. Verify the resulting registry key exists at `HKLM\SOFTWARE\Policies\VSCodium\VSCodium` (not `Microsoft\VSCodium`)
|
||||
|
||||
If you set policies manually via Registry Editor, make sure you create the key at the correct path:
|
||||
|
||||
```
|
||||
HKLM\SOFTWARE\Policies\VSCodium\VSCodium\<PolicyName> (REG_SZ or REG_DWORD)
|
||||
```
|
||||
|
||||
For example, to set `Update: Mode` to `none`:
|
||||
|
||||
```
|
||||
Registry key: HKLM\SOFTWARE\Policies\VSCodium\VSCodium
|
||||
Value name: update.mode
|
||||
Value type: REG_SZ
|
||||
Value data: none
|
||||
```
|
||||
|
||||
Per-user policies are also supported under `HKCU\SOFTWARE\Policies\VSCodium\VSCodium` (machine policies take precedence).
|
||||
|
||||
### <a id="windows-context-menu"></a>_"Open with VSCodium" missing from context menu_
|
||||
|
||||
If the **"Open with VSCodium"** option does not appear after installation (even with the checkbox checked during setup):
|
||||
|
||||
1. **Run the installer again** and ensure _"Add 'Open with VSCodium' action to Windows Explorer file context menu"_ is checked.
|
||||
2. **Windows 11 note**: Windows 11 hides most context menu entries behind **Shift + Right-click** ("Show more options"). VSCodium's entry may be present but hidden in the new condensed menu. Try Shift + Right-click to see the classic context menu.
|
||||
3. If the entry still does not appear, you can add it manually via Registry Editor:
|
||||
|
||||
```
|
||||
Key: HKEY_CLASSES_ROOT\*\shell\Open with VSCodium
|
||||
Value: (Default) = "Open with VSCodium"
|
||||
|
||||
Key: HKEY_CLASSES_ROOT\*\shell\Open with VSCodium\command
|
||||
Value: (Default) = "C:\Program Files\VSCodium\VSCodium.exe" "%1"
|
||||
```
|
||||
|
||||
Adjust the install path to match your actual installation directory.
|
||||
|
||||
### <a id="windows-defender"></a>_Windows Defender flags the installer as malware_
|
||||
|
||||
Some users report Windows Defender detecting the VSCodium installer as `Cinjo` or another threat. This is a **false positive** caused by the unsigned nature of certain build artifacts.
|
||||
|
||||
- Download VSCodium **only from the official [GitHub Releases page](https://github.com/VSCodium/vscodium/releases)**.
|
||||
- Verify the SHA256/SHA512 checksum of the downloaded file against the `.sha256` or `.sha512` file published alongside each release.
|
||||
- If Defender blocks the installer, add an exclusion for the downloaded file, run the install, then remove the exclusion.
|
||||
- You can also report the false positive directly to Microsoft via the [Windows Defender Security Intelligence submission portal](https://www.microsoft.com/en-us/wdsi/filesubmission).
|
||||
|
||||
76
docs/usage.md
Normal file
76
docs/usage.md
Normal file
@@ -0,0 +1,76 @@
|
||||
<!-- order: 25 -->
|
||||
|
||||
# Usage
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Sign in with GitHub](#signin-github)
|
||||
- [Accounts authentication](https://github.com/VSCodium/vscodium/blob/master/docs/accounts-authentication.md)
|
||||
- [How do I run VSCodium in portable mode?](#portable)
|
||||
- [How do I fix the default file manager?](#file-manager)
|
||||
- [How do I press and hold a key and have it repeat in VSCodium?](#press-and-hold)
|
||||
- [How do I open VSCodium from the terminal?](#terminal-support)
|
||||
- [From Linux .tar.gz](#from-linux-targz)
|
||||
|
||||
## <a id="signin-github"></a>Sign in with GitHub
|
||||
|
||||
In VSCodium, `Sign in with GitHub` is using a Personal Access Token.<br />
|
||||
Follow the documentation https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token to create your token.<br />
|
||||
Select the scopes dependending on the extension which needs access to GitHub. (GitLens requires the `repo` scope.)
|
||||
|
||||
### Linux
|
||||
|
||||
If you are getting the error `Writing login information to the keychain failed with error 'The name org.freedesktop.secrets was not provided by any .service files'.`, you need to install the package `gnome-keyring`.
|
||||
|
||||
## <a id="portable"></a>How do I run VSCodium in portable mode?
|
||||
You can follow the [Portable Mode instructions](https://code.visualstudio.com/docs/editor/portable) from the Visual Studio Code website.
|
||||
- **Windows** / **Linux** : the instructions can be followed as written.
|
||||
- **macOS** : portable mode is enabled by the existence of a specially named folder. For Visual Studio Code that folder name is `code-portable-data`. For VSCodium, that folder name is `codium-portable-data`. So to enable portable mode for VSCodium on Mac OS, follow the instructions outlined in the [link above](https://code.visualstudio.com/docs/editor/portable), but create a folder named `codium-portable-data` instead of `code-portable-data`.
|
||||
|
||||
## <a id="file-manager"></a>How do I fix the default file manager (Linux)?
|
||||
|
||||
In some cases, VSCodium becomes the file manager used to open directories (instead of apps like Dolphin or Nautilus).<br />
|
||||
It's due to that no application was defined as the default file manager and so the system is using the latest capable application.
|
||||
|
||||
To set the default app, create the file `~/.config/mimeapps.list` with the content like:
|
||||
```
|
||||
[Default Applications]
|
||||
inode/directory=org.gnome.Nautilus.desktop;
|
||||
```
|
||||
|
||||
You can find your regular file manager with the command:
|
||||
```
|
||||
> grep directory /usr/share/applications/mimeinfo.cache
|
||||
inode/directory=codium.desktop;org.gnome.Nautilus.desktop;
|
||||
```
|
||||
|
||||
## <a id="press-and-hold"></a>How do I press and hold a key and have it repeat in VSCodium (Mac)?
|
||||
|
||||
This is a common question for Visual Studio Code and the procedure is slightly different in VSCodium because the `defaults` path is different.
|
||||
|
||||
```bash
|
||||
$ defaults write com.vscodium ApplePressAndHoldEnabled -bool false
|
||||
```
|
||||
|
||||
## <a id="terminal-support"></a>How do I open VSCodium from the terminal?
|
||||
|
||||
For macOS and Windows:
|
||||
- Go to the command palette (View | Command Palette...)
|
||||
- Choose `Shell command: Install 'codium' command in PATH`.
|
||||
|
||||

|
||||
|
||||
This allows you to open files or directories in VSCodium directly from your terminal:
|
||||
|
||||
```bash
|
||||
~/in-my-project $ codium . # open this directory
|
||||
~/in-my-project $ codium file.txt # open this file
|
||||
```
|
||||
|
||||
Feel free to alias this command to something easier to type in your shell profile (e.g. `alias code=codium`).
|
||||
|
||||
On Linux, when installed with a package manager, `codium` has been installed in your `PATH`.
|
||||
|
||||
### <a id="from-linux-targz"></a>From Linux .tar.gz
|
||||
|
||||
When the archive `VSCodium-linux-<arch>-<version>.tar.gz` is extracted, the main entry point for VSCodium is `./bin/codium`.
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
export ELECTRON_VERSION="30.5.1"
|
||||
export VSCODE_ELECTRON_TAG="v${ELECTRON_VERSION}.riscv1"
|
||||
|
||||
echo "dfae1ccddec728faa7e5dcc92fb38ee7c40251e7f7638817da1c2a94dd37b5c2 *electron-v${ELECTRON_VERSION}-linux-riscv64.zip" >> build/checksums/electron.txt
|
||||
7
font-size/.artifactrc.yml
Normal file
7
font-size/.artifactrc.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
artifacts:
|
||||
"@daiyam/artifact-lang-js":
|
||||
version: 0.9.3
|
||||
requires:
|
||||
- "22"
|
||||
"@daiyam/artifact-lang-ts":
|
||||
version: 0.6.3
|
||||
17
font-size/.editorconfig
Normal file
17
font-size/.editorconfig
Normal file
@@ -0,0 +1,17 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = tab
|
||||
tab_width = 4
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[{*.yml,*.yaml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
29
font-size/.fixpackrc
Normal file
29
font-size/.fixpackrc
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"sortToTop": [
|
||||
"name",
|
||||
"displayName",
|
||||
"description",
|
||||
"version",
|
||||
"private",
|
||||
"author",
|
||||
"publisher",
|
||||
"license",
|
||||
"homepage",
|
||||
"repository",
|
||||
"bugs",
|
||||
"engines",
|
||||
"type",
|
||||
"bin",
|
||||
"exports",
|
||||
"main",
|
||||
"module",
|
||||
"types",
|
||||
"typesVersions",
|
||||
"scripts",
|
||||
"dependencies",
|
||||
"devDependencies",
|
||||
"optionalDependencies",
|
||||
"keywords"
|
||||
],
|
||||
"finalNewLine": true
|
||||
}
|
||||
2
font-size/.gitignore
vendored
Normal file
2
font-size/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/node_modules/
|
||||
/lib/
|
||||
1
font-size/.nvmrc
Normal file
1
font-size/.nvmrc
Normal file
@@ -0,0 +1 @@
|
||||
v22.21.1
|
||||
9
font-size/.vscode/settings.json
vendored
Normal file
9
font-size/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"search.exclude": {
|
||||
"package-lock.json": true,
|
||||
"lib/**": true,
|
||||
},
|
||||
"taskExplorer.exclude": [
|
||||
".husky",
|
||||
],
|
||||
}
|
||||
153
font-size/.xo-config.json
Normal file
153
font-size/.xo-config.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"ignores": [
|
||||
"*.config.js",
|
||||
"*.config.ts"
|
||||
],
|
||||
"rules": {
|
||||
"@typescript-eslint/ban-types": "off",
|
||||
"@typescript-eslint/brace-style": [
|
||||
"error",
|
||||
"stroustrup"
|
||||
],
|
||||
"@typescript-eslint/class-literal-property-style": [
|
||||
"error",
|
||||
"fields"
|
||||
],
|
||||
"@typescript-eslint/keyword-spacing": [
|
||||
"error",
|
||||
{
|
||||
"overrides": {
|
||||
"if": {
|
||||
"after": false
|
||||
},
|
||||
"for": {
|
||||
"after": false
|
||||
},
|
||||
"switch": {
|
||||
"after": false
|
||||
},
|
||||
"while": {
|
||||
"after": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/member-ordering": [
|
||||
"error",
|
||||
{
|
||||
"default": [
|
||||
"field",
|
||||
"constructor",
|
||||
"get",
|
||||
"set",
|
||||
"method"
|
||||
]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
{
|
||||
"selector": "variable",
|
||||
"modifiers": ["const", "global"],
|
||||
"format": ["camelCase", "UPPER_CASE"],
|
||||
"filter": {
|
||||
"regex": "^(__filename|__dirname)$",
|
||||
"match": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"selector": "variable",
|
||||
"format": ["camelCase"],
|
||||
"filter": {
|
||||
"regex": "^(__filename|__dirname)$",
|
||||
"match": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-confusing-void-expression": "off",
|
||||
"@typescript-eslint/no-dynamic-delete": "off",
|
||||
"@typescript-eslint/no-inferrable-types": "off",
|
||||
"@typescript-eslint/no-namespace": "off",
|
||||
"@typescript-eslint/object-curly-spacing": [
|
||||
"error",
|
||||
"always"
|
||||
],
|
||||
"@typescript-eslint/parameter-properties": "off",
|
||||
"@typescript-eslint/prefer-promise-reject-errors": "off",
|
||||
"@typescript-eslint/return-await": "off",
|
||||
"arrow-parens": [
|
||||
"error",
|
||||
"always"
|
||||
],
|
||||
"capitalized-comments": "off",
|
||||
"complexity": "off",
|
||||
"default-case": "off",
|
||||
"import/extensions": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"import/order": [
|
||||
"error",
|
||||
{
|
||||
"groups": [
|
||||
"builtin",
|
||||
"external",
|
||||
"internal",
|
||||
"parent",
|
||||
"sibling",
|
||||
"index",
|
||||
"object"
|
||||
],
|
||||
"alphabetize": {
|
||||
"order": "asc",
|
||||
"caseInsensitive": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"max-depth": [
|
||||
"error",
|
||||
8
|
||||
],
|
||||
"max-params": [
|
||||
"error",
|
||||
12
|
||||
],
|
||||
"no-await-in-loop": "off",
|
||||
"no-else-return": "off",
|
||||
"no-lonely-if": "off",
|
||||
"no-negated-condition": "off",
|
||||
"object-curly-newline": "off",
|
||||
"one-var": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"unicorn/empty-brace-spaces": "off",
|
||||
"unicorn/no-array-callback-reference": "off",
|
||||
"unicorn/no-length-as-slice-end": "off",
|
||||
"unicorn/no-object-as-default-parameter": "off",
|
||||
"unicorn/prefer-json-parse-buffer": "off",
|
||||
"unicorn/prefer-module": "off",
|
||||
"unicorn/prefer-node-protocol": "off",
|
||||
"unicorn/prefer-switch": "off",
|
||||
"unicorn/prefer-ternary": "off",
|
||||
"unicorn/prevent-abbreviations": [
|
||||
"error",
|
||||
{
|
||||
"replacements": {
|
||||
"arg": false,
|
||||
"args": false,
|
||||
"dir": false,
|
||||
"err": false,
|
||||
"fn": false,
|
||||
"func": false,
|
||||
"i": false,
|
||||
"j": false,
|
||||
"mod": false,
|
||||
"num": false,
|
||||
"pkg": false,
|
||||
"str": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
270
font-size/generate-css.ts
Executable file
270
font-size/generate-css.ts
Executable file
@@ -0,0 +1,270 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import path from 'node:path';
|
||||
import process from 'node:process';
|
||||
import fse from '@zokugun/fs-extra-plus/async';
|
||||
import { err, OK, type Result, stringifyError, xtry } from '@zokugun/xtry';
|
||||
import postcss, { Root, type Rule } from 'postcss';
|
||||
|
||||
type Area = {
|
||||
name: string;
|
||||
defaultSize: number;
|
||||
files: string[];
|
||||
prefixes: string[];
|
||||
};
|
||||
|
||||
const PX_REGEX = /(-?\d+(\.\d+)?)px\b/g;
|
||||
const COEFF_PRECISION = 6;
|
||||
const HEADER = '/*** Generated for Custom Font Size ***/';
|
||||
const ZEROS = ['margin', 'padding'];
|
||||
|
||||
const AREAS: Record<string, Area> = {
|
||||
activitybar: {
|
||||
name: 'activitybar',
|
||||
defaultSize: 16,
|
||||
files: ['src/vs/workbench/browser/parts/activitybar/media/activityaction.css'],
|
||||
prefixes: ['.monaco-workbench .activitybar'],
|
||||
},
|
||||
bottompane: {
|
||||
name: 'bottompane',
|
||||
defaultSize: 13,
|
||||
files: ['src/vs/workbench/browser/parts/panel/media/panelpart.css', 'src/vs/base/browser/ui/actionbar/actionbar.css', 'src/vs/workbench/browser/parts/media/paneCompositePart.css'],
|
||||
prefixes: ['.monaco-workbench .part.panel'],
|
||||
},
|
||||
statusbar: {
|
||||
name: 'statusbar',
|
||||
defaultSize: 12,
|
||||
files: ['src/vs/workbench/browser/parts/statusbar/media/statusbarpart.css'],
|
||||
prefixes: ['.monaco-workbench .part.statusbar'],
|
||||
},
|
||||
sidebar: {
|
||||
name: 'sidebar',
|
||||
defaultSize: 13,
|
||||
files: [
|
||||
'src/vs/base/browser/ui/actionbar/actionbar.css',
|
||||
'src/vs/base/browser/ui/button/button.css',
|
||||
'src/vs/base/browser/ui/inputbox/inputBox.css',
|
||||
'src/vs/workbench/contrib/debug/browser/media/debugToolBar.css',
|
||||
'src/vs/workbench/contrib/debug/browser/media/debugViewlet.css',
|
||||
'src/vs/workbench/contrib/extensions/browser/media/extension.css',
|
||||
'src/vs/workbench/contrib/extensions/browser/media/extensionActions.css',
|
||||
'src/vs/workbench/contrib/search/browser/media/searchview.css',
|
||||
'src/vs/workbench/contrib/scm/browser/media/scm.css',
|
||||
],
|
||||
prefixes: ['.monaco-workbench .part.sidebar', '.monaco-workbench .part.auxiliarybar'],
|
||||
},
|
||||
tabs: {
|
||||
name: 'tabs',
|
||||
defaultSize: 13,
|
||||
files: [
|
||||
'src/vs/workbench/browser/parts/editor/media/editortabscontrol.css',
|
||||
'src/vs/workbench/browser/parts/editor/media/editortitlecontrol.css',
|
||||
'src/vs/workbench/browser/parts/editor/media/multieditortabscontrol.css'
|
||||
],
|
||||
prefixes: ['.monaco-workbench .part.editor > .content .editor-group-container > .title.tabs'],
|
||||
},
|
||||
};
|
||||
|
||||
function formatCoefficient(n: number): string { // {{{
|
||||
const fixed = n.toFixed(COEFF_PRECISION);
|
||||
return fixed.replace(/\.?0+$/, '');
|
||||
} // }}}
|
||||
|
||||
function replacePx(area: Area) { // {{{
|
||||
return (match: string, numStr: string): string => {
|
||||
const pxValue = Number.parseFloat(numStr);
|
||||
|
||||
if(pxValue === 1) {
|
||||
return match;
|
||||
}
|
||||
|
||||
const coeff = formatCoefficient(pxValue / area.defaultSize);
|
||||
|
||||
return `calc(var(--vscode-workbench-${area.name}-font-size) * ${coeff})`;
|
||||
};
|
||||
} // }}}
|
||||
|
||||
function transformPxValue(value: string, area: Area): string { // {{{
|
||||
return value.replaceAll(PX_REGEX, replacePx(area));
|
||||
} // }}}
|
||||
|
||||
async function processFile(filePath: string, areas: Area[]): Promise<Result<void, string>> { // {{{
|
||||
const readResult = await fse.readFile(filePath, 'utf8');
|
||||
if(readResult.fails) {
|
||||
return err(stringifyError(readResult.error));
|
||||
}
|
||||
|
||||
const content = extractOriginal(readResult.value);
|
||||
|
||||
const postcssResult = xtry(() => postcss.parse(content, { from: filePath }));
|
||||
if(postcssResult.fails) {
|
||||
return err(`Failed to parse ${filePath}: ${stringifyError(postcssResult.error)}`);
|
||||
}
|
||||
|
||||
const generatedRoot = postcss.root();
|
||||
|
||||
for(const area of areas) {
|
||||
processFileArea(postcssResult.value, generatedRoot, area)
|
||||
}
|
||||
|
||||
if(generatedRoot.nodes && generatedRoot.nodes.length > 0) {
|
||||
const writeResult = await fse.writeFile(filePath, content + `\n\n\n${HEADER}\n\n` + generatedRoot.toString(), 'utf8');
|
||||
if(writeResult.fails) {
|
||||
return err(stringifyError(readResult.error));
|
||||
}
|
||||
|
||||
console.log(`Generated: ${filePath}`);
|
||||
}
|
||||
else {
|
||||
console.log(`No px sizes found in: ${filePath}`);
|
||||
}
|
||||
|
||||
return OK;
|
||||
} // }}}
|
||||
|
||||
function processFileArea(postcssResult: Root, generatedRoot: Root, area: Area): void { // {{{
|
||||
postcssResult.walkRules((rule: Rule) => {
|
||||
const declarationsToAdd: Array<{ prop: string; value: string }> = [];
|
||||
|
||||
rule.walkDecls((declaration) => {
|
||||
if(PX_REGEX.test(declaration.value)) {
|
||||
const newValue = transformPxValue(declaration.value, area);
|
||||
|
||||
declarationsToAdd.push({ prop: declaration.prop, value: newValue });
|
||||
}
|
||||
else if(declaration.value === 'auto' && (declaration.prop === 'height' || declaration.prop === 'width')) {
|
||||
declarationsToAdd.push({ prop: declaration.prop, value: 'auto' });
|
||||
}
|
||||
else if(declaration.value === '0' && ZEROS.includes(declaration.prop)) {
|
||||
declarationsToAdd.push({ prop: declaration.prop, value: '0' });
|
||||
}
|
||||
});
|
||||
|
||||
if(declarationsToAdd.length > 0) {
|
||||
const selectors = (rule.selectors && rule.selectors.length > 0) ? rule.selectors : [rule.selector];
|
||||
const prefixeds: string[] = [];
|
||||
|
||||
for(const prefix of area.prefixes) {
|
||||
const parts = prefix.split(' ');
|
||||
const prefixed = selectors.map((s) => prefixSelector(s, parts)).join(', ');
|
||||
|
||||
prefixeds.push(prefixed);
|
||||
}
|
||||
|
||||
const newRule = postcss.rule({ selector: `${prefixeds.join(', ')}` });
|
||||
|
||||
let length = 0;
|
||||
|
||||
for(const declaration of declarationsToAdd) {
|
||||
if(!declaration.prop.startsWith('border')) {
|
||||
newRule.append({ ...declaration });
|
||||
length += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(length > 0) {
|
||||
generatedRoot.append(newRule);
|
||||
}
|
||||
}
|
||||
});
|
||||
} // }}}
|
||||
|
||||
function extractOriginal(content: string): string { // {{{
|
||||
const index = content.indexOf(HEADER);
|
||||
|
||||
if(index === -1) {
|
||||
return content;
|
||||
}
|
||||
|
||||
return content.slice(0, Math.max(0, index - 3));
|
||||
} // }}}
|
||||
|
||||
function extractStyle(selector: string): string { // {{{
|
||||
const match = /^(\.[\w-]+)/.exec(selector);
|
||||
|
||||
return match?.[1] ?? '';
|
||||
} // }}}
|
||||
|
||||
function mergeSelector(selectors: string[], prefixes: string[], index: number): void { // {{{
|
||||
if(index >= prefixes.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const prefix = prefixes[index];
|
||||
const selector = selectors[index];
|
||||
const style = extractStyle(prefix);
|
||||
|
||||
if(selector === style) {
|
||||
if(prefix.length > style.length) {
|
||||
selectors[index] = prefix;
|
||||
}
|
||||
|
||||
mergeSelector(selectors, prefixes, index + 1);
|
||||
}
|
||||
else if(selector.startsWith(style)) {
|
||||
mergeSelector(selectors, prefixes, index + 1);
|
||||
}
|
||||
else if(index === 0) {
|
||||
selectors.unshift(...prefixes)
|
||||
}
|
||||
else {
|
||||
selectors.splice(index + 1, 0, ...prefixes.slice(index));
|
||||
}
|
||||
} // }}}
|
||||
|
||||
function prefixSelector(selector: string, prefixParts: string[]): string { // {{{
|
||||
const parts = selector.split(' ');
|
||||
|
||||
if(parts[0] === '.mac' || parts[0] === '.linux' || parts[0] === '.windows') {
|
||||
parts[0] = `${prefixParts[0]}${parts[0]}`;
|
||||
|
||||
parts.splice(1, 0, ...prefixParts.slice(1));
|
||||
}
|
||||
else {
|
||||
mergeSelector(parts, prefixParts, 0);
|
||||
}
|
||||
|
||||
return parts.join(' ');
|
||||
} // }}}
|
||||
|
||||
async function main(): Promise<void> { // {{{
|
||||
const name = process.argv[2];
|
||||
const area = AREAS[name];
|
||||
|
||||
if(area) {
|
||||
for(const file of area.files) {
|
||||
const result = await processFile(path.join('..', 'vscode', file), [area]);
|
||||
if(result.fails) {
|
||||
console.error(`Error processing ${file}:`, result.error);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(name === 'all') {
|
||||
const files: Record<string, Area[]> = {};
|
||||
|
||||
for(const area of Object.values(AREAS)) {
|
||||
for(const file of area.files) {
|
||||
if(files[file]) {
|
||||
files[file].push(area)
|
||||
}
|
||||
else {
|
||||
files[file] = [area]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(const [file, areas] of Object.entries(files)) {
|
||||
const result = await processFile(path.join('..', 'vscode', file), areas);
|
||||
if(result.fails) {
|
||||
console.error(`Error processing ${file}:`, result.error);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log(`No area found for ${name}`);
|
||||
console.log(`\nAvailable areas:\n- ${Object.keys(AREAS).join('\n- ')}`);
|
||||
return;
|
||||
}
|
||||
} // }}}
|
||||
|
||||
await main();
|
||||
7391
font-size/package-lock.json
generated
Normal file
7391
font-size/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
30
font-size/package.json
Normal file
30
font-size/package.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "font-size",
|
||||
"description": "",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Baptiste Augrain",
|
||||
"email": "daiyam@zokugun.org"
|
||||
},
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"main": "generate-css.ts",
|
||||
"scripts": {
|
||||
"clean": "rimraf lib",
|
||||
"lint": "xo",
|
||||
"lint:fix": "xo --fix",
|
||||
"prepare": "fixpack || true"
|
||||
},
|
||||
"dependencies": {
|
||||
"@zokugun/fs-extra-plus": "^0.3.3",
|
||||
"@zokugun/xtry": "^0.10.1",
|
||||
"fast-glob": "^3.3.3",
|
||||
"postcss": "^8.5.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.9.0",
|
||||
"fixpack": "^4.0.0",
|
||||
"xo": "0.60.0"
|
||||
},
|
||||
"keywords": []
|
||||
}
|
||||
78
font-size/tsconfig.base.json
Normal file
78
font-size/tsconfig.base.json
Normal file
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
/* Language and Environment */
|
||||
"target": "ES2022", /* Specify ECMAScript target version. */
|
||||
"lib": [ /* Specify library files to be included in the compilation. */
|
||||
"ES2022",
|
||||
],
|
||||
|
||||
/* Modules */
|
||||
"module": "node16", /* Specify what module code is generated. */
|
||||
|
||||
/* Basic Options */
|
||||
// "allowJs": false, /* Allow javascript files to be compiled. */
|
||||
// "checkJs": false, /* Report errors in '.js' files. */
|
||||
// "jsx": undefined, /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */
|
||||
// "declaration": false, /* Generates corresponding '.d.ts' file. */
|
||||
// "declarationDir": "" /* Specify the output directory for generated declaration files. */
|
||||
// "declarationMap": false, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
||||
// "outFile": "", /* Specify a file that bundles all outputs into one JavaScript file. */
|
||||
// "outDir": "", /* Specify an output folder for all emitted files. */
|
||||
// "rootDir": "", /* Specify the root directory of input files. */
|
||||
// "incremental": false, /* Save '.tsbuildinfo' files to allow for incremental compilation of projects. */
|
||||
// "composite": false, /* Enable constraints that allow a TypeScript project to be used with project references. */
|
||||
// "tsBuildInfoFile": ".tsbuildinfo", /* Specify the folder for '.tsbuildinfo' incremental compilation files. */
|
||||
// "removeComments": false, /* Disable emitting comments. */
|
||||
// "noEmit": true, /* Disable emitting file from a compilation. */
|
||||
// "importHelpers": false, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
||||
// "downlevelIteration": false, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||
// "isolatedModules": false, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
||||
|
||||
/* Strict Type-Checking Options */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
"strictNullChecks": true, /* When type checking, take into account null and undefined. */
|
||||
// "strictFunctionTypes": false, /* Enable strict checking of function types. */
|
||||
// "strictBindCallApply": false, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
|
||||
// "strictPropertyInitialization": false, /* Enable strict checking of property initialization in classes. */
|
||||
// "noImplicitThis": false, /* Enable error reporting when 'this' is given the type 'any'. */
|
||||
"alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
|
||||
|
||||
/* Additional Checks */
|
||||
"noUnusedLocals": true, /* Report errors on unused locals. */
|
||||
// "noUnusedParameters": false, /* Report errors on unused parameters. */
|
||||
"noImplicitAny": false, /* Report error for expressions and declarations with an implied any type.. */
|
||||
"noImplicitReturns": false, /* Report error when not all code paths in function return a value. */
|
||||
// "noFallthroughCasesInSwitch": false, /* Report errors for fallthrough cases in switch statement. */
|
||||
// "noUncheckedIndexedAccess": false, /* Include 'undefined' in index signature results */
|
||||
// "noImplicitOverride": false, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */
|
||||
// "noPropertyAccessFromIndexSignature": false, /* Require undeclared properties from index signatures to use element accesses. */
|
||||
|
||||
/* Module Resolution Options */
|
||||
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||
// "baseUrl": "", /* Specify the base directory to resolve non-relative module names. */
|
||||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
||||
// "typeRoots": [], /* List of folders to include type definitions from. */
|
||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
||||
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
"allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
||||
// "preserveSymlinks": false, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
|
||||
// "allowUmdGlobalAccess": false, /* Allow accessing UMD globals from modules. */
|
||||
// "resolveJsonModule": false, /* Enable importing .json files */
|
||||
|
||||
/* Source Map Options */
|
||||
// "sourceMap": false, /* Create source map files for emitted JavaScript files. */
|
||||
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": false, /* Include sourcemap files inside the emitted JavaScript. */
|
||||
// "inlineSources": false, /* Include source code in the sourcemaps inside the emitted JavaScript. */
|
||||
|
||||
/* Experimental Options */
|
||||
// "experimentalDecorators": false, /* Enables experimental support for ES7 decorators. */
|
||||
// "emitDecoratorMetadata": false, /* Emit design-type metadata for decorated declarations in source files. */
|
||||
|
||||
/* Advanced Options */
|
||||
"skipLibCheck": true, /* Skip type checking all .d.ts files. */
|
||||
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
|
||||
},
|
||||
}
|
||||
15
font-size/tsconfig.json
Normal file
15
font-size/tsconfig.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"extends": "./tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
/* Basic Options */
|
||||
"outDir": ".",
|
||||
"rootDir": ".",
|
||||
"declaration": true,
|
||||
|
||||
/* Module Resolution Options */
|
||||
"resolveJsonModule": true, /* Enable importing .json files */
|
||||
},
|
||||
"files": [
|
||||
"package.json",
|
||||
],
|
||||
}
|
||||
22
get_repo.sh
22
get_repo.sh
@@ -9,13 +9,13 @@ if [[ "${CI_BUILD}" != "no" ]]; then
|
||||
fi
|
||||
|
||||
if [[ -z "${RELEASE_VERSION}" ]]; then
|
||||
if [[ "${VSCODE_LATEST}" == "yes" ]] || [[ ! -f "${VSCODE_QUALITY}.json" ]]; then
|
||||
if [[ "${VSCODE_LATEST}" == "yes" ]] || [[ ! -f "./upstream/${VSCODE_QUALITY}.json" ]]; then
|
||||
echo "Retrieve lastest version"
|
||||
UPDATE_INFO=$( curl --silent --fail "https://update.code.visualstudio.com/api/update/darwin/${VSCODE_QUALITY}/0000000000000000000000000000000000000000" )
|
||||
else
|
||||
echo "Get version from ${VSCODE_QUALITY}.json"
|
||||
MS_COMMIT=$( jq -r '.commit' "${VSCODE_QUALITY}.json" )
|
||||
MS_TAG=$( jq -r '.tag' "${VSCODE_QUALITY}.json" )
|
||||
MS_COMMIT=$( jq -r '.commit' "./upstream/${VSCODE_QUALITY}.json" )
|
||||
MS_TAG=$( jq -r '.tag' "./upstream/${VSCODE_QUALITY}.json" )
|
||||
fi
|
||||
|
||||
if [[ -z "${MS_COMMIT}" ]]; then
|
||||
@@ -27,16 +27,16 @@ if [[ -z "${RELEASE_VERSION}" ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
date=$( date +%Y%j )
|
||||
TIME_PATCH=$( printf "%04d" $(($(date +%-j) * 24 + $(date +%-H))) )
|
||||
|
||||
if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
|
||||
RELEASE_VERSION="${MS_TAG}.${date: -5}-insider"
|
||||
RELEASE_VERSION="${MS_TAG}${TIME_PATCH}-insider"
|
||||
else
|
||||
RELEASE_VERSION="${MS_TAG}.${date: -5}"
|
||||
RELEASE_VERSION="${MS_TAG}${TIME_PATCH}"
|
||||
fi
|
||||
else
|
||||
if [[ "${VSCODE_QUALITY}" == "insider" ]]; then
|
||||
if [[ "${RELEASE_VERSION}" =~ ^([0-9]+\.[0-9]+\.[0-9]+)\.[0-9]+-insider$ ]];
|
||||
if [[ "${RELEASE_VERSION}" =~ ^([0-9]+\.[0-9]+\.[0-5])[0-9]+-insider$ ]];
|
||||
then
|
||||
MS_TAG="${BASH_REMATCH[1]}"
|
||||
else
|
||||
@@ -44,7 +44,7 @@ else
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [[ "${RELEASE_VERSION}" =~ ^([0-9]+\.[0-9]+\.[0-9]+)\.[0-9]+$ ]];
|
||||
if [[ "${RELEASE_VERSION}" =~ ^([0-9]+\.[0-9]+\.[0-5])[0-9]+$ ]];
|
||||
then
|
||||
MS_TAG="${BASH_REMATCH[1]}"
|
||||
else
|
||||
@@ -53,8 +53,8 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${MS_TAG}" == "$( jq -r '.tag' "${VSCODE_QUALITY}".json )" ]]; then
|
||||
MS_COMMIT=$( jq -r '.commit' "${VSCODE_QUALITY}".json )
|
||||
if [[ "${MS_TAG}" == "$( jq -r '.tag' "./upstream/${VSCODE_QUALITY}.json" )" ]]; then
|
||||
MS_COMMIT=$( jq -r '.commit' "./upstream/${VSCODE_QUALITY}.json" )
|
||||
else
|
||||
echo "Error: No MS_COMMIT for ${RELEASE_VERSION}"
|
||||
exit 1
|
||||
@@ -80,7 +80,7 @@ elif [[ -z "${MS_COMMIT}" ]]; then
|
||||
if [[ -z "${REFERENCE}" ]]; then
|
||||
echo "Error: The following tag can't be found: ${MS_TAG}"
|
||||
exit 1
|
||||
elif [[ "${REFERENCE}" =~ ^([[:alnum:]]+)[[:space:]]+refs\/tags\/([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
|
||||
elif [[ "${REFERENCE}" =~ ^([[:alnum:]]+)[[:space:]]+refs\/tags\/([0-9]+\.[0-9]+\.[0-5])$ ]]; then
|
||||
MS_COMMIT="${BASH_REMATCH[1]}"
|
||||
MS_TAG="${BASH_REMATCH[2]}"
|
||||
else
|
||||
|
||||
@@ -6,20 +6,22 @@ set -e
|
||||
# DEBUG
|
||||
# set -o xtrace
|
||||
|
||||
QUALITY="stable"
|
||||
COLOR="blue1"
|
||||
|
||||
while getopts ":i" opt; do
|
||||
case "$opt" in
|
||||
i)
|
||||
export QUALITY="insider"
|
||||
export COLOR="orange1"
|
||||
QUALITY="insider"
|
||||
[[ -z "${COLOR}" ]] && COLOR="orange1"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -z "${COLOR}" ]] && COLOR="blue1"
|
||||
[[ -z "${QUALITY}" ]] && QUALITY="stable"
|
||||
[[ -z "${SRC_PREFIX}" ]] && SRC_PREFIX=""
|
||||
[[ -z "${VSCODE_PREFIX}" ]] && VSCODE_PREFIX=""
|
||||
|
||||
check_programs() { # {{{
|
||||
for arg in "$@"; do
|
||||
if ! command -v "${arg}" &> /dev/null; then
|
||||
@@ -31,27 +33,47 @@ check_programs() { # {{{
|
||||
|
||||
check_programs "icns2png" "composite" "convert" "png2icns" "icotool" "rsvg-convert" "sed"
|
||||
|
||||
. ./utils.sh
|
||||
. "./${VSCODE_PREFIX}utils.sh"
|
||||
|
||||
SRC_PREFIX=""
|
||||
VSCODE_PREFIX=""
|
||||
if ! declare -F load_linux_png &>/dev/null; then
|
||||
load_linux_png() {
|
||||
wget "https://raw.githubusercontent.com/VSCodium/icons/main/icons/linux/circle1/${COLOR}/paulo22s.png" -O "$1"
|
||||
}
|
||||
fi
|
||||
|
||||
if ! declare -F load_windows_ico &>/dev/null; then
|
||||
load_windows_ico() {
|
||||
wget "https://raw.githubusercontent.com/VSCodium/icons/main/icons/win32/nobg/${COLOR}/paulo22s.ico" -O "$1"
|
||||
}
|
||||
fi
|
||||
|
||||
build_darwin_main() { # {{{
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/darwin/code.icns" ]]; then
|
||||
rsvg-convert -w 655 -h 655 "icons/${QUALITY}/codium_cnl.svg" -o "code_logo.png"
|
||||
composite "code_logo.png" -gravity center "icons/template_macos.png" "code_1024.png"
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/darwin"
|
||||
|
||||
if [[ "$1" == "no-template" ]]; then
|
||||
rsvg-convert -w 1024 -h 1024 "icons/${QUALITY}/codium_cnl.svg" -o "code_1024.png"
|
||||
else
|
||||
rsvg-convert -w 655 -h 655 "icons/${QUALITY}/codium_cnl.svg" -o "code_logo.png"
|
||||
composite "code_logo.png" -gravity center "${VSCODE_PREFIX}icons/template_macos.png" "code_1024.png"
|
||||
fi
|
||||
|
||||
convert "code_1024.png" -resize 512x512 code_512.png
|
||||
convert "code_1024.png" -resize 256x256 code_256.png
|
||||
convert "code_1024.png" -resize 128x128 code_128.png
|
||||
|
||||
png2icns "${SRC_PREFIX}src/${QUALITY}/resources/darwin/code.icns" code_512.png code_256.png code_128.png
|
||||
png2icns "${SRC_PREFIX}src/${QUALITY}/resources/darwin/code.icns" code_1024.png code_512.png code_256.png code_128.png
|
||||
|
||||
rm code_1024.png code_512.png code_256.png code_128.png code_logo.png
|
||||
rm -f code_1024.png code_512.png code_256.png code_128.png code_logo.png
|
||||
fi
|
||||
} # }}}
|
||||
|
||||
build_darwin_types() { # {{{
|
||||
rsvg-convert -w 128 -h 128 "icons/${QUALITY}/codium_cnl_w80_b8.svg" -o "code_logo.png"
|
||||
if [[ "$1" == "no-border" ]]; then
|
||||
rsvg-convert -w 128 -h 128 "icons/${QUALITY}/codium_cnl.svg" -o "code_logo.png"
|
||||
else
|
||||
rsvg-convert -w 128 -h 128 "icons/${QUALITY}/codium_cnl_w80_b8.svg" -o "code_logo.png"
|
||||
fi
|
||||
|
||||
for file in "${VSCODE_PREFIX}"vscode/resources/darwin/*; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
@@ -60,7 +82,7 @@ build_darwin_types() { # {{{
|
||||
if [[ "${name}" != 'code' ]] && [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/darwin/${name}.icns" ]]; then
|
||||
icns2png -x -s 512x512 "${file}" -o .
|
||||
|
||||
composite -blend 100% -geometry +323+365 "icons/corner_512.png" "${name}_512x512x32.png" "${name}.png"
|
||||
composite -blend 100% -geometry +323+365 "${VSCODE_PREFIX}icons/corner_512.png" "${name}_512x512x32.png" "${name}.png"
|
||||
composite -geometry +359+374 "code_logo.png" "${name}.png" "${name}.png"
|
||||
|
||||
convert "${name}.png" -resize 256x256 "${name}_256.png"
|
||||
@@ -77,30 +99,52 @@ build_darwin_types() { # {{{
|
||||
|
||||
build_linux_main() { # {{{
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/linux/code.png" ]]; then
|
||||
wget "https://raw.githubusercontent.com/VSCodium/icons/main/icons/linux/circle1/${COLOR}/paulo22s.png" -O "${SRC_PREFIX}src/${QUALITY}/resources/linux/code.png"
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/linux"
|
||||
|
||||
load_linux_png "${SRC_PREFIX}src/${QUALITY}/resources/linux/code.png"
|
||||
fi
|
||||
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/linux/rpm"
|
||||
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/linux/rpm/code.xpm" ]]; then
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/linux/rpm"
|
||||
|
||||
convert "${SRC_PREFIX}src/${QUALITY}/resources/linux/code.png" "${SRC_PREFIX}src/${QUALITY}/resources/linux/rpm/code.xpm"
|
||||
fi
|
||||
} # }}}
|
||||
|
||||
build_media() { # {{{
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/src/vs/workbench/browser/media/code-icon.svg" ]]; then
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/src/vs/workbench/browser/media"
|
||||
|
||||
cp "icons/${QUALITY}/codium_clt.svg" "${SRC_PREFIX}src/${QUALITY}/src/vs/workbench/browser/media/code-icon.svg"
|
||||
gsed -i 's|width="100" height="100"|width="1024" height="1024"|' "${SRC_PREFIX}src/${QUALITY}/src/vs/workbench/browser/media/code-icon.svg"
|
||||
fi
|
||||
} # }}}
|
||||
|
||||
build_windows_main() { # {{{
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/win32/code.ico" ]]; then
|
||||
wget "https://raw.githubusercontent.com/VSCodium/icons/main/icons/win32/nobg/${COLOR}/paulo22s.ico" -O "${SRC_PREFIX}src/${QUALITY}/resources/win32/code.ico"
|
||||
build_server() { # {{{
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/server"
|
||||
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/server/favicon.ico" ]]; then
|
||||
load_windows_ico "${SRC_PREFIX}src/${QUALITY}/resources/server/favicon.ico"
|
||||
fi
|
||||
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/server/code-192.png" ]]; then
|
||||
convert -size "192x192" "${SRC_PREFIX}src/${QUALITY}/resources/linux/code.png" "${SRC_PREFIX}src/${QUALITY}/resources/server/code-192.png"
|
||||
fi
|
||||
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/server/code-512.png" ]]; then
|
||||
convert -size "512x512" "${SRC_PREFIX}src/${QUALITY}/resources/linux/code.png" "${SRC_PREFIX}src/${QUALITY}/resources/server/code-512.png"
|
||||
fi
|
||||
} # }}}
|
||||
|
||||
build_windows_type() {
|
||||
build_windows_main() { # {{{
|
||||
if [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/win32/code.ico" ]]; then
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/win32"
|
||||
|
||||
load_windows_ico "${SRC_PREFIX}src/${QUALITY}/resources/win32/code.ico"
|
||||
fi
|
||||
} # }}}
|
||||
|
||||
build_windows_type() { # {{{
|
||||
local FILE_PATH IMG_SIZE IMG_BG_COLOR LOGO_SIZE GRAVITY
|
||||
|
||||
FILE_PATH="$1"
|
||||
@@ -118,12 +162,16 @@ build_windows_type() {
|
||||
|
||||
rsvg-convert -w "${LOGO_SIZE}" -h "${LOGO_SIZE}" "icons/${QUALITY}/codium_cnl.svg" -o "code_logo.png"
|
||||
|
||||
composite -gravity "${GRAVITY}" "code_logo.png" "${FILE_PATH}" "${FILE_PATH}"
|
||||
if [[ "${GRAVITY}" == "center" ]]; then
|
||||
composite -gravity "${GRAVITY}" "code_logo.png" "${FILE_PATH}" "${FILE_PATH}"
|
||||
else
|
||||
composite -gravity NorthWest -geometry "${GRAVITY}" "code_logo.png" "${FILE_PATH}" "${FILE_PATH}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
} # }}}
|
||||
|
||||
build_windows_types() { # {{{
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/win32"
|
||||
mkdir -p "${SRC_PREFIX}src/${QUALITY}/resources/win32" "${SRC_PREFIX}build/windows/msi/resources/${QUALITY}"
|
||||
|
||||
rsvg-convert -b "#F5F6F7" -w 64 -h 64 "icons/${QUALITY}/codium_cnl.svg" -o "code_logo.png"
|
||||
|
||||
@@ -134,11 +182,11 @@ build_windows_types() { # {{{
|
||||
if [[ "${name}" != 'code' ]] && [[ ! -f "${SRC_PREFIX}src/${QUALITY}/resources/win32/${name}.ico" ]]; then
|
||||
icotool -x -w 256 "${file}"
|
||||
|
||||
composite -geometry +150+185 "code_logo.png" "${name}_9_256x256x32.png" "${name}.png"
|
||||
composite -geometry +150+185 "code_logo.png" "${name}_1_256x256x32.png" "${name}.png"
|
||||
|
||||
convert "${name}.png" -define icon:auto-resize=256,128,96,64,48,32,24,20,16 "${SRC_PREFIX}src/${QUALITY}/resources/win32/${name}.ico"
|
||||
|
||||
rm "${name}_9_256x256x32.png" "${name}.png"
|
||||
rm "${name}_1_256x256x32.png" "${name}.png"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
@@ -174,4 +222,5 @@ if [[ "${0}" == "${BASH_SOURCE[0]}" ]]; then
|
||||
build_windows_types
|
||||
|
||||
build_media
|
||||
build_server
|
||||
fi
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"tag": "1.93.0",
|
||||
"commit": "5b066ec2e30cf46bc636d6d27af5404713f6b0f8"
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
GH_ARCH="amd64"
|
||||
|
||||
VERSION=$( curl --retry 12 --retry-delay 30 "https://api.github.com/repos/cli/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c2- )
|
||||
|
||||
curl --retry 12 --retry-delay 120 -sSL "https://github.com/cli/cli/releases/download/v${VERSION}/gh_${VERSION}_linux_${GH_ARCH}.tar.gz" -o "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
|
||||
|
||||
tar xf "gh_${VERSION}_linux_${GH_ARCH}.tar.gz"
|
||||
|
||||
cp "gh_${VERSION}_linux_${GH_ARCH}/bin/gh" /usr/local/bin/
|
||||
|
||||
gh --version
|
||||
3
npmrc
Normal file
3
npmrc
Normal file
@@ -0,0 +1,3 @@
|
||||
build_from_source="true"
|
||||
legacy-peer-deps="true"
|
||||
timeout=180000
|
||||
@@ -1,83 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
set -ex
|
||||
|
||||
if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tar -xzf ./vscode.tar.gz
|
||||
|
||||
chown -R root:root vscode
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
export VSCODE_SKIP_NODE_VERSION_CHECK=1
|
||||
export VSCODE_SYSROOT_PREFIX='-glibc-2.17'
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
|
||||
export VSCODE_SYSROOT_REPO='VSCodium/vscode-linux-build-agent'
|
||||
export VSCODE_SYSROOT_VERSION='20240129-253798'
|
||||
export VSCODE_SYSROOT_PREFIX='-glibc-2.28'
|
||||
fi
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "riscv64" ]]; then
|
||||
export VSCODE_ELECTRON_REPO='riscv-forks/electron-riscv-releases'
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
|
||||
source ../electron.riscv64.sh
|
||||
|
||||
if [[ "${ELECTRON_VERSION}" != "$(yarn config get target)" ]]; then
|
||||
# Fail the pipeline if electron target doesn't match what is used.
|
||||
# Look for releases here if electron version used by vscode changed:
|
||||
# https://github.com/riscv-forks/electron-riscv-releases/releases
|
||||
echo "Electron RISC-V binary version doesn't match target electron version!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -d "../patches/linux/client/" ]]; then
|
||||
for file in "../patches/linux/client/"*.patch; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
echo applying patch: "${file}";
|
||||
if ! git apply --ignore-whitespace "${file}"; then
|
||||
echo failed to apply patch "${file}" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci --prefix build && break
|
||||
if [[ $i == 3 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
|
||||
source ./build/azure-pipelines/linux/setup-env.sh
|
||||
else
|
||||
./build/azure-pipelines/linux/setup-env.sh
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci && break
|
||||
if [[ $i -eq 3 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
node build/azure-pipelines/distro/mixin-npm
|
||||
|
||||
yarn gulp "vscode-linux-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
find "../VSCode-linux-${VSCODE_ARCH}" -print0 | xargs -0 touch -c
|
||||
|
||||
cd ..
|
||||
@@ -1,149 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
set -ex
|
||||
|
||||
if [[ "${CI_BUILD}" == "no" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APP_NAME_LC="$( echo "${APP_NAME}" | awk '{print tolower($0)}' )"
|
||||
|
||||
mkdir -p assets
|
||||
|
||||
tar -xzf ./vscode.tar.gz
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
GLIBC_VERSION="2.17"
|
||||
GLIBCXX_VERSION="3.4.22"
|
||||
NODE_VERSION="16.20.2"
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
|
||||
GLIBC_VERSION="2.28"
|
||||
elif [[ "${VSCODE_ARCH}" == "riscv64" ]]; then
|
||||
# Unofficial RISC-V nodejs builds doesn't provide v16.x
|
||||
NODE_VERSION="18.18.1"
|
||||
fi
|
||||
|
||||
export VSCODE_PLATFORM='linux'
|
||||
export VSCODE_SKIP_NODE_VERSION_CHECK=1
|
||||
export VSCODE_SYSROOT_PREFIX="-glibc-${GLIBC_VERSION}"
|
||||
|
||||
VSCODE_HOST_MOUNT="$( pwd )"
|
||||
|
||||
export VSCODE_HOST_MOUNT
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "x64" || "${VSCODE_ARCH}" == "arm64" ]]; then
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:centos7-devtoolset8-${VSCODE_ARCH}"
|
||||
elif [[ "${VSCODE_ARCH}" == "armhf" ]]; then
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:bionic-devtoolset-arm32v7"
|
||||
elif [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:bionic-devtoolset-ppc64le"
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
export VSCODE_SYSROOT_REPO='VSCodium/vscode-linux-build-agent'
|
||||
export VSCODE_SYSROOT_VERSION='20240129-253798'
|
||||
elif [[ "${VSCODE_ARCH}" == "riscv64" ]]; then
|
||||
VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME="vscodium/vscodium-linux-build-agent:focal-devtoolset-riscv64"
|
||||
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
||||
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
|
||||
fi
|
||||
|
||||
export VSCODE_REMOTE_DEPENDENCIES_CONTAINER_NAME
|
||||
|
||||
sed -i "/target/s/\"20.*\"/\"${NODE_VERSION}\"/" remote/.npmrc
|
||||
|
||||
if [[ "${NODE_VERSION}" != 16* ]]; then
|
||||
if [[ -f "../patches/linux/reh/node16.patch" ]]; then
|
||||
mv "../patches/linux/reh/node16.patch" "../patches/linux/reh/node16.patch.no"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -d "../patches/linux/reh/" ]]; then
|
||||
for file in "../patches/linux/reh/"*.patch; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
echo applying patch: "${file}";
|
||||
if ! git apply --ignore-whitespace "${file}"; then
|
||||
echo failed to apply patch "${file}" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci --prefix build && break
|
||||
if [[ $i == 3 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
if [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
|
||||
source ./build/azure-pipelines/linux/setup-env.sh
|
||||
else
|
||||
./build/azure-pipelines/linux/setup-env.sh --only-remote
|
||||
fi
|
||||
|
||||
for i in {1..5}; do # try 5 times
|
||||
npm ci && break
|
||||
if [[ $i == 3 ]]; then
|
||||
echo "Npm install failed too many times" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Npm install failed $i, trying again..."
|
||||
done
|
||||
|
||||
node build/azure-pipelines/distro/mixin-npm
|
||||
|
||||
export VSCODE_NODE_GLIBC="-glibc-${GLIBC_VERSION}"
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH}" != "no" ]]; then
|
||||
echo "Building REH"
|
||||
yarn gulp minify-vscode-reh
|
||||
yarn gulp "vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
EXPECTED_GLIBC_VERSION="${GLIBC_VERSION}" EXPECTED_GLIBCXX_VERSION="${GLIBCXX_VERSION}" SEARCH_PATH="../vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}" ./build/azure-pipelines/linux/verify-glibc-requirements.sh
|
||||
|
||||
echo "Archiving REH"
|
||||
pushd "../vscode-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}"
|
||||
tar czf "../assets/${APP_NAME_LC}-reh-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
|
||||
popd
|
||||
fi
|
||||
|
||||
if [[ "${SHOULD_BUILD_REH_WEB}" != "no" ]]; then
|
||||
echo "Building REH-web"
|
||||
yarn gulp minify-vscode-reh-web
|
||||
yarn gulp "vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-min-ci"
|
||||
|
||||
EXPECTED_GLIBC_VERSION="${GLIBC_VERSION}" EXPECTED_GLIBCXX_VERSION="${GLIBCXX_VERSION}" SEARCH_PATH="../vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}" ./build/azure-pipelines/linux/verify-glibc-requirements.sh
|
||||
|
||||
echo "Archiving REH-web"
|
||||
pushd "../vscode-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}"
|
||||
tar czf "../assets/${APP_NAME_LC}-reh-web-${VSCODE_PLATFORM}-${VSCODE_ARCH}-${RELEASE_VERSION}.tar.gz" .
|
||||
popd
|
||||
fi
|
||||
|
||||
cd ..
|
||||
|
||||
npm install -g checksum
|
||||
|
||||
sum_file() {
|
||||
if [[ -f "${1}" ]]; then
|
||||
echo "Calculating checksum for ${1}"
|
||||
checksum -a sha256 "${1}" > "${1}".sha256
|
||||
checksum "${1}" > "${1}".sha1
|
||||
fi
|
||||
}
|
||||
|
||||
cd assets
|
||||
|
||||
for FILE in *; do
|
||||
if [[ -f "${FILE}" ]]; then
|
||||
sum_file "${FILE}"
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
29
patch.sh
29
patch.sh
@@ -1,29 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [[ "${1}" == *patch ]]; then
|
||||
FILE="../patches/${1}"
|
||||
else
|
||||
FILE="../patches/${1}.patch"
|
||||
fi
|
||||
|
||||
cd vscode || { echo "'vscode' dir not found"; exit 1; }
|
||||
|
||||
git add .
|
||||
git reset -q --hard HEAD
|
||||
|
||||
if [[ -f "${FILE}" ]]; then
|
||||
git apply --reject "${FILE}"
|
||||
fi
|
||||
|
||||
git apply --reject "../patches/helper/settings.patch"
|
||||
|
||||
read -rp "Press any key when the conflict have been resolved..." -n1 -s
|
||||
|
||||
git restore .vscode/settings.json
|
||||
|
||||
git add .
|
||||
git diff --staged -U1 > "${FILE}"
|
||||
|
||||
cd ..
|
||||
|
||||
echo "The patch has been generated."
|
||||
18
patches/add-remote-url.patch
Normal file
18
patches/add-remote-url.patch
Normal file
@@ -0,0 +1,18 @@
|
||||
diff --git a/build/gulpfile.reh.ts b/build/gulpfile.reh.ts
|
||||
index b935764..68067db 100644
|
||||
--- a/build/gulpfile.reh.ts
|
||||
+++ b/build/gulpfile.reh.ts
|
||||
@@ -323,3 +323,3 @@ function packageTask(type: string, platform: string, arch: string, sourceFolderN
|
||||
const productJsonStream = gulp.src(['product.json'], { base: '.' })
|
||||
- .pipe(jsonEditor({ commit, date: readISODate(sourceFolderName), version }))
|
||||
+ .pipe(jsonEditor({ commit, date: readISODate(sourceFolderName), version, serverDownloadUrlTemplate: 'https://github.com/!!ASSETS_REPOSITORY!!/releases/download/!!RELEASE_VERSION!!/!!APP_NAME_LC!!-reh-${os}-${arch}-!!RELEASE_VERSION!!.tar.gz' }))
|
||||
.pipe(es.through(function (file) {
|
||||
diff --git a/build/gulpfile.vscode.ts b/build/gulpfile.vscode.ts
|
||||
index a103f11..82142a1 100644
|
||||
--- a/build/gulpfile.vscode.ts
|
||||
+++ b/build/gulpfile.vscode.ts
|
||||
@@ -374,3 +374,3 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d
|
||||
const productJsonStream = gulp.src(['product.json'], { base: '.' })
|
||||
- .pipe(jsonEditor({ commit, date: readISODate(out), checksums, version }))
|
||||
+ .pipe(jsonEditor({ commit, date: readISODate(out), checksums, version, serverDownloadUrlTemplate: 'https://github.com/!!ASSETS_REPOSITORY!!/releases/download/!!RELEASE_VERSION!!/!!APP_NAME_LC!!-reh-${os}-${arch}-!!RELEASE_VERSION!!.tar.gz' }))
|
||||
.pipe(es.through(function (file) {
|
||||
@@ -1,9 +1,9 @@
|
||||
diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
|
||||
index e12a33e..9300d62 100644
|
||||
--- a/build/gulpfile.reh.js
|
||||
+++ b/build/gulpfile.reh.js
|
||||
@@ -188,5 +188,16 @@ function getNodeChecksum(expectedName) {
|
||||
function extractAlpinefromDocker(nodeVersion, platform, arch) {
|
||||
diff --git a/build/gulpfile.reh.ts b/build/gulpfile.reh.ts
|
||||
index cb1a0a5..375851e 100644
|
||||
--- a/build/gulpfile.reh.ts
|
||||
+++ b/build/gulpfile.reh.ts
|
||||
@@ -159,5 +159,16 @@ function getNodeChecksum(expectedName: string): string | undefined {
|
||||
function extractAlpinefromDocker(nodeVersion: string, platform: string, arch: string) {
|
||||
- const imageName = arch === 'arm64' ? 'arm64v8/node' : 'node';
|
||||
+ let imageName = 'node';
|
||||
+ let dockerPlatform = '';
|
||||
@@ -19,5 +19,5 @@ index e12a33e..9300d62 100644
|
||||
+
|
||||
log(`Downloading node.js ${nodeVersion} ${platform} ${arch} from docker image ${imageName}`);
|
||||
- const contents = cp.execSync(`docker run --rm ${imageName}:${nodeVersion}-alpine /bin/sh -c 'cat \`which node\`'`, { maxBuffer: 100 * 1024 * 1024, encoding: 'buffer' });
|
||||
+ const contents = cp.execSync(`docker run --rm ${dockerPlatform} ${imageName}:${nodeVersion}-alpine /bin/sh -c 'cat \`which node\`'`, { maxBuffer: 100 * 1024 * 1024, encoding: 'buffer' });
|
||||
return es.readArray([new File({ path: 'node', contents, stat: { mode: parseInt('755', 8) } })]);
|
||||
+ const contents = cp.execSync(`docker run --rm ${dockerPlatform} ${imageName}:${nodeVersion}-alpine /bin/sh -c 'cat \`which node\`'`, { maxBuffer: 200 * 1024 * 1024, encoding: 'buffer' });
|
||||
// eslint-disable-next-line local/code-no-dangerous-type-assertions
|
||||
|
||||
@@ -1,35 +1,23 @@
|
||||
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
|
||||
index 2686509..4fedec2 100644
|
||||
--- a/build/gulpfile.vscode.js
|
||||
+++ b/build/gulpfile.vscode.js
|
||||
@@ -289,7 +289,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
||||
} else if (platform === 'darwin') {
|
||||
const shortcut = gulp.src('resources/darwin/bin/code.sh')
|
||||
.pipe(replace('@@APPNAME@@', product.applicationName))
|
||||
diff --git a/build/gulpfile.vscode.ts b/build/gulpfile.vscode.ts
|
||||
index a103f11..cc95785 100644
|
||||
--- a/build/gulpfile.vscode.ts
|
||||
+++ b/build/gulpfile.vscode.ts
|
||||
@@ -466,3 +466,3 @@ function packageTask(platform: string, arch: string, sourceFolderName: string, d
|
||||
.pipe(replace('@@NAME@@', product.nameShort))
|
||||
- .pipe(rename('bin/code'));
|
||||
+ .pipe(rename('bin/' + product.applicationName));
|
||||
|
||||
all = es.merge(all, shortcut);
|
||||
}
|
||||
const policyDest = gulp.src('.build/policies/darwin/**', { base: '.build/policies/darwin' })
|
||||
diff --git a/src/vs/platform/native/electron-main/nativeHostMainService.ts b/src/vs/platform/native/electron-main/nativeHostMainService.ts
|
||||
index f7bd477..a489ae4 100644
|
||||
index 93d0008..a04d296 100644
|
||||
--- a/src/vs/platform/native/electron-main/nativeHostMainService.ts
|
||||
+++ b/src/vs/platform/native/electron-main/nativeHostMainService.ts
|
||||
@@ -351,7 +351,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
}
|
||||
|
||||
@@ -539,3 +539,3 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
private async getShellCommandLink(): Promise<{ readonly source: string; readonly target: string }> {
|
||||
- const target = resolve(this.environmentMainService.appRoot, 'bin', 'code');
|
||||
+ const target = resolve(this.environmentMainService.appRoot, 'bin', this.productService.applicationName);
|
||||
const source = `/usr/local/bin/${this.productService.applicationName}`;
|
||||
|
||||
// Ensure source exists
|
||||
@@ -545,7 +545,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
|
||||
// macOS
|
||||
@@ -808,3 +808,3 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
|
||||
if (this.environmentMainService.isBuilt) {
|
||||
- return join(this.environmentMainService.appRoot, 'bin', 'code');
|
||||
+ return join(this.environmentMainService.appRoot, 'bin', `${this.productService.applicationName}`);
|
||||
}
|
||||
|
||||
return join(this.environmentMainService.appRoot, 'scripts', 'code-cli.sh');
|
||||
|
||||
1309
patches/brand.patch
1309
patches/brand.patch
File diff suppressed because it is too large
Load Diff
@@ -1,160 +0,0 @@
|
||||
diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
|
||||
index e314794..fce8d15 100644
|
||||
--- a/build/gulpfile.reh.js
|
||||
+++ b/build/gulpfile.reh.js
|
||||
@@ -343,2 +343,3 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
|
||||
const name = product.nameShort;
|
||||
+ const release = packageJson.release;
|
||||
|
||||
@@ -346,3 +347,3 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
|
||||
const packageJsonStream = gulp.src(['remote/package.json'], { base: 'remote' })
|
||||
- .pipe(json({ name, version, dependencies: undefined, optionalDependencies: undefined, ...(!isAMD() ? { type: 'module' } : {}) })) // TODO@esm this should be configured in the top level package.json
|
||||
+ .pipe(json({ name, version, release, dependencies: undefined, optionalDependencies: undefined, ...(!isAMD() ? { type: 'module' } : {}) })) // TODO@esm this should be configured in the top level package.json
|
||||
.pipe(es.through(function (file) {
|
||||
@@ -354,3 +355,3 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
|
||||
const productJsonStream = gulp.src(['product.json'], { base: '.' })
|
||||
- .pipe(json({ commit, date: readISODate('out-build'), version }))
|
||||
+ .pipe(json({ commit, date: readISODate('out-build'), version, release }))
|
||||
.pipe(es.through(function (file) {
|
||||
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
|
||||
index 9dfb6a3..a4277ff 100644
|
||||
--- a/build/gulpfile.vscode.js
|
||||
+++ b/build/gulpfile.vscode.js
|
||||
@@ -320,3 +320,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
||||
|
||||
- let version = packageJson.version;
|
||||
+ let version = packageJson.version
|
||||
const quality = product.quality;
|
||||
@@ -328,3 +328,4 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
||||
const name = product.nameShort;
|
||||
- const packageJsonUpdates = { name, version, ...(!isAMD() ? { type: 'module', main: 'out/main.js' } : {}) }; // TODO@esm this should be configured in the top level package.json
|
||||
+ const release = packageJson.release;
|
||||
+ const packageJsonUpdates = { name, version, release, ...(!isAMD() ? { type: 'module', main: 'out/main.js' } : {}) }; // TODO@esm this should be configured in the top level package.json
|
||||
|
||||
@@ -345,3 +346,3 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
|
||||
const productJsonStream = gulp.src(['product.json'], { base: '.' })
|
||||
- .pipe(json({ commit, date: readISODate('out-build'), checksums, version }))
|
||||
+ .pipe(json({ commit, date: readISODate('out-build'), checksums, version, release }))
|
||||
.pipe(es.through(function (file) {
|
||||
diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js
|
||||
index 5fa5a5d..b08e376 100644
|
||||
--- a/build/gulpfile.vscode.linux.js
|
||||
+++ b/build/gulpfile.vscode.linux.js
|
||||
@@ -27,4 +27,2 @@ const commit = getVersion(root);
|
||||
|
||||
-const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
|
||||
-
|
||||
/**
|
||||
@@ -89,3 +87,3 @@ function prepareDebPackage(arch) {
|
||||
.pipe(replace('@@NAME@@', product.applicationName))
|
||||
- .pipe(replace('@@VERSION@@', packageJson.version + '-' + linuxPackageRevision))
|
||||
+ .pipe(replace('@@VERSION@@', `${packageJson.version}.${packageJson.release}`))
|
||||
.pipe(replace('@@ARCHITECTURE@@', debArch))
|
||||
@@ -204,4 +202,3 @@ function prepareRpmPackage(arch) {
|
||||
.pipe(replace('@@ICON@@', product.linuxIconName))
|
||||
- .pipe(replace('@@VERSION@@', packageJson.version))
|
||||
- .pipe(replace('@@RELEASE@@', linuxPackageRevision))
|
||||
+ .pipe(replace('@@VERSION@@', `${packageJson.version}.${packageJson.release}`))
|
||||
.pipe(replace('@@ARCHITECTURE@@', rpmArch))
|
||||
@@ -281,3 +278,3 @@ function prepareSnapPackage(arch) {
|
||||
.pipe(replace('@@NAME@@', product.applicationName))
|
||||
- .pipe(replace('@@VERSION@@', commit.substr(0, 8)))
|
||||
+ .pipe(replace('@@VERSION@@', `${packageJson.version}.${packageJson.release}`))
|
||||
// Possible run-on values https://snapcraft.io/docs/architectures
|
||||
diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js
|
||||
index 98175f5..afacbe3 100644
|
||||
--- a/build/gulpfile.vscode.win32.js
|
||||
+++ b/build/gulpfile.vscode.win32.js
|
||||
@@ -89,4 +89,4 @@ function buildWin32Setup(arch, target) {
|
||||
DirName: product.win32DirName,
|
||||
- Version: pkg.version,
|
||||
- RawVersion: pkg.version.replace(/-\w+$/, ''),
|
||||
+ Version: `${pkg.version}.${pkg.release}`,
|
||||
+ RawVersion: `${pkg.version.replace(/-\w+$/, '')}.${pkg.release}`,
|
||||
NameVersion: product.win32NameVersion + (target === 'user' ? ' (User)' : ''),
|
||||
diff --git a/src/vs/base/common/product.ts b/src/vs/base/common/product.ts
|
||||
index c397b1a..ccf7911 100644
|
||||
--- a/src/vs/base/common/product.ts
|
||||
+++ b/src/vs/base/common/product.ts
|
||||
@@ -58,2 +58,3 @@ export interface IProductConfiguration {
|
||||
readonly version: string;
|
||||
+ readonly release: string;
|
||||
readonly date?: string;
|
||||
diff --git a/src/vs/platform/diagnostics/node/diagnosticsService.ts b/src/vs/platform/diagnostics/node/diagnosticsService.ts
|
||||
index 5f6efd5..da3c54d 100644
|
||||
--- a/src/vs/platform/diagnostics/node/diagnosticsService.ts
|
||||
+++ b/src/vs/platform/diagnostics/node/diagnosticsService.ts
|
||||
@@ -232,3 +232,3 @@ export class DiagnosticsService implements IDiagnosticsService {
|
||||
const output: string[] = [];
|
||||
- output.push(`Version: ${this.productService.nameShort} ${this.productService.version} (${this.productService.commit || 'Commit unknown'}, ${this.productService.date || 'Date unknown'})`);
|
||||
+ output.push(`Version: ${this.productService.nameShort} ${this.productService.version} ${this.productService.release || 'Release unknown'} (${this.productService.commit || 'Commit unknown'}, ${this.productService.date || 'Date unknown'})`);
|
||||
output.push(`OS Version: ${osLib.type()} ${osLib.arch()} ${osLib.release()}`);
|
||||
diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts
|
||||
index a98043f..b54a78f 100644
|
||||
--- a/src/vs/platform/product/common/product.ts
|
||||
+++ b/src/vs/platform/product/common/product.ts
|
||||
@@ -43,6 +43,7 @@ else if (globalThis._VSCODE_PRODUCT_JSON && globalThis._VSCODE_PACKAGE_JSON) {
|
||||
if (!product.version) {
|
||||
- const pkg = globalThis._VSCODE_PACKAGE_JSON as { version: string };
|
||||
+ const pkg = globalThis._VSCODE_PACKAGE_JSON as { version: string, release: string };
|
||||
|
||||
Object.assign(product, {
|
||||
- version: pkg.version
|
||||
+ version: pkg.version,
|
||||
+ release: pkg.release
|
||||
});
|
||||
diff --git a/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts b/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
|
||||
index 21f62b6..98edd0e 100644
|
||||
--- a/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
|
||||
+++ b/src/vs/workbench/browser/parts/dialogs/dialogHandler.ts
|
||||
@@ -22,2 +22,3 @@ import { defaultButtonStyles, defaultCheckboxStyles, defaultDialogStyles, defaul
|
||||
import { ResultKind } from '../../../../platform/keybinding/common/keybindingResolver.js';
|
||||
+import { getReleaseString } from '../../../../workbench/common/release';
|
||||
|
||||
@@ -79,2 +80,4 @@ export class BrowserDialogHandler extends AbstractDialogHandler {
|
||||
const detailString = (useAgo: boolean): string => {
|
||||
+ const releaseString = getReleaseString();
|
||||
+
|
||||
return localize('aboutDetail',
|
||||
@@ -85,3 +88,3 @@ export class BrowserDialogHandler extends AbstractDialogHandler {
|
||||
navigator.userAgent
|
||||
- );
|
||||
+ ).replace('\n', `\n${releaseString} ${this.productService.release || 'Unknown'}\n`);
|
||||
};
|
||||
diff --git a/src/vs/workbench/common/release.ts b/src/vs/workbench/common/release.ts
|
||||
new file mode 100644
|
||||
index 0000000..2a8ea57
|
||||
--- /dev/null
|
||||
+++ b/src/vs/workbench/common/release.ts
|
||||
@@ -0,0 +1,14 @@
|
||||
+import { language } from 'vs/base/common/platform';
|
||||
+
|
||||
+const DEFAULT_LABEL = 'Release:';
|
||||
+const LABELS: { [key: string]: string } = {
|
||||
+ 'en': DEFAULT_LABEL,
|
||||
+ 'fr': 'Révision :',
|
||||
+ 'ru': 'Релиз:',
|
||||
+ 'zh-hans': '发布版本:',
|
||||
+ 'zh-hant': '發布版本:',
|
||||
+};
|
||||
+
|
||||
+export function getReleaseString(): string {
|
||||
+ return LABELS[language] ?? DEFAULT_LABEL;
|
||||
+}
|
||||
diff --git a/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts b/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts
|
||||
index 6c61a59..e76a188 100644
|
||||
--- a/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts
|
||||
+++ b/src/vs/workbench/electron-sandbox/parts/dialogs/dialogHandler.ts
|
||||
@@ -15,2 +15,3 @@ import { process } from '../../../../base/parts/sandbox/electron-sandbox/globals
|
||||
import { getActiveWindow } from '../../../../base/browser/dom.js';
|
||||
+import { getReleaseString } from '../../../../workbench/common/release';
|
||||
|
||||
@@ -80,2 +81,3 @@ export class NativeDialogHandler extends AbstractDialogHandler {
|
||||
const osProps = await this.nativeHostService.getOSProperties();
|
||||
+ const releaseString = getReleaseString();
|
||||
|
||||
@@ -93,3 +95,3 @@ export class NativeDialogHandler extends AbstractDialogHandler {
|
||||
`${osProps.type} ${osProps.arch} ${osProps.release}${isLinuxSnap ? ' snap' : ''}`
|
||||
- );
|
||||
+ ).replace('\n', `\n${releaseString} ${this.productService.release || 'Unknown'}\n`);
|
||||
};
|
||||
313
patches/cli.patch
Normal file
313
patches/cli.patch
Normal file
@@ -0,0 +1,313 @@
|
||||
diff --git a/cli/src/commands/serve_web.rs b/cli/src/commands/serve_web.rs
|
||||
index d3f7db8..988024b 100644
|
||||
--- a/cli/src/commands/serve_web.rs
|
||||
+++ b/cli/src/commands/serve_web.rs
|
||||
@@ -756,3 +756,3 @@ impl ConnectionManager {
|
||||
let dir_fut = cache.create(&args.release.commit, |target_dir| async move {
|
||||
- info!(log_for_fut, "Downloading server {}", release_for_fut.commit);
|
||||
+ info!(log_for_fut, "Downloading server {}/{}", release_for_fut.commit, release_for_fut.name);
|
||||
let tmpdir = tempfile::tempdir().unwrap();
|
||||
@@ -784,3 +784,3 @@ impl ConnectionManager {
|
||||
.join("bin")
|
||||
- .join(args.release.quality.server_entrypoint());
|
||||
+ .join(args.release.quality.server_entrypoint().unwrap());
|
||||
|
||||
diff --git a/cli/src/constants.rs b/cli/src/constants.rs
|
||||
index 1e277a8..97f17d3 100644
|
||||
--- a/cli/src/constants.rs
|
||||
+++ b/cli/src/constants.rs
|
||||
@@ -35,3 +35,6 @@ pub const DOCUMENTATION_URL: Option<&'static str> = option_env!("VSCODE_CLI_DOCU
|
||||
pub const VSCODE_CLI_COMMIT: Option<&'static str> = option_env!("VSCODE_CLI_COMMIT");
|
||||
-pub const VSCODE_CLI_UPDATE_ENDPOINT: Option<&'static str> = option_env!("VSCODE_CLI_UPDATE_URL");
|
||||
+pub const VSCODE_CLI_UPDATE_ENDPOINT: Option<&'static str> = option_env!("VSCODE_CLI_UPDATE_ENDPOINT");
|
||||
+pub const VSCODE_CLI_DOWNLOAD_ENDPOINT: Option<&'static str> = option_env!("VSCODE_CLI_DOWNLOAD_ENDPOINT");
|
||||
+pub const VSCODE_CLI_APP_NAME: Option<&'static str> = option_env!("VSCODE_CLI_APP_NAME");
|
||||
+pub const VSCODE_CLI_BINARY_NAME: Option<&'static str> = option_env!("VSCODE_CLI_BINARY_NAME");
|
||||
|
||||
diff --git a/cli/src/options.rs b/cli/src/options.rs
|
||||
index 7d152c0..c0f2fb2 100644
|
||||
--- a/cli/src/options.rs
|
||||
+++ b/cli/src/options.rs
|
||||
@@ -9,3 +9,3 @@ use serde::{Deserialize, Serialize};
|
||||
|
||||
-use crate::constants::SERVER_NAME_MAP;
|
||||
+use crate::{constants::VSCODE_CLI_BINARY_NAME, util::errors::CodeError};
|
||||
|
||||
@@ -21,2 +21,6 @@ pub enum Quality {
|
||||
|
||||
+fn get_binary_name() -> Result<&'static str, CodeError> {
|
||||
+ VSCODE_CLI_BINARY_NAME.ok_or_else(|| CodeError::UpdatesNotConfigured("no binary name"))
|
||||
+}
|
||||
+
|
||||
impl Quality {
|
||||
@@ -41,9 +45,4 @@ impl Quality {
|
||||
/// Server application name
|
||||
- pub fn server_entrypoint(&self) -> String {
|
||||
- let mut server_name = SERVER_NAME_MAP
|
||||
- .as_ref()
|
||||
- .and_then(|m| m.get(self))
|
||||
- .map(|s| s.server_application_name.as_str())
|
||||
- .unwrap_or("code-server-oss")
|
||||
- .to_string();
|
||||
+ pub fn server_entrypoint(&self) -> Result<String, CodeError> {
|
||||
+ let mut server_name = get_binary_name()?.to_string();
|
||||
|
||||
@@ -53,3 +52,3 @@ impl Quality {
|
||||
|
||||
- server_name
|
||||
+ Ok(server_name)
|
||||
}
|
||||
diff --git a/cli/src/tunnels/code_server.rs b/cli/src/tunnels/code_server.rs
|
||||
index bbabadc..b454d0e 100644
|
||||
--- a/cli/src/tunnels/code_server.rs
|
||||
+++ b/cli/src/tunnels/code_server.rs
|
||||
@@ -462,3 +462,3 @@ impl<'a> ServerBuilder<'a> {
|
||||
.join("bin")
|
||||
- .join(self.server_params.release.quality.server_entrypoint()),
|
||||
+ .join(self.server_params.release.quality.server_entrypoint().unwrap()),
|
||||
&["--version"],
|
||||
diff --git a/cli/src/tunnels/paths.rs b/cli/src/tunnels/paths.rs
|
||||
index 3d7d718..98529bc 100644
|
||||
--- a/cli/src/tunnels/paths.rs
|
||||
+++ b/cli/src/tunnels/paths.rs
|
||||
@@ -100,3 +100,3 @@ impl InstalledServer {
|
||||
.join("bin")
|
||||
- .join(self.quality.server_entrypoint())
|
||||
+ .join(self.quality.server_entrypoint().unwrap())
|
||||
},
|
||||
diff --git a/cli/src/update_service.rs b/cli/src/update_service.rs
|
||||
index 55f1dad..3b7ef5c 100644
|
||||
--- a/cli/src/update_service.rs
|
||||
+++ b/cli/src/update_service.rs
|
||||
@@ -10,3 +10,3 @@ use serde::{Deserialize, Serialize};
|
||||
use crate::{
|
||||
- constants::VSCODE_CLI_UPDATE_ENDPOINT,
|
||||
+ constants::{VSCODE_CLI_APP_NAME, VSCODE_CLI_DOWNLOAD_ENDPOINT, VSCODE_CLI_UPDATE_ENDPOINT},
|
||||
debug, log, options, spanf,
|
||||
@@ -18,3 +18,3 @@ use crate::{
|
||||
zipper,
|
||||
- },
|
||||
+ }
|
||||
};
|
||||
@@ -58,2 +58,10 @@ fn quality_download_segment(quality: options::Quality) -> &'static str {
|
||||
|
||||
+fn get_app_name() -> Result<&'static str, CodeError> {
|
||||
+ VSCODE_CLI_APP_NAME.ok_or_else(|| CodeError::UpdatesNotConfigured("no app name"))
|
||||
+}
|
||||
+
|
||||
+fn get_download_endpoint() -> Result<&'static str, CodeError> {
|
||||
+ VSCODE_CLI_DOWNLOAD_ENDPOINT.ok_or_else(|| CodeError::UpdatesNotConfigured("no download url"))
|
||||
+}
|
||||
+
|
||||
fn get_update_endpoint() -> Result<String, CodeError> {
|
||||
@@ -66,3 +74,3 @@ fn get_update_endpoint() -> Result<String, CodeError> {
|
||||
.map(|s| s.to_string())
|
||||
- .ok_or_else(|| CodeError::UpdatesNotConfigured("no service url"))
|
||||
+ .ok_or_else(|| CodeError::UpdatesNotConfigured("no update url"))
|
||||
}
|
||||
@@ -74,3 +82,4 @@ impl UpdateService {
|
||||
|
||||
- pub async fn get_release_by_semver_version(
|
||||
+ /// Gets the latest commit for the target of the given quality.
|
||||
+ pub async fn get_latest_commit(
|
||||
&self,
|
||||
@@ -79,14 +88,10 @@ impl UpdateService {
|
||||
quality: options::Quality,
|
||||
- version: &str,
|
||||
) -> Result<Release, AnyError> {
|
||||
let update_endpoint = get_update_endpoint()?;
|
||||
- let download_segment = target
|
||||
- .download_segment(platform)
|
||||
- .ok_or_else(|| CodeError::UnsupportedPlatform(platform.to_string()))?;
|
||||
let download_url = format!(
|
||||
- "{}/api/versions/{}/{}/{}",
|
||||
+ "{}/{}/{}/{}/latest.json",
|
||||
&update_endpoint,
|
||||
- version,
|
||||
- download_segment,
|
||||
quality_download_segment(quality),
|
||||
+ platform.os(),
|
||||
+ platform.arch(),
|
||||
);
|
||||
@@ -104,3 +109,3 @@ impl UpdateService {
|
||||
let res = response.json::<UpdateServerVersion>().await?;
|
||||
- debug!(self.log, "Resolved version {} to {}", version, res.version);
|
||||
+ debug!(self.log, "Resolved quality {} to {}", quality, res.version);
|
||||
|
||||
@@ -115,40 +120,17 @@ impl UpdateService {
|
||||
|
||||
- /// Gets the latest commit for the target of the given quality.
|
||||
- pub async fn get_latest_commit(
|
||||
- &self,
|
||||
- platform: Platform,
|
||||
- target: TargetKind,
|
||||
- quality: options::Quality,
|
||||
- ) -> Result<Release, AnyError> {
|
||||
- let update_endpoint = get_update_endpoint()?;
|
||||
- let download_segment = target
|
||||
- .download_segment(platform)
|
||||
- .ok_or_else(|| CodeError::UnsupportedPlatform(platform.to_string()))?;
|
||||
+ pub fn get_download_url(&self, release: &Release) -> Result<String, AnyError> {
|
||||
+ let app_name = get_app_name()?;
|
||||
+ let download_endpoint = get_download_endpoint()?;
|
||||
+
|
||||
let download_url = format!(
|
||||
- "{}/api/latest/{}/{}",
|
||||
- &update_endpoint,
|
||||
- download_segment,
|
||||
- quality_download_segment(quality),
|
||||
+ "{}/download/{}/{}-reh-web-{}-{}-{}.tar.gz",
|
||||
+ download_endpoint,
|
||||
+ release.name,
|
||||
+ app_name,
|
||||
+ release.platform.os(),
|
||||
+ release.platform.arch(),
|
||||
+ release.name,
|
||||
);
|
||||
|
||||
- let mut response = spanf!(
|
||||
- self.log,
|
||||
- self.log.span("server.version.resolve"),
|
||||
- self.client.make_request("GET", download_url)
|
||||
- )?;
|
||||
-
|
||||
- if !response.status_code.is_success() {
|
||||
- return Err(response.into_err().await.into());
|
||||
- }
|
||||
-
|
||||
- let res = response.json::<UpdateServerVersion>().await?;
|
||||
- debug!(self.log, "Resolved quality {} to {}", quality, res.version);
|
||||
-
|
||||
- Ok(Release {
|
||||
- target,
|
||||
- platform,
|
||||
- quality,
|
||||
- name: res.name,
|
||||
- commit: res.version,
|
||||
- })
|
||||
+ Ok(download_url)
|
||||
}
|
||||
@@ -157,15 +139,3 @@ impl UpdateService {
|
||||
pub async fn get_download_stream(&self, release: &Release) -> Result<SimpleResponse, AnyError> {
|
||||
- let update_endpoint = get_update_endpoint()?;
|
||||
- let download_segment = release
|
||||
- .target
|
||||
- .download_segment(release.platform)
|
||||
- .ok_or_else(|| CodeError::UnsupportedPlatform(release.platform.to_string()))?;
|
||||
-
|
||||
- let download_url = format!(
|
||||
- "{}/commit:{}/{}/{}",
|
||||
- &update_endpoint,
|
||||
- release.commit,
|
||||
- download_segment,
|
||||
- quality_download_segment(release.quality),
|
||||
- );
|
||||
+ let download_url = self.get_download_url(release)?;
|
||||
|
||||
@@ -203,13 +173,2 @@ pub enum TargetKind {
|
||||
|
||||
-impl TargetKind {
|
||||
- fn download_segment(&self, platform: Platform) -> Option<String> {
|
||||
- match *self {
|
||||
- TargetKind::Server => Some(platform.headless()),
|
||||
- TargetKind::Archive => platform.archive(),
|
||||
- TargetKind::Web => Some(platform.web()),
|
||||
- TargetKind::Cli => Some(platform.cli()),
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq, Serialize, Deserialize)]
|
||||
@@ -232,30 +191,17 @@ pub enum Platform {
|
||||
impl Platform {
|
||||
- pub fn archive(&self) -> Option<String> {
|
||||
- match self {
|
||||
- Platform::LinuxX64 => Some("linux-x64".to_owned()),
|
||||
- Platform::LinuxARM64 => Some("linux-arm64".to_owned()),
|
||||
- Platform::LinuxARM32 => Some("linux-armhf".to_owned()),
|
||||
- Platform::DarwinX64 => Some("darwin".to_owned()),
|
||||
- Platform::DarwinARM64 => Some("darwin-arm64".to_owned()),
|
||||
- Platform::WindowsX64 => Some("win32-x64-archive".to_owned()),
|
||||
- Platform::WindowsX86 => Some("win32-archive".to_owned()),
|
||||
- Platform::WindowsARM64 => Some("win32-arm64-archive".to_owned()),
|
||||
- _ => None,
|
||||
- }
|
||||
- }
|
||||
- pub fn headless(&self) -> String {
|
||||
+ pub fn arch(&self) -> String {
|
||||
match self {
|
||||
- Platform::LinuxAlpineARM64 => "server-alpine-arm64",
|
||||
- Platform::LinuxAlpineX64 => "server-linux-alpine",
|
||||
- Platform::LinuxX64 => "server-linux-x64",
|
||||
- Platform::LinuxX64Legacy => "server-linux-legacy-x64",
|
||||
- Platform::LinuxARM64 => "server-linux-arm64",
|
||||
- Platform::LinuxARM64Legacy => "server-linux-legacy-arm64",
|
||||
- Platform::LinuxARM32 => "server-linux-armhf",
|
||||
- Platform::LinuxARM32Legacy => "server-linux-legacy-armhf",
|
||||
- Platform::DarwinX64 => "server-darwin",
|
||||
- Platform::DarwinARM64 => "server-darwin-arm64",
|
||||
- Platform::WindowsX64 => "server-win32-x64",
|
||||
- Platform::WindowsX86 => "server-win32",
|
||||
- Platform::WindowsARM64 => "server-win32-arm64",
|
||||
+ Platform::LinuxAlpineARM64 => "arm64",
|
||||
+ Platform::LinuxAlpineX64 => "x64",
|
||||
+ Platform::LinuxX64 => "x64",
|
||||
+ Platform::LinuxX64Legacy => "x64",
|
||||
+ Platform::LinuxARM64 => "arm64",
|
||||
+ Platform::LinuxARM64Legacy => "arm64",
|
||||
+ Platform::LinuxARM32 => "armhf",
|
||||
+ Platform::LinuxARM32Legacy => "armhf",
|
||||
+ Platform::DarwinX64 => "x64",
|
||||
+ Platform::DarwinARM64 => "arm64",
|
||||
+ Platform::WindowsX64 => "x64",
|
||||
+ Platform::WindowsX86 => "ia42",
|
||||
+ Platform::WindowsARM64 => "arm64",
|
||||
}
|
||||
@@ -264,17 +210,17 @@ impl Platform {
|
||||
|
||||
- pub fn cli(&self) -> String {
|
||||
+ pub fn os(&self) -> String {
|
||||
match self {
|
||||
- Platform::LinuxAlpineARM64 => "cli-alpine-arm64",
|
||||
- Platform::LinuxAlpineX64 => "cli-alpine-x64",
|
||||
- Platform::LinuxX64 => "cli-linux-x64",
|
||||
- Platform::LinuxX64Legacy => "cli-linux-x64",
|
||||
- Platform::LinuxARM64 => "cli-linux-arm64",
|
||||
- Platform::LinuxARM64Legacy => "cli-linux-arm64",
|
||||
- Platform::LinuxARM32 => "cli-linux-armhf",
|
||||
- Platform::LinuxARM32Legacy => "cli-linux-armhf",
|
||||
- Platform::DarwinX64 => "cli-darwin-x64",
|
||||
- Platform::DarwinARM64 => "cli-darwin-arm64",
|
||||
- Platform::WindowsARM64 => "cli-win32-arm64",
|
||||
- Platform::WindowsX64 => "cli-win32-x64",
|
||||
- Platform::WindowsX86 => "cli-win32",
|
||||
+ Platform::LinuxAlpineARM64 => "alpine",
|
||||
+ Platform::LinuxAlpineX64 => "alpine",
|
||||
+ Platform::LinuxX64 => "linux",
|
||||
+ Platform::LinuxX64Legacy => "linux",
|
||||
+ Platform::LinuxARM64 => "linux",
|
||||
+ Platform::LinuxARM64Legacy => "linux",
|
||||
+ Platform::LinuxARM32 => "linux",
|
||||
+ Platform::LinuxARM32Legacy => "linux",
|
||||
+ Platform::DarwinX64 => "darwin",
|
||||
+ Platform::DarwinARM64 => "darwin",
|
||||
+ Platform::WindowsX64 => "win32",
|
||||
+ Platform::WindowsX86 => "win32",
|
||||
+ Platform::WindowsARM64 => "win32",
|
||||
}
|
||||
@@ -283,6 +229,2 @@ impl Platform {
|
||||
|
||||
- pub fn web(&self) -> String {
|
||||
- format!("{}-web", self.headless())
|
||||
- }
|
||||
-
|
||||
pub fn env_default() -> Option<Platform> {
|
||||
diff --git a/extensions/tunnel-forwarding/src/extension.ts b/extensions/tunnel-forwarding/src/extension.ts
|
||||
index 2f71999..e689f62 100644
|
||||
--- a/extensions/tunnel-forwarding/src/extension.ts
|
||||
+++ b/extensions/tunnel-forwarding/src/extension.ts
|
||||
@@ -37,3 +37,3 @@ if (process.env.VSCODE_FORWARDING_IS_DEV) {
|
||||
|
||||
- const cliName = vscode.env.appQuality === 'stable' ? 'code-tunnel' : 'code-tunnel-insiders';
|
||||
+ const cliName = '!!TUNNEL_APP_NAME!!';
|
||||
const extension = process.platform === 'win32' ? '.exe' : '';
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/src/main.js b/src/main.js
|
||||
index 19dde20..d9611f2 100644
|
||||
--- a/src/main.js
|
||||
+++ b/src/main.js
|
||||
@@ -409,6 +409,8 @@ function configureCrashReporter() {
|
||||
argv.splice(endOfArgsMarkerIndex, 0, '--crash-reporter-id', crashReporterId);
|
||||
}
|
||||
}
|
||||
+ } else {
|
||||
+ return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts b/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts
|
||||
index 18b5815..51a5d50 100644
|
||||
index 1bb5eb3..70f1b37 100644
|
||||
--- a/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts
|
||||
+++ b/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts
|
||||
@@ -7,3 +7,3 @@ import { Disposable, DisposableStore } from '../../../../base/common/lifecycle.j
|
||||
@@ -16,9 +16,12 @@ index 18b5815..51a5d50 100644
|
||||
|
||||
- this.registerSignInAction();
|
||||
this.registerResetAuthenticationAction();
|
||||
@@ -456,39 +455,2 @@ export class EditSessionsWorkbenchService extends Disposable implements IEditSes
|
||||
@@ -456,42 +455,2 @@ export class EditSessionsWorkbenchService extends Disposable implements IEditSes
|
||||
|
||||
- private registerSignInAction() {
|
||||
- if (!this.serverConfiguration?.url) {
|
||||
- return;
|
||||
- }
|
||||
- const that = this;
|
||||
- const id = 'workbench.editSessions.actions.signIn';
|
||||
- const when = ContextKeyExpr.and(ContextKeyExpr.equals(EDIT_SESSIONS_PENDING_KEY, false), ContextKeyExpr.equals(EDIT_SESSIONS_SIGNED_IN_KEY, false));
|
||||
|
||||
133
patches/disable-copilot.patch
Normal file
133
patches/disable-copilot.patch
Normal file
@@ -0,0 +1,133 @@
|
||||
diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts
|
||||
index 1998414..cdc533b 100644
|
||||
--- a/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts
|
||||
+++ b/src/vs/workbench/contrib/chat/browser/actions/chatActions.ts
|
||||
@@ -206,3 +206,4 @@ abstract class OpenChatGlobalAction extends Action2 {
|
||||
ChatContextKeys.Setup.hidden.negate(),
|
||||
- ChatContextKeys.Setup.disabled.negate()
|
||||
+ ChatContextKeys.Setup.disabled.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate()
|
||||
)
|
||||
@@ -1142,3 +1143,3 @@ export function registerChatActions() {
|
||||
precondition: ContextKeyExpr.and(
|
||||
- ChatContextKeys.Setup.installed,
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
ChatContextKeys.Setup.disabled.negate(),
|
||||
@@ -1715,3 +1716,4 @@ MenuRegistry.appendMenuItem(MenuId.EditorContext, {
|
||||
ChatContextKeys.Setup.hidden.negate(),
|
||||
- ChatContextKeys.Setup.disabled.negate()
|
||||
+ ChatContextKeys.Setup.disabled.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate()
|
||||
)
|
||||
diff --git a/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.ts b/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.ts
|
||||
index b8c8e03..512e40f 100644
|
||||
--- a/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.ts
|
||||
+++ b/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.ts
|
||||
@@ -314,3 +314,4 @@ class AttachSelectionToChatAction extends Action2 {
|
||||
ResourceContextKey.Scheme.isEqualTo(Schemas.vscodeUserData)
|
||||
- )
|
||||
+ ),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
)
|
||||
diff --git a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts
|
||||
index be62dda..7b5f1ed 100644
|
||||
--- a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts
|
||||
+++ b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts
|
||||
@@ -1237,3 +1237,3 @@ configurationRegistry.registerConfiguration({
|
||||
description: nls.localize('chat.disableAIFeatures', "Disable and hide built-in AI features provided by GitHub Copilot, including chat and inline suggestions."),
|
||||
- default: false,
|
||||
+ default: true,
|
||||
scope: ConfigurationScope.WINDOW
|
||||
diff --git a/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.ts b/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.ts
|
||||
index ddb5df4..7831288 100644
|
||||
--- a/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.ts
|
||||
+++ b/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.ts
|
||||
@@ -70,10 +70,9 @@ const chatViewDescriptor: IViewDescriptor = {
|
||||
ctorDescriptor: new SyncDescriptor(ChatViewPane),
|
||||
- when: ContextKeyExpr.or(
|
||||
- ContextKeyExpr.or(
|
||||
- ChatContextKeys.Setup.hidden,
|
||||
- ChatContextKeys.Setup.disabled
|
||||
- )?.negate(),
|
||||
- ChatContextKeys.panelParticipantRegistered,
|
||||
- ChatContextKeys.extensionInvalid
|
||||
- )
|
||||
+ when: ContextKeyExpr.and(
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
+ ChatContextKeys.Setup.disabled.negate(),
|
||||
+ ChatContextKeys.Setup.hidden.negate(),
|
||||
+ ChatContextKeys.panelParticipantRegistered,
|
||||
+ ChatContextKeys.extensionInvalid.negate()
|
||||
+ )
|
||||
};
|
||||
diff --git a/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.ts b/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.ts
|
||||
index 4a71579..f8b3e83 100644
|
||||
--- a/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.ts
|
||||
+++ b/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.ts
|
||||
@@ -228,2 +228,3 @@ export class ChatSetupContribution extends Disposable implements IWorkbenchContr
|
||||
ChatContextKeys.Setup.untrusted,
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
ChatContextKeys.Setup.installed.negate(),
|
||||
@@ -346,2 +347,3 @@ export class ChatSetupContribution extends Disposable implements IWorkbenchContr
|
||||
ChatContextKeys.Setup.hidden.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
ChatContextKeys.Setup.installed.negate(),
|
||||
@@ -518,2 +520,3 @@ export class ChatSetupContribution extends Disposable implements IWorkbenchContr
|
||||
ChatContextKeys.Setup.disabled.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
ChatContextKeys.Setup.installed.negate(),
|
||||
diff --git a/src/vs/workbench/contrib/chat/common/actions/chatContextKeys.ts b/src/vs/workbench/contrib/chat/common/actions/chatContextKeys.ts
|
||||
index c8fc17b..fbd2afd 100644
|
||||
--- a/src/vs/workbench/contrib/chat/common/actions/chatContextKeys.ts
|
||||
+++ b/src/vs/workbench/contrib/chat/common/actions/chatContextKeys.ts
|
||||
@@ -163,3 +163,3 @@ export namespace ChatContextKeyExprs {
|
||||
export const chatSetupTriggerContext = ContextKeyExpr.or(
|
||||
- ChatContextKeys.Setup.installed.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
ChatContextKeys.Entitlement.canSignUp
|
||||
diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts
|
||||
index e9b4077..b33d6f2 100644
|
||||
--- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts
|
||||
+++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts
|
||||
@@ -133,3 +133,9 @@ MenuRegistry.appendMenuItem(MenuId.InlineChatEditorAffordance, {
|
||||
order: 1,
|
||||
- when: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasNonEmptySelection, CTX_INLINE_CHAT_FILE_BELONGS_TO_CHAT.negate(), ChatEntitlementContextKeys.Setup.hidden.negate()),
|
||||
+ when: ContextKeyExpr.and(
|
||||
+ EditorContextKeys.writable,
|
||||
+ EditorContextKeys.hasNonEmptySelection,
|
||||
+ CTX_INLINE_CHAT_FILE_BELONGS_TO_CHAT.negate(),
|
||||
+ ChatEntitlementContextKeys.Setup.hidden.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
+ ),
|
||||
command: {
|
||||
diff --git a/src/vs/workbench/contrib/mcp/browser/mcpServersView.ts b/src/vs/workbench/contrib/mcp/browser/mcpServersView.ts
|
||||
index 864cc4f..b877a8e 100644
|
||||
--- a/src/vs/workbench/contrib/mcp/browser/mcpServersView.ts
|
||||
+++ b/src/vs/workbench/contrib/mcp/browser/mcpServersView.ts
|
||||
@@ -554,3 +554,3 @@ export class McpServersViewsContribution extends Disposable implements IWorkbenc
|
||||
ctorDescriptor: new SyncDescriptor(DefaultBrowseMcpServersView, [{}]),
|
||||
- when: ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext.toNegated(), ChatContextKeys.Setup.hidden.negate(), McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available), ContextKeyExpr.or(ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`), ProductQualityContext.notEqualsTo('stable'), ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`))),
|
||||
+ when: ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext.toNegated(), ContextKeyExpr.has('config.chat.disableAIFeatures').negate(), ChatContextKeys.Setup.hidden.negate(), McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available), ContextKeyExpr.or(ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`), ProductQualityContext.notEqualsTo('stable'), ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`))),
|
||||
weight: 40,
|
||||
@@ -569,3 +569,3 @@ export class McpServersViewsContribution extends Disposable implements IWorkbenc
|
||||
ctorDescriptor: new SyncDescriptor(DefaultBrowseMcpServersView, [{ showWelcome: true }]),
|
||||
- when: ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext.toNegated(), ChatContextKeys.Setup.hidden.negate(), McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available), ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`).negate(), ProductQualityContext.isEqualTo('stable'), ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`).negate()),
|
||||
+ when: ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext.toNegated(), ContextKeyExpr.has('config.chat.disableAIFeatures').negate(), ChatContextKeys.Setup.hidden.negate(), McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available), ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`).negate(), ProductQualityContext.isEqualTo('stable'), ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`).negate()),
|
||||
weight: 40,
|
||||
diff --git a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts
|
||||
index 8f2ea73..429e28f 100644
|
||||
--- a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts
|
||||
+++ b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts
|
||||
@@ -705,3 +705,3 @@ registerAction2(class extends Action2 {
|
||||
ChatContextKeys.Setup.disabled.negate(),
|
||||
- ChatContextKeys.Setup.installed.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
ContextKeyExpr.in(ResourceContextKey.Resource.key, 'git.mergeChanges'),
|
||||
diff --git a/src/vs/workbench/contrib/scm/browser/scmInput.ts b/src/vs/workbench/contrib/scm/browser/scmInput.ts
|
||||
index a35d479..da5a449 100644
|
||||
--- a/src/vs/workbench/contrib/scm/browser/scmInput.ts
|
||||
+++ b/src/vs/workbench/contrib/scm/browser/scmInput.ts
|
||||
@@ -850,2 +850,3 @@ registerAction2(class extends Action2 {
|
||||
ChatContextKeys.Setup.disabled.negate(),
|
||||
+ ContextKeyExpr.has('config.chat.disableAIFeatures').negate(),
|
||||
ChatContextKeys.Setup.installed.negate(),
|
||||
128
patches/disable-missing-vsda.patch
Normal file
128
patches/disable-missing-vsda.patch
Normal file
@@ -0,0 +1,128 @@
|
||||
diff --git a/src/vs/platform/sign/browser/signService.ts b/src/vs/platform/sign/browser/signService.ts
|
||||
index c288b2e..8303040 100644
|
||||
--- a/src/vs/platform/sign/browser/signService.ts
|
||||
+++ b/src/vs/platform/sign/browser/signService.ts
|
||||
@@ -5,6 +5,2 @@
|
||||
|
||||
-import { importAMDNodeModule, resolveAmdNodeModulePath } from '../../../amdX.js';
|
||||
-import { WindowIntervalTimer } from '../../../base/browser/dom.js';
|
||||
-import { mainWindow } from '../../../base/browser/window.js';
|
||||
-import { memoize } from '../../../base/common/decorators.js';
|
||||
import { IProductService } from '../../product/common/productService.js';
|
||||
@@ -13,30 +9,4 @@ import { ISignService } from '../common/sign.js';
|
||||
|
||||
-declare namespace vsdaWeb {
|
||||
- export function sign(salted_message: string): string;
|
||||
-
|
||||
- // eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
- export class validator {
|
||||
- free(): void;
|
||||
- constructor();
|
||||
- createNewMessage(original: string): string;
|
||||
- validate(signed_message: string): 'ok' | 'error';
|
||||
- }
|
||||
-
|
||||
- export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
||||
- export function init(module_or_path?: InitInput | Promise<InitInput>): Promise<unknown>;
|
||||
-}
|
||||
-
|
||||
-// Initialized if/when vsda is loaded
|
||||
-declare const vsda_web: {
|
||||
- default: typeof vsdaWeb.init;
|
||||
- sign: typeof vsdaWeb.sign;
|
||||
- validator: typeof vsdaWeb.validator;
|
||||
-};
|
||||
-
|
||||
-const KEY_SIZE = 32;
|
||||
-const IV_SIZE = 16;
|
||||
-const STEP_SIZE = KEY_SIZE + IV_SIZE;
|
||||
-
|
||||
export class SignService extends AbstractSignService implements ISignService {
|
||||
- constructor(@IProductService private readonly productService: IProductService) {
|
||||
+ constructor(@IProductService _productService: IProductService) {
|
||||
super();
|
||||
@@ -44,53 +14,7 @@ export class SignService extends AbstractSignService implements ISignService {
|
||||
protected override getValidator(): Promise<IVsdaValidator> {
|
||||
- return this.vsda().then(vsda => {
|
||||
- const v = new vsda.validator();
|
||||
- return {
|
||||
- createNewMessage: arg => v.createNewMessage(arg),
|
||||
- validate: arg => v.validate(arg),
|
||||
- dispose: () => v.free(),
|
||||
- };
|
||||
- });
|
||||
- }
|
||||
-
|
||||
- protected override signValue(arg: string): Promise<string> {
|
||||
- return this.vsda().then(vsda => vsda.sign(arg));
|
||||
- }
|
||||
-
|
||||
- @memoize
|
||||
- private async vsda(): Promise<typeof vsda_web> {
|
||||
- const checkInterval = new WindowIntervalTimer();
|
||||
- let [wasm] = await Promise.all([
|
||||
- this.getWasmBytes(),
|
||||
- new Promise<void>((resolve, reject) => {
|
||||
- importAMDNodeModule('vsda', 'rust/web/vsda.js').then(() => resolve(), reject);
|
||||
-
|
||||
- // todo@connor4312: there seems to be a bug(?) in vscode-loader with
|
||||
- // require() not resolving in web once the script loads, so check manually
|
||||
- checkInterval.cancelAndSet(() => {
|
||||
- if (typeof vsda_web !== 'undefined') {
|
||||
- resolve();
|
||||
- }
|
||||
- }, 50, mainWindow);
|
||||
- }).finally(() => checkInterval.dispose()),
|
||||
- ]);
|
||||
-
|
||||
- const keyBytes = new TextEncoder().encode(this.productService.serverLicense?.join('\n') || '');
|
||||
- for (let i = 0; i + STEP_SIZE < keyBytes.length; i += STEP_SIZE) {
|
||||
- const key = await crypto.subtle.importKey('raw', keyBytes.slice(i + IV_SIZE, i + IV_SIZE + KEY_SIZE), { name: 'AES-CBC' }, false, ['decrypt']);
|
||||
- wasm = await crypto.subtle.decrypt({ name: 'AES-CBC', iv: keyBytes.slice(i, i + IV_SIZE) }, key, wasm);
|
||||
- }
|
||||
-
|
||||
- await vsda_web.default(wasm);
|
||||
-
|
||||
- return vsda_web;
|
||||
+ throw new Error('error loading vsda');
|
||||
}
|
||||
|
||||
- private async getWasmBytes(): Promise<ArrayBuffer> {
|
||||
- const url = resolveAmdNodeModulePath('vsda', 'rust/web/vsda_bg.wasm');
|
||||
- const response = await fetch(url);
|
||||
- if (!response.ok) {
|
||||
- throw new Error('error loading vsda');
|
||||
- }
|
||||
-
|
||||
- return response.arrayBuffer();
|
||||
+ protected override signValue(_arg: string): Promise<string> {
|
||||
+ throw new Error('error loading vsda');
|
||||
}
|
||||
diff --git a/src/vs/server/node/remoteExtensionHostAgentServer.ts b/src/vs/server/node/remoteExtensionHostAgentServer.ts
|
||||
index 269cc38..a53fca9 100644
|
||||
--- a/src/vs/server/node/remoteExtensionHostAgentServer.ts
|
||||
+++ b/src/vs/server/node/remoteExtensionHostAgentServer.ts
|
||||
@@ -8,3 +8,2 @@ import type * as http from 'http';
|
||||
import * as net from 'net';
|
||||
-import { createRequire } from 'node:module';
|
||||
import { performance } from 'perf_hooks';
|
||||
@@ -41,3 +40,2 @@ import { setupServerServices, SocketServer } from './serverServices.js';
|
||||
import { CacheControl, serveError, serveFile, WebClientServer } from './webClientServer.js';
|
||||
-const require = createRequire(import.meta.url);
|
||||
|
||||
@@ -736,14 +734,3 @@ export async function createServer(address: string | net.AddressInfo | null, arg
|
||||
|
||||
- const vsdaMod = instantiationService.invokeFunction((accessor) => {
|
||||
- const logService = accessor.get(ILogService);
|
||||
- const hasVSDA = fs.existsSync(join(FileAccess.asFileUri('').fsPath, '../node_modules/vsda'));
|
||||
- if (hasVSDA) {
|
||||
- try {
|
||||
- return require('vsda');
|
||||
- } catch (err) {
|
||||
- logService.error(err);
|
||||
- }
|
||||
- }
|
||||
- return null;
|
||||
- });
|
||||
+ const vsdaMod = instantiationService.invokeFunction(() => null);
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts
|
||||
index 680e0dd..0b04279 100644
|
||||
index 0a50a2e..5ee6782 100644
|
||||
--- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts
|
||||
+++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts
|
||||
@@ -86,2 +86,3 @@ export class ExtensionManagementService extends AbstractExtensionManagementServi
|
||||
@@ -36,3 +36,2 @@ import {
|
||||
IAllowedExtensionsService,
|
||||
- VerifyExtensionSignatureConfigKey,
|
||||
shouldRequireRepositorySignatureFor,
|
||||
@@ -89,2 +88,3 @@ export class ExtensionManagementService extends AbstractExtensionManagementServi
|
||||
@IFileService private readonly fileService: IFileService,
|
||||
+ // @ts-expect-error no-unused-variable
|
||||
@IConfigurationService private readonly configurationService: IConfigurationService,
|
||||
@@ -347,4 +348,3 @@ export class ExtensionManagementService extends AbstractExtensionManagementServi
|
||||
@@ -333,4 +333,3 @@ export class ExtensionManagementService extends AbstractExtensionManagementServi
|
||||
if (verifySignature) {
|
||||
- const value = this.configurationService.getValue('extensions.verifySignature');
|
||||
- const value = this.configurationService.getValue(VerifyExtensionSignatureConfigKey);
|
||||
- verifySignature = isBoolean(value) ? value : true;
|
||||
+ verifySignature = false;
|
||||
}
|
||||
|
||||
9
patches/disable-update.patch.yet
Normal file
9
patches/disable-update.patch.yet
Normal file
@@ -0,0 +1,9 @@
|
||||
diff --git a/src/vs/platform/update/common/update.config.contribution.ts b/src/vs/platform/update/common/update.config.contribution.ts
|
||||
index d96926b..43f5d90 100644
|
||||
--- a/src/vs/platform/update/common/update.config.contribution.ts
|
||||
+++ b/src/vs/platform/update/common/update.config.contribution.ts
|
||||
@@ -20,3 +20,3 @@ configurationRegistry.registerConfiguration({
|
||||
enum: ['none', 'manual', 'start', 'default'],
|
||||
- default: 'default',
|
||||
+ default: 'none',
|
||||
scope: ConfigurationScope.APPLICATION,
|
||||
187
patches/disable-vscodedev.patch
Normal file
187
patches/disable-vscodedev.patch
Normal file
@@ -0,0 +1,187 @@
|
||||
diff --git a/extensions/github/package.json b/extensions/github/package.json
|
||||
index bce90fe..73debf7 100644
|
||||
--- a/extensions/github/package.json
|
||||
+++ b/extensions/github/package.json
|
||||
@@ -45,19 +45,2 @@
|
||||
},
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLink",
|
||||
- "title": "%command.copyVscodeDevLink%"
|
||||
- },
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLinkFile",
|
||||
- "title": "%command.copyVscodeDevLink%"
|
||||
- },
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLinkWithoutRange",
|
||||
- "title": "%command.copyVscodeDevLink%"
|
||||
- },
|
||||
- {
|
||||
- "command": "github.openOnVscodeDev",
|
||||
- "title": "%command.openOnVscodeDev%",
|
||||
- "icon": "$(globe)"
|
||||
- },
|
||||
{
|
||||
@@ -83,11 +66,2 @@
|
||||
],
|
||||
- "continueEditSession": [
|
||||
- {
|
||||
- "command": "github.openOnVscodeDev",
|
||||
- "when": "github.hasGitHubRepo",
|
||||
- "qualifiedName": "Continue Working in vscode.dev",
|
||||
- "category": "Remote Repositories",
|
||||
- "remoteGroup": "virtualfs_44_vscode-vfs_2_web@2"
|
||||
- }
|
||||
- ],
|
||||
"menus": {
|
||||
@@ -110,18 +84,2 @@
|
||||
},
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLink",
|
||||
- "when": "false"
|
||||
- },
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLinkFile",
|
||||
- "when": "false"
|
||||
- },
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLinkWithoutRange",
|
||||
- "when": "false"
|
||||
- },
|
||||
- {
|
||||
- "command": "github.openOnVscodeDev",
|
||||
- "when": "false"
|
||||
- },
|
||||
{
|
||||
@@ -131,42 +89,2 @@
|
||||
],
|
||||
- "file/share": [
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLinkFile",
|
||||
- "when": "github.hasGitHubRepo && remoteName != 'codespaces'",
|
||||
- "group": "0_vscode@0"
|
||||
- }
|
||||
- ],
|
||||
- "editor/context/share": [
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLink",
|
||||
- "when": "github.hasGitHubRepo && resourceScheme != untitled && !isInEmbeddedEditor && remoteName != 'codespaces'",
|
||||
- "group": "0_vscode@0"
|
||||
- }
|
||||
- ],
|
||||
- "explorer/context/share": [
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLinkWithoutRange",
|
||||
- "when": "github.hasGitHubRepo && resourceScheme != untitled && !isInEmbeddedEditor && remoteName != 'codespaces'",
|
||||
- "group": "0_vscode@0"
|
||||
- }
|
||||
- ],
|
||||
- "editor/lineNumber/context": [
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLink",
|
||||
- "when": "github.hasGitHubRepo && resourceScheme != untitled && activeEditor == workbench.editors.files.textFileEditor && config.editor.lineNumbers == on && remoteName != 'codespaces'",
|
||||
- "group": "1_cutcopypaste@2"
|
||||
- },
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLink",
|
||||
- "when": "github.hasGitHubRepo && resourceScheme != untitled && activeEditor == workbench.editor.notebook && remoteName != 'codespaces'",
|
||||
- "group": "1_cutcopypaste@2"
|
||||
- }
|
||||
- ],
|
||||
- "editor/title/context/share": [
|
||||
- {
|
||||
- "command": "github.copyVscodeDevLinkWithoutRange",
|
||||
- "when": "github.hasGitHubRepo && resourceScheme != untitled && remoteName != 'codespaces'",
|
||||
- "group": "0_vscode@0"
|
||||
- }
|
||||
- ],
|
||||
"scm/historyItem/context": [
|
||||
diff --git a/extensions/github/src/commands.ts b/extensions/github/src/commands.ts
|
||||
index 33acf5a..107e94a 100644
|
||||
--- a/extensions/github/src/commands.ts
|
||||
+++ b/extensions/github/src/commands.ts
|
||||
@@ -9,30 +9,5 @@ import { publishRepository } from './publish.js';
|
||||
import { DisposableStore, getRepositoryFromUrl } from './util.js';
|
||||
-import { LinkContext, getCommitLink, getLink, getVscodeDevHost } from './links.js';
|
||||
+import { getCommitLink } from './links.js';
|
||||
import { getOctokit } from './auth.js';
|
||||
|
||||
-async function copyVscodeDevLink(gitAPI: GitAPI, useSelection: boolean, context: LinkContext, includeRange = true) {
|
||||
- try {
|
||||
- const permalink = await getLink(gitAPI, useSelection, true, getVscodeDevHost(), 'headlink', context, includeRange);
|
||||
- if (permalink) {
|
||||
- return vscode.env.clipboard.writeText(permalink);
|
||||
- }
|
||||
- } catch (err) {
|
||||
- if (!(err instanceof vscode.CancellationError)) {
|
||||
- vscode.window.showErrorMessage(err.message);
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-async function openVscodeDevLink(gitAPI: GitAPI): Promise<vscode.Uri | undefined> {
|
||||
- try {
|
||||
- const headlink = await getLink(gitAPI, true, false, getVscodeDevHost(), 'headlink');
|
||||
- return headlink ? vscode.Uri.parse(headlink) : undefined;
|
||||
- } catch (err) {
|
||||
- if (!(err instanceof vscode.CancellationError)) {
|
||||
- vscode.window.showErrorMessage(err.message);
|
||||
- }
|
||||
- return undefined;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
interface ResolvedSessionRepo {
|
||||
@@ -210,14 +185,2 @@ export function registerCommands(gitAPI: GitAPI): vscode.Disposable {
|
||||
|
||||
- disposables.add(vscode.commands.registerCommand('github.copyVscodeDevLink', async (context: LinkContext) => {
|
||||
- return copyVscodeDevLink(gitAPI, true, context);
|
||||
- }));
|
||||
-
|
||||
- disposables.add(vscode.commands.registerCommand('github.copyVscodeDevLinkFile', async (context: LinkContext) => {
|
||||
- return copyVscodeDevLink(gitAPI, false, context);
|
||||
- }));
|
||||
-
|
||||
- disposables.add(vscode.commands.registerCommand('github.copyVscodeDevLinkWithoutRange', async (context: LinkContext) => {
|
||||
- return copyVscodeDevLink(gitAPI, true, context, false);
|
||||
- }));
|
||||
-
|
||||
disposables.add(vscode.commands.registerCommand('github.openOnGitHub', async (url: string, historyItemId: string) => {
|
||||
@@ -253,6 +216,2 @@ export function registerCommands(gitAPI: GitAPI): vscode.Disposable {
|
||||
|
||||
- disposables.add(vscode.commands.registerCommand('github.openOnVscodeDev', async () => {
|
||||
- return openVscodeDevLink(gitAPI);
|
||||
- }));
|
||||
-
|
||||
disposables.add(vscode.commands.registerCommand('github.createPullRequest', async (sessionResource: vscode.Uri | undefined, sessionMetadata: { worktreePath?: string } | undefined) => {
|
||||
diff --git a/extensions/github/src/extension.ts b/extensions/github/src/extension.ts
|
||||
index 17906c5..86a0ca8 100644
|
||||
--- a/extensions/github/src/extension.ts
|
||||
+++ b/extensions/github/src/extension.ts
|
||||
@@ -17,3 +17,2 @@ import { GitHubBranchProtectionProviderManager } from './branchProtection.js';
|
||||
import { GitHubCanonicalUriProvider } from './canonicalUriProvider.js';
|
||||
-import { VscodeDevShareProvider } from './shareProviders.js';
|
||||
import { GitHubSourceControlHistoryItemDetailsProvider } from './historyItemDetailsProvider.js';
|
||||
@@ -109,3 +108,2 @@ function initializeGitExtension(context: ExtensionContext, octokitService: Octok
|
||||
disposables.add(new GitHubCanonicalUriProvider(gitAPI));
|
||||
- disposables.add(new VscodeDevShareProvider(gitAPI));
|
||||
setGitHubContext(gitAPI, disposables);
|
||||
diff --git a/extensions/github/src/remoteSourceProvider.ts b/extensions/github/src/remoteSourceProvider.ts
|
||||
index bed2bb1..2880f97 100644
|
||||
--- a/extensions/github/src/remoteSourceProvider.ts
|
||||
+++ b/extensions/github/src/remoteSourceProvider.ts
|
||||
@@ -10,3 +10,3 @@ import { Octokit } from '@octokit/rest';
|
||||
import { getRepositoryFromQuery, getRepositoryFromUrl } from './util.js';
|
||||
-import { getBranchLink, getVscodeDevHost } from './links.js';
|
||||
+import { getBranchLink } from './links.js';
|
||||
|
||||
@@ -137,9 +137,2 @@ export class GithubRemoteSourceProvider implements RemoteSourceProvider {
|
||||
}
|
||||
- }, {
|
||||
- label: l10n.t('Checkout on vscode.dev'),
|
||||
- icon: 'globe',
|
||||
- run(branch: string) {
|
||||
- const link = getBranchLink(url, branch, getVscodeDevHost());
|
||||
- env.openExternal(Uri.parse(link));
|
||||
- }
|
||||
}];
|
||||
@@ -1,22 +1,9 @@
|
||||
diff --git a/build/lib/builtInExtensions.js b/build/lib/builtInExtensions.js
|
||||
index 1b0adc4..b595123 100644
|
||||
--- a/build/lib/builtInExtensions.js
|
||||
+++ b/build/lib/builtInExtensions.js
|
||||
@@ -47,5 +47,3 @@ function isUpToDate(extension) {
|
||||
function getExtensionDownloadStream(extension) {
|
||||
- const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
|
||||
- return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
|
||||
- .pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
|
||||
+ return ext.fromGithub(extension).pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
|
||||
}
|
||||
diff --git a/build/lib/builtInExtensions.ts b/build/lib/builtInExtensions.ts
|
||||
index fefed43..4ae553e 100644
|
||||
index d52567b..fe5b988 100644
|
||||
--- a/build/lib/builtInExtensions.ts
|
||||
+++ b/build/lib/builtInExtensions.ts
|
||||
@@ -72,5 +72,3 @@ function isUpToDate(extension: IExtensionDefinition): boolean {
|
||||
function getExtensionDownloadStream(extension: IExtensionDefinition) {
|
||||
- const galleryServiceUrl = productjson.extensionsGallery?.serviceUrl;
|
||||
- return (galleryServiceUrl ? ext.fromMarketplace(galleryServiceUrl, extension) : ext.fromGithub(extension))
|
||||
- .pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
|
||||
+ return ext.fromGithub(extension).pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`));
|
||||
}
|
||||
@@ -75,4 +75,2 @@ function getExtensionDownloadStream(extension: IExtensionDefinition) {
|
||||
input = ext.fromVsix(path.join(root, extension.vsix), extension);
|
||||
- } else if (productjson.extensionsGallery?.serviceUrl) {
|
||||
- input = ext.fromMarketplace(productjson.extensionsGallery.serviceUrl, extension);
|
||||
} else {
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.ts b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.ts
|
||||
index c581ac0..f11c0f0 100644
|
||||
index e025130..f42db8d 100644
|
||||
--- a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.ts
|
||||
+++ b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.contribution.ts
|
||||
@@ -319,2 +319,8 @@ configurationRegistry.registerConfiguration({
|
||||
@@ -343,2 +343,9 @@ configurationRegistry.registerConfiguration({
|
||||
},
|
||||
+ 'workbench.welcomePage.extraAnnouncements': {
|
||||
+ scope: ConfigurationScope.MACHINE,
|
||||
+ type: 'boolean',
|
||||
+ default: true,
|
||||
+ description: localize('workbench.welcomePage.extraAnnouncements', "When enabled, the get started page loads additional announcements from VSCodium's repository.")
|
||||
+ description: localize('workbench.welcomePage.extraAnnouncements', "When enabled, the get started page loads additional announcements from !!APP_NAME!!'s repository."),
|
||||
+ tags: ['usesOnlineServices']
|
||||
+ },
|
||||
'workbench.startupEditor': {
|
||||
diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts
|
||||
index 664c55b..43f9e2e 100644
|
||||
index 01778b2..615828d 100644
|
||||
--- a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts
|
||||
+++ b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts
|
||||
@@ -113,4 +113,8 @@ type GettingStartedActionEvent = {
|
||||
@@ -117,4 +117,8 @@ type GettingStartedActionEvent = {
|
||||
type RecentEntry = (IRecentFolder | IRecentWorkspace) & { id: string };
|
||||
+type AnnouncementEntry = { id: string, title: string, url: string };
|
||||
|
||||
@@ -24,26 +25,26 @@ index 664c55b..43f9e2e 100644
|
||||
+const BUILTIN_ANNOUNCEMENTS: AnnouncementEntry[] = [/* BUILTIN_ANNOUNCEMENTS */];
|
||||
+
|
||||
export class GettingStartedPage extends EditorPane {
|
||||
@@ -149,2 +153,4 @@ export class GettingStartedPage extends EditorPane {
|
||||
@@ -154,2 +158,4 @@ export class GettingStartedPage extends EditorPane {
|
||||
private gettingStartedList?: GettingStartedIndexList<IResolvedWalkthrough>;
|
||||
+ private announcementList?: GettingStartedIndexList<AnnouncementEntry>;
|
||||
+ private announcementData?: AnnouncementEntry[];
|
||||
|
||||
@@ -812,2 +818,3 @@ export class GettingStartedPage extends EditorPane {
|
||||
@@ -880,2 +886,3 @@ export class GettingStartedPage extends EditorPane {
|
||||
const gettingStartedList = this.buildGettingStartedWalkthroughsList();
|
||||
+ const announcementList = await this.buildAnnouncementList();
|
||||
|
||||
@@ -822,3 +829,3 @@ export class GettingStartedPage extends EditorPane {
|
||||
@@ -890,3 +897,3 @@ export class GettingStartedPage extends EditorPane {
|
||||
this.container.classList.remove('noWalkthroughs');
|
||||
- reset(rightColumn, gettingStartedList.getDomElement());
|
||||
+ reset(rightColumn, gettingStartedList.getDomElement(), announcementList.getDomElement());
|
||||
}
|
||||
@@ -826,3 +833,3 @@ export class GettingStartedPage extends EditorPane {
|
||||
@@ -894,3 +901,3 @@ export class GettingStartedPage extends EditorPane {
|
||||
this.container.classList.add('noWalkthroughs');
|
||||
- reset(rightColumn);
|
||||
+ reset(rightColumn, announcementList.getDomElement());
|
||||
}
|
||||
@@ -978,2 +985,55 @@ export class GettingStartedPage extends EditorPane {
|
||||
@@ -1047,2 +1054,55 @@ export class GettingStartedPage extends EditorPane {
|
||||
|
||||
+ private async buildAnnouncementList(): Promise<GettingStartedIndexList<AnnouncementEntry>> {
|
||||
+ const renderAnnouncement = (announcement: AnnouncementEntry) => {
|
||||
@@ -62,7 +63,7 @@ index 664c55b..43f9e2e 100644
|
||||
+ if (this.announcementList) { this.announcementList.dispose(); }
|
||||
+
|
||||
+ const announcementList = this.announcementList = new GettingStartedIndexList({
|
||||
+ title: localize('announcements', "VSCodium Announcements"),
|
||||
+ title: localize('announcements', "!!APP_NAME!! Announcements"),
|
||||
+ klass: 'announcements',
|
||||
+ limit: 5,
|
||||
+ empty: $('.empty-recent', {}, localize('noAnnouncements', "There are no current announcements.")),
|
||||
@@ -75,7 +76,7 @@ index 664c55b..43f9e2e 100644
|
||||
+
|
||||
+ if (showExtras) {
|
||||
+ const branch = this.productService.quality === 'insider' ? 'insider' : 'master';
|
||||
+ await fetch(`https://raw.githubusercontent.com/VSCodium/vscodium/${branch}/announcements-extra.json`)
|
||||
+ await fetch(`https://raw.githubusercontent.com/!!GH_REPO_PATH!!/${branch}/announcements-extra.json`)
|
||||
+ .then(async res => {
|
||||
+ if (res.ok) {
|
||||
+ var extraAnnouncements = await res.json() as AnnouncementEntry[];
|
||||
|
||||
167
patches/feat-command-filter.patch
Normal file
167
patches/feat-command-filter.patch
Normal file
@@ -0,0 +1,167 @@
|
||||
diff --git a/src/vs/workbench/contrib/commands/common/commands.contribution.ts b/src/vs/workbench/contrib/commands/common/commands.contribution.ts
|
||||
index 3fd6b59..97a0e04 100644
|
||||
--- a/src/vs/workbench/contrib/commands/common/commands.contribution.ts
|
||||
+++ b/src/vs/workbench/contrib/commands/common/commands.contribution.ts
|
||||
@@ -9,2 +9,3 @@ import { Action2, registerAction2 } from '../../../../platform/actions/common/ac
|
||||
import { ICommandService } from '../../../../platform/commands/common/commands.js';
|
||||
+import { ConfigurationScope, IConfigurationRegistry } from '../../../../platform/configuration/common/configurationRegistry.js';
|
||||
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
@@ -12,2 +13,3 @@ import { ILogService } from '../../../../platform/log/common/log.js';
|
||||
import { INotificationService } from '../../../../platform/notification/common/notification.js';
|
||||
+import { Registry } from '../../../../platform/registry/common/platform.js';
|
||||
|
||||
@@ -156,2 +158,30 @@ class RunCommands extends Action2 {
|
||||
|
||||
+Registry.as<IConfigurationRegistry>('base.contributions.configuration')
|
||||
+ .registerConfiguration({
|
||||
+ id: 'commands',
|
||||
+ order: 30,
|
||||
+ title: nls.localize('commandsConfigurationTitle', "Commands"),
|
||||
+ type: 'object',
|
||||
+ properties: {
|
||||
+ 'commands.filters': {
|
||||
+ additionalProperties: {
|
||||
+ type: 'string',
|
||||
+ enum: ['ask', 'off', 'on'],
|
||||
+ enumDescriptions: [
|
||||
+ nls.localize('commands.filters.ask', 'Ask the user before executing the command.'),
|
||||
+ nls.localize('commands.filters.off', 'The command is never authorized.'),
|
||||
+ nls.localize('commands.filters.on', 'The command is always authorized.'),
|
||||
+ ],
|
||||
+ description: nls.localize('commands.filters.value', "Authorization for the command."),
|
||||
+ },
|
||||
+ description: nls.localize('commands.filters', "Controls which commands are authorized to be executed."),
|
||||
+ default: {
|
||||
+ 'workbench.action.terminal.newLocal': 'off'
|
||||
+ },
|
||||
+ scope: ConfigurationScope.APPLICATION,
|
||||
+ tags: []
|
||||
+ },
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
registerAction2(RunCommands);
|
||||
diff --git a/src/vs/workbench/services/commands/common/commandService.ts b/src/vs/workbench/services/commands/common/commandService.ts
|
||||
index 93d1631..0533cf0 100644
|
||||
--- a/src/vs/workbench/services/commands/common/commandService.ts
|
||||
+++ b/src/vs/workbench/services/commands/common/commandService.ts
|
||||
@@ -8,3 +8,6 @@ import { Emitter, Event } from '../../../../base/common/event.js';
|
||||
import { Disposable } from '../../../../base/common/lifecycle.js';
|
||||
+import Severity from '../../../../base/common/severity.js';
|
||||
import { CommandsRegistry, ICommandEvent, ICommandService } from '../../../../platform/commands/common/commands.js';
|
||||
+import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
|
||||
+import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
|
||||
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
|
||||
@@ -20,2 +23,3 @@ export class CommandService extends Disposable implements ICommandService {
|
||||
private _starActivation: CancelablePromise<void> | null;
|
||||
+ private _commandFilters: Record<string, "ask" | "off" | "on">
|
||||
|
||||
@@ -30,3 +34,5 @@ export class CommandService extends Disposable implements ICommandService {
|
||||
@IExtensionService private readonly _extensionService: IExtensionService,
|
||||
- @ILogService private readonly _logService: ILogService
|
||||
+ @ILogService private readonly _logService: ILogService,
|
||||
+ @IConfigurationService private readonly _configurationService: IConfigurationService,
|
||||
+ @IDialogService private readonly _dialogService: IDialogService
|
||||
) {
|
||||
@@ -35,2 +41,9 @@ export class CommandService extends Disposable implements ICommandService {
|
||||
this._starActivation = null;
|
||||
+ this._commandFilters = this._configurationService.getValue('commands.filters') ?? { 'workbench.action.terminal.newLocal': 'off' };
|
||||
+
|
||||
+ this._configurationService.onDidChangeConfiguration(async (event) => {
|
||||
+ if (event.affectsConfiguration('commands.filters')) {
|
||||
+ this._commandFilters = this._configurationService.getValue('commands.filters') ?? { 'workbench.action.terminal.newLocal': 'off' };
|
||||
+ }
|
||||
+ })
|
||||
}
|
||||
@@ -57,2 +70,27 @@ export class CommandService extends Disposable implements ICommandService {
|
||||
|
||||
+ const filter = this._commandFilters[id];
|
||||
+ if (filter === 'off') {
|
||||
+ return Promise.reject(new Error(`command '${id}' not authorized`));
|
||||
+ }
|
||||
+ else if (filter === 'ask') {
|
||||
+ const { result } = await this._dialogService.prompt({
|
||||
+ type: Severity.Error,
|
||||
+ message: `Are you sure you want to execute the command "${id}"?`,
|
||||
+ buttons: [
|
||||
+ {
|
||||
+ label: 'Yes',
|
||||
+ run: () => true
|
||||
+ },
|
||||
+ {
|
||||
+ label: 'No',
|
||||
+ run: () => false
|
||||
+ }
|
||||
+ ],
|
||||
+ });
|
||||
+
|
||||
+ if (!result) {
|
||||
+ return Promise.reject(new Error(`command '${id}' not authorized`));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (commandIsRegistered) {
|
||||
diff --git a/src/vs/workbench/services/commands/test/common/commandService.test.ts b/src/vs/workbench/services/commands/test/common/commandService.test.ts
|
||||
index ca3be11..fb456a3 100644
|
||||
--- a/src/vs/workbench/services/commands/test/common/commandService.test.ts
|
||||
+++ b/src/vs/workbench/services/commands/test/common/commandService.test.ts
|
||||
@@ -12,2 +12,7 @@ import { NullExtensionService } from '../../../extensions/common/extensions.js';
|
||||
import { CommandService } from '../../common/commandService.js';
|
||||
+import { NullPolicyService } from '../../../../../platform/policy/common/policy.js';
|
||||
+import { FileService } from '../../../../../platform/files/common/fileService.js';
|
||||
+import { URI } from '../../../../../base/common/uri.js';
|
||||
+import { ConfigurationService } from '../../../../../platform/configuration/common/configurationService.js';
|
||||
+import { TestDialogService } from '../../../../../platform/dialogs/test/common/testDialogService.js';
|
||||
|
||||
@@ -16,4 +21,16 @@ suite('CommandService', function () {
|
||||
const store = ensureNoDisposablesAreLeakedInTestSuite();
|
||||
+ const testDisposables = ensureNoDisposablesAreLeakedInTestSuite();
|
||||
+ let nullConfigService: ConfigurationService
|
||||
|
||||
setup(function () {
|
||||
+ const nullPolicyService = new NullPolicyService();
|
||||
+ const nullLogService = testDisposables.add(new NullLogService());
|
||||
+ const nullFileService = testDisposables.add(new FileService(nullLogService));
|
||||
+ nullConfigService = testDisposables.add(new ConfigurationService(
|
||||
+ URI.file('/config.json'),
|
||||
+ nullFileService,
|
||||
+ nullPolicyService,
|
||||
+ nullLogService,
|
||||
+ ));
|
||||
+
|
||||
store.add(CommandsRegistry.registerCommand('foo', function () { }));
|
||||
@@ -30,3 +47,3 @@ suite('CommandService', function () {
|
||||
}
|
||||
- }, new NullLogService()));
|
||||
+ }, new NullLogService(), nullConfigService, new TestDialogService()));
|
||||
|
||||
@@ -50,3 +67,3 @@ suite('CommandService', function () {
|
||||
|
||||
- const service = store.add(new CommandService(new InstantiationService(), extensionService, new NullLogService()));
|
||||
+ const service = store.add(new CommandService(new InstantiationService(), extensionService, new NullLogService(), nullConfigService, new TestDialogService()));
|
||||
|
||||
@@ -68,3 +85,3 @@ suite('CommandService', function () {
|
||||
}
|
||||
- }, new NullLogService()));
|
||||
+ }, new NullLogService(), nullConfigService, new TestDialogService()));
|
||||
|
||||
@@ -85,3 +102,3 @@ suite('CommandService', function () {
|
||||
}
|
||||
- }, new NullLogService()));
|
||||
+ }, new NullLogService(), nullConfigService, new TestDialogService()));
|
||||
|
||||
@@ -125,3 +142,3 @@ suite('CommandService', function () {
|
||||
|
||||
- }, new NullLogService()));
|
||||
+ }, new NullLogService(), nullConfigService, new TestDialogService()));
|
||||
|
||||
@@ -166,3 +183,3 @@ suite('CommandService', function () {
|
||||
|
||||
- }, new NullLogService()));
|
||||
+ }, new NullLogService(), nullConfigService, new TestDialogService()));
|
||||
|
||||
@@ -187,3 +204,3 @@ suite('CommandService', function () {
|
||||
};
|
||||
- const service = store.add(new CommandService(new InstantiationService(), extensionService, new NullLogService()));
|
||||
+ const service = store.add(new CommandService(new InstantiationService(), extensionService, new NullLogService(), nullConfigService, new TestDialogService()));
|
||||
|
||||
3990
patches/feat-experimental-font.patch
Normal file
3990
patches/feat-experimental-font.patch
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user