Files
ports/x11/waveterm/Makefile
T

112 lines
3.8 KiB
Makefile

# Notes for port maintainer(s)
#
# Before copying package.json and package-lock.json to ${PKGJSONSDIR},
# do the following steps:
# 1. Add node-addon-api and node-gyp to devDependencies in ${WRKSRC}
# $ npm install --save-dev --ignore-scripts node-addon-api node-gyp
# This is required for building sharp node module from source.
# https://sharp.pixelplumbing.com/install/#building-from-source
# 2. Generate package.json and package-lock.json in ${WRKSRC}/tsunami/template
# $ cd tsunami/templates && cp package.json.tmpl package.json && npm install --ignore-scripts
PORTNAME= waveterm
DISTVERSIONPREFIX= v
DISTVERSION= 0.14.5
PORTREVISION= 18
CATEGORIES= x11
DISTFILES= tsunami/go.mod:prefetch
MAINTAINER= tagattie@FreeBSD.org
COMMENT= Open source, AI-native terminal that sees your entire workspace
WWW= https://www.waveterm.dev/
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= task:devel/task
LIB_DEPENDS= libvips.so:graphics/vips
USES= cargo electron:41 gmake go:1.25+,modules,no_targets \
nodejs:24,build npm:npm python:build
USE_GITHUB= yes
GH_ACCOUNT= wavetermdev
GH_TUPLE= swc-project:swc:v1.15.11:swc/swc
CARGO_CARGOTOML=${WRKSRC}/swc/Cargo.toml
CARGO_CARGOLOCK=${WRKSRC}/swc/Cargo.lock
CARGO_BUILD= no
CARGO_INSTALL= no
CARGO_TEST= no
CARGO_ENV+= CARGO_FEATURE_LOCAL_DYNAMIC_TLS=1
GO_MOD_DIST= github
GO_MODULE= github.com/wavetermdev/waveterm
BINARY_ALIAS= python3=${PYTHON_CMD}
SUB_FILES= ${PORTNAME}
PLIST_SUB= ARCH=${ARCH:S/aarch64/arm64/:S/amd64/x64/} \
DISTVERSION=${DISTVERSION}
PORTDOCS= CONTRIBUTING.md README.md SECURITY.md
OPTIONS_DEFINE= DOCS
USE_ELECTRON= appbuilder:devel rebuild build:builder
ELECTRON_MAKE_FLAGS+= -c electron-builder.config.cjs
pre-fetch:
@${MKDIR} ${DISTDIR}/${DIST_SUBDIR}/tsunami
@if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/tsunami/go.mod ]; then \
${FETCH_CMD} ${FETCH_BEFORE_ARGS} \
https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${DISTVERSIONFULL}/tsunami/go.mod \
-o ${DISTDIR}/${DIST_SUBDIR}/tsunami/go.mod; \
fi
pre-build:
cd ${WRKSRC}/swc && \
${SETENV} ${MAKE_ENV} ${CARGO_ENV} ${CARGO} build \
--manifest-path ${CARGO_CARGOTOML} \
--package binding_core_node --release --verbose --verbose
${CP} ${CARGO_TARGET_DIR}/*/libbinding_core_node.so \
${WRKSRC}/node_modules/@swc/core/swc.freebsd-${ELECTRON_ARCH}.node
cd ${WRKSRC} && \
${SETENV} ${MAKE_ENV} ${GO_ENV} task --verbose build:backend
cd ${WRKSRC} && \
${SETENV} ${MAKE_ENV} ${GO_ENV} task --verbose build:tsunamiscaffold
.for mod in lqip-loader plugin-ideal-image
cd ${WRKSRC}/node_modules/@docusaurus/${mod}/node_modules/sharp && \
${SETENV} ${MAKE_ENV} ${ELECTRON_REBUILD_ENV} npm run install
.endfor
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm run build:prod
# generate icon files
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} app-builder icon \
--input=icon.icns --out=icons --format=set --root=build
.for size in 16 48
${MV} ${WRKSRC}/icons/icon_${size}x${size}.png ${WRKSRC}/icons/icon_${size}.png
.endfor
do-install:
${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin
${INSTALL_DATA} ${FILESDIR}/${PORTNAME}.desktop ${STAGEDIR}${DESKTOPDIR}
.for size in 16 32 48 64 128 256 512 1024
@${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/${size}x${size}/apps
${INSTALL_DATA} ${WRKSRC}/icons/icon_${size}.png \
${STAGEDIR}${PREFIX}/share/icons/hicolor/${size}x${size}/apps/${PORTNAME}.png
.endfor
@${MKDIR} ${STAGEDIR}${DATADIR}
cd ${WRKSRC}/make/${ELECTRON_BUILDER_APP_OUT_DIR} && \
${COPYTREE_SHARE} resources ${STAGEDIR}${DATADIR}
${FIND} ${STAGEDIR}${DATADIR}/resources -type f -exec ${FILE} {} ';' | \
${GREP} 'ELF.*FreeBSD' | ${AWK} -F ': ' '{print $$1}' | ${XARGS} ${STRIP_CMD}
do-install-DOCS-on:
@${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
do-test:
cd ${TEST_WRKSRC} && ${SETENV} ${TEST_ENV} npm run test
.include <bsd.port.mk>