Compare commits
220 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c61228528 | ||
|
|
7b2c725cac | ||
|
|
a8b43ff2a5 | ||
|
|
588db890f0 | ||
|
|
08d8ad26ab | ||
|
|
1501d185c2 | ||
|
|
2fdaec5163 | ||
|
|
818097ca7e | ||
|
|
845f748de5 | ||
|
|
2ea6d93325 | ||
|
|
98a9a1b231 | ||
|
|
3bba077e1e | ||
|
|
6f3791a5ca | ||
|
|
1a3eba742f | ||
|
|
75bbad9a0d | ||
|
|
31b80c8c09 | ||
|
|
e891ce2dcd | ||
|
|
8d8c0cd3fc | ||
|
|
6963e0db5e | ||
|
|
51413d265e | ||
|
|
cfc5bbd51e | ||
|
|
d3a7edee21 | ||
|
|
6bf38fa316 | ||
|
|
d203723bd5 | ||
|
|
880f505515 | ||
|
|
8b57482521 | ||
|
|
6d1b1c06bc | ||
|
|
112b141bf2 | ||
|
|
53b56dbebb | ||
|
|
cd6e1485b5 | ||
|
|
f787c21b3c | ||
|
|
74e4592337 | ||
|
|
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 | ||
|
|
8959faeca9 | ||
|
|
7391746c6b | ||
|
|
833fcec1e8 | ||
|
|
576145f38e | ||
|
|
c1dd804250 | ||
|
|
83cfe077ee | ||
|
|
a3129e3f57 | ||
|
|
dfa09d149e | ||
|
|
8096387e74 | ||
|
|
098cab67bd | ||
|
|
dc649ff259 | ||
|
|
d408fcc060 | ||
|
|
0f3bba8d9f | ||
|
|
7b764d5c5b | ||
|
|
31ad142664 | ||
|
|
a4ea6d60a4 | ||
|
|
213baf8651 | ||
|
|
5f035559e5 | ||
|
|
58823c7ad8 | ||
|
|
f4a46d1c7b | ||
|
|
bfcfedb1e8 | ||
|
|
74d06bf01d | ||
|
|
a541390984 | ||
|
|
da0eaa5d45 | ||
|
|
008aacc81e | ||
|
|
ed99748de8 | ||
|
|
b40a02dc7f | ||
|
|
bc41a76bd0 | ||
|
|
c84850f967 | ||
|
|
b407087e57 | ||
|
|
b5b89730a4 | ||
|
|
225fbb2dea | ||
|
|
344541b8fe | ||
|
|
d3373b16e8 | ||
|
|
c1bdb38d45 | ||
|
|
dc75d7df46 | ||
|
|
f805d740bb | ||
|
|
ae47b31091 | ||
|
|
1a85464271 | ||
|
|
6346d7f6bb | ||
|
|
cc9e2c6dec | ||
|
|
8a561e165d | ||
|
|
fec74ec8ce | ||
|
|
606d3f8ff2 | ||
|
|
2bf10dde0c | ||
|
|
a9b42f5af4 | ||
|
|
56bce30b73 | ||
|
|
ee1cf86ff7 | ||
|
|
058f0db4f3 | ||
|
|
cbe7f17b5a |
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.
|
||||
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
vscode
|
||||
VS*/*
|
||||
33
.travis.yml
@@ -1,16 +1,26 @@
|
||||
if: tag IS blank
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
sudo: required
|
||||
env: BUILDARCH=x64
|
||||
dist: trusty
|
||||
- os: linux
|
||||
sudo: required
|
||||
env: BUILDARCH=arm64
|
||||
dist: trusty
|
||||
- os: linux
|
||||
sudo: required
|
||||
env: BUILDARCH=arm
|
||||
dist: trusty
|
||||
- os: osx
|
||||
|
||||
language: node_js
|
||||
node_js: "8"
|
||||
node_js: "10"
|
||||
|
||||
before_install:
|
||||
- ./install_deps.sh
|
||||
- curl -o- -L https://yarnpkg.com/install.sh | bash
|
||||
- export PATH="$HOME/.yarn/bin:$PATH"
|
||||
- . install_deps.sh
|
||||
- . get_repo.sh
|
||||
- . check_tags.sh
|
||||
|
||||
@@ -18,18 +28,29 @@ script:
|
||||
- ./build.sh
|
||||
|
||||
before_deploy:
|
||||
- ./sign_mac_app.sh
|
||||
- ./create_zip.sh
|
||||
- ./create_dmg.sh
|
||||
- ./sum.sh
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
skip_cleanup: true
|
||||
overwrite: true
|
||||
name: $LATEST_MS_TAG
|
||||
api_key: $GITHUB_TOKEN
|
||||
file_glob: true
|
||||
file:
|
||||
- ./*.sha256
|
||||
- ./*.zip
|
||||
- ./*.tar.gz
|
||||
- vscode/.build/linux/deb/amd64/deb/*.deb
|
||||
- vscode/.build/linux/rpm/x86_64/*.rpm
|
||||
- ./*.dmg
|
||||
- ./*.deb
|
||||
- ./*.rpm
|
||||
- ./*.AppImage
|
||||
on:
|
||||
all_branches: true
|
||||
condition: $SHOULD_BUILD = yes
|
||||
|
||||
after_deploy:
|
||||
- ./update_version.sh
|
||||
|
||||
46
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at vscodium@protonmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
98
DOCS.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# 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.
|
||||
|
||||
It is also highly recommended that you review all the settings that "use online services" by following [these instructions](https://code.visualstudio.com/docs/getstarted/telemetry#_managing-online-services). The `@tag:usesOnlineServices` filter on the settings page will show that by default:
|
||||
|
||||
- Extensions auto check for updates and auto install updates
|
||||
- Searches within the app are sent to an online service for "natural language processing"
|
||||
- Updates to the app are fetched in the background
|
||||
|
||||
These can all be disabled.
|
||||
|
||||
__Please note that some extensions send telemetry data to Microsoft as well. We have no control over this and can only recommend removing the extension.__
|
||||
|
||||
_(For example the C# extension `ms-vscode.csharp` sends tracking data to Microsoft.)_
|
||||
|
||||
## <a id="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)
|
||||
|
||||
If you use the [code-settings-sync](https://github.com/shanalikhan/code-settings-sync) extension, you may have [an issue](https://github.com/VSCodium/vscodium/issues/72) installing extensions (via the plugin). Refer to [this workaround](https://github.com/shanalikhan/code-settings-sync/issues/668#issuecomment-462065341) to get it working properly.
|
||||
|
||||
### 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.
|
||||
|
||||
## <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. For Windows and Linux the instructions can be followed as written. For Mac OS, 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, 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
|
||||
$ 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 'codium' command in PATH`.
|
||||
|
||||

|
||||
|
||||
This allows you to open files or directories in VSCodium directly from your terminal:
|
||||
|
||||
```bash
|
||||
~/in-my-project $ codium . # open this directory
|
||||
~/in-my-project $ codium file.txt # open this file
|
||||
```
|
||||
|
||||
Feel free to alias this command to something easier to type in your shell profile (e.g. `alias code=codium`).
|
||||
|
||||
## <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).
|
||||
117
README.md
@@ -1,12 +1,115 @@
|
||||
## VSCodium
|
||||
<div id="vscodium-logo" align="center">
|
||||
<br />
|
||||
<img src="./src/resources/linux/code.png" alt="VSCodium Logo" width="200"/>
|
||||
<h1>VSCodium</h1>
|
||||
<h3>Free/Libre Open Source Software Binaries of VSCode</h3>
|
||||
</div>
|
||||
|
||||
This repository contains a build file to generate FLOSS release binaries of Microsoft's VSCode.
|
||||
<div id="badges" align="center">
|
||||
|
||||
[Download binaries here](https://github.com/VSCodium/vscodium/releases)
|
||||
[](https://github.com/vscodium/vscodium/releases)
|
||||
[](https://dev.azure.com/vscodium/VSCodium/_build?definitionId=1)
|
||||
[](https://travis-ci.com/VSCodium/vscodium)
|
||||
[](https://github.com/VSCodium/vscodium/blob/master/LICENSE)
|
||||
[](https://gitter.im/VSCodium/Lobby)
|
||||
|
||||
Microsoft's downloads of VSCode are licensed under [this not-FLOSS license](https://code.visualstudio.com/license). That's why this repo exists. So you don't have to download+build from source.
|
||||
</div>
|
||||
|
||||
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)
|
||||
**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.**
|
||||
|
||||
## License
|
||||
MIT
|
||||
## Table of Contents
|
||||
- [Download/Install](#download-install)
|
||||
- [Install with Brew](#install-with-brew)
|
||||
- [Install with Chocolatey](#install-with-choco)
|
||||
- [Install with Scoop](#install-with-scoop)
|
||||
- [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)
|
||||
|
||||
## <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 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-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-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 not available as a Flatpak app, but [@amtlib-dot-dll](https://github.com/amtlib-dot-dll) has done significant work to package up the open source build of Visual Studio Code without telemetry, very similarly to VSCodium. That package is available [here](https://flathub.org/apps/details/com.visualstudio.code.oss) and the build repo is [here](https://github.com/flathub/com.visualstudio.code.oss).
|
||||
|
||||
## <a id="why"></a>Why Does This Exist
|
||||
This repository contains build files to generate free release binaries of Microsoft's VSCode. When we speak of "free software", we're talking about freedom, not price.
|
||||
|
||||
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:
|
||||
|
||||
> When we [Microsoft] build Visual Studio Code, we do exactly this. We clone the vscode repository, we lay down a customized product.json that has Microsoft specific functionality (telemetry, gallery, logo, etc.), and then produce a build that we release under our license.
|
||||
>
|
||||
> 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 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 (which we are running to build the binaries) does download additional files. This was brought up in [Microsoft/vscode#49159](https://github.com/Microsoft/vscode/issues/49159) and [Microsoft/vscode#45978](https://github.com/Microsoft/vscode/issues/45978). These are the packages downloaded during build:
|
||||
|
||||
- Extensions from the Microsoft Marketplace:
|
||||
- ms-vscode.node-debug2
|
||||
- ms-vscode.node-debug
|
||||
- From [Electron releases](https://github.com/electron/electron/releases) (using [gulp-atom-electron](https://github.com/joaomoreno/gulp-atom-electron))
|
||||
- electron
|
||||
- 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.
|
||||
|
||||
### Extension Licensing
|
||||
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] OS X (`zip`, `dmg`)
|
||||
- [x] Linux x64 (`deb`, `rpm`, `AppImage`, `tar.gz`)
|
||||
- [x] Linux x86 (`deb`, `rpm`, `tar.gz`) ([up to v1.35.1](https://code.visualstudio.com/updates/v1_36#_linux-32bit-support-ends))
|
||||
- [x] Linux arm64 (`deb`, `tar.gz`)
|
||||
- [x] Linux armhf (`deb`, `tar.gz`)
|
||||
- [x] Windows x64
|
||||
- [x] Windows x86
|
||||
|
||||
## <a id="donate"></a>Donate
|
||||
If you would like to support the development of VSCodium, feel free to send BTC to `3PgjE95yzBDTrSPxPiqoxSgZFuKPPAix1N`.
|
||||
|
||||
## <a id="license"></a>License
|
||||
MIT
|
||||
|
||||
35
VSCodium-AppImage-Recipe.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
# 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/codium/||g' usr/share/applications/codium.desktop
|
||||
- sed -i -e 's|com.visualstudio.code.oss|vscodium|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
|
||||
- convert vscodium.png -resize 24x24 usr/share/icons/hicolor/24x24/apps/vscodium.png
|
||||
- convert vscodium.png -resize 22x22 usr/share/icons/hicolor/22x22/apps/vscodium.png
|
||||
- ( cd usr/bin/ ; ln -s ../share/codium/codium . )
|
||||
16
azure-pipelines.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
jobs:
|
||||
- job: Windows
|
||||
pool:
|
||||
vmImage: VS2017-Win2016
|
||||
variables:
|
||||
BUILDARCH: x64
|
||||
steps:
|
||||
- template: win32-build.yml
|
||||
|
||||
- job: Windows32
|
||||
pool:
|
||||
vmImage: VS2017-Win2016
|
||||
variables:
|
||||
BUILDARCH: ia32
|
||||
steps:
|
||||
- template: win32-build.yml
|
||||
110
build.sh
@@ -1,20 +1,114 @@
|
||||
#!/bin/bash
|
||||
|
||||
function keep_alive() {
|
||||
while true; do
|
||||
echo .
|
||||
read -t 60 < /proc/self/fd/1 > /dev/null 2>&1
|
||||
done
|
||||
}
|
||||
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
export BUILD_SOURCEVERSION=$LATEST_MS_COMMIT
|
||||
echo "LATEST_MS_COMMIT: ${LATEST_MS_COMMIT}"
|
||||
echo "BUILD_SOURCEVERSION: ${BUILD_SOURCEVERSION}"
|
||||
|
||||
cp -rp src/* vscode/
|
||||
cd vscode
|
||||
|
||||
export npm_config_arch="$BUILDARCH"
|
||||
export npm_config_target_arch="$BUILDARCH"
|
||||
../update_settings.sh
|
||||
|
||||
# apply patches
|
||||
patch -u src/vs/platform/update/electron-main/updateService.win32.ts -i ../patches/update-cache-path.patch
|
||||
|
||||
yarn
|
||||
yarn postinstall
|
||||
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"})' > product.json
|
||||
|
||||
# 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://marketplace.visualstudio.com/_apis/public/gallery", "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index", "itemUrl": "https://marketplace.visualstudio.com/items"})'
|
||||
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"])'
|
||||
|
||||
product_json_changes="${tipsAndTricksUrl} | ${twitterUrl} | ${requestFeatureUrl} | ${documentationUrl} | ${introductoryVideosUrl} | ${extensionAllowedBadgeProviders} | ${updateUrl} | ${releaseNotesUrl} | ${keyboardShortcutsUrlMac} | ${keyboardShortcutsUrlLinux} | ${keyboardShortcutsUrlWin} | ${quality} | ${extensionsGallery} | ${nameShort} | ${nameLong} | ${linuxIconName} | ${applicationName} | ${win32MutexName} | ${win32DirName} | ${win32NameVersion} | ${win32RegValueName} | ${win32AppUserModelId} | ${win32ShellNameShort} | ${win32x64UserAppId} | ${urlProtocol} | ${extensionAllowedProposedApi}"
|
||||
cat product.json.bak | jq "${product_json_changes}" > product.json
|
||||
cat product.json
|
||||
../undo_telemetry.sh
|
||||
|
||||
export NODE_ENV=production
|
||||
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
npx gulp vscode-darwin-min
|
||||
else
|
||||
npx gulp vscode-linux-x64-min
|
||||
npx gulp vscode-linux-x64-build-deb
|
||||
npx gulp vscode-linux-x64-build-rpm
|
||||
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
|
||||
|
||||
# this task is very slow on mac, so using a keep alive to keep travis alive
|
||||
keep_alive &
|
||||
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 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
|
||||
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
|
||||
fi
|
||||
|
||||
38
check_tags.ps1
Normal file
@@ -0,0 +1,38 @@
|
||||
echo "tag: $env:LATEST_MS_TAG"
|
||||
$REPO_URI = [uri]$env:BUILD_REPOSITORY_URI
|
||||
$USER_REPO = $REPO_URI."LocalPath"
|
||||
echo $USER_REPO
|
||||
$GITHUB_RESPONSE = curl.exe -s -H "Authorization: token $env:MAPPED_GITHUB_TOKEN" "https://api.github.com/repos$USER_REPO/releases/tags/$env:LATEST_MS_TAG"
|
||||
echo "Github response: ${GITHUB_RESPONSE}"
|
||||
$VSCODIUM_ASSETS = $GITHUB_RESPONSE | jq '.assets'
|
||||
echo "VSCodium assets: ${VSCODIUM_ASSETS}"
|
||||
|
||||
# if we just don't have the github token, get out fast
|
||||
if (!$env:MAPPED_GITHUB_TOKEN -or $env:MAPPED_GITHUB_TOKEN -like "*GITHUB_TOKEN*") {
|
||||
echo "This build does not have the GH token"
|
||||
echo $env:MAPPED_GITHUB_TOKEN
|
||||
return
|
||||
}
|
||||
|
||||
if ($VSCODIUM_ASSETS -eq "null" -or !$VSCODIUM_ASSETS) {
|
||||
echo "Release assets do not exist at all, continuing build"
|
||||
$SHOULD_BUILD = 'yes'
|
||||
} else {
|
||||
$WindowsAssets = ($VSCODIUM_ASSETS | ConvertFrom-Json) | Where-Object { $_.name.Contains('exe') }
|
||||
$SYSTEM_SETUP = $WindowsAssets | Where-Object { $_.name.Contains('Setup') }
|
||||
$USER_SETUP = $WindowsAssets | Where-Object { $_.name.Contains('User') }
|
||||
if (!$SYSTEM_SETUP) {
|
||||
echo "Building on Windows because we have no system-setup.exe";
|
||||
$SHOULD_BUILD = 'yes'
|
||||
}
|
||||
elseif (!$USER_SETUP) {
|
||||
echo "Building on Windows because we have no user-setup.exe";
|
||||
$SHOULD_BUILD = 'yes'
|
||||
}
|
||||
else {
|
||||
echo "Already have all the Windows builds"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Write-Host "##vso[task.setvariable variable=SHOULD_BUILD]$SHOULD_BUILD"
|
||||
@@ -1,12 +1,84 @@
|
||||
#!/bin/bash
|
||||
|
||||
if git rev-parse $LATEST_MS_TAG >/dev/null 2>&1
|
||||
then
|
||||
echo "Latest MS tag ${LATEST_MS_TAG} already exists in VSCodium. Bail"
|
||||
else
|
||||
echo "New MS tag found, continuing build"
|
||||
REPOSITORY=${TRAVIS_REPO_SLUG:-"VSCodium/vscodium"}
|
||||
GITHUB_RESPONSE=$(curl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/repos/$REPOSITORY/releases/tags/$LATEST_MS_TAG)
|
||||
echo "Github response: ${GITHUB_RESPONSE}"
|
||||
VSCODIUM_ASSETS=$(echo $GITHUB_RESPONSE | jq '.assets')
|
||||
echo "VSCodium assets: ${VSCODIUM_ASSETS}"
|
||||
|
||||
# if we just don't have the github token, get out fast
|
||||
if [ "$GITHUB_TOKEN" != "" ]; then
|
||||
if [ "$VSCODIUM_ASSETS" != "null" ]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
HAVE_MAC=$(echo $VSCODIUM_ASSETS | jq --arg suffix "darwin-$LATEST_MS_TAG.zip" 'map(.name) | contains([$suffix])')
|
||||
if [[ "$HAVE_MAC" != "true" ]]; then
|
||||
echo "Building on Mac because we have no ZIP"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
elif [[ $BUILDARCH == "arm64" ]]; then
|
||||
# HAVE_ARM64_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["arm64.rpm"])')
|
||||
HAVE_ARM64_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["arm64.deb"])')
|
||||
HAVE_ARM64_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "arm64-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
|
||||
# if [[ "$HAVE_ARM64_RPM" != "true" ]]; then
|
||||
# echo "Building on Linux arm64 because we have no RPM"
|
||||
# export SHOULD_BUILD="yes"
|
||||
# fi
|
||||
if [[ "$HAVE_ARM64_DEB" != "true" ]]; then
|
||||
echo "Building on Linux arm64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$HAVE_ARM64_TAR" != "true" ]]; then
|
||||
echo "Building on Linux arm64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm64 builds"
|
||||
fi
|
||||
elif [[ $BUILDARCH == "arm" ]]; then
|
||||
HAVE_ARM_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["armhf.deb"])')
|
||||
HAVE_ARM_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "armhf-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
|
||||
if [[ "$HAVE_ARM_DEB" != "true" ]]; then
|
||||
echo "Building on Linux arm because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$HAVE_ARM_TAR" != "true" ]]; then
|
||||
echo "Building on Linux arm because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Linux arm builds"
|
||||
fi
|
||||
else
|
||||
HAVE_64_RPM=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["x86_64.rpm"])')
|
||||
HAVE_64_DEB=$(echo $VSCODIUM_ASSETS | jq 'map(.name) | contains(["amd64.deb"])')
|
||||
HAVE_64_TAR=$(echo $VSCODIUM_ASSETS | jq --arg suffix "x64-$LATEST_MS_TAG.tar.gz" 'map(.name) | contains([$suffix])')
|
||||
if [[ "$HAVE_64_RPM" != "true" ]]; then
|
||||
echo "Building on Linux x64 because we have no RPM"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$HAVE_64_DEB" != "true" ]]; then
|
||||
echo "Building on Linux x64 because we have no DEB"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$HAVE_64_TAR" != "true" ]]; then
|
||||
echo "Building on Linux x64 because we have no TAR"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Already have all the Linux x64 builds"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Release assets do not exist at all, continuing build"
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
if git rev-parse $LATEST_MS_TAG >/dev/null 2>&1
|
||||
then
|
||||
export TRAVIS_TAG=$LATEST_MS_TAG
|
||||
else
|
||||
git config --local user.name "Travis CI"
|
||||
git config --local user.email "builds@travis-ci.com"
|
||||
git tag $LATEST_MS_TAG
|
||||
export SHOULD_BUILD="yes"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
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
|
||||
8
create_dmg.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
cd VSCode-darwin
|
||||
create-dmg VSCodium.app ..
|
||||
fi
|
||||
cd ..
|
||||
fi
|
||||
@@ -3,11 +3,11 @@
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
cd VSCode-darwin
|
||||
zip -r ../VSCode-darwin-${LATEST_MS_TAG}.zip ./*
|
||||
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
|
||||
|
||||
15
get_repo.sh
@@ -1,8 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
git clone https://github.com/Microsoft/vscode.git
|
||||
cd vscode
|
||||
export LATEST_MS_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)
|
||||
if [ -d vscode ]; then
|
||||
cd vscode
|
||||
git fetch --all
|
||||
else
|
||||
git clone https://github.com/Microsoft/vscode.git
|
||||
cd vscode
|
||||
fi
|
||||
|
||||
export LATEST_MS_COMMIT=$(git rev-list --tags --max-count=1)
|
||||
export LATEST_MS_TAG=$(git describe --tags ${LATEST_MS_COMMIT})
|
||||
echo "Got the latest MS tag: ${LATEST_MS_TAG}"
|
||||
git checkout $LATEST_MS_TAG
|
||||
cd ..
|
||||
cd ..
|
||||
|
||||
@@ -2,8 +2,40 @@
|
||||
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
brew update
|
||||
brew install yarn --without-node
|
||||
brew install jq zip
|
||||
else
|
||||
sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev fakeroot rpm
|
||||
fi
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y fakeroot jq
|
||||
triplet=
|
||||
case $BUILDARCH in
|
||||
arm)
|
||||
arch=armhf
|
||||
triplet=arm-linux-gnueabihf
|
||||
;;
|
||||
|
||||
arm64)
|
||||
arch=arm64
|
||||
triplet=aarch64-linux-gnu
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ -n "$triplet" ]]; then
|
||||
sed 's/^deb /deb [arch=amd64] '/g -i /etc/apt/sources.list
|
||||
echo "deb [arch=$arch] http://ports.ubuntu.com/ubuntu-ports/ trusty main" | sudo tee -a /etc/apt/sources.list.d/$arch.list >/dev/null
|
||||
sudo dpkg --add-architecture $arch
|
||||
sudo apt-get update
|
||||
sudo apt-get install libc6-dev-$arch-cross gcc-$triplet g++-$triplet `apt-cache search x11proto | grep ^x11proto | cut -f 1 -d ' '` xz-utils pkg-config
|
||||
mkdir -p dl
|
||||
cd dl
|
||||
apt-get download libx11-dev:$arch libx11-6:$arch libxkbfile-dev:$arch libxkbfile1:$arch libxau-dev:$arch libxdmcp-dev:$arch libxcb1-dev:$arch libsecret-1-dev:$arch libsecret-1-0:$arch libpthread-stubs0-dev:$arch libglib2.0-dev:$arch libglib2.0-0:$arch libffi-dev:$arch libffi6:$arch zlib1g:$arch libpcre3-dev:$arch libpcre3:$arch
|
||||
for i in *.deb; do ar x $i; sudo tar -C / -xf data.tar.*; rm -f data.tar.*; done
|
||||
cd ..
|
||||
export CC=/usr/bin/$triplet-gcc
|
||||
export CXX=/usr/bin/$triplet-g++
|
||||
export CC_host=/usr/bin/gcc
|
||||
export CXX_host=/usr/bin/g++
|
||||
export PKG_CONFIG_LIBDIR=/usr/lib/$triplet/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
|
||||
else
|
||||
sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev rpm
|
||||
fi
|
||||
fi
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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/bat.icns
Normal file
BIN
src/resources/darwin/bower.icns
Normal file
BIN
src/resources/darwin/c.icns
Normal file
BIN
src/resources/darwin/code.icns
Normal file
BIN
src/resources/darwin/config.icns
Normal file
BIN
src/resources/darwin/cpp.icns
Normal file
BIN
src/resources/darwin/csharp.icns
Normal file
BIN
src/resources/darwin/css.icns
Normal file
BIN
src/resources/darwin/default.icns
Normal file
BIN
src/resources/darwin/html.icns
Normal file
BIN
src/resources/darwin/jade.icns
Normal file
BIN
src/resources/darwin/java.icns
Normal file
BIN
src/resources/darwin/javascript.icns
Normal file
BIN
src/resources/darwin/json.icns
Normal file
BIN
src/resources/darwin/less.icns
Normal file
BIN
src/resources/darwin/markdown.icns
Normal file
BIN
src/resources/darwin/php.icns
Normal file
BIN
src/resources/darwin/powershell.icns
Normal file
BIN
src/resources/darwin/python.icns
Normal file
BIN
src/resources/darwin/react.icns
Normal file
BIN
src/resources/darwin/ruby.icns
Normal file
BIN
src/resources/darwin/sass.icns
Normal file
BIN
src/resources/darwin/shell.icns
Normal file
BIN
src/resources/darwin/sql.icns
Normal file
BIN
src/resources/darwin/typescript.icns
Normal file
BIN
src/resources/darwin/vue.icns
Normal file
BIN
src/resources/darwin/xml.icns
Normal file
BIN
src/resources/darwin/yaml.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
|
||||
ls -lh ../out/*.AppImage
|
||||
BIN
src/resources/linux/code.png
Normal file
|
After Width: | Height: | Size: 227 KiB |
4341
src/resources/linux/rpm/code.xpm
Normal file
BIN
src/resources/win32/bower.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/c.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/code.ico
Normal file
|
After Width: | Height: | Size: 335 KiB |
BIN
src/resources/win32/code_150x150.png
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
src/resources/win32/code_70x70.png
Executable file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
src/resources/win32/config.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/cpp.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/csharp.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/css.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/default.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/go.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/html.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/inno-big.bmp
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
src/resources/win32/inno-small.bmp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/resources/win32/jade.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/java.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/javascript.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/json.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/less.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/markdown.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/php.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/powershell.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/python.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/react.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/ruby.png.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/shell.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/sql.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/typescript.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/vue.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/xml.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
BIN
src/resources/win32/yaml.ico
Normal file
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
26
src/src/vs/workbench/contrib/welcome/code-icon.svg
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
39
sum.sh
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
# shasum blows up in Azure, so using this
|
||||
# node package which has similar syntax and identical output
|
||||
if [[ "$CI_WINDOWS" == "True" ]]; then
|
||||
npm i -g checksum
|
||||
fi
|
||||
|
||||
sum_file () {
|
||||
if [[ -f "$1" ]]; then
|
||||
if [[ "$CI_WINDOWS" == "True" ]]; then
|
||||
checksum -a sha256 "$1" > "$1".sha256
|
||||
checksum -a sha1 "$1" > "$1".sha1
|
||||
else
|
||||
shasum -a 256 "$1" > "$1".sha256
|
||||
shasum "$1" > "$1".sha1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
sum_file VSCodium-darwin-*.zip
|
||||
sum_file VSCodium*.dmg
|
||||
elif [[ "$CI_WINDOWS" == "True" ]]; then
|
||||
sum_file VSCodiumSetup-*.exe
|
||||
sum_file VSCodiumUserSetup-*.exe
|
||||
sum_file VSCodium-win32-*.zip
|
||||
else # linux
|
||||
cp out/*.AppImage .
|
||||
cp vscode/.build/linux/deb/*/deb/*.deb .
|
||||
cp vscode/.build/linux/rpm/*/*.rpm .
|
||||
|
||||
sum_file *.AppImage
|
||||
sum_file VSCodium-linux*.tar.gz
|
||||
sum_file *.deb
|
||||
sum_file *.rpm
|
||||
fi
|
||||
fi
|
||||
10
undo_telemetry.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
# dc.services.visualstudio.com
|
||||
# vortex.data.microsoft.com
|
||||
TELEMETRY_URLS="(dc\.services\.visualstudio\.com)|(vortex\.data\.microsoft\.com)"
|
||||
REPLACEMENT="s/$TELEMETRY_URLS/0\.0\.0\.0/g"
|
||||
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
grep -rl --exclude-dir=.git -E $TELEMETRY_URLS . | xargs sed -i '' -E $REPLACEMENT
|
||||
else
|
||||
grep -rl --exclude-dir=.git -E $TELEMETRY_URLS . | xargs sed -i -E $REPLACEMENT
|
||||
fi
|
||||
49
update_settings.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
DEFAULT_TRUE="'default': true"
|
||||
DEFAULT_FALSE="'default': false"
|
||||
TELEMETRY_ENABLE="'telemetry.enableTelemetry':"
|
||||
TELEMETRY_CRASH_REPORTER="'telemetry.enableCrashReporter':"
|
||||
|
||||
replace () {
|
||||
echo $1
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
sed -i '' -E "$1" $2
|
||||
else
|
||||
sed -i -E "$1" $2
|
||||
fi
|
||||
}
|
||||
|
||||
update_setting () {
|
||||
local FILENAME="$2"
|
||||
# check that the file exists
|
||||
if [ ! -f $FILENAME ]; then
|
||||
echo "File to update setting in does not exist ${FILENAME}"
|
||||
return
|
||||
fi
|
||||
|
||||
# go through lines of file, looking for block that contains setting
|
||||
local SETTING="$1"
|
||||
local LINE_NUM=0
|
||||
while read -r line; do
|
||||
local LINE_NUM=$(( $LINE_NUM + 1 ))
|
||||
if [[ $line == *"$SETTING"* ]]; then
|
||||
local IN_SETTING=1
|
||||
fi
|
||||
if [[ $line == *"$DEFAULT_TRUE"* && "$IN_SETTING" == "1" ]]; then
|
||||
local FOUND=1
|
||||
break
|
||||
fi
|
||||
done < $FILENAME
|
||||
|
||||
if [[ "$FOUND" != "1" ]]; then
|
||||
echo "$DEFAULT_TRUE not found for setting $SETTING in file $FILENAME"
|
||||
return
|
||||
fi
|
||||
|
||||
# construct line-aware replacement string
|
||||
local DEFAULT_TRUE_TO_FALSE="${LINE_NUM}s/${DEFAULT_TRUE}/${DEFAULT_FALSE}/"
|
||||
|
||||
replace "$DEFAULT_TRUE_TO_FALSE" $FILENAME
|
||||
}
|
||||
|
||||
update_setting "$TELEMETRY_ENABLE" src/vs/platform/telemetry/common/telemetryService.ts
|
||||
update_setting "$TELEMETRY_CRASH_REPORTER" src/vs/workbench/electron-browser/desktop.contribution.ts
|
||||
146
update_version.sh
Executable file
@@ -0,0 +1,146 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ "$SHOULD_BUILD" != "yes" ]]; then
|
||||
echo "Will not update version JSON because we did not build"
|
||||
exit
|
||||
fi
|
||||
|
||||
# {
|
||||
# "url": "https://az764295.vo.msecnd.net/stable/51b0b28134d51361cf996d2f0a1c698247aeabd8/VSCode-darwin-stable.zip",
|
||||
# "name": "1.33.1",
|
||||
# "version": "51b0b28134d51361cf996d2f0a1c698247aeabd8",
|
||||
# "productVersion": "1.33.1",
|
||||
# "hash": "cb4109f196d23b9d1e8646ce43145c5bb62f55a8",
|
||||
# "timestamp": 1554971059007,
|
||||
# "sha256hash": "ac2a1c8772501732cd5ff539a04bb4dc566b58b8528609d2b34bbf970d08cf01"
|
||||
# }
|
||||
|
||||
# `url` is URL_BASE + filename of asset e.g.
|
||||
# darwin: https://github.com/VSCodium/vscodium/releases/download/${LATEST_MS_TAG}/VSCodium-darwin-${LATEST_MS_TAG}.zip
|
||||
# `name` is $LATEST_MS_TAG
|
||||
# `version` is $LATEST_MS_COMMIT
|
||||
# `productVersion` is $LATEST_MS_TAG
|
||||
# `hash` in <filename>.sha1
|
||||
# `timestamp` is $(node -e 'console.log(Date.now())')
|
||||
# `sha256hash` in <filename>.sha256
|
||||
|
||||
URL_BASE=https://github.com/VSCodium/vscodium/releases/download/${LATEST_MS_TAG}
|
||||
|
||||
# to make testing on forks easier
|
||||
if [[ "$CI_WINDOWS" == "True" ]]; then
|
||||
# BUILD_REPOSITORY_URI = e.g. https://github.com/VSCodium/vscodium
|
||||
VERSIONS_REPO=$(echo ${BUILD_REPOSITORY_URI} | awk -F"/" '{ print $4 }')/versions
|
||||
|
||||
git config --global core.autocrlf true
|
||||
else
|
||||
# TRAVIS_REPO_SLUG = e.g. VSCodium/vscodium
|
||||
VERSIONS_REPO=$(echo ${TRAVIS_REPO_SLUG} | awk -F"/" '{ print $1 }')/versions
|
||||
fi
|
||||
|
||||
# generateJson <assetName>
|
||||
# e.g. generateJson VSCodium-darwin-1.33.0.zip
|
||||
generateJson() {
|
||||
local assetName=$1
|
||||
|
||||
# generate parts
|
||||
local url=${URL_BASE}/${assetName}
|
||||
local name=$LATEST_MS_TAG
|
||||
local version=$LATEST_MS_COMMIT
|
||||
local productVersion=$LATEST_MS_TAG
|
||||
local timestamp=$(node -e 'console.log(Date.now())')
|
||||
|
||||
local sha1hash=$(cat ${assetName}.sha1 | awk '{ print $1 }')
|
||||
local sha256hash=$(cat ${assetName}.sha256 | awk '{ print $1 }')
|
||||
|
||||
# check that nothing is blank (blank indicates something awry with build)
|
||||
for key in url name version productVersion sha1hash timestamp sha256hash; do
|
||||
if [[ "${!key}" == "" ]]; then
|
||||
echo "Missing data for version update; exiting..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# generate json
|
||||
local json=$(jq \
|
||||
--arg url "${url}" \
|
||||
--arg name "${name}" \
|
||||
--arg version "${version}" \
|
||||
--arg productVersion "${productVersion}" \
|
||||
--arg hash "${sha1hash}" \
|
||||
--arg timestamp "${timestamp}" \
|
||||
--arg sha256hash "${sha256hash}" \
|
||||
'. | .url=$url | .name=$name | .version=$version | .productVersion=$productVersion | .hash=$hash | .timestamp=$timestamp | .sha256hash=$sha256hash' \
|
||||
<<<'{}')
|
||||
|
||||
echo "$json"
|
||||
}
|
||||
|
||||
updateLatestVersion() {
|
||||
cd versions
|
||||
|
||||
local versionPath=$1
|
||||
local json=$2
|
||||
|
||||
# create/update the latest.json file in the correct location
|
||||
mkdir -p $versionPath
|
||||
echo $json > $versionPath/latest.json
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
# init versions repo for later commiting + pushing the json file to it
|
||||
# thank you https://www.vinaygopinath.me/blog/tech/commit-to-master-branch-on-github-using-travis-ci/
|
||||
git clone https://github.com/${VERSIONS_REPO}.git
|
||||
cd versions
|
||||
git config user.email "vscodium-ci@not-real.com"
|
||||
git config user.name "VSCodium CI"
|
||||
git remote rm origin
|
||||
git remote add origin https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/${VERSIONS_REPO}.git > /dev/null 2>&1
|
||||
cd ..
|
||||
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
# zip, sha1, and sha256 files are all at top level dir
|
||||
ASSET_NAME=VSCodium-darwin-${LATEST_MS_TAG}.zip
|
||||
VERSION_PATH="darwin"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
elif [[ "$CI_WINDOWS" == "True" ]]; then
|
||||
# system installer
|
||||
ASSET_NAME=VSCodiumSetup-${BUILDARCH}-${LATEST_MS_TAG}.exe
|
||||
VERSION_PATH="win32/${BUILDARCH}/system"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
|
||||
# user installer
|
||||
ASSET_NAME=VSCodiumUserSetup-${BUILDARCH}-${LATEST_MS_TAG}.exe
|
||||
VERSION_PATH="win32/${BUILDARCH}/user"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
|
||||
# windows archive
|
||||
ASSET_NAME=VSCodium-win32-${BUILDARCH}-${LATEST_MS_TAG}.zip
|
||||
VERSION_PATH="win32/${BUILDARCH}/archive"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
else # linux
|
||||
# update service links to tar.gz file
|
||||
# see https://update.code.visualstudio.com/api/update/linux-x64/stable/VERSION
|
||||
# as examples
|
||||
ASSET_NAME=VSCodium-linux-${BUILDARCH}-${LATEST_MS_TAG}.tar.gz
|
||||
VERSION_PATH="linux/${BUILDARCH}"
|
||||
JSON="$(generateJson ${ASSET_NAME})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
fi
|
||||
|
||||
cd versions
|
||||
|
||||
git pull origin master # in case another build just pushed
|
||||
git add .
|
||||
dateAndMonth=`date "+%D %T"`
|
||||
git commit -m "Travis update: $dateAndMonth (Build $TRAVIS_BUILD_NUMBER)"
|
||||
if ! git push origin master --quiet; then
|
||||
git pull origin master
|
||||
git push origin master --quiet
|
||||
fi
|
||||
|
||||
cd ..
|
||||
69
win32-build.yml
Normal file
@@ -0,0 +1,69 @@
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: '10.x'
|
||||
- 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_COMMIT="$(git -C vscode rev-list --tags --max-count=1)"
|
||||
$LATEST_MS_TAG="$(git -C vscode describe --tags)"
|
||||
Write-Host "##vso[task.setvariable variable=LATEST_MS_TAG]$LATEST_MS_TAG"
|
||||
Write-Host "##vso[task.setvariable variable=LATEST_MS_COMMIT]$LATEST_MS_COMMIT"
|
||||
Write-Host "##vso[task.setvariable variable=BUILD_SOURCEVERSION]$LATEST_MS_COMMIT"
|
||||
displayName: 'set env LATEST_MS_TAG, LATEST_MS_COMMIT'
|
||||
- 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-$(BUILDARCH)\\system-setup\\VSCodeSetup.exe VSCodiumSetup-$(BUILDARCH)-${LATEST_MS_TAG}.exe; fi
|
||||
displayName: 'move the system setup'
|
||||
- bash: |
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then mv vscode\\.build\\win32-$(BUILDARCH)\\user-setup\\VSCodeSetup.exe VSCodiumUserSetup-$(BUILDARCH)-${LATEST_MS_TAG}.exe; fi
|
||||
displayName: 'move the user setup'
|
||||
- bash: |
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then mv vscode\\.build\\win32-$(BUILDARCH)\\archive\\VSCode-win32-$(BUILDARCH).zip VSCodium-win32-$(BUILDARCH)-${LATEST_MS_TAG}.zip; fi
|
||||
displayName: 'move the zip folder'
|
||||
- powershell: |
|
||||
bash ./sum.sh
|
||||
condition: eq(variables['SHOULD_BUILD'], 'yes')
|
||||
displayName: 'compute sums'
|
||||
- task: CopyFiles@2
|
||||
inputs:
|
||||
contents: |
|
||||
VSCodium*.zip
|
||||
VSCodiumUserSetup*.exe
|
||||
VSCodiumSetup*.exe
|
||||
*.sha256
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
condition: eq(variables['SHOULD_BUILD'], 'yes')
|
||||
displayName: 'copy artifacts to staging directory'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish artifacts'
|
||||
condition: eq(variables['SHOULD_BUILD'], 'yes')
|
||||
inputs:
|
||||
PathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||
ArtifactName: 'everything'
|
||||
- bash: ./update_version.sh
|
||||
displayName: 'update version json'
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
GITHUB_USERNAME: $(GITHUB_USERNAME)
|
||||