forked from Lainports/opnsense-ports
514 lines
20 KiB
Makefile
514 lines
20 KiB
Makefile
PORTNAME= compass
|
|
DISTVERSIONPREFIX= v
|
|
DISTVERSION= 1.43.0
|
|
CATEGORIES= databases
|
|
MASTER_SITES= https://cloud.mongodb.com/static/font/:fonts \
|
|
https://registry.npmjs.org/fs-xattr/-/:fs_xattr \
|
|
https://registry.npmjs.org/kerberos/-/:kerberos \
|
|
https://registry.npmjs.org/mongodb-client-encryption/-/:mongoclienc \
|
|
https://registry.npmjs.org/os-dns-native/-/:dns
|
|
DISTFILES= EuclidCircularA-Semibold-WebXL.woff2:fonts \
|
|
EuclidCircularA-Semibold-WebXL.woff:fonts \
|
|
EuclidCircularA-SemiboldItalic-WebXL.woff2:fonts \
|
|
EuclidCircularA-SemiboldItalic-WebXL.woff:fonts \
|
|
EuclidCircularA-Medium-WebXL.woff2:fonts \
|
|
EuclidCircularA-Medium-WebXL.woff:fonts \
|
|
EuclidCircularA-MediumItalic-WebXL.woff2:fonts \
|
|
EuclidCircularA-MediumItalic-WebXL.woff:fonts \
|
|
EuclidCircularA-Regular-WebXL.woff2:fonts \
|
|
EuclidCircularA-Regular-WebXL.woff:fonts \
|
|
EuclidCircularA-RegularItalic-WebXL.woff2:fonts \
|
|
EuclidCircularA-RegularItalic-WebXL.woff:fonts \
|
|
fs-xattr-${NPM_FSXATTR_VER}.tgz:fs_xattr \
|
|
kerberos-${NPM_KERBEROS_VER}.tgz:kerberos \
|
|
mongodb-client-encryption-${MONGO_CLIENC_VER}.tgz:mongoclienc \
|
|
os-dns-native-${NPM_OSDNSNATIVE_VER}.tgz:dns
|
|
DIST_SUBDIR= ${PORTNAME}
|
|
EXTRACT_ONLY= ${DISTFILE_DEFAULT}
|
|
|
|
MAINTAINER= hiroo.ono+freebsd@gmail.com
|
|
COMMENT= The GUI for MongoDB
|
|
WWW= https://www.mongodb.com/products/compass/
|
|
|
|
LICENSE= SSPLv1
|
|
LICENSE_NAME= Server Side Public License
|
|
LICENSE_FILE= ${WRKSRC}/LICENSE
|
|
LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
|
|
|
|
DISTCACHEFILES= ${DISTCACHEFILE_npm} \
|
|
${DISTCACHEFILE_gyp} \
|
|
${DISTCACHEFILE_yarn} \
|
|
${DISTCACHEFILE_cargo}
|
|
DISTCACHEFILE_npm= ${DISTDIR}/${DIST_SUBDIR}/dotnpm-${DISTVERSION}.tar.xz
|
|
DISTCACHEFILE_gyp= ${DISTDIR}/${DIST_SUBDIR}/dotgyp-${DISTVERSION}.tar.xz
|
|
DISTCACHEFILE_yarn= ${DISTDIR}/${DIST_SUBDIR}/dotyarn-${DISTVERSION}.tar.xz
|
|
DISTCACHEFILE_cargo= ${DISTDIR}/${DIST_SUBDIR}/dotcargo-${DISTVERSION}.tar.xz
|
|
APPMODFILE= ${WRKDIR}/compass_node_modules.tar
|
|
|
|
ONLY_FOR_ARCHS= aarch64 amd64
|
|
USES= gettext-runtime gl gnome iconv jpeg nodejs:env python:build \
|
|
xorg
|
|
USE_GL= gbm gl
|
|
USE_GNOME= atk cairo gdkpixbuf2 glib20 gtk30 libxml2 libxslt pango
|
|
USE_XORG= x11 xcb xcomposite xdamage xext xfixes xi xrandr xrender xtst
|
|
USE_LDCONFIG= ${DATADIR}
|
|
|
|
USE_GITHUB= yes
|
|
GH_TUPLE= mongodb-js:compass:${DISTVERSIONPREFIX}${DISTVERSION} \
|
|
mongodb-js:reflux-state-mixin:e050454cb3be029c3e7fd2ee6a08111e4d15161f:reflux \
|
|
mongodb-js:zstd:${DISTVERSIONPREFIX}${MONGO_ZSTD_VER}:zstd \
|
|
napi-rs:napi-rs:@napi-rs/cli@${NPM_NAPI_VER}:napi
|
|
|
|
FETCH_DEPENDS= npm-node${NODEJS_VERSION}>0:www/npm-node${NODEJS_VERSION} \
|
|
yarn-node${NODEJS_VERSION}>0:www/yarn-node${NODEJS_VERSION} \
|
|
cargo:lang/rust
|
|
# Do not use USES=cmake, because compass itself does not build with cmake.
|
|
# The npm module it depends on uses cmake to build.
|
|
BUILD_DEPENDS= electron${ELECTRON_VER_MAJOR}:devel/electron${ELECTRON_VER_MAJOR} \
|
|
npm-node${NODEJS_VERSION}>0:www/npm-node${NODEJS_VERSION} \
|
|
yarn-node${NODEJS_VERSION}>0:www/yarn-node${NODEJS_VERSION} \
|
|
cmake:devel/cmake-core \
|
|
cargo:lang/rust \
|
|
pkg-config:devel/pkgconf \
|
|
zip:archivers/zip
|
|
LIB_DEPENDS= libmongocrypt.so:databases/libmongocrypt \
|
|
libatk-bridge-2.0.so:accessibility/at-spi2-core \
|
|
libatspi.so:accessibility/at-spi2-core \
|
|
libFLAC.so:audio/flac \
|
|
libopus.so:audio/opus \
|
|
libdbus-1.so:devel/dbus \
|
|
libicuuc.so:devel/icu \
|
|
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 \
|
|
libre2.so:devel/re2 \
|
|
libdrm.so:graphics/libdrm \
|
|
libpng.so:graphics/png \
|
|
libwayland-client.so:graphics/wayland \
|
|
libwebp.so:graphics/webp \
|
|
libdav1d.so:multimedia/dav1d \
|
|
libva.so:multimedia/libva \
|
|
libopenh264.so:multimedia/openh264 \
|
|
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
|
|
TEST_DEPENDS= Xvfb:x11-servers/xorg-server@xvfb
|
|
ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
|
|
CUPS_LIB_DEPENDS= libcups.so:print/cups
|
|
PIPEWIRE_LIB_DEPENDS= libpipewire-0.3.so:multimedia/pipewire
|
|
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
|
|
SNDIO_PREVENTS= ALSA PULSEAUDIO
|
|
SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio
|
|
|
|
PORTDOCS= AUTHORS \
|
|
CODE_OF_CONDUCT.md \
|
|
CONTRIBUTING.md \
|
|
README.md \
|
|
THIRD-PARTY-NOTICES.md
|
|
|
|
# Options have to be in accord with electron29.
|
|
OPTIONS_DEFINE= DOCS CUPS PIPEWIRE
|
|
OPTIONS_DEFAULT= DOCS CUPS PIPEWIRE SNDIO GSSAPI_BASE
|
|
OPTIONS_GROUP= AUDIO
|
|
OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO SNDIO
|
|
OPTIONS_SINGLE= GSSAPI
|
|
OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT
|
|
GSSAPI_BASE_USES= gssapi
|
|
GSSAPI_HEIMDAL_USES= gssapi:heimdal
|
|
GSSAPI_MIT_USES= gssapi:mit
|
|
|
|
PATCH_STRIP= -p1
|
|
|
|
CXXFLAGS+= -DNODE_API_EXPERIMENTAL \
|
|
-DNODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT
|
|
MAKE_ENV+= ${PATH_ENV}
|
|
MAKE_ENV+= HOME=${WRKDIR}
|
|
MAKE_ENV+= ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
|
.if defined(QUIET)
|
|
MAKE_ENV+= QUIET=yes
|
|
.else
|
|
MAKE_ENV+= DEBUG=true
|
|
.endif
|
|
PATH_ENV= PATH=$${PATH}:${WRKSRC}/node_modules/.bin
|
|
PATH_ENV_zstd= PATH=$${PATH}:${MONGO_ZSTD_DIR}/node_modules/.bin
|
|
TEST_ENV+= HOME=${WRKDIR}
|
|
TEST_ENV+= PATH=$${PATH}:${WRKSRC}/node_modules/.bin
|
|
HADRON_ENV+= PATH=$${PATH}:${WRKSRC}/node_modules/.bin
|
|
HADRON_ENV+= HADRON_SKIP_INSTALLER=true
|
|
HADRON_ENV+= ELECTRON_SKIP_BINARY_DOWNLOAD=1
|
|
HADRON_ENV+= APPMOD=${APPMODFILE}
|
|
HADRON_ENV+= DEBUG=hadron*
|
|
|
|
ELECTRON_DIR= ${.CURDIR}/../../devel/electron29
|
|
.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}
|
|
.if defined(ARCH) && ${ARCH} == amd64
|
|
ELECTRON_ARCH= x64
|
|
NAPI_TARGET= x86_64-unknown-freebsd
|
|
.elif defined(ARCH) && ${ARCH} == arm64
|
|
ELECTRON_ARCH= arm64
|
|
NAPI_TARGET= aarch64-unknown-freebsd
|
|
.endif
|
|
|
|
MONGO_CLIENC_VER= 6.0.0
|
|
MONGO_ZSTD_VER= 1.0.0
|
|
NPM_FSXATTR_VER= 0.3.1
|
|
NPM_KERBEROS_VER= 2.1.0
|
|
NPM_NAPI_VER= 2.9.0
|
|
COMPASS_DIR= ${WRKSRC}/packages/compass
|
|
MONGO_ZSTD_DIR= ${WRKDIR}/zstd-${MONGO_ZSTD_VER}
|
|
NODE_MODULES_DIR= ${WRKSRC}/node_modules
|
|
NPM_NAPI_DIR= ${WRKDIR}/napi-rs--napi-rs-cli-${NPM_NAPI_VER}
|
|
DISTTMP_DIR= ${WRKDIR}/dist-tmp
|
|
|
|
NPM_OSDNSNATIVE_VER= 1.2.1
|
|
|
|
post-fetch: ${DISTCACHEFILES}
|
|
|
|
${DISTCACHEFILE_npm}:
|
|
# Cache npm modules to avoid network connection at later stages
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm cache add \
|
|
$$(cat ${FILESDIR}/package-*.list)
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_DEFAULT} -C ${WRKDIR}
|
|
${MKDIR} ${NODE_MODULES_DIR}
|
|
${REINPLACE_CMD} -E ' \
|
|
s,^( *"electron"): *"[0-9~^].*"(.*)$$,\1: "${ELECTRON_VER}"\2,; \
|
|
' ${WRKSRC}/package-lock.json
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm --ignore-scripts -- install
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm cache add \
|
|
electron@${ELECTRON_VER} \
|
|
$$(npm view electron@${ELECTRON_VER:C/\.[^\.]*$//} version | \
|
|
${TAIL} -1 | ${SED} -E 's, .*,,')
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm --ignore-scripts -- install \
|
|
electron@~${ELECTRON_VER}
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/fs-xattr-${NPM_FSXATTR_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm --ignore-scripts install node-gyp-cache@0.2.1
|
|
${RM} -rd ${WRKDIR}/package
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/mongodb-client-encryption-${MONGO_CLIENC_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm --ignore-scripts install
|
|
${RM} -rd ${WRKDIR}/package
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/os-dns-native-${NPM_OSDNSNATIVE_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm --ignore-scripts install
|
|
${RM} -rd ${WRKDIR}/package
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_zstd} -C ${WRKDIR}
|
|
${MKDIR} ${MONGO_ZSTD_DIR}/node_modules
|
|
cd ${MONGO_ZSTD_DIR} && \
|
|
${PATCH} -p1 < ${FILESDIR}/mongodb-js-zstd.patch
|
|
cd ${MONGO_ZSTD_DIR} && \
|
|
${SETENV} ${MAKE_ENV} ${PATH_ENV_zstd} \
|
|
npm --ignore-scripts -- install
|
|
${RM} -rd ${MONGO_ZSTD_DIR}
|
|
|
|
# Without npm cache verify, installing
|
|
# mongodb-tools@https://codeload... fails.
|
|
# if npm cache verify fails by 'too many open files',
|
|
# set MAX_FILES_compass=16384 in poudriere.conf.
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm cache verify
|
|
|
|
# Back up npm cache
|
|
cd ${WRKDIR} && ${TAR} cJf ${DISTCACHEFILE_npm} .npm
|
|
|
|
${DISTCACHEFILE_gyp}:
|
|
# To prepare cache cached by node-gyp-cache when rebuilding
|
|
# fs-xattr, mongodb-client-encryption and os-dns-native,
|
|
# install node-gyp-cache and do
|
|
# npm exec node-gyp-cache rebuild for fs-xattr,
|
|
# npm run install for mongodb-client-encryption and
|
|
# npm run install for os-dns-native
|
|
# which is OK to fail here (because of python absent).
|
|
${ECHO} "node_gyp = node-gyp-cache" >> ${WRKDIR}/.npmrc
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/fs-xattr-${NPM_FSXATTR_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm install node-gyp-cache@0.2.1
|
|
-cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm exec node-gyp-cache rebuild
|
|
${RM} -rd ${WRKDIR}/package /tmp/work
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/mongodb-client-encryption-${MONGO_CLIENC_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm install node-gyp-cache@0.2.1
|
|
-cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm run install
|
|
${RM} -rd ${WRKDIR}/package /tmp/work
|
|
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/os-dns-native-${NPM_OSDNSNATIVE_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm install node-gyp-cache@0.2.1
|
|
-cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm run install
|
|
|
|
# Back up node-gyp-cache cache
|
|
cd ${WRKDIR} && ${TAR} cJf ${DISTCACHEFILE_gyp} .cache
|
|
|
|
${DISTCACHEFILE_yarn}:
|
|
# Do yarn install to cache node modules for napi-rs-cli.
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_napi} -C ${WRKDIR}
|
|
${MKDIR} ${NPM_NAPI_DIR}/node_modules
|
|
cd ${NPM_NAPI_DIR} && ${PATCH} -p1 < ${FILESDIR}/napi-cli.patch
|
|
cd ${NPM_NAPI_DIR} && ${SETENV} ${MAKE_ENV} yarn install
|
|
|
|
# Back up yarn cache
|
|
cd ${NPM_NAPI_DIR} && ${TAR} cJf ${DISTCACHEFILE_yarn} .yarn
|
|
|
|
${DISTCACHEFILE_cargo}:
|
|
# Cache cargo crates for zstd.
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_zstd} -C ${WRKDIR}
|
|
cd ${MONGO_ZSTD_DIR} && ${SETENV} ${MAKE_ENV} \
|
|
cargo fetch
|
|
# Back up cargo cache
|
|
cd ${WRKDIR} && ${TAR} cJf ${DISTCACHEFILE_cargo} .cargo
|
|
|
|
post-extract:
|
|
# Restore npm and node-gyp-cache cache
|
|
${TAR} xf ${DISTCACHEFILE_npm} -C ${WRKDIR}
|
|
${TAR} xf ${DISTCACHEFILE_gyp} -C ${WRKDIR}
|
|
${TAR} xf ${DISTCACHEFILE_cargo} -C ${WRKDIR}
|
|
|
|
# Fonts
|
|
-${MKDIR} ${WRKSRC}/packages/compass/src/app/fonts
|
|
for font in ${DISTDIR}/${DIST_SUBDIR}/*.woff*; do \
|
|
${INSTALL_DATA} $${font} \
|
|
${WRKSRC}/packages/compass/src/app/fonts; \
|
|
done
|
|
|
|
pre-build:
|
|
# Prepare kerberos
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/kerberos-${NPM_KERBEROS_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
cd ${WRKDIR}/package && ${PATCH} -p1 < ${FILESDIR}/kerberos.patch
|
|
. if empty(PORT_OPTIONS:MGSSAPI_MIT)
|
|
cd ${WRKDIR}/package && ${PATCH} -p1 < ${FILESDIR}/kerberos-heimdal.patch
|
|
. endif
|
|
${FIND} ${WRKDIR}/package -name \*.orig -or -name \*.bak -delete
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm pack file:${WRKDIR}/package
|
|
${RM} -rd ${WRKDIR}/package
|
|
|
|
# Prepare mongodb-client-encryption
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/mongodb-client-encryption-${MONGO_CLIENC_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
cd ${WRKDIR}/package && ${PATCH} -p1 < ${FILESDIR}/mongodb-client-encryption.patch
|
|
${REINPLACE_CMD} -E \
|
|
's|^(.*\.include_dir.*)$$|\1 "/usr/include", "${PREFIX}/include"|' \
|
|
${WRKDIR}/package/binding.gyp
|
|
${REINPLACE_CMD} -E \
|
|
"s|^( *').*(lib.*-static.*\.a)('.*)$$|\1${PREFIX}/lib/\2\3|" \
|
|
${WRKDIR}/package/binding.gyp
|
|
${REINPLACE_CMD} -E \
|
|
-e 's|("chai"): "\^4\.3\.7"|\1: "^4.0.0"|' \
|
|
-e 's|("eslint"): "\^8\.46\.0"|\1: "^8.0.0"|' \
|
|
-e 's|("@typescript-eslint\/parser"): "\^6\.3\.0"|\1: "^6.0.0"|' \
|
|
${WRKDIR}/package/package.json
|
|
${FIND} ${WRKDIR}/package -name \*.orig -or -name \*.bak -delete
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm --offline -- install node-gyp-cache@0.2.1
|
|
${ECHO} "node_gyp = node-gyp-cache" >> ${WRKDIR}/.npmrc
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
node-gyp rebuild --python=${PYTHON_CMD}
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm pack file:${WRKDIR}/package
|
|
${RM} -rd ${WRKDIR}/package
|
|
|
|
# Prepare fs-xattr
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/fs-xattr-${NPM_FSXATTR_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
cd ${WRKDIR}/package && ${PATCH} -p1 < ${FILESDIR}/fs-xattr.patch
|
|
${CP} ${FILESDIR}/xattr.h ${WRKDIR}/package/src
|
|
${CP} ${FILESDIR}/xattr_api.c ${WRKDIR}/package/src
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm --offline -- install node-gyp-cache@0.2.1
|
|
# ${ECHO} "node_gyp = node-gyp-cache" >> ${WRKDIR}/.npmrc
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm exec node-gyp-cache rebuild --python=${PYTHON_CMD}
|
|
${FIND} ${WRKDIR}/package -name \*.orig -or -name \*.bak -delete
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm pack file:${WRKDIR}/package
|
|
${RM} -rd ${WRKDIR}/package
|
|
|
|
# Prepare os-dns-native
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/os-dns-native-${NPM_OSDNSNATIVE_VER}.tgz \
|
|
-C ${WRKDIR}
|
|
cd ${WRKDIR} && ${PATCH} -p0 < ${FILESDIR}/os-dns-native.patch
|
|
${MKDIR} ${WRKDIR}/package/node_modules
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm --offline -- install node-gyp-cache@0.2.1
|
|
${ECHO} "node-gyp = node-gyp-cache" >> ${WRKDIR}/.npmrc
|
|
cd ${WRKDIR}/package && ${SETENV} ${MAKE_ENV} \
|
|
PATH=${PATH}:${WRKDIR}/package/node_modules/.bin \
|
|
npm run install
|
|
${FIND} ${WRKDIR}/package -name \*.orig -or -name \*.bak -delete
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm pack file:${WRKDIR}/package
|
|
${RM} -rd ${WRKDIR}/package
|
|
|
|
# Prepare napi-rs-cli (for mongodb-js-zstd)
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_napi} -C ${WRKDIR}
|
|
${TAR} xf ${DISTCACHEFILE_yarn} -C ${NPM_NAPI_DIR}
|
|
${MKDIR} ${NPM_NAPI_DIR}/node_modules
|
|
cd ${NPM_NAPI_DIR} && ${PATCH} -p1 < ${FILESDIR}/napi-cli.patch
|
|
cd ${NPM_NAPI_DIR} && ${SETENV} ${MAKE_ENV} yarn install
|
|
cd ${NPM_NAPI_DIR} && ${SETENV} ${MAKE_ENV} \
|
|
PATH=$${PATH}:${NPM_NAPI_DIR}/node_modules/.bin npm run build
|
|
${FIND} ${NPM_NAPI_DIR} -name \*.orig -or -name \*.bak -delete
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm pack file:${NPM_NAPI_DIR}/cli
|
|
|
|
# Prepare mongodb-js-zstd.
|
|
${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_zstd} -C ${WRKDIR}
|
|
|
|
# Install node_modules for zstd.
|
|
${MKDIR} ${MONGO_ZSTD_DIR}/node_modules
|
|
cd ${MONGO_ZSTD_DIR} && \
|
|
${PATCH} -p1 < ${FILESDIR}/mongodb-js-zstd.patch
|
|
cd ${MONGO_ZSTD_DIR} && \
|
|
${SETENV} ${MAKE_ENV} ${PATH_ENV_zstd} \
|
|
npm --offline -- install \
|
|
${WRKDIR}/napi-rs-cli-${NPM_NAPI_VER}.tgz
|
|
cd ${MONGO_ZSTD_DIR} && \
|
|
${SETENV} ${MAKE_ENV} ${PATH_ENV_zstd} CARGO_NET_OFFLINE=true \
|
|
napi build --platform --release --target ${NAPI_TARGET} && \
|
|
${SETENV} ${MAKE_ENV} ${PATH_ENV_zstd} ${INSTALL_LIB} \
|
|
zstd.freebsd-${ELECTRON_ARCH}.node npm/freebsd-${ELECTRON_ARCH}/
|
|
${FIND} ${MONGO_ZSTD_DIR} -name \*.orig -or -name \*.bak -delete
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm pack file:${MONGO_ZSTD_DIR}
|
|
cd ${WRKDIR} && ${SETENV} ${MAKE_ENV} npm pack \
|
|
file:${MONGO_ZSTD_DIR}/npm/freebsd-${ELECTRON_ARCH}
|
|
|
|
# Replace "git+ssh:" and "github:" entry with "file:"
|
|
# to exported tarballs.
|
|
${REINPLACE_CMD} -E ' \
|
|
s,"(resolved|from|version)": "git\+ssh:.*/reflux-state-mixin\.git.*","\1": "file://${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_reflux}",; \
|
|
s,"(reflux-state-mixin|resolved|from)": "(.+@)?github:mongodb-js/reflux-state-mixin(.[0-9a-f]+)?","\1": "file://${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_reflux}",; \
|
|
' ${WRKSRC}/package-lock.json
|
|
|
|
for pjson in $$(find ${WRKSRC} -name package.json -print); do \
|
|
${REINPLACE_CMD} -E ' \
|
|
s,"(reflux-state-mixin)": "github:mongodb-js/reflux-state-mixin","\1": "file://${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_reflux}",; \
|
|
' $${pjson}; done
|
|
|
|
# Install node modules
|
|
${MKDIR} ${NODE_MODULES_DIR}
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npm install --offline \
|
|
${DISTDIR}/${DIST_SUBDIR}/${DISTFILE_reflux} \
|
|
${WRKDIR}/fs-xattr-${NPM_FSXATTR_VER}.tgz \
|
|
${WRKDIR}/kerberos-${NPM_KERBEROS_VER}.tgz \
|
|
${WRKDIR}/napi-rs-cli-${NPM_NAPI_VER}.tgz \
|
|
${WRKDIR}/mongodb-js-zstd-*.tgz \
|
|
${WRKDIR}/mongodb-client-encryption-${MONGO_CLIENC_VER}.tgz \
|
|
${WRKDIR}/os-dns-native-${NPM_OSDNSNATIVE_VER}.tgz
|
|
|
|
# Install electron without build.
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
|
|
npm --offline --omit-dev --ignore-scripts -- install \
|
|
electron@${ELECTRON_VER}
|
|
|
|
# Install node modules for production (APPMOD)
|
|
${MKDIR} ${DISTTMP_DIR}/node_modules
|
|
cd ${DISTTMP_DIR} && ${SETENV} ${MAKE_ENV} \
|
|
npm --offline --omit-dev -- install \
|
|
${WRKDIR}/kerberos-${NPM_KERBEROS_VER}.tgz \
|
|
${WRKDIR}/mongodb-client-encryption-${MONGO_CLIENC_VER}.tgz
|
|
-${RM} ${APPMODFILE}
|
|
${TAR} -cf ${APPMODFILE} --exclude python3 \
|
|
-C ${DISTTMP_DIR} node_modules
|
|
|
|
do-build:
|
|
# Set up download zip file for electron-packager
|
|
cd ${WRKSRC}/node_modules/electron-packager/src && \
|
|
${PATCH} -p1 < ${FILESDIR}/electron-packager.patch
|
|
cd ${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR} && \
|
|
zip -q -r ${WRKDIR}/electron-v${ELECTRON_VER}-freebsd-${ELECTRON_ARCH}.zip .
|
|
|
|
# Install electron
|
|
${CP} -R ${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR} \
|
|
${NODE_MODULES_DIR}/electron/dist
|
|
${ECHO} "electron" > ${NODE_MODULES_DIR}/electron/path.txt
|
|
|
|
# Build MongoDB Compass
|
|
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} lerna run bootstrap --stream
|
|
cd ${WRKSRC} && ${SETENV} ${HADRON_ENV} npm run package-compass
|
|
|
|
do-install:
|
|
# Install MongoDB Compass
|
|
-${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps
|
|
${INSTALL_DATA} ${WRKSRC}/packages/compass/app-icons/linux/mongodb-compass.png \
|
|
${STAGEDIR}${PREFIX}/share/pixmaps/
|
|
-${MKDIR} ${STAGEDIR}${DESKTOPDIR}
|
|
${INSTALL_DATA} ${FILESDIR}/mongodb-compass.desktop \
|
|
${STAGEDIR}${DESKTOPDIR}/
|
|
-${MKDIR} ${STAGEDIR}${DATADIR}
|
|
cd ${COMPASS_DIR}/dist/MongoDB* && ${TAR} cf - . | \
|
|
${TAR} xf - -C ${STAGEDIR}${DATADIR}
|
|
.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
|
|
${RLN} ${STAGEDIR}${DATADIR}/MongoDB* \
|
|
${STAGEDIR}${PREFIX}/bin/${PORTNAME}
|
|
${FIND} ${STAGEDIR}${DATADIR} -name \*.node -exec ${STRIP_CMD} {} \;
|
|
|
|
# Install documents
|
|
do-install-DOCS-on:
|
|
-${MKDIR} ${STAGEDIR}${DOCSDIR}
|
|
.for f in ${PORTDOCS}
|
|
${INSTALL_MAN} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR}
|
|
.endfor
|
|
|
|
post-stage:
|
|
cd ${STAGEDIR}${PREFIX} && \
|
|
${FIND} ${DATADIR_REL}/resources/app.asar.unpacked/build \
|
|
-type f -o -type l > ${WRKDIR}/PLIST.unpacked
|
|
cd ${WRKDIR} && ${SED} -i -e "/PLIST.unpacked/r PLIST.unpacked" ${TMPPLIST}
|
|
|
|
do-test:
|
|
cd ${WRKSRC}/packages/compass && \
|
|
${SETENV} ${TEST_ENV} \
|
|
xvfb-maybe electron-mocha --no-sandbox "./src/main/*.spec.*"
|
|
|
|
post-clean:
|
|
.for file in ${DISTCACHEFILES} compass_node_modules.tar
|
|
${RM} ${DISTDIR}/${DIST_SUBDIR}/${file}
|
|
.endfor
|
|
|
|
.include <bsd.port.mk>
|