Compare commits
226 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
67d5db8019 | ||
|
|
eeedf51ab3 | ||
|
|
fd8e968c1e | ||
|
|
51a653b6e4 | ||
|
|
add743eead | ||
|
|
14d40ad96f | ||
|
|
9f92b7f073 | ||
|
|
c25fd7717b | ||
|
|
3895b385eb | ||
|
|
db359f0711 | ||
|
|
22c41976f2 | ||
|
|
80f4d30638 | ||
|
|
e88869bbf4 | ||
|
|
d695216317 | ||
|
|
e4b87c1a0e | ||
|
|
d6fcc82584 | ||
|
|
34aa7b0d89 | ||
|
|
bc0826868c | ||
|
|
c2c3525405 | ||
|
|
de31868635 | ||
|
|
5004481ea9 | ||
|
|
f63fbe4292 | ||
|
|
8111747fab | ||
|
|
765a4b63ad | ||
|
|
0355e7013c | ||
|
|
f87035e3e6 | ||
|
|
6367d32c32 | ||
|
|
d1adafac84 | ||
|
|
fb100d772b | ||
|
|
f1ac78e6ed | ||
|
|
42bc96ba21 | ||
|
|
40f5d1398b | ||
|
|
000ede1322 | ||
|
|
0ca513930d | ||
|
|
6788101859 | ||
|
|
687d644b41 | ||
|
|
cb04b93044 | ||
|
|
ed126b5cb2 | ||
|
|
fabacf1c1a | ||
|
|
8347fbcdc8 | ||
|
|
5dd8c0e6da | ||
|
|
d03f6d5442 | ||
|
|
35f5a5a264 | ||
|
|
ccb2ee47b3 | ||
|
|
a3465c0f1b | ||
|
|
cb031ffd75 | ||
|
|
c440844e99 | ||
|
|
26a5bfcab8 | ||
|
|
e379b37110 | ||
|
|
4612db050a | ||
|
|
2c61228528 | ||
|
|
7b2c725cac | ||
|
|
a8b43ff2a5 | ||
|
|
588db890f0 | ||
|
|
08d8ad26ab | ||
|
|
1501d185c2 | ||
|
|
2fdaec5163 | ||
|
|
818097ca7e | ||
|
|
845f748de5 | ||
|
|
2ea6d93325 | ||
|
|
98a9a1b231 | ||
|
|
3bba077e1e | ||
|
|
6f3791a5ca | ||
|
|
1a3eba742f | ||
|
|
75bbad9a0d | ||
|
|
31b80c8c09 | ||
|
|
e891ce2dcd | ||
|
|
8d8c0cd3fc | ||
|
|
6963e0db5e | ||
|
|
51413d265e | ||
|
|
df742b9ee9 | ||
|
|
cfc5bbd51e | ||
|
|
d3a7edee21 | ||
|
|
6bf38fa316 | ||
|
|
d203723bd5 | ||
|
|
880f505515 | ||
|
|
8b57482521 | ||
|
|
6d1b1c06bc | ||
|
|
112b141bf2 | ||
|
|
53b56dbebb | ||
|
|
cd6e1485b5 | ||
|
|
f787c21b3c | ||
|
|
74e4592337 | ||
|
|
eb6ca84e21 | ||
|
|
9afbbd903b | ||
|
|
e21f491ecd | ||
|
|
5b1a4a1950 | ||
|
|
91f1d58dd7 | ||
|
|
d358627a19 | ||
|
|
06cc20f63b | ||
|
|
88503d7855 | ||
|
|
b44a4f56c4 | ||
|
|
72781d2f52 | ||
|
|
492c8c658e | ||
|
|
59ef86968e | ||
|
|
49489575bb | ||
|
|
606674936f | ||
|
|
4a0a474af7 | ||
|
|
8f8a71d932 | ||
|
|
5dfd780291 | ||
|
|
2653d09ffa | ||
|
|
f3b156bfcd | ||
|
|
4be6447a1d | ||
|
|
1245596c1c | ||
|
|
c46aebbbdc | ||
|
|
079e741bcc | ||
|
|
8861d9c2d9 | ||
|
|
d213b48a7f | ||
|
|
6d24ed1d62 | ||
|
|
99b3268f2b | ||
|
|
4baaf93eb2 | ||
|
|
1c13ffb556 | ||
|
|
db1afbd17a | ||
|
|
b5a6849834 | ||
|
|
b97f997a40 | ||
|
|
c2b46ceb35 | ||
|
|
b6b51ba510 | ||
|
|
3f1e9ec9b4 | ||
|
|
81ef7c6d8f | ||
|
|
02f69839a7 | ||
|
|
0f6cfd5989 | ||
|
|
f1233fc9b8 | ||
|
|
265627feec | ||
|
|
bea2917180 | ||
|
|
4ad9544910 | ||
|
|
963aaf685a | ||
|
|
4b97d24b5f | ||
|
|
53368f6991 | ||
|
|
724b1d3d21 | ||
|
|
9d3751db59 | ||
|
|
e4db49f31a | ||
|
|
2b1aedba19 | ||
|
|
a9e74eb2bd | ||
|
|
fa720f1e0c | ||
|
|
75a79410d3 | ||
|
|
edb1c6ce8b | ||
|
|
f5dc0559c2 | ||
|
|
ff70dffab8 | ||
|
|
ff2d078db8 | ||
|
|
1db9cfba3f | ||
|
|
4860c1bca9 | ||
|
|
7147a3a52b | ||
|
|
798eb8cb11 | ||
|
|
1c6cb799c8 | ||
|
|
4114f3484b | ||
|
|
d7fe3923fc | ||
|
|
7b1c9aff73 | ||
|
|
a5b2066f76 | ||
|
|
376c501f95 | ||
|
|
ae7942f5e5 | ||
|
|
eebde70091 | ||
|
|
a7e8154e98 | ||
|
|
69f1e08df3 | ||
|
|
13c905e2d8 | ||
|
|
3687110918 | ||
|
|
c72968db2d | ||
|
|
ec6568188f | ||
|
|
0608a0e812 | ||
|
|
69d8ba45eb | ||
|
|
c904b620f1 | ||
|
|
5e481cb178 | ||
|
|
39d4b9c134 | ||
|
|
f6363a3665 | ||
|
|
4ac72d1b71 | ||
|
|
1fe19328cc | ||
|
|
d774292e9f | ||
|
|
7911c1a336 | ||
|
|
273bb0fae2 | ||
|
|
4f99cbf064 | ||
|
|
3290066771 | ||
|
|
5b2cfc70d3 | ||
|
|
0d98ab9664 | ||
|
|
84a944e39f | ||
|
|
207c9cd04b | ||
|
|
11db2cfa65 | ||
|
|
a12f6d7dce | ||
|
|
70f523fbfe | ||
|
|
a47dcab06a | ||
|
|
2f6d19354f | ||
|
|
2cdcb23c1a | ||
|
|
e37fe1cc3b | ||
|
|
de66a50908 | ||
|
|
6aa7f0a180 | ||
|
|
d6fc93a4b5 | ||
|
|
f70c614be3 | ||
|
|
2ea06de9f8 | ||
|
|
64e0cd0c7f | ||
|
|
33bc3b2f8b | ||
|
|
7452656dd9 | ||
|
|
6a307fcc6d | ||
|
|
79a2dd7d51 | ||
|
|
b6c2a40d0b | ||
|
|
ac42eadd68 | ||
|
|
1b9d7adc60 | ||
|
|
532959ee9a | ||
|
|
f9f92ce008 | ||
|
|
0f3afe4cba | ||
|
|
562f4d484f | ||
|
|
cf4adbf6f8 | ||
|
|
b8a1f7c979 | ||
|
|
34953d11f3 | ||
|
|
ab7d14add8 | ||
|
|
4fe1ea6727 | ||
|
|
a61e56c152 | ||
|
|
a02839b466 | ||
|
|
890377a893 | ||
|
|
e95b3f0732 | ||
|
|
c38cc161c0 | ||
|
|
4cf7166a48 | ||
|
|
f5bb3f6007 | ||
|
|
a1596e9820 | ||
|
|
3ccdd1171d | ||
|
|
4dbc77dbba | ||
|
|
1991d1af61 | ||
|
|
56cce9d14c | ||
|
|
cf28585423 | ||
|
|
1b421c701c | ||
|
|
85da65c0b0 | ||
|
|
1633faf377 | ||
|
|
2564115929 | ||
|
|
dd6e08a285 | ||
|
|
b5df7d5af8 | ||
|
|
8096387e74 | ||
|
|
7b764d5c5b | ||
|
|
31ad142664 | ||
|
|
a4ea6d60a4 |
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Please confirm that this problem is VSCodium-specific**
|
||||
- [ ] This bug doesn't happen if I use Microsoft's Visual Studio Code. It only happens in VSCodium.
|
||||
|
||||
**Please confirm that the issue/resolution isn't already documented**
|
||||
- [ ] I checked [the Docs page](https://github.com/VSCodium/vscodium/blob/master/DOCS.md) and my issue is not mentioned there.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. Mac OS, Ubuntu 16.04, etc]
|
||||
- Architecture [e.g. x64, ia32, arm64]
|
||||
- Version [e.g. 1.33.0]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
33
.travis.yml
@@ -2,21 +2,25 @@ matrix:
|
||||
include:
|
||||
- os: linux
|
||||
sudo: required
|
||||
env: BUILDARCH=x64
|
||||
dist: trusty
|
||||
- os: linux
|
||||
sudo: required
|
||||
env: BUILDARCH=ia32
|
||||
# - os: linux
|
||||
# sudo: required
|
||||
# env: BUILDARCH=arm64
|
||||
env: BUILDARCH=arm64
|
||||
dist: trusty
|
||||
- os: linux
|
||||
sudo: required
|
||||
env: BUILDARCH=arm
|
||||
dist: trusty
|
||||
- os: osx
|
||||
|
||||
language: node_js
|
||||
node_js: "8"
|
||||
node_js: "12"
|
||||
|
||||
before_install:
|
||||
- curl -o- -L https://yarnpkg.com/install.sh | bash
|
||||
- export PATH="$HOME/.yarn/bin:$PATH"
|
||||
- ./install_deps.sh
|
||||
- . install_deps.sh
|
||||
- . get_repo.sh
|
||||
- . check_tags.sh
|
||||
|
||||
@@ -24,7 +28,10 @@ script:
|
||||
- ./build.sh
|
||||
|
||||
before_deploy:
|
||||
- ./sign_mac_app.sh
|
||||
- ./create_zip.sh
|
||||
- ./create_dmg.sh
|
||||
- ./sum.sh
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
@@ -34,13 +41,17 @@ deploy:
|
||||
api_key: $GITHUB_TOKEN
|
||||
file_glob: true
|
||||
file:
|
||||
- ./*.sha256
|
||||
- ./*.zip
|
||||
- ./*.tar.gz
|
||||
- vscode/.build/linux/deb/i386/deb/*.deb
|
||||
- vscode/.build/linux/rpm/i386/*.rpm
|
||||
- vscode/.build/linux/deb/amd64/deb/*.deb
|
||||
- vscode/.build/linux/rpm/x86_64/*.rpm
|
||||
- vscode/.build/linux/deb/arm64/deb/*.deb
|
||||
- ./*.dmg
|
||||
- ./*.deb
|
||||
- ./*.rpm
|
||||
- ./*.AppImage
|
||||
- ./*.AppImage.zsync
|
||||
on:
|
||||
all_branches: true
|
||||
condition: $SHOULD_BUILD = yes
|
||||
|
||||
after_deploy:
|
||||
- ./update_version.sh
|
||||
|
||||
73
DOCS.md
@@ -1,20 +1,25 @@
|
||||
# More Info
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Getting all the Telemetry Out](#disable-telemetry)
|
||||
- [Extensions + Marketplace](#extensions-marketplace)
|
||||
- [Migrating from Visual Studio Code to VSCodium](#migrating)
|
||||
- [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)
|
||||
|
||||
## <a id="disable-telemetry"></a>Getting all the Telemetry Out
|
||||
|
||||
Even though we do not pass the telemetry build flags (and go out of our way to cripple the baked-in telemetry), Microsoft will still track usage by default.
|
||||
|
||||
We do however set the default `telemetry.enableCrashReporter` and `telemetry.enableTelemetry` values to false. You can see those by viewing your VSCodium settings.json and searching for `telemetry`.
|
||||
|
||||
The instructions [here](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting) and [here](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-crash-reporting) help with explaining and toggling telemetry.
|
||||
The instructions [here](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting) and [here](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-crash-reporting) help with explaining and toggling telemetry.
|
||||
|
||||
It is also highly recommended that you review all the settings that "use online services" by following [these instructions](https://code.visualstudio.com/docs/getstarted/telemetry#_managing-online-services). The `@tag:usesOnlineServices` filter on the settings page will show that by default:
|
||||
|
||||
It is also highly recommended that you review all the settings that "use online services" by following [these instructions](https://code.visualstudio.com/docs/supporting/faq#_managing-online-services). The `@tag:usesOnlineServices` filter on the settings page will show that by default:
|
||||
- Extensions auto check for updates and auto install updates
|
||||
- Searches within the app are sent to an online service for "natural language processing"
|
||||
- Updates to the app are fetched in the background
|
||||
@@ -26,27 +31,72 @@ __Please note that some extensions send telemetry data to Microsoft as well. We
|
||||
_(For example the C# extension `ms-vscode.csharp` sends tracking data to Microsoft.)_
|
||||
|
||||
## <a id="extensions-marketplace"></a>Extensions + Marketplace
|
||||
Until something more open comes around, we use the Microsoft Marketplace/Extensions in the `product.json` file. Those links are licensed under MIT as per [the comments on this issue.](https://github.com/Microsoft/vscode/issues/31168#issuecomment-317319063)
|
||||
|
||||
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"
|
||||
}
|
||||
```
|
||||
|
||||
See [this article](https://www.gitpod.io/blog/open-vsx/) for more information on the motivation behind Open VSX.
|
||||
|
||||
### 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
|
||||
|
||||
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:
|
||||
|
||||
```json
|
||||
"extensionAllowedProposedApi": [
|
||||
// ...
|
||||
"ms-vscode-remote.vscode-remote-extensionpack",
|
||||
"ms-vscode-remote.remote-wsl",
|
||||
// ...
|
||||
],
|
||||
```
|
||||
|
||||
In some cases, the above change won't help because the extension is hard-coded to only work with the official Visual Studio Code product.
|
||||
|
||||
## <a id="migrating"></a>Migrating from Visual Studio Code to VSCodium
|
||||
|
||||
VSCodium (and a freshly cloned copy of vscode built from source) stores its extension files in `~/.vscode-oss`. So if you currently have Visual Studio Code installed, your extensions won't automatically populate. You can reinstall your extensions from the Marketplace in VSCodium, or copy the `extensions` from `~/.vscode/extensions` to `~/.vscode-oss/extensions`.
|
||||
|
||||
Visual Studio Code stores its `keybindings.json` and `settings.json` file in the these locations:
|
||||
|
||||
- __Windows__: `%APPDATA%\Code\User`
|
||||
- __macOS__: `$HOME/Library/Application Support/Code/User`
|
||||
- __Linux__: `$HOME/.config/Code/User`
|
||||
|
||||
You can copy these files to the VSCodium user settings folder:
|
||||
|
||||
- __Windows__: `%APPDATA%\VSCodium\User`
|
||||
- __macOS__: `$HOME/Library/Application Support/VSCodium/User`
|
||||
- __Linux__: `$HOME/.config/VSCodium/User`
|
||||
|
||||
To copy your settings manually:
|
||||
|
||||
- In Visual Studio Code, go to Settings (Command+, if on a Mac)
|
||||
- Click the three dots `...` and choose 'Open settings.json'
|
||||
- Copy the contents of settings.json into the same place in VSCodium
|
||||
|
||||
## <a id="portable"></a>How do I run VSCodium in portable mode?
|
||||
You can follow the [Portable Mode instructions](https://code.visualstudio.com/docs/editor/portable) from the Visual Studio Code website.
|
||||
- **Windows** / **Linux** : the instructions can be followed as written.
|
||||
- **macOS** : portable mode is enabled by the existence of a specially named folder. For Visual Studio Code that folder name is `code-portable-data`. For VSCodium, that folder name is `codium-portable-data`. So to enable portable mode for VSCodium on Mac OS, follow the instructions outlined in the [link above](https://code.visualstudio.com/docs/editor/portable), but create a folder named `codium-portable-data` instead of `code-portable-data`.
|
||||
|
||||
## <a id="press-and-hold"></a>How do I press and hold a key and have it repeat in VSCodium (Mac)?
|
||||
|
||||
This is a common question for Visual Studio Code and the procedure is slightly different in VSCodium because the `defaults` path is different.
|
||||
|
||||
```bash
|
||||
@@ -54,16 +104,21 @@ $ defaults write com.visualstudio.code.oss ApplePressAndHoldEnabled -bool false
|
||||
```
|
||||
|
||||
## <a id="terminal-support"></a>How do I open VSCodium from the terminal?
|
||||
- Go to the command palette (View | Command Palette...)
|
||||
- Choose `Shell command: Install 'vscodium' command in PATH`.
|
||||
|
||||

|
||||
- Go to the command palette (View | Command Palette...)
|
||||
- Choose `Shell command: Install 'codium' command in PATH`.
|
||||
|
||||

|
||||
|
||||
This allows you to open files or directories in VSCodium directly from your terminal:
|
||||
|
||||
```bash
|
||||
~/in-my-project $ vscodium . # open this directory
|
||||
~/in-my-project $ vscodium file.txt # open this file
|
||||
~/in-my-project $ codium . # open this directory
|
||||
~/in-my-project $ codium file.txt # open this file
|
||||
```
|
||||
|
||||
Feel free to alias this command to something easier to type in your shell profile (e.g. `alias code=vscodium`).
|
||||
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
|
||||
|
||||
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).
|
||||
|
||||
87
README.md
@@ -12,13 +12,23 @@
|
||||
[](https://travis-ci.com/VSCodium/vscodium)
|
||||
[](https://github.com/VSCodium/vscodium/blob/master/LICENSE)
|
||||
[](https://gitter.im/VSCodium/Lobby)
|
||||
[](https://snapcraft.io/codium)
|
||||
[](https://snapcraft.io/codium)
|
||||
|
||||
</div>
|
||||
|
||||
**This is not a fork. This is a repository of scripts to automatically build Microsoft's `vscode` repository into freely-licensed binaries with a community-driven default configuration.**
|
||||
|
||||
## Table of Contents
|
||||
- [Download/Install](#download-install)
|
||||
- [Install with Brew](#install-with-brew)
|
||||
- [Install with Windows Package Manager (WinGet)](#install-with-winget)
|
||||
- [Install with Chocolatey](#install-with-choco)
|
||||
- [Install with Scoop](#install-with-scoop)
|
||||
- [Install with snap](#install-with-snap)
|
||||
- [Install with Package Manager](#install-with-package-manager)
|
||||
- [Install on Arch Linux](#install-on-arch-linux)
|
||||
- [Flatpak Option](#flatpak)
|
||||
- [Why Does This Exist](#why)
|
||||
- [More Info](#more-info)
|
||||
- [Supported OS](#supported-os)
|
||||
@@ -26,19 +36,58 @@
|
||||
## <a id="download-install"></a>Download/Install
|
||||
:tada: :tada: [Download latest release here](https://github.com/VSCodium/vscodium/releases) :tada: :tada:
|
||||
|
||||
[More info / helpful tips are here.](https://github.com/VSCodium/vscodium/blob/master/DOCS.md)
|
||||
|
||||
#### <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
|
||||
```
|
||||
|
||||
_Note: if you see "App can’t be opened because it is from an unidentified developer" 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 a Mac._
|
||||
_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._
|
||||
|
||||
#### <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:
|
||||
```bash
|
||||
winget install vscodium
|
||||
```
|
||||
|
||||
#### <a id="install-with-choco"></a>Install with Chocolatey (Windows)
|
||||
If you use Windows and have [Chocolatey](https://chocolatey.org) installed (thanks to [@Thilas](https://github.com/Thilas)):
|
||||
```bash
|
||||
choco install vscodium
|
||||
```
|
||||
|
||||
#### <a id="install-with-scoop"></a>Install with Scoop (Windows)
|
||||
If you use Windows and have [Scoop](https://scoop.sh) installed:
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install vscodium
|
||||
```
|
||||
|
||||
#### <a id="install-with-snap"></a>Install with snap (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):
|
||||
```bash
|
||||
snap install codium
|
||||
```
|
||||
|
||||
#### <a id="install-with-package-manager"></a>Install with Package Manager (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).
|
||||
|
||||
#### <a id="flatpak"></a>Flatpak Option (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
|
||||
|
||||
flatpak run com.vscodium.codium
|
||||
```
|
||||
|
||||
## <a id="why"></a>Why Does This Exist
|
||||
This repository contains a build file to generate FLOSS release binaries of Microsoft's VSCode.
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
@@ -46,11 +95,11 @@ Microsoft's downloads of Visual Studio Code are licensed under [this not-FLOSS l
|
||||
>
|
||||
> When you clone and build from the vscode repo, none of these endpoints are configured in the default product.json. Therefore, you generate a "clean" build, without the Microsoft customizations, which is by default licensed under the MIT license
|
||||
|
||||
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 enabled by a build flag which we do not pass.__
|
||||
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.
|
||||
|
||||
Microsoft's build process 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:
|
||||
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
|
||||
@@ -60,15 +109,35 @@ Microsoft's build process does download additional files. This was brought up in
|
||||
- ffmpeg
|
||||
|
||||
## <a id="more-info"></a>More Info
|
||||
|
||||
### Documentation
|
||||
For more information on getting all the telemetry disabled and tips for migrating from Visual Studio Code to VSCodium, have a look at this [Docs](https://github.com/VSCodium/vscodium/blob/master/DOCS.md) page.
|
||||
|
||||
### Extensions and the Marketplace
|
||||
According to the VS Code Marketplace [Terms of Use](https://aka.ms/vsmarketplace-ToU), _you may only install and use Marketplace Offerings with Visual Studio Products and Services._ For this reason, VSCodium uses [open-vsx.org](https://open-vsx.org/), an open source registry for VS Code extensions. See the [Extensions + Marketplace](https://github.com/VSCodium/vscodium/blob/master/DOCS.md#extensions-marketplace) section on the Docs page for more details.
|
||||
|
||||
Please note that some Visual Studio Code extensions have licenses that restrict their use to the official Visual Studio Code builds and therefore do not work with VSCodium. See [this note](https://github.com/VSCodium/vscodium/blob/master/DOCS.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).
|
||||
|
||||
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)
|
||||
|
||||
## <a id="supported-os"></a>Supported OS
|
||||
- [x] OSX x64 (zipped app file)
|
||||
- [x] Linux x64 (`.deb`, `.rpm`, and `.tar.gz` files)
|
||||
- [x] Linux x86 (`.deb`, `.rpm`, and `.tar.gz` files)
|
||||
- [X] Windows
|
||||
- [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
|
||||
|
||||
The ARM architecture is not currently supported but is actively being worked on.
|
||||
## <a id="donate"></a>Donate
|
||||
If you would like to support the development of VSCodium, feel free to send BTC to `3PgjE95yzBDTrSPxPiqoxSgZFuKPPAix1N`.
|
||||
|
||||
Special thanks to:
|
||||
- @estatra for the latest logo
|
||||
- @jaredreich for the previous logo
|
||||
|
||||
## <a id="license"></a>License
|
||||
MIT
|
||||
|
||||
32
VSCodium-AppImage-Recipe.yml
Normal file
@@ -0,0 +1,32 @@
|
||||
# Based on
|
||||
# https://github.com/AppImage/pkg2appimage/blob/master/recipes/VSCode.yml
|
||||
#
|
||||
# On a Debian/Ubuntu system:
|
||||
# wget -c "https://github.com/AppImage/pkg2appimage/raw/master/pkg2appimage"
|
||||
# bash -ex pkg2appimage VSCodium
|
||||
|
||||
app: VSCodium
|
||||
|
||||
ingredients:
|
||||
packages:
|
||||
- code
|
||||
- libgconf2-4
|
||||
dist: trusty
|
||||
sources:
|
||||
- deb http://archive.ubuntu.com/ubuntu/ trusty main universe
|
||||
script:
|
||||
- pwd
|
||||
- cp ../vscode/.build/linux/deb/amd64/deb/*.deb .
|
||||
- ls codium_*.deb | cut -d _ -f 2 > VERSION
|
||||
|
||||
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
|
||||
- ( cd usr/bin/ ; ln -s ../share/codium/codium . )
|
||||
@@ -1,59 +1,16 @@
|
||||
pool:
|
||||
vmImage: 'vs2017-win2016'
|
||||
jobs:
|
||||
- job: Windows
|
||||
pool:
|
||||
vmImage: VS2017-Win2016
|
||||
variables:
|
||||
BUILDARCH: x64
|
||||
steps:
|
||||
- template: win32-build.yml
|
||||
|
||||
steps:
|
||||
- script: |
|
||||
choco install jq
|
||||
displayName: 'install jq from choco'
|
||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
|
||||
displayName: 'Install Yarn'
|
||||
- task: UsePythonVersion@0
|
||||
displayName: 'Use Python 2.x'
|
||||
inputs:
|
||||
versionSpec: 2.x
|
||||
- task: ShellScript@2
|
||||
displayName: 'get VSCode sources'
|
||||
inputs:
|
||||
scriptPath: get_repo.sh
|
||||
- powershell: |
|
||||
$LATEST_MS_TAG="$(git -C vscode describe --tags)"
|
||||
Write-Host "##vso[task.setvariable variable=LATEST_MS_TAG]$LATEST_MS_TAG"
|
||||
displayName: 'set env LATEST_MS_TAG'
|
||||
- task: PowerShell@2
|
||||
inputs:
|
||||
filePath: 'check_tags.ps1'
|
||||
env:
|
||||
MAPPED_GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
- script: |
|
||||
git -C vscode status
|
||||
displayName: 'vscode status'
|
||||
- powershell: |
|
||||
bash ./build.sh
|
||||
displayName: 'go build it!'
|
||||
- bash: |
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then mv vscode\\.build\\win32-x64\\system-setup\\VSCodeSetup.exe VSCodiumSetup-x64-${LATEST_MS_TAG}.exe; fi
|
||||
displayName: 'move the system setup'
|
||||
- bash: |
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then mv vscode\\.build\\win32-x64\\user-setup\\VSCodeSetup.exe VSCodiumUserSetup-x64-${LATEST_MS_TAG}.exe; fi
|
||||
displayName: 'move the user setup'
|
||||
- bash: |
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then mv vscode\\.build\\win32-x64\\archive\\VSCode-win32-x64.zip VSCodium-win32-x64-${LATEST_MS_TAG}.zip; fi
|
||||
displayName: 'move the zip folder'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish artifacts: system-setup'
|
||||
condition: eq(variables['SHOULD_BUILD'], 'yes')
|
||||
inputs:
|
||||
PathtoPublish: 'VSCodiumSetup-x64-$(LATEST_MS_TAG).exe'
|
||||
ArtifactName: 'system_setup'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish artifacts: user-setup'
|
||||
condition: eq(variables['SHOULD_BUILD'], 'yes')
|
||||
inputs:
|
||||
PathtoPublish: 'VSCodiumUserSetup-x64-$(LATEST_MS_TAG).exe'
|
||||
ArtifactName: 'user_setup'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish artifacts: archive'
|
||||
condition: eq(variables['SHOULD_BUILD'], 'yes')
|
||||
inputs:
|
||||
PathtoPublish: 'VSCodium-win32-x64-$(LATEST_MS_TAG).zip'
|
||||
ArtifactName: 'archive'
|
||||
- job: Windows32
|
||||
pool:
|
||||
vmImage: VS2017-Win2016
|
||||
variables:
|
||||
BUILDARCH: ia32
|
||||
steps:
|
||||
- template: win32-build.yml
|
||||
102
build.sh
@@ -1,52 +1,78 @@
|
||||
#!/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
|
||||
}
|
||||
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
cp -rp src/* vscode/
|
||||
cd vscode
|
||||
export BUILD_SOURCEVERSION=$LATEST_MS_COMMIT
|
||||
echo "LATEST_MS_COMMIT: ${LATEST_MS_COMMIT}"
|
||||
echo "BUILD_SOURCEVERSION: ${BUILD_SOURCEVERSION}"
|
||||
|
||||
if [[ "$BUILDARCH" == "ia32" ]]; then
|
||||
export npm_config_arch=ia32
|
||||
fi
|
||||
../update_settings.sh
|
||||
export npm_config_arch="$BUILDARCH"
|
||||
export npm_config_target_arch="$BUILDARCH"
|
||||
|
||||
yarn
|
||||
mv product.json product.json.bak
|
||||
cat product.json.bak | jq 'setpath(["extensionsGallery"]; {"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery", "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index", "itemUrl": "https://marketplace.visualstudio.com/items"}) | setpath(["nameShort"]; "VSCodium") | setpath(["nameLong"]; "VSCodium") | setpath(["applicationName"]; "vscodium") | setpath(["win32MutexName"]; "vscodium") | setpath(["win32DirName"]; "VSCodium") | setpath(["win32NameVersion"]; "VSCodium") | setpath(["win32RegValueName"]; "VSCodium") | setpath(["win32AppUserModelId"]; "Microsoft.VSCodium") | setpath(["win32ShellNameShort"]; "V&SCodium") | setpath(["urlProtocol"]; "vscodium")' > product.json
|
||||
cat product.json
|
||||
../undo_telemetry.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
|
||||
# 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/vscodium/" resources/linux/debian/postinst.template
|
||||
fi
|
||||
keep_alive_small &
|
||||
else
|
||||
keep_alive &
|
||||
fi
|
||||
|
||||
KA_PID=$!
|
||||
|
||||
yarn gulp compile-build
|
||||
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 run gulp vscode-darwin-min
|
||||
elif [[ "$BUILDARCH" == "ia32" ]]; then
|
||||
npm run gulp vscode-linux-ia32-min
|
||||
npm run gulp vscode-linux-ia32-build-deb
|
||||
npm run gulp vscode-linux-ia32-build-rpm
|
||||
unset npm_config_arch
|
||||
elif [[ "$BUILDARCH" == "arm64" ]]; then
|
||||
npm run gulp vscode-linux-arm64-min
|
||||
npm run gulp vscode-linux-arm64-build-deb
|
||||
# npm run gulp vscode-linux-arm64-build-rpm
|
||||
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
|
||||
npx gulp vscode-win32-x64-min
|
||||
npx gulp vscode-win32-x64-copy-inno-updater
|
||||
npx gulp vscode-win32-x64-inno-updater
|
||||
npx gulp vscode-win32-x64-system-setup
|
||||
npx gulp vscode-win32-x64-user-setup
|
||||
npx gulp vscode-win32-x64-archive
|
||||
else
|
||||
npm run gulp vscode-linux-x64-min
|
||||
npm run gulp vscode-linux-x64-build-deb
|
||||
npm run gulp vscode-linux-x64-build-rpm
|
||||
fi
|
||||
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"
|
||||
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"
|
||||
fi
|
||||
. ../create_appimage.sh
|
||||
fi
|
||||
|
||||
kill $KA_PID
|
||||
|
||||
cd ..
|
||||
fi
|
||||
|
||||
@@ -1,32 +1,38 @@
|
||||
echo "tag: $env:LATEST_MS_TAG"
|
||||
$GITHUB_RESPONSE = curl.exe -s -H "Authorization: token $env:MAPPED_GITHUB_TOKEN" "https://api.github.com/repos/vscodium/vscodium/releases/tags/$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'
|
||||
$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.length -le 15) {
|
||||
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) {
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
$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"
|
||||
@@ -10,30 +10,11 @@ echo "VSCodium assets: ${VSCODIUM_ASSETS}"
|
||||
if [ "$GITHUB_TOKEN" != "" ]; then
|
||||
if [ "$VSCODIUM_ASSETS" != "null" ]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
HAVE_MAC=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["zip"])')
|
||||
HAVE_MAC=$(echo $VSCODIUM_ASSETS | jq --arg suffix "darwin-$LATEST_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 == "ia32" ]]; then
|
||||
HAVE_IA32_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["i386.rpm"])')
|
||||
HAVE_IA32_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["i386.deb"])')
|
||||
HAVE_IA32_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "ia32-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
|
||||
if [[ "$HAVE_IA32_RPM" != "true" ]]; then
|
||||
echo "Building on Linux ia32 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$HAVE_IA32_DEB" != "true" ]]; then
|
||||
echo "Building on Linux ia32 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$HAVE_IA32_TAR" != "true" ]]; then
|
||||
echo "Building on Linux ia32 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Linux ia32 builds"
|
||||
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"])')
|
||||
@@ -53,6 +34,20 @@ if [ "$GITHUB_TOKEN" != "" ]; then
|
||||
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"])')
|
||||
|
||||
9
create_appimage.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/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
|
||||
fi
|
||||
9
create_dmg.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/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
|
||||
@@ -3,17 +3,11 @@
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
cd VSCode-darwin
|
||||
zip -r -X -y ../VSCode-darwin-${LATEST_MS_TAG}.zip ./*
|
||||
elif [[ "$BUILDARCH" == "ia32" ]]; then
|
||||
cd VSCode-linux-ia32
|
||||
tar czf ../VSCode-linux-ia32-${LATEST_MS_TAG}.tar.gz .
|
||||
elif [[ "$BUILDARCH" == "arm64" ]]; then
|
||||
cd VSCode-linux-arm64
|
||||
tar czf ../VSCode-linux-arm64-${LATEST_MS_TAG}.tar.gz .
|
||||
zip -r -X -y ../VSCodium-darwin-${LATEST_MS_TAG}.zip ./*.app
|
||||
else
|
||||
cd VSCode-linux-x64
|
||||
tar czf ../VSCode-linux-x64-${LATEST_MS_TAG}.tar.gz .
|
||||
cd VSCode-linux-${BUILDARCH}
|
||||
tar czf ../VSCodium-linux-${BUILDARCH}-${LATEST_MS_TAG}.tar.gz .
|
||||
fi
|
||||
|
||||
cd ..
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -8,7 +8,8 @@ else
|
||||
cd vscode
|
||||
fi
|
||||
|
||||
export LATEST_MS_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)
|
||||
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
|
||||
cd ..
|
||||
|
||||
@@ -5,16 +5,37 @@ if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
brew install jq zip
|
||||
else
|
||||
sudo apt-get update
|
||||
sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev fakeroot rpm jq
|
||||
if [[ "$BUILDARCH" == "ia32" ]]; then
|
||||
sudo dpkg --add-architecture i386
|
||||
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-i386 gcc-multilib g++-multilib
|
||||
sudo apt-get install libx11-dev:i386 libxkbfile-dev:i386
|
||||
elif [[ $BUILDARCH == "arm64" ]]; then
|
||||
# Use the default C / C++ compilers,
|
||||
# because some makefiles default to CC:=gcc:
|
||||
export CC=/usr/bin/cc
|
||||
export CXX=/usr/bin/c++
|
||||
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
|
||||
|
||||
11
patches/update-cache-path.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- 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 @@
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
68
prepare_vscode.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
|
||||
export npm_config_arch="$BUILDARCH"
|
||||
export npm_config_target_arch="$BUILDARCH"
|
||||
|
||||
cp -rp src/* vscode/
|
||||
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
|
||||
|
||||
yarn --frozen-lockfile
|
||||
yarn postinstall
|
||||
|
||||
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
|
||||
fi
|
||||
|
||||
mv product.json product.json.bak
|
||||
|
||||
# set fields in product.json
|
||||
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")'
|
||||
documentationUrl='setpath(["documentationUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533484#vscode")'
|
||||
introductoryVideosUrl='setpath(["introductoryVideosUrl"]; "https://go.microsoft.com/fwlink/?linkid=832146")'
|
||||
extensionAllowedBadgeProviders='setpath(["extensionAllowedBadgeProviders"]; ["api.bintray.com", "api.travis-ci.com", "api.travis-ci.org", "app.fossa.io", "badge.fury.io", "badge.waffle.io", "badgen.net", "badges.frapsoft.com", "badges.gitter.im", "badges.greenkeeper.io", "cdn.travis-ci.com", "cdn.travis-ci.org", "ci.appveyor.com", "circleci.com", "cla.opensource.microsoft.com", "codacy.com", "codeclimate.com", "codecov.io", "coveralls.io", "david-dm.org", "deepscan.io", "dev.azure.com", "flat.badgen.net", "gemnasium.com", "githost.io", "gitlab.com", "godoc.org", "goreportcard.com", "img.shields.io", "isitmaintained.com", "marketplace.visualstudio.com", "nodesecurity.io", "opencollective.com", "snyk.io", "travis-ci.com", "travis-ci.org", "visualstudio.com", "vsmarketplacebadge.apphb.com", "www.bithound.io", "www.versioneye.com"])'
|
||||
updateUrl='setpath(["updateUrl"]; "https://vscodium.now.sh")'
|
||||
releaseNotesUrl='setpath(["releaseNotesUrl"]; "https://go.microsoft.com/fwlink/?LinkID=533483#vscode")'
|
||||
keyboardShortcutsUrlMac='setpath(["keyboardShortcutsUrlMac"]; "https://go.microsoft.com/fwlink/?linkid=832143")'
|
||||
keyboardShortcutsUrlLinux='setpath(["keyboardShortcutsUrlLinux"]; "https://go.microsoft.com/fwlink/?linkid=832144")'
|
||||
keyboardShortcutsUrlWin='setpath(["keyboardShortcutsUrlWin"]; "https://go.microsoft.com/fwlink/?linkid=832145")'
|
||||
quality='setpath(["quality"]; "stable")'
|
||||
extensionsGallery='setpath(["extensionsGallery"]; {"serviceUrl": "https://open-vsx.org/vscode/gallery", "itemUrl": "https://open-vsx.org/vscode/item"})'
|
||||
linkProtectionTrustedDomains='setpath(["linkProtectionTrustedDomains"]; ["https://open-vsx.org"])'
|
||||
nameShort='setpath(["nameShort"]; "VSCodium")'
|
||||
nameLong='setpath(["nameLong"]; "VSCodium")'
|
||||
linuxIconName='setpath(["linuxIconName"]; "vscodium")'
|
||||
applicationName='setpath(["applicationName"]; "codium")'
|
||||
win32MutexName='setpath(["win32MutexName"]; "vscodium")'
|
||||
win32DirName='setpath(["win32DirName"]; "VSCodium")'
|
||||
win32NameVersion='setpath(["win32NameVersion"]; "VSCodium")'
|
||||
win32RegValueName='setpath(["win32RegValueName"]; "VSCodium")'
|
||||
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"])'
|
||||
serverDataFolderName='setpath(["serverDataFolderName"]; ".vscode-server-oss")'
|
||||
|
||||
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}"
|
||||
cat product.json.bak | jq "${product_json_changes}" > product.json
|
||||
cat product.json
|
||||
|
||||
../undo_telemetry.sh
|
||||
|
||||
if [[ "$TRAVIS_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
|
||||
fi
|
||||
23
sign_mac_app.sh
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/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
|
||||
BIN
src/resources/darwin/go.icns
Normal file
11
src/resources/linux/appimage/AppRun
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/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} "$@"
|
||||
349
src/resources/linux/appimage/functions.sh
Normal file
@@ -0,0 +1,349 @@
|
||||
# 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
|
||||
}
|
||||
471
src/resources/linux/appimage/pkg2appimage
Normal file
@@ -0,0 +1,471 @@
|
||||
#!/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*
|
||||
|
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 335 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
BIN
src/resources/win32/inno-big-100.bmp
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
src/resources/win32/inno-big-125.bmp
Normal file
|
After Width: | Height: | Size: 290 KiB |
BIN
src/resources/win32/inno-big-150.bmp
Normal file
|
After Width: | Height: | Size: 441 KiB |
BIN
src/resources/win32/inno-big-175.bmp
Normal file
|
After Width: | Height: | Size: 593 KiB |
BIN
src/resources/win32/inno-big-200.bmp
Normal file
|
After Width: | Height: | Size: 774 KiB |
BIN
src/resources/win32/inno-big-225.bmp
Normal file
|
After Width: | Height: | Size: 971 KiB |
BIN
src/resources/win32/inno-big-250.bmp
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
src/resources/win32/inno-small-100.bmp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/resources/win32/inno-small-125.bmp
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
src/resources/win32/inno-small-150.bmp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
src/resources/win32/inno-small-175.bmp
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
src/resources/win32/inno-small-200.bmp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
src/resources/win32/inno-small-225.bmp
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
src/resources/win32/inno-small-250.bmp
Normal file
|
After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 152 KiB |
BIN
src/resources/win32/ruby.ico
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
src/resources/win32/sass.ico
Normal file
|
After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 361 KiB After Width: | Height: | Size: 148 KiB |
19
src/src/vs/workbench/browser/media/code-icon.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M508.827 0.772461C224.654 0.772461 0.40625 305.969 0.40625 710.148L229.547 749.213C169.075 696.515 206.161 288.058 508.827 288.058C811.493 288.058 858.584 696.417 797.134 749.213L1023.37 710.148C1023.37 305.969 793.001 0.772461 508.827 0.772461Z" fill="#81DA56"/>
|
||||
<path d="M1023.39 707.988C1023.39 845.616 861.716 835.104 753.987 874.753C646.259 914.402 544.677 1023.77 511.891 1023.77C476.573 1023.77 323.282 888.651 272.129 874.753C177.65 841.24 0.390625 845.616 0.390625 707.988C0.390625 426.078 229.397 822.803 511.891 822.803C794.384 822.803 1023.39 426.078 1023.39 707.988Z" fill="#81DA56"/>
|
||||
<path d="M116.646 836.315C199.184 857.711 259.346 867.78 281.722 879.107C442.204 945.968 477.586 1021.56 509.669 1021.56C550.626 1021.56 578.994 843.184 578.994 843.184C465.003 803.607 384.094 670.917 194.953 615.54C194.953 615.54 56.6348 567.484 27.1417 598.443C-5.58102 675.828 -34.9724 794.619 116.646 836.315Z" fill="url(#paint0_linear)"/>
|
||||
<path d="M732.759 881.38C573.081 963.17 560.416 1015.19 507.22 1022.74C507.22 1022.74 488.789 1020.59 402.516 951.423C362.868 919.636 291.022 883.112 291.022 883.112C497.05 914.559 584.058 679.569 824.424 615.573C824.424 615.573 892.438 799.59 732.759 881.38Z" fill="#81DA56"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear" x1="297.596" y1="598.39" x2="420.618" y2="879.08" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#81DA56"/>
|
||||
<stop offset="0.233393" stop-color="#77D34A"/>
|
||||
<stop offset="0.433117" stop-color="#6BCD3C"/>
|
||||
<stop offset="0.580887" stop-color="#65C139"/>
|
||||
<stop offset="0.699298" stop-color="#60B338"/>
|
||||
<stop offset="0.838132" stop-color="#529F2D"/>
|
||||
<stop offset="0.928389" stop-color="#4B9726"/>
|
||||
<stop offset="1" stop-color="#3C7E1B"/>
|
||||
<stop offset="1" stop-color="#438E1F"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.451839 699.866C4.10606 300.649 226.995 0.461914 508.827 0.461914C790.488 0.461914 1019.29 300.284 1023.32 699.139C1023.37 701.913 1023.39 704.759 1023.39 707.678C1023.39 810.566 933.033 830.662 842.408 850.817C811.809 857.622 781.18 864.435 753.987 874.443C693.089 896.856 634.154 941.55 588.501 976.172C553.395 1002.79 526.143 1023.46 511.891 1023.46C493.787 1023.46 444.685 987.958 394.232 951.477C362.271 928.368 329.768 904.866 304.259 889.748C296.083 885.375 291.022 882.802 291.022 882.802L291.241 882.835C288.118 881.486 284.945 880.14 281.722 878.797C267.893 871.796 239.631 865.276 200.575 856.266L200.574 856.266C193.378 854.606 185.817 852.862 177.912 851.014C162.85 847.705 147.644 844.192 132.803 840.125C127.519 838.799 122.132 837.427 116.646 836.005C72.4025 823.837 43.5724 805.105 25.7406 782.753C9.92126 763.868 0.390625 739.59 0.390625 707.678C0.390625 705.014 0.411079 702.41 0.451839 699.866ZM206.549 618.762C309.348 651.319 379.534 706.727 441.461 755.614L441.462 755.615C466.324 775.242 489.856 793.819 513.632 809.444C531.846 795.584 550.043 780.644 568.674 765.347L568.682 765.341L568.684 765.339C638.099 708.348 713.536 646.413 818.288 616.943C803.514 479.265 716.102 287.747 508.827 287.747C300.66 287.747 218.122 480.965 206.549 618.762Z" fill="#B2B2B2" fill-opacity="0.3"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.451839 699.866C4.10606 300.649 226.995 0.461914 508.827 0.461914C790.488 0.461914 1019.29 300.284 1023.32 699.139C1023.37 701.913 1023.39 704.759 1023.39 707.678C1023.39 810.566 933.033 830.662 842.408 850.817C811.809 857.622 781.18 864.435 753.987 874.443C693.089 896.856 634.154 941.55 588.501 976.172C553.395 1002.79 526.143 1023.46 511.891 1023.46C493.787 1023.46 444.685 987.958 394.232 951.477C362.271 928.368 329.768 904.866 304.259 889.748C296.083 885.375 291.022 882.802 291.022 882.802L291.241 882.835C288.118 881.486 284.945 880.14 281.722 878.797C267.893 871.796 239.631 865.276 200.575 856.266L200.574 856.266C193.378 854.606 185.817 852.862 177.912 851.014C162.85 847.705 147.644 844.192 132.803 840.125C127.519 838.799 122.132 837.427 116.646 836.005C72.4025 823.837 43.5724 805.105 25.7406 782.753C9.92126 763.868 0.390625 739.59 0.390625 707.678C0.390625 705.014 0.411079 702.41 0.451839 699.866ZM206.549 618.762C309.348 651.319 379.534 706.727 441.461 755.614L441.462 755.615C466.324 775.242 489.856 793.819 513.632 809.444C531.846 795.584 550.043 780.644 568.674 765.347L568.682 765.341L568.684 765.339C638.099 708.348 713.536 646.413 818.288 616.943C803.514 479.265 716.102 287.747 508.827 287.747C300.66 287.747 218.122 480.965 206.549 618.762Z" fill="white" fill-opacity="0.12"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,3 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.451839 699.866C4.10606 300.649 226.995 0.461914 508.827 0.461914C790.488 0.461914 1019.29 300.284 1023.32 699.139C1023.37 701.913 1023.39 704.759 1023.39 707.678C1023.39 810.566 933.033 830.662 842.408 850.817C811.809 857.622 781.18 864.435 753.987 874.443C693.089 896.856 634.154 941.55 588.501 976.172C553.395 1002.79 526.143 1023.46 511.891 1023.46C493.787 1023.46 444.685 987.958 394.232 951.477C362.271 928.368 329.768 904.866 304.259 889.748C296.083 885.375 291.022 882.802 291.022 882.802L291.241 882.835C288.118 881.486 284.945 880.14 281.722 878.797C267.893 871.796 239.631 865.276 200.575 856.266L200.574 856.266C193.378 854.606 185.817 852.862 177.912 851.014C162.85 847.705 147.644 844.192 132.803 840.125C127.519 838.799 122.132 837.427 116.646 836.005C72.4025 823.837 43.5724 805.105 25.7406 782.753C9.92126 763.868 0.390625 739.59 0.390625 707.678C0.390625 705.014 0.411079 702.41 0.451839 699.866ZM206.549 618.762C309.348 651.319 379.534 706.727 441.461 755.614L441.462 755.615C466.324 775.242 489.856 793.819 513.632 809.444C531.846 795.584 550.043 780.644 568.674 765.347L568.682 765.341L568.684 765.339C638.099 708.348 713.536 646.413 818.288 616.943C803.514 479.265 716.102 287.747 508.827 287.747C300.66 287.747 218.122 480.965 206.549 618.762Z" fill="#B2B2B2" fill-opacity="0.1"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,19 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M508.827 0.772461C224.654 0.772461 0.40625 305.969 0.40625 710.148L229.547 749.213C169.075 696.515 206.161 288.058 508.827 288.058C811.493 288.058 858.584 696.417 797.134 749.213L1023.37 710.148C1023.37 305.969 793.001 0.772461 508.827 0.772461Z" fill="#81DA56"/>
|
||||
<path d="M1023.39 707.988C1023.39 845.616 861.716 835.104 753.987 874.753C646.259 914.402 544.677 1023.77 511.891 1023.77C476.573 1023.77 323.282 888.651 272.129 874.753C177.65 841.24 0.390625 845.616 0.390625 707.988C0.390625 426.078 229.397 822.803 511.891 822.803C794.384 822.803 1023.39 426.078 1023.39 707.988Z" fill="#81DA56"/>
|
||||
<path d="M116.646 836.315C199.184 857.711 259.346 867.78 281.722 879.107C442.204 945.968 477.586 1021.56 509.669 1021.56C550.626 1021.56 578.994 843.184 578.994 843.184C465.003 803.607 384.094 670.917 194.953 615.54C194.953 615.54 56.6348 567.484 27.1417 598.443C-5.58102 675.828 -34.9724 794.619 116.646 836.315Z" fill="url(#paint0_linear)"/>
|
||||
<path d="M732.759 881.38C573.081 963.17 560.416 1015.19 507.22 1022.74C507.22 1022.74 488.789 1020.59 402.516 951.423C362.868 919.636 291.022 883.112 291.022 883.112C497.05 914.559 584.058 679.569 824.424 615.573C824.424 615.573 892.438 799.59 732.759 881.38Z" fill="#81DA56"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear" x1="297.596" y1="598.39" x2="420.618" y2="879.08" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#81DA56"/>
|
||||
<stop offset="0.233393" stop-color="#77D34A"/>
|
||||
<stop offset="0.433117" stop-color="#6BCD3C"/>
|
||||
<stop offset="0.580887" stop-color="#65C139"/>
|
||||
<stop offset="0.699298" stop-color="#60B338"/>
|
||||
<stop offset="0.838132" stop-color="#529F2D"/>
|
||||
<stop offset="0.928389" stop-color="#4B9726"/>
|
||||
<stop offset="1" stop-color="#3C7E1B"/>
|
||||
<stop offset="1" stop-color="#438E1F"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |