diff --git a/build/build.sh b/build/build.sh index ba82710..b86c1df 100755 --- a/build/build.sh +++ b/build/build.sh @@ -7,8 +7,9 @@ export APP_NAME="VSCodium" export CI_BUILD="no" export SHOULD_BUILD="yes" -export SKIP_BUILD="no" export SKIP_ASSETS="yes" +export SKIP_BUILD="no" +export SKIP_SOURCE="no" export VSCODE_LATEST="no" export VSCODE_QUALITY="stable" @@ -26,6 +27,9 @@ while getopts ":ilop" opt; do p) export SKIP_ASSETS="no" ;; + s) + export SKIP_SOURCE="yes" + ;; esac done @@ -50,13 +54,14 @@ else fi echo "OS_NAME=\"${OS_NAME}\"" +echo "SKIP_SOURCE=\"${SKIP_SOURCE}\"" echo "SKIP_BUILD=\"${SKIP_BUILD}\"" echo "SKIP_ASSETS=\"${SKIP_ASSETS}\"" echo "VSCODE_ARCH=\"${VSCODE_ARCH}\"" echo "VSCODE_LATEST=\"${VSCODE_LATEST}\"" echo "VSCODE_QUALITY=\"${VSCODE_QUALITY}\"" -if [[ "${SKIP_BUILD}" == "no" ]]; then +if [[ "${SKIP_SOURCE}" == "no" ]]; then rm -rf vscode* VSCode* . get_repo.sh @@ -67,13 +72,11 @@ if [[ "${SKIP_BUILD}" == "no" ]]; then echo "MS_COMMIT=\"${MS_COMMIT}\"" >> build.env echo "RELEASE_VERSION=\"${RELEASE_VERSION}\"" >> build.env echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\"" >> build.env - - . build.sh - - if [[ "${VSCODE_QUALITY}" == "insider" && "${VSCODE_LATEST}" == "yes" ]]; then - echo "$( cat "insider.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )" > "insider.json" - fi else + if [[ "${SKIP_ASSETS}" != "no" ]]; then + rm -rf VSCode* + fi + . build.env echo "MS_TAG=\"${MS_TAG}\"" @@ -82,6 +85,23 @@ else echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\"" fi +if [[ "${SKIP_BUILD}" == "no" ]]; then + if [[ "${SKIP_SOURCE}" != "no" ]]; then + cd vscode || { echo "'vscode' dir not found"; exit 1; } + + git add . + git reset -q --hard HEAD + + cd .. + fi + + . build.sh + + if [[ "${VSCODE_QUALITY}" == "insider" && "${VSCODE_LATEST}" == "yes" ]]; then + echo "$( cat "insider.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )" > "insider.json" + fi +fi + if [[ "${SKIP_ASSETS}" == "no" ]]; then if [[ "${OS_NAME}" == "windows" ]]; then rm -rf build/windows/msi/releasedir diff --git a/build/update_api.sh b/build/update_api.sh index e101b6b..83c0934 100755 --- a/build/update_api.sh +++ b/build/update_api.sh @@ -30,6 +30,6 @@ fi APIS=`cat ${DIRECTORY}/resources/app/product.json | jq -r '.extensionEnabledApiProposals'` -APIS=`echo "${APIS}" | jq '. += {"jeanp413.open-remote-ssh": ["resolvers", "tunnels", "terminalDataWriteEvent", "contribViewsRemote"]}'` +APIS=`echo "${APIS}" | jq '. += {"jeanp413.open-remote-ssh": ["resolvers", "tunnels", "terminalDataWriteEvent", "contribRemoteHelp", "contribViewsRemote"]}'` cat <<< $(jq --argjson v "${APIS}" 'setpath(["extensionEnabledApiProposals"]; $v)' product.json) > product.json diff --git a/insider.json b/insider.json index 2598343..31d16be 100644 --- a/insider.json +++ b/insider.json @@ -1,4 +1,4 @@ { "tag": "1.75.0", - "commit": "b92894493e6f971a3c71912d823e699d3a05d643" + "commit": "e2816fe719a4026ffa1ee0189dc89bdfdbafb164" } diff --git a/install_gh.sh b/install_gh.sh index a829ada..395dfc7 100755 --- a/install_gh.sh +++ b/install_gh.sh @@ -1,12 +1,12 @@ #!/bin/bash -set -e +set -ex GH_ARCH="amd64" -VERSION=`curl "https://api.github.com/repos/cli/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c2-` +VERSION=`curl --retry 12 --retry-delay 30 "https://api.github.com/repos/cli/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c2-` -curl -sSL "https://github.com/cli/cli/releases/download/v${VERSION}/gh_${VERSION}_linux_${GH_ARCH}.tar.gz" -o "gh_${VERSION}_linux_${GH_ARCH}.tar.gz" +curl --retry 12 --retry-delay 120 -sSL "https://github.com/cli/cli/releases/download/v${VERSION}/gh_${VERSION}_linux_${GH_ARCH}.tar.gz" -o "gh_${VERSION}_linux_${GH_ARCH}.tar.gz" tar xf "gh_${VERSION}_linux_${GH_ARCH}.tar.gz" diff --git a/patch.sh b/patch.sh index ece3299..e94b820 100755 --- a/patch.sh +++ b/patch.sh @@ -1,6 +1,10 @@ #!/bin/bash -FILE="../patches/${1}.patch" +if [[ "${1}" == *patch ]]; then + FILE="../patches/${1}" +else + FILE="../patches/${1}.patch" +fi cd vscode || { echo "'vscode' dir not found"; exit 1; } @@ -11,8 +15,12 @@ if [[ -f "${FILE}" ]]; then git apply --reject "${FILE}" fi +git apply --reject "../patches/helper/settings.patch" + read -p "Press any key when the conflict have been resolved..." -n1 -s +git restore .vscode/settings.json + git add . git diff --staged -U1 > "${FILE}" diff --git a/patches/fix-mangle-windows.patch b/patches/fix-mangle-windows.patch deleted file mode 100644 index 0d0e902..0000000 --- a/patches/fix-mangle-windows.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/build/lib/compilation.js b/build/lib/compilation.js -index f26b7ac..15d930c 100644 ---- a/build/lib/compilation.js -+++ b/build/lib/compilation.js -@@ -109,3 +109,3 @@ function compileTask(src, out, build) { - mangleStream = es.through(function write(data) { -- const newContents = newContentsByFileName.get(data.path); -+ const newContents = newContentsByFileName.get(data.path.replace(/\\/g, '/')); - if (newContents !== undefined) { -diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts -index 2cc04d2..9029c62 100644 ---- a/build/lib/compilation.ts -+++ b/build/lib/compilation.ts -@@ -128,3 +128,3 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod - mangleStream = es.through(function write(data: File) { -- const newContents = newContentsByFileName.get(data.path); -+ const newContents = newContentsByFileName.get(data.path.replace(/\\/g, '/')); - if (newContents !== undefined) { diff --git a/patches/helper/settings.patch b/patches/helper/settings.patch new file mode 100644 index 0000000..6aea6f1 --- /dev/null +++ b/patches/helper/settings.patch @@ -0,0 +1,23 @@ +diff --git a/.vscode/settings.json b/.vscode/settings.json +index 7ae8bce..724b9ad 100644 +--- a/.vscode/settings.json ++++ b/.vscode/settings.json +@@ -9,5 +9,5 @@ + "cli/target": true, +- "build/**/*.js": { +- "when": "$(basename).ts" +- } ++ // "build/**/*.js": { ++ // "when": "$(basename).ts" ++ // } + }, +@@ -81,3 +81,3 @@ + "gulp.autoDetect": "off", +- "files.insertFinalNewline": true, ++ // "files.insertFinalNewline": true, + "[plaintext]": { +@@ -91,3 +91,3 @@ + "editor.defaultFormatter": "vscode.typescript-language-features", +- "editor.formatOnSave": true ++ // "editor.formatOnSave": true + }, diff --git a/patches/insider/add-remote-url.patch b/patches/insider/add-remote-url.patch new file mode 100644 index 0000000..ca335de --- /dev/null +++ b/patches/insider/add-remote-url.patch @@ -0,0 +1,23 @@ +diff --git a/src/vs/workbench/contrib/remote/browser/remote.contribution.ts b/src/vs/workbench/contrib/remote/browser/remote.contribution.ts +index 63e7f2d..e9a6b7d 100644 +--- a/src/vs/workbench/contrib/remote/browser/remote.contribution.ts ++++ b/src/vs/workbench/contrib/remote/browser/remote.contribution.ts +@@ -13,2 +13,4 @@ import { RemoteStatusIndicator } from 'vs/workbench/contrib/remote/browser/remot + import { AutomaticPortForwarding, ForwardedPortsView, PortRestore } from 'vs/workbench/contrib/remote/browser/remoteExplorer'; ++import { CommandsRegistry } from 'vs/platform/commands/common/commands'; ++import { localize } from 'vs/nls'; + +@@ -23 +25,13 @@ workbenchContributionsRegistry.registerWorkbenchContribution(AutomaticPortForwar + workbenchContributionsRegistry.registerWorkbenchContribution(RemoteMarkers, LifecyclePhase.Eventually); ++ ++CommandsRegistry.registerCommand({ ++ id: 'remote.serverDownloadUrlTemplate', ++ description: { ++ description: localize('remote.serverDownloadUrlTemplate', 'Provides the url template to download the server archive'), ++ args: [], ++ returns: 'string', ++ }, ++ handler: async (_) => { ++ return 'https://github.com/VSCodium/vscodium-insiders/releases/download/${version}.${release}-insider/vscodium-reh-${os}-${arch}-${version}.${release}-insider.tar.gz'; ++ } ++}); diff --git a/patches/remove-mangle.patch b/patches/remove-mangle.patch new file mode 100644 index 0000000..416c20d --- /dev/null +++ b/patches/remove-mangle.patch @@ -0,0 +1,66 @@ +diff --git a/build/lib/compilation.js b/build/lib/compilation.js +index 71bc9fb..238a3b9 100644 +--- a/build/lib/compilation.js ++++ b/build/lib/compilation.js +@@ -20,3 +20,2 @@ const File = require("vinyl"); + const task = require("./task"); +-const mangleTypeScript_1 = require("./mangleTypeScript"); + const watch = require('./watch'); +@@ -103,23 +102,3 @@ function compileTask(src, out, build) { + } +- // mangle: TypeScript to TypeScript +- let mangleStream = es.through(); +- if (build) { +- let ts2tsMangler = new mangleTypeScript_1.Mangler(compile.projectPath, (...data) => fancyLog(ansiColors.blue('[mangler]'), ...data)); +- const newContentsByFileName = ts2tsMangler.computeNewFileContents(); +- mangleStream = es.through(function write(data) { +- const newContents = newContentsByFileName.get(data.path); +- if (newContents !== undefined) { +- data.contents = Buffer.from(newContents.out); +- data.sourceMap = newContents.sourceMap && JSON.parse(newContents.sourceMap); +- } +- this.push(data); +- }, function end() { +- this.push(null); +- // free resources +- newContentsByFileName.clear(); +- ts2tsMangler = undefined; +- }); +- } + return srcPipe +- .pipe(mangleStream) + .pipe(generator.stream) +diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts +index 8e0f19a..27ea44c 100644 +--- a/build/lib/compilation.ts ++++ b/build/lib/compilation.ts +@@ -19,4 +19,2 @@ import * as File from 'vinyl'; + import * as task from './task'; +-import { Mangler } from './mangleTypeScript'; +-import { RawSourceMap } from 'source-map'; + const watch = require('./watch'); +@@ -123,24 +121,3 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod + +- // mangle: TypeScript to TypeScript +- let mangleStream = es.through(); +- if (build) { +- let ts2tsMangler = new Mangler(compile.projectPath, (...data) => fancyLog(ansiColors.blue('[mangler]'), ...data)); +- const newContentsByFileName = ts2tsMangler.computeNewFileContents(); +- mangleStream = es.through(function write(data: File & { sourceMap?: RawSourceMap }) { +- const newContents = newContentsByFileName.get(data.path); +- if (newContents !== undefined) { +- data.contents = Buffer.from(newContents.out); +- data.sourceMap = newContents.sourceMap && JSON.parse(newContents.sourceMap); +- } +- this.push(data); +- }, function end() { +- this.push(null); +- // free resources +- newContentsByFileName.clear(); +- (ts2tsMangler) = undefined; +- }); +- } +- + return srcPipe +- .pipe(mangleStream) + .pipe(generator.stream) diff --git a/patches/use-github-pat.patch b/patches/use-github-pat.patch index c4c5603..e3805a8 100644 --- a/patches/use-github-pat.patch +++ b/patches/use-github-pat.patch @@ -1,5 +1,5 @@ diff --git a/extensions/github-authentication/src/githubServer.ts b/extensions/github-authentication/src/githubServer.ts -index e1f766d..4f11dbe 100644 +index 8565178..e35d29f 100644 --- a/extensions/github-authentication/src/githubServer.ts +++ b/extensions/github-authentication/src/githubServer.ts @@ -6,4 +6,2 @@ @@ -22,7 +22,7 @@ index e1f766d..4f11dbe 100644 -const REDIRECT_URL_INSIDERS = 'https://insiders.vscode.dev/redirect'; - export interface IGitHubServer { -@@ -30,9 +20,2 @@ export interface IGitHubServer { +@@ -30,8 +20,2 @@ export interface IGitHubServer { -interface IGitHubDeviceCodeResponse { - device_code: string; @@ -30,9 +30,8 @@ index e1f766d..4f11dbe 100644 - verification_uri: string; - interval: number; -} -- - async function getScopes(token: string, serverUri: vscode.Uri, logger: Log): Promise { -@@ -63,8 +46,4 @@ export class GitHubServer implements IGitHubServer { + +@@ -63,8 +47,4 @@ export class GitHubServer implements IGitHubServer { - private readonly _pendingNonces = new Map(); - private readonly _codeExchangePromises = new Map; cancel: vscode.EventEmitter }>(); @@ -41,13 +40,13 @@ index e1f766d..4f11dbe 100644 - private _redirectEndpoint: string | undefined; - constructor( -@@ -72,3 +51,5 @@ export class GitHubServer implements IGitHubServer { +@@ -72,3 +52,5 @@ export class GitHubServer implements IGitHubServer { private readonly _telemetryReporter: ExperimentationTelemetry, + // @ts-ignore private readonly _uriHandler: UriEventHandler, + // @ts-ignore - private readonly _supportDeviceCodeFlow: boolean, -@@ -87,41 +68,2 @@ export class GitHubServer implements IGitHubServer { + private readonly _extensionKind: vscode.ExtensionKind, +@@ -87,41 +69,2 @@ export class GitHubServer implements IGitHubServer { - private async getRedirectEndpoint(): Promise { - if (this._redirectEndpoint) { @@ -89,7 +88,7 @@ index e1f766d..4f11dbe 100644 - } - // TODO@joaomoreno TODO@TylerLeonhardt -@@ -137,58 +79,8 @@ export class GitHubServer implements IGitHubServer { +@@ -137,57 +80,2 @@ export class GitHubServer implements IGitHubServer { let userCancelled: boolean | undefined; - const yes = vscode.l10n.t('Yes'); - const no = vscode.l10n.t('No'); @@ -109,7 +108,7 @@ index e1f766d..4f11dbe 100644 - - const nonce: string = crypto.getRandomValues(new Uint32Array(2)).reduce((prev, curr) => prev += curr.toString(16), ''); - const callbackUri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.github-authentication/did-authenticate?nonce=${encodeURIComponent(nonce)}`)); - +- - const supported = isSupportedEnvironment(callbackUri); - if (supported) { - try { @@ -120,8 +119,13 @@ index e1f766d..4f11dbe 100644 - } - } - -- // Starting a local server isn't supported in web -- if (vscode.env.uiKind === vscode.UIKind.Desktop) { +- // Starting a local server is only supported if: +- // 1. We are in a UI extension because we need to open a port on the machine that has the browser +- // 2. We are in a node runtime because we need to open a port on the machine +- if ( +- this._extensionKind === vscode.ExtensionKind.UI && +- typeof navigator === 'undefined' +- ) { - try { - await promptToContinue(); - return await this.doLoginWithLocalServer(scopes); @@ -131,7 +135,8 @@ index e1f766d..4f11dbe 100644 - } - } - -- if (this._supportDeviceCodeFlow) { +- // We only can use the Device Code flow when we have a full node environment because of CORS. +- if (typeof navigator === 'undefined') { - try { - await promptToContinue(); - return await this.doLoginDeviceCodeFlow(scopes); @@ -139,7 +144,11 @@ index e1f766d..4f11dbe 100644 - this._logger.error(e); - userCancelled = e.message ?? e === 'User Cancelled'; - } -- } else if (!supported) { +- } + +@@ -195,10 +83,7 @@ export class GitHubServer implements IGitHubServer { + // With that said, GitHub Enterprise isn't used by Settings Sync so we can use PATs for that. +- if (!supported || this._type === AuthProviderType.githubEnterprise) { - try { - await promptToContinue(); - return await this.doLoginWithPat(scopes); @@ -153,7 +162,7 @@ index e1f766d..4f11dbe 100644 + this._logger.error(e); + userCancelled = e.message ?? e === 'User Cancelled'; } -@@ -198,136 +90,2 @@ export class GitHubServer implements IGitHubServer { +@@ -208,136 +93,2 @@ export class GitHubServer implements IGitHubServer { - private async doLoginWithoutLocalServer(scopes: string, nonce: string, callbackUri: vscode.Uri): Promise { - this._logger.info(`Trying without local server... (${scopes})`); @@ -290,7 +299,7 @@ index e1f766d..4f11dbe 100644 - } - private async doLoginWithPat(scopes: string): Promise { -@@ -355,124 +113,2 @@ export class GitHubServer implements IGitHubServer { +@@ -381,124 +132,2 @@ export class GitHubServer implements IGitHubServer { - private async waitForDeviceCodeAccessToken( - json: IGitHubDeviceCodeResponse, @@ -416,7 +425,7 @@ index e1f766d..4f11dbe 100644 - private getServerUri(path: string = '') { diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts -index 2fff6cf..46967ce 100644 +index 266311d..f066323 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts @@ -307,3 +307,3 @@ export class AccountsActivityActionViewItem extends MenuActivityActionViewItem { @@ -425,10 +434,10 @@ index 2fff6cf..46967ce 100644 + if (!menus.length) { const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('noAccounts', "You are not signed in to any accounts"), undefined, false)); diff --git a/src/vs/workbench/services/authentication/browser/authenticationService.ts b/src/vs/workbench/services/authentication/browser/authenticationService.ts -index 1d9ac76..57b915c 100644 +index 8dd6e19..10c2611 100644 --- a/src/vs/workbench/services/authentication/browser/authenticationService.ts +++ b/src/vs/workbench/services/authentication/browser/authenticationService.ts -@@ -267,12 +267,2 @@ export class AuthenticationService extends Disposable implements IAuthentication +@@ -274,12 +274,2 @@ export class AuthenticationService extends Disposable implements IAuthentication } - - if (!this._authenticationProviders.size) { diff --git a/product.json b/product.json index 182ba17..f1c6c94 100644 --- a/product.json +++ b/product.json @@ -48,7 +48,8 @@ ], "extensionEnabledApiProposals": { "ms-vscode.vscode-selfhost-test-provider": [ - "testObserver" + "testObserver", + "testContinuousRun" ], "VisualStudioExptTeam.vscodeintellicode-completions": [ "inlineCompletionsAdditions" @@ -76,8 +77,7 @@ ], "ms-python.python": [ "quickPickSortByLabel", - "testObserver", - "telemetryLogger" + "testObserver" ], "ms-dotnettools.dotnet-interactive-vscode": [ "notebookMessaging" @@ -96,7 +96,6 @@ "ms-vscode.azure-repos": [ "extensionRuntime", "fileSearchProvider", - "telemetryLogger", "textSearchProvider" ], "ms-vscode.remote-repositories": [ @@ -115,12 +114,12 @@ "scmActionButton", "scmSelectedProvider", "scmValidation", - "telemetryLogger", "textSearchProvider", "timeline" ], "ms-vscode-remote.remote-wsl": [ "resolvers", + "contribRemoteHelp", "contribViewsRemote", "telemetry" ], @@ -128,13 +127,16 @@ "resolvers", "tunnels", "terminalDataWriteEvent", + "contribRemoteHelp", "contribViewsRemote", "telemetry" ], "ms-vscode.remote-server": [ - "resolvers" + "resolvers", + "tunnels" ], "ms-vscode.remote-explorer": [ + "contribRemoteHelp", "contribViewsRemote", "extensionsAny" ], @@ -144,6 +146,7 @@ "tunnels", "workspaceTrust", "terminalDimensions", + "contribRemoteHelp", "contribViewsRemote" ], "ms-vscode.js-debug-nightly": [ @@ -163,7 +166,9 @@ "contribCommentPeekContext", "treeItemCheckbox", "codiconDecoration", - "diffCommand" + "diffCommand", + "contribCommentEditorActionsMenu", + "quickDiffProvider" ], "GitHub.copilot": [ "inlineCompletionsAdditions" @@ -184,8 +189,7 @@ "scmSelectedProvider", "scmValidation", "textSearchProvider", - "timeline", - "telemetryLogger" + "timeline" ], "ms-python.gather": [ "notebookCellExecutionState" @@ -231,6 +235,7 @@ "resolvers", "tunnels", "terminalDataWriteEvent", + "contribRemoteHelp", "contribViewsRemote" ] },