PORTNAME= grist-core PORTVERSION= 1.7.13 DISTVERSIONPREFIX= v CATEGORIES= www MASTER_SITES= LOCAL/mfechner/${PORTNAME}/:yarncache DISTFILES= ${PORTNAME}-yarn-offline-cache-${DISTVERSION}${EXTRACT_SUFX}:yarncache MAINTAINER= mfechner@FreeBSD.org COMMENT= Modern relational spreadsheet running in browser WWW= https://github.com/gristlabs/grist-core LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE.txt ONLY_FOR_ARCHS= amd64 ONLY_FOR_ARCHS_REASON= Yarn cache only for amd64 generated MY_DEPENDS= yarn${NODEJS_SUFFIX}>=1.10.0:www/yarn${NODEJS_SUFFIX} \ bash:shells/bash BUILD_DEPENDS= ${MY_DEPENDS} \ libuv>=1.34.0:devel/libuv RUN_DEPENDS= ${MY_DEPENDS} \ ${PYTHON_PKGNAMEPREFIX}pip>=22.2.2:devel/py-pip@${PY_FLAVOR} USES= compiler:c++17-lang gmake nodejs python shebangfix USE_GITHUB= yes GH_ACCOUNT= gristlabs USE_RC_SUBR= grist SHEBANG_FILES= sandbox/gvisor/run.py # Required for node-gyp to work MAKE_ENV+= npm_config_build_from_source=true MAKE_ENV+= npm_config_nodedir=${PREFIX} MAKE_ENV+= npm_config_node_gyp=${LOCALBASE}/bin/node-gyp MAKE_ENV+= PYTHON=${PYTHON_CMD} MAKE_ENV+= COREPACK_ENABLE_DOWNLOAD_PROMPT=0 CPPFLAGS+= -I${LOCALBASE}/include CXXFLAGS+= -I${LOCALBASE}/include WWWDIR= ${PREFIX}/www/grist-core SUB_FILES= pkg-message SUB_LIST= GRIST_USER=${USERS} \ GRIST_GROUP=${GROUPS} \ PYTHON_CMD="${PYTHON_CMD}" USERS= grist GROUPS= grist post-patch: # setup yarnrc for offline node_modules installation @${ECHO_CMD} 'yarn-offline-mirror "${WRKDIR}/yarn-offline-cache"' >> ${WRKSRC}/.yarnrc pre-build: #(cd ${WORKSRC} && ${SETENV} ${MAKE_ENV} HOME=${WRKDIR} && yarn config set python /usr/local/bin/python3.11) @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} HOME=${WRKDIR} PUPPETEER_SKIP_DOWNLOAD=true npm_config_build_from_source=true yarn install --offline do-build: @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} yarn build:prod do-install: # Rebuild production-only node_modules ${RM} -r ${WRKSRC}/node_modules @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} HOME=${WRKDIR} PUPPETEER_SKIP_DOWNLOAD=true npm_config_build_from_source=true yarn install --offline --prod # Cleanup broken sqlite3 build leftovers ${RM} -r ${WRKSRC}/node_modules/@gristlabs/sqlite3/build-tmp-napi-v6/Release/.deps/Release/obj.target/nothing \ ${WRKSRC}/node_modules/@gristlabs/sqlite3/build-tmp-napi-v6/Release/obj.target/nothing # Install main directories .for d in node_modules _build bower_components plugins static (cd ${WRKSRC} && ${COPYTREE_SHARE} ${d} ${STAGEDIR}${WWWDIR}) .endfor ${INSTALL_SCRIPT} ${WRKSRC}/app/cli.sh ${STAGEDIR}${WWWDIR}/cli ${INSTALL_DATA} ${WRKSRC}/package.json ${STAGEDIR}${WWWDIR} # # Skip files having executable bit ${CHMOD} +x ${WRKSRC}/sandbox/run.sh (cd ${WRKSRC} && ${COPYTREE_SHARE} sandbox ${STAGEDIR}${WWWDIR} "-not ( -type f -perm -a=x )") # now copy all files having an execution bit and preserve to x bit (cd ${WRKSRC} && ${COPYTREE_BIN} sandbox ${STAGEDIR}${WWWDIR} "-type f -perm -a=x") #${MKDIR} ${STAGEDIR}/var/db/grist # Configuration ${INSTALL_DATA} ${FILESDIR}/grist.conf.sample ${STAGEDIR}${PREFIX}/etc/grist.conf.sample post-install: ${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \ ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' | \ ${SED} -E -e '/sample$$/ s#^#@sample #; \ /grist.conf.sample$$/ s#^@sample #@sample(grist,wheel,0600) #;' >> ${TMPPLIST} #@${ECHO_CMD} "@dir(grist,grist) /var/db/grist" >> ${TMPPLIST} @${ECHO_CMD} "@sample(grist,wheel,0600) etc/grist.conf.sample" >> ${TMPPLIST} # To update # 1. comment DISTFILES # 2. Run 'make makesum' # 3. Run 'make make-yarn-cache' # 4. Upload yarn cache # 5. Uncomment DITSFILES # 6. Run 'make makesum' make-yarn-cache: patch ${RM} -r ${WRKDIR}/yarn-offline-cache #cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true yarn --frozen-lockfile --ignore-scripts cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true yarn --frozen-lockfile cd ${WRKDIR} && ${TAR} -c --zstd -f ${PORTNAME}-yarn-offline-cache-${DISTVERSION}${EXTRACT_SUFX} yarn-offline-cache @${ECHO_CMD} upload ${PORTNAME}-yarn-offline-cache-${DISTVERSION}${EXTRACT_SUFX} @${ECHO_CMD} "Please upload the file: scp ${WRKDIR}/${PORTNAME}-yarn-offline-cache-${DISTVERSION}${EXTRACT_SUFX} mfechner@freefall.freebsd.org:public_distfiles/${PORTNAME}/" .include