diff --git a/.forgejo/workflows/release-build.yaml b/.forgejo/workflows/release-build.yaml new file mode 100644 index 0000000..471ef80 --- /dev/null +++ b/.forgejo/workflows/release-build.yaml @@ -0,0 +1,81 @@ +on: + push: + tags: + - 'v*' + +jobs: + release-build: + runs-on: x86_64 + container: + image: ubuntu:22.04 + env: + pkgver: 8.1.1 + buildno: 39 + qtver: 5.15.3 + steps: + - name: Environment setup + run: | + cat /etc/os-release + apt-get update + apt-get install -y git make g++ bzip2 sudo patch python2 curl lsb-release p7zip-full qtbase5-dev debhelper + curl -sL https://deb.nodesource.com/setup_16.x | bash - + apt-get install -y nodejs + npm install -g pkg grunt grunt-cli + - name: Getting patches + uses: actions/checkout@v4 + - name: Fetching sources + run: | + git clone https://github.com/ONLYOFFICE/DocumentServer --recursive -b v$pkgver build + git clone https://github.com/ONLYOFFICE/build_tools.git -b v$pkgver.$buildno build/build_tools + git clone https://github.com/ONLYOFFICE/document-server-integration -b v$pkgver.$buildno build/document-server-integration + git clone https://github.com/ONLYOFFICE/document-templates -b v$pkgver.$buildno build/document-templates + git clone https://github.com/ONLYOFFICE/onlyoffice.github.io build/onlyoffice.github.io + git clone https://github.com/ONLYOFFICE/document-server-package.git -b v$pkgver.$buildno build/document-server-package + - name: Applying patches + run: | + git -C build/server apply -v --ignore-space-change --ignore-whitespace $GITHUB_WORKSPACE/server.patch + git -C build/web-apps apply -v --ignore-space-change --ignore-whitespace $GITHUB_WORKSPACE/web-apps.patch + git -C build apply -v --ignore-space-change --ignore-whitespace $GITHUB_WORKSPACE/core_v8-no-enum-constexrp-conversion.patch + - name: Development setup + run: | + mkdir -p build/build_tools/system_qt-$qtver/gcc_64 + ln -s /usr/lib/x86_64-linux-gnu build/build_tools/system_qt-$qtver/gcc_64/lib + ln -s /usr/lib/x86_64-linux-gnu/qt5/bin build/build_tools/system_qt-$qtver/gcc_64/bin + ln -s /usr/lib/x86_64-linux-gnu/qt5/plugins build/build_tools/system_qt-$qtver/gcc_64/plugins + cd build/build_tools/tools/linux + python2 ./deps.py + - name: Build server + run: | + cd build/build_tools + python2 ./configure.py --update 0 --module "server" --qt-dir $(pwd)/system_qt-$qtver + python2 ./make.py + - name: Build package + run: | + cd build/document-server-package + PRODUCT_VERSION=$pkgver BUILD_NUMBER=$buildno make deb + - name: Package upload + uses: forgejo/upload-artifact@v3 + with: + name: documentserver-deb + path: build/document-server-package/deb/onlyoffice-documentserver_*.deb + release-deploy: + needs: [release-build] + runs-on: x86_64 + container: + image: alpine:latest + env: + CI_RPM_REPO: 'https://ayakael.net/api/packages/forge/' + FORGE_REPO_TOKEN: ${{ secrets.FORGE_REPO_TOKEN }} + FORGE_REPO_PRIVKEY: ${{ secrets.FORGE_REPO_PRIVKEY }} + FORGE_REPO_USER: ${{ vars.FORGE_REPO_USER }} + steps: + - name: Setting up environment + run: apk add nodejs curl findutils git gawk bash + - name: Repo pull + uses: actions/checkout@v4 + - name: Package download + uses: forgejo/download-artifact@v3 + - name: Package deployment + run: curl --user ${{ vars.FORGE_REPO_USER }}:${{ secrets.FORGE_REPO_PRIVKEY }} --upload-file */onlyoffice-documentserver_*.deb https://forgejo.example.com/api/packages/ilot/debian/pool/jammy/main/upload + + diff --git a/.forgejo/workflows/test-build.yaml b/.forgejo/workflows/test-build.yaml new file mode 100644 index 0000000..c315e34 --- /dev/null +++ b/.forgejo/workflows/test-build.yaml @@ -0,0 +1,61 @@ +on: + pull_request: + types: [ assigned, opened, synchronize, reopened ] + +jobs: + test-build: + runs-on: x86_64 + container: + image: ubuntu:22.04 + env: + pkgver: 8.1.1 + buildno: 39 + qtver: 5.15.3 + steps: + - name: Environment setup + run: | + cat /etc/os-release + apt-get update + apt-get install -y git make g++ bzip2 sudo patch python2 curl lsb-release p7zip-full qtbase5-dev debhelper + curl -sL https://deb.nodesource.com/setup_16.x | bash - + apt-get install -y nodejs + npm install -g pkg grunt grunt-cli + - name: Getting patches + uses: actions/checkout@v4 + - name: Fetching sources + run: | + git clone https://github.com/ONLYOFFICE/DocumentServer --recursive -b v$pkgver build + git clone https://github.com/ONLYOFFICE/build_tools.git -b v$pkgver.$buildno build/build_tools + git clone https://github.com/ONLYOFFICE/document-server-integration -b v$pkgver.$buildno build/document-server-integration + git clone https://github.com/ONLYOFFICE/document-templates -b v$pkgver.$buildno build/document-templates + git clone https://github.com/ONLYOFFICE/onlyoffice.github.io build/onlyoffice.github.io + git clone https://github.com/ONLYOFFICE/document-server-package.git -b v$pkgver.$buildno build/document-server-package + - name: Applying patches + run: | + git -C build/server apply -v --ignore-space-change --ignore-whitespace $GITHUB_WORKSPACE/server.patch + git -C build/web-apps apply -v --ignore-space-change --ignore-whitespace $GITHUB_WORKSPACE/web-apps.patch + git -C build apply -v --ignore-space-change --ignore-whitespace $GITHUB_WORKSPACE/core_v8-no-enum-constexrp-conversion.patch + - name: Development setup + run: | + mkdir -p build/build_tools/system_qt-$qtver/gcc_64 + ln -s /usr/lib/x86_64-linux-gnu build/build_tools/system_qt-$qtver/gcc_64/lib + ln -s /usr/lib/x86_64-linux-gnu/qt5/bin build/build_tools/system_qt-$qtver/gcc_64/bin + ln -s /usr/lib/x86_64-linux-gnu/qt5/plugins build/build_tools/system_qt-$qtver/gcc_64/plugins + cd build/build_tools/tools/linux + python2 ./deps.py + - name: Build server + run: | + cd build/build_tools + python2 ./configure.py --update 0 --module "server" --qt-dir $(pwd)/system_qt-$qtver + python2 ./make.py + - name: Build package + run: | + cd build/document-server-package + PRODUCT_VERSION=$pkgver BUILD_NUMBER=$buildno make deb + - name: Package upload + uses: forgejo/upload-artifact@v3 + with: + name: documentserver-deb + path: build/document-server-package/deb/onlyoffice-documentserver_*.deb + + diff --git a/core_v8-no-enum-constexrp-conversion.patch b/core_v8-no-enum-constexrp-conversion.patch new file mode 100644 index 0000000..da56ce3 --- /dev/null +++ b/core_v8-no-enum-constexrp-conversion.patch @@ -0,0 +1,34 @@ +diff --git a/core/Common/3dParty/v8/tools/no-enum-constexrp-conversion.patch b/core/Common/3dParty/v8/tools/no-enum-constexrp-conversion.patch +new file mode 100644 +index 0000000000..5a1a8067a6 +--- /dev/null ++++ b/core/Common/3dParty/v8/tools/no-enum-constexrp-conversion.patch +@@ -0,0 +1,14 @@ ++diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn ++index 5ea2f213..29fa7742 100644 ++--- a/build/config/compiler/BUILD.gn +++++ b/build/config/compiler/BUILD.gn ++@@ -1548,6 +1548,9 @@ config("default_warnings") { ++ # TODO(https://crbug.com/989932): Evaluate and possibly enable. ++ "-Wno-implicit-int-float-conversion", ++ +++ "-Wno-enum-constexpr-conversion", +++ +++ ++ # TODO(https://crbug.com/999886): Clean up, enable. ++ "-Wno-final-dtor-non-final-class", ++ +diff --git a/build_tools/scripts/core_common/modules/v8_89.py b/core/build_tools/core_common/modules/v8_89.py +index 9643263..35ee1fe 100644 +--- a/build_tools/scripts/core_common/modules/v8_89.py ++++ b/build_tools/scripts/core_common/modules/v8_89.py +@@ -150,6 +150,8 @@ def make(): + "use_custom_libcxx=false", + "treat_warnings_as_errors=false"] + ++ base.cmd("patch", ["-p1", "-i", "../../v8/tools/no-enum-constexrp-conversion.patch"]) ++ + if config.check_option("platform", "linux_64"): + base.cmd2("gn", ["gen", "out.gn/linux_64", make_args(gn_args, "linux")]) + base.cmd("ninja", ["-C", "out.gn/linux_64"]) + diff --git a/server.patch b/server.patch index 5276ebc..03c4856 100644 --- a/server.patch +++ b/server.patch @@ -57,7 +57,7 @@ diff --git a/DocService/sources/server.js b/DocService/sources/server.js index 76303af9..9d2e6888 100644 --- a/DocService/sources/server.js +++ b/DocService/sources/server.js -@@ -109,7 +109,7 @@ if (!(cfgTokenEnableBrowser && cfgTokenEnableRequestInbox && cfgTokenEnableReque +@@ -129,7 +129,7 @@ if (!(cfgTokenEnableBrowser && cfgTokenEnableRequestInbox && cfgTokenEnableReque } updateLicense(); @@ -65,7 +65,8 @@ index 76303af9..9d2e6888 100644 +// fs.watchFile(cfgLicenseFile, updateLicense); setInterval(updateLicense, 86400000); - if (config.has('services.CoAuthoring.server.static_content')) { + try { + diff --git a/FileConverter/sources/convertermaster.js b/FileConverter/sources/convertermaster.js index 46615032..6ce2d3e6 100644 --- a/FileConverter/sources/convertermaster.js