summaryrefslogtreecommitdiff
path: root/editors/vscode/Makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--editors/vscode/Makefile32
-rw-r--r--editors/vscode/Makefile.reh133
-rw-r--r--editors/vscode/Makefile.version2
3 files changed, 152 insertions, 15 deletions
diff --git a/editors/vscode/Makefile b/editors/vscode/Makefile
index 45fedbedec6f..67344d9650c1 100644
--- a/editors/vscode/Makefile
+++ b/editors/vscode/Makefile
@@ -1,5 +1,6 @@
PORTNAME= vscode
-DISTVERSION= 1.106.3
+DISTVERSION= ${VSCODE_VERSION}
+PORTREVISION= 2
CATEGORIES= editors
MASTER_SITES= https://github.com/tagattie/FreeBSD-VSCode/releases/download/${DISTVERSION}/:node_modules
DISTFILES= vscode-node-modules-${DISTVERSION}${EXTRACT_SUFX}:node_modules \
@@ -19,7 +20,6 @@ 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}
@@ -68,8 +68,6 @@ USES= desktop-file-utils display:test gl gmake gnome gssapi:mit \
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 \
@@ -95,9 +93,12 @@ MAKE_ENV+= PLAYWRIGHT_BROWSERS_PATH=${WRKDIR}/pw-browsers \
MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1
TEST_ENV= ${MAKE_ENV:C/TMPDIR=.*//}
-NODEJS_DIR= ${.CURDIR:H:H}/www/node22
+.include "Makefile.version"
+.include <bsd.port.pre.mk>
+
+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}
@@ -118,7 +119,7 @@ post-extract:
${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}; \
@@ -130,6 +131,9 @@ post-patch:
${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" {} ';')
@@ -156,6 +160,8 @@ post-patch:
${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
@@ -169,7 +175,7 @@ pre-build:
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 \
@@ -210,12 +216,8 @@ do-build:
@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 \
@@ -299,7 +301,7 @@ make-node-modules-archive: extract patch-package-json
${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 \
@@ -317,4 +319,4 @@ make-marketplace-exts-archive: extract
${SETENV} ${MAKE_ENV} npm run download-builtin-extensions
@${TAR} -czf ${WRKDIR}/vscode-marketplace-exts-${DISTVERSION}${EXTRACT_SUFX} -C ${WRKSRC}/.build builtInExtensions
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
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 <bsd.port.pre.mk>
+
+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 <bsd.port.post.mk>
diff --git a/editors/vscode/Makefile.version b/editors/vscode/Makefile.version
new file mode 100644
index 000000000000..121e47fe5551
--- /dev/null
+++ b/editors/vscode/Makefile.version
@@ -0,0 +1,2 @@
+VSCODE_VERSION= 1.107.1
+SOURCE_COMMIT_HASH= 994fd12f8d3a5aa16f17d42c041e5809167e845a