Index: GIDs =================================================================== --- GIDs +++ GIDs @@ -257,7 +257,7 @@ promscale:*:314: lavinmq:*:315: nut:*:316: -# free: 317 +hedgedoc:*:317: # free: 318 # free: 319 # free: 320 Index: UIDs =================================================================== --- UIDs +++ UIDs @@ -262,7 +262,7 @@ promscale:*:314:314::0:0:Promscale:/nonexistent:/usr/sbin/nologin lavinmq:*:315:315::0:0:LavinMQ user:/nonexistent:/usr/sbin/nologin nut:*:316:316::0:0:Network UPS Tools user:/nonexistent:/usr/sbin/nologin -# free: 317 +hedgedoc:*:317:317::0:0:HedgeDoc user:/nonexistent:/usr/sbin/nologin # free: 318 # free: 319 # free: 320 Index: www/Makefile =================================================================== --- www/Makefile +++ www/Makefile @@ -218,6 +218,7 @@ SUBDIR += h2o SUBDIR += h2o-devel SUBDIR += habari + SUBDIR += hedgedoc SUBDIR += hiawatha SUBDIR += hiawatha-monitor SUBDIR += horde-ansel Index: www/hedgedoc/Makefile =================================================================== --- /dev/null +++ www/hedgedoc/Makefile @@ -0,0 +1,117 @@ +PORTNAME= hedgedoc +DISTVERSION= 1.9.6 +CATEGORIES= www editors +MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/${DISTVERSION}/ \ + https://nodejs.org/download/release/v${NODEJS_VERSION}/:node \ + LOCAL/dch:yarn +DISTFILES+= ${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} \ + ${_YARN_TARBALL}:yarn \ + node-v${NODEJS_VERSION}-headers.tar.gz:node + +MAINTAINER= dch@FreeBSD.org +COMMENT= Web-based online collaborative editor using your preferred SQL DB +WWW= https://hedgedoc.org/ + +LICENSE= AGPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= git:devel/git \ + npm:www/npm-node16 \ + sqlite3:databases/sqlite3 \ + yarn:www/yarn-node16 + +USES= nodejs:16,run,build python:build shebangfix +USE_RC_SUBR= ${PORTNAME} + +SHEBANG_FILES= ${WRKSRC}/bin/* + +PORTSCOUT= site:https://github.com/${PORTNAME}/${PORTNAME}/releases + +USERS= hedgedoc +GROUPS= hedgedoc + +PLIST_SUB+= ARCH=${ARCH:S/aarch64/arm64/:S/amd64/x64/} +OPTIONS_DEFINE= DOCS +OPTIONS_SUB= yes + +NODEJS_VERSION= 16.19.0 + +_YARNRC= ${_YARN_HOME}/yarnrc +_YARN_BIN= ${LOCALBASE}/bin/yarn +_YARN_CACHE= ${_YARN_HOME}/.cache +_YARN_CMD= ${SETENV} ${_YARN_ENV} ${_YARN_BIN} ${_YARN_FLAGS} +_YARN_CWD= ${WRKSRC} +_YARN_ENV= HOME=${_YARN_HOME} NODE_ENV=production \ + NPM_CONFIG_TARBALL=${DISTDIR}/node-v${NODEJS_VERSION}-headers.tar.gz \ + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true PYTHON=${PYTHON_CMD} +_YARN_FLAGS= --skip-integrity-check --noninteractive --no-node-version-check \ + --no-default-rc --cwd ${_YARN_CWD} --cache-folder \ + ${_YARN_CACHE} --use-yarnrc ${_YARNRC} --no-progress --silent \ + --frozen-lockfile +_YARN_HOME= ${WRKDIR}/yarn +_YARN_MIRROR= ${_YARN_HOME}/mirror +_YARN_TARBALL= ${DISTNAME}-yarn-cache.txz + +# helper creates a tarball that pre-populates the yarn cache +# upload to your freefall public_distfiles/ location +tarball: patch + @${RM} -r ${_YARN_MIRROR} + (cd ${WRKSRC} && \ + ${_YARN_CMD} --ignore-scripts) + (cd ${WRKDIR} && \ + ${TAR} cvaf ${_YARN_TARBALL} yarn/mirror) + +rsync: tarball + @rsync -Phivl --inplace ${WRKDIR}/${_YARN_TARBALL} freefall:public_distfiles/ + +post-extract: + @${MV} ${WRKDIR}/${PORTNAME} \ + ${WRKSRC} + +post-patch: + @${MKDIR} ${_YARN_MIRROR} + @${ECHO_CMD} 'yarn-offline-mirror "${_YARN_MIRROR}"' > ${_YARNRC} + +do-build: + (cd ${WRKSRC} && \ + ${_YARN_CMD} --offline install) +# remove temporary build garbage and unnecessary runtime files + (cd ${WRKSRC} && \ + ${RM} -r .babelrc .editorconfig .eslint* .mailmap .remarkrc \ + .yarn* node_modules/*/deps node_modules/*/man node_modules/.bin \ + node_modules/.yarn* node_modules/@mapbox/node-pre-gyp/node_modules/.bin \ + node_modules/bufferutil/binding.gyp node_modules/bufferutil/build/Makefile \ + node_modules/bufferutil/build/Release/.deps node_modules/bufferutil/build/Release/obj.target \ + node_modules/bufferutil/build/config.gypi node_modules/bufferutil/build/node_gyp_bins \ + node_modules/bufferutil/node_modules node_modules/bufferutil/prebuilds \ + node_modules/bufferutil/src node_modules/node-addon-api \ + node_modules/node-gyp* node_modules/sqlite3/build-tmp-napi-v6 \ + node_modules/sqlite3/deps node_modules/sqlite3/node-addon-api \ + node_modules/sqlite3/node_modules node_modules/sqlite3/src \ + node_modules/utf-8-validate/binding.gyp node_modules/utf-8-validate/build/Makefile \ + node_modules/utf-8-validate/build/Release/.deps node_modules/utf-8-validate/prebuilds/ \ + node_modules/utf-8-validate/build/Release/obj.target \ + node_modules/utf-8-validate/build/config.gypi node_modules/utf-8-validate/build/node_gyp_bins \ + node_modules/utf-8-validate/node_modules node_modules/utf-8-validate/src \ + renovate.json test webpack.*) + ${FIND} -E ${WRKSRC}/node_modules -regex '.+\.(Makefile|mk|\.d|targ|info|gyp)$$' \ + -print -delete + ${FIND} ${WRKSRC}/node_modules -name '*.node' -print -exec ${STRIP_CMD} \ + {} + + ${MV} ${WRKSRC}/docs ${WRKDIR}/docs + +do-install: + ${MKDIR} ${STAGEDIR}${ETCDIR} \ + ${STAGEDIR}${DOCSDIR} \ + ${STAGEDIR}${PREFIX}/libexec/${PORTNAME}/bin \ + ${STAGEDIR}/var/db/hedgedoc/uploads + (cd ${WRKSRC} && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/libexec/${PORTNAME}) + (cd ${WRKSRC} && \ + ${COPYTREE_BIN} bin ${STAGEDIR}${PREFIX}/libexec/${PORTNAME}) + (cd ${WRKDIR}/docs && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}) + ${INSTALL_DATA} ${WRKSRC}/config.json.example \ + ${STAGEDIR}${ETCDIR}/config.json.sample + +.include Index: www/hedgedoc/distinfo =================================================================== --- /dev/null +++ www/hedgedoc/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1673868019 +SHA256 (hedgedoc-1.9.6.tar.gz) = dfd0fca006f9075f072df058476ea542adb32b63964afb2985211e1114ab333e +SIZE (hedgedoc-1.9.6.tar.gz) = 61081612 +SHA256 (hedgedoc-1.9.6-yarn-cache.txz) = e281c71d06c226b8c67aee842d845a2fa148ffc8b1654753c383774d05c8ca80 +SIZE (hedgedoc-1.9.6-yarn-cache.txz) = 181553780 +SHA256 (node-v16.19.0-headers.tar.gz) = d0b02ce3d1198d41127daf64f204195252abff6a22da70830aaed846ba6ad864 +SIZE (node-v16.19.0-headers.tar.gz) = 568145 Index: www/hedgedoc/files/hedgedoc.in =================================================================== --- /dev/null +++ www/hedgedoc/files/hedgedoc.in @@ -0,0 +1,54 @@ +#!/bin/sh + +# PROVIDE: hedgedoc +# REQUIRE: DAEMON NETWORKING +# KEYWORD: shutdown + +# Add the following lines to /etc/rc.conf to enable hedgedoc +# +# hedgedoc_enable (bool): set to NO by default +# hedgedoc_config (string): optional full path to config.json +# hedgedoc_port (string): optional HTTP port +# hedgedoc_user (string): optional user to run as +# hedgedoc_group (string): optional user to run as + +. /etc/rc.subr + +name="hedgedoc" +rcvar="hedgedoc_enable" + +load_rc_config $name + +: ${hedgedoc_enable="NO"} +: ${hedgedoc_config:="%%ETCDIR%%/config.json"} +: ${hedgedoc_port:="3000"} +: ${hedgedoc_user:="hedgedoc"} +: ${hedgedoc_group:="hedgedoc"} +: ${hedgedoc_chdir="%%LOCALBASE%%/libexec/hedgedoc"} +: ${hedgedoc_opts="NODE_ENV=production \ + HOME=/var/db/hedgedoc \ + CMD_PORT=${hedgedoc_port} \ + CMD_CONFIG_FILE=${hedgedoc_config}"} + +pidfile="/var/run/${name}/${name}.pid" +hedgedoc_nodejs_pidfile="/var/run/${name}/${name}.node" +start_precmd="hedgedoc_start_precmd" +required_files="${hedgedoc_config}" + +hedgedoc_start_precmd() +{ + if [ ! -d "/var/run/${name}" ]; then + install -d -m 0750 -o ${hedgedoc_user} -g ${hedgedoc_group} "/var/run/${name}" + install -o ${hedgedoc_user} /dev/null ${pidfile} + install -o ${hedgedoc_user} /dev/null ${hedgedoc_nodejs_pidfile} + fi +} + +command="/usr/sbin/daemon" +command_args="-t hedgedoc -T hedgedoc \ + -P ${pidfile} \ + -p ${hedgedoc_nodejs_pidfile} \ + -r -R 15 \ + /usr/bin/env ${hedgedoc_opts} /usr/local/bin/node app.js" + +run_rc_command "$1" Index: www/hedgedoc/files/pkg-message.in =================================================================== --- /dev/null +++ www/hedgedoc/files/pkg-message.in @@ -0,0 +1,40 @@ +[ +{ type: install + message: <