Compare commits

..

232 Commits

Author SHA1 Message Date
Baptiste Augrain
9c2f61b79c fix: report issue to vscodium (#825) 2021-09-07 01:56:10 +02:00
Baptiste Augrain
0d433893b7 use github personal access token (#672) 2021-09-06 15:22:30 +02:00
Baptiste Augrain
bf524a9c2c fix(1.60): add patch to disable CORS (#822) 2021-09-06 12:01:31 +02:00
Baptiste Augrain
d862b86a27 fix(1.60): update custom gallery patch (#817) 2021-09-02 22:34:19 +02:00
Baptiste Augrain
8aa9de17b1 fix: rewrite tag search for linux arm (#809) 2021-08-27 23:40:30 +02:00
Baptiste Augrain
72363757b3 build: push event are detected to avoid premature deployment (#808) 2021-08-27 18:26:59 +02:00
Baptiste Augrain
96332714ae build: specify vscode version to build (#807) 2021-08-27 16:01:17 +02:00
Baptiste Augrain
a5506b975c add some small improvements (#803) 2021-08-23 05:05:01 +02:00
Baptiste Augrain
b175fd43eb fix: fail build when a patch can't be applied (#797) 2021-08-14 22:59:32 +02:00
Baptiste Augrain
b1970e82af do not start crashReporter when appCenter isn't configured (#787) 2021-08-06 01:49:57 +02:00
Baptiste Augrain
23160ad483 Disable cors (#774) 2021-08-03 18:51:40 +02:00
swinder0161
51ee66e019 Add support to build insider latest build: $ INSIDER=1 ./build/build_mac.sh (#784) 2021-08-03 14:43:49 +02:00
descodess
2abbfed911 fix typo in README.md (#785) 2021-08-03 14:42:23 +02:00
Baptiste Augrain
8187c7fd7f add a loop to apply patches (#779) 2021-07-29 12:31:54 +02:00
Baptiste Augrain
53b071366b Fix AppImage's dependency (#775)
* move dependency installation into workflow

* dependency install not needed
2021-07-26 01:15:55 +02:00
Baptiste Augrain
98372f9d1e Fixing python in AppImage (#773)
- overwrite AppRun to remove the env variables `PYTHONHOME` and `PYTHONPATH`
- update building script to it can be build manually in docker
2021-07-23 10:01:38 +02:00
Baptiste Augrain
30313a518b Update doc (#772)
* add missing dependencies for linux
* update node version
2021-07-23 09:48:52 +02:00
Michael Kirsch
2ecbd09c2b update icon paths (#440) 2021-07-22 16:43:39 -07:00
swinder0161
66551077f8 Add support to use GNU sed installed in mac osx (#770)
* Add support to use GNU sed installed in mac osx

* Move common functions to utils.sh

Co-authored-by: Swinder Pal Singh Juneja <swinder.juneja@oneplus.com>
2021-07-21 22:49:00 +02:00
Liwen Guo
e1b4583cf9 Use applicationName for update cache path (#765) 2021-07-16 16:37:07 -07:00
Baptiste Augrain
bbc6e8f4b7 Merge pull request #756 from larryw3i/larryw3i-patch-1
using snap to install codium requires classic mode
2021-07-15 11:10:03 +02:00
atesca09
d29337f328 Fix custom-gallery patch (#758)
* Fix custom-gallery patch

* Bump GA to node 14

Co-authored-by: Atesca <2404098-atesca@users.noreply.gitlab.com>
2021-07-10 07:09:37 -07:00
Larry Wei
ca52c1cfda using snap to install codium requires classic mode 2021-07-06 15:15:11 +08:00
Peter Squicciarini
c7cc061077 Merge pull request #742 from ShadowCreator250/add-extension-links-to-readme
README: add links to marketplace for extensions included during build process
2021-07-02 09:57:13 -07:00
Peter Squicciarini
34b5dbce34 Merge pull request #753 from daiyam/fix-preview
fix markdown's preview
2021-07-02 09:56:45 -07:00
Peter Squicciarini
cb8d774c77 Merge pull request #754 from daiyam/doc 2021-07-02 09:47:54 -07:00
Baptiste Augrain
6a5ba92d10 add link to build doc 2021-06-30 10:29:54 +02:00
Baptiste Augrain
643b0f869d - add build doc
- improve terminal doc
2021-06-30 10:24:06 +02:00
Baptiste Augrain
7d636ce0f7 build media files used for the preview 2021-06-29 20:02:52 +02:00
Peter Squicciarini
5b3b76e65b Merge pull request #748 from swinder0161/user-patches
Add ability to apply user specific patches to vscode source
2021-06-26 11:13:10 -07:00
Swinder Pal Singh Juneja
64e101b963 Add ability to apply user specific patches to vscode source 2021-06-21 08:50:25 +05:30
ShadowCreator250
527ce5efd2 README: add links to marketplace for extensions included during build process 2021-06-17 11:12:59 +02:00
Peter Squicciarini
8bb2491be1 Merge pull request #736 from daiyam/icon-builder
Make icons builder includable
2021-06-15 13:32:28 -07:00
Peter Squicciarini
63244816b6 Merge pull request #737 from daiyam/fix-build
fix build
2021-06-12 20:00:41 -07:00
Baptiste Augrain
e0944b1769 fix patches 2021-06-12 23:53:56 +02:00
Baptiste Augrain
28ccd0bf00 insert final newline 2021-06-07 22:47:56 +02:00
Baptiste Augrain
226c019adf rewrite script so it can be included 2021-06-07 22:40:02 +02:00
Peter Squicciarini
2a742910df Merge pull request #730 from papjul/patch-1
Vscodium officially available in Gentoo repos
2021-06-07 10:57:56 -07:00
Peter Squicciarini
15fac881ce Merge pull request #735 from daiyam/fix-sed
detect sed version
2021-06-07 02:12:33 -07:00
Baptiste Augrain
d5f6866981 detect sed version instead of using global variable 2021-06-07 10:05:57 +02:00
Baptiste Augrain
b00ffc8610 Fix icons (#734)
* move shared icon

* add generated Inno Setup icons
2021-06-06 09:03:25 -07:00
Baptiste Augrain
52ef4eb7be linux: fix appimage (#731)
* always use latest version of pkg2appimage

* generate zsync file to make the appimage updateable

* install fuse for GH actions

* remove fuse

* run AppImage

* comment converts

* getting info on images

* using bugfix from #536

* add DOCKER_BUILD flag

* extract AppImageAssistant before running it

* use local `convert` and not from `pkg2appimage`
2021-06-05 16:47:16 -07:00
Peter Squicciarini
efe3f6b103 Merge pull request #695 from jingyu9575/patch-1
Fix Jupyter extension crash
2021-06-05 08:29:07 -07:00
Peter Squicciarini
a8cd9694ee Merge pull request #683 from ghost/add-qol
Allow workflows to run by using the REST API or from the Actions tab on GitHub
2021-06-05 08:24:50 -07:00
Julien Papasian
d8bc3e7963 Vscodium officially available in Gentoo repos
No longer requires to install an overlay.
2021-06-04 20:06:56 +02:00
Peter Squicciarini
d636a66828 Merge pull request #728 from daiyam/fix-gallery
fix custom gallery on windows
2021-05-30 08:55:57 -07:00
Baptiste Augrain
97db123287 fix custom gallery on windows 2021-05-28 19:45:05 +02:00
Peter Squicciarini
10815a5b2d Merge pull request #715 from atesca09/custom_gallery_patch_fix
Fix custom gallery patch for 1.56
2021-05-09 08:42:17 -07:00
Atesca
656a02b50f Fix custom gallery pacht for 1.56 2021-05-06 16:30:55 +02:00
jingyu9575
3d016f4f48 Add all extensionAllowedProposedApi from VSCode 2021-04-10 05:31:26 +08:00
jingyu9575
9b538aebc3 Fix Jupyter extension crash 2021-04-07 01:23:54 +08:00
Baptiste Augrain
d8a91cf13e fixing build for 1.55 (#690)
* Fix patch for builds after 1.55

* Remove no longer needed centos7 patch

* updating patches for 1.55

Co-authored-by: Atesca <2404098-atesca@users.noreply.gitlab.com>
2021-04-01 07:43:49 -07:00
wdkse
c43a4e5136 obsolete win32-build.yml information 2021-03-29 12:12:44 -04:00
wdkse
336bfce8fd workflows manual trigger via dispatch event 2021-03-29 12:11:20 -04:00
Peter Squicciarini
62a7dce09d Merge pull request #655 from daiyam/fix-binary 2021-03-25 09:08:37 -07:00
Baptiste Augrain
b07aee0b20 Merge branch 'master' into fix-binary 2021-03-24 22:42:06 +01:00
Peter Squicciarini
73c8e12182 Merge pull request #674 from daiyam/custom-gallery 2021-03-24 12:46:28 -07:00
Baptiste Augrain
96312bd7f4 add subheadings to table of contents 2021-03-24 02:15:35 +01:00
Baptiste Augrain
0ead786b6c - rename env variables
- update doc
2021-03-19 17:02:21 +01:00
Baptiste Augrain
ccd219e96e - add cacheUrl
- locate & load user-customized product.json
2021-03-19 13:27:33 +01:00
Baptiste Augrain
e7c96e706d Merge branch '#537' into custom-gallery 2021-03-19 05:30:27 +01:00
Peter Squicciarini
93bfe2e2d4 Merge pull request #668 from daiyam/fix-schedule
fix schedule runs
2021-03-12 17:41:42 -08:00
Baptiste Augrain
479d4c3dbc fix variable name 2021-03-12 10:51:07 +01:00
Baptiste Augrain
51824a83d1 correctly determine when the run if from an PR or not 2021-03-12 10:36:07 +01:00
Baptiste Augrain
b99e93970e fixing windows 2021-03-11 04:11:59 +01:00
Baptiste Augrain
3a15ad9778 fixing for 1.54 2021-03-11 02:13:52 +01:00
Baptiste Augrain
edc9773c9c Merge branch 'master' into fix-binary 2021-03-11 01:45:06 +01:00
Peter Squicciarini
88f37a102a Merge pull request #666 from daiyam/fix-build 2021-03-10 16:28:43 -08:00
Baptiste Augrain
6c87e3a778 retrigger checks 2021-03-10 21:41:51 +01:00
Baptiste Augrain
cd353df55a fix linux cache key 2021-03-10 19:47:13 +01:00
Baptiste Augrain
c4b4194df7 cache per os and arch 2021-03-10 19:38:28 +01:00
Baptiste Augrain
59ad206f9e move build scripts 2021-03-10 19:24:52 +01:00
Baptiste Augrain
2089830d92 add cache 2021-03-10 18:58:36 +01:00
Baptiste Augrain
78ba01d3a0 retrigger checks 2021-03-10 18:24:30 +01:00
Baptiste Augrain
c3f50a8efe fixing scripts path 2021-03-10 16:56:14 +01:00
Baptiste Augrain
3e50a25606 PR should build but not deploy 2021-03-10 16:48:45 +01:00
Baptiste Augrain
f8eeb2b698 - fixing build
- add manual build
2021-03-10 16:04:07 +01:00
Baptiste Augrain
54b4d842ad Merge branch 'master' into fix-binary 2021-03-08 20:09:18 +01:00
Mike Lewis
99f27fe9ed Reduce context for patches/update-cache-path.patch
Upstream changed the next line, causing build breakage.
Reducing the context resolves the issue and should help prevent future issues if/when that function changes again.
2021-03-07 23:03:39 -05:00
Peter Squicciarini
6979e526e3 Merge pull request #650 from Livven/patch-1
Remove redundant `yarn postinstall` call
2021-03-02 11:12:54 -08:00
Peter Squicciarini
bc03b9d591 Merge pull request #647 from PawelBorkar/update-license 2021-03-02 11:08:41 -08:00
Peter Squicciarini
997e1dd61f Merge pull request #658 from yegortimoshenko/patch-2
Fix a typo (VSCode -> VS Code) in README.md
2021-03-02 11:07:41 -08:00
Peter Squicciarini
ddedf6a08a Merge pull request #660 from daiyam/fix-rpm-spec
remove Centos 7 compatibility
2021-03-02 11:06:49 -08:00
Peter Squicciarini
e961f14310 Merge pull request #649 from GitMensch/patch-1
supported platform update, fixes #648
2021-03-02 11:04:10 -08:00
Baptiste Augrain
241d311adf Centos7 isn't supported by Electron 11 2021-03-02 19:33:25 +01:00
Yegor Timoshenko
52d63a9a7d Fix a typo (VSCode -> VS Code) in README.md
Repository description and "Extensions and the Marketplace" `README.md`
paragraph refers to the upstream editor as "VS Code", while other parts of the
README refer to it as "VSCode".

Upstream refers to it as "VS Code", this commit standardizes on that specific
spelling (e.g. see https://github.com/microsoft/vscode#related-projects).
2021-02-28 21:51:06 +03:00
Baptiste Augrain
b17312f534 patch static binary name 2021-02-26 22:14:40 +01:00
Pawel Borkar
0b282757ce Update README.md 2021-02-26 13:01:11 +05:30
Simon Sobisch
8f0532f4b6 supported platform update, fixes #648
* some minimal versions, along with the reason for it
* arm64 macOS status
* Windows arm64
* GNU/Linux
* OS -> platforms
2021-02-25 18:43:45 +01:00
Liwen Guo
97a74cc61b Remove redundant yarn postinstall call
Saves around 10 to 20 seconds in the build job.
2021-02-23 11:17:17 +01:00
Pawel Borkar
9c2cc86935 Update back to MIT from MIT License 2021-02-21 12:16:06 +05:30
Pawel Borkar
6fba344a63 Add hyperlink to the MIT license in the License section 2021-02-21 10:40:44 +05:30
Pawel Borkar
b41635b951 Update the license year to 2021 2021-02-21 10:39:32 +05:30
Peter Squicciarini
f8b17d45a8 Merge pull request #633 from daiyam/fix-icon
update windows icon
2021-02-07 14:44:14 -08:00
Peter Squicciarini
f103b1beaa Merge pull request #634 from stripedpajamas/update-build-agents 2021-02-07 13:57:43 -08:00
Peter Squicciarini
a0eebe5775 (experiment) remove permissions reset 2021-02-07 13:17:03 -08:00
Baptiste Augrain
aec3519ea7 generate win32's icon based on linux' icon 2021-02-07 19:35:57 +01:00
Peter Squicciarini
c9ae0c605f (experiment) reset permissions before checking out 2021-02-07 00:09:35 -08:00
Peter Squicciarini
5d26e9d7f6 Update Linux build agents 2021-02-06 21:48:11 -08:00
Peter Squicciarini
96d79aeb70 Merge pull request #628 from sscotth/patch-1 2021-02-06 13:14:39 -08:00
Scott Humphries
baf7e684ee API rate limit exceeded 2021-02-06 14:21:39 -06:00
Scott Humphries
c9e9f28130 Update update-cache-path.patch 2021-02-05 12:05:37 -06:00
Peter Squicciarini
9ed4558b54 Merge pull request #620 from hazarek/patch-1 2021-01-19 15:09:25 -08:00
Peter Squicciarini
6dd97cce54 Merge pull request #618 from daiyam/update-icons 2021-01-19 15:08:45 -08:00
Hazar
22001fcae5 Typo
OS X -> macOS
2021-01-20 01:14:02 +03:00
Baptiste Augrain
e6fe0cddd6 use icon from #616 2021-01-19 20:15:21 +01:00
Peter Squicciarini
1f5761ccea Merge pull request #617 from hazarek/patch-1
OS X -> macOS | since 2016
2021-01-19 09:49:20 -08:00
Baptiste Augrain
c12606a81b clean up script 2021-01-18 11:21:32 +01:00
Baptiste Augrain
60de1450bc use script to generate icons 2021-01-18 04:46:57 +01:00
Hazar
364838eaba macOS since 2016. OSX name changed 4 years ago.
macOS since 2016. OSX name changed 4 years ago.
2021-01-18 02:01:17 +03:00
Peter Squicciarini
5298b33e68 Merge pull request #611 from stripedpajamas/zsync 2021-01-14 09:24:44 -08:00
Peter Squicciarini
820ca10fe4 Merge pull request #612 from hazarek/master
macOS Big Sur App icon update.
2021-01-13 18:42:20 -08:00
hazarek
a8372aa348 macOS Big Sur App icon update. 2021-01-14 05:02:37 +03:00
Peter Squicciarini
7b13dd63e7 Copy AppImage zsync file to be uploaded to GH 2021-01-13 15:39:11 -08:00
Peter Squicciarini
d001f1875e Merge pull request #610 from stripedpajamas/windows-gh 2021-01-13 15:29:25 -08:00
Peter Squicciarini
384789005b specify system setup name properly in check_tags 2021-01-13 09:57:49 -08:00
Peter Squicciarini
9dd4e545c0 Merge pull request #609 from stripedpajamas/windows-gh 2021-01-12 23:31:12 -08:00
Peter Squicciarini
29f3534b16 Merge pull request #608 from KevinBlue18/patch-1
Update DOCS.md
2021-01-12 16:29:47 -08:00
Peter Squicciarini
9bfe5e3b73 use npm checksum 2021-01-12 15:44:17 -08:00
Kevin Canto
d547c16120 Update DOCS.md
Grammar fix: adding missing preposition
2021-01-12 16:03:32 -06:00
Peter Squicciarini
78aa52ea05 bugfix linux metadata paths; set OS_NAME in windows builds 2021-01-12 13:56:52 -08:00
Peter Squicciarini
70139913d6 (experiment) bugfix build shell 2021-01-12 12:04:28 -08:00
Peter Squicciarini
768ea6778e (experiment) use GH actions for Windows builds 2021-01-12 12:01:29 -08:00
Peter Squicciarini
c7187ed00f Merge pull request #595 from daiyam/fix-update-version-macos 2020-12-28 15:27:02 -08:00
Peter Squicciarini
0039e51b87 Merge pull request #592 from paulcarroty/master
fix metadata, closes #202
2020-12-28 15:23:20 -08:00
Peter Squicciarini
5811dab0eb Merge pull request #596 from L1Cafe/patch-1
Fixed macOS install instructions
2020-12-28 14:38:31 -08:00
L1Cafe
17cb8b1d4e Fixed macOS install instructions
The process to install macOS packages through Homebrew Cask has changed.
2020-12-23 13:42:52 +00:00
Baptiste Augrain
37851b2f04 fix name 2020-12-23 05:23:12 +01:00
Baptiste Augrain
b3e6c6dbe1 add missing VSCODE_ARCH 2020-12-23 05:02:22 +01:00
Peter Squicciarini
aeec80474f Merge pull request #594 from daiyam/fix-check-tags-macos
fix check-tags.sh on macos
2020-12-22 19:50:30 -08:00
Baptiste Augrain
02b97b5d79 add VSCODE_ARCH to archive name 2020-12-23 04:06:04 +01:00
Pavlo Rudyi
10ec7d8e2b fix metadata, closes #202 2020-12-21 16:26:30 +02:00
Peter Squicciarini
b8b5dc9aeb Merge pull request #589 from getrooted0019/master 2020-12-18 11:02:17 -08:00
Peter Squicciarini
86f076f68c Merge pull request #582 from stripedpajamas/master 2020-12-18 10:59:49 -08:00
nishant
5b15d72328 Updated license year. 2020-12-16 11:45:30 +05:30
Peter Squicciarini
e0c124d19e Update README.md 2020-12-14 17:21:25 -08:00
Peter Squicciarini
2b1a4ff693 Merge pull request #586 from stripedpajamas/fix-macos-build 2020-12-14 16:28:36 -08:00
Peter Squicciarini
05819c1f79 Update signing to use new path 2020-12-14 14:53:43 -08:00
Peter Squicciarini
4782bb2ead Update other places Darwin arch is mentioned 2020-12-14 14:22:48 -08:00
Peter Squicciarini
3909371fa4 Include arch in Darwin build task 2020-12-14 12:35:53 -08:00
Peter Squicciarini
cb5e22e005 Revert "Add new logo"
This reverts commit e88869bbf4.
2020-11-27 11:22:29 -08:00
Peter Squicciarini
eb45bbea1f Revert "Remake ICNS and ICO files and add missing icons"
This reverts commit 9f92b7f073.
2020-11-27 11:22:15 -08:00
Peter Squicciarini
098bdc3f31 Revert "Fix missing icons"
This reverts commit 14d40ad96f.
2020-11-26 18:10:42 -08:00
Peter Squicciarini
2203dfbf0f Revert "Fix icon padding for Windows icons"
This reverts commit eeedf51ab3.
2020-11-26 18:09:59 -08:00
Peter Squicciarini
0a20f8159a Revert "Fix and future-proof the macOS icon, other fixes"
This reverts commit 46601d6f64.
2020-11-26 18:09:49 -08:00
Peter Squicciarini
e961dde624 Revert "Fix padding"
This reverts commit 22f80b365c.
2020-11-26 18:08:45 -08:00
Peter Squicciarini
16eb6e4c83 Merge pull request #578 from stripedpajamas/fix-action 2020-11-23 12:16:03 -08:00
Peter Squicciarini
bbf621e19f Remove set-env calls from mac action definition 2020-11-19 11:37:55 -08:00
Peter Squicciarini
47ca41068c Remove minor version spec from setup-node action 2020-11-19 11:30:46 -08:00
Peter Squicciarini
7ce133a5c4 Merge pull request #569 from proletarius101/no-replace-product-json
Don't replace product.json in RPM updates
2020-11-19 11:23:50 -08:00
Peter Squicciarini
3a593d2958 Merge pull request #568 from proletarius101/more-proposed-apis
Add more proposed APIs
2020-11-19 11:22:47 -08:00
Peter Squicciarini
e74de8ff37 Merge pull request #565 from binex-dsk/patch-1
update AUR maintainer
2020-11-19 10:43:41 -08:00
proletarius101
2d58d3bd1e Don't replace product.json in RPM updates 2020-11-15 15:45:03 +08:00
proletarius101
90ee5b2d41 Add more proposed APIs 2020-11-15 14:59:00 +08:00
binex
5b825c8bf7 fix the AUR maintainer
narcissism at its finest :)
2020-11-14 04:31:41 -05:00
Peter Squicciarini
bfb4be2930 Merge pull request #553 from tywmick/more-microsoft-replacements
Document more Microsoft online service replacements in "Getting all the Telemetry Out"
2020-10-30 18:30:32 -07:00
Ty Mick
dfb373330c Rearrange section title 2020-10-29 19:03:45 -05:00
Ty Mick
8b978a5a6f Improve code block formatting 2020-10-29 14:38:14 -05:00
Ty Mick
679a8d97b6 Document more Microsoft online service replacements 2020-10-29 14:37:46 -05:00
Peter Squicciarini
e13b9f35ad Merge pull request #543 from weakish/typo
Fix a typo in DOCS
2020-10-26 13:25:26 -07:00
Jang Rush
30d6dfd70a Fix a typo in DOCS 2020-10-24 20:58:39 +08:00
Peter Squicciarini
fa7f150521 Merge pull request #539 from cedricroijakkers/master 2020-10-22 17:29:46 -07:00
Peter Squicciarini
6edd4e85a9 Merge pull request #540 from tywmick/update-api-note
Add note about VSCodium update API to "Getting all the Telemetry Out"
2020-10-22 13:48:23 -07:00
Ty Mick
86e4055bfe Add note about update API to DOCS.md
Also added a comma after "For example" where appropriate.
2020-10-22 14:36:05 -05:00
Cedric Roijakkers
090cf497e2 Added documentation and environment variable SKIP_LINUX_PACKAGES that skips package building since this is not needed in the AUR build. 2020-10-22 14:52:44 +02:00
articlecat
23bd025392 Apply custom-extensions-gallery.patch in prepare_vscode.sh 2020-10-19 06:01:04 -07:00
articlecat
dad2a98413 Add patch for custom extensions gallery
Extend product.ts to accept environment variables for custom extensions gallery URLs
2020-10-19 05:59:14 -07:00
Peter Squicciarini
5ffd1aa4b0 Merge pull request #536 from ferion11/bugfix
bugfix AppImage creation
2020-10-16 21:21:22 -07:00
DanielDevBR
f9c7df01ad bugfix AppImage creation 2020-10-16 22:20:13 -03:00
Peter Squicciarini
a9b505f228 Merge pull request #531 from stripedpajamas/fix-arm
Fix armhf and x64
2020-10-09 10:05:49 -07:00
Peter Squicciarini
3c5eb104f9 Disable AppImage creation since it isn't working in Docker container 2020-10-08 21:29:50 -07:00
Peter Squicciarini
c478ef85c2 Rename arm to armhf and re-enable RPMs 2020-10-08 19:45:03 -07:00
Peter Squicciarini
32583f3bd7 Merge pull request #526 from stripedpajamas/fix-checksums
Add checksumFailMoreInfoUrl to product.json
2020-10-07 13:30:42 -07:00
Peter Squicciarini
ac4bb3f987 Add checksumFailMoreInfoUrl to product.json
Without this property present, VSCode will not show the "Don't show this
again" button when integrity checks fail. This commit fixes #326
2020-10-06 11:09:18 -07:00
Peter Squicciarini
3471de4d49 Merge pull request #525 from stripedpajamas/fix-linux-builds
Fix arm builds
2020-10-06 09:05:26 -07:00
Peter Squicciarini
45af9e614b (experiment) skip GH action env writes in Windows 2020-10-05 21:30:07 -07:00
Peter Squicciarini
9f3136fd35 (experiment) bugfix arm check and skip RPM for arms 2020-10-05 19:48:04 -07:00
Peter Squicciarini
07ec36ff69 (experiment) bugfix matrix 2020-10-05 17:56:54 -07:00
Peter Squicciarini
8c04967b7e (experiment) remove further BUILDARCH branches and s/armhf/arm/ 2020-10-05 17:54:42 -07:00
Peter Squicciarini
1082261042 (experiment) Install Yarn manually 2020-10-05 16:46:22 -07:00
Peter Squicciarini
4c7c82fe06 (experiment) use and try another way of executing scripts 2020-10-05 16:31:17 -07:00
Peter Squicciarini
138269d3cf (experiment) add debug lines 2020-10-05 16:14:45 -07:00
Peter Squicciarini
661608ed6f (experiment) use public Docker images 2020-10-05 15:30:05 -07:00
Peter Squicciarini
6d33f26e3b (experiment) fix matrix setup 2020-10-05 10:21:49 -07:00
Peter Squicciarini
cab264b133 (experiment) use containers for Linux builds 2020-10-05 10:12:28 -07:00
Peter Squicciarini
d199e65310 Merge pull request #517 from CRKatri/master
README.md: Fix AUR maintainer
2020-09-23 15:25:52 -07:00
Cameron Katri
e51b9e5ecd README.md: Fix AUR maintainer 2020-09-23 15:03:32 -04:00
Peter Squicciarini
0a2378dbdc Merge pull request #510 from stripedpajamas/linux-gha
Move Linux builds to GH actions
2020-09-21 17:21:31 -07:00
Peter Squicciarini
a1985c9eb9 (experiment) add cron 2020-09-20 15:28:07 -07:00
Peter Squicciarini
401a51153f (experiment) allow linux arm build to fail bugfix #2 2020-09-20 15:13:24 -07:00
Peter Squicciarini
7797f694da (experiment) allow linux arm build to fail bugfix 2020-09-20 15:08:01 -07:00
Peter Squicciarini
0ce7a3b40a (experiment) allow linux arm build to fail 2020-09-20 15:05:55 -07:00
Peter Squicciarini
a08e243eb1 (experiment) bugfix linux workflow 2020-09-20 14:35:03 -07:00
Peter Squicciarini
b4e9c1dcb6 (experiment) cleanup and move linux builds to GHA 2020-09-20 14:26:06 -07:00
Peter Squicciarini
82fb8829fe Merge pull request #506 from stripedpajamas/fix-mac-build
Fix Mac build + cleanup
2020-09-19 10:32:11 -07:00
Peter Squicciarini
bfe2693d76 (experiment) don't print GH response 2020-09-18 17:11:53 -07:00
Peter Squicciarini
a8d355c276 (experiment) create zip for Linux and remove osx deps from travis 2020-09-18 17:02:52 -07:00
Peter Squicciarini
608edd6776 (experiment) remove -x from check_tags.sh 2020-09-18 16:36:03 -07:00
Peter Squicciarini
f88cffb39f (experiment) use stronger GH token for version update 2020-09-18 16:30:10 -07:00
Peter Squicciarini
a975177d1d (experiment) re-enable everything(?) and remove Mac stuff from Travis 2020-09-18 15:34:07 -07:00
Peter Squicciarini
dacb759766 (experiment) more cleanup 2020-09-18 14:54:45 -07:00
Peter Squicciarini
8b1f6fe734 (experiment) re-enable icons and anti-telemetry 2020-09-18 13:59:41 -07:00
Peter Squicciarini
8c5166cd56 (experiment) re-enable product.json changes 2020-09-18 13:10:28 -07:00
Peter Squicciarini
2c98e24e2d (experiment) get out of vscode 2020-09-18 12:40:54 -07:00
Peter Squicciarini
30fe5197db (experiment) undo that zip change 2020-09-18 11:52:48 -07:00
Peter Squicciarini
266448613e (experiment) disable keep alive 2020-09-18 11:51:36 -07:00
Peter Squicciarini
c92c61a50b (experiment) zip stuff 2020-09-18 10:28:14 -07:00
Peter Squicciarini
fc9c33acf4 (experiment) set scripts-prepend-node-path 2020-09-18 09:23:26 -07:00
Peter Squicciarini
feb979db54 (experiment) set GITHUB_TOKEN env var in build.sh 2020-09-18 06:44:31 -07:00
Peter Squicciarini
e0ac293279 (experiment) set GITHUB_TOKEN env var 2020-09-18 06:01:29 -07:00
Peter Squicciarini
9a046ea3a0 (experiment) set repository according to GH action env var 2020-09-18 05:57:00 -07:00
Peter Squicciarini
137a891882 (experiment) fix quoting 2020-09-18 05:42:37 -07:00
Peter Squicciarini
535861eec8 (experiment) github action 2020-09-18 05:41:04 -07:00
Peter Squicciarini
101bda7072 (experiment) disable changes 2020-09-17 15:31:03 -07:00
Peter Squicciarini
d21ea7de56 (experiment) skip optional deps for mac 2020-09-16 11:45:51 -07:00
Peter Squicciarini
99038981dc (experiment) remove jq double quotes 2020-09-16 11:21:30 -07:00
Peter Squicciarini
15260f4801 (experiment) don't download full repo 2020-09-16 11:18:02 -07:00
Peter Squicciarini
a7a52b02d5 (experiment) remove extra osx from job list 2020-09-16 09:59:41 -07:00
Peter Squicciarini
024c056cf3 (experiment) brew is too slow 2020-09-16 09:59:06 -07:00
Peter Squicciarini
a5782f621b (experiment) manual brew 2020-09-15 23:54:04 -07:00
Peter Squicciarini
2bf1841c64 (experiment) use later version of xcode 2020-09-15 10:45:50 -07:00
Peter Squicciarini
d8f341db38 (experiment) get build order proper 2020-09-15 09:54:37 -07:00
Peter Squicciarini
aae9794677 (experiment) update brew and use it for create-dmg 2020-09-15 09:53:57 -07:00
Peter Squicciarini
96e27cd232 (experiment) small travis yml changes 2020-09-15 09:47:50 -07:00
Peter Squicciarini
6142ac4170 (experiment) add logging and focus on mac only 2020-09-15 09:36:38 -07:00
Peter Squicciarini
1435710c16 (experiment) Use npx for create-dmg 2020-09-14 20:00:16 -07:00
Peter Squicciarini
229274f9c8 (experiment) skip everything that makes vscodium different 2020-09-14 15:33:19 -07:00
Peter Squicciarini
e974e22d99 (experiment) disable mac signing 2020-09-14 11:17:53 -07:00
Peter Squicciarini
a5cc6c090e (experiment) remove hygiene check, it's not for us 2020-09-14 10:13:11 -07:00
Peter Squicciarini
b012b6c1d0 (experiment) remove -reh- tasks; set yarn concurrency 2020-09-14 09:57:19 -07:00
Peter Squicciarini
07ac47b131 (experiment) Lock Node v12.14.1 2020-09-12 07:32:21 -07:00
Peter Squicciarini
27d8a66386 Disable OSX builds (they are broken) 2020-09-12 07:30:18 -07:00
140 changed files with 6053 additions and 3292 deletions

115
.github/workflows/linux.yml vendored Normal file
View File

@@ -0,0 +1,115 @@
name: linux_build
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
push:
pull_request:
branches: [ master ]
jobs:
linux:
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
env:
OS_NAME: 'linux'
VSCODE_ARCH: ${{ matrix.vscode_arch }}
strategy:
fail-fast: false
matrix:
vscode_arch: [x64, arm64, armhf]
include:
- vscode_arch: x64
npm_arch: x64
image: vscodium/vscodium-linux-build-agent:bionic-x64
- vscode_arch: arm64
npm_arch: arm64
image: vscodium/vscodium-linux-build-agent:stretch-arm64
- vscode_arch: armhf
npm_arch: armv7l
image: vscodium/vscodium-linux-build-agent:stretch-armhf
steps:
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v1
with:
node-version: 14
- name: Install Yarn
run: npm install -g yarn
- name: Check PR or cron
run: ./check_cron_or_pr.sh
- name: Clone VSCode repo
run: ./get_repo.sh
- name: Check existing VSCodium tags/releases
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./check_tags.sh
if: env.SHOULD_DEPLOY == 'yes'
- name: Compute cache key
id: yarnCacheKey
run: echo "::set-output name=value::$(node build/azure-pipelines/computeYarnCacheKey.js)"
if: env.SHOULD_BUILD == 'yes'
- name: Get yarn cache directory path
id: yarnCacheDirPath
run: echo "::set-output name=dir::$(yarn cache dir)"
if: env.SHOULD_BUILD == 'yes'
- name: Cache yarn directory
uses: actions/cache@v2
with:
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
key: linux-${{ matrix.npm_arch }}-yarnCacheDir-${{ steps.yarnCacheKey.outputs.value }}
restore-keys: linux-${{ matrix.npm_arch }}-yarnCacheDir-
if: env.SHOULD_BUILD == 'yes'
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
npm_config_arch: ${{ matrix.npm_arch }}
run: ./build.sh
if: env.SHOULD_BUILD == 'yes'
- name: Zip release
run: |
cd VSCode-linux-${VSCODE_ARCH}
tar czf ../VSCodium-linux-${VSCODE_ARCH}-${MS_TAG}.tar.gz .
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
- name: Generate shasums
run: ./sum.sh
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
- name: Release
uses: softprops/action-gh-release@v1
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
with:
tag_name: ${{ env.MS_TAG }}
files: |
./*.sha256
./*.zip
./*.tar.gz
./*.deb
./*.rpm
./VSCodium-*.AppImage
./VSCodium-*.AppImage.zsync
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update versions repo
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
run: ./update_version.sh
env:
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
GITHUB_USERNAME: ${{ github.repository_owner }}

120
.github/workflows/macos.yml vendored Normal file
View File

@@ -0,0 +1,120 @@
name: macos_build
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
push:
pull_request:
branches: [ master ]
jobs:
build:
runs-on: macOS-latest
env:
OS_NAME: "osx"
VSCODE_ARCH: "x64"
steps:
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v1
with:
node-version: 14
- name: Check PR or cron
run: |
. check_cron_or_pr.sh
- name: Clone VSCode repo
run: |
. get_repo.sh
- name: Check existing VSCodium tags/releases
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
. check_tags.sh
if: env.SHOULD_DEPLOY == 'yes'
- name: Compute cache key
id: yarnCacheKey
run: echo "::set-output name=value::$(node build/azure-pipelines/computeYarnCacheKey.js)"
if: env.SHOULD_BUILD == 'yes'
- name: Get yarn cache directory path
id: yarnCacheDirPath
run: echo "::set-output name=dir::$(yarn cache dir)"
if: env.SHOULD_BUILD == 'yes'
- name: Cache yarn directory
uses: actions/cache@v2
with:
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
key: ${{ env.OS_NAME }}-${{ env.VSCODE_ARCH }}-yarnCacheDir-${{ steps.yarnCacheKey.outputs.value }}
restore-keys: ${{ env.OS_NAME }}-${{ env.VSCODE_ARCH }}-yarnCacheDir-
if: env.SHOULD_BUILD == 'yes'
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./build.sh
if: env.SHOULD_BUILD == 'yes'
- name: Sign binary
env:
CERTIFICATE_OSX_P12: ${{ secrets.CERTIFICATE_OSX_P12 }}
CERTIFICATE_OSX_PASSWORD: ${{ secrets.CERTIFICATE_OSX_PASSWORD }}
CERTIFICATE_OSX_ID: ${{ secrets.CERTIFICATE_OSX_ID }}
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
run: |
if [ -d "VSCode-darwin-${VSCODE_ARCH}" ]; then # just in case the build failed
cd "VSCode-darwin-${VSCODE_ARCH}"
export CERTIFICATE_P12=VSCodium.p12
echo $CERTIFICATE_OSX_P12 | base64 --decode > $CERTIFICATE_P12
export KEYCHAIN=build.keychain
security create-keychain -p mysecretpassword $KEYCHAIN
security default-keychain -s $KEYCHAIN
security unlock-keychain -p mysecretpassword $KEYCHAIN
security import $CERTIFICATE_P12 -k $KEYCHAIN -P $CERTIFICATE_OSX_PASSWORD -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword $KEYCHAIN
codesign --deep --force --verbose --sign "$CERTIFICATE_OSX_ID" VSCodium.app
fi
- name: Zip release
run: |
cd "VSCode-darwin-${VSCODE_ARCH}"
zip -r -X -y ../VSCodium-darwin-${VSCODE_ARCH}-${MS_TAG}.zip ./*.app
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
- name: DMG the release
run: |
pushd "VSCode-darwin-${VSCODE_ARCH}"
npx create-dmg VSCodium.app ..
mv "../VSCodium ${MS_TAG}.dmg" "../VSCodium.${VSCODE_ARCH}.${MS_TAG}.dmg"
popd
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
- name: Generate shasums
run: ./sum.sh
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
- name: Release
uses: softprops/action-gh-release@v1
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
with:
tag_name: ${{ env.MS_TAG }}
files: |
./*.zip
./*.dmg
./*.sha256
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update versions repo
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
run: ./update_version.sh
env:
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
GITHUB_USERNAME: ${{ github.repository_owner }}

113
.github/workflows/windows.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
name: windows_build
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
push:
pull_request:
branches: [ master ]
jobs:
windows:
runs-on: windows-2016
env:
VSCODE_ARCH: ${{ matrix.vscode_arch }}
OS_NAME: 'windows'
strategy:
fail-fast: false
matrix:
vscode_arch: [x64, ia32, arm64]
steps:
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v1
with:
node-version: 14
- name: Install Yarn
run: npm install -g yarn
- name: Setup Python 2
uses: actions/setup-python@v2
with:
python-version: '2.x'
- name: Check PR or cron
run: ./check_cron_or_pr.sh
shell: bash
- name: Clone VSCode repo
run: ./get_repo.sh
shell: bash
- name: Check existing VSCodium tags/releases
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./check_tags.sh
shell: bash
if: env.SHOULD_DEPLOY == 'yes'
- name: Compute cache key
id: yarnCacheKey
run: echo "::set-output name=value::$(node build/azure-pipelines/computeYarnCacheKey.js)"
if: env.SHOULD_BUILD == 'yes'
- name: Get yarn cache directory path
id: yarnCacheDirPath
run: echo "::set-output name=dir::$(yarn cache dir)"
if: env.SHOULD_BUILD == 'yes'
- name: Cache yarn directory
uses: actions/cache@v2
with:
path: ${{ steps.yarnCacheDirPath.outputs.dir }}
key: ${{ env.OS_NAME }}-${{ env.VSCODE_ARCH }}-yarnCacheDir-${{ steps.yarnCacheKey.outputs.value }}
restore-keys: ${{ env.OS_NAME }}-${{ env.VSCODE_ARCH }}-yarnCacheDir-
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
shell: bash
if: env.SHOULD_BUILD == 'yes'
- name: Move/rename build artifacts
run: |
mv vscode\\.build\\win32-${VSCODE_ARCH}\\system-setup\\VSCodeSetup.exe VSCodiumSetup-${VSCODE_ARCH}-${MS_TAG}.exe
mv vscode\\.build\\win32-${VSCODE_ARCH}\\user-setup\\VSCodeSetup.exe VSCodiumUserSetup-${VSCODE_ARCH}-${MS_TAG}.exe
mv vscode\\.build\\win32-${VSCODE_ARCH}\\archive\\VSCode-win32-${VSCODE_ARCH}.zip VSCodium-win32-${VSCODE_ARCH}-${MS_TAG}.zip
shell: bash
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
- name: Generate shasums
run: ./sum.sh
shell: bash
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
- name: Release
uses: softprops/action-gh-release@v1
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
with:
tag_name: ${{ env.MS_TAG }}
files: |
./*.sha256
./VSCodium*.zip
./VSCodiumUserSetup*.exe
./VSCodiumSetup*.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update versions repo
if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes'
run: ./update_version.sh
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }}
GITHUB_USERNAME: ${{ github.repository_owner }}

6
.gitignore vendored
View File

@@ -1,2 +1,6 @@
vscode
VS*/*
VS*/*
.DS_Store
out
pkg2appimage-*.AppImage
pkg2appimage.AppDir

View File

@@ -1,57 +0,0 @@
matrix:
include:
- os: linux
sudo: required
env: BUILDARCH=x64
dist: trusty
- os: linux
sudo: required
env: BUILDARCH=arm64
dist: trusty
- os: linux
sudo: required
env: BUILDARCH=arm
dist: trusty
- os: osx
language: node_js
node_js: "12"
before_install:
- curl -o- -L https://yarnpkg.com/install.sh | bash
- export PATH="$HOME/.yarn/bin:$PATH"
- . install_deps.sh
- . get_repo.sh
- . check_tags.sh
script:
- ./build.sh
before_deploy:
- ./sign_mac_app.sh
- ./create_zip.sh
- ./create_dmg.sh
- ./sum.sh
deploy:
provider: releases
skip_cleanup: true
overwrite: true
name: $LATEST_MS_TAG
api_key: $GITHUB_TOKEN
file_glob: true
file:
- ./*.sha256
- ./*.zip
- ./*.tar.gz
- ./*.dmg
- ./*.deb
- ./*.rpm
- ./*.AppImage
- ./*.AppImage.zsync
on:
all_branches: true
condition: $SHOULD_BUILD = yes
after_deploy:
- ./update_version.sh

84
DOCS.md
View File

@@ -3,12 +3,18 @@
## 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 VS Code Marketplace](#howto-vscode-marketplace)
- [Proprietary Debugging Tools](#proprietary-debugging-tools)
- [Proprietary Extensions](#proprietary-extensions)
- [Migrating from Visual Studio Code to VSCodium](#migrating)
- [Sign in with GitHub](#signin-github)
- [How do I run VSCodium in portable mode?](#portable)
- [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)
- [Gentoo overlay/ebuild](#gentoo-overlay)
- [From Linux .tar.gz](#from-linux-targz)
- [How to build VSCodium](https://github.com/VSCodium/vscodium/blob/master/docs/build.md)
## <a id="disable-telemetry"></a>Getting all the Telemetry Out
@@ -26,36 +32,63 @@ It is also highly recommended that you review all the settings that "use online
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.__
__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.)_
_(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
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).
* Modify the `extensionsGallery` section of the `product.json` file in your VSCodium installation to use the VS Code Marketplace as shown below. However, note that [it is not clear whether this is legal](https://github.com/microsoft/vscode/issues/31168).
```
"extensionsGallery": {
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"itemUrl": "https://marketplace.visualstudio.com/items"
}
```
* 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).
See [this article](https://www.gitpod.io/blog/open-vsx/) for more information on the motivation behind Open VSX.
### Proprietary Debugging Tools
### <a id="howto-vscode-marketplace"></a>How to use the VS Code Marketplace
You can switch and use the VS Code marketplace by using the following solutions. However, note that [it is not clear whether this is legal](https://github.com/microsoft/vscode/issues/31168).
With the following environment variables:
- `VSCODE_GALLERY_SERVICE_URL='https://marketplace.visualstudio.com/_apis/public/gallery'`
- `VSCODE_GALLERY_CACHE_URL='https://vscode.blob.core.windows.net/gallery/index'`
- `VSCODE_GALLERY_ITEM_URL='https://marketplace.visualstudio.com/items'`
- `VSCODE_GALLERY_CONTROL_URL=''`
- `VSCODE_GALLERY_RECOMMENDATIONS_URL=''`
Or by creating a custom `product.json` at the following location:
- Windows: `%APPDATA%\VSCodium` or `%USERPROFILE%\AppData\Roaming\VSCodium`
- macOS: `~/Library/Application Support/VSCodium`
- Linux: `$XDG_CONFIG_HOME/VSCodium` or `~/.config/VSCodium`
with the content:
```json
{
"extensionsGallery": {
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
"itemUrl": "https://marketplace.visualstudio.com/items",
"controlUrl": "",
"recommendationsUrl": ""
}
}
```
### <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 offical 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.
### Proprietary Extensions
### <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 the offical 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:
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 offical 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:
```json
"extensionAllowedProposedApi": [
@@ -72,7 +105,7 @@ In some cases, the above change won't help because the extension is hard-coded t
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 the these locations:
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`
@@ -90,6 +123,16 @@ To copy your settings manually:
- 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 of the extension which need 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.
@@ -105,6 +148,7 @@ $ defaults write com.visualstudio.code.oss 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`.
@@ -119,6 +163,8 @@ This allows you to open files or directories in VSCodium directly from your term
Feel free to alias this command to something easier to type in your shell profile (e.g. `alias code=codium`).
## <a id="gentoo-overlay"></a>Gentoo ebuild/overlay
On Linux, when installed with a package manager, `codium` has been installed in your `PATH`.
There is an external Gentoo overlay with a working ebuild to install VSCodium, provided by [@wolviecb](https://github.com/wolviecb/). The overlay can be found [here](https://github.com/wolviecb/overlay).
### <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`.

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2018 Peter Squicciarini
Copyright (c) 2021 Peter Squicciarini
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -2,14 +2,13 @@
<br />
<img src="./src/resources/linux/code.png" alt="VSCodium Logo" width="200"/>
<h1>VSCodium</h1>
<h3>Free/Libre Open Source Software Binaries of VSCode</h3>
<h3>Free/Libre Open Source Software Binaries of VS Code</h3>
</div>
<div id="badges" align="center">
[![current release](https://img.shields.io/github/release/vscodium/vscodium.svg)](https://github.com/vscodium/vscodium/releases)
[![windows_build_status](https://dev.azure.com/vscodium/VSCodium/_apis/build/status/VSCodium.vscodium?branchName=master)](https://dev.azure.com/vscodium/VSCodium/_build?definitionId=1)
[![build status](https://travis-ci.com/VSCodium/vscodium.svg?branch=master)](https://travis-ci.com/VSCodium/vscodium)
[![license](https://img.shields.io/github/license/VSCodium/vscodium.svg)](https://github.com/VSCodium/vscodium/blob/master/LICENSE)
[![Gitter](https://img.shields.io/gitter/room/vscodium/vscodium.svg)](https://gitter.im/VSCodium/Lobby)
[![codium](https://snapcraft.io//codium/badge.svg)](https://snapcraft.io/codium)
@@ -31,7 +30,7 @@
- [Flatpak Option](#flatpak)
- [Why Does This Exist](#why)
- [More Info](#more-info)
- [Supported OS](#supported-os)
- [Supported Platforms](#supported-platforms)
## <a id="download-install"></a>Download/Install
:tada: :tada: [Download latest release here](https://github.com/VSCodium/vscodium/releases) :tada: :tada:
@@ -41,10 +40,10 @@
#### <a id="install-with-brew"></a>Install with Brew (Mac)
If you are on a Mac and have [Homebrew](https://brew.sh/) installed:
```bash
brew cask install vscodium
brew install --cask vscodium
```
_Note for Mac OS X Mojave users: if you see "App can't be opened because Apple cannot check it for malicious software" when opening VSCodium the first time, you can right-click the application and choose Open. This should only be required the first time opening on Mojave._
_Note for Mac macOS Mojave users: if you see "App can't be opened because Apple cannot check it for malicious software" when opening VSCodium the first time, you can right-click the application and choose Open. This should only be required the first time opening on Mojave._
#### <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:
@@ -65,20 +64,20 @@ scoop bucket add extras
scoop install vscodium
```
#### <a id="install-with-snap"></a>Install with snap (Linux)
#### <a id="install-with-snap"></a>Install with snap (GNU/Linux)
VSCodium is available in the [Snap Store](https://snapcraft.io/) as [Codium](https://snapcraft.io/codium), published by the [Snapcrafters](https://github.com/snapcrafters/codium) community.
If your Linux distribution has support for [snaps](https://snapcraft.io/docs/installing-snapd):
If your GNU/Linux distribution has support for [snaps](https://snapcraft.io/docs/installing-snapd):
```bash
snap install codium
snap install codium --classic
```
#### <a id="install-with-package-manager"></a>Install with Package Manager (Linux)
#### <a id="install-with-package-manager"></a>Install with Package Manager (GNU/Linux)
You can always install using the downloads (deb, rpm, tar) on the [releases page](https://github.com/VSCodium/vscodium/releases), but you can also install using your favorite package manager and get automatic updates. [@paulcarroty](https://github.com/paulcarroty) has set up a repository with instructions [here](https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo). Any issues installing VSCodium using your package manager should be directed to that repository's issue tracker.
#### <a id="install-on-arch-linux"></a>Install on Arch Linux
VSCodium is available in [AUR](https://wiki.archlinux.org/index.php/Arch_User_Repository) as package [vscodium-bin](https://aur.archlinux.org/packages/vscodium-bin/), maintained by [@plague-doctor](https://github.com/plague-doctor).
VSCodium is available in [AUR](https://wiki.archlinux.org/index.php/Arch_User_Repository) as package [vscodium-bin](https://aur.archlinux.org/packages/vscodium-bin/), maintained by [@binex-dsk](https://github.com/binex-dsk). An alternative package [vscodium-git](https://aur.archlinux.org/packages/vscodium-git/), maintained by [@cedricroijakkers](https://github.com/cedricroijakkers), is also available should you wish to compile from source yourself.
#### <a id="flatpak"></a>Flatpak Option (Linux)
#### <a id="flatpak"></a>Flatpak Option (GNU/Linux)
VSCodium is (unofficially) available as a Flatpak app [here](https://flathub.org/apps/details/com.vscodium.codium) and the build repo is [here](https://github.com/flathub/com.vscodium.codium). If your distribution has support for [flatpak](https://flathub.org), and you have enabled the [flathub repo](https://flatpak.org/setup/):
```bash
flatpak install flathub com.vscodium.codium
@@ -87,9 +86,9 @@ flatpak run com.vscodium.codium
```
## <a id="why"></a>Why Does This Exist
This repository contains build files to generate free release binaries of Microsoft's VSCode. 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 VS Code. When we speak of "free software", we're talking about freedom, not price.
Microsoft's downloads 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:
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:
> When we [Microsoft] build Visual Studio Code, we do exactly this. We clone the vscode repository, we lay down a customized product.json that has Microsoft specific functionality (telemetry, gallery, logo, etc.), and then produce a build that we release under our license.
>
@@ -97,13 +96,13 @@ Microsoft's downloads of Visual Studio Code are licensed under [this not-FLOSS l
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 VSCode.
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.
Microsoft's build process (which we are running to build the binaries) does download additional files. This was brought up in [Microsoft/vscode#49159](https://github.com/Microsoft/vscode/issues/49159) and [Microsoft/vscode#45978](https://github.com/Microsoft/vscode/issues/45978). These are the packages downloaded during build:
- Extensions from the Microsoft Marketplace:
- ms-vscode.node-debug2
- ms-vscode.node-debug
- [ms-vscode.node-debug2](https://marketplace.visualstudio.com/items?itemName=ms-vscode.node-debug2)
- [ms-vscode.node-debug](https://marketplace.visualstudio.com/items?itemName=ms-vscode.node-debug)
- From [Electron releases](https://github.com/electron/electron/releases) (using [gulp-atom-electron](https://github.com/joaomoreno/gulp-atom-electron))
- electron
- ffmpeg
@@ -119,18 +118,21 @@ According to the VS Code Marketplace [Terms of Use](https://aka.ms/vsmarketplace
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.md#proprietary-debugging-tools) on the Docs page for what's been found so far and possible workarounds.
### How are the VSCodium binaries built?
If you would like to see the commands we run to build `vscode` into VSCodium binaries, have a look at the [`.travis.yml` file](https://github.com/VSCodium/vscodium/blob/master/.travis.yml) (for Linux and OS X builds) and the [`win32-build.yml` file](https://github.com/VSCodium/vscodium/blob/master/win32-build.yml) (for Windows builds). These build files call all the other scripts in the repo. If you find something that doesn't make sense, feel free to ask about it [on Gitter](https://gitter.im/VSCodium/Lobby).
If you would like to see the commands we run to build `vscode` into VSCodium binaries, have a look at the workflow files in `.github/workflows` for Windows, GNU/Linux and macOS. These build files call all the other scripts in the repo. If you find something that doesn't make sense, feel free to ask about it [on Gitter](https://gitter.im/VSCodium/Lobby).
The builds are run every day, but exit early if there isn't a new release from Microsoft. To examine the build logs, go [here for Linux / OS X](https://travis-ci.com/VSCodium/vscodium) and [here for Windows](https://dev.azure.com/vscodium/VSCodium/_build?definitionId=1)
The builds are run every day, but exit early if there isn't a new release from Microsoft.
## <a id="supported-os"></a>Supported OS
- [x] OS X (`zip`, `dmg`)
- [x] Linux x64 (`deb`, `rpm`, `AppImage`, `tar.gz`)
- [x] Linux x86 (`deb`, `rpm`, `tar.gz`) ([up to v1.35.1](https://code.visualstudio.com/updates/v1_36#_linux-32bit-support-ends))
- [x] Linux arm64 (`deb`, `tar.gz`)
- [x] Linux armhf (`deb`, `tar.gz`)
- [x] Windows x64
- [x] Windows x86
## <a id="supported-platforms"></a>Supported Platforms
The minimal version is limitted by the core component Electron, you may want to check its [supported platform list](https://www.electronjs.org/docs/tutorial/support#supported-platforms).
- [x] macOS (`zip`, `dmg`) OS X 10.10 or newer x64
- [x] macOS (`zip`, `dmg`) macOS 11.0 or newer arm64 via x64 emulation, see [status issue](https://github.com/VSCodium/vscodium/issues/597)
- [x] GNU/Linux x64 (`deb`, `rpm`, `AppImage`, `tar.gz`)
- [x] GNU/Linux x86 (`deb`, `rpm`, `tar.gz`) ([up to v1.35.1](https://code.visualstudio.com/updates/v1_36#_linux-32bit-support-ends))
- [x] GNU/Linux arm64 (`deb`, `tar.gz`)
- [x] GNU/Linux armhf (`deb`, `tar.gz`)
- [x] Windows 7 or newer x64
- [x] Windows 7 or newer x86
- [x] Windows 10 arm64
## <a id="donate"></a>Donate
If you would like to support the development of VSCodium, feel free to send BTC to `3PgjE95yzBDTrSPxPiqoxSgZFuKPPAix1N`.
@@ -140,4 +142,4 @@ Special thanks to:
- @jaredreich for the previous logo
## <a id="license"></a>License
MIT
[MIT](https://github.com/VSCodium/vscodium/blob/master/LICENSE)

View File

@@ -22,11 +22,23 @@ ingredients:
script:
- sed -i -e 's|/usr/share/pixmaps/||g' usr/share/applications/codium.desktop
- cp usr/share/applications/codium.desktop .
- cp usr/share/pixmaps/vscodium.png vscodium.png
- convert vscodium.png -resize 512x512 usr/share/icons/hicolor/512x512/apps/vscodium.png
- convert vscodium.png -resize 256x256 usr/share/icons/hicolor/256x256/apps/vscodium.png
- convert vscodium.png -resize 128x128 usr/share/icons/hicolor/128x128/apps/vscodium.png
- convert vscodium.png -resize 64x64 usr/share/icons/hicolor/64x64/apps/vscodium.png
- convert vscodium.png -resize 48x48 usr/share/icons/hicolor/48x48/apps/vscodium.png
- convert vscodium.png -resize 32x32 usr/share/icons/hicolor/32x32/apps/vscodium.png
- cp usr/share/pixmaps/vscodium.png .
- /usr/bin/convert vscodium.png -resize 512x512 usr/share/icons/hicolor/512x512/apps/vscodium.png
- /usr/bin/convert vscodium.png -resize 256x256 usr/share/icons/hicolor/256x256/apps/vscodium.png
- /usr/bin/convert vscodium.png -resize 128x128 usr/share/icons/hicolor/128x128/apps/vscodium.png
- /usr/bin/convert vscodium.png -resize 64x64 usr/share/icons/hicolor/64x64/apps/vscodium.png
- /usr/bin/convert vscodium.png -resize 48x48 usr/share/icons/hicolor/48x48/apps/vscodium.png
- /usr/bin/convert vscodium.png -resize 32x32 usr/share/icons/hicolor/32x32/apps/vscodium.png
- ( cd usr/bin/ ; ln -s ../share/codium/codium . )
- cat > AppRun <<\EOF
- #!/bin/sh
- HERE="$(dirname "$(readlink -f "${0}")")"
- export PATH="${HERE}"/usr/bin/:"${HERE}"/usr/sbin/:"${HERE}"/usr/games/:"${HERE}"/bin/:"${HERE}"/sbin/:"${PATH}"
- export LD_LIBRARY_PATH="${HERE}"/usr/lib/:"${HERE}"/usr/lib/i386-linux-gnu/:"${HERE}"/usr/lib/x86_64-linux-gnu/:"${HERE}"/usr/lib32/:"${HERE}"/usr/lib64/:"${HERE}"/lib/:"${HERE}"/lib/i386-linux-gnu/:"${HERE}"/lib/x86_64-linux-gnu/:"${HERE}"/lib32/:"${HERE}"/lib64/:"${LD_LIBRARY_PATH}"
- export XDG_DATA_DIRS="${HERE}"/usr/share/:"${XDG_DATA_DIRS}"
- export PERLLIB="${HERE}"/usr/share/perl5/:"${HERE}"/usr/lib/perl5/:"${PERLLIB}"
- export GSETTINGS_SCHEMA_DIR="${HERE}"/usr/share/glib-2.0/schemas/:"${GSETTINGS_SCHEMA_DIR}"
- export QT_PLUGIN_PATH="${HERE}"/usr/lib/qt4/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib32/qt4/plugins/:"${HERE}"/usr/lib64/qt4/plugins/:"${HERE}"/usr/lib/qt5/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib32/qt5/plugins/:"${HERE}"/usr/lib64/qt5/plugins/:"${QT_PLUGIN_PATH}"
- EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2- | sed -e 's|%.||g')
- exec ${EXEC} "$@"
- EOF

View File

@@ -1,16 +0,0 @@
jobs:
- job: Windows
pool:
vmImage: VS2017-Win2016
variables:
BUILDARCH: x64
steps:
- template: win32-build.yml
- job: Windows32
pool:
vmImage: VS2017-Win2016
variables:
BUILDARCH: ia32
steps:
- template: win32-build.yml

View File

@@ -1,78 +1,42 @@
#!/bin/bash
function keep_alive_small() {
while true; do
echo .
read -t 60 < /proc/self/fd/1 > /dev/null 2>&1
done
}
function keep_alive() {
while true; do
date
sleep 60
done
}
set -ex
if [[ "$SHOULD_BUILD" == "yes" ]]; then
export BUILD_SOURCEVERSION=$LATEST_MS_COMMIT
echo "LATEST_MS_COMMIT: ${LATEST_MS_COMMIT}"
echo "BUILD_SOURCEVERSION: ${BUILD_SOURCEVERSION}"
npm config set scripts-prepend-node-path true
export npm_config_arch="$BUILDARCH"
export npm_config_target_arch="$BUILDARCH"
echo "MS_COMMIT: ${MS_COMMIT}"
./prepare_vscode.sh
. prepare_vscode.sh
cd vscode || exit
export NODE_ENV=production
# these tasks are very slow, so using a keep alive to keep travis alive
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
keep_alive_small &
else
keep_alive &
fi
KA_PID=$!
yarn monaco-compile-check
yarn valid-layers-check
yarn gulp compile-build
yarn gulp compile-extension-media
yarn gulp compile-extensions-build
yarn gulp minify-vscode
yarn gulp minify-vscode-reh
yarn gulp minify-vscode-reh-web
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
npm install --global create-dmg
yarn gulp vscode-darwin-min-ci
yarn gulp vscode-reh-darwin-min-ci
yarn gulp vscode-reh-web-darwin-min-ci
elif [[ "$CI_WINDOWS" == "True" ]]; then
if [[ "$OS_NAME" == "osx" ]]; then
yarn gulp "vscode-darwin-${VSCODE_ARCH}-min-ci"
elif [[ "$OS_NAME" == "windows" ]]; then
cp LICENSE.txt LICENSE.rtf # windows build expects rtf license
yarn gulp "vscode-win32-${BUILDARCH}-min-ci"
yarn gulp "vscode-reh-win32-${BUILDARCH}-min-ci"
yarn gulp "vscode-reh-web-win32-${BUILDARCH}-min-ci"
yarn gulp "vscode-win32-${BUILDARCH}-code-helper"
yarn gulp "vscode-win32-${BUILDARCH}-inno-updater"
yarn gulp "vscode-win32-${BUILDARCH}-archive"
yarn gulp "vscode-win32-${BUILDARCH}-system-setup"
yarn gulp "vscode-win32-${BUILDARCH}-user-setup"
yarn gulp "vscode-win32-${VSCODE_ARCH}-min-ci"
yarn gulp "vscode-win32-${VSCODE_ARCH}-code-helper"
yarn gulp "vscode-win32-${VSCODE_ARCH}-inno-updater"
yarn gulp "vscode-win32-${VSCODE_ARCH}-archive"
yarn gulp "vscode-win32-${VSCODE_ARCH}-system-setup"
yarn gulp "vscode-win32-${VSCODE_ARCH}-user-setup"
else # linux
yarn gulp vscode-linux-${BUILDARCH}-min-ci
yarn gulp vscode-reh-linux-${BUILDARCH}-min-ci
yarn gulp vscode-reh-web-linux-${BUILDARCH}-min-ci
yarn gulp "vscode-linux-${BUILDARCH}-build-deb"
if [[ "$BUILDARCH" == "x64" ]]; then
yarn gulp "vscode-linux-${BUILDARCH}-build-rpm"
yarn gulp "vscode-linux-${VSCODE_ARCH}-min-ci"
if [[ "$SKIP_LINUX_PACKAGES" != "True" ]]; then
yarn gulp "vscode-linux-${VSCODE_ARCH}-build-deb"
yarn gulp "vscode-linux-${VSCODE_ARCH}-build-rpm"
. ../create_appimage.sh
fi
. ../create_appimage.sh
fi
kill $KA_PID
cd ..
fi

View File

@@ -0,0 +1,24 @@
const fs = require("fs");
const crypto = require("crypto");
const path = require("path");
const { dirs } = require('../../vscode/build/npm/dirs');
const ROOT = path.join(__dirname, '../../vscode');
const shasum = crypto.createHash('sha1');
shasum.update(fs.readFileSync(path.join(ROOT, '.yarnrc')));
shasum.update(fs.readFileSync(path.join(ROOT, 'remote/.yarnrc')));
// Add `yarn.lock` files
for (let dir of dirs) {
const yarnLockPath = path.join(ROOT, dir, 'yarn.lock');
shasum.update(fs.readFileSync(yarnLockPath));
}
// Add any other command line arguments
for (let i = 2; i < process.argv.length; i++) {
shasum.update(process.argv[i]);
}
process.stdout.write(shasum.digest('hex'));

8
build/build_linux.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
rm -rf VSCode*
rm -rf vscode
./get_repo.sh
SHOULD_BUILD=yes CI_BUILD=no OS_NAME=linux VSCODE_ARCH=x64 ./build.sh

8
build/build_macos.sh Executable file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
rm -rf VSCode*
rm -rf vscode
. get_repo.sh
SHOULD_BUILD=yes CI_BUILD=no OS_NAME=osx VSCODE_ARCH=x64 . build.sh

15
build/build_windows.ps1 Executable file
View File

@@ -0,0 +1,15 @@
# powershell -ExecutionPolicy ByPass -File .\build\build_windows.ps1
# first so `bash` is the one installed with `git`, avoid conflict with WSL
$env:Path = "C:\Program Files\Git\bin;" + $env:Path
Remove-Item -Recurse -Force VSCode*
bash ./get_repo.sh
$Env:SHOULD_BUILD = 'yes'
$Env:CI_BUILD = 'no'
$Env:OS_NAME = 'windows'
$Env:VSCODE_ARCH = 'x64'
bash ./build.sh

10
build/build_windows.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
# to run with WSL: wsl ./build/build_windows.sh
rm -rf VSCode*
rm -rf vscode
./get_repo.sh
SHOULD_BUILD=yes CI_BUILD=no OS_NAME=windows VSCODE_ARCH=x64 ./build.sh

24
check_cron_or_pr.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
set -e
if [[ $GITHUB_EVENT_NAME == "pull_request" ]]; then
echo "It's a PR"
export SHOULD_BUILD="yes"
export SHOULD_DEPLOY="no"
elif [[ $GITHUB_EVENT_NAME == "push" ]]; then
echo "It's a Push"
export SHOULD_BUILD="yes"
export SHOULD_DEPLOY="no"
else
echo "It's a cron"
export SHOULD_DEPLOY="yes"
fi
if [[ $GITHUB_ENV ]]; then
echo "SHOULD_BUILD=$SHOULD_BUILD" >> $GITHUB_ENV
echo "SHOULD_DEPLOY=$SHOULD_DEPLOY" >> $GITHUB_ENV
fi

View File

@@ -1,38 +0,0 @@
echo "tag: $env:LATEST_MS_TAG"
$REPO_URI = [uri]$env:BUILD_REPOSITORY_URI
$USER_REPO = $REPO_URI."LocalPath"
echo $USER_REPO
$GITHUB_RESPONSE = curl.exe -s -H "Authorization: token $env:MAPPED_GITHUB_TOKEN" "https://api.github.com/repos$USER_REPO/releases/tags/$env:LATEST_MS_TAG"
echo "Github response: ${GITHUB_RESPONSE}"
$VSCODIUM_ASSETS = $GITHUB_RESPONSE | jq '.assets'
echo "VSCodium assets: ${VSCODIUM_ASSETS}"
# if we just don't have the github token, get out fast
if (!$env:MAPPED_GITHUB_TOKEN -or $env:MAPPED_GITHUB_TOKEN -like "*GITHUB_TOKEN*") {
echo "This build does not have the GH token"
echo $env:MAPPED_GITHUB_TOKEN
return
}
if ($VSCODIUM_ASSETS -eq "null" -or !$VSCODIUM_ASSETS) {
echo "Release assets do not exist at all, continuing build"
$SHOULD_BUILD = 'yes'
} else {
$WindowsAssets = ($VSCODIUM_ASSETS | ConvertFrom-Json) | Where-Object { $_.name.Contains('exe') }
$SYSTEM_SETUP = $WindowsAssets | Where-Object { $_.name.Contains('Setup') }
$USER_SETUP = $WindowsAssets | Where-Object { $_.name.Contains('User') }
if (!$SYSTEM_SETUP) {
echo "Building on Windows because we have no system-setup.exe";
$SHOULD_BUILD = 'yes'
}
elseif (!$USER_SETUP) {
echo "Building on Windows because we have no user-setup.exe";
$SHOULD_BUILD = 'yes'
}
else {
echo "Already have all the Windows builds"
}
}
Write-Host "##vso[task.setvariable variable=SHOULD_BUILD]$SHOULD_BUILD"

View File

@@ -1,84 +1,133 @@
#!/bin/bash
REPOSITORY=${TRAVIS_REPO_SLUG:-"VSCodium/vscodium"}
GITHUB_RESPONSE=$(curl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/repos/$REPOSITORY/releases/tags/$LATEST_MS_TAG)
echo "Github response: ${GITHUB_RESPONSE}"
set -e
REPOSITORY=${GITHUB_REPOSITORY:-"VSCodium/vscodium"}
GITHUB_RESPONSE=$(curl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/repos/$REPOSITORY/releases/tags/$MS_TAG)
VSCODIUM_ASSETS=$(echo $GITHUB_RESPONSE | jq '.assets')
echo "VSCodium assets: ${VSCODIUM_ASSETS}"
# if we just don't have the github token, get out fast
if [ "$GITHUB_TOKEN" != "" ]; then
if [ "$VSCODIUM_ASSETS" != "null" ]; then
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
HAVE_MAC=$(echo $VSCODIUM_ASSETS | jq --arg suffix "darwin-$LATEST_MS_TAG.zip" 'map(.name) | contains([$suffix])')
if [[ "$OS_NAME" == "osx" ]]; then
HAVE_MAC=$(echo $VSCODIUM_ASSETS | jq --arg suffix "darwin-$VSCODE_ARCH-$MS_TAG.zip" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_MAC" != "true" ]]; then
echo "Building on Mac because we have no ZIP"
export SHOULD_BUILD="yes"
fi
elif [[ $BUILDARCH == "arm64" ]]; then
# HAVE_ARM64_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["arm64.rpm"])')
HAVE_ARM64_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["arm64.deb"])')
HAVE_ARM64_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "arm64-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
# if [[ "$HAVE_ARM64_RPM" != "true" ]]; then
# echo "Building on Linux arm64 because we have no RPM"
# export SHOULD_BUILD="yes"
# fi
if [[ "$HAVE_ARM64_DEB" != "true" ]]; then
echo "Building on Linux arm64 because we have no DEB"
export SHOULD_BUILD="yes"
elif [[ "$OS_NAME" == "windows" ]]; then
if [[ $VSCODE_ARCH == "arm64" ]]; then
HAVE_ARM64_SYS=$(echo $VSCODIUM_ASSETS | jq --arg suffix "VSCodiumSetup-$VSCODE_ARCH-$MS_TAG.exe" 'map(.name) | contains([$suffix])')
HAVE_ARM64_USR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "UserSetup-$VSCODE_ARCH-$MS_TAG.exe" 'map(.name) | contains([$suffix])')
HAVE_ARM64_ZIP=$(echo $VSCODIUM_ASSETS | jq --arg suffix "win32-$VSCODE_ARCH-$MS_TAG.zip" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_ARM64_SYS" != "true" ]]; then
echo "Building on Windows arm64 because we have no system setup"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_ARM64_USR" != "true" ]]; then
echo "Building on Windows arm64 because we have no user setup"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_ARM64_ZIP" != "true" ]]; then
echo "Building on Windows arm64 because we have no zip"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Windows arm64 builds"
fi
elif [[ $VSCODE_ARCH == "ia32" ]]; then
HAVE_IA32_SYS=$(echo $VSCODIUM_ASSETS | jq --arg suffix "VSCodiumSetup-$VSCODE_ARCH-$MS_TAG.exe" 'map(.name) | contains([$suffix])')
HAVE_IA32_USR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "UserSetup-$VSCODE_ARCH-$MS_TAG.exe" 'map(.name) | contains([$suffix])')
HAVE_IA32_ZIP=$(echo $VSCODIUM_ASSETS | jq --arg suffix "win32-$VSCODE_ARCH-$MS_TAG.zip" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_IA32_SYS" != "true" ]]; then
echo "Building on Windows ia32 because we have no system setup"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_IA32_USR" != "true" ]]; then
echo "Building on Windows ia32 because we have no user setup"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_IA32_ZIP" != "true" ]]; then
echo "Building on Windows ia32 because we have no zip"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Windows ia32 builds"
fi
else # Windows x64
HAVE_X64_SYS=$(echo $VSCODIUM_ASSETS | jq --arg suffix "VSCodiumSetup-$VSCODE_ARCH-$MS_TAG.exe" 'map(.name) | contains([$suffix])')
HAVE_X64_USR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "UserSetup-$VSCODE_ARCH-$MS_TAG.exe" 'map(.name) | contains([$suffix])')
HAVE_X64_ZIP=$(echo $VSCODIUM_ASSETS | jq --arg suffix "win32-$VSCODE_ARCH-$MS_TAG.zip" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_X64_SYS" != "true" ]]; then
echo "Building on Windows x64 because we have no system setup"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_X64_USR" != "true" ]]; then
echo "Building on Windows x64 because we have no user setup"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_X64_ZIP" != "true" ]]; then
echo "Building on Windows x64 because we have no zip"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Windows x64 builds"
fi
fi
if [[ "$HAVE_ARM64_TAR" != "true" ]]; then
echo "Building on Linux arm64 because we have no TAR"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Linux arm64 builds"
fi
elif [[ $BUILDARCH == "arm" ]]; then
HAVE_ARM_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["armhf.deb"])')
HAVE_ARM_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "arm-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_ARM_DEB" != "true" ]]; then
echo "Building on Linux arm because we have no DEB"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_ARM_TAR" != "true" ]]; then
echo "Building on Linux arm because we have no TAR"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Linux arm builds"
fi
else
HAVE_64_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["x86_64.rpm"])')
HAVE_64_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["amd64.deb"])')
HAVE_64_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "x64-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_64_RPM" != "true" ]]; then
echo "Building on Linux x64 because we have no RPM"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_64_DEB" != "true" ]]; then
echo "Building on Linux x64 because we have no DEB"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_64_TAR" != "true" ]]; then
echo "Building on Linux x64 because we have no TAR"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Linux x64 builds"
elif [[ "$OS_NAME" == "linux" ]]; then
if [[ $VSCODE_ARCH == "arm64" ]]; then
HAVE_ARM64_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["arm64.deb"])')
HAVE_ARM64_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "arm64-$MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_ARM64_DEB" != "true" ]]; then
echo "Building on Linux arm64 because we have no DEB"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_ARM64_TAR" != "true" ]]; then
echo "Building on Linux arm64 because we have no TAR"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Linux arm64 builds"
fi
elif [[ $VSCODE_ARCH == "armhf" ]]; then
HAVE_ARM_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["armhf.deb"])')
HAVE_ARM_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "armhf-$MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_ARM_DEB" != "true" ]]; then
echo "Building on Linux arm because we have no DEB"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_ARM_TAR" != "true" ]]; then
echo "Building on Linux arm because we have no TAR"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Linux arm builds"
fi
else # Linux x64
HAVE_64_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["x86_64.rpm"])')
HAVE_64_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["amd64.deb"])')
HAVE_64_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "x64-$MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
if [[ "$HAVE_64_RPM" != "true" ]]; then
echo "Building on Linux x64 because we have no RPM"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_64_DEB" != "true" ]]; then
echo "Building on Linux x64 because we have no DEB"
export SHOULD_BUILD="yes"
fi
if [[ "$HAVE_64_TAR" != "true" ]]; then
echo "Building on Linux x64 because we have no TAR"
export SHOULD_BUILD="yes"
fi
if [[ "$SHOULD_BUILD" != "yes" ]]; then
echo "Already have all the Linux x64 builds"
fi
fi
fi
else
echo "Release assets do not exist at all, continuing build"
export SHOULD_BUILD="yes"
fi
if git rev-parse $LATEST_MS_TAG >/dev/null 2>&1
then
export TRAVIS_TAG=$LATEST_MS_TAG
else
git config --local user.name "Travis CI"
git config --local user.email "builds@travis-ci.com"
git tag $LATEST_MS_TAG
fi
fi
echo "SHOULD_BUILD=$SHOULD_BUILD" >> $GITHUB_ENV

View File

@@ -1,9 +1,20 @@
#!/bin/bash
if [[ "$BUILDARCH" == "x64" ]]; then
# install a dep needed for this process
sudo apt-get install desktop-file-utils
cd ..
bash -e src/resources/linux/appimage/pkg2appimage VSCodium-AppImage-Recipe.yml
cd ..
if [[ "$VSCODE_ARCH" == "x64" ]]; then
wget -c https://github.com/$(wget -q https://github.com/AppImage/pkg2appimage/releases -O - | grep "pkg2appimage-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2)
chmod +x ./pkg2appimage-*.AppImage
./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
# remove check so build in docker can succeed
sed -i 's/grep docker/# grep docker/' pkg2appimage.AppDir/usr/share/pkg2appimage/functions.sh
bash -ex pkg2appimage.AppDir/AppRun VSCodium-AppImage-Recipe.yml
fi
cd vscode

View File

@@ -1,9 +0,0 @@
#!/bin/bash
if [[ "$SHOULD_BUILD" == "yes" ]]; then
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
cd VSCode-darwin
create-dmg VSCodium.app ..
mv "../VSCodium ${LATEST_MS_TAG}.dmg" "../VSCodium.${LATEST_MS_TAG}.dmg"
fi
cd ..
fi

View File

@@ -1,13 +0,0 @@
#!/bin/bash
if [[ "$SHOULD_BUILD" == "yes" ]]; then
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
cd VSCode-darwin
zip -r -X -y ../VSCodium-darwin-${LATEST_MS_TAG}.zip ./*.app
else
cd VSCode-linux-${BUILDARCH}
tar czf ../VSCodium-linux-${BUILDARCH}-${LATEST_MS_TAG}.tar.gz .
fi
cd ..
fi

71
docs/build.md Normal file
View File

@@ -0,0 +1,71 @@
# Build
## Table of Contents
- [Dependencies](#dependencies)
- [Linux](#dependencies-linux)
- [MacOS](#dependencies-macos)
- [Windows](#dependencies-windows)
- [Build Scripts](#build-scripts)
- [Build in Docker](#build-docker)
## <a id="dependencies"></a>Dependencies
- node 14
- yarn
- jq
- git
### <a id="dependencies-linux"></a>Linux
- libx11-dev
- libxkbfile-dev
- libsecret-1-dev
- fakeroot
- rpm
- rpmbuild
- dpkg
### <a id="dependencies-macos"></a>MacOS
### <a id="dependencies-windows"></a>Windows
- powershell
- sed
## <a id="build-scripts"></a>Build Scripts
Each platform has its build helper script in the directory `build`.
- Linux: `./build/build_linux.sh`
- MacOS: `./build/build_macos.sh`
- Windows: `powershell -ExecutionPolicy ByPass -File .\build\build_windows.ps1`
## <a id="build-docker"></a>Build in Docker
To build for Linux, you can alternatively build VSCodium in docker
Firstly, create the container with:
```
docker run -ti --volume=<local vscodium source>:/root/vscodium --name=vscodium-build-agent vscodium/vscodium-linux-build-agent:bionic-x64 bash
```
When inside the container, you can use the following commands to build:
```
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs desktop-file-utils
npm install -g yarn
git clone https://github.com/VSCodium/vscodium.git
cd vscodium
./get_repo.sh
export SHOULD_BUILD=yes
export OS_NAME=linux
export VSCODE_ARCH=x64
./build.sh
```

View File

@@ -1,15 +1,44 @@
#!/bin/bash
if [ -d vscode ]; then
cd vscode
git fetch --all
mkdir -p vscode
cd vscode
git init -q
git remote add origin https://github.com/Microsoft/vscode.git
# figure out latest tag by calling MS update API
if [ "$INSIDER" == "1" ]; then
UPDATE_INFO=$(curl https://update.code.visualstudio.com/api/update/darwin/insider/lol)
export MS_COMMIT=$(echo $UPDATE_INFO | jq -r '.version')
export MS_TAG=$(echo $UPDATE_INFO | jq -r '.name')
elif [[ -z "${MS_TAG}" ]]; then
UPDATE_INFO=$(curl https://update.code.visualstudio.com/api/update/darwin/stable/lol)
export MS_COMMIT=$(echo $UPDATE_INFO | jq -r '.version')
export MS_TAG=$(echo $UPDATE_INFO | jq -r '.name')
else
git clone https://github.com/Microsoft/vscode.git
cd vscode
reference=$( git ls-remote --tags | grep -x ".*refs\/tags\/${MS_TAG}" | head -1 )
if [[ -z "${reference}" ]]; then
echo "The following tag can't be found: ${MS_TAG}"
exit 1
elif [[ "${reference}" =~ ^([[:alnum:]]+)[[:space:]]+refs\/tags\/([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
export MS_COMMIT="${BASH_REMATCH[1]}"
export MS_TAG="${BASH_REMATCH[2]}"
else
echo "The following reference can't be parsed: ${reference}"
exit 1
fi
fi
export LATEST_MS_COMMIT=$(git rev-list --tags --max-count=1)
export LATEST_MS_TAG=$(git describe --tags ${LATEST_MS_COMMIT})
echo "Got the latest MS tag: ${LATEST_MS_TAG}"
git checkout $LATEST_MS_TAG
echo "Got the MS tag: ${MS_TAG} version: ${MS_COMMIT}"
git fetch --depth 1 origin $MS_COMMIT
git checkout FETCH_HEAD
cd ..
# for GH actions
if [[ $GITHUB_ENV ]]; then
echo "MS_TAG=$MS_TAG" >> $GITHUB_ENV
echo "MS_COMMIT=$MS_COMMIT" >> $GITHUB_ENV
fi

143
icons/build_icons.sh Executable file
View File

@@ -0,0 +1,143 @@
#!/usr/bin/env bash
set -e
# DEBUG
# set -o xtrace
check_programs() {
for arg in "$@"
do
if ! command -v $arg >/dev/null 2>&1
then
echo "$arg could not be found"
exit
fi
done
}
check_programs "icns2png" "composite" "convert" "png2icns" "icotool"
SRC_PREFIX=""
VSCODE_PREFIX=""
build_darwin_types() {
for file in ${VSCODE_PREFIX}vscode/resources/darwin/*
do
if [ -f "$file" ]; then
name=$(basename $file '.icns')
if [[ $name != 'code' ]] && [ ! -f "${SRC_PREFIX}src/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 icons/code_darwin.png "$name.png" "$name.png"
convert "$name.png" -resize 256x256 "${name}_256.png"
png2icns "${SRC_PREFIX}src/resources/darwin/$name.icns" "$name.png" "${name}_256.png"
rm "${name}_512x512x32.png" "$name.png" "${name}_256.png"
fi
fi
done
}
build_darwin_main() {
if [ ! -f "${SRC_PREFIX}src/resources/darwin/code.icns" ]; then
convert "${SRC_PREFIX}src/resources/linux/code.png" -resize 512x512 code_512.png
convert "${SRC_PREFIX}src/resources/linux/code.png" -resize 256x256 code_256.png
convert "${SRC_PREFIX}src/resources/linux/code.png" -resize 128x128 code_128.png
png2icns "${SRC_PREFIX}src/resources/darwin/code.icns" code_512.png code_256.png code_128.png
rm code_512.png code_256.png code_128.png
fi
}
build_win32() {
for file in ${VSCODE_PREFIX}vscode/resources/win32/*.ico
do
if [ -f "$file" ]; then
name=$(basename $file '.ico')
if [[ $name != 'code' ]] && [ ! -f "${SRC_PREFIX}src/resources/win32/$name.ico" ]; then
icotool -x -w 256 $file
composite -geometry +150+185 icons/code_64.png "${name}_9_256x256x32.png" "${name}.png"
convert "${name}.png" -define icon:auto-resize=256,128,96,64,48,32,24,20,16 "${SRC_PREFIX}src/resources/win32/$name.ico"
rm "${name}_9_256x256x32.png" "${name}.png"
fi
fi
done
if [ ! -f "${SRC_PREFIX}src/resources/win32/code.ico" ]; then
convert "${SRC_PREFIX}src/resources/linux/code.png" -define icon:auto-resize=256,128,96,64,48,32,24,20,16 "${SRC_PREFIX}src/resources/win32/code.ico"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-big-100.bmp" ]; then
convert -size 164x314 xc:white "${SRC_PREFIX}src/resources/win32/inno-big-100.bmp"
composite -size 126x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-big-100.bmp" "${SRC_PREFIX}src/resources/win32/inno-big-100.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-big-125.bmp" ]; then
convert -size 192x386 xc:white "${SRC_PREFIX}src/resources/win32/inno-big-125.bmp"
composite -size 147x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-big-125.bmp" "${SRC_PREFIX}src/resources/win32/inno-big-125.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-big-150.bmp" ]; then
convert -size 246x459 xc:white "${SRC_PREFIX}src/resources/win32/inno-big-150.bmp"
composite -size 190x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-big-150.bmp" "${SRC_PREFIX}src/resources/win32/inno-big-150.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-big-175.bmp" ]; then
convert -size 273x556 xc:white "${SRC_PREFIX}src/resources/win32/inno-big-175.bmp"
composite -size 211x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-big-175.bmp" "${SRC_PREFIX}src/resources/win32/inno-big-175.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-big-200.bmp" ]; then
convert -size 328x604 xc:white "${SRC_PREFIX}src/resources/win32/inno-big-200.bmp"
composite -size 255x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-big-200.bmp" "${SRC_PREFIX}src/resources/win32/inno-big-200.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-big-225.bmp" ]; then
convert -size 355x700 xc:white "${SRC_PREFIX}src/resources/win32/inno-big-225.bmp"
composite -size 273x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-big-225.bmp" "${SRC_PREFIX}src/resources/win32/inno-big-225.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-big-250.bmp" ]; then
convert -size 410x797 xc:white "${SRC_PREFIX}src/resources/win32/inno-big-250.bmp"
composite -size 317x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-big-250.bmp" "${SRC_PREFIX}src/resources/win32/inno-big-250.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-small-100.bmp" ]; then
convert -size 55x55 xc:white "${SRC_PREFIX}src/resources/win32/inno-small-100.bmp"
composite -size 44x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-small-100.bmp" "${SRC_PREFIX}src/resources/win32/inno-small-100.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-small-125.bmp" ]; then
convert -size 64x68 xc:white "${SRC_PREFIX}src/resources/win32/inno-small-125.bmp"
composite -size 52x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-small-125.bmp" "${SRC_PREFIX}src/resources/win32/inno-small-125.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-small-150.bmp" ]; then
convert -size 83x80 xc:white "${SRC_PREFIX}src/resources/win32/inno-small-150.bmp"
composite -size 63x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-small-150.bmp" "${SRC_PREFIX}src/resources/win32/inno-small-150.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-small-175.bmp" ]; then
convert -size 92x97 xc:white "${SRC_PREFIX}src/resources/win32/inno-small-175.bmp"
composite -size 76x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-small-175.bmp" "${SRC_PREFIX}src/resources/win32/inno-small-175.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-small-200.bmp" ]; then
convert -size 110x106 xc:white "${SRC_PREFIX}src/resources/win32/inno-small-200.bmp"
composite -size 86x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-small-200.bmp" "${SRC_PREFIX}src/resources/win32/inno-small-200.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-small-225.bmp" ]; then
convert -size 119x123 xc:white "${SRC_PREFIX}src/resources/win32/inno-small-225.bmp"
composite -size 103x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-small-225.bmp" "${SRC_PREFIX}src/resources/win32/inno-small-225.bmp"
fi
if [ ! -f "${SRC_PREFIX}src/resources/win32/inno-small-250.bmp" ]; then
convert -size 138x140 xc:white "${SRC_PREFIX}src/resources/win32/inno-small-250.bmp"
composite -size 116x -gravity center icons/codium_only.svg "${SRC_PREFIX}src/resources/win32/inno-small-250.bmp" "${SRC_PREFIX}src/resources/win32/inno-small-250.bmp"
fi
}
if [ "$0" == "$BASH_SOURCE" ];
then
build_darwin_types
build_win32
fi

BIN
icons/code_64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
icons/code_darwin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

13
icons/codium_only.svg Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="100" height="100" viewBox="0, 0, 100, 100">
<defs>
<linearGradient id="Gradient_1" gradientUnits="userSpaceOnUse" x1="2.763" y1="-0.313" x2="94.027" y2="95.408">
<stop offset="0" stop-color="#56CCF2"/>
<stop offset="1" stop-color="#2F80ED"/>
</linearGradient>
</defs>
<g id="Layer_1">
<path d="M63.697,1.417 C64.354,0.381 65.529,-0.308 66.763,-0.313 C68.492,-0.317 70.138,0.654 71.139,2.037 C72.082,3.359 72.373,5.03 72.375,6.626 C72.36,8.87 71.843,11.075 71.227,13.222 C69.688,18.289 67.597,23.168 66.035,28.229 C64.315,33.972 63.49,40.372 65.801,46.074 C67.009,42.702 68.204,39.323 69.408,35.947 C69.75,35.055 70.2,34.041 71.156,33.675 C72.487,33.201 73.844,34.59 73.805,35.876 C73.441,37.749 72.735,39.534 72.179,41.356 C67.676,54.892 62.633,68.241 57.777,81.655 C64.235,75.75 70.713,69.867 77.179,63.973 C79.04,62.279 81.058,60.433 81.628,57.873 C82.197,55.36 81.139,52.866 79.94,50.708 C78.555,48.133 76.787,45.684 76.137,42.786 C75.81,41.285 75.909,39.558 76.921,38.328 C77.651,37.402 78.98,36.924 80.101,37.376 C81.208,37.799 81.876,38.862 82.399,39.866 C84.156,43.391 85.252,47.243 85.629,51.165 C86.829,48.744 88.043,46.333 89.245,43.914 C89.971,42.489 90.612,40.96 91.79,39.834 C92.501,39.132 93.537,38.69 94.54,38.918 C95.798,39.196 96.681,40.34 97.019,41.528 C97.402,42.79 96.997,44.104 96.59,45.303 C95.378,48.656 93.474,51.69 91.639,54.727 C89.081,58.747 86.364,62.67 83.398,66.402 C85.093,65.27 86.878,64.079 88.954,63.842 C90.918,63.579 93.089,64.729 93.739,66.646 C94.174,67.951 93.47,69.428 92.288,70.065 C90.554,71.032 88.502,71.019 86.575,71.105 C79.582,71.297 72.767,74.74 68.428,80.221 C65.004,84.592 63.255,90.023 59.78,94.358 C57.588,97 54.491,100.317 51.084,99.584 C46.547,98.609 46.547,91.518 45.416,88.003 C44.833,86.231 43.739,84.612 42.221,83.507 C40.894,82.527 39.305,81.965 37.699,81.657 C34.012,80.949 30.209,81.323 26.531,80.563 C24.69,80.188 22.877,79.45 21.471,78.177 C20.131,77.001 19.205,75.427 18.563,73.78 C17.177,70.192 16.895,66.299 15.663,62.666 C13.88,57.436 10.352,52.812 5.757,49.741 C4.788,49.087 3.735,48.449 3.108,47.429 C2.598,46.632 2.643,45.499 3.311,44.804 C4.437,43.578 6.472,43.477 7.773,44.491 C10.439,46.382 10.824,50.056 13.309,52.112 C13.313,48.718 13.296,45.327 13.29,41.935 C13.298,40.955 13.189,39.9 13.679,39.009 C14.125,38.165 15.359,37.936 16.076,38.569 C17.045,39.381 17.34,40.706 17.478,41.905 C17.96,46.58 18.426,51.257 18.91,55.935 C21.346,53.747 22.465,50.196 21.677,47.011 C21.438,45.994 21.051,44.948 21.27,43.893 C21.449,43.008 22.388,42.385 23.273,42.543 C24.268,42.678 24.978,43.531 25.351,44.407 C25.945,45.859 25.947,47.476 25.827,49.018 C25.474,52.53 23.988,55.773 22.963,59.115 C21.964,62.065 21.277,65.343 22.278,68.39 C23.17,71.239 25.431,73.491 28.084,74.768 C31.359,76.377 35.048,76.877 38.657,77.019 C36.463,73.179 34.077,69.116 34.118,64.548 C34.161,59.949 37.085,56.075 37.875,51.636 C39.221,44.272 35.898,36.267 29.712,32.042 C26.964,30.154 23.665,29.314 20.842,27.563 C18.288,26 15.994,23.218 16.395,20.05 C18.335,19.299 20.501,19.779 22.252,20.787 C25.674,22.613 27.851,26.075 31.29,27.873 C32.498,28.532 33.883,28.858 35.259,28.774 C36.004,26.988 35.259,24.988 34.057,23.597 C31.796,20.873 27.98,20.212 25.616,17.608 C24.431,16.249 23.77,14.307 24.268,12.53 C24.673,11.126 26.126,10.17 27.573,10.276 C29.716,10.409 31.561,11.751 33.026,13.228 C37.873,18.073 40.662,24.663 41.756,31.36 C43.048,39.259 42.044,47.317 40.453,55.095 C40.156,56.68 39.6,58.305 40.011,59.923 C40.188,60.672 40.728,61.445 41.558,61.512 C42.699,61.585 43.642,60.808 44.473,60.127 C47.072,58.004 49.138,55.146 49.99,51.873 C50.656,49.487 50.675,46.989 50.628,44.532 C50.641,43.303 50.55,41.946 51.285,40.882 C51.81,40.06 52.79,39.414 53.798,39.653 C54.588,39.803 55.148,40.488 55.389,41.222 C55.777,42.431 55.718,43.736 55.484,44.969 C54.741,48.372 54.069,51.819 52.723,55.05 C51.773,57.369 50.49,59.574 48.752,61.391 C46.836,63.422 44.469,65.05 42.925,67.417 C41.872,69.034 41.191,71.043 41.648,72.975 C41.982,74.516 43.155,75.774 44.57,76.416 C46.631,77.357 49.133,77.309 51.142,76.25 C52.736,75.388 53.869,73.898 54.771,72.367 C56.36,69.613 57.323,66.555 58.122,63.493 C59.351,58.549 60.075,53.48 60.359,48.393 C60.684,42.96 59.698,37.342 56.959,32.596 C55.503,30.055 53.444,27.891 51.039,26.235 C48.873,24.624 46.491,23.229 44.734,21.142 C43.091,19.208 41.952,16.598 42.55,14.031 C43.674,13.325 45.093,13.202 46.338,13.644 C48.687,14.443 50.527,16.329 51.713,18.463 C53.324,20.978 54.668,23.971 57.506,25.337 C55.197,20.795 52.816,16.292 50.479,11.766 C49.719,10.237 48.97,8.566 49.168,6.817 C49.312,5.484 50.55,4.391 51.887,4.397 C53.074,4.401 54.187,5.069 54.894,5.999 C55.701,7.046 56.087,8.336 56.451,9.589 C58.313,16.071 60.174,22.55 62.043,29.03 C64.392,24.555 65.385,19.37 64.717,14.348 C64.425,11.686 63.643,9.115 63.023,6.518 C62.601,4.819 62.728,2.913 63.697,1.417 z" fill="url(#Gradient_1)" id="Shape"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
icons/corner_512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,41 +0,0 @@
#!/bin/bash
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew update
brew install jq zip
else
sudo apt-get update
sudo apt-get install -y fakeroot jq
triplet=
case $BUILDARCH in
arm)
arch=armhf
triplet=arm-linux-gnueabihf
;;
arm64)
arch=arm64
triplet=aarch64-linux-gnu
;;
esac
if [[ -n "$triplet" ]]; then
sed 's/^deb /deb [arch=amd64] '/g -i /etc/apt/sources.list
echo "deb [arch=$arch] http://ports.ubuntu.com/ubuntu-ports/ trusty main" | sudo tee -a /etc/apt/sources.list.d/$arch.list >/dev/null
sudo dpkg --add-architecture $arch
sudo apt-get update
sudo apt-get install libc6-dev-$arch-cross gcc-$triplet g++-$triplet `apt-cache search x11proto | grep ^x11proto | cut -f 1 -d ' '` xz-utils pkg-config
mkdir -p dl
cd dl
apt-get download libx11-dev:$arch libx11-6:$arch libxkbfile-dev:$arch libxkbfile1:$arch libxau-dev:$arch libxdmcp-dev:$arch libxcb1-dev:$arch libsecret-1-dev:$arch libsecret-1-0:$arch libpthread-stubs0-dev:$arch libglib2.0-dev:$arch libglib2.0-0:$arch libffi-dev:$arch libffi6:$arch zlib1g:$arch libpcre3-dev:$arch libpcre3:$arch
for i in *.deb; do ar x $i; sudo tar -C / -xf data.tar.*; rm -f data.tar.*; done
cd ..
export CC=/usr/bin/$triplet-gcc
export CXX=/usr/bin/$triplet-g++
export CC_host=/usr/bin/gcc
export CXX_host=/usr/bin/g++
export PKG_CONFIG_LIBDIR=/usr/lib/$triplet/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
else
sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev rpm
fi
fi

45
patches/binary-name.patch Normal file
View File

@@ -0,0 +1,45 @@
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
index 6d3a369..57009d4 100644
--- a/build/gulpfile.vscode.js
+++ b/build/gulpfile.vscode.js
@@ -276,7 +276,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
all = es.merge(all, gulp.src('resources/linux/code.png', { base: '.' }));
} else if (platform === 'darwin') {
const shortcut = gulp.src('resources/darwin/bin/code.sh')
- .pipe(rename('bin/code'));
+ .pipe(rename('bin/' + product.applicationName));
all = es.merge(all, shortcut);
}
@@ -483,7 +483,7 @@ const generateVSCodeConfigurationTask = task.define('generate-vscode-configurati
const arch = process.env['VSCODE_ARCH'];
const appRoot = path.join(buildDir, `VSCode-darwin-${arch}`);
const appName = process.env.VSCODE_QUALITY === 'insider' ? 'Visual\\ Studio\\ Code\\ -\\ Insiders.app' : 'Visual\\ Studio\\ Code.app';
- const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', 'code');
+ const appPath = path.join(appRoot, appName, 'Contents', 'Resources', 'app', 'bin', product.applicationName);
const codeProc = cp.exec(
`${appPath} --export-default-configuration='${allConfigDetailsPath}' --wait --user-data-dir='${userDataDir}' --extensions-dir='${extensionsDir}'`,
(err, stdout, stderr) => {
diff --git a/src/vs/platform/native/electron-main/nativeHostMainService.ts b/src/vs/platform/native/electron-main/nativeHostMainService.ts
index 692db1d..cd173bc 100644
--- a/src/vs/platform/native/electron-main/nativeHostMainService.ts
+++ b/src/vs/platform/native/electron-main/nativeHostMainService.ts
@@ -341,7 +341,7 @@ 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
@@ -551,7 +551,7 @@ export class NativeHostMainService extends Disposable implements INativeHostMain
// macOS
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');

View File

@@ -0,0 +1,13 @@
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;
}
}

View File

@@ -0,0 +1,83 @@
diff --git a/src/vs/base/common/product.ts b/src/vs/base/common/product.ts
index 78d6060..dfa9de2 100644
--- a/src/vs/base/common/product.ts
+++ b/src/vs/base/common/product.ts
@@ -69,6 +69,7 @@ export interface IProductConfiguration {
readonly extensionsGallery?: {
readonly serviceUrl: string;
+ readonly cacheUrl?: string;
readonly itemUrl: string;
readonly resourceUrlTemplate: string;
readonly controlUrl: string;
diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts
index 09dfc64..fec0cfa 100644
--- a/src/vs/platform/product/common/product.ts
+++ b/src/vs/platform/product/common/product.ts
@@ -4,11 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import { FileAccess } from 'vs/base/common/network';
-import { globals } from 'vs/base/common/platform';
+import { globals, isWindows } from 'vs/base/common/platform';
import { env } from 'vs/base/common/process';
import { IProductConfiguration } from 'vs/base/common/product';
import { dirname, joinPath } from 'vs/base/common/resources';
import { ISandboxConfiguration } from 'vs/base/parts/sandbox/common/sandboxTypes';
+import { getUserDataPath } from 'vs/platform/environment/node/userDataPath';
let product: IProductConfiguration;
@@ -31,6 +32,32 @@ else if (typeof require?.__$__nodeRequire === 'function') {
product = require.__$__nodeRequire(joinPath(rootPath, 'product.json').fsPath);
const pkg = require.__$__nodeRequire(joinPath(rootPath, 'package.json').fsPath) as { version: string; };
+ // Merge user-customized product.json
+ try {
+ const merge = (...objects: any[]) =>
+ objects.reduce((result, current) => {
+ Object.keys(current).forEach((key) => {
+ if (Array.isArray(result[key]) && Array.isArray(current[key])) {
+ result[key] = current[key];
+ } else if (typeof result[key] === 'object' && typeof current[key] === 'object') {
+ result[key] = merge(result[key], current[key]);
+ } else {
+ result[key] = current[key];
+ }
+ });
+
+ return result;
+ }, {}) as any;
+
+ const userDataPath = getUserDataPath({} as any);
+ const userProductPath = isWindows ? `file:///${userDataPath}/product.json` : `file://${userDataPath}/product.json`;
+
+ const userProduct = require.__$__nodeRequire(FileAccess.asFileUri(userProductPath, require).fsPath);
+
+ product = merge(product, userProduct);
+ } catch (ex) {
+ }
+
// Running out of sources
if (env['VSCODE_DEV']) {
Object.assign(product, {
@@ -40,6 +67,19 @@ else if (typeof require?.__$__nodeRequire === 'function') {
});
}
+ // Set user-defined extension gallery
+ const { serviceUrl, cacheUrl, itemUrl, controlUrl, recommendationsUrl } = product.extensionsGallery || {}
+
+ Object.assign(product, {
+ extensionsGallery: {
+ serviceUrl: env['VSCODE_GALLERY_SERVICE_URL'] || serviceUrl,
+ cacheUrl: env['VSCODE_GALLERY_CACHE_URL'] || cacheUrl,
+ itemUrl: env['VSCODE_GALLERY_ITEM_URL'] || itemUrl,
+ controlUrl: env['VSCODE_GALLERY_CONTROL_URL'] || controlUrl,
+ recommendationsUrl: env['VSCODE_GALLERY_RECOMMENDATIONS_URL'] || recommendationsUrl
+ }
+ })
+
Object.assign(product, {
version: pkg.version
});

158
patches/disable-cors.patch Normal file
View File

@@ -0,0 +1,158 @@
diff --git a/src/bootstrap-window.js b/src/bootstrap-window.js
index 0cc92ec..43042d5 100644
--- a/src/bootstrap-window.js
+++ b/src/bootstrap-window.js
@@ -24,6 +24,7 @@
const bootstrapLib = bootstrap();
const preloadGlobals = sandboxGlobals();
const safeProcess = preloadGlobals.process;
+ const useCustomProtocol = safeProcess.sandboxed;
/**
* @typedef {import('./vs/base/parts/sandbox/common/sandboxTypes').ISandboxConfiguration} ISandboxConfiguration
@@ -99,6 +100,11 @@
window.document.documentElement.setAttribute('lang', locale);
+ // Do not advertise AMD to avoid confusing UMD modules loaded with nodejs
+ if (!useCustomProtocol) {
+ window['define'] = undefined;
+ }
+
// Replace the patched electron fs with the original node fs for all AMD code (TODO@sandbox non-sandboxed only)
if (!safeProcess.sandboxed) {
require.define('fs', [], function () { return require.__$__nodeRequire('original-fs'); });
@@ -107,9 +113,11 @@
window['MonacoEnvironment'] = {};
const loaderConfig = {
- baseUrl: `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32', scheme: 'vscode-file', fallbackAuthority: 'vscode-app' })}/out`,
+ baseUrl: useCustomProtocol ?
+ `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32', scheme: 'vscode-file', fallbackAuthority: 'vscode-app' })}/out` :
+ `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32' })}/out`,
'vs/nls': nlsConfig,
- preferScriptTags: true
+ preferScriptTags: useCustomProtocol
};
// use a trusted types policy when loading via script tags
@@ -143,6 +151,14 @@
loaderConfig.amdModulesPattern = /^vs\//;
}
+ // Cached data config (node.js loading only)
+ if (!useCustomProtocol && configuration.codeCachePath) {
+ loaderConfig.nodeCachedData = {
+ path: configuration.codeCachePath,
+ seed: modulePaths.join('')
+ };
+ }
+
// Signal before require.config()
if (typeof options?.beforeLoaderConfig === 'function') {
options.beforeLoaderConfig(loaderConfig);
diff --git a/src/vs/base/common/network.ts b/src/vs/base/common/network.ts
index 41a3fe9..bbb06e3 100644
--- a/src/vs/base/common/network.ts
+++ b/src/vs/base/common/network.ts
@@ -166,16 +166,7 @@ class FileAccessImpl {
}
// Convert to `vscode-file` resource..
- if (
- // ...only ever for `file` resources
- uri.scheme === Schemas.file &&
- (
- // ...and we run in native environments
- platform.isNative ||
- // ...or web worker extensions on desktop
- (typeof platform.globals.importScripts === 'function' && platform.globals.origin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`)
- )
- ) {
+ if (uri.scheme === Schemas.file && typeof platform.globals.importScripts === 'function' && platform.globals.origin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`) {
return uri.with({
scheme: Schemas.vscodeFileResource,
// We need to provide an authority here so that it can serve
diff --git a/src/vs/platform/protocol/electron-main/protocolMainService.ts b/src/vs/platform/protocol/electron-main/protocolMainService.ts
index bde08d8..3f09ad1 100644
--- a/src/vs/platform/protocol/electron-main/protocolMainService.ts
+++ b/src/vs/platform/protocol/electron-main/protocolMainService.ts
@@ -72,9 +72,24 @@ export class ProtocolMainService extends Disposable implements IProtocolMainServ
//#region file://
private handleFileRequest(request: Electron.ProtocolRequest, callback: ProtocolCallback) {
- const uri = URI.parse(request.url);
+ const fileUri = URI.parse(request.url);
+
+ // first check by validRoots
+ if (this.validRoots.findSubstr(fileUri)) {
+ return callback({
+ path: fileUri.fsPath
+ });
+ }
- this.logService.error(`Refused to load resource ${uri.fsPath} from ${Schemas.file}: protocol (original URL: ${request.url})`);
+ // then check by validExtensions
+ if (this.validExtensions.has(extname(fileUri))) {
+ return callback({
+ path: fileUri.fsPath
+ });
+ }
+
+ // finally block to load the resource
+ this.logService.error(`${Schemas.file}: Refused to load resource ${fileUri.fsPath} from ${Schemas.file}: protocol (original URL: ${request.url})`);
return callback({ error: -3 /* ABORTED */ });
}
diff --git a/src/vs/workbench/services/timer/electron-sandbox/timerService.ts b/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
index 7cae207..1c54ac9 100644
--- a/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
+++ b/src/vs/workbench/services/timer/electron-sandbox/timerService.ts
@@ -19,7 +19,7 @@ import { process } from 'vs/base/parts/sandbox/electron-sandbox/globals';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
import { IProductService } from 'vs/platform/product/common/productService';
-import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
+import { IStorageService } from 'vs/platform/storage/common/storage';
export class TimerService extends AbstractTimerService {
@@ -91,24 +91,23 @@ registerSingleton(ITimerService, TimerService);
//#region cached data logic
-const lastRunningCommitStorageKey = 'perf/lastRunningCommit';
-let _didUseCachedData: boolean | undefined = undefined;
-
export function didUseCachedData(productService: IProductService, storageService: IStorageService, environmentService: INativeWorkbenchEnvironmentService): boolean {
- // browser code loading: only a guess based on
- // this being the first start with the commit
- // or subsequent
- if (typeof _didUseCachedData !== 'boolean') {
- if (!environmentService.configuration.codeCachePath || !productService.commit) {
- _didUseCachedData = false; // we only produce cached data whith commit and code cache path
- } else if (storageService.get(lastRunningCommitStorageKey, StorageScope.GLOBAL) === productService.commit) {
- _didUseCachedData = true; // subsequent start on same commit, assume cached data is there
- } else {
- storageService.store(lastRunningCommitStorageKey, productService.commit, StorageScope.GLOBAL, StorageTarget.MACHINE);
- _didUseCachedData = false; // first time start on commit, assume cached data is not yet there
+ if (!Boolean((<any>window).require.getConfig().nodeCachedData)) {
+ return false;
+ }
+ // There are loader events that signal if cached data was missing, rejected,
+ // or used. The former two mean no cached data.
+ let cachedDataFound = 0;
+ for (const event of require.getStats()) {
+ switch (event.type) {
+ case LoaderEventType.CachedDataRejected:
+ return false;
+ case LoaderEventType.CachedDataFound:
+ cachedDataFound += 1;
+ break;
}
}
- return _didUseCachedData;
+ return cachedDataFound > 0;
}
//#endregion

View File

@@ -0,0 +1,8 @@
--- vscode/resources/linux/rpm/code.spec.template 2021-03-02 19:26:53.000000000 +0100
+++ vscode/resources/linux/rpm/code.spec.template.new 2021-03-02 19:28:12.000000000 +0100
@@ -69,3 +69,5 @@
/usr/share/pixmaps/@@ICON@@.png
/usr/share/bash-completion/completions/@@NAME@@
/usr/share/zsh/site-functions/_@@NAME@@
+
+%config(noreplace) /usr/share/@@NAME@@/resources/app/product.json

View File

@@ -0,0 +1,48 @@
diff --git a/src/vs/code/electron-sandbox/issue/issueReporterMain.ts b/src/vs/code/electron-sandbox/issue/issueReporterMain.ts
index fcd4485..8d97e5a 100644
--- a/src/vs/code/electron-sandbox/issue/issueReporterMain.ts
+++ b/src/vs/code/electron-sandbox/issue/issueReporterMain.ts
@@ -682,7 +682,7 @@ export class IssueReporter extends Disposable {
sourceSelect.innerText = '';
sourceSelect.append(this.makeOption('', localize('selectSource', "Select source"), true));
- sourceSelect.append(this.makeOption('vscode', localize('vscode', "Visual Studio Code"), false));
+ sourceSelect.append(this.makeOption('vscode', localize('vscode', "VSCodium"), false));
sourceSelect.append(this.makeOption('extension', localize('extension', "An extension"), false));
if (this.configuration.product.reportMarketplaceIssueUrl) {
sourceSelect.append(this.makeOption('marketplace', localize('marketplace', "Extensions marketplace"), false));
diff --git a/src/vs/workbench/contrib/extensions/electron-sandbox/extensionsSlowActions.ts b/src/vs/workbench/contrib/extensions/electron-sandbox/extensionsSlowActions.ts
index 0c5855b..654f9a4 100644
--- a/src/vs/workbench/contrib/extensions/electron-sandbox/extensionsSlowActions.ts
+++ b/src/vs/workbench/contrib/extensions/electron-sandbox/extensionsSlowActions.ts
@@ -144,7 +144,7 @@ class ReportExtensionSlowAction extends Action {
- Extension Name: \`${this.extension.name}\`
- Extension Version: \`${this.extension.version}\`
- OS Version: \`${osVersion}\`
-- VS Code version: \`${this._productService.version}\`\n\n${message}`);
+- VSCodium version: \`${this._productService.version}\`\n\n${message}`);
const url = `${this.repoInfo.base}/${this.repoInfo.owner}/${this.repoInfo.repo}/issues/new/?body=${body}&title=${title}`;
this._openerService.open(URI.parse(url));
diff --git a/src/vs/workbench/contrib/extensions/electron-sandbox/reportExtensionIssueAction.ts b/src/vs/workbench/contrib/extensions/electron-sandbox/reportExtensionIssueAction.ts
index f1755db..e77be21 100644
--- a/src/vs/workbench/contrib/extensions/electron-sandbox/reportExtensionIssueAction.ts
+++ b/src/vs/workbench/contrib/extensions/electron-sandbox/reportExtensionIssueAction.ts
@@ -14,7 +14,7 @@ import { ExtensionType, IExtensionDescription } from 'vs/platform/extensions/com
import { IOpenerService } from 'vs/platform/opener/common/opener';
import { URI } from 'vs/base/common/uri';
-const builtinExtensionIssueUrl = 'https://github.com/microsoft/vscode';
+const builtinExtensionIssueUrl = 'https://github.com/VSCodium/vscodium';
export class ReportExtensionIssueAction extends Action {
@@ -76,7 +76,7 @@ export class ReportExtensionIssueAction extends Action {
- Extension Name: \`${extension.description.name}\`
- Extension Version: \`${extension.description.version}\`
- OS Version: \`${osVersion}\`
-- VS Code version: \`${this.productService.version}\`\n\n${message}`
+- VSCodium version: \`${this.productService.version}\`\n\n${message}`
);
return `${baseUrl}${queryStringPrefix}body=${body}&title=${encodeURIComponent(title)}`;

View File

@@ -1,11 +1,13 @@
--- vscode/src/vs/platform/update/electron-main/updateService.win32.ts 2019-12-08 15:09:44.000000000 -0800
+++ src/src/vs/platform/update/electron-main/updateService.win32.ts 2019-12-08 15:12:56.000000000 -0800
@@ -55,7 +55,7 @@
diff --git a/src/vs/platform/update/electron-main/updateService.win32.ts b/src/vs/platform/update/electron-main/updateService.win32.ts
index 93424ca..133657e 100644
--- a/src/vs/platform/update/electron-main/updateService.win32.ts
+++ b/src/vs/platform/update/electron-main/updateService.win32.ts
@@ -53,7 +53,7 @@ export class Win32UpdateService extends AbstractUpdateService {
@memoize
get cachePath(): Promise<string> {
- const result = path.join(tmpdir(), `vscode-update-${product.target}-${process.arch}`);
+ const result = path.join(tmpdir(), `vscodium-update-${product.target}-${process.arch}`);
return pfs.mkdirp(result, undefined).then(() => result);
- const result = path.join(tmpdir(), `vscode-update-${this.productService.target}-${process.arch}`);
+ const result = path.join(tmpdir(), `${this.productService.applicationName}-update-${this.productService.target}-${process.arch}`);
return pfs.Promises.mkdir(result, { recursive: true }).then(() => result);
}

View File

@@ -0,0 +1,257 @@
diff --git a/extensions/github-authentication/src/githubServer.ts b/extensions/github-authentication/src/githubServer.ts
index 3d36081..5bac245 100644
--- a/extensions/github-authentication/src/githubServer.ts
+++ b/extensions/github-authentication/src/githubServer.ts
@@ -6,8 +6,6 @@
import * as nls from 'vscode-nls';
import * as vscode from 'vscode';
import fetch, { Response } from 'node-fetch';
-import { v4 as uuid } from 'uuid';
-import { PromiseAdapter, promiseFromEvent } from './common/utils';
import { ExperimentationTelemetry } from './experimentationService';
import { AuthProviderType } from './github';
import { Log } from './common/logger';
@@ -15,8 +13,6 @@ import { Log } from './common/logger';
const localize = nls.loadMessageBundle();
const NETWORK_ERROR = 'network error';
-const AUTH_RELAY_SERVER = 'vscode-auth.github.com';
-// const AUTH_RELAY_STAGING_SERVER = 'client-auth-staging-14a768b.herokuapp.com';
class UriEventHandler extends vscode.EventEmitter<vscode.Uri> implements vscode.UriHandler {
constructor(private readonly Logger: Log) {
@@ -29,14 +25,6 @@ class UriEventHandler extends vscode.EventEmitter<vscode.Uri> implements vscode.
}
}
-function parseQuery(uri: vscode.Uri) {
- return uri.query.split('&').reduce((prev: any, current) => {
- const queryString = current.split('=');
- prev[queryString[0]] = queryString[1];
- return prev;
- }, {});
-}
-
export interface IGitHubServer extends vscode.Disposable {
login(scopes: string): Promise<string>;
getUserInfo(token: string): Promise<{ id: string, accountName: string }>;
@@ -96,11 +84,7 @@ async function getUserInfo(token: string, serverUri: vscode.Uri, logger: Log): P
export class GitHubServer implements IGitHubServer {
friendlyName = 'GitHub';
type = AuthProviderType.github;
- private _statusBarItem: vscode.StatusBarItem | undefined;
- private _onDidManuallyProvideToken = new vscode.EventEmitter<string | undefined>();
- private _pendingStates = new Map<string, string[]>();
- private _codeExchangePromises = new Map<string, { promise: Promise<string>, cancel: vscode.EventEmitter<void> }>();
private _statusBarCommandId = `${this.type}.provide-manually`;
private _disposable: vscode.Disposable;
private _uriHandler = new UriEventHandler(this._logger);
@@ -115,150 +99,35 @@ export class GitHubServer implements IGitHubServer {
this._disposable.dispose();
}
- private isTestEnvironment(url: vscode.Uri): boolean {
- return /\.azurewebsites\.net$/.test(url.authority) || url.authority.startsWith('localhost:');
- }
-
- // TODO@joaomoreno TODO@TylerLeonhardt
- private async isNoCorsEnvironment(): Promise<boolean> {
- const uri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/dummy`));
- return (uri.scheme === 'https' && /^(vscode|github)\./.test(uri.authority)) || (uri.scheme === 'http' && /^localhost/.test(uri.authority));
- }
-
public async login(scopes: string): Promise<string> {
this._logger.info(`Logging in for the following scopes: ${scopes}`);
- // TODO@joaomoreno TODO@TylerLeonhardt
- const nocors = await this.isNoCorsEnvironment();
- const callbackUri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/did-authenticate${nocors ? '?nocors=true' : ''}`));
-
- if (this.isTestEnvironment(callbackUri)) {
- const token = await vscode.window.showInputBox({ prompt: 'GitHub Personal Access Token', ignoreFocusOut: true });
- if (!token) { throw new Error('Sign in failed: No token provided'); }
-
- const tokenScopes = await getScopes(token, this.getServerUri('/'), this._logger); // Example: ['repo', 'user']
- const scopesList = scopes.split(' '); // Example: 'read:user repo user:email'
- if (!scopesList.every(scope => {
- const included = tokenScopes.includes(scope);
- if (included || !scope.includes(':')) {
- return included;
- }
+ const token = await vscode.window.showInputBox({ prompt: 'GitHub Personal Access Token', ignoreFocusOut: true });
+ if (!token) { throw new Error('Sign in failed: No token provided'); }
- return scope.split(':').some(splitScopes => {
- return tokenScopes.includes(splitScopes);
- });
- })) {
- throw new Error(`The provided token is does not match the requested scopes: ${scopes}`);
+ const tokenScopes = await getScopes(token, this.getServerUri('/'), this._logger); // Example: ['repo', 'user']
+ const scopesList = scopes.split(' '); // Example: 'read:user repo user:email'
+ if (!scopesList.every(scope => {
+ const included = tokenScopes.includes(scope);
+ if (included || !scope.includes(':')) {
+ return included;
}
- return token;
- }
-
- this.updateStatusBarItem(true);
-
- const state = uuid();
- const existingStates = this._pendingStates.get(scopes) || [];
- this._pendingStates.set(scopes, [...existingStates, state]);
-
- const uri = vscode.Uri.parse(`https://${AUTH_RELAY_SERVER}/authorize/?callbackUri=${encodeURIComponent(callbackUri.toString())}&scope=${scopes}&state=${state}&responseType=code&authServer=https://github.com${nocors ? '&nocors=true' : ''}`);
- await vscode.env.openExternal(uri);
-
- // Register a single listener for the URI callback, in case the user starts the login process multiple times
- // before completing it.
- let codeExchangePromise = this._codeExchangePromises.get(scopes);
- if (!codeExchangePromise) {
- codeExchangePromise = promiseFromEvent(this._uriHandler.event, this.exchangeCodeForToken(scopes));
- this._codeExchangePromises.set(scopes, codeExchangePromise);
+ return scope.split(':').some(splitScopes => {
+ return tokenScopes.includes(splitScopes);
+ });
+ })) {
+ throw new Error(`The provided token is does not match the requested scopes: ${scopes}`);
}
- return Promise.race([
- codeExchangePromise.promise,
- promiseFromEvent<string | undefined, string>(this._onDidManuallyProvideToken.event, (token: string | undefined, resolve, reject): void => {
- if (!token) {
- reject('Cancelled');
- } else {
- resolve(token);
- }
- }).promise,
- new Promise<string>((_, reject) => setTimeout(() => reject('Cancelled'), 60000))
- ]).finally(() => {
- this._pendingStates.delete(scopes);
- codeExchangePromise?.cancel.fire();
- this._codeExchangePromises.delete(scopes);
- this.updateStatusBarItem(false);
- });
+ return token;
}
- private exchangeCodeForToken: (scopes: string) => PromiseAdapter<vscode.Uri, string> =
- (scopes) => async (uri, resolve, reject) => {
- const query = parseQuery(uri);
- const code = query.code;
-
- const acceptedStates = this._pendingStates.get(scopes) || [];
- if (!acceptedStates.includes(query.state)) {
- // A common scenario of this happening is if you:
- // 1. Trigger a sign in with one set of scopes
- // 2. Before finishing 1, you trigger a sign in with a different set of scopes
- // In this scenario we should just return and wait for the next UriHandler event
- // to run as we are probably still waiting on the user to hit 'Continue'
- this._logger.info('State not found in accepted state. Skipping this execution...');
- return;
- }
-
- const url = `https://${AUTH_RELAY_SERVER}/token?code=${code}&state=${query.state}`;
- this._logger.info('Exchanging code for token...');
-
- // TODO@joao: remove
- if (query.nocors) {
- try {
- const json: any = await vscode.commands.executeCommand('_workbench.fetchJSON', url, 'POST');
- this._logger.info('Token exchange success!');
- resolve(json.access_token);
- } catch (err) {
- reject(err);
- }
- } else {
- try {
- const result = await fetch(url, {
- method: 'POST',
- headers: {
- Accept: 'application/json'
- }
- });
-
- if (result.ok) {
- const json = await result.json();
- this._logger.info('Token exchange success!');
- resolve(json.access_token);
- } else {
- reject(result.statusText);
- }
- } catch (ex) {
- reject(ex);
- }
- }
- };
-
private getServerUri(path: string = '') {
const apiUri = vscode.Uri.parse('https://api.github.com');
return vscode.Uri.parse(`${apiUri.scheme}://${apiUri.authority}${path}`);
}
- private updateStatusBarItem(isStart?: boolean) {
- if (isStart && !this._statusBarItem) {
- this._statusBarItem = vscode.window.createStatusBarItem('status.git.signIn', vscode.StatusBarAlignment.Left);
- this._statusBarItem.name = localize('status.git.signIn.name', "GitHub Sign-in");
- this._statusBarItem.text = localize('signingIn', "$(mark-github) Signing in to github.com...");
- this._statusBarItem.command = this._statusBarCommandId;
- this._statusBarItem.show();
- }
-
- if (!isStart && this._statusBarItem) {
- this._statusBarItem.dispose();
- this._statusBarItem = undefined;
- }
- }
-
private async manuallyProvideUri() {
const uri = await vscode.window.showInputBox({
prompt: 'Uri',
@@ -290,41 +159,7 @@ export class GitHubServer implements IGitHubServer {
return getUserInfo(token, this.getServerUri('/user'), this._logger);
}
- public async sendAdditionalTelemetryInfo(token: string): Promise<void> {
- const nocors = await this.isNoCorsEnvironment();
-
- if (nocors) {
- return;
- }
-
- try {
- const result = await fetch('https://education.github.com/api/user', {
- headers: {
- Authorization: `token ${token}`,
- 'faculty-check-preview': 'true',
- 'User-Agent': 'Visual-Studio-Code'
- }
- });
-
- if (result.ok) {
- const json: { student: boolean, faculty: boolean } = await result.json();
-
- /* __GDPR__
- "session" : {
- "isEdu": { "classification": "NonIdentifiableDemographicInfo", "purpose": "FeatureInsight" }
- }
- */
- this._telemetryReporter.sendTelemetryEvent('session', {
- isEdu: json.student
- ? 'student'
- : json.faculty
- ? 'faculty'
- : 'none'
- });
- }
- } catch (e) {
- // No-op
- }
+ public async sendAdditionalTelemetryInfo(_token: string): Promise<void> {
}
public async checkEnterpriseVersion(token: string): Promise<void> {

1
patches/user/readme.txt Normal file
View File

@@ -0,0 +1 @@
store user patches at location patches/user and those will be applied to vscode source git by the scripts

View File

@@ -1,7 +1,6 @@
#!/bin/bash
export npm_config_arch="$BUILDARCH"
export npm_config_target_arch="$BUILDARCH"
set -e
cp -rp src/* vscode/
cd vscode || exit
@@ -9,21 +8,41 @@ cd vscode || exit
../update_settings.sh
# apply patches
patch -u src/vs/platform/update/electron-main/updateService.win32.ts -i ../patches/update-cache-path.patch
{ set +x; } 2>/dev/null
yarn --frozen-lockfile
yarn postinstall
for file in ../patches/*.patch; do
if [ -f "$file" ]; then
echo applying patch: $file;
git apply --ignore-whitespace "$file"
if [ $? -ne 0 ]; then
echo failed to apply patch $file 1>&2
fi
fi
done
if [[ "$BUILDARCH" == *"arm"* ]]; then
sed -i -z 's/,\n[^\n]*arm[^\n]*//' node_modules/vscode-sqlite3/binding.gyp
sed -i "s/Release\/sqlite'/Release\/sqlite.node'/" node_modules/vscode-sqlite3/lib/sqlite3.js
yarn add -D electron-rebuild
npx electron-rebuild -f -w vscode-sqlite3
for file in ../patches/user/*.patch; do
if [ -f "$file" ]; then
echo applying user patch: $file;
git apply --ignore-whitespace "$file"
if [ $? -ne 0 ]; then
echo failed to apply patch $file 1>&2
fi
fi
done
set -x
if [[ "$OS_NAME" == "osx" ]]; then
CHILD_CONCURRENCY=1 yarn --frozen-lockfile --ignore-optional
npm_config_argv='{"original":["--ignore-optional"]}' yarn postinstall
else
CHILD_CONCURRENCY=1 yarn --frozen-lockfile
fi
mv product.json product.json.bak
# set fields in product.json
checksumFailMoreInfoUrl='setpath(["checksumFailMoreInfoUrl"]; "https://go.microsoft.com/fwlink/?LinkId=828886")'
tipsAndTricksUrl='setpath(["tipsAndTricksUrl"]; "https://go.microsoft.com/fwlink/?linkid=852118")'
twitterUrl='setpath(["twitterUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533687")'
requestFeatureUrl='setpath(["requestFeatureUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533482")'
@@ -50,19 +69,45 @@ win32AppUserModelId='setpath(["win32AppUserModelId"]; "Microsoft.VSCodium")'
win32ShellNameShort='setpath(["win32ShellNameShort"]; "VSCodium")'
win32x64UserAppId='setpath (["win32x64UserAppId"]; "{{2E1F05D1-C245-4562-81EE-28188DB6FD17}")'
urlProtocol='setpath(["urlProtocol"]; "vscodium")'
extensionAllowedProposedApi='setpath(["extensionAllowedProposedApi"]; getpath(["extensionAllowedProposedApi"]) + ["ms-vsliveshare.vsliveshare", "ms-vscode-remote.remote-ssh"])'
extensionAllowedProposedApi='setpath(["extensionAllowedProposedApi"]; getpath(["extensionAllowedProposedApi"]) + ["ms-vscode.cpptools", "ms-azuretools.vscode-docker", "visualstudioexptteam.vscodeintellicode", "GitHub.codespaces", "GitHub.vscode-pull-request-github-insiders", "GitHub.vscode-pull-request-github", "Microsoft.vscode-nmake-tools", "ms-ai-tools.notebook-renderers", "ms-dotnettools.dotnet-interactive-vscode", "ms-python.gather", "ms-python.python", "ms-toolsai.jupyter", "ms-toolsai.vscode-ai", "ms-toolsai.vscode-ai-remote", "ms-vscode-remote.remote-containers-nightly", "ms-vscode-remote.remote-containers", "ms-vscode-remote.remote-ssh-edit-nightly", "ms-vscode-remote.remote-ssh-edit", "ms-vscode-remote.remote-ssh-nightly", "ms-vscode-remote.remote-ssh", "ms-vscode-remote.remote-wsl-nightly", "ms-vscode-remote.remote-wsl", "ms-vscode-remote.remote-wsl-recommender", "ms-vscode-remote.vscode-remote-extensionpack-nightly", "ms-vscode-remote.vscode-remote-extensionpack", "ms-vscode.azure-account", "ms-vscode.azure-sphere-tools-ui", "ms-vscode.azure-sphere-tools", "ms-vscode.github-browser", "ms-vscode.github-richnav", "ms-vscode.js-debug-nightly", "ms-vscode.js-debug", "ms-vscode.lsif-browser", "ms-vscode.vscode-js-profile-flame", "ms-vscode.vscode-js-profile-table", "ms-vscode.vscode-selfhost-test-provider", "ms-vsliveshare.cloudenv-explorer", "ms-vsliveshare.cloudenv", "ms-vsliveshare.vsliveshare", "ms-vsonline.vsonline", "dbaeumer.vscode-eslint"])'
serverDataFolderName='setpath(["serverDataFolderName"]; ".vscode-server-oss")'
reportIssueUrl='setpath(["reportIssueUrl"]; "https://github.com/VSCodium/vscodium/issues/new/choose")'
product_json_changes="${tipsAndTricksUrl} | ${twitterUrl} | ${requestFeatureUrl} | ${documentationUrl} | ${introductoryVideosUrl} | ${extensionAllowedBadgeProviders} | ${updateUrl} | ${releaseNotesUrl} | ${keyboardShortcutsUrlMac} | ${keyboardShortcutsUrlLinux} | ${keyboardShortcutsUrlWin} | ${quality} | ${extensionsGallery} | ${linkProtectionTrustedDomains} | ${nameShort} | ${nameLong} | ${linuxIconName} | ${applicationName} | ${win32MutexName} | ${win32DirName} | ${win32NameVersion} | ${win32RegValueName} | ${win32AppUserModelId} | ${win32ShellNameShort} | ${win32x64UserAppId} | ${urlProtocol} | ${extensionAllowedProposedApi} | ${serverDataFolderName}"
product_json_changes="${checksumFailMoreInfoUrl} | ${tipsAndTricksUrl} | ${twitterUrl} | ${requestFeatureUrl} | ${documentationUrl} | ${introductoryVideosUrl} | ${extensionAllowedBadgeProviders} | ${updateUrl} | ${releaseNotesUrl} | ${keyboardShortcutsUrlMac} | ${keyboardShortcutsUrlLinux} | ${keyboardShortcutsUrlWin} | ${quality} | ${extensionsGallery} | ${linkProtectionTrustedDomains} | ${nameShort} | ${nameLong} | ${linuxIconName} | ${applicationName} | ${win32MutexName} | ${win32DirName} | ${win32NameVersion} | ${win32RegValueName} | ${win32AppUserModelId} | ${win32ShellNameShort} | ${win32x64UserAppId} | ${urlProtocol} | ${extensionAllowedProposedApi} | ${serverDataFolderName} | ${reportIssueUrl}"
cat product.json.bak | jq "${product_json_changes}" > product.json
cat product.json
../undo_telemetry.sh
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
if [[ "$OS_NAME" == "linux" ]]; then
# microsoft adds their apt repo to sources
# unless the app name is code-oss
# as we are renaming the application to vscodium
# we need to edit a line in the post install template
sed -i "s/code-oss/codium/" resources/linux/debian/postinst.template
# fix the packages metadata
# code.appdata.xml
sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/code.appdata.xml
sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/code.appdata.xml
sed -i 's|https://code.visualstudio.com/home/home-screenshot-linux-lg.png|https://vscodium.com/img/vscodium.png|' resources/linux/code.appdata.xml
sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/code.appdata.xml
# control.template
sed -i 's|Microsoft Corporation <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/debian/control.template
sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/debian/control.template
sed -i 's|Visual Studio Code|VSCodium|g' resources/linux/debian/control.template
sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/debian/control.template
# code.spec.template
sed -i 's|https://code.visualstudio.com/docs/setup/linux|https://github.com/VSCodium/vscodium#download-install|' resources/linux/rpm/code.spec.template
sed -i 's|Microsoft Corporation|VSCodium Team|' resources/linux/rpm/code.spec.template
sed -i 's|Visual Studio Code Team <vscode-linux@microsoft.com>|VSCodium Team https://github.com/VSCodium/vscodium/graphs/contributors|' resources/linux/rpm/code.spec.template
sed -i 's|https://code.visualstudio.com|https://vscodium.com|' resources/linux/rpm/code.spec.template
sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
# snapcraft.yaml
sed -i 's|Visual Studio Code|VSCodium|' resources/linux/rpm/code.spec.template
fi
cd ..

View File

@@ -1,23 +0,0 @@
#!/bin/bash
# thanks to https://www.jviotti.com/2016/03/16/how-to-code-sign-os-x-electron-apps-in-travis-ci.html
# for the helpful instructions
if [[ "$SHOULD_BUILD" == "yes" ]]; then
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
if [ -d "VSCode-darwin" ]; then # just in case the build failed
cd VSCode-darwin
export CERTIFICATE_P12=VSCodium.p12
echo $CERTIFICATE_OSX_P12 | base64 --decode > $CERTIFICATE_P12
export KEYCHAIN=build.keychain
security create-keychain -p mysecretpassword $KEYCHAIN
security default-keychain -s $KEYCHAIN
security unlock-keychain -p mysecretpassword $KEYCHAIN
security import $CERTIFICATE_P12 -k $KEYCHAIN -P $CERTIFICATE_OSX_PASSWORD -T /usr/bin/codesign
# https://docs.travis-ci.com/user/common-build-problems/
security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword $KEYCHAIN
codesign --deep --force --verbose --sign "$CERTIFICATE_OSX_ID" VSCodium.app
fi
fi
fi

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,11 +0,0 @@
#!/bin/sh
HERE="$(dirname "$(readlink -f "${0}")")"
export UNION_PRELOAD="${HERE}"
export PATH="${HERE}"/usr/bin/:"${HERE}"/usr/sbin/:"${HERE}"/usr/games/:"${HERE}"/bin/:"${HERE}"/sbin/:"${PATH}"
export LD_LIBRARY_PATH="${HERE}"/usr/lib/:"${HERE}"/usr/lib/i386-linux-gnu/:"${HERE}"/usr/lib/x86_64-linux-gnu/:"${HERE}"/usr/lib32/:"${HERE}"/usr/lib64/:"${HERE}"/lib/:"${HERE}"/lib/i386-linux-gnu/:"${HERE}"/lib/x86_64-linux-gnu/:"${HERE}"/lib32/:"${HERE}"/lib64/:"${LD_LIBRARY_PATH}"
export XDG_DATA_DIRS="${HERE}"/usr/share/:"${XDG_DATA_DIRS}"
export PERLLIB="${HERE}"/usr/share/perl5/:"${HERE}"/usr/lib/perl5/:"${PERLLIB}"
export GSETTINGS_SCHEMA_DIR="${HERE}"/usr/share/glib-2.0/schemas/:"${GSETTINGS_SCHEMA_DIR}"
export QT_PLUGIN_PATH="${HERE}"/usr/lib/qt4/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib32/qt4/plugins/:"${HERE}"/usr/lib64/qt4/plugins/:"${HERE}"/usr/lib/qt5/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib32/qt5/plugins/:"${HERE}"/usr/lib64/qt5/plugins/:"${QT_PLUGIN_PATH}"
EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2- | sed -e 's|%.||g')
exec ${EXEC} "$@"

View File

@@ -1,349 +0,0 @@
# This file is supposed to be sourced by each Recipe
# that wants to use the functions contained herein
# like so:
# wget -q https://github.com/AppImage/AppImages/raw/${PKG2AICOMMIT}/functions.sh -O ./functions.sh
# . ./functions.sh
# RECIPE=$(realpath "$0")
# Specify a certain commit if you do not want to use master
# by using:
# export PKG2AICOMMIT=<git sha>
if [ -z "$PKG2AICOMMIT" ] ; then
PKG2AICOMMIT=master
fi
# Options for apt-get to use local files rather than the system ones
OPTIONS="-o Debug::NoLocking=1
-o APT::Cache-Limit=125829120
-o Dir::Etc::sourcelist=./sources.list
-o Dir::State=./tmp
-o Dir::Cache=./tmp
-o Dir::State::status=./status
-o Dir::Etc::sourceparts=-
-o APT::Get::List-Cleanup=0
-o APT::Get::AllowUnauthenticated=1
-o Debug::pkgProblemResolver=true
-o Debug::pkgDepCache::AutoInstall=true
-o APT::Install-Recommends=0
-o APT::Install-Suggests=0
"
# Detect if we are running inside Docker
grep docker /proc/1/cgroup >/dev/null && export DOCKER_BUILD=1 || true
# Detect system architecture to know which binaries of AppImage tools
# should be downloaded and used.
case "$(uname -i)" in
x86_64|amd64)
# echo "x86-64 system architecture"
SYSTEM_ARCH="x86_64";;
i?86)
# echo "x86 system architecture"
SYSTEM_ARCH="i686";;
# arm*)
# echo "ARM system architecture"
# SYSTEM_ARCH="";;
unknown|AuthenticAMD|GenuineIntel)
# uname -i not answer on debian, then:
case "$(uname -m)" in
x86_64|amd64)
# echo "x86-64 system architecture"
SYSTEM_ARCH="x86_64";;
i?86)
# echo "x86 system architecture"
SYSTEM_ARCH="i686";;
esac ;;
*)
echo "Unsupported system architecture"
exit 1;;
esac
# Either get the file from remote or from a static place.
# critical for builds without network access like in Open Build Service
cat_file_from_url()
{
cat_excludelist="wget -q $1 -O -"
[ -e "$STATIC_FILES/${1##*/}" ] && cat_excludelist="cat $STATIC_FILES/${1##*/}"
$cat_excludelist
}
git_pull_rebase_helper()
{
git reset --hard HEAD
git pull
}
# Patch /usr to ././ in ./usr
# to make the contents of usr/ relocateable
# (this requires us to cd ./usr before running the application; AppRun does that)
patch_usr()
{
find usr/ -type f -executable -exec sed -i -e "s|/usr|././|g" {} \;
}
# Download AppRun and make it executable
get_apprun()
{
cp ${HERE}/AppRun .
chmod a+x AppRun
}
# Copy the library dependencies of all exectuable files in the current directory
# (it can be beneficial to run this multiple times)
copy_deps()
{
PWD=$(readlink -f .)
FILES=$(find . -type f -executable -or -name *.so.* -or -name *.so | sort | uniq )
for FILE in $FILES ; do
ldd "${FILE}" | grep "=>" | awk '{print $3}' | xargs -I '{}' echo '{}' >> DEPSFILE
done
DEPS=$(cat DEPSFILE | sort | uniq)
for FILE in $DEPS ; do
if [ -e $FILE ] && [[ $(readlink -f $FILE)/ != $PWD/* ]] ; then
cp -v --parents -rfL $FILE ./ || true
fi
done
rm -f DEPSFILE
}
# Move ./lib/ tree to ./usr/lib/
move_lib()
{
mkdir -p ./usr/lib ./lib && find ./lib/ -exec cp -v --parents -rfL {} ./usr/ \; && rm -rf ./lib
mkdir -p ./usr/lib ./lib64 && find ./lib64/ -exec cp -v --parents -rfL {} ./usr/ \; && rm -rf ./lib64
}
# Delete blacklisted files
delete_blacklisted()
{
BLACKLISTED_FILES=$(cat_file_from_url https://github.com/AppImage/pkg2appimage/raw/${PKG2AICOMMIT}/excludelist | sed 's|#.*||g')
echo $BLACKLISTED_FILES
for FILE in $BLACKLISTED_FILES ; do
FILES="$(find . -name "${FILE}" -not -path "./usr/optional/*")"
for FOUND in $FILES ; do
rm -vf "$FOUND" "$(readlink -f "$FOUND")"
done
done
# Do not bundle developer stuff
rm -rf usr/include || true
rm -rf usr/lib/cmake || true
rm -rf usr/lib/pkgconfig || true
find . -name '*.la' | xargs -i rm {}
}
# Echo highest glibc version needed by the executable files in the current directory
glibc_needed()
{
find . -name *.so -or -name *.so.* -or -type f -executable -exec strings {} \; | grep ^GLIBC_2 | sed s/GLIBC_//g | sort --version-sort | uniq | tail -n 1
# find . -name *.so -or -name *.so.* -or -type f -executable -exec readelf -s '{}' 2>/dev/null \; | sed -n 's/.*@GLIBC_//p'| awk '{print $1}' | sort --version-sort | tail -n 1
}
# Add desktop integration
# Usage: get_desktopintegration name_of_desktop_file_and_exectuable
get_desktopintegration()
{
# REALBIN=$(grep -o "^Exec=.*" *.desktop | sed -e 's|Exec=||g' | cut -d " " -f 1 | head -n 1)
# cat_file_from_url https://raw.githubusercontent.com/AppImage/AppImageKit/deprecated/AppImageAssistant/desktopintegration > ./usr/bin/$REALBIN.wrapper
# chmod a+x ./usr/bin/$REALBIN.wrapper
echo "The desktopintegration script is deprecated. Please advise users to use https://github.com/AppImage/appimaged instead."
# sed -i -e "s|^Exec=$REALBIN|Exec=$REALBIN.wrapper|g" $1.desktop
}
# Generate AppImage; this expects $ARCH, $APP and $VERSION to be set
generate_appimage()
{
# Download AppImageAssistant
URL="https://github.com/AppImage/AppImageKit/releases/download/6/AppImageAssistant_6-${SYSTEM_ARCH}.AppImage"
wget -c "$URL" -O AppImageAssistant
chmod a+x ./AppImageAssistant
# if [[ "$RECIPE" == *ecipe ]] ; then
# echo "#!/bin/bash -ex" > ./$APP.AppDir/Recipe
# echo "# This recipe was used to generate this AppImage." >> ./$APP.AppDir/Recipe
# echo "# See http://appimage.org for more information." >> ./$APP.AppDir/Recipe
# echo "" >> ./$APP.AppDir/Recipe
# cat $RECIPE >> ./$APP.AppDir/Recipe
# fi
#
# Detect the architecture of what we are packaging.
# The main binary could be a script, so let's use a .so library
BIN=$(find . -name *.so* -type f | head -n 1)
INFO=$(file "$BIN")
if [ -z $ARCH ] ; then
if [[ $INFO == *"x86-64"* ]] ; then
ARCH=x86_64
elif [[ $INFO == *"i686"* ]] ; then
ARCH=i686
elif [[ $INFO == *"armv6l"* ]] ; then
ARCH=armhf
else
echo "Could not automatically detect the architecture."
echo "Please set the \$ARCH environment variable."
exit 1
fi
fi
mkdir -p ../out || true
rm ../out/$APP"-"$VERSION".glibc"$GLIBC_NEEDED"-"$ARCH".AppImage" 2>/dev/null || true
GLIBC_NEEDED=$(glibc_needed)
./AppImageAssistant ./$APP.AppDir/ ../out/$APP"-"$VERSION".glibc"$GLIBC_NEEDED"-"$ARCH".AppImage"
}
# Generate AppImage type 2
# Additional parameters given to this routine will be passed on to appimagetool
#
# If the environment variable NO_GLIBC_VERSION is set, the required glibc version
# will not be added to the AppImage filename
generate_type2_appimage()
{
# Get the ID of the last successful build on Travis CI
# ID=$(wget -q https://api.travis-ci.org/repos/AppImage/appimagetool/builds -O - | head -n 1 | sed -e 's|}|\n|g' | grep '"result":0' | head -n 1 | sed -e 's|,|\n|g' | grep '"id"' | cut -d ":" -f 2)
# Get the transfer.sh URL from the logfile of the last successful build on Travis CI
# Only Travis knows why build ID and job ID don't match and why the above doesn't give both...
# URL=$(wget -q "https://s3.amazonaws.com/archive.travis-ci.org/jobs/$((ID+1))/log.txt" -O - | grep "https://transfer.sh/.*/appimagetool" | tail -n 1 | sed -e 's|\r||g')
# if [ -z "$URL" ] ; then
# URL=$(wget -q "https://s3.amazonaws.com/archive.travis-ci.org/jobs/$((ID+2))/log.txt" -O - | grep "https://transfer.sh/.*/appimagetool" | tail -n 1 | sed -e 's|\r||g')
# fi
if [ -z "$(which appimagetool)" ] ; then
URL="https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${SYSTEM_ARCH}.AppImage"
wget -c "$URL" -O appimagetool
chmod a+x ./appimagetool
appimagetool=$(readlink -f appimagetool)
else
appimagetool=$(which appimagetool)
fi
if [ "$DOCKER_BUILD" ]; then
appimagetool_tempdir=$(mktemp -d)
mv appimagetool "$appimagetool_tempdir"
pushd "$appimagetool_tempdir" &>/dev/null
ls -al
./appimagetool --appimage-extract
rm appimagetool
appimagetool=$(readlink -f squashfs-root/AppRun)
popd &>/dev/null
_appimagetool_cleanup() { [ -d "$appimagetool_tempdir" ] && rm -r "$appimagetool_tempdir"; }
trap _appimagetool_cleanup EXIT
fi
if [ -z ${NO_GLIBC_VERSION+true} ]; then
GLIBC_NEEDED=$(glibc_needed)
VERSION_EXPANDED=$VERSION.glibc$GLIBC_NEEDED
else
VERSION_EXPANDED=$VERSION
fi
set +x
GLIBC_NEEDED=$(glibc_needed)
if ( [ ! -z "$KEY" ] ) && ( ! -z "$TRAVIS" ) ; then
wget https://github.com/AppImage/AppImageKit/files/584665/data.zip -O data.tar.gz.gpg
( set +x ; echo $KEY | gpg2 --batch --passphrase-fd 0 --no-tty --skip-verify --output data.tar.gz --decrypt data.tar.gz.gpg )
tar xf data.tar.gz
sudo chown -R $USER .gnu*
mv $HOME/.gnu* $HOME/.gnu_old ; mv .gnu* $HOME/
VERSION=$VERSION_EXPANDED "$appimagetool" $@ -n -s --bintray-user $BINTRAY_USER --bintray-repo $BINTRAY_REPO -v ./$APP.AppDir/
else
VERSION=$VERSION_EXPANDED "$appimagetool" $@ -n --bintray-user $BINTRAY_USER --bintray-repo $BINTRAY_REPO -v ./$APP.AppDir/
fi
set -x
mkdir -p ../out/ || true
mv *.AppImage* ../out/
}
# Generate status file for use by apt-get; assuming that the recipe uses no newer
# ingredients than what would require more recent dependencies than what we assume
# to be part of the base system
generate_status()
{
mkdir -p ./tmp/archives/
mkdir -p ./tmp/lists/partial
touch tmp/pkgcache.bin tmp/srcpkgcache.bin
if [ -e "${HERE}/usr/share/pkg2appimage/excludedeblist" ] ; then
EXCLUDEDEBLIST="${HERE}/usr/share/pkg2appimage/excludedeblist"
else
wget -q -c "https://github.com/AppImage/AppImages/raw/${PKG2AICOMMIT}/excludedeblist"
EXCLUDEDEBLIST=excludedeblist
fi
rm status 2>/dev/null || true
for PACKAGE in $(cat excludedeblist | cut -d "#" -f 1) ; do
printf "Package: $PACKAGE\nStatus: install ok installed\nArchitecture: all\nVersion: 9:999.999.999\n\n" >> status
done
}
# Find the desktop file and copy it to the AppDir
get_desktop()
{
find usr/share/applications -iname "*${LOWERAPP}.desktop" -exec cp {} . \; || true
}
fix_desktop() {
# fix trailing semicolons
for key in Actions Categories Implements Keywords MimeType NotShowIn OnlyShowIn; do
sed -i '/'"$key"'.*[^;]$/s/$/;/' $1
done
}
# Find the icon file and copy it to the AppDir
get_icon()
{
find ./usr/share/pixmaps/$LOWERAPP.png -exec cp {} . \; 2>/dev/null || true
find ./usr/share/icons -path *64* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true
find ./usr/share/icons -path *128* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true
find ./usr/share/icons -path *512* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true
find ./usr/share/icons -path *256* -name $LOWERAPP.png -exec cp {} . \; 2>/dev/null || true
ls -lh $LOWERAPP.png || true
}
# Find out the version
get_version()
{
THEDEB=$(find ../*.deb -name $LOWERAPP"_*" | head -n 1)
if [ -z "$THEDEB" ] ; then
echo "Version could not be determined from the .deb; you need to determine it manually"
fi
VERSION=$(echo $THEDEB | cut -d "~" -f 1 | cut -d "_" -f 2 | cut -d "-" -f 1 | sed -e 's|1%3a||g' | sed -e 's|.dfsg||g' )
echo $VERSION
}
# transfer.sh
transfer() { if [ $# -eq 0 ]; then echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"; return 1; fi
tmpfile=$( mktemp -t transferXXX ); if tty -s; then basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g'); curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile; else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ; fi; cat $tmpfile; rm -f $tmpfile; }
# Patch binary files; fill with padding if replacement is shorter than original
# http://everydaywithlinux.blogspot.de/2012/11/patch-strings-in-binary-files-with-sed.html
# Example: patch_strings_in_file foo "/usr/local/lib/foo" "/usr/lib/foo"
patch_strings_in_file() {
local FILE="$1"
local PATTERN="$2"
local REPLACEMENT="$3"
# Find all unique strings in FILE that contain the pattern
STRINGS=$(strings ${FILE} | grep ${PATTERN} | sort -u -r)
if [ "${STRINGS}" != "" ] ; then
echo "File '${FILE}' contain strings with '${PATTERN}' in them:"
for OLD_STRING in ${STRINGS} ; do
# Create the new string with a simple bash-replacement
NEW_STRING=${OLD_STRING//${PATTERN}/${REPLACEMENT}}
# Create null terminated ASCII HEX representations of the strings
OLD_STRING_HEX="$(echo -n ${OLD_STRING} | xxd -g 0 -u -ps -c 256)00"
NEW_STRING_HEX="$(echo -n ${NEW_STRING} | xxd -g 0 -u -ps -c 256)00"
if [ ${#NEW_STRING_HEX} -le ${#OLD_STRING_HEX} ] ; then
# Pad the replacement string with null terminations so the
# length matches the original string
while [ ${#NEW_STRING_HEX} -lt ${#OLD_STRING_HEX} ] ; do
NEW_STRING_HEX="${NEW_STRING_HEX}00"
done
# Now, replace every occurrence of OLD_STRING with NEW_STRING
echo -n "Replacing ${OLD_STRING} with ${NEW_STRING}... "
hexdump -ve '1/1 "%.2X"' ${FILE} | \
sed "s/${OLD_STRING_HEX}/${NEW_STRING_HEX}/g" | \
xxd -r -p > ${FILE}.tmp
chmod --reference ${FILE} ${FILE}.tmp
mv ${FILE}.tmp ${FILE}
echo "Done!"
else
echo "New string '${NEW_STRING}' is longer than old" \
"string '${OLD_STRING}'. Skipping."
fi
done
fi
}

View File

@@ -1,471 +0,0 @@
#!/usr/bin/env bash
# env
ARCH=x86_64
HERE="$(dirname "$(readlink -f "${0}")")"
# Use privately bundled apt-get and dpkg-deb if available; can be got on trusty using
# apt download apt libapt-pkg4.12 libbz2-1.0 liblzma5 multiarch-support zlib1g dpkg
if [ -e "${HERE}/libunionpreload.so" ] ; then
export UNION_PRELOAD="${HERE}"
export LD_PRELOAD="${HERE}/libunionpreload.so"
export PATH="${HERE}"/usr/bin/:"${HERE}"/usr/sbin/:"${HERE}"/usr/games/:"${HERE}"/bin/:"${HERE}"/sbin/:"${PATH}"
export LD_LIBRARY_PATH="${HERE}"/usr/lib/:"${HERE}"/usr/lib/i386-linux-gnu/:"${HERE}"/usr/lib/x86_64-linux-gnu/:"${HERE}"/usr/lib32/:"${HERE}"/usr/lib64/:"${HERE}"/lib/:"${HERE}"/lib/i386-linux-gnu/:"${HERE}"/lib/x86_64-linux-gnu/:"${HERE}"/lib32/:"${HERE}"/lib64/:"${LD_LIBRARY_PATH}"
export XDG_DATA_DIRS="${HERE}"/usr/share/:"${XDG_DATA_DIRS}"
fi
# Specify a certain commit if you do not want to use master
# by using:
# export PKG2AICOMMIT=<git sha>
if [ -z "$PKG2AICOMMIT" ] ; then
PKG2AICOMMIT=master
fi
usage() {
if [ -z "$APPIMAGE" ] ; then
MYSELF="$0"
else
MYSELF="$APPIMAGE"
fi
echo "usage:"
echo " $MYSELF [--no-di] META-NAME|YAMLFILE"
echo ""
echo "options:"
echo " --di enable legacy desktop integration (unsupported)"
exit 1
}
if [ $# -eq 0 ] || [ "x${!#}" = "x--di" ] ; then
usage
fi
if [ $# -eq 2 ] && [ "x$1" != "x--di" ] ; then
usage
fi
if [ "x$1" = "x--di" ] ; then
ENABLE_DI="yes"
else
ENABLE_DI="no"
fi
# Halt on errors
set -e
set -x
# Check dependencies
which wget >/dev/null 2>&1 || ( echo wget missing && exit 1 )
which grep >/dev/null 2>&1 || ( echo grep missing && exit 1 )
which sed >/dev/null 2>&1 || ( echo sed missing && exit 1 )
which cut >/dev/null 2>&1 || ( echo cut missing && exit 1 )
which file >/dev/null 2>&1 || ( echo file missing && exit 1 )
which desktop-file-validate >/dev/null 2>&1 || ( echo desktop-file-validate missing && exit 1 )
# If the yaml file doesn't exist locally, get it from GitHub
if [ ! -f "${!#}" ] ; then
YAMLFILE=/tmp/_recipe.yml
rm -f "$YAMLFILE"
wget -q "https://github.com/AppImage/AppImages/raw/${PKG2AICOMMIT}/recipes/${!#}.yml" -O "$YAMLFILE"
else
YAMLFILE=$(readlink -f "${!#}")
fi
# Lightweight bash-only dpkg-scanpackages replacement
scanpackages() {
for deb in *.deb ; do
dpkg -I $deb | sed 's/^ *//g' | grep -i -E '(package|version|installed-size|architecture|depends|priority):'
echo "Filename: $(readlink -f $deb)"
echo "MD5sum: $(md5sum -b $deb | cut -d' ' -f1)"
echo "SHA1: $(sha1sum -b $deb | cut -d' ' -f1)"
echo "SHA256: $(sha256sum -b $deb | cut -d' ' -f1)"
echo
done
}
# Function to parse yaml
# https://gist.github.com/epiloque/8cf512c6d64641bde388
# based on https://gist.github.com/pkuczynski/8665367
parse_yaml() {
local prefix=$2
local s
local w
local fs
s='[[:blank:]]*'
w='[a-zA-Z0-9_]*'
fs="$(echo @|tr @ '\034')"
sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s[:-]$s\(.*\)$s\$|\1$fs\2$fs\3|p" "$1" |
awk -F"$fs" '{
indent = length($1)/2;
vname[indent] = $2;
for (i in vname) {if (i > indent) {delete vname[i]}}
if (length($3) > 0) {
vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
printf("%s%s%s=(\"%s\")\n", "'"$prefix"'",vn, $2, $3);
}
}' | sed 's/_=/+=/g'
}
# Read yaml file
parse_yaml $YAMLFILE "_"
eval $(parse_yaml $YAMLFILE "_")
if [ ! -z $_enable_di ]; then
ENABLE_DI="$_enable_di"
fi
# Execute multiple script lines together as one
# shell_execute filename key_of_group_of_commands
shell_execute() {
if [ -f /tmp/recipe_script ] ; then
rm /tmp/recipe_script
fi
parse_yaml $YAMLFILE "_" | grep "^$2+=" > /tmp/recipe_script
sed -i -e 's|^'$2'+=("||g' /tmp/recipe_script
sed -i -e 's|")$||g' /tmp/recipe_script
bash -ex /tmp/recipe_script
rm /tmp/recipe_script
}
APP=$_app
LOWERAPP=${APP,,}
if [ ! -z $_lowerapp ] ; then
LOWERAPP=$_lowerapp
fi
mkdir -p ./$APP/$APP.AppDir/usr/lib
cd ./$APP/
if [ -d "./$APP.AppDir/" ] ; then
rm -rf ./$APP.AppDir/
fi
# Source the bundled functions.sh if it exists
# in "${HERE}/usr/share/pkg2appimage/functions.sh"
# or source a user-provided functions.sh if the environment
# variable FUNCTIONS_SH was set and the file exists
if [ -e "${HERE}/usr/share/pkg2appimage/functions.sh" ] ; then
. "${HERE}/usr/share/pkg2appimage/functions.sh"
elif [ -z "$FUNCTIONS_SH" ] ; then
if [ ! -e "${HERE}/functions.sh" ] ; then
echo "functions.sh IS NOT FOUND, PLEASE CONTACT CODIUM APPIMAGE MAINTAINER!!!"
fi
cp ${HERE}/functions.sh ./functions.sh
. ./functions.sh
else
if [ -e "$FUNCTIONS_SH" ] ; then
. "$FUNCTIONS_SH"
fi
fi
# If there is an ARCH environment variable, then use that
# architecture to for apt-get. Not that for the AppImage to be
# operable, we also need to embed a matching AppImage runtime
# and ingredients of that architecture. Debian packages
# should be available for most architectures, e.g., oldstable
# has "armhf"
if [ ! -z $ARCH ] ; then
OPTIONS="$OPTIONS -o APT::Architecture=$ARCH"
fi
if [ ! -z "${_ingredients_ghreleases[0]}" ] ; then
for GHREPO in "${_ingredients_ghreleases[@]}" ; do
wget -q "https://github.com/${GHREPO}/releases/" -O /tmp/gh-release.html
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep x86_64 | head -n 1 | cut -d '"' -f 2)
if [ -z "$DEB" ] ; then
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep amd64 | head -n 1 | cut -d '"' -f 2)
fi
if [ -z "$DEB" ] ; then
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep x64 | head -n 1 | cut -d '"' -f 2)
fi
if [ -z "$DEB" ] ; then
DEB=$(cat /tmp/gh-release.html | grep ".deb" | grep linux64 | head -n 1 | cut -d '"' -f 2)
fi
rm /tmp/gh-release.html
wget -c "https://github.com/${DEB}"
done
fi
if [ ! -z "${_ingredients_dist}" ] ; then
rm status 2>/dev/null || true
generate_status
# Some packages depend on packages which we do not want to bundle,
# in addition to the global excludes defined in excludedeblist.
# Use
# ingredients:
# exclude:
# - packagename
if [ ! -z "${_ingredients_exclude[0]}" ] ; then
for PACKAGE in "${_ingredients_exclude[@]}" ; do
printf "Package: $PACKAGE\nStatus: install ok installed\nArchitecture: all\nVersion: 9:999.999.999\n\n" >> status
done
fi
# Some packages depend on an exact version of a dependency to be installed.
# Use
# ingredients:
# pretend:
# - packagename version_to_be_pretended
if [ ! -z "${_ingredients_pretend[0]}" ] ; then
for PRETEND in "${_ingredients_pretend[@]}" ; do
P_PKG=$(echo "$PRETEND" | cut -d " " -f 1)
P_VER=$(echo "$PRETEND" | cut -d " " -f 2)
cat status | tr '\n' '@' | sed -e 's|@@|\n\n|g' | sed -e 's|Package: '"$P_PKG"'@Status: install ok installed@Architecture: all@Version: 9:999.999.999|Package: '"$P_PKG"'@Status: install ok installed@Architecture: all@Version: '"$P_VER"'|g' | sed -e 's|@|\n|g' > status.temp
mv status.temp status
done
fi
if [ -e sources.list ] ; then
rm sources.list
fi
for SOURCE in "${_ingredients_sources[@]}" ; do
echo "${SOURCE}" >> sources.list
done
for PPA in "${_ingredients_ppas[@]}" ; do
echo "deb http://ppa.launchpad.net/${PPA}/ubuntu ${_ingredients_dist} main" >> sources.list
done
for DEBFILE in "${_ingredients_debs[@]}" ; do
cp ${DEBFILE} .
done
# Use libcurl-slim to reduce AppImage size, thanks darealshinji
# Not really compiled on xenial but CentOS 6, https://github.com/AppImage/AppImages/issues/187
echo "deb http://ppa.launchpad.net/djcj/libcurl-slim/ubuntu xenial main" >> sources.list
# Use gnutls-patched to have libgnutls look in various distributions' places for certificates,
# https://github.com/darealshinji/vlc-AppImage/issues/1#issuecomment-321041496
# echo "deb http://ppa.launchpad.net/djcj/gnutls-patched/ubuntu ${_ingredients_dist} main" >> sources.list
### echo "deb http://ppa.launchpad.net/djcj/gnutls-patched/ubuntu trusty main" >> sources.list # https://github.com/AppImage/pkg2appimage/issues/345
fi
if [ ! -z "${_ingredients_script[0]}" ] ; then
# Execute extra steps defined in recipe
shell_execute $YAMLFILE _ingredients_script
fi
if [ ! -z "${_ingredients_dist}" ] ; then
# Some projects provide raw .deb files without a repository
# hence we create our own local repository as part of
# the AppImage creation process in order to "install"
# the package using apt-get as normal
if [ ! -z "${_ingredients_debs[0]}" ] ; then
for DEB in "${_ingredients_debs[@]}" ; do
if [ ! -f $(basename "$DEB") ] ; then
wget -c $DEB
fi
done
fi
scanpackages | gzip -9c > Packages.gz
echo "deb file:$(readlink -e $PWD) ./" >> sources.list
INSTALL=$LOWERAPP
if [ ! -z "${_ingredients_package}" ] ; then
INSTALL="${_ingredients_package}"
fi
if [ ! -z "${_ingredients_packages}" ] ; then
INSTALL=""
fi
# If packages are specifically listed, only install these, not a package with the name of the app
if [ ! -z "${_ingredients_packages[0]}" ] ; then
INSTALL=${_ingredients_packages[@]}
fi
apt-get -o Acquire::AllowInsecureRepositories=true -o Acquire::Languages="none" -o Acquire::AllowDowngradeToInsecureRepositories=true $OPTIONS update || true
URLS=$(apt-get --allow-unauthenticated -o Apt::Get::AllowUnauthenticated=true $OPTIONS -y install --print-uris $INSTALL | cut -d "'" -f 2 | grep -e "^http") || true
if which aria2c &>/dev/null; then
dltool=aria2c
else
dltool=wget
fi
$dltool -c -i- <<<"$URLS"
fi
if [ ! -z "${_ingredients_post_script[0]}" ] ; then
# Execute extra steps defined in recipe
shell_execute $YAMLFILE _ingredients_post_script
fi
mkdir -p ./$APP.AppDir/
cd ./$APP.AppDir/
mkdir -p usr/bin usr/lib
find ../*.deb -exec dpkg-deb -X {} . \; || true
unset LD_PRELOAD
# Try to copy icons to standard locations where appimaged can pick them up
mkdir -p usr/share/icons/hicolor/{22x22,24x24,32x32,48x48,64x64,128x128,256x256,512x512}/apps/
find . -path *icons* -path *22* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/22x22/apps/ \; || true
find . -path *icons* -path *24* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/24x24/apps/ \; || true
find . -path *icons* -path *32* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/32x32/apps/ \; || true
find . -path *icons* -path *48* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/48x48/apps/ \; || true
find . -path *icons* -path *64* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/64x64/apps/ \; || true
find . -path *icons* -path *128* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/128x128/apps/ \; || true
find . -path *icons* -path *256* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/256x256/apps/ \; || true
find . -path *icons* -path *512* -name "*$LOWERAPP*" -exec cp {} usr/share/icons/hicolor/512x512/apps/ \; || true
get_icon
if [ -z "${_union}" ] ; then
get_apprun
else
cat > AppRun <<\EOF
#!/bin/sh
HERE="$(dirname "$(readlink -f "${0}")")"
export UNION_PRELOAD="${HERE}"
export LD_PRELOAD="${HERE}/libunionpreload.so"
export PATH="${HERE}"/usr/bin/:"${HERE}"/usr/sbin/:"${HERE}"/usr/games/:"${HERE}"/bin/:"${HERE}"/sbin/:"${PATH}"
export LD_LIBRARY_PATH="${HERE}"/usr/lib/:"${HERE}"/usr/lib/i386-linux-gnu/:"${HERE}"/usr/lib/x86_64-linux-gnu/:"${HERE}"/usr/lib32/:"${HERE}"/usr/lib64/:"${HERE}"/lib/:"${HERE}"/lib/i386-linux-gnu/:"${HERE}"/lib/x86_64-linux-gnu/:"${HERE}"/lib32/:"${HERE}"/lib64/:"${LD_LIBRARY_PATH}"
export PYTHONPATH="${HERE}"/usr/share/pyshared/:"${PYTHONPATH}"
export PYTHONHOME="${HERE}"/usr/
export XDG_DATA_DIRS="${HERE}"/usr/share/:"${XDG_DATA_DIRS}"
export PERLLIB="${HERE}"/usr/share/perl5/:"${HERE}"/usr/lib/perl5/:"${PERLLIB}"
export GSETTINGS_SCHEMA_DIR="${HERE}"/usr/share/glib-2.0/schemas/:"${GSETTINGS_SCHEMA_DIR}"
export QT_PLUGIN_PATH="${HERE}"/usr/lib/qt4/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt4/plugins/:"${HERE}"/usr/lib32/qt4/plugins/:"${HERE}"/usr/lib64/qt4/plugins/:"${HERE}"/usr/lib/qt5/plugins/:"${HERE}"/usr/lib/i386-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib/x86_64-linux-gnu/qt5/plugins/:"${HERE}"/usr/lib32/qt5/plugins/:"${HERE}"/usr/lib64/qt5/plugins/:"${QT_PLUGIN_PATH}"
EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2- | sed -e 's|%.||g')
exec ${EXEC} "$@"
EOF
chmod a+x AppRun
fi
get_desktop
# Prevent Qt from loading plugins from the system
unset QTPATH
QTPATH=$(find usr/lib -type d -name qt4 -or -name qt5 | sed -e 's|usr/|../|g')
if [ ! -z $QTPATH ] ; then
cat > usr/bin/qt.conf <<EOF
[Paths]
Prefix = $QTPATH
EOF
fi
# http://www.mono-project.com/docs/advanced/assemblies-and-the-gac/
# At runtime, Mono looks in three places for assemblies necessary
# to run a program. It first searches the location of the executing assembly.
# For this to work without setting $MONO_PATH, we need to move the
# main *.exe to usr/lib/mono/exe, because we move all "assemblies" (sic)
# there in this script
if [ -e usr/lib/mono ] ; then
# Force all so files referenced in config files into LD_LIBRARY_PATH
find . -name "*.dll.config" -exec cat {} > temp \;
# Remove all absolute paths
sed -i -E 's|target=\"\/(.*\/)([a-z0-9].*?)>|target=\"\2>|g' temp
SONAMES=$(cat temp | cut -d '"' -f 4 | grep ".so" || true)
if [ "" != "$SONAMES" ] ; then
for SONAME in $SONAMES; do
find . -name "$SONAME" -exec mv {} usr/lib \;
done
fi
rm temp
PATH_OF_THE_EXE="usr/lib/mono/exe"
mkdir -p "$PATH_OF_THE_EXE"
# Force all dll files into PATH_OF_THE_EXE (or MONO_PATH which we would have to set)
find . -name "*.dll" -and -not -name "mscorlib.dll" -exec mv {} "$PATH_OF_THE_EXE" \;
# Edit all config files in place to remove absolute paths
find . -name "*.dll.config" -exec sed -i -E 's|target=\"\/(.*\/)([a-z0-9].*?)>|target=\"\2>|g' {} \;
# Force all config files into the PATH_OF_THE_EXE (or MONO_PATH which we would have to set)
find . -name "*.dll.config" -exec mv {} "$PATH_OF_THE_EXE" \;
# Remove gac, we are not using it since it is convoluted
rm -rf usr/lib/mono/gac/
fi
if [ -d "./usr/lib/x86_64-linux-gnu/gstreamer-1.0/" ] ; then
mv ./usr/lib/x86_64-linux-gnu/gstreamer-1.0/* ./usr/lib/x86_64-linux-gnu/
rm -r ./usr/lib/x86_64-linux-gnu/gstreamer-1.0
fi
if [ -d "./usr/lib/x86_64-linux-gnu/pulseaudio/" ] ; then
mv ./usr/lib/x86_64-linux-gnu/pulseaudio/* ./usr/lib/x86_64-linux-gnu/
rm -r ./usr/lib/x86_64-linux-gnu/pulseaudio
fi
# Execute extra steps defined in recipe
if [ ! -z "${_script}" ] ; then
shell_execute $YAMLFILE _script
fi
DESKTOP=$(find . -name '*.desktop' | sort | head -n 1)
# desktop-file-validate complains about missing trailing semicolons for some
# keys although the format definition says that they are optional
fix_desktop "$DESKTOP"
# Some non-distribution provided applications have an absolute
# path in the Exec= line which we remove for relocateability
if [ -z "$DESKTOP" ] ; then
echo "desktop file not found, aborting"
exit 1
else
desktop-file-validate "$DESKTOP" || exit 1
ORIG=$(grep -o "^Exec=.*$" "${DESKTOP}" | head -n 1| cut -d " " -f 1)
REPL=$(basename $(grep -o "^Exec=.*$" "${DESKTOP}" | head -n 1 | cut -d " " -f 1 | sed -e 's|Exec=||g'))
sed -i -e 's|'"${ORIG}"'|Exec='"${REPL}"'|g' "${DESKTOP}"
fi
# Compile GLib schemas if the subdirectory is present in the AppImage
# AppRun has to export GSETTINGS_SCHEMA_DIR for this to work
if [ -d usr/share/glib-2.0/schemas/ ] ; then
( cd usr/share/glib-2.0/schemas/ ; glib-compile-schemas . )
fi
if [ -f ../VERSION ] ; then
VERSION=$(cat ../VERSION)
else
get_version || true
fi
# patch_usr
# Patching only the executable files seems not to be enough for some apps
if [ ! -z "${_binpatch}" ] ; then
find usr/ -type f -exec sed -i -e 's|/usr|././|g' {} \;
find usr/ -type f -exec sed -i -e 's@././/bin/env@/usr/bin/env@g' {} \;
fi
# Don't suffer from NIH; use LD_PRELOAD to override calls to /usr paths
if [ ! -z "${_union}" ] ; then
mkdir -p usr/src/
wget -q "https://raw.githubusercontent.com/mikix/deb2snap/master/src/preload.c" -O - | \
sed -e 's|SNAPPY|UNION|g' | sed -e 's|SNAPP|UNION|g' | sed -e 's|SNAP|UNION|g' | \
sed -e 's|snappy|union|g' > usr/src/libunionpreload.c
gcc -shared -fPIC usr/src/libunionpreload.c -o libunionpreload.so -ldl -DUNION_LIBNAME=\"libunionpreload.so\"
strip libunionpreload.so
fi
delete_blacklisted
if [ "$ENABLE_DI" = "yes" ] ; then
get_desktopintegration $LOWERAPP
fi
# Fix desktop files that have file endings for icons
sed -i -e 's|\.png||g' *.desktop || true
sed -i -e 's|\.svg||g' *.desktop || true
sed -i -e 's|\.svgz||g' *.desktop || true
sed -i -e 's|\.xpm||g' *.desktop || true
# Setting PYTHONHOME instead
# Fix Python imports,
# https://github.com/AppImage/AppImages/issues/172
# SITECUSTOMIZEFILES=$(find . -name "sitecustomize.py")
# for SITECUSTOMIZEFILE in $SITECUSTOMIZEFILES ; do
# rm $SITECUSTOMIZEFILE # Remove symlinks, replace by files
# cat > $SITECUSTOMIZEFILE <<\EOF
# import sys,os
# if sys.version_info[0] < 3:
# prefix = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(sys.path[0]))))
# sys.path = [ prefix+s for s in sys.path if not s.startswith(prefix) ]
# EOF
# done
# Execute extra steps defined in recipe
if [ ! -z "${_post_script[0]}" ] ; then
shell_execute $YAMLFILE _post_script
fi
# Go out of AppImage
cd ..
generate_type2_appimage -u "gh-releases-zsync|VSCodium|vscodium|latest|*.AppImage.zsync"
ls -lh ../out/*.AppImage*

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 227 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
src/resources/win32/code_70x70.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 KiB

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 593 KiB

After

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 KiB

After

Width:  |  Height:  |  Size: 580 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 971 KiB

After

Width:  |  Height:  |  Size: 730 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 959 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Some files were not shown because too many files have changed in this diff Show More