4f23e42cfd
Update to code-server 4.129.0, which bundles VS Code 1.129.0.
VS Code 1.129 changed how the built-in GitHub Copilot extension is
handled: it is now built from source during the reh-web build instead
of being fetched as a prebuilt VSIX. This requires a few build-time
workarounds:
- The copilot extension postinstall expects a platform package for the
host. A Copilot CLI SDK distfile is provided and placed as
@github/copilot-freebsd-x64 so the postinstall passes. GitHub Copilot
is closed-source and not usable on FreeBSD; this only lets the build
complete.
- The reh-web build calls ensureCopilotPlatformPackage(), which runs
"npm pack" and thus needs network access (unavailable in poudriere).
Providing @github/copilot-linux-x64 in remote/node_modules makes the
function find it locally and skip the network fetch.
- Copilot bundles prebuilt Linux rg/tgrep binaries. These are replaced
with native FreeBSD binaries from textproc/ripgrep and textproc/tgrep
so that no Linux ELF binaries ship in the package.
Additional changes:
- Add ONLY_FOR_ARCHS=amd64; only a linux-x64 vscode-reh-web distfile is
provided.
- Drop test/* entries from VSCODE_NODE_MODULES; test suites do not
belong in the server package.
- Add a code_server_shell rc variable (default /bin/sh) so the built-in
terminal works when the service runs as nobody, whose login shell is
/usr/sbin/nologin.
- Fix ${PREFIX} expansion in pkg-message.
Sponsored by: Netzkommune GmbH
112 lines
5.8 KiB
INI
112 lines
5.8 KiB
INI
post-extract:
|
|
${RM} -r ${WRKSRC}/lib/vscode
|
|
${MV} ${WRKDIR}/vscode-${VSCODE_VERSION} ${WRKSRC}/lib/vscode
|
|
.if !defined(BOOTSTRAP_NODE_MODULES)
|
|
${TAR} -xzf ${DISTDIR}/code-server-node-modules-${DISTVERSION}${EXTRACT_SUFX} \
|
|
-C ${WRKSRC}
|
|
.endif
|
|
${TAR} -xzf ${DISTDIR}/vscode-reh-web-linux-x64-${DISTVERSION}${EXTRACT_SUFX} \
|
|
-C ${WRKSRC}
|
|
# Provide Copilot CLI SDK so the copilot extension postinstall passes.
|
|
# GitHub Copilot is closed-source and not usable on FreeBSD.
|
|
${MKDIR} ${WRKSRC}/lib/vscode/extensions/copilot/node_modules/@github/copilot-freebsd-x64
|
|
${CP} -R ${WRKDIR}/package/ ${WRKSRC}/lib/vscode/extensions/copilot/node_modules/@github/copilot-freebsd-x64
|
|
.for dir in ${VSCODE_NODE_MODULES}
|
|
${MKDIR} ${WRKSRC}/lib/vscode/${dir}
|
|
${TAR} -xzf ${WRKDIR}/vscode-${dir:S|/|_|g}-node-modules${EXTRACT_SUFX} \
|
|
-C ${WRKSRC}/lib/vscode/${dir}
|
|
.endfor
|
|
# Provide @github/copilot-linux-x64 in remote/node_modules so the reh-web build's
|
|
# ensureCopilotPlatformPackage() finds it locally instead of running "npm pack"
|
|
# (which needs network and fails in poudriere). GitHub Copilot is closed-source
|
|
# and not usable on FreeBSD; this only lets the build pass.
|
|
${MKDIR} ${WRKSRC}/lib/vscode/remote/node_modules/@github/copilot-linux-x64
|
|
${CP} -R ${WRKDIR}/package/ ${WRKSRC}/lib/vscode/remote/node_modules/@github/copilot-linux-x64
|
|
|
|
post-patch:
|
|
cd ${WRKSRC} && while read patchfile; do \
|
|
${PATCH} -p1 < ${WRKSRC}/patches/$${patchfile}; \
|
|
done < ${WRKSRC}/patches/series
|
|
${CP} ${WRKSRC}/lib/vscode/build/.moduleignore.linux \
|
|
${WRKSRC}/lib/vscode/build/.moduleignore.freebsd
|
|
${REINPLACE_CMD} -e '/"typeRoots": \[/,+2d' \
|
|
${WRKSRC}/lib/vscode/extensions/configuration-editing/tsconfig.json
|
|
${LOCALBASE}/bin/jq \
|
|
'.version = "${DISTVERSION}" | .commit = "${DISTVERSION}"' \
|
|
${WRKSRC}/package.json > ${WRKSRC}/package.json.tmp
|
|
${MV} ${WRKSRC}/package.json.tmp ${WRKSRC}/package.json
|
|
|
|
do-build:
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
|
|
npm run build
|
|
cd ${WRKSRC}/lib/vscode/node_modules/node-pty && \
|
|
${SETENV} ${MAKE_ENV} PYTHON=${PYTHON_CMD} \
|
|
node ${LOCALBASE}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js \
|
|
rebuild --nodedir=${LOCALBASE}
|
|
${MKDIR} ${WRKSRC}/lib/vscode/node_modules/node-pty/prebuilds/freebsd-x64
|
|
${CP} ${WRKSRC}/lib/vscode/node_modules/node-pty/build/Release/pty.node \
|
|
${WRKSRC}/lib/vscode/node_modules/node-pty/prebuilds/freebsd-x64/pty.node
|
|
cd ${WRKSRC}/lib/vscode/node_modules/@vscode/spdlog && \
|
|
${SETENV} ${MAKE_ENV} PYTHON=${PYTHON_CMD} \
|
|
node ${LOCALBASE}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js \
|
|
rebuild --nodedir=${LOCALBASE}
|
|
cd ${WRKSRC}/lib/vscode/node_modules/@vscode/native-watchdog && \
|
|
${SETENV} ${MAKE_ENV} PYTHON=${PYTHON_CMD} \
|
|
CXXFLAGS="${CXXFLAGS} -I${LOCALBASE}/include" \
|
|
node ${LOCALBASE}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js \
|
|
rebuild --nodedir=${LOCALBASE}
|
|
cd ${WRKSRC}/lib/vscode && \
|
|
VSCODE_NODE_VERSION=$$(${AWK} \
|
|
'/node-v[0-9.]+-linux-x64\.tar\.gz/ { \
|
|
sub(/^.*node-v/, "", $$2); \
|
|
sub(/-linux-x64\.tar\.gz$$/, "", $$2); \
|
|
print $$2; \
|
|
exit \
|
|
}' build/checksums/nodejs.txt) && \
|
|
${MKDIR} .build/node/v$${VSCODE_NODE_VERSION}/linux-x64 && \
|
|
${CP} ${LOCALBASE}/bin/node \
|
|
.build/node/v$${VSCODE_NODE_VERSION}/linux-x64/node
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} VERSION=${DISTVERSION} \
|
|
npm run build:vscode
|
|
# Replace bundled Copilot Linux rg/tgrep binaries with native FreeBSD
|
|
# versions from textproc/ripgrep and textproc/tgrep. The linux-x64 path
|
|
# names are kept as-is (Copilot resolves them by that label); only the
|
|
# binary contents are swapped so no Linux ELF binaries ship in the package.
|
|
.for _rg in extensions/copilot/node_modules/@github/copilot/sdk/ripgrep/bin/linux-x64/rg \
|
|
node_modules/@github/copilot-linux-x64/ripgrep/bin/linux-x64/rg \
|
|
node_modules/@vscode/ripgrep-universal/bin/linux-x64/rg
|
|
${CP} ${LOCALBASE}/bin/rg \
|
|
${WRKSRC}/lib/vscode-reh-web-linux-x64/${_rg}
|
|
.endfor
|
|
.for _tgrep in extensions/copilot/node_modules/@github/copilot/tgrep/bin/linux-x64/tgrep \
|
|
extensions/copilot/node_modules/@github/copilot/sdk/tgrep/bin/linux-x64/tgrep \
|
|
node_modules/@github/copilot-linux-x64/tgrep/bin/linux-x64/tgrep
|
|
${CP} ${LOCALBASE}/bin/tgrep \
|
|
${WRKSRC}/lib/vscode-reh-web-linux-x64/${_tgrep}
|
|
.endfor
|
|
${PERL} -0pi \
|
|
-e 's#process\.platform !== "linux"\) \{#process.platform !== "linux" \&\&\n process.platform !== "freebsd") {#' \
|
|
${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/@vscode/deviceid/dist/index.js
|
|
${PERL} -0pi \
|
|
-e 's#process\.platform === "linux"#process.platform === "linux" || process.platform === "freebsd"#' \
|
|
${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/@vscode/deviceid/dist/storage.js
|
|
${MKDIR} ${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/node-pty/prebuilds/freebsd-x64
|
|
${CP} ${WRKSRC}/lib/vscode/node_modules/node-pty/build/Release/pty.node \
|
|
${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/node-pty/prebuilds/freebsd-x64/pty.node
|
|
${MKDIR} ${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/@vscode/spdlog/build/Release
|
|
${CP} ${WRKSRC}/lib/vscode/node_modules/@vscode/spdlog/build/Release/spdlog.node \
|
|
${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/@vscode/spdlog/build/Release/spdlog.node
|
|
${MKDIR} ${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/@vscode/native-watchdog/build/Release
|
|
${CP} ${WRKSRC}/lib/vscode/node_modules/@vscode/native-watchdog/build/Release/watchdog.node \
|
|
${WRKSRC}/lib/vscode-reh-web-linux-x64/node_modules/@vscode/native-watchdog/build/Release/watchdog.node
|
|
${RM} ${WRKSRC}/lib/vscode-reh-web-linux-x64/node
|
|
|
|
make-node-modules-archive:
|
|
${MAKE} BOOTSTRAP_NODE_MODULES=yes clean extract
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
|
|
npm ci --ignore-scripts --no-progress --no-audit \
|
|
--no-fund --no-update-notifier
|
|
cd ${WRKSRC} && ${TAR} -czf \
|
|
${WRKDIR}/code-server-node-modules-${DISTVERSION}${EXTRACT_SUFX} \
|
|
node_modules
|