diff options
Diffstat (limited to '')
| -rw-r--r-- | editors/vscode/Makefile | 32 | ||||
| -rw-r--r-- | editors/vscode/Makefile.reh | 133 | ||||
| -rw-r--r-- | editors/vscode/Makefile.version | 2 |
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 |
