diff options
Diffstat (limited to 'www/onlyoffice-documentserver/Makefile')
-rw-r--r-- | www/onlyoffice-documentserver/Makefile | 159 |
1 files changed, 91 insertions, 68 deletions
diff --git a/www/onlyoffice-documentserver/Makefile b/www/onlyoffice-documentserver/Makefile index d887e2e9f95f..a41f0027e3d5 100644 --- a/www/onlyoffice-documentserver/Makefile +++ b/www/onlyoffice-documentserver/Makefile @@ -1,12 +1,12 @@ PORTNAME= onlyoffice-documentserver DISTVERSIONPREFIX= v -DISTVERSION= 9.0.2.16 +DISTVERSION= 9.0.4 CATEGORIES= www MASTER_SITES+= LOCAL/mikael/v8/:source1 \ - https://nodejs.org/dist/v${NODE_VERSION_PKGFETCH}/:source3 \ + https://nodejs.org/dist/v${PKGFETCH_NODE_VERSION}/:source3 \ SF/optipng/OptiPNG/optipng-0.7.8/:source4 DISTFILES+= v8-8.9.255.25_all.tar.gz:source1 \ - node-v${NODE_VERSION_PKGFETCH}.tar.gz:source3 \ + node-v${PKGFETCH_NODE_VERSION}.tar.gz:source3 \ optipng-0.7.8.tar.gz:source4 MAINTAINER= fsbruva@yahoo.com @@ -16,7 +16,13 @@ WWW= https://www.onlyoffice.com/ LICENSE= AGPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE.txt -BROKEN_i386= fails to build +ONLY_FOR_ARCHS= aarch64 amd64 +ONLY_FOR_ARCHS_REASON= "Upstream only supports amd64 and arm64" + +# node version used with "npm install @yao-pkg/pkg@6.6.0" +# keep in sync with patch-build__tools_scripts_build__server.py and patch-document-server-package_Makefile +PKGFETCH_NODE_VERSION= 20.19.4 +DS_BUILD= 50 BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \ boost-libs>0:devel/boost-libs \ @@ -24,16 +30,17 @@ BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \ gn:devel/gn \ java:java/openjdk11 \ ninja:devel/ninja \ - npm:www/npm-node20 \ - ${LOCALBASE}/lib/libcrypto.a:security/openssl + npm:www/npm-node20 + LIB_DEPENDS= libboost_regex.so:devel/boost-libs \ libetonyek-0.1.so:graphics/libetonyek01 \ libcurl.so:ftp/curl \ libharfbuzz.so:print/harfbuzz \ libiconv.so:converters/libiconv \ - libicutu.so:devel/icu \ + libicuuc.so:devel/icu \ libodfgen-0.1.so:textproc/libodfgen01 \ librevenge-0.0.so:textproc/librevenge + RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}supervisor>0:sysutils/py-supervisor@${PY_FLAVOR} \ ${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss \ gsed:textproc/gsed \ @@ -42,55 +49,60 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}supervisor>0:sysutils/py-supervisor@${PY_FLA rabbitmq>0:net/rabbitmq \ webfonts>=0:x11-fonts/webfonts -USES= autoreconf:build dos2unix fakeroot gmake gnome iconv localbase nodejs:22,build pkgconfig \ - python:3.9+,build qt:5 trigger -USE_QT= qmake:build +USES= autoreconf:build dos2unix fakeroot gmake gnome iconv localbase pkgconfig \ + python:3.9+,build qt:5 ssl:build trigger + +DOS2UNIX_FILES= document-server-package/common/documentserver/nginx/includes/http-common.conf.m4 + USE_GITHUB= yes GH_ACCOUNT= ONLYOFFICE GH_PROJECT= DocumentServer -GH_TAGNAME= v${DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/} -GH_TUPLE= ONLYOFFICE:core:v${DISTVERSION}:core/core \ - ONLYOFFICE:core-fonts:v${DISTVERSION}:corefonts/core-fonts \ - ONLYOFFICE:dictionaries:v${DISTVERSION}:dictionaries/dictionaries \ - ONLYOFFICE:document-server-integration:v${DISTVERSION}:dsi/document-server-integration \ - ONLYOFFICE:document-templates:v${DISTVERSION}:dt/document-templates \ - ONLYOFFICE:sdkjs:v${DISTVERSION}:sdkjs/sdkjs \ - ONLYOFFICE:server:v${DISTVERSION}:server/server \ - ONLYOFFICE:web-apps:v${DISTVERSION}:webapps/web-apps \ - ONLYOFFICE:build_tools:v${DISTVERSION}:buildtools/build_tools \ +DS_TAGNAME= ${DISTVERSIONPREFIX}${DISTVERSION}.${DS_BUILD} +GH_TUPLE= ONLYOFFICE:core:${DS_TAGNAME}:core/core \ + ONLYOFFICE:core-fonts:${DS_TAGNAME}:corefonts/core-fonts \ + ONLYOFFICE:dictionaries:${DS_TAGNAME}:dictionaries/dictionaries \ + ONLYOFFICE:document-server-integration:${DS_TAGNAME}:dsi/document-server-integration \ + ONLYOFFICE:document-templates:${DS_TAGNAME}:dt/document-templates \ + ONLYOFFICE:sdkjs:${DS_TAGNAME}:sdkjs/sdkjs \ + ONLYOFFICE:server:${DS_TAGNAME}:server/server \ + ONLYOFFICE:web-apps:${DS_TAGNAME}:webapps/web-apps \ + ONLYOFFICE:build_tools:${DS_TAGNAME}:buildtools/build_tools \ ONLYOFFICE:DocumentBuilder:626d1e44db3d06ceb8298215a67ef0475912d89a:document_builder/DocumentBuilder \ ONLYOFFICE:onlyoffice.github.io:b26d001664d771df4f663d2d3ba7dd4a188b6cab:sdkjs_plugins_v1/onlyoffice.github.io \ - ONLYOFFICE:document-server-package:v${DISTVERSION}:dsp/document-server-package \ + ONLYOFFICE:document-server-package:${DS_TAGNAME}:dsp/document-server-package \ jasenhuang:katana-parser:be6df45:jasenhuang_katana/core/Common/3dParty/html/katana-parser \ google:gumbo-parser:aa91b27:google_gumbo/core/Common/3dParty/html/gumbo-parser \ + google:brotli:a47d747:google_brotli/core/Common/3dParty/brotli/brotli \ hunspell:hyphen:73dd296:hunspell_hyphen/core/Common/3dParty/hyphen/hyphen \ mity:md4c:481fbfb:mity_md4c/core/Common/3dParty/md/md4c \ - fsbruva:onlyoffice-DS-pkg-cache:v${NODE_VERSION_PKGFETCH}:pkg_cache/ \ - fsbruva:onlyoffice-DS-npm-cache:v${DISTVERSION}-20250701:npm_cache/ + fsbruva:onlyoffice-DS-pkg-cache:v${PKGFETCH_NODE_VERSION}:pkg_cache/ \ + fsbruva:onlyoffice-DS-npm-cache:${DS_TAGNAME}-20250831:npm_cache/ -OPTIONS_SINGLE= DB -OPTIONS_SINGLE_DB= MYSQL PGSQL -OPTIONS_DEFAULT= PGSQL +USE_LDCONFIG= yes +USE_QT= qmake:build -MYSQL_USES+= mysql:client -PGSQL_USES+= pgsql -PGSQL_VARS= WANT_PGSQL=client +MAKE_ENV= BUILD_NUMBER=${DS_BUILD} \ + npm_package_config_node_gyp_nodedir=${LOCALBASE} \ + npm_package_config_node_gyp_python=${PYTHON_CMD} \ + PKG_CACHE_PATH=${WRKDIR}/.pkg-cache \ + PRODUCT_VERSION=${DISTVERSION} \ + PYTHON=${PYTHON_CMD} -BINARY_ALIAS= python=${PYTHON_CMD} \ - strip=true -USE_LDCONFIG= yes +# Don't create __pycache__ directory when executing node-gyp +# This is a workaround to avoid filesystem violations during poudriere build +MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1 -WWWDIR= ${PREFIX}/www/onlyoffice -ETCDIR= ${PREFIX}/etc/onlyoffice +CONFLICTS_BUILD= devel/googletest -DS_USERNAME= onlyoffice -DS_GROUPNAME= onlyoffice +# do not strip docservice, converter, metrics and json +STRIP= -USERS= ${DS_USERNAME} -GROUPS= ${DS_GROUPNAME} +ETCDIR= ${PREFIX}/etc/onlyoffice +WWWDIR= ${PREFIX}/www/onlyoffice + +BINARY_ALIAS= python=${PYTHON_CMD} \ + strip=true -PLIST_SUB= DS_GROUPNAME=${DS_GROUPNAME} \ - DS_USERNAME=${DS_USERNAME} SUB_FILES= pkg-message \ onlyoffice.newsyslog.sample SUB_LIST= DS_GROUPNAME=${DS_GROUPNAME} \ @@ -99,32 +111,32 @@ SUB_LIST= DS_GROUPNAME=${DS_GROUPNAME} \ PREFIX=${PREFIX} \ WWWDIR=${WWWDIR} -# node version used with "npm install @yao-pkg/pkg@6.5.1" -# keep in sync with patch-build__tools_scripts_build__server.py and patch-document-server-package_Makefile -NODE_VERSION_PKGFETCH= 20.19.1 +DS_USERNAME= onlyoffice +DS_GROUPNAME= onlyoffice -MAKE_ENV= BUILD_NUMBER="36" \ - PKG_CACHE_PATH=${WRKDIR}/.pkg-cache \ - PRODUCT_VERSION=${DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/} \ - BUILD_NUMBER=${DISTVERSION:C/^[0-9]+\.[0-9]+\.[0-9]+\.([0-9]+)/\1/} +USERS= ${DS_USERNAME} +GROUPS= ${DS_GROUPNAME} -# Don't create __pycache__ directory when executing node-gyp -# This is a workaround to avoid filesystem violations during poudriere build -MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1 +PLIST_SUB= DS_GROUPNAME=${DS_GROUPNAME} \ + DS_USERNAME=${DS_USERNAME} -DOS2UNIX_FILES= document-server-package/common/documentserver/nginx/includes/http-common.conf.m4 +OPTIONS_DEFAULT= PGSQL +OPTIONS_SINGLE= DB +OPTIONS_SINGLE_DB= MYSQL PGSQL -CONFLICTS_BUILD=devel/googletest +MYSQL_USES+= mysql:client +PGSQL_USES+= pgsql +PGSQL_VARS= WANT_PGSQL=client .include <bsd.port.pre.mk> .if ${ARCH} == aarch64 BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} -BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \ - cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \ +BINARY_ALIAS+= ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \ c++=${LOCALBASE}/bin/clang++${LLVM_DEFAULT} \ - ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \ - nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT} \ - ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} + cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \ + cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \ + ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} \ + nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT} .endif post-extract: @@ -132,7 +144,7 @@ post-extract: @${LN} -s ${WRKSRC_npm_cache} ${WRKDIR}/.npm @${LN} -s ${WRKSRC_pkg_cache} ${WRKDIR}/.pkg-cache - @${CP} ${DISTDIR}/node-v${NODE_VERSION_PKGFETCH}.tar.gz ${WRKDIR}/.pkg-cache/node + @${CP} ${DISTDIR}/node-v${PKGFETCH_NODE_VERSION}.tar.gz ${WRKDIR}/.pkg-cache/node @${MKDIR} ${WRKSRC}/sdkjs-plugins/v1 @${CP} ${WRKSRC}/onlyoffice.github.io/sdkjs-plugins/v1/* ${WRKSRC}/sdkjs-plugins/v1 @@ -147,7 +159,7 @@ post-extract: ${WRKSRC}/document-server-package/common/documentserver/supervisor .endfor -post-patch: +pre-configure: @${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' \ ${WRKSRC}/build_tools/tools/freebsd/automate.py \ ${WRKSRC}/core/Apple/IWork.pro \ @@ -164,7 +176,8 @@ post-patch: ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-update-securelink.sh.m4 \ ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-converter.conf \ ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-docservice.conf \ - ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-metrics.conf + ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-metrics.conf \ + ${WRKSRC}/server/Metrics/patches/modern-syslog+1.2.0.patch @${REINPLACE_CMD} -e 's|%%CC%%|${CC}|' -e 's|%%CXX%%|${CXX}|' \ ${WRKSRC}/core/Common/3dParty/v8_89/v8/build/toolchain/gcc_toolchain.gni \ ${WRKSRC}/core/Common/base.pri @@ -174,6 +187,9 @@ post-patch: ${WRKSRC}/build_tools/scripts/build_js.py \ ${WRKSRC}/build_tools/scripts/build_server.py \ ${WRKSRC}/document-server-package/Makefile + @${REINPLACE_CMD} 's|%%PKGFETCH_NODE_MAJOR_VERSION%%|${PKGFETCH_NODE_VERSION:C/^([0-9]+)\..*/\1/}|' \ + ${WRKSRC}/build_tools/scripts/build_server.py \ + ${WRKSRC}/document-server-package/Makefile @${REINPLACE_CMD} -e 's|/var/lib|/var/db|' -e 's|/var/www|${LOCALBASE}/www|' \ -e 's|/usr/share|${LOCALBASE}/share|' -e 's|/etc|${LOCALBASE}/etc|' \ ${WRKSRC}/server/Common/config/production-freebsd.json \ @@ -184,6 +200,7 @@ post-patch: ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-flush-cache.sh.m4 \ ${WRKSRC}/document-server-package/Makefile @${RM} ${WRKSRC}/web-apps/build/patches/optipng-bin+5.1.0.patch.orig + @${RM} ${WRKSRC}/server/Metrics/patches/modern-syslog+1.2.0.patch.orig @${FIND} ${WRKSRC}/server -type f -name npm-shrinkwrap.json -delete @@ -202,15 +219,19 @@ do-build: @cd ${WRKSRC}/server ; ${SETENV} ${MAKE_ENV} npm install grunt-cli @cd ${WRKSRC}/server ; ${SETENV} ${MAKE_ENV} npm install grunt + @cd ${WRKSRC}/server/Metrics ; ${SETENV} ${MAKE_ENV} npm install modern-syslog@1.2.0 --ignore-scripts + @cd ${WRKSRC}/server/Metrics ; ${SETENV} ${MAKE_ENV} npm install patch-package + @cd ${WRKSRC}/server/Metrics ; node_modules/.bin/patch-package + @cd ${WRKSRC}/server/Metrics/node_modules/modern-syslog ; ${SETENV} ${MAKE_ENV} ${GMAKE} @cd ${WRKSRC}/sdkjs ; ${SETENV} ${MAKE_ENV} npm install grunt-cli @cd ${WRKSRC}/sdkjs ; ${SETENV} ${MAKE_ENV} npm install grunt @${MKDIR} ${WRKSRC}/yao-pkg @${CP} ${FILESDIR}/package* ${WRKSRC}/yao-pkg - @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.5.1 + @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.6.0 @cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_lib-es5_build.js || ${TRUE} - @cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_patches_node.v${NODE_VERSION_PKGFETCH}.cpp.patch || ${TRUE} + @cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_patches_node.v${PKGFETCH_NODE_VERSION}.cpp.patch || ${TRUE} cd ${WRKSRC}/build_tools/tools/freebsd ; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} automate.py cd ${WRKSRC}/document-server-package ; ${SETENV} ${MAKE_ENV} ${GMAKE} freebsd @@ -236,7 +257,9 @@ do-install: cd ${WRKSRC}/document-server-package/common/documentserver/supervisor && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver/supervisor "-name *\.conf" cd ${WRKSRC}/document-server-package/common/documentserver/logrotate && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver/logrotate "-name *\.conf" @${CP} ${WRKSRC}/document-server-package/common/documentserver/nginx/ds-ssl.conf.tmpl ${WRKSRC}/document-server-package/common/documentserver/nginx/ds-ssl.conf -.for f in ds.conf ds-ssl.conf includes/http-common.conf includes/ds-common.conf includes/ds-docservice.conf includes/ds-letsencrypt.conf includes/ds-mime.types.conf +.for f in ds.conf ds-ssl.conf includes/http-common.conf includes/ds-common.conf \ + includes/ds-docservice.conf includes/ds-letsencrypt.conf \ + includes/ds-mime.types.conf ${INSTALL_DATA} ${WRKSRC}/document-server-package/common/documentserver/nginx/${f} ${STAGEDIR}${ETCDIR}/documentserver/nginx/${f}.sample .endfor @echo "# Production ds-cache.conf is created automatically by documentserver-flush-cache.sh" > ${STAGEDIR}${ETCDIR}/documentserver/nginx/includes/ds-cache.conf.sample @@ -262,11 +285,11 @@ do-install: create-caches-tarball: # do some cleanup first ${RM} -r ${WRKDIR}/.npm/_logs ${WRKDIR}/.npm/_update-notifier-last-checked ${WRKDIR}/.cache/yarn/v6/.tmp ${WRKDIR}/.cache/node-gyp -# ${FIND} ${WRKDIR}/.cache -type f -perm 755 -exec file {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM} - ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 755 -exec file {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM} - ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 644 -exec file {} \; | ${EGREP} -v "${NODE_VERSION_PKGFETCH}" | ${EGREP} "built-v|node-v" | ${EGREP} "tar.gz|sha256sum" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM} +# ${FIND} ${WRKDIR}/.cache -type f -perm 755 -exec ${FILE} {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM} + ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 755 -exec ${FILE} {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM} + ${FIND} ${WRKDIR}/.pkg-cache -type f -perm 644 -exec ${FILE} {} \; | ${EGREP} -v "${PKGFETCH_NODE_VERSION}" | ${EGREP} "built-v|node-v" | ${EGREP} "tar.gz|sha256sum" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM} - cd ${WRKDIR} && \ - ${TAR} czf ${PORTNAME}-${DISTVERSION}_`date +%Y%m%d`-npm-cache.tar.gz .npm .pkg-cache +# cd ${WRKDIR} && \ +# ${TAR} czf ${PORTNAME}-${DISTVERSION}_`date +%Y%m%d`-npm-cache.tar.gz .npm .pkg-cache .include <bsd.port.post.mk> |