diff --git a/editors/vscode/Makefile b/editors/vscode/Makefile index 45fedbedec6f..45d2414aaffd 100644 --- a/editors/vscode/Makefile +++ b/editors/vscode/Makefile @@ -1,320 +1,321 @@ PORTNAME= vscode -DISTVERSION= 1.106.3 +DISTVERSION= ${VSCODE_VERSION} CATEGORIES= editors MASTER_SITES= https://github.com/tagattie/FreeBSD-VSCode/releases/download/${DISTVERSION}/:node_modules DISTFILES= vscode-node-modules-${DISTVERSION}${EXTRACT_SUFX}:node_modules \ vscode-marketplace-exts-${DISTVERSION}${EXTRACT_SUFX}:node_modules DIST_SUBDIR= ${PORTNAME} MAINTAINER= tagattie@FreeBSD.org COMMENT= Visual Studio Code - Open Source ("Code - OSS") WWW= https://code.visualstudio.com/ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE.txt ONLY_FOR_ARCHS= amd64 EXTRACT_DEPENDS=jq:textproc/jq \ node${NODEJS_VERSION}>0:www/node${NODEJS_VERSION} BUILD_DEPENDS= zip:archivers/zip \ electron${ELECTRON_VER_MAJOR}:devel/electron${ELECTRON_VER_MAJOR} \ - tsgo:lang/typescript-go \ jq:textproc/jq \ rg:textproc/ripgrep \ npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX} LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-core \ libatspi.so:accessibility/at-spi2-core \ libasound.so:audio/alsa-lib \ libFLAC.so:audio/flac \ libopus.so:audio/opus \ libsndio.so:audio/sndio \ libdbus-1.so:devel/dbus \ libepoll-shim.so:devel/libepoll-shim \ libevent.so:devel/libevent \ libffi.so:devel/libffi \ libnotify.so:devel/libnotify \ libpci.so:devel/libpci \ libnspr4.so:devel/nspr \ libpcre2-8.so:devel/pcre2 \ libre2.so:devel/re2 \ liblcms2.so:graphics/lcms2 \ libdrm.so:graphics/libdrm \ libpng.so:graphics/png \ libwayland-client.so:graphics/wayland \ libwebp.so:graphics/webp \ libdav1d.so:multimedia/dav1d \ libvpx.so:multimedia/libvpx \ libopenh264.so:multimedia/openh264 \ libpipewire-0.3.so:multimedia/pipewire \ libcups.so:print/cups \ libfreetype.so:print/freetype2 \ libharfbuzz.so:print/harfbuzz \ libsecret-1.so:security/libsecret \ libnss3.so:security/nss \ libexpat.so:textproc/expat2 \ libxkbcommon.so:x11/libxkbcommon \ libxshmfence.so:x11/libxshmfence \ libfontconfig.so:x11-fonts/fontconfig RUN_DEPENDS= xdg-open:devel/xdg-utils \ bash:shells/bash TEST_DEPENDS= electron${ELECTRON_VER_MAJOR}:devel/electron${ELECTRON_VER_MAJOR} \ bash:shells/bash USES= desktop-file-utils display:test gl gmake gnome gssapi:mit \ iconv:wchar_t jpeg localbase:ldflags nodejs:22,build pkgconfig \ python:build shebangfix xorg USE_GITHUB= yes GH_ACCOUNT= microsoft -SOURCE_COMMIT_HASH= bf9252a2fb45be6893dd8870c0bf37e2e1766d61 - BINARY_ALIAS= python=${PYTHON_CMD} USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xkbfile \ xrandr xrender xscrnsaver xtst USE_GL= gbm gl glesv2 USE_GNOME= atk cairo pango gdkpixbuf gtk30 libxml2 libxslt SHEBANG_REGEX= ./(extensions|node_modules|resources|scripts|src)/.*(\.(pl|py|sh)|makeBlacker|makeFF)$$ PATHFIX_FILES= src/vs/workbench/contrib/debug/node/terminals.ts DATADIR= ${PREFIX}/share/code-oss TMPDIR= ${WRKDIR} BUNDLE_LIBS= yes MAKE_ENV+= BUILD_SOURCEVERSION=${SOURCE_COMMIT_HASH} # Don't download electron binary distribution on electron node_modules installation MAKE_ENV+= ELECTRON_SKIP_BINARY_DOWNLOAD=1 # Don't download browser binaries on playwright node_modules installation MAKE_ENV+= PLAYWRIGHT_BROWSERS_PATH=${WRKDIR}/pw-browsers \ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 # Don't create __pycache__ directory when executing node-gyp # This is a workaround to avoid filesystem violations during poudriere build MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1 TEST_ENV= ${MAKE_ENV:C/TMPDIR=.*//} -NODEJS_DIR= ${.CURDIR:H:H}/www/node22 +.include "Makefile.version" +.include + +NODEJS_DIR= ${.CURDIR:H:H}/www/node${NODEJS_VERSION} .include "${NODEJS_DIR}/Makefile.version" -ELECTRON_DIR= ${.CURDIR:H:H}/devel/electron37 +ELECTRON_DIR= ${.CURDIR:H:H}/devel/electron39 .include "${ELECTRON_DIR}/Makefile.version" ELECTRON_DOWNLOAD_URL= https://github.com/electron/electron/releases/download/v${ELECTRON_VER} ELECTRON_DOWNLOAD_URL_HASH!= /sbin/sha256 -q -s ${ELECTRON_DOWNLOAD_URL} ELECTRON_ARCH= ${ARCH:S/aarch64/arm64/:S/amd64/x64/:S/i386/ia32/} pre-everything:: @${ECHO_MSG} "" @${ECHO_MSG} "The limit imposed by poudriere(8) for the maximum number of files allowed to be" @${ECHO_MSG} "opened by a jail (default 1024) is exceeded during the build of ${PORTNAME}." @${ECHO_MSG} "To successfully build ${PORTNAME} with poudriere(8), you must add the following" @${ECHO_MSG} "line to poudriere.conf:" @${ECHO_MSG} "MAX_FILES_${PORTNAME}=8192" @${ECHO_MSG} "" post-extract: @${CP} ${WRKSRC}/build/.moduleignore.linux \ ${WRKSRC}/build/.moduleignore.freebsd @${ECHO_MSG} "===> Installing node modules in ${WRKSRC}" @${TAR} -xzf ${WRKDIR}/vscode-.-node-modules${EXTRACT_SUFX} -C ${WRKSRC} - @for dir in `node -p "JSON.stringify(require('${WRKSRC}/build/npm/dirs').dirs)" | jq -r '.[]'`; do \ + @for dir in `node --input-type=module -e "console.log(JSON.stringify((await import('${WRKSRC}/build/npm/dirs.ts')).dirs))" | jq -r '.[]'`; do \ if [ -f ${WRKDIR}/vscode-`echo $${dir} | tr _ __ | tr / _`-node-modules${EXTRACT_SUFX} ]; then \ ${ECHO_MSG} "===> Installing node modules in ${WRKSRC}/$${dir}"; \ ${TAR} -xzf ${WRKDIR}/vscode-`echo $${dir} | tr _ __ | tr / _`-node-modules${EXTRACT_SUFX} -C ${WRKSRC}/$${dir}; \ fi; \ done post-patch: @${REINPLACE_CMD} -E 's|^(target=").*(")$$|\1${ELECTRON_VER}\2|' \ ${WRKSRC}/.npmrc @${REINPLACE_CMD} -E 's|^(target=").*(")$$|\1${NODEJS_PORTVERSION}\2|' \ ${WRKSRC}/remote/.npmrc + @${REINPLACE_CMD} -e 's/%%DISTVERSION%%/${DISTVERSION}/g' \ + ${WRKSRC}/build/gulpfile.reh.ts \ + ${WRKSRC}/build/gulpfile.vscode.ts @(cd ${WRKSRC} && \ ${FIND} -E . -type f -iregex '${SHEBANG_REGEX}' \ -exec ${SED} -i '' -e "s|/usr/bin/pgrep|/bin/pgrep|g" {} ';') @(cd ${WRKSRC} && \ ${FIND} ${PATHFIX_FILES} -type f \ -exec ${SED} -i '' -e "s|/usr/bin/pgrep|/bin/pgrep|g" {} ';') @${REINPLACE_CMD} -e 's/@@NAME_LONG@@/Code - OSS/; \ s/@@NAME_SHORT@@/Code - OSS/; \ s/@@PRODNAME@@/Code - OSS/; \ s/@@NAME@@/code-oss/g; \ s|@@EXEC@@|${PREFIX}/bin/code-oss|; \ s/@@ICON@@/com.visualstudio.code.oss/; \ s/@@URLPROTOCOL@@/code-oss/; \ s/@@LICENSE@@/MIT/; \ s/@@APPNAME@@/code-oss/g; \ s|/usr/share|${PREFIX}/share|' \ ${WRKSRC}/resources/completions/bash/code \ ${WRKSRC}/resources/completions/zsh/_code \ ${WRKSRC}/resources/linux/bin/code.sh \ ${WRKSRC}/resources/linux/code.appdata.xml \ ${WRKSRC}/resources/linux/code.desktop \ ${WRKSRC}/resources/linux/code-url-handler.desktop @(cd ${WRKDIR}/builtInExtensions && \ ${FIND} . -type f -name '*.sh' \ -exec ${SED} -i '' -e "s|/usr/bin/pgrep|/bin/pgrep|g" \ -e 's|#!/bin/bash|#!${LOCALBASE}/bin/bash|' {} ';') + @${SETENV} FILESDIR=${FILESDIR} \ + ${SH} ${FILESDIR}/update-product-json.sh ${WRKSRC} pre-build: # rebuild native node modules in top directory @for subdir in `${FIND} ${WRKSRC}/node_modules -type f -name binding.gyp -exec ${DIRNAME} {} ';'`; do \ ${ECHO_MSG} "===> Rebuilding native modules in $${subdir}"; \ cd $${subdir} && \ ${SETENV} ${MAKE_ENV} \ npm_config_runtime=electron \ npm_config_target=${ELECTRON_VER} \ npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers \ node-gyp --userconfig=${WRKSRC}/.npmrc rebuild; \ done # rebuild native node modules in subdirectories - @for dir in `node -p "JSON.stringify(require('${WRKSRC}/build/npm/dirs').dirs)" | jq -r '.[]'`; do \ + @for dir in `node --input-type=module -e "console.log(JSON.stringify((await import('${WRKSRC}/build/npm/dirs.ts')).dirs))" | jq -r '.[]'`; do \ for subdir in `${FIND} ${WRKSRC}/$${dir}/node_modules -type f -name binding.gyp -exec ${DIRNAME} {} ';' 2> /dev/null`; do \ ${ECHO_MSG} "===> Rebuilding native modules in $${subdir}"; \ if [ "`${ECHO_CMD} $${subdir} | ${GREP} /build/`" ]; then \ cd $${subdir} && \ ${SETENV} ${MAKE_ENV} \ npm_config_runtime=node \ npm_config_target=${NODEJS_PORTVERSION} \ npm_config_nodedir=${LOCALBASE} \ node-gyp --userconfig=${WRKSRC}/build/.npmrc rebuild; \ elif [ "`${ECHO_CMD} $${subdir} | ${GREP} /remote/`" ]; then \ cd $${subdir} && \ ${SETENV} ${MAKE_ENV} \ npm_config_runtime=node \ npm_config_target=${NODEJS_PORTVERSION} \ npm_config_nodedir=${LOCALBASE} \ node-gyp --userconfig=${WRKSRC}/remote/.npmrc rebuild; \ else \ cd $${subdir} && \ ${SETENV} ${MAKE_ENV} \ npm_config_runtime=electron \ npm_config_target=${ELECTRON_VER} \ npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers \ node-gyp --userconfig=${WRKSRC}/.npmrc rebuild; \ fi; \ done; \ done # copy rg binary file to @vscode/ripgrep node module directory @${MKDIR} ${WRKSRC}/node_modules/@vscode/ripgrep/bin @${CP} ${LOCALBASE}/bin/rg ${WRKSRC}/node_modules/@vscode/ripgrep/bin @${MKDIR} ${WRKSRC}/build/node_modules/@vscode/ripgrep/bin @${CP} ${LOCALBASE}/bin/rg ${WRKSRC}/build/node_modules/@vscode/ripgrep/bin @${MKDIR} ${WRKSRC}/remote/node_modules/@vscode/ripgrep/bin @${CP} ${LOCALBASE}/bin/rg ${WRKSRC}/remote/node_modules/@vscode/ripgrep/bin do-build: # setup download cache for gulp-atom-electron @${MKDIR} ${WRKDIR}/.cache/electron/${ELECTRON_DOWNLOAD_URL_HASH} @cd ${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR} && \ zip -q -r ${WRKDIR}/.cache/electron/${ELECTRON_DOWNLOAD_URL_HASH}/electron-v${ELECTRON_VER}-linux-${ELECTRON_ARCH}.zip . # remove backup files so that they are not included in the package - @${FIND} ${WRKSRC} -type f \( -name '*.orig' -o -name '*~' \) -delete + @${FIND} ${WRKSRC} -type f \( -name '*.bak' -o -name '*.orig' -o -name '*~' \) -delete # build and package vscode - cd ${WRKSRC}/build && \ - ${SETENV} ${MAKE_ENV} npm run prebuild-ts - cd ${WRKSRC} && \ - ${SETENV} ${MAKE_ENV} tsgo -p build/tsconfig.build.json cd ${WRKSRC} && \ ${SETENV} ${MAKE_ENV} \ npm_config_runtime=electron \ npm_config_target=${ELECTRON_VER} \ npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers \ npm --userconfig=${WRKSRC}/.npmrc run gulp vscode-linux-${ELECTRON_ARCH}-min # move marketplace extensions @${MV} ${WRKDIR}/builtInExtensions/* ${WRKDIR}/VSCode-linux-${ELECTRON_ARCH}/resources/app/extensions do-install: @${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d ${INSTALL_DATA} ${WRKSRC}/resources/completions/bash/code \ ${STAGEDIR}${PREFIX}/etc/bash_completion.d/code-oss @${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions ${INSTALL_DATA} ${WRKSRC}/resources/completions/zsh/_code \ ${STAGEDIR}${PREFIX}/share/zsh/site-functions/_code-oss @${MKDIR} ${STAGEDIR}${PREFIX}/share/appdata ${INSTALL_DATA} ${WRKSRC}/resources/linux/code.appdata.xml \ ${STAGEDIR}${PREFIX}/share/appdata/code-oss.appdata.xml @${MKDIR} ${STAGEDIR}${PREFIX}/share/applications .for f in code.desktop code-url-handler.desktop ${INSTALL_DATA} ${WRKSRC}/resources/linux/${f} \ ${STAGEDIR}${PREFIX}/share/applications/${f:S/code/code-oss/} .endfor @${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps ${INSTALL_DATA} ${WRKSRC}/resources/linux/code.png \ ${STAGEDIR}${PREFIX}/share/pixmaps/com.visualstudio.code.oss.png @${MKDIR} ${STAGEDIR}${DATADIR} ${TAR} -cf - -C ${WRKDIR}/VSCode-linux-${ELECTRON_ARCH} . | \ ${TAR} -xf - -C ${STAGEDIR}${DATADIR} @${FIND} ${STAGEDIR}${DATADIR}/resources/app -type f -exec ${FILE} {} ';' | \ ${GREP} 'ELF.*FreeBSD' | ${AWK} -F ': ' '{print $$1}' | ${XARGS} ${STRIP_CMD} .for f in chromedriver mksnapshot v8_context_snapshot_generator @${RM} ${STAGEDIR}${DATADIR}/${f} .endfor @${RM} -r ${STAGEDIR}${DATADIR}/gen @${RM} -r ${STAGEDIR}${DATADIR}/node_headers @${RM} -r ${STAGEDIR}${DATADIR}/resources/completions ${RLN} ${STAGEDIR}${DATADIR}/bin/code-oss ${STAGEDIR}${PREFIX}/bin ${INSTALL_SCRIPT} ${FILESDIR}/wrapper.sh ${STAGEDIR}${PREFIX}/bin/${PORTNAME} pre-test: # setup electron dependency for unit tests @${MKDIR} ${WRKSRC}/.build/electron @${TAR} -cf - -C ${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR} . | \ ${TAR} -xf - -C ${WRKSRC}/.build/electron @cd ${WRKSRC}/.build/electron && ${MV} -f electron code-oss do-test: # unit tests cd ${WRKSRC} && ${SETENV} ${TEST_ENV} ./scripts/test.sh --build || ${TRUE} # UI smoke tests cd ${WRKSRC} && ${SETENV} ${TEST_ENV} npm run smoketest build-remote-extension-host: configure pre-build # setup download cache for node @${MKDIR} ${WRKSRC}/.build/node/v${NODEJS_PORTVERSION}/linux-${ELECTRON_ARCH} @${CP} ${LOCALBASE}/bin/node ${WRKSRC}/.build/node/v${NODEJS_PORTVERSION}/linux-${ELECTRON_ARCH} # build vscode remote extension host cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \ npm_config_runtime=node \ npm_config_target=${NODEJS_PORTVERSION} \ npm_config_nodedir=${LOCALBASE} \ npm --userconfig=${WRKSRC}/remote/.npmrc run gulp vscode-reh-linux-${ELECTRON_ARCH}-min @${MKDIR} ${WRKDIR}/vscode-reh/bin/${SOURCE_COMMIT_HASH} ${TAR} -cf - -C ${WRKDIR}/vscode-reh-linux-${ELECTRON_ARCH} . | \ ${TAR} -xf - -C ${WRKDIR}/vscode-reh/bin/${SOURCE_COMMIT_HASH} @${FIND} ${WRKDIR}/vscode-reh -type f -exec ${FILE} {} ';' | \ ${GREP} 'ELF.*FreeBSD' | ${AWK} -F ': ' '{print $$1}' | ${XARGS} ${STRIP_CMD} ${TAR} -czf ${WRKDIR}/vscode-reh-${DISTVERSION}-${OPSYS:tl}${OSREL:R}-${ARCH}.tar.gz -C ${WRKDIR}/vscode-reh . # cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm run gulp vscode-reh-web-linux-${ELECTRON_ARCH}-min ### targets for port maintainer(s) patch-package-json: extract # add node module for signature verification of extensions from Open VSX Registry @${PATCH} -s -p0 -d ${WRKSRC} < ${FILESDIR}/patch-package.json make-node-modules-archive: extract patch-package-json @${ECHO_MSG} "===> Fetching and installing node modules in ${WRKSRC}" @cd ${WRKSRC} && \ ${SETENV} ${MAKE_ENV} npm install \ --ignore-scripts --no-progress --no-audit --no-fund --no-update-notifier && \ ${TAR} -czf ${WRKDIR}/vscode-.-node-modules${EXTRACT_SUFX} node_modules - @for dir in `node -p "JSON.stringify(require('${WRKSRC}/build/npm/dirs').dirs)" | jq -r '.[]'`; do \ + @for dir in `node --input-type=module -e "console.log(JSON.stringify((await import('${WRKSRC}/build/npm/dirs.ts')).dirs))" | jq -r '.[]'`; do \ cd ${WRKSRC}/$${dir} && \ ${ECHO_MSG} "===> Fetching and installing node modules in ${WRKSRC}/$${dir}" && \ ${SETENV} ${MAKE_ENV} npm install \ --ignore-scripts --no-progress --no-audit --no-fund --no-update-notifier && \ if [ -d node_modules ]; then \ ${TAR} -czf ${WRKDIR}/vscode-`echo $${dir} | tr _ __ | tr / _`-node-modules${EXTRACT_SUFX} node_modules; \ fi; \ done @cd ${WRKDIR} && \ ${TAR} -czf vscode-node-modules-${DISTVERSION}${EXTRACT_SUFX} vscode-*-node-modules.tar.gz make-marketplace-exts-archive: extract @${RM} -r ${WRKSRC}/.build/builtInExtensions @cd ${WRKSRC} && \ ${SETENV} ${MAKE_ENV} npm run download-builtin-extensions @${TAR} -czf ${WRKDIR}/vscode-marketplace-exts-${DISTVERSION}${EXTRACT_SUFX} -C ${WRKSRC}/.build builtInExtensions -.include +.include diff --git a/editors/vscode/Makefile.reh b/editors/vscode/Makefile.reh new file mode 100644 index 000000000000..247bb4469c56 --- /dev/null +++ b/editors/vscode/Makefile.reh @@ -0,0 +1,133 @@ +PORTNAME= vscode +DISTVERSION= ${VSCODE_VERSION} +CATEGORIES= editors +MASTER_SITES= https://github.com/tagattie/FreeBSD-VSCode/releases/download/${DISTVERSION}/:node_modules +PKGNAMESUFFIX= -reh +DISTFILES= vscode-node-modules-${DISTVERSION}${EXTRACT_SUFX}:node_modules +DIST_SUBDIR= ${PORTNAME} + +MAINTAINER= tagattie@FreeBSD.org +COMMENT= Visual Studio Code - Open Source ("Code - OSS") +WWW= https://code.visualstudio.com/ + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +ONLY_FOR_ARCHS= aarch64 amd64 + +EXTRACT_DEPENDS=jq:textproc/jq \ + node${NODEJS_VERSION}>0:www/node${NODEJS_VERSION} +BUILD_DEPENDS= jq:textproc/jq \ + rg:textproc/ripgrep \ + npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX} +LIB_DEPENDS= libbrotlidec.so:archivers/brotli \ + libcares.so:dns/c-ares \ + libicui18n.so:devel/icu \ + libllhttp.so:www/llhttp \ + libnghttp2.so:www/libnghttp2 \ + libnghttp3.so:www/libnghttp3 \ + libngtcp2.so:net/libngtcp2 \ + libsimdjson.so:devel/simdjson \ + libuv.so:devel/libuv \ + libzstd.so:archivers/zstd \ + libsqlite3.so:databases/sqlite3 \ + libsecret-1.so:security/libsecret +RUN_DEPENDS= ca_root_nss>=0:security/ca_root_nss + +USES= gssapi:mit localbase:ldflags nodejs:22,build pkgconfig \ + python:build shebangfix + +USE_GITHUB= yes +GH_ACCOUNT= microsoft + +SHEBANG_REGEX= ./(extensions|node_modules|resources|scripts|src)/.*(\.(pl|py|sh)|makeBlacker|makeFF)$$ +PATHFIX_FILES= src/vs/workbench/contrib/debug/node/terminals.ts + +MAKE_ENV= BUILD_SOURCEVERSION=${SOURCE_COMMIT_HASH} + +BINARY_ALIAS= python=${PYTHON_CMD} + +.include "Makefile.version" +.include + +NODEJS_ARCH= ${ARCH:S/aarch64/arm64/:S/amd64/x64/} +NODEJS_DIR= ${PORTSDIR}/www/node${NODEJS_VERSION} +.include "${NODEJS_DIR}/Makefile.version" + +post-extract: + @${CP} ${WRKSRC}/build/.moduleignore.linux \ + ${WRKSRC}/build/.moduleignore.freebsd + @${ECHO_MSG} "===> Installing node modules in ${WRKSRC}" + @${TAR} -xzf ${WRKDIR}/vscode-.-node-modules${EXTRACT_SUFX} -C ${WRKSRC} + @for dir in `node --input-type=module -e "console.log(JSON.stringify((await import('${WRKSRC}/build/npm/dirs.ts')).dirs))" | jq -r '.[]'`; do \ + if [ -f ${WRKDIR}/vscode-`echo $${dir} | tr _ __ | tr / _`-node-modules${EXTRACT_SUFX} ]; then \ + ${ECHO_MSG} "===> Installing node modules in ${WRKSRC}/$${dir}"; \ + ${TAR} -xzf ${WRKDIR}/vscode-`echo $${dir} | tr _ __ | tr / _`-node-modules${EXTRACT_SUFX} \ + -C ${WRKSRC}/$${dir}; \ + fi; \ + done + +post-patch: + @${REINPLACE_CMD} -E 's|^(target=").*(")$$|\1${NODEJS_PORTVERSION}\2|' \ + ${WRKSRC}/remote/.npmrc + @${REINPLACE_CMD} -e 's/%%DISTVERSION%%/${DISTVERSION}/g' \ + ${WRKSRC}/build/gulpfile.reh.ts \ + ${WRKSRC}/build/gulpfile.vscode.ts + @(cd ${WRKSRC} && \ + ${FIND} -E . -type f -iregex '${SHEBANG_REGEX}' \ + -exec ${SED} -i '' -e "s|/usr/bin/pgrep|/bin/pgrep|g" {} ';') + @(cd ${WRKSRC} && \ + ${FIND} ${PATHFIX_FILES} -type f \ + -exec ${SED} -i '' -e "s|/usr/bin/pgrep|/bin/pgrep|g" {} ';') + @${SETENV} FILESDIR=${FILESDIR} \ + ${SH} ${FILESDIR}/update-product-json.sh ${WRKSRC} + +pre-build: +# rebuild native node modules in subdirectories + @for dir in `node --input-type=module -e "console.log(JSON.stringify((await import('${WRKSRC}/build/npm/dirs.ts')).dirs))" | jq -r '.[]'`; do \ + for subdir in `${FIND} ${WRKSRC}/$${dir}/node_modules -type f -name binding.gyp -exec ${DIRNAME} {} ';' 2> /dev/null`; do \ + ${ECHO_MSG} "===> Rebuilding native modules in $${subdir}"; \ + if [ "`${ECHO_CMD} $${subdir} | ${GREP} /build/`" ]; then \ + cd $${subdir} && \ + ${SETENV} ${MAKE_ENV} \ + npm_config_runtime=node \ + npm_config_target=${NODEJS_PORTVERSION} \ + npm_config_nodedir=${LOCALBASE} \ + node-gyp --userconfig=${WRKSRC}/build/.npmrc rebuild; \ + elif [ "`${ECHO_CMD} $${subdir} | ${GREP} /remote/`" ]; then \ + cd $${subdir} && \ + ${SETENV} ${MAKE_ENV} \ + npm_config_runtime=node \ + npm_config_target=${NODEJS_PORTVERSION} \ + npm_config_nodedir=${LOCALBASE} \ + node-gyp --userconfig=${WRKSRC}/remote/.npmrc rebuild; \ + fi; \ + done; \ + done +# copy rg binary file to @vscode/ripgrep node module directory + @${MKDIR} ${WRKSRC}/build/node_modules/@vscode/ripgrep/bin + @${CP} ${LOCALBASE}/bin/rg \ + ${WRKSRC}/build/node_modules/@vscode/ripgrep/bin + @${MKDIR} ${WRKSRC}/remote/node_modules/@vscode/ripgrep/bin + @${CP} ${LOCALBASE}/bin/rg \ + ${WRKSRC}/remote/node_modules/@vscode/ripgrep/bin + +do-build: +# setup download cache for node + @${MKDIR} ${WRKSRC}/.build/node/v${NODEJS_PORTVERSION}/linux-${NODEJS_ARCH} + @${CP} ${LOCALBASE}/bin/node \ + ${WRKSRC}/.build/node/v${NODEJS_PORTVERSION}/linux-${NODEJS_ARCH} +# remove backup files so that they are not included in the package + @${FIND} ${WRKSRC} -type f \( -name '*.bak' -o -name '*.orig' -o -name '*~' \) -delete +# build vscode remote extension host + cd ${WRKSRC} && \ + ${SETENV} ${MAKE_ENV} \ + npm_config_runtime=node \ + npm_config_target=${NODEJS_PORTVERSION} \ + npm_config_nodedir=${LOCALBASE} \ + npm --userconfig=${WRKSRC}/remote/.npmrc run \ + gulp vscode-reh-linux-${NODEJS_ARCH}-min + ${TAR} -czf ${WRKDIR}/vscode-reh-${OPSYS:tl}-${NODEJS_ARCH}-${DISTVERSION}.tar.gz \ + -C ${WRKDIR}/vscode-reh-linux-${NODEJS_ARCH} . + +.include diff --git a/editors/vscode/Makefile.version b/editors/vscode/Makefile.version new file mode 100644 index 000000000000..57026b24956e --- /dev/null +++ b/editors/vscode/Makefile.version @@ -0,0 +1,2 @@ +VSCODE_VERSION= 1.107.0 +SOURCE_COMMIT_HASH= 302ff6a2e235c95b88e587d4a4b6eeb1b6613297 diff --git a/editors/vscode/distinfo b/editors/vscode/distinfo index 967dfefb1260..5bc95718674c 100644 --- a/editors/vscode/distinfo +++ b/editors/vscode/distinfo @@ -1,7 +1,7 @@ -TIMESTAMP = 1764278578 -SHA256 (vscode/vscode-node-modules-1.106.3.tar.gz) = 2634b129617857e323bb81b0e74281286141e81f0e931ed46039a5f4d40b4322 -SIZE (vscode/vscode-node-modules-1.106.3.tar.gz) = 456865192 -SHA256 (vscode/vscode-marketplace-exts-1.106.3.tar.gz) = 80a47e71e539baa3383f3cb139dc2d2f632b118a82e985c1fe61e90a574ea2d4 -SIZE (vscode/vscode-marketplace-exts-1.106.3.tar.gz) = 1704511 -SHA256 (vscode/microsoft-vscode-1.106.3_GH0.tar.gz) = 1b8530e60339963f5a12601db3191fa1f325a210148dfbea00275813583d69b9 -SIZE (vscode/microsoft-vscode-1.106.3_GH0.tar.gz) = 24044557 +TIMESTAMP = 1765693727 +SHA256 (vscode/vscode-node-modules-1.107.0.tar.gz) = 2540f57eab612c3f8d773fa2ddd3634f55916d89e9f26385b21e25663b6e141a +SIZE (vscode/vscode-node-modules-1.107.0.tar.gz) = 467359399 +SHA256 (vscode/vscode-marketplace-exts-1.107.0.tar.gz) = 8b50dde24b1ced293323bb81900da5645dee952866dad8af6247cde6abee784b +SIZE (vscode/vscode-marketplace-exts-1.107.0.tar.gz) = 1711786 +SHA256 (vscode/microsoft-vscode-1.107.0_GH0.tar.gz) = 6233b61cb7b5f62eca82de2d2c6c960eaec4bccbdc27ed00076eb34dd27939e4 +SIZE (vscode/microsoft-vscode-1.107.0_GH0.tar.gz) = 24211409 diff --git a/editors/vscode/files/patch-build_gulpfile.extensions.js b/editors/vscode/files/patch-build_gulpfile.extensions.ts similarity index 57% rename from editors/vscode/files/patch-build_gulpfile.extensions.js rename to editors/vscode/files/patch-build_gulpfile.extensions.ts index 7ed6ec5a8421..acc7408cdae8 100644 --- a/editors/vscode/files/patch-build_gulpfile.extensions.js +++ b/editors/vscode/files/patch-build_gulpfile.extensions.ts @@ -1,11 +1,11 @@ ---- build/gulpfile.extensions.js.orig 2025-10-08 13:50:39 UTC -+++ build/gulpfile.extensions.js -@@ -236,7 +236,7 @@ const compileNonNativeExtensionsBuildTask = task.defin +--- build/gulpfile.extensions.ts.orig 2025-12-14 06:36:07 UTC ++++ build/gulpfile.extensions.ts +@@ -218,7 +218,7 @@ export const compileNonNativeExtensionsBuildTask = tas * @note this does not clean the directory ahead of it. See {@link cleanExtensionsBuildTask} for that. */ - const compileNonNativeExtensionsBuildTask = task.define('compile-non-native-extensions-build', task.series( + export const compileNonNativeExtensionsBuildTask = task.define('compile-non-native-extensions-build', task.series( - bundleMarketplaceExtensionsBuildTask, + // bundleMarketplaceExtensionsBuildTask, task.define('bundle-non-native-extensions-build', () => ext.packageNonNativeLocalExtensionsStream(false, false).pipe(gulp.dest('.build'))) )); gulp.task(compileNonNativeExtensionsBuildTask); diff --git a/editors/vscode/files/patch-build_gulpfile.reh.ts b/editors/vscode/files/patch-build_gulpfile.reh.ts new file mode 100644 index 000000000000..3fa99675c1bd --- /dev/null +++ b/editors/vscode/files/patch-build_gulpfile.reh.ts @@ -0,0 +1,29 @@ +--- build/gulpfile.reh.ts.orig 2025-12-14 06:38:54 UTC ++++ build/gulpfile.reh.ts +@@ -25,7 +25,7 @@ import glob from 'glob'; + import File from 'vinyl'; + import * as fs from 'fs'; + import glob from 'glob'; +-import { compileBuildWithManglingTask } from './gulpfile.compile.ts'; ++import { compileBuildWithoutManglingTask } from './gulpfile.compile.ts'; + import { cleanExtensionsBuildTask, compileNonNativeExtensionsBuildTask, compileNativeExtensionsBuildTask, compileExtensionMediaBuildTask } from './gulpfile.extensions.ts'; + import { vscodeWebResourceIncludes, createVSCodeWebFileContentMapper } from './gulpfile.vscode.web.ts'; + import * as cp from 'child_process'; +@@ -321,7 +321,7 @@ function packageTask(type: string, platform: string, a + + let productJsonContents = ''; + const productJsonStream = gulp.src(['product.json'], { base: '.' }) +- .pipe(jsonEditor({ commit, date: readISODate('out-build'), version })) ++ .pipe(jsonEditor({ commit, date: readISODate('out-build'), version, serverDownloadUrlTemplate: 'https://github.com/tagattie/FreeBSD-VSCode/releases/download/%%DISTVERSION%%/vscode-reh-${os}-${arch}-%%DISTVERSION%%.tar.gz' })) + .pipe(es.through(function (file) { + productJsonContents = file.contents.toString(); + this.emit('data', file); +@@ -475,7 +475,7 @@ function tweakProductForServerWeb(product: typeof impo + gulp.task(serverTaskCI); + + const serverTask = task.define(`vscode-${type}${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series( +- compileBuildWithManglingTask, ++ compileBuildWithoutManglingTask, + cleanExtensionsBuildTask, + compileNonNativeExtensionsBuildTask, + compileExtensionMediaBuildTask, diff --git a/editors/vscode/files/patch-build_gulpfile.vscode.ts b/editors/vscode/files/patch-build_gulpfile.vscode.ts new file mode 100644 index 000000000000..895e181f0eea --- /dev/null +++ b/editors/vscode/files/patch-build_gulpfile.vscode.ts @@ -0,0 +1,11 @@ +--- build/gulpfile.vscode.ts.orig 2025-12-14 06:41:04 UTC ++++ build/gulpfile.vscode.ts +@@ -270,7 +270,7 @@ function packageTask(platform: string, arch: string, s + + let productJsonContents: string; + const productJsonStream = gulp.src(['product.json'], { base: '.' }) +- .pipe(jsonEditor({ commit, date: readISODate('out-build'), checksums, version })) ++ .pipe(jsonEditor({ commit, date: readISODate('out-build'), checksums, version, serverDownloadUrlTemplate: 'https://github.com/tagattie/FreeBSD-VSCode/releases/download/%%DISTVERSION%%/vscode-reh-${os}-${arch}-%%DISTVERSION%%.tar.gz' })) + .pipe(es.through(function (file) { + productJsonContents = file.contents.toString(); + this.emit('data', file); diff --git a/editors/vscode/files/patch-build_lib_electron.ts b/editors/vscode/files/patch-build_lib_electron.ts index c89cd63f67f6..c08444e60dd3 100644 --- a/editors/vscode/files/patch-build_lib_electron.ts +++ b/editors/vscode/files/patch-build_lib_electron.ts @@ -1,13 +1,13 @@ ---- build/lib/electron.ts.orig 2025-07-09 22:00:36 UTC +--- build/lib/electron.ts.orig 2025-12-10 18:02:22 UTC +++ build/lib/electron.ts -@@ -199,8 +199,9 @@ export const config = { +@@ -201,8 +201,9 @@ export const config = { winIcon: 'resources/win32/code.ico', token: process.env['GITHUB_TOKEN'], repo: product.electronRepository || undefined, - validateChecksum: true, + validateChecksum: false, checksumFile: path.join(root, 'build', 'checksums', 'electron.txt'), + unsafelyDisableChecksums: true, }; function getElectron(arch: string): () => NodeJS.ReadWriteStream { diff --git a/editors/vscode/files/patch-build_lib_preLaunch.ts b/editors/vscode/files/patch-build_lib_preLaunch.ts index 692542cf3cbe..3acab403e05c 100644 --- a/editors/vscode/files/patch-build_lib_preLaunch.ts +++ b/editors/vscode/files/patch-build_lib_preLaunch.ts @@ -1,24 +1,24 @@ ---- build/lib/preLaunch.ts.orig 2024-09-27 21:08:28 UTC +--- build/lib/preLaunch.ts.orig 2025-12-10 18:02:22 UTC +++ build/lib/preLaunch.ts -@@ -35,9 +35,9 @@ async function ensureNodeModules() { +@@ -32,9 +32,9 @@ async function ensureNodeModules() { } } -async function getElectron() { - await runProcess(npm, ['run', 'electron']); -} +// async function getElectron() { +// await runProcess(npm, ['run', 'electron']); +// } async function ensureCompiled() { if (!(await exists('out'))) { -@@ -47,7 +47,7 @@ async function main() { +@@ -44,7 +44,7 @@ async function main() { async function main() { await ensureNodeModules(); - await getElectron(); + // await getElectron(); await ensureCompiled(); // Can't require this until after dependencies are installed diff --git a/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts b/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts index b595a907f5d8..240da8aea01b 100644 --- a/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts +++ b/editors/vscode/files/patch-build_lib_propertyInitOrderChecker.ts @@ -1,11 +1,11 @@ ---- build/lib/propertyInitOrderChecker.ts.orig 2025-09-09 22:02:15 UTC +--- build/lib/propertyInitOrderChecker.ts.orig 2025-12-10 18:02:22 UTC +++ build/lib/propertyInitOrderChecker.ts -@@ -43,7 +43,7 @@ function createProgram(tsconfigPath: string): ts.Progr +@@ -45,7 +45,7 @@ function createProgram(tsconfigPath: string): ts.Progr function createProgram(tsconfigPath: string): ts.Program { const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile); - const configHostParser: ts.ParseConfigHost = { fileExists: fs.existsSync, readDirectory: ts.sys.readDirectory, readFile: file => fs.readFileSync(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' }; + const configHostParser: ts.ParseConfigHost = { fileExists: fs.existsSync, readDirectory: ts.sys.readDirectory, readFile: file => fs.readFileSync(file, 'utf8'), useCaseSensitiveFileNames: (process.platform === 'linux' || process.platform === 'freebsd') }; const tsConfigParsed = ts.parseJsonConfigFileContent(tsConfig.config, configHostParser, path.resolve(path.dirname(tsconfigPath)), { noEmit: true }); const compilerHost = ts.createCompilerHost(tsConfigParsed.options, true); diff --git a/editors/vscode/files/patch-extensions_microsoft-authentication_extension.webpack.config.js b/editors/vscode/files/patch-extensions_microsoft-authentication_extension.webpack.config.js new file mode 100644 index 000000000000..8edba19e8c63 --- /dev/null +++ b/editors/vscode/files/patch-extensions_microsoft-authentication_extension.webpack.config.js @@ -0,0 +1,34 @@ +--- extensions/microsoft-authentication/extension.webpack.config.js.orig 2025-12-10 18:02:22 UTC ++++ extensions/microsoft-authentication/extension.webpack.config.js +@@ -6,6 +6,7 @@ import path from 'path'; + import withDefaults, { nodePlugins } from '../shared.webpack.config.mjs'; + import CopyWebpackPlugin from 'copy-webpack-plugin'; + import path from 'path'; ++import fs from 'fs'; + + const isWindows = process.platform === 'win32'; + const isMacOS = process.platform === 'darwin'; +@@ -25,6 +26,9 @@ switch (process.platform) { + case 'linux': + platformFolder = 'linux'; + break; ++ case 'freebsd': ++ platformFolder = 'freebsd'; ++ break; + default: + throw new Error(`Unsupported platform: ${process.platform}`); + } +@@ -32,11 +36,12 @@ console.log(`Building Microsoft Authentication Extensi + const arch = process.env.VSCODE_ARCH || process.arch; + console.log(`Building Microsoft Authentication Extension for ${process.platform} (${arch})`); + ++const exists = fs.globSync(`**/dist/${platformFolder}/${arch}/(lib|)msal*.(node|dll|dylib|so)`).length > 0; + const plugins = [...nodePlugins(import.meta.dirname)]; + if ( + (isWindows && windowsArches.includes(arch)) || + isMacOS || +- (isLinux && linuxArches.includes(arch)) ++ (isLinux && linuxArches.includes(arch) && exists) + ) { + plugins.push(new CopyWebpackPlugin({ + patterns: [ diff --git a/editors/vscode/files/patch-package.json b/editors/vscode/files/patch-package.json index 9edf7cfea439..05272d0a43a6 100644 --- a/editors/vscode/files/patch-package.json +++ b/editors/vscode/files/patch-package.json @@ -1,14 +1,14 @@ https://github.com/eclipse/openvsx/issues/543 https://github.com/termux/termux-packages/issues/24739 https://github.com/termux/termux-packages/pull/24757 ---- package.json.orig 2025-11-11 14:25:32 UTC +--- package.json.orig 2025-12-10 18:02:22 UTC +++ package.json @@ -108,6 +108,7 @@ - "native-is-elevated": "0.7.0", + "native-is-elevated": "0.8.0", "native-keymap": "^3.3.5", "native-watchdog": "^1.4.1", + "node-ovsx-sign": "^1.2.0", "node-pty": "1.1.0-beta35", "open": "^10.1.2", - "tas-client-umd": "0.2.0", + "tas-client": "0.3.1", diff --git a/editors/vscode/files/patch-product.json b/editors/vscode/files/patch-product.json deleted file mode 100644 index 4c3b4f4a3232..000000000000 --- a/editors/vscode/files/patch-product.json +++ /dev/null @@ -1,19 +0,0 @@ ---- product.json.orig 2025-04-09 23:39:47 UTC -+++ product.json -@@ -33,6 +33,16 @@ - "nodejsRepository": "https://nodejs.org", - "urlProtocol": "code-oss", - "webviewContentExternalBaseUrlTemplate": "https://{{uuid}}.vscode-cdn.net/insider/ef65ac1ba57f57f2a3961bfe94aa20481caca4c6/out/vs/workbench/contrib/webview/browser/pre/", -+ "documentationUrl": "https://go.microsoft.com/fwlink/?LinkID=533484", -+ "extensionsGallery": { -+ "serviceUrl": "https://open-vsx.org/vscode/gallery", -+ "itemUrl": "https://open-vsx.org/vscode/item" -+ }, -+ "introductoryVideosUrl": "https://go.microsoft.com/fwlink/?linkid=832146", -+ "keyboardShortcutsUrlLinux": "https://go.microsoft.com/fwlink/?linkid=832144", -+ "quality": "stable", -+ "requestFeatureUrl": "https://go.microsoft.com/fwlink/?LinkID=533482", -+ "tipsAndTricksUrl": "https://go.microsoft.com/fwlink/?linkid=852118", - "builtInExtensions": [ - { - "name": "ms-vscode.js-debug-companion", diff --git a/editors/vscode/files/patch-src_bootstrap-node.ts b/editors/vscode/files/patch-src_bootstrap-node.ts index 555c2a2f8f3b..44befc6d9b24 100644 --- a/editors/vscode/files/patch-src_bootstrap-node.ts +++ b/editors/vscode/files/patch-src_bootstrap-node.ts @@ -1,11 +1,11 @@ ---- src/bootstrap-node.ts.orig 2025-09-09 22:02:15 UTC +--- src/bootstrap-node.ts.orig 2025-12-10 18:02:22 UTC +++ src/bootstrap-node.ts -@@ -150,7 +150,7 @@ export function configurePortable(product: Partial { diff --git a/editors/vscode/files/patch-src_vs_workbench_services_actions_common_menusExtensionPoint.ts b/editors/vscode/files/patch-src_vs_workbench_services_actions_common_menusExtensionPoint.ts index c581f80ef624..2339c2ff3386 100644 --- a/editors/vscode/files/patch-src_vs_workbench_services_actions_common_menusExtensionPoint.ts +++ b/editors/vscode/files/patch-src_vs_workbench_services_actions_common_menusExtensionPoint.ts @@ -1,14 +1,14 @@ ---- src/vs/workbench/services/actions/common/menusExtensionPoint.ts.orig 2025-11-11 14:25:32 UTC +--- src/vs/workbench/services/actions/common/menusExtensionPoint.ts.orig 2025-12-10 18:02:22 UTC +++ src/vs/workbench/services/actions/common/menusExtensionPoint.ts -@@ -1191,7 +1191,10 @@ class CommandsTableRenderer extends Disposable impleme +@@ -1203,7 +1203,10 @@ class CommandsTableRenderer extends Disposable impleme switch (platform) { case 'win32': key = rawKeyBinding.win; break; - case 'linux': key = rawKeyBinding.linux; break; + case 'linux': + case 'freebsd': + key = rawKeyBinding.linux; + break; case 'darwin': key = rawKeyBinding.mac; break; } diff --git a/editors/vscode/files/patch-test_automation_src_electron.ts b/editors/vscode/files/patch-test_automation_src_electron.ts index d9e0cf8836e2..f6ecbded70d6 100644 --- a/editors/vscode/files/patch-test_automation_src_electron.ts +++ b/editors/vscode/files/patch-test_automation_src_electron.ts @@ -1,20 +1,20 @@ ---- test/automation/src/electron.ts.orig 2025-11-11 14:25:32 UTC +--- test/automation/src/electron.ts.orig 2025-12-10 18:02:22 UTC +++ test/automation/src/electron.ts -@@ -96,6 +96,7 @@ export function getDevElectronPath(): string { +@@ -118,6 +118,7 @@ export function getDevElectronPath(): string { case 'darwin': return join(buildPath, 'electron', `${product.nameLong}.app`, 'Contents', 'MacOS', 'Electron'); case 'linux': + case 'freebsd': return join(buildPath, 'electron', `${product.applicationName}`); case 'win32': return join(buildPath, 'electron', `${product.nameShort}.exe`); -@@ -108,7 +109,8 @@ export function getBuildElectronPath(root: string): st +@@ -130,7 +131,8 @@ export function getBuildElectronPath(root: string): st switch (process.platform) { case 'darwin': return join(root, 'Contents', 'MacOS', 'Electron'); - case 'linux': { + case 'linux': + case 'freebsd': { const product = require(join(root, 'resources', 'app', 'product.json')); return join(root, product.applicationName); } diff --git a/editors/vscode/files/product.json.extensions b/editors/vscode/files/product.json.extensions new file mode 100644 index 000000000000..6b42ee37649f --- /dev/null +++ b/editors/vscode/files/product.json.extensions @@ -0,0 +1,597 @@ +{ + "extensionAllowedBadgeProviders": [ + "api.bintray.com", + "api.travis-ci.com", + "api.travis-ci.org", + "app.fossa.io", + "badge.buildkite.com", + "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", + "docs.rs", + "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" + ], + "extensionAllowedBadgeProvidersRegex": [ + "^https:\\/\\/github\\.com\\/[^/]+\\/[^/]+\\/(actions\\/)?workflows\\/.*badge\\.svg" + ], + "extensionsEnabledWithApiProposalVersion": [ + "GitHub.copilot-chat", + "ms-vscode.vscode-commander", + "ms-vscode.vscode-copilot-vision", + "GitHub.vscode-pull-request-github" + ], + "extensionEnabledApiProposals": { + "ms-azuretools.vscode-containers": [ + "authenticationChallenges" + ], + "ms-azuretools.vscode-azureresourcegroups": [ + "authenticationChallenges" + ], + "ms-azuretools.vscode-azure-github-copilot": [ + "authenticationChallenges" + ], + "ms-azuretools.vscode-dev-azurecloudshell": [ + "contribEditSessions", + "authenticationChallenges" + ], + "ms-toolsai.vscode-ai": [ + "authenticationChallenges" + ], + "TeamsDevApp.vscode-ai-foundry": [ + "authenticationChallenges" + ], + "ms-vscode.vscode-selfhost-test-provider": [ + "testObserver", + "testRelatedCode" + ], + "VisualStudioExptTeam.vscodeintellicode-completions": [ + "inlineCompletionsAdditions" + ], + "ms-vsliveshare.vsliveshare": [ + "contribMenuBarHome", + "contribShareMenu", + "contribStatusBarItems", + "diffCommand", + "documentFiltersExclusive", + "fileSearchProvider", + "findTextInFiles", + "notebookLiveShare", + "terminalDimensions", + "terminalDataWriteEvent", + "textSearchProvider" + ], + "ms-vscode.js-debug": [ + "portsAttributes", + "findTextInFiles", + "workspaceTrust", + "tunnels" + ], + "ms-toolsai.vscode-ai-remote": [ + "resolvers", + "authenticationChallenges" + ], + "ms-python.python": [ + "codeActionAI", + "contribEditorContentMenu", + "quickPickSortByLabel", + "portsAttributes", + "testObserver", + "quickPickItemTooltip", + "terminalDataWriteEvent", + "terminalExecuteCommandEvent", + "notebookReplDocument", + "notebookVariableProvider", + "terminalShellEnv" + ], + "ms-python.vscode-python-envs": [ + "terminalShellEnv", + "terminalDataWriteEvent" + ], + "ms-dotnettools.dotnet-interactive-vscode": [ + "notebookMessaging" + ], + "GitHub.codespaces": [ + "contribEditSessions", + "contribMenuBarHome", + "contribRemoteHelp", + "contribViewsRemote", + "resolvers", + "tunnels", + "terminalDataWriteEvent", + "treeViewReveal", + "notebookKernelSource" + ], + "ms-vscode.azure-repos": [ + "extensionRuntime", + "fileSearchProvider", + "textSearchProvider" + ], + "ms-vscode.remote-repositories": [ + "canonicalUriProvider", + "contribEditSessions", + "contribRemoteHelp", + "contribMenuBarHome", + "contribViewsRemote", + "contribViewsWelcome", + "contribShareMenu", + "documentFiltersExclusive", + "editSessionIdentityProvider", + "extensionRuntime", + "fileSearchProvider", + "quickPickSortByLabel", + "workspaceTrust", + "shareProvider", + "scmActionButton", + "scmSelectedProvider", + "scmValidation", + "textSearchProvider", + "timeline" + ], + "ms-vscode-remote.remote-wsl": [ + "resolvers", + "contribRemoteHelp", + "contribViewsRemote", + "telemetry" + ], + "ms-vscode-remote.remote-ssh": [ + "resolvers", + "tunnels", + "terminalDataWriteEvent", + "contribRemoteHelp", + "contribViewsRemote", + "telemetry" + ], + "ms-vscode.remote-server": [ + "resolvers", + "tunnels", + "contribViewsWelcome" + ], + "ms-vscode.remote-explorer": [ + "contribRemoteHelp", + "contribViewsRemote", + "extensionsAny" + ], + "ms-vscode-remote.remote-containers": [ + "contribEditSessions", + "resolvers", + "portsAttributes", + "tunnels", + "workspaceTrust", + "terminalDimensions", + "contribRemoteHelp", + "contribViewsRemote" + ], + "ms-vscode.js-debug-nightly": [ + "portsAttributes", + "findTextInFiles", + "workspaceTrust", + "tunnels" + ], + "ms-vscode.lsif-browser": [ + "documentFiltersExclusive" + ], + "ms-vscode.vscode-speech": [ + "speech" + ], + "GitHub.vscode-pull-request-github": [ + "activeComment", + "chatParticipantAdditions", + "chatParticipantPrivate", + "chatSessionsProvider", + "codiconDecoration", + "codeActionRanges", + "commentingRangeHint", + "commentReactor", + "commentReveal", + "commentThreadApplicability", + "contribAccessibilityHelpContent", + "contribCommentEditorActionsMenu", + "contribCommentPeekContext", + "contribCommentThreadAdditionalMenu", + "contribCommentsViewThreadMenus", + "contribEditorContentMenu", + "contribMultiDiffEditorMenus", + "contribShareMenu", + "diffCommand", + "languageModelToolResultAudience", + "markdownAlertSyntax", + "quickDiffProvider", + "remoteCodingAgents", + "shareProvider", + "tabInputTextMerge", + "tokenInformation", + "treeItemMarkdownLabel", + "treeViewMarkdownMessage" + ], + "GitHub.copilot": [ + "inlineCompletionsAdditions", + "devDeviceId" + ], + "GitHub.copilot-nightly": [ + "inlineCompletionsAdditions", + "devDeviceId" + ], + "GitHub.copilot-chat": [ + "interactive", + "terminalDataWriteEvent", + "terminalExecuteCommandEvent", + "terminalSelection", + "terminalQuickFixProvider", + "chatParticipantAdditions", + "defaultChatParticipant", + "embeddings", + "chatEditing", + "chatProvider", + "mappedEditsProvider", + "aiRelatedInformation", + "aiSettingsSearch", + "codeActionAI", + "findTextInFiles", + "findTextInFiles2", + "textSearchProvider", + "textSearchProvider2", + "activeComment", + "commentReveal", + "contribSourceControlInputBoxMenu", + "contribCommentEditorActionsMenu", + "contribCommentThreadAdditionalMenu", + "contribCommentsViewThreadMenus", + "newSymbolNamesProvider", + "findFiles2", + "chatReferenceDiagnostic", + "extensionsAny", + "authLearnMore", + "testObserver", + "aiTextSearchProvider", + "documentFiltersExclusive", + "chatParticipantPrivate", + "contribDebugCreateConfiguration", + "inlineCompletionsAdditions", + "chatReferenceBinaryData", + "languageModelSystem", + "languageModelCapabilities", + "languageModelThinkingPart", + "chatStatusItem", + "taskProblemMatcherStatus", + "contribLanguageModelToolSets", + "textDocumentChangeReason", + "resolvers", + "taskExecutionTerminal", + "dataChannels", + "chatSessionsProvider", + "devDeviceId", + "contribEditorContentMenu" + ], + "GitHub.remotehub": [ + "contribRemoteHelp", + "contribMenuBarHome", + "contribViewsRemote", + "contribViewsWelcome", + "documentFiltersExclusive", + "extensionRuntime", + "fileSearchProvider", + "quickPickSortByLabel", + "workspaceTrust", + "scmSelectedProvider", + "scmValidation", + "textSearchProvider", + "timeline" + ], + "ms-python.vscode-pylance": [ + "terminalShellEnv", + "portsAttributes" + ], + "ms-python.debugpy": [ + "contribViewsWelcome", + "debugVisualization", + "portsAttributes" + ], + "ms-toolsai.jupyter-renderers": [ + "contribNotebookStaticPreloads" + ], + "ms-toolsai.jupyter": [ + "notebookDeprecated", + "notebookMessaging", + "notebookMime", + "portsAttributes", + "quickPickSortByLabel", + "notebookKernelSource", + "interactiveWindow", + "notebookControllerAffinityHidden", + "contribNotebookStaticPreloads", + "quickPickItemTooltip", + "notebookExecution", + "notebookCellExecution", + "notebookVariableProvider", + "notebookReplDocument" + ], + "donjayamanne.kusto": [ + "notebookVariableProvider" + ], + "ms-toolsai.tensorboard": [ + "portsAttributes" + ], + "dbaeumer.vscode-eslint": [], + "ms-vscode.azure-sphere-tools-ui": [ + "tunnels" + ], + "ms-azuretools.vscode-azureappservice": [ + "terminalDataWriteEvent" + ], + "ms-vscode.anycode": [ + "extensionsAny" + ], + "ms-vscode.cpptools": [ + "terminalDataWriteEvent", + "chatParticipantAdditions" + ], + "vscjava.vscode-java-pack": [], + "ms-dotnettools.csdevkit": [ + "inlineCompletionsAdditions" + ], + "ms-dotnettools.vscodeintellicode-csharp": [ + "inlineCompletionsAdditions" + ], + "microsoft-IsvExpTools.powerplatform-vscode": [ + "fileSearchProvider", + "textSearchProvider" + ], + "microsoft-IsvExpTools.powerplatform-vscode-preview": [ + "fileSearchProvider", + "textSearchProvider" + ], + "TeamsDevApp.ms-teams-vscode-extension": [ + "chatParticipantAdditions", + "languageModelSystem" + ], + "ms-toolsai.datawrangler": [], + "ms-vscode.vscode-commander": [], + "ms-vscode.vscode-websearchforcopilot": [], + "ms-vscode.vscode-copilot-vision": [ + "chatReferenceBinaryData", + "codeActionAI" + ], + "ms-autodev.vscode-autodev": [ + "chatParticipantAdditions" + ], + "vscjava.vscode-java-upgrade": [ + "chatParticipantAdditions", + "chatParticipantPrivate" + ], + "FoundryLocal.foundry-local-chat": [ + "chatProvider" + ], + "Microsoft.foundry-local-chat": [ + "chatProvider" + ], + "ms-wmcp.windows-mcp-server-extension": [ + "mcpToolDefinitions" + ], + "openai.chatgpt": [ + "languageModelProxy", + "chatSessionsProvider" + ], + "jeanp413.open-remote-ssh": [ + "resolvers", + "tunnels", + "terminalDataWriteEvent", + "contribRemoteHelp", + "contribViewsRemote" + ], + "jeanp413.open-remote-wsl": [ + "resolvers", + "contribRemoteHelp", + "contribViewsRemote" + ] + }, + "extensionKind": { + "Shan.code-settings-sync": [ + "ui" + ], + "shalldie.background": [ + "ui" + ], + "techer.open-in-browser": [ + "ui" + ], + "CoenraadS.bracket-pair-colorizer-2": [ + "ui" + ], + "CoenraadS.bracket-pair-colorizer": [ + "ui", + "workspace" + ], + "hiro-sun.vscode-emacs": [ + "ui", + "workspace" + ], + "hnw.vscode-auto-open-markdown-preview": [ + "ui", + "workspace" + ], + "wayou.vscode-todo-highlight": [ + "ui", + "workspace" + ], + "aaron-bond.better-comments": [ + "ui", + "workspace" + ], + "vscodevim.vim": [ + "ui" + ], + "ollyhayes.colmak-vim": [ + "ui" + ] + }, + "extensionPointExtensionKind": { + "typescriptServerPlugins": [ + "workspace" + ] + }, + "extensionSyncedKeys": { + "ritwickdey.liveserver": [ + "liveServer.setup.version" + ] + }, + "extensionVirtualWorkspacesSupport": { + "esbenp.prettier-vscode": { + "default": false + }, + "msjsdiag.debugger-for-chrome": { + "default": false + }, + "redhat.java": { + "default": false + }, + "HookyQR.beautify": { + "default": false + }, + "ritwickdey.LiveServer": { + "default": false + }, + "VisualStudioExptTeam.vscodeintellicode": { + "default": false + }, + "octref.vetur": { + "default": false + }, + "formulahendry.code-runner": { + "default": false + }, + "xdebug.php-debug": { + "default": false + }, + "ms-mssql.mssql": { + "default": false + }, + "christian-kohler.path-intellisense": { + "default": false + }, + "eg2.tslint": { + "default": false + }, + "eg2.vscode-npm-script": { + "default": false + }, + "donjayamanne.githistory": { + "default": false + }, + "Zignd.html-css-class-completion": { + "default": false + }, + "christian-kohler.npm-intellisense": { + "default": false + }, + "EditorConfig.EditorConfig": { + "default": false + }, + "austin.code-gnu-global": { + "default": false + }, + "johnpapa.Angular2": { + "default": false + }, + "ms-vscode.vscode-typescript-tslint-plugin": { + "default": false + }, + "DotJoshJohnson.xml": { + "default": false + }, + "techer.open-in-browser": { + "default": false + }, + "tht13.python": { + "default": false + }, + "bmewburn.vscode-intelephense-client": { + "default": false + }, + "Angular.ng-template": { + "default": false + }, + "xdebug.php-pack": { + "default": false + }, + "dbaeumer.jshint": { + "default": false + }, + "yzhang.markdown-all-in-one": { + "default": false + }, + "Dart-Code.flutter": { + "default": false + }, + "streetsidesoftware.code-spell-checker": { + "default": false + }, + "rebornix.Ruby": { + "default": false + }, + "ms-vscode.sublime-keybindings": { + "default": false + }, + "mitaki28.vscode-clang": { + "default": false + }, + "steoates.autoimport": { + "default": false + }, + "donjayamanne.python-extension-pack": { + "default": false + }, + "shd101wyy.markdown-preview-enhanced": { + "default": false + }, + "mikestead.dotenv": { + "default": false + }, + "pranaygp.vscode-css-peek": { + "default": false + }, + "ikappas.phpcs": { + "default": false + }, + "platformio.platformio-ide": { + "default": false + }, + "jchannon.csharpextensions": { + "default": false + }, + "gruntfuggly.todo-tree": { + "default": false + } + } +} diff --git a/editors/vscode/files/update-product-json.sh b/editors/vscode/files/update-product-json.sh new file mode 100644 index 000000000000..3514570d892f --- /dev/null +++ b/editors/vscode/files/update-product-json.sh @@ -0,0 +1,37 @@ +#! /bin/sh + +PATH=/bin:/usr/bin:/usr/local/bin + +WRKSRC=$1 +PRODUCT_JSON=product.json + +setpath() { + json=$(jq --tab --arg value "${2}" "setpath(path(.${1}); \$value)" ${PRODUCT_JSON}) + echo "${json}" > ${PRODUCT_JSON} +} + +setpath_json() { + json=$(jq --tab --argjson value "${2}" "setpath(path(.${1}); \$value)" ${PRODUCT_JSON}) + echo "${json}" > ${PRODUCT_JSON} +} + +cd ${WRKSRC} + +mv -f ${PRODUCT_JSON} ${PRODUCT_JSON}.bak +echo '{}' > ${PRODUCT_JSON} + +setpath "checksumFailMoreInfoUrl" "https://go.microsoft.com/fwlink/?LinkId=828886" +setpath "documentationUrl" "https://go.microsoft.com/fwlink/?LinkID=533484" +setpath_json "extensionsGallery" '{"serviceUrl": "https://open-vsx.org/vscode/gallery", "itemUrl": "https://open-vsx.org/vscode/item", "latestUrlTemplate": "https://open-vsx.org/vscode/gallery/{publisher}/{name}/latest", "controlUrl": "https://raw.githubusercontent.com/EclipseFdn/publish-extensions/refs/heads/master/extension-control/extensions.json"}' +setpath "introductoryVideosUrl" "https://go.microsoft.com/fwlink/?linkid=832146" +setpath "keyboardShortcutsUrlLinux" "https://go.microsoft.com/fwlink/?linkid=832144" +setpath_json "linkProtectionTrustedDomains" '["https://open-vsx.org"]' +setpath "quality" "stable" +setpath "releaseNotesUrl" "https://go.microsoft.com/fwlink/?LinkID=533483" +setpath "requestFeatureUrl" "https://go.microsoft.com/fwlink/?LinkID=533482" +setpath "tipsAndTricksUrl" "https://go.microsoft.com/fwlink/?linkid=852118" +setpath "twitterUrl" "https://go.microsoft.com/fwlink/?LinkID=533687" +setpath_json "tunnelApplicationConfig" '{}' + +json=$(jq --tab --slurp '.[0] * .[1] * .[2]' ${PRODUCT_JSON}.bak ${PRODUCT_JSON} ${FILESDIR}/product.json.extensions) +echo "${json}" > ${PRODUCT_JSON} diff --git a/editors/vscode/pkg-message b/editors/vscode/pkg-message new file mode 100644 index 000000000000..52523ee44ea0 --- /dev/null +++ b/editors/vscode/pkg-message @@ -0,0 +1,44 @@ +[ +{ type: install + message: <