From da80082b3ddf15dc8283b3ed382d0f0dd0ec7865 Mon Sep 17 00:00:00 2001 From: Rene Engelhard Date: Mon, 1 Jun 2026 22:32:27 +0200 Subject: [PATCH] Import libreoffice_26.2.4.2-1.debian.tar.xz [dgit import tarball libreoffice 4:26.2.4.2-1 libreoffice_26.2.4.2-1.debian.tar.xz] --- debian/README | 83 + debian/README.Debian | 307 + debian/README.Debian-source | 103 + debian/README.qa | 59 + debian/branding/progress.conf | 1 + debian/bug-presubj | 61 + debian/changelog | Bin 0 -> 738505 bytes debian/control | Bin 0 -> 240134 bytes debian/control.cil.in | 56 + debian/control.evolution.in | 18 + debian/control.firebird.in | 12 + debian/control.fonts.in | 13 + debian/control.gtk3.in | 63 + debian/control.gtk4.in | 18 + debian/control.help.in | 18 + debian/control.in | 1076 ++++ debian/control.kf5.in | 17 + debian/control.kf6.in | 16 + debian/control.lang.in | 29 + debian/control.librelogo.in | 22 + debian/control.lokit.in | 12 + debian/control.mediawiki.in | 18 + debian/control.nlpsolver.in | 15 + debian/control.plasma.in | 13 + debian/control.postgresql.in | 17 + debian/control.qt5.in | 17 + debian/control.qt6.in | 15 + debian/control.reportbuilder.in | 73 + debian/control.rust.in | 28 + debian/control.sdk.in | 70 + debian/control.test-packages.in | 18 + debian/control.ure.in | 180 + debian/copyright | 361 ++ debian/liblibreoffice-java.lintian-overrides | 5 + debian/liblibreoffice-java.poms | 32 + debian/liblibreofficekitgtk.links | 1 + debian/libofficebean-java.poms | 28 + debian/libreoffice-base-drivers.NEWS | 14 + ...libreoffice-base-drivers.lintian-overrides | 2 + debian/libreoffice-base-nogui.bug-control | 2 + debian/libreoffice-base-nogui.mime | 11 + debian/libreoffice-base.NEWS | 14 + debian/libreoffice-base.bug-control | 2 + debian/libreoffice-base.lintian-overrides | 3 + debian/libreoffice-base.manpages | 1 + debian/libreoffice-base.mime | 11 + .../libreoffice-calc-nogui.lintian-overrides | 1 + debian/libreoffice-calc-nogui.mime | 37 + debian/libreoffice-calc.bug-control | 1 + debian/libreoffice-calc.config.in | 10 + debian/libreoffice-calc.lintian-overrides | 2 + debian/libreoffice-calc.manpages | 2 + debian/libreoffice-calc.mime | 37 + debian/libreoffice-calc.postinst.in | 11 + debian/libreoffice-calc.templates | 10 + debian/libreoffice-common.links.in | 38 + debian/libreoffice-common.lintian-overrides | 2 + debian/libreoffice-common.maintscript | 5 + debian/libreoffice-common.manpages | 4 + debian/libreoffice-common.postinst.in | 29 + debian/libreoffice-common.postrm.in | 26 + debian/libreoffice-common.preinst.in | 30 + debian/libreoffice-common.triggers.in | 2 + debian/libreoffice-common.ucf | 1 + debian/libreoffice-core-nogui.bug-control | 1 + debian/libreoffice-core-nogui.bug-script.in | 16 + debian/libreoffice-core.NEWS | 13 + debian/libreoffice-core.bug-control | 2 + debian/libreoffice-core.bug-script.in | 20 + debian/libreoffice-core.postrm.in | 13 + debian/libreoffice-dev-doc.links | 1 + debian/libreoffice-draw-nogui.bug-control | 1 + debian/libreoffice-draw-nogui.mime | 13 + debian/libreoffice-draw.bug-control | 1 + debian/libreoffice-draw.lintian-overrides | 1 + debian/libreoffice-draw.manpages | 1 + debian/libreoffice-draw.mime | 13 + debian/libreoffice-evolution.bug-control | 1 + debian/libreoffice-help-common.links | 3 + debian/libreoffice-help.lintian-overrides.in | 15 + debian/libreoffice-impress-nogui.bug-control | 1 + debian/libreoffice-impress-nogui.mime | 25 + debian/libreoffice-impress.bug-control | 1 + debian/libreoffice-impress.bug-script.in | 3 + debian/libreoffice-impress.lintian-overrides | 1 + debian/libreoffice-impress.manpages | 1 + debian/libreoffice-impress.mime | 25 + debian/libreoffice-math-nogui.bug-control | 1 + debian/libreoffice-math-nogui.mime | 14 + debian/libreoffice-math.bug-control | 1 + debian/libreoffice-math.lintian-overrides | 1 + debian/libreoffice-math.manpages | 1 + debian/libreoffice-math.mime | 14 + debian/libreoffice-nlpsolver.bug-control | 1 + debian/libreoffice-nlpsolver.bug-script.in | 2 + .../libreoffice-nlpsolver.lintian-overrides | 3 + debian/libreoffice-report-builder.bug-control | 1 + .../libreoffice-rust-uno-example.install.in | 1 + ...eoffice-script-provider-python.bug-control | 1 + debian/libreoffice-sdbc-firebird.NEWS | 21 + .../libreoffice-sdbc-firebird.bug-script.in | 10 + ...ibreoffice-sdbc-firebird.lintian-overrides | 2 + debian/libreoffice-wiki-publisher.bug-control | 1 + .../libreoffice-wiki-publisher.bug-script.in | 2 + ...breoffice-wiki-publisher.lintian-overrides | 2 + debian/libreoffice-writer-nogui.bug-control | 1 + debian/libreoffice-writer-nogui.mime | 37 + debian/libreoffice-writer.bug-control | 1 + debian/libreoffice-writer.lintian-overrides | 1 + debian/libreoffice-writer.manpages | 3 + debian/libreoffice-writer.mime | 37 + debian/libreoffice.bug-control | 2 + debian/libreofficekit-dev.docs | 1 + debian/libreofficekit-dev.links | 1 + debian/librust-rust-uno-dev.install.in | 1 + debian/libuno-cppu3t64.lintian-overrides | 2 + debian/libuno-cppu3t64.symbols | 11 + ...buno-cppuhelpergcc3-3t64.lintian-overrides | 3 + debian/libuno-cppuhelpergcc3-3t64.symbols | 18 + ...o-purpenvhelpergcc3-3t64.lintian-overrides | 2 + debian/libuno-purpenvhelpergcc3-3t64.symbols | 7 + debian/libuno-sal3t64.lintian-overrides | 2 + debian/libuno-sal3t64.symbols.in | 43 + ...ibuno-salhelpergcc3-3t64.lintian-overrides | 2 + debian/libuno-salhelpergcc3-3t64.symbols.in | 11 + debian/libunoloader-java.poms | 28 + ...dd-initial-documentation-for-Rust-UNO.diff | 440 ++ debian/patches/adapt-for-new-carlito.diff | 74 + .../patches/appstream-ignore-startcenter.diff | 10 + debian/patches/arm-fp-mode.diff | 15 + .../patches/build-against-shared-lpsolve.diff | 27 + debian/patches/cargo-build-flag.diff | 11 + debian/patches/cppunit-optional.diff | 213 + debian/patches/debian-debug.diff | 47 + .../debian-hardened-buildflags-CPPFLAGS.diff | 37 + ...ldflags-no-LO-fstack-protector-strong.diff | 32 + debian/patches/debian-opt.diff | 26 + debian/patches/disable-flaky-tests.diff | 157 + ...java-in-odk-build-examples-on-zero-vm.diff | 58 + ...sable-shortcuts_tab_navigation-uitest.diff | 34 + .../disable-uitest-xmlsecurity-gpg.diff | 20 + .../patches/disable-unused-test-programs.diff | 70 + debian/patches/disableClassPathURLCheck.diff | 10 + ...not-abort-on-NON_APPLICATION_FONT_USE.diff | 14 + debian/patches/do-not-hide-test-output.diff | 99 + debian/patches/dont-touch-urd.diff | 80 + debian/patches/fix-32bits-test-build.diff | 92 + debian/patches/fix-flaky-bridgetest.diff | 38 + debian/patches/fix-internal-hsqldb-build.diff | 45 + .../fix-rust_uno-path-for-cargo-wrapper.diff | 33 + debian/patches/fix-system-lpsolve-build.diff | 31 + debian/patches/help-msg-add-package-info.diff | 13 + debian/patches/hide-math-desktop-file.patch | 15 + debian/patches/install-fixes.diff | 166 + debian/patches/javadoc-optional.diff | 151 + debian/patches/jdbc-driver-classpaths.diff | 35 + .../patches/jdk-minimal-and-zero-paths.diff | 61 + debian/patches/jurt-soffice-location.diff | 20 + debian/patches/lpsolve-fPIC.diff | 11 + .../make-package-modules-not-suck.diff | 210 + debian/patches/mediwiki-oor-replace.diff | 51 + .../patches/mention-java-common-package.diff | 35 + .../moreIconsDialog-accesses-internet.diff | 21 + debian/patches/no-opencl-per-default.diff | 26 + debian/patches/no-packagekit-per-default.diff | 21 + ...ilter-config-only-if-enabled-in-orcus.diff | 38 + debian/patches/pdfium-ports.diff | 97 + .../remove-JITC_PROCESSOR_TYPE-setting.diff | 72 + .../patches/reportdesign-mention-package.diff | 13 + debian/patches/rust-uno-DEB_CARGO_CRATE.diff | 13 + .../patches/search-usr-share-for-images.diff | 137 + debian/patches/sensible-lomua.diff | 50 + debian/patches/series | 55 + debian/patches/skia-gcc-no-musttail.diff | 48 + debian/patches/splits-adapt-registry.diff | 168 + .../strict-firebird-api-version-check.diff | 29 + debian/patches/system-crates.diff | 89 + .../system-officeotron-and-odfvalidator.diff | 16 + ...se-mariadb-java-instead-of-mysql-java.diff | 59 + .../we-dont-have-the-needed-fonts.diff | 305 + ...-on-dicts-as-non-extensions-in-checks.diff | 26 + debian/po/POTFILES.in | 2 + debian/po/ar.po | 47 + debian/po/ca.po | 49 + debian/po/cs.po | 47 + debian/po/de.po | 45 + debian/po/es.po | 50 + debian/po/fr.po | 46 + debian/po/gl.po | 49 + debian/po/nl.po | 50 + debian/po/pt.po | 50 + debian/po/pt_BR.po | 48 + debian/po/templates.pot | 41 + debian/python3-access2base.links | 1 + debian/python3-uno.NEWS | 11 + debian/python3-uno.lintian-overrides | 5 + debian/rules | 5098 +++++++++++++++++ debian/scripts/get_libebook_dep.sh | 33 + debian/scripts/gid2pkgdirs.sh | 177 + debian/scripts/joinctrl.py | 66 + debian/scripts/locale-gen | 32 + debian/scripts/move-if-change | 32 + debian/scripts/stat_pos.sh | 32 + debian/scripts/uupdate-component-tarball.sh | 34 + debian/shell-lib-extensions.sh | 12 + debian/shell-lib-lool.sh | 5 + debian/shlibs.override.icu | 5 + debian/shlibs.override.libc | 1 + debian/shlibs.override.libetonyek | 1 + debian/shlibs.override.liblangtag | 1 + debian/shlibs.override.libmwaw | 1 + debian/shlibs.override.libodfgen | 1 + debian/shlibs.override.librevenge | 1 + debian/shlibs.override.libstaroffice | 1 + debian/shlibs.override.libvisio | 1 + debian/shlibs.override.libwpd | 1 + debian/shlibs.override.libwpg | 1 + debian/shlibs.override.libwps | 1 + debian/shlibs.override.orcus | 2 + debian/soffice.sh | 21 + debian/source/format | 1 + debian/source/include-binaries | 6 + debian/source/lintian-overrides | 30 + .../debian-presentation-background.xcf | Bin 0 -> 2202921 bytes debian/templates/debian-presentation.otp | Bin 0 -> 726796 bytes debian/templates/soffice-template.desktop.in | 8 + debian/tests/Test.fodt | 339 ++ debian/tests/access2base-import | 4 + debian/tests/cargo-rust-uno-check | 14 + debian/tests/cargo-rust-uno-test | 18 + debian/tests/control | 174 + debian/tests/control.in | 138 + debian/tests/control.junit.in | 5 + debian/tests/control.mysql.in | 8 + debian/tests/control.rust.in | 17 + debian/tests/cppunit-connectivity-mysql | 123 + debian/tests/cppunit-subsequentcheck | 61 + debian/tests/fake-build-tests | 153 + debian/tests/junit-subsequentcheck | 64 + debian/tests/odk-build-examples | 50 + debian/tests/odk-build-examples-java | 56 + debian/tests/patches/cppunit-standalone.diff | 15 + debian/tests/patches/disable-db-tests.diff | 130 + .../junit-subsequentcheck-standalone.diff | 140 + .../odk-build-examples-standalone.diff | 50 + .../smoketest-disable-extension-tests.diff | 117 + .../tests/patches/smoketest-standalone.diff | 17 + .../tests/patches/testtools-standalone.diff | 214 + debian/tests/patches/uicheck-standalone.diff | 69 + debian/tests/pyuno-import | 8 + debian/tests/scriptforge-import | 4 + debian/tests/slowcheck | 53 + debian/tests/smoketest | 56 + debian/tests/test-extension | 40 + debian/tests/test-extension-shared | 34 + debian/tests/test-rust-uno-example | 50 + debian/tests/testtools-bridgetest-with-java | 57 + .../tests/testtools-bridgetest-without-java | 57 + debian/tests/uicheck-cui | 63 + debian/tests/uicheck-sc | 63 + debian/tests/uicheck-sd | 63 + debian/tests/uicheck-sfx2 | 63 + debian/tests/uicheck-svx | 63 + debian/tests/uicheck-sw | 63 + debian/tests/uicheck-uitest | 63 + debian/tests/uicheck-writerperfect | 63 + debian/tests/uicheck-xmlsecurity | 66 + debian/tests/unitcheck | 64 + debian/tests/uno-import | 4 + debian/upstream/metadata | 7 + debian/upstream/signing-key.asc | 66 + debian/ure-java.bug-script.in | 16 + debian/ure-java.lintian-overrides | 1 + debian/vars.alpha | 3 + debian/vars.amd64 | 3 + debian/vars.arm | 3 + debian/vars.arm64 | 3 + debian/vars.armel | 3 + debian/vars.armhf | 3 + debian/vars.hppa | 3 + debian/vars.i386 | 3 + debian/vars.ia64 | 3 + debian/vars.loong64 | 3 + debian/vars.m68k | 3 + debian/vars.mips | 3 + debian/vars.mips64 | 3 + debian/vars.mips64el | 3 + debian/vars.mipsel | 3 + debian/vars.powerpc | 3 + debian/vars.ppc64 | 3 + debian/vars.ppc64el | 3 + debian/vars.riscv64 | 3 + debian/vars.s390x | 3 + debian/vars.sparc | 3 + debian/vars.sparc64 | 3 + debian/watch | 1 + debian/watch.alpha-and-betas | 26 + debian/watch.rcs | 26 + ...3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz | Bin 0 -> 769268 bytes ...59eafb2677d7ff386a023bc40-xsltml_2.1.2.zip | Bin 0 -> 23150 bytes tarballs/pdfium-7471.tar.bz2 | Bin 0 -> 11750937 bytes ...9d2443962782cf5f8b4dd27179f131e7cbe.tar.xz | Bin 0 -> 11761824 bytes 302 files changed, 16740 insertions(+) create mode 100644 debian/README create mode 100644 debian/README.Debian create mode 100644 debian/README.Debian-source create mode 100644 debian/README.qa create mode 100644 debian/branding/progress.conf create mode 100644 debian/bug-presubj create mode 100644 debian/changelog create mode 100644 debian/control create mode 100644 debian/control.cil.in create mode 100644 debian/control.evolution.in create mode 100644 debian/control.firebird.in create mode 100644 debian/control.fonts.in create mode 100644 debian/control.gtk3.in create mode 100644 debian/control.gtk4.in create mode 100644 debian/control.help.in create mode 100644 debian/control.in create mode 100644 debian/control.kf5.in create mode 100644 debian/control.kf6.in create mode 100644 debian/control.lang.in create mode 100644 debian/control.librelogo.in create mode 100644 debian/control.lokit.in create mode 100644 debian/control.mediawiki.in create mode 100644 debian/control.nlpsolver.in create mode 100644 debian/control.plasma.in create mode 100644 debian/control.postgresql.in create mode 100644 debian/control.qt5.in create mode 100644 debian/control.qt6.in create mode 100644 debian/control.reportbuilder.in create mode 100644 debian/control.rust.in create mode 100644 debian/control.sdk.in create mode 100644 debian/control.test-packages.in create mode 100644 debian/control.ure.in create mode 100644 debian/copyright create mode 100644 debian/liblibreoffice-java.lintian-overrides create mode 100644 debian/liblibreoffice-java.poms create mode 100644 debian/liblibreofficekitgtk.links create mode 100644 debian/libofficebean-java.poms create mode 100644 debian/libreoffice-base-drivers.NEWS create mode 100644 debian/libreoffice-base-drivers.lintian-overrides create mode 100644 debian/libreoffice-base-nogui.bug-control create mode 100644 debian/libreoffice-base-nogui.mime create mode 100644 debian/libreoffice-base.NEWS create mode 100644 debian/libreoffice-base.bug-control create mode 100644 debian/libreoffice-base.lintian-overrides create mode 100644 debian/libreoffice-base.manpages create mode 100644 debian/libreoffice-base.mime create mode 100644 debian/libreoffice-calc-nogui.lintian-overrides create mode 100644 debian/libreoffice-calc-nogui.mime create mode 100644 debian/libreoffice-calc.bug-control create mode 100644 debian/libreoffice-calc.config.in create mode 100644 debian/libreoffice-calc.lintian-overrides create mode 100644 debian/libreoffice-calc.manpages create mode 100644 debian/libreoffice-calc.mime create mode 100644 debian/libreoffice-calc.postinst.in create mode 100644 debian/libreoffice-calc.templates create mode 100644 debian/libreoffice-common.links.in create mode 100644 debian/libreoffice-common.lintian-overrides create mode 100644 debian/libreoffice-common.maintscript create mode 100644 debian/libreoffice-common.manpages create mode 100644 debian/libreoffice-common.postinst.in create mode 100644 debian/libreoffice-common.postrm.in create mode 100644 debian/libreoffice-common.preinst.in create mode 100644 debian/libreoffice-common.triggers.in create mode 100644 debian/libreoffice-common.ucf create mode 100644 debian/libreoffice-core-nogui.bug-control create mode 100755 debian/libreoffice-core-nogui.bug-script.in create mode 100644 debian/libreoffice-core.NEWS create mode 100644 debian/libreoffice-core.bug-control create mode 100755 debian/libreoffice-core.bug-script.in create mode 100755 debian/libreoffice-core.postrm.in create mode 100644 debian/libreoffice-dev-doc.links create mode 100644 debian/libreoffice-draw-nogui.bug-control create mode 100644 debian/libreoffice-draw-nogui.mime create mode 100644 debian/libreoffice-draw.bug-control create mode 100644 debian/libreoffice-draw.lintian-overrides create mode 100644 debian/libreoffice-draw.manpages create mode 100644 debian/libreoffice-draw.mime create mode 100644 debian/libreoffice-evolution.bug-control create mode 100644 debian/libreoffice-help-common.links create mode 100644 debian/libreoffice-help.lintian-overrides.in create mode 100644 debian/libreoffice-impress-nogui.bug-control create mode 100644 debian/libreoffice-impress-nogui.mime create mode 100644 debian/libreoffice-impress.bug-control create mode 100644 debian/libreoffice-impress.bug-script.in create mode 100644 debian/libreoffice-impress.lintian-overrides create mode 100644 debian/libreoffice-impress.manpages create mode 100644 debian/libreoffice-impress.mime create mode 100644 debian/libreoffice-math-nogui.bug-control create mode 100644 debian/libreoffice-math-nogui.mime create mode 100644 debian/libreoffice-math.bug-control create mode 100644 debian/libreoffice-math.lintian-overrides create mode 100644 debian/libreoffice-math.manpages create mode 100644 debian/libreoffice-math.mime create mode 100644 debian/libreoffice-nlpsolver.bug-control create mode 100755 debian/libreoffice-nlpsolver.bug-script.in create mode 100644 debian/libreoffice-nlpsolver.lintian-overrides create mode 100644 debian/libreoffice-report-builder.bug-control create mode 100644 debian/libreoffice-rust-uno-example.install.in create mode 100644 debian/libreoffice-script-provider-python.bug-control create mode 100644 debian/libreoffice-sdbc-firebird.NEWS create mode 100644 debian/libreoffice-sdbc-firebird.bug-script.in create mode 100644 debian/libreoffice-sdbc-firebird.lintian-overrides create mode 100644 debian/libreoffice-wiki-publisher.bug-control create mode 100755 debian/libreoffice-wiki-publisher.bug-script.in create mode 100644 debian/libreoffice-wiki-publisher.lintian-overrides create mode 100644 debian/libreoffice-writer-nogui.bug-control create mode 100644 debian/libreoffice-writer-nogui.mime create mode 100644 debian/libreoffice-writer.bug-control create mode 100644 debian/libreoffice-writer.lintian-overrides create mode 100644 debian/libreoffice-writer.manpages create mode 100644 debian/libreoffice-writer.mime create mode 100644 debian/libreoffice.bug-control create mode 100644 debian/libreofficekit-dev.docs create mode 100644 debian/libreofficekit-dev.links create mode 100644 debian/librust-rust-uno-dev.install.in create mode 100644 debian/libuno-cppu3t64.lintian-overrides create mode 100644 debian/libuno-cppu3t64.symbols create mode 100644 debian/libuno-cppuhelpergcc3-3t64.lintian-overrides create mode 100644 debian/libuno-cppuhelpergcc3-3t64.symbols create mode 100644 debian/libuno-purpenvhelpergcc3-3t64.lintian-overrides create mode 100644 debian/libuno-purpenvhelpergcc3-3t64.symbols create mode 100644 debian/libuno-sal3t64.lintian-overrides create mode 100644 debian/libuno-sal3t64.symbols.in create mode 100644 debian/libuno-salhelpergcc3-3t64.lintian-overrides create mode 100644 debian/libuno-salhelpergcc3-3t64.symbols.in create mode 100644 debian/libunoloader-java.poms create mode 100644 debian/patches/Rust-Bindings-Add-initial-documentation-for-Rust-UNO.diff create mode 100644 debian/patches/adapt-for-new-carlito.diff create mode 100644 debian/patches/appstream-ignore-startcenter.diff create mode 100644 debian/patches/arm-fp-mode.diff create mode 100644 debian/patches/build-against-shared-lpsolve.diff create mode 100644 debian/patches/cargo-build-flag.diff create mode 100644 debian/patches/cppunit-optional.diff create mode 100644 debian/patches/debian-debug.diff create mode 100644 debian/patches/debian-hardened-buildflags-CPPFLAGS.diff create mode 100644 debian/patches/debian-hardened-buildflags-no-LO-fstack-protector-strong.diff create mode 100644 debian/patches/debian-opt.diff create mode 100644 debian/patches/disable-flaky-tests.diff create mode 100644 debian/patches/disable-java-in-odk-build-examples-on-zero-vm.diff create mode 100644 debian/patches/disable-shortcuts_tab_navigation-uitest.diff create mode 100644 debian/patches/disable-uitest-xmlsecurity-gpg.diff create mode 100644 debian/patches/disable-unused-test-programs.diff create mode 100644 debian/patches/disableClassPathURLCheck.diff create mode 100644 debian/patches/do-not-abort-on-NON_APPLICATION_FONT_USE.diff create mode 100644 debian/patches/do-not-hide-test-output.diff create mode 100644 debian/patches/dont-touch-urd.diff create mode 100644 debian/patches/fix-32bits-test-build.diff create mode 100644 debian/patches/fix-flaky-bridgetest.diff create mode 100644 debian/patches/fix-internal-hsqldb-build.diff create mode 100644 debian/patches/fix-rust_uno-path-for-cargo-wrapper.diff create mode 100644 debian/patches/fix-system-lpsolve-build.diff create mode 100644 debian/patches/help-msg-add-package-info.diff create mode 100644 debian/patches/hide-math-desktop-file.patch create mode 100644 debian/patches/install-fixes.diff create mode 100644 debian/patches/javadoc-optional.diff create mode 100644 debian/patches/jdbc-driver-classpaths.diff create mode 100644 debian/patches/jdk-minimal-and-zero-paths.diff create mode 100644 debian/patches/jurt-soffice-location.diff create mode 100644 debian/patches/lpsolve-fPIC.diff create mode 100644 debian/patches/make-package-modules-not-suck.diff create mode 100644 debian/patches/mediwiki-oor-replace.diff create mode 100644 debian/patches/mention-java-common-package.diff create mode 100644 debian/patches/moreIconsDialog-accesses-internet.diff create mode 100644 debian/patches/no-opencl-per-default.diff create mode 100644 debian/patches/no-packagekit-per-default.diff create mode 100644 debian/patches/parquet-filter-config-only-if-enabled-in-orcus.diff create mode 100644 debian/patches/pdfium-ports.diff create mode 100644 debian/patches/remove-JITC_PROCESSOR_TYPE-setting.diff create mode 100644 debian/patches/reportdesign-mention-package.diff create mode 100644 debian/patches/rust-uno-DEB_CARGO_CRATE.diff create mode 100644 debian/patches/search-usr-share-for-images.diff create mode 100644 debian/patches/sensible-lomua.diff create mode 100644 debian/patches/series create mode 100644 debian/patches/skia-gcc-no-musttail.diff create mode 100644 debian/patches/splits-adapt-registry.diff create mode 100644 debian/patches/strict-firebird-api-version-check.diff create mode 100644 debian/patches/system-crates.diff create mode 100644 debian/patches/system-officeotron-and-odfvalidator.diff create mode 100644 debian/patches/use-mariadb-java-instead-of-mysql-java.diff create mode 100644 debian/patches/we-dont-have-the-needed-fonts.diff create mode 100644 debian/patches/we-rely-on-dicts-as-non-extensions-in-checks.diff create mode 100644 debian/po/POTFILES.in create mode 100644 debian/po/ar.po create mode 100644 debian/po/ca.po create mode 100644 debian/po/cs.po create mode 100644 debian/po/de.po create mode 100644 debian/po/es.po create mode 100644 debian/po/fr.po create mode 100644 debian/po/gl.po create mode 100644 debian/po/nl.po create mode 100644 debian/po/pt.po create mode 100644 debian/po/pt_BR.po create mode 100644 debian/po/templates.pot create mode 100644 debian/python3-access2base.links create mode 100644 debian/python3-uno.NEWS create mode 100644 debian/python3-uno.lintian-overrides create mode 100755 debian/rules create mode 100755 debian/scripts/get_libebook_dep.sh create mode 100755 debian/scripts/gid2pkgdirs.sh create mode 100755 debian/scripts/joinctrl.py create mode 100755 debian/scripts/locale-gen create mode 100755 debian/scripts/move-if-change create mode 100755 debian/scripts/stat_pos.sh create mode 100755 debian/scripts/uupdate-component-tarball.sh create mode 100644 debian/shell-lib-extensions.sh create mode 100644 debian/shell-lib-lool.sh create mode 100644 debian/shlibs.override.icu create mode 100644 debian/shlibs.override.libc create mode 100644 debian/shlibs.override.libetonyek create mode 100644 debian/shlibs.override.liblangtag create mode 100644 debian/shlibs.override.libmwaw create mode 100644 debian/shlibs.override.libodfgen create mode 100644 debian/shlibs.override.librevenge create mode 100644 debian/shlibs.override.libstaroffice create mode 100644 debian/shlibs.override.libvisio create mode 100644 debian/shlibs.override.libwpd create mode 100644 debian/shlibs.override.libwpg create mode 100644 debian/shlibs.override.libwps create mode 100644 debian/shlibs.override.orcus create mode 100644 debian/soffice.sh create mode 100644 debian/source/format create mode 100644 debian/source/include-binaries create mode 100644 debian/source/lintian-overrides create mode 100644 debian/templates/debian-presentation-background.xcf create mode 100644 debian/templates/debian-presentation.otp create mode 100644 debian/templates/soffice-template.desktop.in create mode 100644 debian/tests/Test.fodt create mode 100755 debian/tests/access2base-import create mode 100755 debian/tests/cargo-rust-uno-check create mode 100755 debian/tests/cargo-rust-uno-test create mode 100644 debian/tests/control create mode 100644 debian/tests/control.in create mode 100644 debian/tests/control.junit.in create mode 100644 debian/tests/control.mysql.in create mode 100644 debian/tests/control.rust.in create mode 100755 debian/tests/cppunit-connectivity-mysql create mode 100755 debian/tests/cppunit-subsequentcheck create mode 100755 debian/tests/fake-build-tests create mode 100755 debian/tests/junit-subsequentcheck create mode 100755 debian/tests/odk-build-examples create mode 100755 debian/tests/odk-build-examples-java create mode 100644 debian/tests/patches/cppunit-standalone.diff create mode 100644 debian/tests/patches/disable-db-tests.diff create mode 100644 debian/tests/patches/junit-subsequentcheck-standalone.diff create mode 100644 debian/tests/patches/odk-build-examples-standalone.diff create mode 100644 debian/tests/patches/smoketest-disable-extension-tests.diff create mode 100644 debian/tests/patches/smoketest-standalone.diff create mode 100644 debian/tests/patches/testtools-standalone.diff create mode 100644 debian/tests/patches/uicheck-standalone.diff create mode 100755 debian/tests/pyuno-import create mode 100755 debian/tests/scriptforge-import create mode 100755 debian/tests/slowcheck create mode 100755 debian/tests/smoketest create mode 100755 debian/tests/test-extension create mode 100755 debian/tests/test-extension-shared create mode 100755 debian/tests/test-rust-uno-example create mode 100755 debian/tests/testtools-bridgetest-with-java create mode 100755 debian/tests/testtools-bridgetest-without-java create mode 100755 debian/tests/uicheck-cui create mode 100755 debian/tests/uicheck-sc create mode 100755 debian/tests/uicheck-sd create mode 100755 debian/tests/uicheck-sfx2 create mode 100755 debian/tests/uicheck-svx create mode 100755 debian/tests/uicheck-sw create mode 100755 debian/tests/uicheck-uitest create mode 100755 debian/tests/uicheck-writerperfect create mode 100755 debian/tests/uicheck-xmlsecurity create mode 100755 debian/tests/unitcheck create mode 100755 debian/tests/uno-import create mode 100644 debian/upstream/metadata create mode 100644 debian/upstream/signing-key.asc create mode 100644 debian/ure-java.bug-script.in create mode 100644 debian/ure-java.lintian-overrides create mode 100644 debian/vars.alpha create mode 100644 debian/vars.amd64 create mode 100644 debian/vars.arm create mode 100644 debian/vars.arm64 create mode 100644 debian/vars.armel create mode 100644 debian/vars.armhf create mode 100644 debian/vars.hppa create mode 100644 debian/vars.i386 create mode 100644 debian/vars.ia64 create mode 100644 debian/vars.loong64 create mode 100644 debian/vars.m68k create mode 100644 debian/vars.mips create mode 100644 debian/vars.mips64 create mode 100644 debian/vars.mips64el create mode 100644 debian/vars.mipsel create mode 100644 debian/vars.powerpc create mode 100644 debian/vars.ppc64 create mode 100644 debian/vars.ppc64el create mode 100644 debian/vars.riscv64 create mode 100644 debian/vars.s390x create mode 100644 debian/vars.sparc create mode 100644 debian/vars.sparc64 create mode 120000 debian/watch create mode 100644 debian/watch.alpha-and-betas create mode 100644 debian/watch.rcs create mode 100644 tarballs/26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz create mode 100644 tarballs/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip create mode 100644 tarballs/pdfium-7471.tar.bz2 create mode 100644 tarballs/skia-m142-f4ed99d2443962782cf5f8b4dd27179f131e7cbe.tar.xz diff --git a/debian/README b/debian/README new file mode 100644 index 00000000000..01e7967e51a --- /dev/null +++ b/debian/README @@ -0,0 +1,83 @@ +LibreOffice build system +------------------------ + +Building the packages from source +================================= +Overview: + apt-get source libreoffice + apt-get build-dep libreoffice (to install build dependencies) + cd + debuild + +Changing the build behaviour with DEB_BUILD_OPTIONS +--------------------------------------------------- +These options are supported: + + debug - build with FULL debug symbols. Default is just to build + with SMALL ones since the deb otherwise gets too big + ((>400M, ca. 1GB I-S)) + + ccache - enable the use of ccache during the build. This is highly + recommended if you plan on building the package more than + once, or doing any development on the packages. Be aware + that you need EXTRAPACKAGES="ccache" in /etc/pbuilderrc + when trying to build libreoffice with ccache in + $DEB_BUILD_OPTIONS under pbuilder (this has no effect + on speed, hough because the cache does not persist in + pbuilder) + + parallel= + - enable n projects to be built in parallel. + The log output can get a little confusing, and some projects + may fail still. You need to remove config.status if you + change this value after interrupting a build. + + lang= + - Build only the specified language + + nocheck + - disable run of tests when enabled in rules + + +The targets that are built during the package build +--------------------------------------------------- + +- targets run during the package build - + +unpack - Does prerequisites for the build: packing, unpacking etc. + +build - as the name says + +install - Copy files from debian/tmp/pkg into the correct locations + for the final package layout in debian/libreoffice* + where we need to do that here because it affects arch-dep + and arch-indep stuff and therefore cannot be done in + install-arch / install-indep. + +install-arch - installs arch-dependent stuff into the arch-dep. packages +install-indep - " "-independent " " " "-indep. packages + +langpackgs - Installs the language packgs +helppkgs - Installs the help packages + +maintscripts - Generates the maintainer scripts + +get-orig-source - gets original source tarballs and unpacks them + GIT_BASEURL can be set to a local mirror + GIT_BRANCH is the branch to clone from the repos + GIT_TAG is tag that should be packed + GIT_BRANCH and GIT_TAG can both be master + +Building the package from git master +==================================== +To do a build from git master, do: + mkdir libreoffice-git + cd libreoffice-git + git clone https://salsa.debian.org/libreoffice-team/libreoffice/libreoffice.git debian + ./debian/rules unpack GIT_BRANCH=master GIT_TAG=master SOURCE_TARBALLS=n + dpkg-buildpackage + +Build system file layout +======================== +debian/scripts: + Directory containing various debian-specific build-related scripts. diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 00000000000..c27c3d5c605 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,307 @@ + Readme for libreoffice package for Debian + -------------------------------------------- + +Contents +======== +Introduction +Quick start +Printer setup + Native CUPS support + Non-CUPS systems +Language support + Spellcheck dictionaries, Hyphenation patterns and Thesauri + Help packages +Display and crashing problems + X server crashes +Font problems + Why are the menu fonts smaller than in older versions? + Changing the default user interface font typeface for non-KDE/Gnome desktops +Disabling the splash screen +AppArmor problems +More information about LibreOffice in Debian + + +Introduction +============ +Welcome to the LibreOffice packages for the Debian distribution. These +packages are of the release of LibreOffice with the following +modifications: + + * Packaged as libreoffice-core (architecture-dependent core files), + libreoffice-common (architecture-independent common files), + libreoffice-{calc,writer,draw,impress,base} (the LibreOffice modules) + libreoffice-l10n- and libreoffice-help- and + other subpackages (-filters-* for lesser used filters, -gtk/-gnome/-kde, + ttf-opensymbol for the OpenSymbol font, ...). + + * Integration with other Debian packages: + - Global desktop integration for all users for KDE and Gnome desktops. + Menu entries for all window managers that support the Debian 'menu' + package. + + * Some extra features not yet present in official releases: + - Many of the patches included in the Ximian edition + + * Extra documentation - this README and man pages. + + +Quick start +=========== + +To start using LibreOffice, execute the command + + libreoffice + +as the user which you wish to start LibreOffice as. This will create the +necessary user files in ~/.libreoffice/3 for you. Alternatively, you +can start LibreOffice from the menus, if you have the menu package +installed/use KDE or GNOME. + +Printing +======== + +Printing on CUPS systems +------------------------ +The Debian packages include native CUPS support from version 1.1.1-3. This +is standard in all OpenOffice.org versions since 2.0. +When LibreOffice detects a CUPS system, it will download printer settings for +all CUPS queues, and these can be set from within the printer properties dialog. + +If you wish to add additional filters or print commands, you can add them +using 'spadmin'. Note that the 'Add a printer' option is disabled - you +should add printers using your favourite CUPS frontend. + +When creating a new document, LibreOffice will use the default paper size of +your default CUPS printer queue. If your new documents have the wrong paper +size, please check the configuration of your printer. + +Non-CUPS systems (lpr, lprng, SAL_DISABLE_CUPS=1) +--------------------------------- +There is a tool supplied with LibreOffice for setting up printers. You can +execute this with the command + + /usr/lib/openoffice/program/spadmin + +To change the page size and other default settings on non-CUPS systems, +modify /etc/openoffice/psprint.conf. The settings are documented in there. + +Language support +================ +You can get foreign language support by installing the +libreoffice-l10n- package for your language. You will also need the +'locales' (or belocs-locales-data for some locales, alternatively locales-all +if you want all locales) package installed. +The user interface language is selected according to your locale(1) settings. + +To change the user interface language for all users, run + + dpkg-reconfigure locales + +[ This is not needed when you install locales-all ] + +To change the language for just one user, you must arrange for the LC_MESSAGES +or LANG environment variable to be set. You can list all available locales +with the command 'locale -a'. +For example, to run LibreOffice in German from the command line: + + LANG=de_DE libreoffice + +Spellcheck dictionaries, Hyphenation patterns and Thesauri +---------------------------------------------------------- +Currently, there are dictionaries available for Afrikaans, Arabic, Armenian, +Bulgarian, Catalan, Croatian, Czech, Danish, Dutch, English (AUS/GB/US), +Esperanto, Estonian, Farsi, Finnish, French, Galician, German (DE/CH/AT), +Greek, Hebrew, Hungarian, Irish (Gaeilge), Italian, Kurdish, Latvian, +Lithuanian, Manx Gaelic, Norwegian Bokmal, Norwegian Nynorsk, Polish, +Portuguese, Portuguese (Brazilian), Russian, Scots Gaelic, Slovak, Slovenian, +Spanish, Swahili, Swedish, Thai, Ukrainian and Uzbek. +Dictionaries are packaged as myspell- (or, for newer ones improved +for hunspell hunspell-). + +Currently, there are thesauri available for Czech, English (AUS/GB/US), +German (DE/CH), Italian, Polish and Slovak. +Thesauri are packaged as mythes- + +Currently, there are hyphenation patterns available for English (USA), +Croatian, Estonian, German, Hungarian, Italian, Polish, Slovenian and +Lithuanian. +Hyphenation patterns are packaged as hyphen-. + +Help packages +------------- +Currently, there are localized help packages available for +Bulgarian, Chinese, Czech, Danish, Dutch, English (GB), English (USA), +Estonian, French, Galician, German, Hungarian, Italian, Japanese, Khmer, +Macedonian, Polish, Portuguese (Brazil), Russian, Slovakian, Slovenian and +Spanish and Swedish. +They are packaged as libreoffice-help-. + +Problems +================================ + +Here are some problems that have been reported with this version. If you do +not see your problem here, please check for open bug reports: + + http://bugs.debian.org/debian-openoffice@lists.debian.org + +1. If you are using NFS mounted file systems, you should make sure that locking +is functioning: + + 'Make sure NFS lockd/statd is running on the client, or mount the NFS export + with the 'nolock' option. + + If /usr gets mounted from an initrd, check 'ps' output once the system is + fully booted to ensure that you see a [lockd] kernel process, or an + 'rpc.lockd' / 'rpc.statd' userspace process. + + If not, just issue your mount command again (no need to even -o remount it + seems!) and run /etc/init.d/nfs-common restart.' (Thanks to Gavin Hamill) + + See this mailing list thread for more information: + http://lists.debian.org/debian-openoffice/2004/debian-openoffice-200402/msg00223.html + +X server crash with Matrox cards +-------------------------------- +If your X server is using the mga driver, you may find that your X server +crashes. You can work around this problem by adding this line to the mga +Device section: + + Option "XaaNoScreenToScreenColorExpandFill" + +There is a bug already open against xserver-xfree86 for this problem. Thanks +to Philip Armstrong for this information. + +LibreOffice crash with nVidia cards +-------------------------------------- +It seems that LibreOffice can trigger some obscure bugs in the X server +drivers for Nvidia cards too, especially if you have more than one processor. +Try updating your drivers to the latest version. + +Moreover LibreOffice may hang and takes X with it when RenderAccel +is enabled when using the proprietary nVidia Drivers. Disabling this option +helps then. + +Font problems +============= + +Why are the menu fonts smaller than in older versions? +------------------------------------------------------ +This is caused by a change in the way LibreOfffice interprets your X server DPI +setting. +This setting, when correctly configured, means that software can display text +at its true size on the display. + +The official OpenOffice.org version assumes that anyone who has their X server +configured with a DPI of less than 96 has not actually configured it at all, +and sets it back to 96. Unfortunately, this has the side effect that +displays with a lower DPI setting, such as some LCD laptop displays, cannot +display the page at its true size. + +So you can fix this by correctly setting the DPI for your X server. Gnome +users will find that it is set to 96 DPI by default; others may need to edit +their X server configuration. + +The best way to get the correct DPI setting is to add a 'DisplaySize' entry to +the Monitor section. From the XF86Config-4 man page: + + DisplaySize width height + This optional entry gives the width and height, in millimetres, of the + picture area of the monitor. If given this is used to calculate the + horizontal and vertical pitch (DPI) of the screen. + +If you set this value correctly, X will calculate and use the correct DPI +setting, even if you use several different display resolutions. + +From Nikita V. Youshchenko : + +- Many display manager configurations pass the option "-dpi 100" to the X + server by default, overriding any autodetected DPI. This has to be removed + for DisplaySize to work. The file that you need to edit varies depending on + the way your X server is started: + xdm: /etc/X11/xdm/Xservers + kdm: /etc/kde3/kdm/Xservers + gdm: /etc/gdm/gdm.conf + startx: /etc/X11/xinit/xserverrc + +- Gnome's gconf overrides the autodetected DPI, by setting Xft.dpi to a value + entered in configuration dialog, 96 by default. I don't know what is + the clean fix for this. Perhaps it should be fixed on the Gnome side. + +From Juergen Kreileder :> + +- Note that with most recent graphics cards and monitors XFree86 is able to + get the monitor size (and thus the correct dpi value) through ddc. + (**) NVIDIA(0): Validated modes for display device DFP-0: + (**) NVIDIA(0): Default mode "1600x1200": 189.0 MHz, 87.5 kHz, 70.0 Hz + (II) NVIDIA(0): Virtual screen size determined to be 1600 x 1200 + (--) NVIDIA(0): Display dimensions: (410, 310) mm + (--) NVIDIA(0): DPI set to (99, 98) + (That's with the proprietary NVIDIA drivers but other XFree86 drivers have + that support too.) + +If you use KDE or Gnome, LibreOffice will use the same font face and size as +your desktop environment. If you use another window manager, you can either +let it pick a default font itself, or change the font to be used (see next +section), or set the OOO_FORCE_DESKTOP environment variable to +kde (for kde3)/kde4 or gnome, to use KDE or Gnome settings respectively. + +Changing the default user interface font typeface for non-KDE/Gnome desktops +---------------------------------------------------------------------------- +If you do not want to use KDE or Gnome settings and want to change font sizes +within LibreOffice, you can configure the user interface font as follows: + +- Font size - + +You can change the font scaling using the user interface: + + Tools Menu -> Options -> View -> Scale + +- Font typeface - + +You can change the default font typeface by replacing it with a different font +installed on your system. This can be done using the font replacement function. +Choose Tools - Options - LibreOffice - Font Replacement to access this +function. + +To change the font of the LibreOffice user interface, you have to replace +the default font "Andale Sans UI" with another font and mark the "always" +setting for this replacement. "Andale Sans UI" is not selectable and has to be +typed in. The replacement font has to be a font which supports the requested +locale ( e.g for Korean language the replacement font has to be a font +including Korean characters). + +Refer to the LibreOffice Help for a detailed explanation of the font +replacement dialog. + +Disabling the splash screen +=========================== +If you don't like the splash screen staying in front of other windows while +LibreOffice is loading, you can disable it by editing +/etc/openoffice/sofficerc. Change Logo=1 to Logo=0. + +AppArmor problems +================= + +LibreOffice in Debian ships with AppArmor profiles: + + /etc/apparmor.d/usr.lib.libreoffice.* + +To debug issues with these AppArmor profiles, see: + + https://wiki.debian.org/AppArmor/Debug + +If you are using custom settings such as a custom env:UserInstallation +directory, you may need to adjust them to match your local setup. +In this example, you would need to add your custom +env:UserInstallation to @{libo_user_dirs} in the +usr.lib.libreoffice.program.soffice.bin profile. + +More information about LibreOffice in Debian +=============================================== +Please read the official README.gz (in the same directory as this file), too. + +If you have questions, either post to our the mailing list: + + http://lists.debian.org/debian-openoffice + +The Debian LibreOffice team diff --git a/debian/README.Debian-source b/debian/README.Debian-source new file mode 100644 index 00000000000..5bc3f546099 --- /dev/null +++ b/debian/README.Debian-source @@ -0,0 +1,103 @@ +Package directory modes +======================= +The packages can be built directly from a set of git checkouts (vcs mode), +or from a set of release tarballs (tarball mode). + +Vcs mode is useful if you want to work on libreoffice during the development +cycle. You can check out the latest sources and track them while you make +changes. + +Tarball mode is used to prepare packages of official libreoffice releases +from the tarballs created by upstream. + +Source package creation steps for tarball mode +============================================== +The .orig.tar.gz consists of the (separate) source tarballs available +from The Document Foundation from +http://download.documentfoundation.org/libreoffice/src/ + +or base on an old version and add/remove the files manually and/or symlink +to the old version if this didn't change - see git diff of download.lst. This +is even better given we probably want to add only needed stuff there, and not +all tarballs (most of those we don't use) + +See the "Format: 3.0 (quilt)" section dpkg-source(1) for more details. + +Package directory layout - vcs mode +=================================== + +In vcs mode we are working directly from checkouts of the libreoffice sources. + +We pull in sources to these places: + + "top" directory - checkout of LO's "core" repo + debian - git packaging repository from pkg-openoffice project on alioth + helpcontent2 - checkout of LO's "help" repo (git submodule) + translations - checkout of LO's "translations" repo (git submodule) + tarballs - see above in tarball mode + +$ git clone git://gerrit.libreoffice.org/core +$ cd core +$ git submodule init + +(maybe remove dictionaries again, see .git/config, we don't need it here.) + +./g pull -r (git pull -r, but also does the necessary steps for the submodules) + +For tarballs/, see above + +Build profiles +============== + +Except the "common" build profiles + - nodoc + - nocheck + - nopython + - nojava + - nogir +this source package also has + - an own one which controls whether opens___.ttf of fonts-opensymbol is rebuilt + (which needs fontforge-nox | fontforge) (pkg.libreoffice.opensymbolbuild, default on arch + inde builds) or not. + If this is disabled you must provide opens___.ttf itself since the upstream build will fail + wiithout it being present. The canonical way (which is what upstream does per default actually) + is to put https://dev-www.libreoffice.org/extern/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf + into tarballs/. It will be picked up from there. + - Then we get a fonts-opensymbol Build-Depends-Arch to make arch-dep builds use the + rebuilt font. In case this makes problem this can be built still by + debuild (-b) -Ppkg.libreoffice.opensymbolbuild + diff --git a/debian/README.qa b/debian/README.qa new file mode 100644 index 00000000000..3da75a9fea6 --- /dev/null +++ b/debian/README.qa @@ -0,0 +1,59 @@ +LibreOffice QA Tools + +smoketest +========= + +smoketest executes a set of macros that create a minimal document in +each of LibreOffice's applications, tests cut&paste and +saving/loading in various formats. + +Invoke it as oosmoketest. + +This program manipulates the LibreOffice user configuration, USE IT +WITH A DEDICATED USER ACCOUNT if you value your settings. + +qadevOOo +======== + +qadevOOo is a framework for executing tests for the LibreOffice +API. It is documented at +http://qa.openoffice.org/qadevOOo_doc/user-guide.html + +Predefined properties files exist in /usr/lib/openoffice/qadevOOo. + +Invoke it like e.g: + + ootestapi -ini /usr/lib/openoffice/qadevOOo/java.props -o sd.SdMasterPage + +That properties files specify AppExecutionCommand, i.e. an office will +be started if necessary. Some tests, however seem to work better if +the office was started manually, as written in the user guide. + + /usr/lib/openoffice/program/soffice "-accept=socket,host=localhost,port=8100;urp;" + +Use this invocation and not ooffice to prevent interference with the +quickstarter code. + +testtool +======== + +testtool is a framework for executing tests by automating actions in +LibreOffice's user interface. It is documented at +http://qa.openoffice.org/qatesttool/index.html + +Test scripts for testtool are available in the +libreoffice-qa-ui-tests package. + +Start it as ootesttool. + +If you're starting it for the first time, create a profile in +Extras->Settings where you specify the location of test scripts and +output path for log files. The default values point to the scripts +from the libreoffice-qa-ui-tests package, so simply giving a name +to the profile and pressing the "New" button is enough. + +Then open a test script and press F5 to start the test. + +Some test scripts may change your LibreOffice user +configuration. USE IT WITH A DEDICATED USER ACCOUNT if you value your +settings. diff --git a/debian/branding/progress.conf b/debian/branding/progress.conf new file mode 100644 index 00000000000..59ff72ce41d --- /dev/null +++ b/debian/branding/progress.conf @@ -0,0 +1 @@ +PROGRESSBARCOLOR=215,7,81 diff --git a/debian/bug-presubj b/debian/bug-presubj new file mode 100644 index 00000000000..b0b6cfc7c29 --- /dev/null +++ b/debian/bug-presubj @@ -0,0 +1,61 @@ +Reporting a bug against LibreOffice +-------------------------------------- +I) Make sure it's a LibreOffice bug after all: #398923 and its friends for + example are not. + Set the Version: header right. If you found a bug in a specific version, + set that as version:, even if you in the meanwhile upgraded. If you are on + an up-to-date version and tried old versions and they have the bug, too, set + the Version: header to the earliest version you found it in (of course, if + versions inbetween don't have the bug use the version in which it reappeared + and sustained to the current version) + +II) Check on the BTS (http://bugs.debian.org/src:libreoffice) whether the + bug already is reported. Do *NOT* report a new one then. For judging whether + it's already reported, read *ALL* the bugs, think, try and use common sense. + +III) If you have crashes with a document, try another one. If only that or + similar docs causes problems please attach THIS (or a similar type one + causing it). Otherwise, don't file a bug, we can't look at it anyway. + +IV) Please attach more info if possible (see + https://wiki.documentfoundation.org/QA/BugReport/Debug_Information#GNU.2FLinux). + Install libreoffice-*-dbgsym or libreoffice-dbg before doing this (and maybe + the packages it Recommends and/or -dbgsym/-dbg of the libraries LO depends + on). + Please note that those *-dbgsym packages are not in the main archive; you + need to add the debug archive for that. + See https://wiki.debian.org/AutomaticDebugPackages + Please also read /usr/share/doc/libreoffice-common/README.gz for common + problems ("Problems During Program Startup") + If you have NFS/Samba/... file locking problems (i.e. files opened + read-only when they should be read-write), also see the "File Locking" + section in above file. + +V) If the bug is also in the version you can get from www.libreoffice.org, file + it there (see https://wiki.documentfoundation.org/QA/BugReport) in the first + place. If you really think this also should be a bug in the Debian BTS + (because it's (release-)critical or otherwise important) please file a bug + there too *BUT* note the TDF bug number in the bug or mark it forwarded + yourself if you can. Especially this is for feature requests. + If you tested other LibreOffice packages and the bug is (not) in version + foo from bar, mention that, too. + +VI) Only report bugs on completely up-to-date systems. Don't file bugs on a + obsolete version and neither on sid/testing systems really old. Nor on + backports, see https://backports.debian.org/Instructions/#index6h2. If bugs + got fixed in sid, it doesn't make sense to file them anymore. (Exception + is security bugs or really critical bugs which should be get fixed in + stable.) When you think a dependency is missing/wrong/too lax please be + *sure* that this is the case before reporting it. Most times it isn't. + Use common sense and the bug severities for judging here. When you think + you have an up-to-date system, check whether you really have one. + (And do a dist-upgrade, try to reproduce the bug again). + Also don't report bugs on broken mix systems unless you are sure about the + dependencies/conflicts (see above). + +VII) Please give as much info as possible (installed LibreOffice packages, installed + extensions, "special" configs, additions, changes, whatever). Better too + much than too less. (See #396225 for example which was caused by an + unsupportable, non-free extension) + +Thanks. diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000000000000000000000000000000000000..584db19e05765d4e0d950c67dcd23e9735b86da1 GIT binary patch literal 738505 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 ?{f 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 a{$BR9mAfypvVj(prTBbt?sjGK5B`6p+`qm6 literal 0 HcmV?d00001 diff --git a/debian/control.cil.in b/debian/control.cil.in new file mode 100644 index 00000000000..1d1fa14d846 --- /dev/null +++ b/debian/control.cil.in @@ -0,0 +1,56 @@ +# FIXME: until there is a better naming for this... +Package: ure-dotnet +Section: cli-mono +Architecture: %OOO_CLI_ARCHS% +Depends: ${cli:Depends}, ${misc:Depends} +Description: LibreOffice bindings for CLI -- bridge + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the .NET <-> UNO bridge. + +# split out from the above +Package: libuno-net-basetypes-cil +Section: cli-mono +Architecture: all +Depends: ${cli:Depends}, ${misc:Depends} +Description: LibreOffice bindings for CLI -- base types + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains net_uretypes.dll, a CLI library which provides classes + and interfaces for components and client programs. It contains basic types. + +Package: libuno-net-uretypes-cil +Section: cli-mono +Architecture: all +Depends: ${cli:Depends}, ${misc:Depends} +Description: LibreOffice bindings for CLI -- URE type library + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains net_uretypes.dll, a CLI library which provides classes + and interfaces for components and client programs. It contains the URE types. + +Package: libuno-net-oootypes-cil +Section: cli-mono +Architecture: all +Depends: ${cli:Depends}, ${misc:Depends} +Description: LibreOffice bindings for CLI -- LibreOffice type library + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains net_oootypes.dll, a CLI library which provides classes + and interfaces for components and client programs. It contains the LibreOffice + types. + +# nuget stuff +Package: libreoffice-dev-dotnet +Section: cli-mono +Architecture: %OOO_CLI_ARCHS% +Depends: ${cli:Depends}, ${misc:Depends} +Description: office productivity suite -- SDK -- .NET nuget package + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the nuget package for .NET (LibreOffice.Bindings) diff --git a/debian/control.evolution.in b/debian/control.evolution.in new file mode 100644 index 00000000000..ded447fdb9b --- /dev/null +++ b/debian/control.evolution.in @@ -0,0 +1,18 @@ +Package: libreoffice-evolution +Architecture: %OOO_BASE_ARCHS% +Section: gnome +Depends: libreoffice-base, + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-core (= ${binary:Version}), + ${libebook-dep}, + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-common (= 4:24.2.1-3) +Recommends: evolution +Description: office productivity suite -- Evolution addressbook support + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package allows LibreOffice to access Evolution address books. + You need to install evolution separately. + diff --git a/debian/control.firebird.in b/debian/control.firebird.in new file mode 100644 index 00000000000..1e5870d9976 --- /dev/null +++ b/debian/control.firebird.in @@ -0,0 +1,12 @@ +Package: libreoffice-sdbc-firebird +Depends: libreoffice-core-nogui | libreoffice-core, ${shlibs:Depends}, ${misc:Depends}, ${firebird-engine-depends} +Architecture: %OOO_FIREBIRD_ARCHS% +Section: database +Enhances: libreoffice-base-drivers +Description: (embedded) Firebird SDBC driver for LibreOffice + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + The Firebird SDBC Driver allows one to use the Firebird (embedded) database + from LibreOffice without any wrapper layer such as ODBC or JDBC. + diff --git a/debian/control.fonts.in b/debian/control.fonts.in new file mode 100644 index 00000000000..f52165d404c --- /dev/null +++ b/debian/control.fonts.in @@ -0,0 +1,13 @@ +Package: fonts-opensymbol +Section: fonts +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends} +Recommends: fontconfig +Replaces: ttf-opensymbol +Provides: ttf-opensymbol +Description: OpenSymbol TrueType font + This package contains the OpenSymbol TrueType font included in + LibreOffice. This font contains symbols (like fonts as Wingdings(tm)), + bullets (needed for bullets in LibreOffice) and non-latin character + diff --git a/debian/control.gtk3.in b/debian/control.gtk3.in new file mode 100644 index 00000000000..f86aec21121 --- /dev/null +++ b/debian/control.gtk3.in @@ -0,0 +1,63 @@ +Package: libreoffice-gtk3 +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: libreofficekit-data +Recommends: gstreamer1.0-gtk3 +Section: gnome +Enhances: libreoffice +Description: office productivity suite -- GTK+ 3 integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the GTK+ plugin for drawing LibreOffices widgets + with GTK+ 3 and GTK+/GNOMEish print dialog when running under GNOME. + +Package: gir1.2-lokdocview-0.1 +Architecture: %OOO_ARCHS% +Section: introspection +Build-Profiles: +Depends: ${gir:Depends}, ${misc:Depends}, liblibreofficekitgtk (= ${binary:Version}) +Description: GTK+ 3 widget wrapping LibreOffice functionality - introspection + LOKDocView is the GTK+ 3 widget that wraps the libreoffice functionality and + exposes a simple API for applications to use this widget. + . + This package contains the Introspection data. + +Package: libreofficekit-dev-gtk +Section: libdevel +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${gir:Depends}, gir1.2-lokdocview-0.1 (= ${binary:Version}), libreofficekit-dev, libgtk-3-dev, liblibreofficekitgtk +Replaces: gir1.2-lokdocview-0.1 (<< 1:5.4.0~rc1), libreofficekit-dev (<< 4:25.2~) +Provides: ${gir:Provides} +Description: LibreOfficeKit -- Gtk header and introspection development + LibreOfficeKit can be used for accessing LibreOffice functionality through + C/C++, without any need to use UNO. + . + This package contains the header needed for using LibreOfficeKit with Gtk + and for developing stuff using introspection. + +Package: liblibreofficekitgtk +Section: gnome +Architecture: %OOO_ARCHS% +Depends: ${shlibs:Depends}, ${misc:Depends}, libreofficekit-data +Replaces: libreoffice-gtk3 (<< 1:5.2.0~) +Breaks: libreoffice-gtk3 (<< 1:5.2.0~) +Recommends: libreoffice-gtk3 +Description: GTK+ 3 widget wrapping LibreOffice functionality + This package contains a (basic) GTK+ document viewer widget (used + by e.g. LOKDocView) + +Package: libreofficekit-data +Architecture: all +Section: web +Depends: ${misc:Depends} +Recommends: gir1.2-lokdocview-0.1 +Description: common data for LOKDocView + LOKDocView is the GTK+ 3 widget that wraps the libreoffice functionality and + exposes a simple API for applications to use this widget. + . + This package contains architecture-independent data (e.g. the selection + handlers). + diff --git a/debian/control.gtk4.in b/debian/control.gtk4.in new file mode 100644 index 00000000000..2838b83826d --- /dev/null +++ b/debian/control.gtk4.in @@ -0,0 +1,18 @@ +Package: libreoffice-gtk4 +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: libreofficekit-data +Replaces: libreoffice-core (<< 4:7.6.0~rc2) +Section: gnome +Enhances: libreoffice +Description: office productivity suite -- GTK 4 integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the GTK plugin for drawing LibreOffices widgets + with GTK 4 and GTK/GNOMEish print dialog. + . + You need to enable it manually by export SAL_USE_VCLPLUGIN=gtk4. + diff --git a/debian/control.help.in b/debian/control.help.in new file mode 100644 index 00000000000..40163e9338a --- /dev/null +++ b/debian/control.help.in @@ -0,0 +1,18 @@ +Package: libreoffice-help-@LCODE@ +Architecture: all +Section: doc +Recommends: libreoffice-core (>> ${base-version}), + ${help-recommends} +Depends: libreoffice-l10n-@LCODE@, + libreoffice-common (>= 1:6.1.0~), + ${help-depends}, + ${misc:Depends} +Provides: libreoffice-help (= ${help-l10n-virtual-version}) +Replaces: libreoffice-help-common (<< 1:6.4.1~rc1) +Description: office productivity suite -- @LNAME@ help + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the help of LibreOffice in + @LNAME@. + diff --git a/debian/control.in b/debian/control.in new file mode 100644 index 00000000000..1b221641c54 --- /dev/null +++ b/debian/control.in @@ -0,0 +1,1076 @@ +Source: libreoffice +Section: editors +Priority: optional +Maintainer: Debian LibreOffice Maintainers +Uploaders: Rene Engelhard , Chris Halls +Build-Depends: %BUILD_DEPS%, +Build-Depends-Arch: %BUILD_DEPS_ARCH% +Build-Depends-Indep: %BUILD_DEPS_INDEP% +Build-Conflicts: nvidia-glx-dev, + nvidia-glx-legacy-dev, + amd-libopencl1, + nvidia-libopencl1 +Standards-Version: 4.0.1 +Rules-Requires-Root: no +Vcs-Git: https://salsa.debian.org/libreoffice-team/libreoffice/libreoffice.git +Vcs-Browser: https://salsa.debian.org/libreoffice-team/libreoffice/libreoffice +Bugs: @BUGS@ +Homepage: http://www.libreoffice.org + +Package: libreoffice +Architecture: %OOO_ARCHS% +Section: metapackages +Depends: libreoffice-base%OOO_NO_BASE_ARCHS%, + libreoffice-calc, + libreoffice-core (= ${binary:Version}), + libreoffice-draw, + libreoffice-impress, + libreoffice-math, + libreoffice-report-builder-bin%OOO_NO_REPORTBUILDER_ARCHS%, + libreoffice-writer, + ${misc:Depends}, + ${pyuno-depends} +Recommends: ${java-common-depends}, + fonts-sil-gentium-basic, + fonts-crosextra-caladea, + fonts-crosextra-carlito, + fonts-dejavu, + ${liberation-fonts-recommends}, + fonts-linuxlibertine, + fonts-noto-core, + fonts-noto-extra, + fonts-noto-mono, + fonts-noto-ui-core, + libreoffice-script-provider-bsh, + libreoffice-script-provider-js, + libreoffice-script-provider-python, + libreoffice-nlpsolver, + libreoffice-report-builder%OOO_NO_REPORTBUILDER_ARCHS%, + libreoffice-wiki-publisher, + libreoffice-sdbc-mysql, + libreoffice-sdbc-postgresql, + python3-pip, + python3-setuptools, + python3-venv, + ${afdko-recommends} +Suggests: cups-bsd, + ghostscript, + hunspell-dictionary, + hyphen-hyphenation-patterns, + firefox-esr | thunderbird | firefox, + imagemagick, + libgl1, + libreoffice-grammarcheck, + libreoffice-help (= ${help-l10n-virtual-version}), + libreoffice-l10n (= ${help-l10n-virtual-version}), + ${libsane-suggests}, + libxrender1, + myspell-dictionary, + mythes-thesaurus, + openclipart-libreoffice, + pstoedit, + unixodbc, + gnupg, + gpa, + ${gstreamer-plugins-suggests}, + ${java-runtime-depends}, + ${ooo-officebean-dep}, + libreoffice-librelogo, + %LO-DESKTOP-INTEGRATION% +Conflicts: libreoffice-dev (<= 1:5.0.3~rc1-2), libreoffice-dev-doc (<= 1:5.0.3~rc1-2) +Description: office productivity suite (metapackage) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This metapackage installs all components of libreoffice: + * libreoffice-writer: Word processor + * libreoffice-calc: Spreadsheet + * libreoffice-impress: Presentation + * libreoffice-draw: Drawing + * libreoffice-base: Database + * libreoffice-math: Equation editor + It also recommends additional packages (e.g. fonts) in order to match an + upstream LibreOffice install as closely as possible. + . + You can extend the functionality of LibreOffice by installing these + packages: + * hunspell-*/myspell-*: Hunspell/Myspell dictionaries + for use with LibreOffice + * libreoffice-l10n-*: UI interface translation + * libreoffice-help-*: User help + * mythes-*: Thesauri for the use with LibreOffice + * hyphen-*: Hyphenation patterns for LibreOffice + * libreoffice-gtk3: Gtk UI Plugin, GNOME File Picker support + * libreoffice-gnome: GIO backend + * unixodbc: ODBC database support + * cups-bsd: Allows LibreOffice to detect your CUPS printer queues + automatically + * libsane: Use your sane-supported scanner with LibreOffice + * libxrender1: Speed up display by using Xrender library + * libgl1: OpenGL support + * openclipart-libreoffice: Open Clip Art Gallery with LibreOffice index + files + * firefox-esr | thunderbird | firefox: + Mozilla profile with Certificates needed for XML Security... + * openjdk-11-jre | openjdk-8-jre | java8-runtime: + Java Runtime Environment for use with LibreOffice + * pstoedit / imagemagick / ghostscript: helper tools for EPS + * gstreamer0.10-plugins-*: GStreamer plugins for use with LibreOffices + media backend + * libpaper-utils: papersize detection support via paperconf + * afdko-bin: Handling of embedded fonts during import/export/... + +Package: libreoffice-nogui +Architecture: %OOO_NOGUI_ARCHS% +Section: metapackages +Depends: libreoffice-base-nogui%OOO_NO_BASE_ARCHS%, + libreoffice-calc-nogui, + libreoffice-core-nogui (= ${binary:Version}), + libreoffice-draw-nogui, + libreoffice-impress-nogui, + libreoffice-math-nogui, + libreoffice-report-builder-bin-nogui%OOO_NO_REPORTBUILDER_ARCHS%, + libreoffice-writer-nogui, + ${misc:Depends}, + ${pyuno-depends} +Recommends: ${java-common-depends}, + libreoffice-script-provider-bsh, + libreoffice-script-provider-js, + libreoffice-script-provider-python, + libreoffice-sdbc-mysql, + libreoffice-sdbc-postgresql, + python3-pip, + python3-setuptools, + python3-venv +Suggests: ghostscript, + hunspell-dictionary, + hyphen-hyphenation-patterns, + imagemagick, + libreoffice-grammarcheck, + myspell-dictionary, + mythes-thesaurus, + pstoedit, + unixodbc, + gnupg, + gpa, + ${java-runtime-depends}, + ${afdko-recommends} +Description: office productivity suite (metapackage, no GUI) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This metapackage installs all components of libreoffice: + * libreoffice-writer: Word processor + * libreoffice-calc: Spreadsheet + * libreoffice-impress: Presentation + * libreoffice-draw: Drawing + * libreoffice-base: Database + * libreoffice-math: Equation editor + . + WITHOUT GUI SUPPORT. + . + This package is intended mostly for scripting needs. + +Package: libreoffice-l10n-za +Section: metapackages +Architecture: all +Depends: libreoffice-l10n-af, + libreoffice-l10n-en-za, + libreoffice-l10n-nr, + libreoffice-l10n-nso, + libreoffice-l10n-ss, + libreoffice-l10n-st, + libreoffice-l10n-tn, + libreoffice-l10n-ts, + libreoffice-l10n-ve, + libreoffice-l10n-xh, + libreoffice-l10n-zu, + ${misc:Depends} +Description: office productivity suite -- South African language packages + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package is a metapackage installing l10n packages for all 11 South + African languages. + +Package: libreoffice-l10n-in +Section: metapackages +Architecture: all +Depends: libreoffice-l10n-as, + libreoffice-l10n-bn, + libreoffice-l10n-gu, + libreoffice-l10n-hi, + libreoffice-l10n-kn, + libreoffice-l10n-ml, + libreoffice-l10n-mr, + libreoffice-l10n-ne, + libreoffice-l10n-or, + libreoffice-l10n-pa-in, + libreoffice-l10n-ta, + libreoffice-l10n-te, + ${misc:Depends} +Recommends: fonts-indic +Description: office productivity suite -- Indic language packages + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package is a metapackage installing l10n packages for all available + indic languages. + +Package: libreoffice-core +Architecture: %OOO_ARCHS% +Built-Using: ${cargo:Built-Using} +Static-Built-Using: ${cargo:Static-Built-Using} +Depends: fontconfig, + fonts-opensymbol (>= 2:102.12), + libreoffice-common (>> ${base-version}), + libreoffice-gtk3 [alpha ia64] | libreoffice-gtk4 [alpha ia64] | libreoffice-qt5 [alpha ia64] | libreoffice-kf5 [alpha ia64] | libreoffice-qt6 [alpha ia64], + ure (>= 1:7.4.0~), + uno-libs-private (>= 4:7.5.0~), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: libpaper-utils, ${gstreamer-plugins-suggests}, ${afdko-recommends} +Breaks: libreoffice-base (<< ${binary:Version}), + libreoffice-calc (<< ${binary:Version}), + libreoffice-dev (<< ${binary:Version}), + libreoffice-draw (<< ${binary:Version}), + libreoffice-evolution (<< ${binary:Version}), + libreoffice-gnome (<< ${binary:Version}), + libreoffice-gtk2 (<< ${binary:Version}), + libreoffice-gtk3 (<< ${binary:Version}), + libreoffice-impress (<< ${binary:Version}), + libreoffice-qt5 (<< ${binary:Version}), + libreoffice-kde4 (<< ${binary:Version}), + libreoffice-kde5 (<< ${binary:Version}), + libreoffice-kf5 (<< ${binary:Version}), + libreoffice-officebean (<< ${binary:Version}), + libreoffice-writer (<< ${binary:Version}), + browser-plugin-libreoffice, + libreoffice-pdfimport (<< 1:5.4~), + libreoffice-common (<< 1:5.4.1), + libreoffice-avmedia-backend-gstreamer (<< ${binary:Version}) +Conflicts: libreoffice-filter-binfilter, libreoffice-avmedia-backend-vlc, libreoffice-mysql-connector (<< 1:6.2.0~), libreoffice-core-nogui +# for trixie, copied from libreoffice-common, see #985297 (here for the other way round) + , + libreoffice-base (<< 4:25.2.1~rc1-3~), + libreoffice-calc (<< 4:25.2.1~rc1-3~), + libreoffice-draw (<< 4:25.2.1~rc1-3~), + libreoffice-impress (<< 4:25.2.1~rc1-3~), + libreoffice-math (<< 4:25.2.1~rc1-3~), + libreoffice-report-builder (<< 4:25.2.1~rc1-3~), + libreoffice-writer (<< 4:25.2.1~rc1-3~), +Replaces: libreoffice-pdfimport (<< 1:5.4~), libreoffice-common (<< 1:6.3.0~rc1~), libreoffice-avmedia-backend-gstreamer, libreoffice-core-nogui +Description: office productivity suite -- arch-dependent files + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the architecture-dependent core files of + LibreOffice. See the libreoffice package for more information. + +Package: libreoffice-core-nogui +Architecture: %OOO_NOGUI_ARCHS% +Built-Using: ${cargo:Built-Using} +Static-Built-Using: ${cargo:Static-Built-Using} +Depends: fontconfig, + fonts-opensymbol (>= 2:102.12), + libreoffice-common (>> ${base-version}), + ure (>= 1:7.4.0~), + uno-libs-private (>= 4:7.5.0~), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: libpaper-utils +Breaks: libreoffice-base (<< ${binary:Version}), + libreoffice-calc, + libreoffice-dev (<< ${binary:Version}), + libreoffice-draw (<< ${binary:Version}), + libreoffice-evolution (<< ${binary:Version}), + libreoffice-gnome (<< ${binary:Version}), + libreoffice-gtk2, + libreoffice-gtk3, + libreoffice-impress (<< ${binary:Version}), + libreoffice-qt5, + libreoffice-kde4, + libreoffice-kde5, + libreoffice-kf5, + libreoffice-officebean (<< ${binary:Version}), + libreoffice-writer (<< ${binary:Version}), + browser-plugin-libreoffice, + libreoffice-pdfimport (<< 1:5.4~), + libreoffice-common (<< 1:5.4.1), + libreoffice-avmedia-backend-gstreamer (<< ${binary:Version}) +Conflicts: libreoffice-filter-binfilter, libreoffice-avmedia-backend-vlc, libreoffice-mysql-connector (<< 1:6.2.0~), libreoffice-core +Provides: libreoffice-bundled +Replaces: libreoffice-pdfimport (<< 1:5.4~), libreoffice-common (<< 1:6.3.0~rc1~), libreoffice-avmedia-backend-gstreamer, libreoffice-core +Description: office productivity suite -- arch-dependent files (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the architecture-dependent core files of + LibreOffice without GUI support for server-based or commandline usage of + LibreOffice. + +Package: libreoffice-common +Architecture: all +Depends: libreoffice-style-colibre, ure, libreoffice-uiconfig-common (= ${source:Version}), ${numbertext-data-recommends}, ${misc:Depends} +Suggests: libreoffice-style, python3-scriptforge, access2base-doc +Recommends: ${pyuno-depends}, ${textcat-data-recommends}, poppler-data, xdg-utils, ${liberation2-font-recommends} | ttf-mscorefonts-installer +Conflicts: openoffice.org-unbundled, + broffice, + libreoffice-filter-mobiledev, + libreoffice-l10n-4.3, + libreoffice-l10n-4.4, + libreoffice-wiki-publisher (<< 1.2.0+LibO5.4.0~rc2), + libreoffice-base (<< 4:25.2.1~rc1-3~), + libreoffice-base-nogui (<< 4:25.2.1~rc1-3~), + libreoffice-calc (<< 4:25.2.1~rc1-3~), + libreoffice-calc-nogui (<< 4:25.2.1~rc1-3~), + libreoffice-draw (<< 4:25.2.1~rc1-3~), + libreoffice-draw-nogui (<< 4:25.2.1~rc1-3~), + libreoffice-evolution (<< 4:25.2.1~rc1-3~), + libreoffice-gnome (<< 4:25.2.1~rc1-3~), + libreoffice-impress (<< 4:25.2.1~rc1-3~), + libreoffice-impress-nogui (<< 4:25.2.1~rc1-3~), + libreoffice-l10n (<< 7.0), + libreoffice-librelogo (<< 4:25.2.1~rc1-3~), + libreoffice-math (<< 4:25.2.1~rc1-3~), + libreoffice-math-nogui (<< 4:25.2.1~rc1-3~), + libreoffice-sdbc-firebird (<< 4:25.2.1~rc1-3~), + libreoffice-sdbc-mysql (<< 4:25.2.1~rc1-3~), + libreoffice-sdbc-postgresql (<< 4:25.2.1~rc1-3~), + python3-uno (<< 1:7.0.0~alpha~), + libreoffice-report-builder (<< 4:25.2.1~rc1-3~), + libreoffice-writer (<< 4:25.2.1~rc1-3~), + libreoffice-writer-nogui (<< 4:25.2.1~rc1-3~) +Provides: libreoffice-l10n-en-us, libreoffice-access2base +Breaks: libreoffice-core (<< 4:${oover}~), + libreoffice-core-nogui (<< 4:${oover}~), + libreoffice-core (<< 1:6.4.2~rc1), + libreoffice-help-5.2, + libreoffice-help (<< 5.4), + libreoffice-l10n (<< 7.0), + libreoffice-librelogo (<< 4:25.2.1~rc1-3~), + libreoffice-sdbc-hsqldb (<< 4:25.2.1~rc1-3~), + libreoffice-sdbc-postgresql (<< 4:25.2.1~rc1-3~), + libreoffice-sdbc-mysql (<< 4:25.2.1~rc1-3~), + libreoffice-sdbc-firebird (<< 4:25.2.1~rc1-3~), + libreoffice-report-builder (<< 4:25.2.1~rc1-3~), + libreoffice-evolution (<< 4:25.2.1~rc1-3~), + libreoffice-gnome (<< 4:25.2.1~rc1-3~), + python3-uno (<< 4:25.2.1~rc1-3~), + libreoffice-core (>= 4:${next-oover}~), + libreoffice-core-nogui (>= 4:${next-oover}~), + libreoffice-style-andromeda (<< 4:${oover}~), + libreoffice-style-crystal (<< 4:${oover}~), + libreoffice-style-crystal (>= 4:${next-oover}~), + libreoffice-style-galaxy (<< 4:${oover}~), + libreoffice-style-galaxy (>= 4:${next-oover}~), + libreoffice-style-hicontrast (<< 4:${oover}~), + libreoffice-style-hicontrast (>= 4:${next-oover}~), + libreoffice-style-tango, + libreoffice-writer2latex (<< 1.0.2-9), + libreoffice-writer2xhtml (<< 1.0.2-9), + libreoffice-base (<< 1:6.4.0~beta1-2~), + openclipart-libreoffice (<= 1:0.18+dfsg-17) +Replaces: libreoffice-base (<< 1:6.4.0~beta1-2~), + libreoffice-pdfimport (<< 1:5.4~), + openclipart-libreoffice (<= 1:0.18+dfsg-17) +Description: office productivity suite -- arch-independent files + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the architecture-independent files of + LibreOffice. + +Package: libreoffice-java-common +Architecture: all +Depends: libreoffice-common, ure-java, liblibreoffice-java, libunoloader-java, ${java:Depends}, ${misc:Depends} +Breaks: libunoil-java (<< 1:6.4.0~rc1-6) +Replaces: libunoil-java (<< 1:6.4.0~rc1-6) +Description: office productivity suite -- arch-independent Java support files + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the architecture-independent files of + the Java support for LibreOffice (Java classes, scripts, config snippets). + +Package: libreoffice-help-common +Architecture: all +Depends: libreoffice-common, ${help-common-depends}, ${misc:Depends} +Breaks: libreoffice-common (<< 1:6.1.0~alpha1-1) +Replaces: libreoffice-common (<< 4:24.2.2~rc2) +Description: office productivity suite -- common files for LibreOffice help + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the common files (e.g. language-independent, media) files + for the LibreOffice Help. + +Package: libreoffice-writer +Architecture: %OOO_ARCHS% +Depends: libreoffice-base-core (= ${binary:Version})%OOO_NO_BASE_ARCHS%, + libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-writer (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: libreoffice-math, +Suggests: fonts-crosextra-caladea, + fonts-crosextra-carlito, + libreoffice-base, + ${java-common-depends}, + ${java-runtime-depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~) +Breaks: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-texmaths (<< 0.52.5~) +Description: office productivity suite -- word processor + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the wordprocessor component for LibreOffice. + +Package: libreoffice-writer-nogui +Architecture: %OOO_NOGUI_ARCHS% +Depends: libreoffice-base-core (= ${binary:Version})%OOO_NO_BASE_ARCHS%, + libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: libreoffice-math-nogui, +Suggests: fonts-crosextra-caladea, + fonts-crosextra-carlito, + libreoffice-base, + ${java-common-depends}, + ${java-runtime-depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-writer +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Conflicts: libreoffice-writer +Description: office productivity suite -- word processor (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the wordprocessor component for LibreOffice. + +Package: libreoffice-calc +Architecture: %OOO_ARCHS% +Depends: libreoffice-base-core (= ${binary:Version})%OOO_NO_BASE_ARCHS%, + libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-calc (= ${source:Version}), + ${lpsolve-dep}, + ${misc:Depends}, + ${shlibs:Depends} +Suggests: ocl-icd-libopencl1 | mesa-opencl-icd | beignet-opencl-icd +Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-core (<< 4:25.2.1-3~), libreoffice-core-nogui (<< 4:25.2.1-3~) +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Description: office productivity suite -- spreadsheet + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the spreadsheet component for LibreOffice. + +Package: libreoffice-calc-nogui +Architecture: %OOO_NOGUI_ARCHS% +Depends: libreoffice-base-core (= ${binary:Version})%OOO_NO_BASE_ARCHS%, + libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-calc (= ${source:Version}), + ${lpsolve-dep}, + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-calc, libreoffice-core (<< 4:25.2.1-3~), libreoffice-core-nogui (<< 4:25.2.1-3~) +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Conflicts: libreoffice-calc +Description: office productivity suite -- spreadsheet (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the spreadsheet component for LibreOffice + for use with libreoffice-core-nogui. + +Package: libreoffice-impress +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + libreoffice-draw (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-impress (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-ogltrans (<< 1:6.1.4-2~) +Conflicts: libreoffice-ogltrans (<< 1:6.1.4-2~) +Provides: libreoffice-ogltrans +Breaks: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-texmaths (<< 0.52.6~) +Description: office productivity suite -- presentation + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the presentation component for LibreOffice. + +Package: libreoffice-impress-nogui +Architecture: %OOO_NOGUI_ARCHS% +Depends: libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-draw-nogui (= ${binary:Version}) | libreoffice-draw (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-impress (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-impress +Conflicts: libreoffice-ogltrans (<< 1:6.1.4-2~), libreoffice-impress +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Description: office productivity suite -- presentation (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the presentation component for LibreOffice. + +Package: libreoffice-draw +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-draw (= ${source:Version}), libreoffice-uiconfig-impress (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-core (<< 1:6.4.1~rc1-3), libreoffice-impress (<< 4:7.5.4~rc1-1), libreoffice-impress-nogui (<< 4:7.5.4~rc1-1), libreoffice-common (<< 1:6.4.2~rc1~) +Breaks: libreoffice-core (<< 1:6.4.1~rc1-3), libreoffice-impress (<< 4:7.5.3~rc2-2), libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-texmaths (<< 0.52.6~) +Description: office productivity suite -- drawing + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the drawing component for LibreOffice. + +Package: libreoffice-draw-nogui +Architecture: %OOO_NOGUI_ARCHS% +Depends: libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-draw (= ${source:Version}), libreoffice-uiconfig-impress (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-impress (<< 4:7.5.4~rc1-1), libreoffice-impress-nogui (<< 4:7.5.4~rc1-1), libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-draw +Breaks: libreoffice-impress (<< 1:5.2.0-2), libreoffice-common (<< 1:6.4.2~rc1~) +Conflicts: libreoffice-draw +Description: office productivity suite -- drawing (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the drawing component for LibreOffice. + +Package: libreoffice-math +Architecture: %OOO_ARCHS% +Depends: fonts-opensymbol (>= 2:102.11), + libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-math (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~) +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Description: office productivity suite -- equation editor + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the equation editor component for LibreOffice. + +Package: libreoffice-math-nogui +Architecture: %OOO_NOGUI_ARCHS% +Depends: fonts-opensymbol (>= 2:102.11), + libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-math (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-math +Conflicts: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-math +Description: office productivity suite -- equation editor (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the equation editor component for LibreOffice. + +Package: libreoffice-base-core +Architecture: %OOO_BASE_ARCHS% +Depends: libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: libreoffice-base +Replaces: libreoffice-base-drivers (<< 1:6.1.1~rc1-2) +Description: office productivity suite -- shared library + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains common libraries of LibreOffice Base used by + Base, Writer and Calc. + . + If you need full Base functionality (or actual database drivers), please + install libreoffice-base (and/or libreoffice-base-drivers and/o + libreoffice-sdbc-*). + +Package: libreoffice-base +Architecture: %OOO_BASE_ARCHS% +Section: database +Depends: libreoffice-base-core (= ${binary:Version}), + libreoffice-base-drivers (= ${binary:Version}), + libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + libreoffice-uiconfig-base (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: libreoffice-report-builder, + unixodbc, + python3-access2base, + access2base-doc +Recommends: libreoffice-writer, ${java-common-depends}, ${java-runtime-depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~) +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Description: office productivity suite -- database + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the database component for LibreOffice. + +Package: libreoffice-base-nogui +Architecture: %OOO_NOGUI_ARCHS% +Section: database +Depends: libreoffice-base-core (= ${binary:Version}), + libreoffice-base-drivers (= ${binary:Version}), + libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: libreoffice-report-builder, + unixodbc, + python3-uno +Recommends: libreoffice-writer, ${java-common-depends}, ${java-runtime-depends} +Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-base +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Conflicts: libreoffice-base +Description: office productivity suite -- database (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the database component for LibreOffice. + +Package: libreoffice-style-breeze +Architecture: all +Enhances: libreoffice-core +Depends: libreoffice-style-colibre, ${misc:Depends} +Suggests: breeze-icon-theme +Provides: libreoffice-style +Recommends: libreoffice-common +Description: office productivity suite -- Breeze symbol style + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the "breeze" symbol style, default style for KDE 5. + +Package: libreoffice-style-colibre +Architecture: all +Enhances: libreoffice-core +Depends: ${misc:Depends} +Provides: libreoffice-style +Recommends: libreoffice-common +Description: office productivity suite -- colibre symbol style + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the "colibre" symbol style - a icon theme + which follow Microsoft(R) Offices color scheme. + +Package: libreoffice-style-sifr +Architecture: all +Enhances: libreoffice-core +Depends: libreoffice-style-breeze, ${misc:Depends} +Provides: libreoffice-style, libreoffice-style-hicontrast +Replaces: libreoffice-style-hicontrast +Conflicts: libreoffice-style-hicontrast +Recommends: libreoffice-common +Description: office productivity suite -- Sifr symbol style + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the "sifr" symbol style (an adaption of the Gnome + symbolic theme), needs to be manually enabled in the LibreOffice option + menu. + +Package: libreoffice-style-elementary +Architecture: all +Depends: libreoffice-style-colibre, ${misc:Depends} +Enhances: libreoffice-core +Provides: libreoffice-style +Recommends: libreoffice-common +Description: office productivity suite -- Elementary symbol style + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the "elementary" symbol style, default style + for GTK+/Gnome. + +Package: libreoffice-style-karasa-jaga +Architecture: all +Depends: ${misc:Depends} +Enhances: libreoffice-core +Provides: libreoffice-style +Recommends: libreoffice-common +Description: office productivity suite -- Karasa Jaga symbol style + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the "karasa_jaga" symbol style. + +Package: libreoffice-style-sukapura +Architecture: all +Depends: ${misc:Depends} +Enhances: libreoffice-core +Provides: libreoffice-style +Recommends: libreoffice-common +Description: office productivity suite -- Sukapura symbol style + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the "sukapura" symbol style. + +Package: libreoffice-gnome +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: ${gnome-gtk-recommends}, libreoffice-style-elementary +Suggests: libreoffice-evolution, seahorse +Section: gnome +Enhances: libreoffice +Provides: libreoffice-gtk-gnome +Replaces: libreoffice-gtk (<< 1:5.0.0~rc2-1), libreoffice-gtk3 (<< 1:7.2.0~) +Conflicts: libreoffice-gtk3 (<< 1:7.2.0~) +Description: office productivity suite -- GNOME integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the GIO support. + . + You can extend the functionality of this by installing these packages: + . + * libreoffice-evolution: Evolution addressbook support + * evolution + +Package: python3-uno +Section: python +Architecture: %OOO_ARCHS% +Enhances: libreoffice +Depends: libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-common (>= 1:7.0.0~alpha~), + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Conflicts: python-uno +Replaces: libreoffice-core (= 1:4.3.0~beta1-1), libreoffice-common (<< 1:4.4.0~beta2) +Build-Profiles: +Description: Python-UNO bridge + The Python-UNO bridge allows use of the standard LibreOffice API + with the Python scripting language. It additionally allows + others to develop UNO components in Python, thus Python UNO components + may be run within the LibreOffice process and can be called from C++ + or the built in StarBasic scripting language. +Homepage: http://udk.openoffice.org/python/python-bridge.html + +Package: libreoffice-script-provider-python +Architecture: all +Section: python +Depends: libreoffice-common, + libreoffice-core-nogui | libreoffice-core, + ${misc:Depends}, + ${python3:Depends}, + ${pyuno-depends} +Build-Profiles: +Description: Python script support provider for LibreOffice scripting framework + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + The Scripting Framework allows LibreOffice users to write and run macros + in multiple languages including LibreOffice Basic, Python, Java, BeanShell + and JavaScript. These macros can then be assigned to menus, toolbars, + keyboard shortcuts, events and embedded objects. + . + This package contains the script provider to support Python. + +Package: libreoffice-script-provider-bsh +Architecture: all +Section: java +Depends: libreoffice-common, + libreoffice-core-nogui | libreoffice-core, + ${java-common-depends}, + liblibreoffice-java, + ${java:Depends}, + ${java-runtime-depends}, + ${misc:Depends} +Build-Profiles: +Description: BeanShell script support provider for LibreOffice scripting framework + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + The Scripting Framework allows LibreOffice users to write and run macros + in multiple languages including LibreOffice Basic, Python, Java, BeanShell + and JavaScript. These macros can then be assigned to menus, toolbars, + keyboard shortcuts, events and embedded objects. + . + This package contains the script provider to support BeanShell. + +Package: libreoffice-script-provider-js +Architecture: all +Section: web +Depends: libreoffice-common, + libreoffice-core-nogui | libreoffice-core, + ${java-common-depends}, + liblibreoffice-java, + ${java:Depends}, + ${java-runtime-depends}, + ${misc:Depends} +Build-Profiles: +Description: JavaScript script support provider for LibreOffice scripting framework + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + The Scripting Framework allows LibreOffice users to write and run macros + in multiple languages including LibreOffice Basic, Python, Java, BeanShell + and JavaScript. These macros can then be assigned to menus, toolbars, + keyboard shortcuts, events and embedded objects. + . + This package contains the script provider to support JavaScript. + +Package: libreoffice-sdbc-hsqldb +Depends: libreoffice-core-nogui | libreoffice-core, ${java-common-depends}, ${java:Depends}, ${java-runtime-depends}, ${shlibs:Depends}, ${misc:Depends} +Architecture: %OOO_JAVA_ARCHS% +Section: database +Enhances: libreoffice-base-drivers +Build-Profiles: +Replaces: libreoffice-common (= 4:24.8.5-1) +Description: embedded HSQLDB SDBC driver for LibreOffice + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + The HSQLDB SDBC Driver allows one to use the HSQLDB embedded database from + LibreOffice without any wrapper layer such as ODBC or JDBC. + +Package: libreoffice-sdbc-mysql +Section: database +Architecture: %OOO_BASE_ARCHS% +Depends: libreoffice-core-nogui | libreoffice-core, ${misc:Depends}, ${shlibs:Depends} +Suggests: default-mysql-server | virtual-mysql-server +Description: MariaDB/MySQL SDBC driver for LibreOffice + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + The MariaDB/MySQL driver allows one to use the MariaDB or MySQL + database from LibreOffice without any wrapper layer such as ODBC or JDBC. + +Package: libreoffice-base-drivers +Depends: libreoffice-core-nogui | libreoffice-core, ${shlibs:Depends}, ${misc:Depends} +Architecture: %OOO_BASE_ARCHS% +Section: database +Suggests: libreoffice-sdbc-postgresql | odbc-postgresql | libpg-java, + libreoffice-sdbc-mysql | libmyodbc | libmariadb-java, + libsqliteodbc | tdsodbc | odbc-mdbtools, + libjtds-java, +Recommends: libreoffice-sdbc-hsqldb [%OOO_JAVA_ARCHS%], ${base-firebird-recommends} +Replaces: libreoffice-base (<< 1:4.3.0-3), libreoffice-core (<< 1:6.2.0~beta1~) +Breaks: libreoffice-base (<< 1:4.3.0-3) +Description: Database connectivity drivers for LibreOffice + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the database connectivity drivers used by LibreOffices + database functionality: + - ODBC + - JDBC + - dBase + - Calc + - Flat files + . + You can extend this by installing: + . + * unixodbc: ODBC database support + * libmyodbc | odbc-postgresql | libsqliteodbc | tdsodbc | odbc-mdbtools: ODBC + drivers for: + - MySQL + - PostgreSQL + - SQLite + - MS SQL / Sybase SQL + - *.mdb (JET / MS Access) + * libmariadb-java | libpg-java | libjtds-java: JDBC Drivers + for: + - MySQL/MariaDB + - PostgreSQL + - MS SQL Server and Sybase + * libreoffice-sdbc-hsqldb: embedded HSQLDB SDBC Driver + * libreoffice-sdbc-firebird: (embedded) Firebird SDBC Driver + * libreoffice-sdbc-postgresql: PostgreSQL SDBC Driver + * libreoffice-sdbc-mysql: MySQL/MariaDB SDBC Driver + +Package: python3-access2base +Section: python +Architecture: all +Homepage: http://www.access2base.com/access2base.html +Depends: libreoffice-common (>= 1:6.4.0~beta1-2~), libreoffice-base, libreoffice-access2base, python3-uno, ${python3:Depends}, ${misc:Depends} +Replaces: libreoffice-base +Build-Profiles: +Recommends: access2base-doc +Description: interface between Python and the LibreOffice Access2Base library + Access2Base is a LibreOffice/OpenOffice Basic library of macros for + (business or personal) application developers and advanced users. + . + Their syntax and their meaning are directly inspired by MSAccess. + The macros are callable from + - a LibreOffice / OpenOffice Base application, + - any LibreOffice / OpenOffice document wanting to access data + stored in databases. + . + This package contains an interface between Python (user) scripts + and Access2Base. + +Package: python3-scriptforge +Section: python +Architecture: all +Depends: libreoffice-common (>= 1:7.1.0~), python3-uno, ${python3:Depends}, ${misc:Depends} +Replaces: libreoffice-common (<< 4:7.6.0~) +Build-Profiles: +Description: interface between Python and the LibreOffice ScriptForge library + ScriptForge libraries build up an extensible collection of macro scripting + resources for LibreOffice to be invoked from Basic macros or Python scripts. + . + This package contains the public scriptforge python library. + +Package: libofficebean-java +Section: java +Depends: liblibreoffice-java, + ${java-runtime-depends}, + ${java:Depends}, + ${shlibs:Depends}, + ${misc:Depends} +Recommends: libreoffice-core-nogui | libreoffice-core +Architecture: %OOO_JAVA_ARCHS% +Replaces: libreoffice-officebean (<< 1:6.4.0~rc2-1) +Breaks: libreoffice-officebean (<< 1:6.4.0~rc2-1) +Build-Profiles: +Description: generic Java Bean wrapper for LibreOffice components + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the Java library for the LibreOffice Office Bean + for embedding LibreOffice in custom Java applications. + +Package: libreoffice-uiconfig-common +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-common (<< 4:7.6.0~beta1) +Description: UI data ("config") for LibreOffice ("common" set) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + +Package: libreoffice-uiconfig-base +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: libreoffice-base (<< 4:7.6.0~beta1), libreoffice-base-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-base (<< 4:7.6.0~beta1), libreoffice-base-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Description: UI data ("config") for LibreOffice Base + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + +Package: libreoffice-uiconfig-calc +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: libreoffice-calc (<< 4:7.6.0~beta1), libreoffice-calc-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-calc (<< 4:7.6.0~beta1), libreoffice-calc-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Description: UI data ("config") for LibreOffice Calc + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + +Package: libreoffice-uiconfig-draw +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: libreoffice-draw (<< 4:7.6.0~beta1), libreoffice-draw-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-draw (<< 4:7.6.0~beta1), libreoffice-draw-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Description: UI data ("config") for LibreOffice Draw + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + +Package: libreoffice-uiconfig-impress +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: libreoffice-impress (<< 4:7.6.0~rc1), libreoffice-impress-nogui (<< 4:7.6.0~rc1), libreoffice-draw (<< 4:7.6.0~rc1), libreoffice-draw-nogui (<< 4:7.6.0~rc1), libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-impress (<< 4:7.6.0~rc1), libreoffice-impress-nogui (<< 4:7.6.0~rc1), libreoffice-draw (<< 4:7.6.0~rc1), libreoffice-draw-nogui (<< 4:7.6.0~rc1), libreoffice-common (<< 4:7.6.0~beta1) +Description: UI data ("config") for LibreOffice Impress + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + +Package: libreoffice-uiconfig-math +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: libreoffice-math (<< 4:7.6.0~beta1), libreoffice-math-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-math (<< 4:7.6.0~beta1), libreoffice-math-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Description: UI data ("config") for LibreOffice Math + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + +Package: libreoffice-uiconfig-writer +Section: misc +Architecture: all +Depends: ${misc:Depends} +Replaces: libreoffice-writer (<< 4:7.6.0~beta1), libreoffice-writer-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-writer (<< 4:7.6.0~beta1), libreoffice-writer-nogui (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Description: UI data ("config") for LibreOffice Writer + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + diff --git a/debian/control.kf5.in b/debian/control.kf5.in new file mode 100644 index 00000000000..3eaa5b3702c --- /dev/null +++ b/debian/control.kf5.in @@ -0,0 +1,17 @@ +Package: libreoffice-kf5 +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + ${kf5-qt5-depends}, + ${misc:Depends}, + ${shlibs:Depends} +Recommends: ${plasma-iconset-dep} +Replaces: libreoffice-kde (<< 1:6.1.0~alpha1-1) +Section: kde +Enhances: libreoffice +Description: office productivity suite -- KDE Frameworks 5 integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the KF5 plugin for LibreOffice and a KF5-based File + Picker when running under Plasma. + diff --git a/debian/control.kf6.in b/debian/control.kf6.in new file mode 100644 index 00000000000..e92467d43f2 --- /dev/null +++ b/debian/control.kf6.in @@ -0,0 +1,16 @@ +Package: libreoffice-kf6 +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + ${kf6-qt6-depends}, + ${misc:Depends}, + ${shlibs:Depends} +Recommends: ${plasma-iconset-dep} +Section: kde +Enhances: libreoffice +Description: office productivity suite -- KDE Frameworks 6 integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the KF6 plugin for LibreOffice and a KF6-based File + Picker when running under Plasma. + diff --git a/debian/control.lang.in b/debian/control.lang.in new file mode 100644 index 00000000000..55546fd76b6 --- /dev/null +++ b/debian/control.lang.in @@ -0,0 +1,29 @@ +Package: libreoffice-l10n-@LCODE@ +Section: localization +Architecture: all +Depends: libreoffice-common (>= 1:7.0.0~alpha~), ${misc:Depends}, @LOCALES_DEPENDS@ +Recommends: libreoffice-core (>> ${base-version}) @FONT_RECOMMENDS@ +Provides: libreoffice-l10n (= ${help-l10n-virtual-version}) +Suggests: hunspell-dictionary-@LCODE@ | myspell-dictionary-@LCODE@ | libreoffice-spellcheck-@LCODE@, + hyphen-@LCODE@ | libreoffice-hyphenation-@LCODE@, + libreoffice-grammarcheck-@LCODE@, + libreoffice-help-@LCODE@, + mythes-@LCODE@ +Description: office productivity suite -- @LNAME@ language package + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the localization of LibreOffice in + @LNAME@. + It contains the user interface, the templates and the autotext features. + (please note that not all this is available for all possible languages). + You can switch user interface language using the locales system. + . + Spelling dictionaries, hyphenation patterns, thesauri and help are not + included in this package. There are some available in separate packages + (myspell-*, hyphen-*, mythes-*, libreoffice-help-*) + . + If you just want to be able to spellcheck etc. in other languages, you can + install extra dictionaries/hyphenation patterns/thesauri independently of + the language packs. + diff --git a/debian/control.librelogo.in b/debian/control.librelogo.in new file mode 100644 index 00000000000..a07a2e08e2d --- /dev/null +++ b/debian/control.librelogo.in @@ -0,0 +1,22 @@ +Package: libreoffice-librelogo +Section: misc +Architecture: all +Depends: libreoffice-core, + libreoffice-writer, + libreoffice-script-provider-python, + libreoffice-common (>= 1:7.0.0~alpha), + ${misc:Depends} +Build-Profiles: +Homepage: http://librelogo.org +Description: Logo-like programming language for LibreOffice + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains Librelogo, which is a pyuno-based Logo-like programming + language with interactive vectorgraphics for education and DTP + - basic Logo syntax for back compatibility with educational Logo systems + - interactive vectorgraphics in LibreOffice Writer + - native commands (easily translatable) + - Python data structures (list, tuple, set, dictionary) and other Python + features + diff --git a/debian/control.lokit.in b/debian/control.lokit.in new file mode 100644 index 00000000000..6340450e0b2 --- /dev/null +++ b/debian/control.lokit.in @@ -0,0 +1,12 @@ +Package: libreofficekit-dev +Section: libdevel +Architecture: all +Depends: ${misc:Depends} +Suggests: libreofficekit-dev-gtk +Recommends: libreoffice-core, libreofficekit-data +Description: LibreOfficeKit -- headers + LibreOfficeKit can be used for accessing LibreOffice functionality through + C/C++, without any need to use UNO. + . + This package contains the headers needed for using LibreOfficeKit. + diff --git a/debian/control.mediawiki.in b/debian/control.mediawiki.in new file mode 100644 index 00000000000..55e3c5c89cb --- /dev/null +++ b/debian/control.mediawiki.in @@ -0,0 +1,18 @@ +Package: libreoffice-wiki-publisher +Section: misc +Architecture: all +Depends: libreoffice-core, + liblibreoffice-java, + ${java-common-depends}, + ${java:Depends}, + ${java-runtime-depends}, + ${misc:Depends} +Enhances: libreoffice-writer +Suggests: mediawiki, libreoffice-help-common +Description: LibreOffice extension for working with MediaWiki articles + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains an extension to create/edit/publish MediaWiki + articles with LibreOffice + diff --git a/debian/control.nlpsolver.in b/debian/control.nlpsolver.in new file mode 100644 index 00000000000..9b386d8bc4e --- /dev/null +++ b/debian/control.nlpsolver.in @@ -0,0 +1,15 @@ +Package: libreoffice-nlpsolver +Architecture: all +Depends: ${misc:Depends}, libreoffice-calc, libreoffice-core, liblibreoffice-java, ${java-common-depends}, ${java-runtime-depends} +Suggests: libreoffice-help-common +Section: math +Description: "Solver for Nonlinear Programming" extension for LibreOffice + By default LibreOffice Calc ships with a solver engine for linear + programming only. This allows the optimization of models to a certain degree. + However, if the formulas or constraints become more complex, + nonlinear programming is required. That missing gap is now filled by the + Solver for Nonlinear Programming extension. + . + Currently it incorporates two Evolutionary Algorithms which are able to + handle floating point and integer variables as well as nonlinear constraints. + diff --git a/debian/control.plasma.in b/debian/control.plasma.in new file mode 100644 index 00000000000..0a0e21dfbc9 --- /dev/null +++ b/debian/control.plasma.in @@ -0,0 +1,13 @@ +Package: libreoffice-plasma +Architecture: @PLASMA_ARCHITECTURE@ +Depends: ${misc:Depends}, + ${shlibs:Depends} +Recommends: libreoffice-kf@PLASMA_VERSION@ +Replaces: libreoffice-kde5 (<< 1:6.4.0~) +Description: office productivity suite -- some Plasma integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains some minor Plasma integration (like AppData + and "Create New..." integration) and a KDE/KF@PLASMA_KF_VERSION@ configuration backend. + diff --git a/debian/control.postgresql.in b/debian/control.postgresql.in new file mode 100644 index 00000000000..d4157686868 --- /dev/null +++ b/debian/control.postgresql.in @@ -0,0 +1,17 @@ +Package: libreoffice-sdbc-postgresql +Section: misc +Architecture: %OOO_BASE_ARCHS% +Depends: libreoffice-core-nogui | libreoffice-core, + libreoffice-common (>= 1:7.0.0~alpha), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: postgresql (>= 8.4) +Enhances: libreoffice-base-drivers +Description: PostgreSQL SDBC driver for LibreOffice + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + The PostgreSQL SDBC Driver allows one to use the PostgreSQL database from + LibreOffice without any wrapper layer such as ODBC or JDBC. +Homepage: http://wiki.documentfoundation.org/PostgreSQL-SDBC + diff --git a/debian/control.qt5.in b/debian/control.qt5.in new file mode 100644 index 00000000000..aea9dbebb63 --- /dev/null +++ b/debian/control.qt5.in @@ -0,0 +1,17 @@ +Package: libreoffice-qt5 +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: qtgstreamer-plugins-qt5 +Enhances: libreoffice +Description: office productivity suite -- Qt 5 integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the Qt 5 plugin for drawing LibreOffices widgets + with Qt 5 and a Qt File Picker and print dialog. + . + You need to enable it manually by export SAL_USE_VCLPLUGIN=qt5 if you are + not using Plasma. + diff --git a/debian/control.qt6.in b/debian/control.qt6.in new file mode 100644 index 00000000000..2cc784160f0 --- /dev/null +++ b/debian/control.qt6.in @@ -0,0 +1,15 @@ +Package: libreoffice-qt6 +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Enhances: libreoffice +Description: office productivity suite -- Qt 6 integration + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the Qt 6 plugin for drawing LibreOffices widgets + with Qt 6 and a Qt File Picker and print dialog. + . + You need to enable it manually by export SAL_USE_VCLPLUGIN=qt6. + diff --git a/debian/control.reportbuilder.in b/debian/control.reportbuilder.in new file mode 100644 index 00000000000..99f33d264c0 --- /dev/null +++ b/debian/control.reportbuilder.in @@ -0,0 +1,73 @@ +Package: libreoffice-report-builder +Section: misc +Architecture: all +Depends: libreoffice-core | libreoffice-core-nogui, + libreoffice-report-builder-bin (>= ${base-version}), + libreoffice-common (>= 1:7.0.0~alpha), + libreoffice-uiconfig-report-builder (= ${source:Version}), + liblibreoffice-java, + ${java:Depends}, + ${java-common-depends}, + ${misc:Depends}, + ${report-builder-jar-depends} +Provides: libreoffice-reportdesigner +Enhances: libreoffice-base +Breaks: libreoffice-common (<< 1:6.4.2~rc1~) +Replaces: libreoffice-common (<< 1:6.4.2~r~~) +Description: LibreOffice component for building database reports + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the report builder: + "Create with the Sun Report Builder stylish, smart-looking database reports. + The flexible report editor can define group and page headers as well as + group and page footers and even calculation fields are available to + accomplish complex database reports." + +Package: libreoffice-report-builder-bin +Section: misc +Architecture: %OOO_REPORTBUILDER_ARCHS% +Depends: libreoffice-core, + libreoffice-base, + ${misc:Depends}, + ${shlibs:Depends} +Description: LibreOffice component for building database reports -- libraries + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains some architecture-dependent support libraries + (librpt*.so) for the report builder component. + +Package: libreoffice-report-builder-bin-nogui +Section: misc +Architecture: %OOO_REPORTBUILDER_ARCHS% +Depends: libreoffice-core-nogui | libreoffice-core, + libreoffice-base-nogui | libreoffice-base, + ${misc:Depends}, + ${shlibs:Depends} +Conflicts: libreoffice-report-builder-bin +Replaces: libreoffice-report-builder-bin +Description: LibreOffice component for building database reports -- libraries (no GUI variant) + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains some architecture-dependent support libraries + (librpt*.so) for the report builder component. + +Package: libreoffice-uiconfig-report-builder +Section: misc +Architecture: all +Replaces: libreoffice-report-builder (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Breaks: libreoffice-report-builder (<< 4:7.6.0~beta1), libreoffice-common (<< 4:7.6.0~beta1) +Depends: ${misc:Depends} +Description: UI data ("config") for the LibreOffice Report Builder + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains internal "configuration" of various UI components. + It is not meant to be editable. It is just split out for dependencies of + other packages. + . + You will usually not need to install this package manually but it should + just be pulled in by other packages. + diff --git a/debian/control.rust.in b/debian/control.rust.in new file mode 100644 index 00000000000..4a8dae8dc7e --- /dev/null +++ b/debian/control.rust.in @@ -0,0 +1,28 @@ +Package: librust-rust-uno-dev +Section: rust +Architecture: %OOO_RUST_UNO_ARCHS% +Depends: libreoffice-dev, libreoffice-core, ${misc:Depends} +Built-Using: ${cargo:Built-Using} +Static-Built-Using: ${cargo:Static-Built-Using} +Suggests: libreoffice-rust-uno-example +Description: Rust FFI binding for LibreOffice UNO API - Rust source code + Source code for Debianized Rust crate "rust_uno" + . + (packaged from LibreOffice source package) + +Package: libreoffice-rust-uno-example +Section: rust +Architecture: %OOO_RUST_UNO_ARCHS% +Depends: ${shlibs:Depends}, libreoffice-writer (>= 4:26.2.0~alpha0~) | libreoffice-writer-nogui (>= 4:26.2.0~alpha0~), ${misc:Depends} +Suggests: librust-rust-uno-dev +Built-Using: ${cargo:Built-Using} +Static-Built-Using: ${cargo:Static-Built-Using} +Build-Profiles: +Description: Example extension for LibreOffices Rust-UNO binding + This package contains a example extension testing the Libreoffice + Rust-UNO binding. + . + You normally don't need it unless you want to look at it since it doesn't + contain anything useful except a test; but it is used for testing in + autopkgtest + diff --git a/debian/control.sdk.in b/debian/control.sdk.in new file mode 100644 index 00000000000..90c994ae2b1 --- /dev/null +++ b/debian/control.sdk.in @@ -0,0 +1,70 @@ +Package: libreoffice-dev +Section: devel +Architecture: %OOO_ARCHS% +Depends: libreoffice-core-nogui (= ${binary:Version}) | libreoffice-core (= ${binary:Version}), + libreoffice-dev-common (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: g++, ${java-common-depends}, ${java-runtime-depends}, libreofficekit-dev +Suggests: libmythes-dev, libreofficekit-dev-gtk, libreoffice-dev-doc +Replaces: libreoffice-dev-common (<< 1:5.4.1~) +Conflicts: libreoffice-dev-doc (<< 1:5.2.5-2~), libreoffice (<< 1:5.2.5-2~) +Breaks: libreoffice-dev-common (<< 1:5.4.1~) +Description: office productivity suite -- SDK -- architecture-dependent parts + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the (architecture-dependent) files needed to build + plugins/add-ons for LibreOffice (build tools, libraries, arch-dependent + includes, ...). + +Package: libreoffice-dev-gui +Section: devel +Architecture: %OOO_ARCHS% +Depends: libreoffice-core (= ${binary:Version}), + libreoffice-dev (= ${binary:Version}), + libreoffice-dev-common (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Replaces: libreoffice-dev (<< 1:7.0.0~) +Breaks: libreoffice-dev (<< 1:7.0.0~) +Description: office productivity suite -- "GUI" development stuff + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the gengal utility which was moved from + libreoffice-dev. + +Package: libreoffice-dev-common +Section: devel +Architecture: all +Depends: ${misc:Depends} +Recommends: python3 +Replaces: libreoffice-dev (<< 4:24.8.0~beta1~) +Breaks: libreoffice-dev (<< 1:5.2.0~) +Conflicts: libreoffice (<< 1:5.2.5-2~) +Description: office productivity suite -- SDK -- architecture-independent parts + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the (architecture-independent) files needed to build + plugins/add-ons for LibreOffice (includes, IDL files, ...) + +Package: libreoffice-dev-doc +Section: doc +Architecture: all +Depends: ${misc:Depends} +Recommends: libreoffice-dev (= ${binary:Version}), + www-browser +Conflicts: openoffice.org-dev-doc, libreoffice-dev (<= 1:5.0.3~rc1-2), libreoffice (<< 1:5.2.5-2~) +Build-Profiles: +Description: office productivity suite -- SDK documentation + LibreOffice is a full-featured office productivity suite that provides + a near drop-in replacement for Microsoft(R) Office. + . + This package contains the documentation of the LibreOffice SDK: + . + * C++/Java API reference + * IDL reference + * C++/Java/Basic examples + diff --git a/debian/control.test-packages.in b/debian/control.test-packages.in new file mode 100644 index 00000000000..4130f6ecb3d --- /dev/null +++ b/debian/control.test-packages.in @@ -0,0 +1,18 @@ +Package: libreoffice-subsequentcheckbase +Section: libs +Architecture: all +Depends: liblibreoffice-java, ${java:Depends}, ${misc:Depends} +Build-Profiles: +Description: LibreOffice java test libraries + Java libraries LibreOffice subsequentchecks integration test suite + +Package: libreoffice-smoketest-data +Section: misc +Depends: ${misc:Depends} +Architecture: all +Build-Profiles: +Replaces: libreoffice-java-common (<< 1:6.4.0~rc1-6) +Breaks: libreoffice-java-common (<< 1:6.4.0~rc1-6) +Description: data files for LibreOffices "smoketest" + Data files for the LibreOffice "smoketest". + diff --git a/debian/control.ure.in b/debian/control.ure.in new file mode 100644 index 00000000000..4231103518d --- /dev/null +++ b/debian/control.ure.in @@ -0,0 +1,180 @@ +Package: uno-libs-private +Section: libs +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends} +Replaces: uno-libs3 +Breaks: uno-libs3, libuno-cppuhelpergcc3-3 (<< 4:7.5.0~), libreoffice-core (<< 4:7.5.0~), libreoffice-core-nogui (<< 4:7.5.0~) +Description: LibreOffice UNO runtime environment -- private libraries used by public ones + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + . + This package contains some private UNO/URE libraries which are used by public + ones (e.g. cppu). + +Package: libuno-sal3t64 +Section: libs +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends} +Replaces: ure (<< 5.0.0~rc2-1), uno-libs3, libuno-sal3 +Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3, libuno-sal3 (<< ${source:Version}) +Provides: ${t64:Provides}, ${sal-private-abi:Provides} +Description: LibreOffice UNO runtime environment -- SAL public library + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + . + This package contains the System Abstraction Layer (SAL) library. + +Package: libuno-salhelpergcc3-3t64 +Section: libs +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends} +Replaces: ure (<< 5.0.0~rc2-1), uno-libs3, libuno-salhelpergcc3-3 +Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3, libuno-salhelpergcc3-3 (<< ${source:Version}) +Provides: ${t64:Provides}, ${salhelper-private-abi:Provides} +Description: LibreOffice UNO runtime environment -- SAL helpers for C++ library + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + . + This package contains C++ helpers to make use of sal easier. + +Package: libuno-cppu3t64 +Section: libs +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends} +Replaces: ure (<< 5.0.0~rc2-1), uno-libs3, libuno-cppu3 +Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3, libuno-cppu3 (<< ${source:Version}) +Provides: ${t64:Provides} +Description: LibreOffice UNO runtime environment -- CPPU public library + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + . + This package contains CPPU, the type definitions/implementations for the core + of UNO. + +Package: libuno-cppuhelpergcc3-3t64 +Section: libs +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends}, uno-libs-private (= ${binary:Version}) +Replaces: ure (<< 5.0.0~rc2-1), uno-libs3, libuno-cppuhelpergcc3-3 +Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3, libuno-cppuhelpergcc3-3 (<< ${source:Version}) +Provides: ${t64:Provides} +Description: LibreOffice UNO runtime environment -- CPPU helper library + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + . + This package contains the cppuhelper library (helpers for using cppu in C++, + e.g. templates for implementing UNO components, bootstrapping stuff) + +Package: libuno-purpenvhelpergcc3-3t64 +Section: libs +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends} +Replaces: ure (<< 5.0.0~rc2-1), uno-libs3, libuno-purpenvhelpergcc3-3 +Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3, libuno-purpenvhelpergcc3-3 (<< ${source:Version}) +Provides: ${t64:Provides} +Description: LibreOffice UNO runtime environment -- "purpose environment" helper + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + . + This package contains a library which contains a helper for implementing + so-called "purpose environments". + +Package: ure +Section: libs +Architecture: %OOO_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends}, uno-libs-private (= ${binary:Version}) +Replaces: libreoffice-common (<< 1:4.5.0), libreoffice-core (<< 1:5.3.0~beta1~), libjuh-java (<< 1:6.4.0~rc1-6), libridl-java (<< 1:6.4.0~rc1-6), libunoloader-java (<< 1:6.4.0~rc1-6), libjurt-java (<< 1:6.4.0~rc1-6), ure-java (<< 1:7.1.1~rc2-1) +Breaks: libreoffice-core (<< 1:7.4.0~), libreoffice-core-nogui (<< 1:7.4.0~), libreoffice-common (<< 1:4.5.0), libjuh-java (<< 1:6.4.0~rc1-6), libridl-java (<< 1:6.4.0~rc1-6), libunoloader-java (<< 1:6.4.0~rc1-6), libjurt-java (<< 1:6.4.0~rc1-6), ure-java (<< 1:7.1.1~rc2-1) +Description: LibreOffice UNO runtime environment + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + +Package: ure-java +Section: java +Architecture: %OOO_JAVA_ARCHS% +Depends: ${misc:Depends}, ${shlibs:Depends}, ${java:Depends}, uno-libs-private (= ${binary:Version}), ure (= ${binary:Version}), libunoloader-java +Recommends: liblibreoffice-java, ${java-runtime-depends} +Replaces: ure (<< 4:24.2.0~rc1~) +Breaks: ure (<< 4:24.2.0~rc1~) +Build-Profiles: +Description: LibreOffice UNO runtime environment -- Java support + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + It offers you a flexible, low-overhead component model that is most ideal + for (but not limited to) combining in one application components written in + different computer languages, and developed by different parties. You can use + it to create any kind of application, in whatever application domain you can + imagine. + . + This package contains the Java support in the URE. + +Package: libunoloader-java +Architecture: all +Section: java +Depends: ${java:Depends}, ${misc:Depends} +Replaces: ure (<< 6.4.0~rc1-6) +Breaks: ure (<< 6.4.0~rc1-6) +Build-Profiles: +Description: LibreOffice UNO runtime environment -- (Java) UNO loader + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + This package contains a UNO loader library for Java. + +Package: liblibreoffice-java +Architecture: all +Section: java +Depends: ure-java, libunoloader-java, ${java:Depends}, ${misc:Depends} +Provides: libjuh-java, libridl-java, libjurt-java, libunoil-java +Replaces: libjuh-java (<< 1:7.1.0~), libridl-java (<< 1:7.1.0~), libjurt-java (<< 1:7.1.0~), libunoil-java (<< 1:7.1.0~) +Breaks: libjuh-java (<< 1:7.1.0~), libridl-java (<< 1:7.1.0~), libjurt-java (<< 1:7.1.0~), libunoil-java (<< 1:7.1.0~) +Build-Profiles: +Description: LibreOffice UNO runtime environment -- Java library + The Uno Runtime Environment (URE) is the well-known UNO component model + of LibreOffice, packaged up as an individual product. + . + This package contains the public Java libraries. + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000000..2a19b8355c4 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,361 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: LibreOffice +Upstream-Contact: libreoffice@lists.freedesktop.org +Source: http://download.documentfoundation.org/libreoffice/src +# they are already removed when packing the upstream tarballs, but are in git... +#Files-Excluded: schema/*/* + +Files: * +Copyright: Copyright 2000, 2010 Oracle and/or its affiliates. + Copyright (c) 2000, 2010 LibreOffice contributors and/or their affiliates. +License: MPL-2.0 + On Debian systems the full text of the MPL-2.0 can be found in + /usr/share/common-licenses/MPL-2.0. + . + Some files include Apache-2.0 licensed material: + . + # This file incorporates work covered by the following license notice: + # + # Licensed to the Apache Software Foundation (ASF) under one or more + # contributor license agreements. See the NOTICE file distributed + # with this work for additional information regarding copyright + # ownership. The ASF licenses this file to you under the Apache + # License, Version 2.0 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.apache.org/licenses/LICENSE-2.0 . + . + On Debian systems the full text of the Apache-2.0 license can be found in + /usr/share/common-licenses/Apache-2.0. + +Files: extras/source/truetype/symbol/OpenSymbol.sfd +Copyright: (c) 2009 Sun Microsystems Inc. + (c) 2010 Google Corporation + (c) 2011 Julien Nabet + (c) 2011 Olivier Hallot + (c) 2013 Mathias Hasselmann + (c) 2015 Khaled Hosny + (c) 2016 Mike Kaganski +License: MPL-2.0 + On Debian systems the full text of the MPL-2.0 can be found in + /usr/share/common-licenses/MPL-2.0. + . + Some files include Apache-2.0 licensed material: + . + # This file incorporates work covered by the following license notice: + # + # Licensed to the Apache Software Foundation (ASF) under one or more + # contributor license agreements. See the NOTICE file distributed + # with this work for additional information regarding copyright + # ownership. The ASF licenses this file to you under the Apache + # License, Version 2.0 (the "License"); you may not use this file + # except in compliance with the License. You may obtain a copy of + # the License at http://www.apache.org/licenses/LICENSE-2.0 . + . + On Debian systems the full text of the Apache-2.0 license can be found in + /usr/share/common-licenses/Apache-2.0. + +Files: swext/mediawiki/src/filter/odt2mediawiki.xsl +Copyright: Copyright (C) 2007-2013 Bernhard Haumacher (haui@haumacher.de) +License: Apache-2.0 + +Files: sysui/desktop/apparmor/* +Copyright: Copyright (C) 2016 Canonical Ltd. + Copyright (C) 2017 Software in the Public Interest, Inc. +License: MPL-2.0 + +Files: sysui/desktop/appstream-appdata/*.xml +Copyright: Copyright (c) 2013-2019 LibreOffice contributors and/or their affiliates. +License: CC0-1.0 + +Files: msicreator/createmsi.py +Copyright: Copyright 2017-2018 Jussi Pakkanen et al +License: Apache-2.0 + +Files: icon-themes/breeze*/* +Copyright: Copyright 2014 Uri Herrera + Copyright 2015 Andreas Kainz and other contributors +License: GPL-2+ + +Files: icon-themes/sifr*/* +Copyright: Jakub Steiner + Lapo Calamandrei + Hylke Bons + Barbara Muraus + Issa Alkurtass + Norah Abanumay + Copyright 2017-2018 Matthias Freund +License: CC-BY-SA-3.0 + +Files: icon-themes/elementary*/* +Copyright: Copyright 2015 by Simon Steinbeiss , Pasi Lallinaho +License: GPL-3+ + +Files: icon-themes/colibre*/* +Copyright: Copyright 2018 Andreas Kainz +License: CC0-1.0 + +https://github.com/rizmut/libreoffice-style-karasa-jaga/blob/master/COPYING +Files: icon-themes/karasa_jaga/* +Copyright: Copyright (c) 2014 Rizal Muttaqin +License: LGPL-3+ + +Files: icon-themes/sukapura*/* +Copyright: Copyright (c) 2019-2020 Rizal Muttaqin +License: MPL-2.0 + +Files: helpcontent2/help3xsl/normalize.css +Copyright: Copyright © Nicolas Gallagher and Jonathan Neal +License: Expat + +Files: helpcontent2/help3xsl/prism.js +Copyright: Copyright (c) Lea Verou +License: MIT + +Files: helpcontent2/help3xsl/prism.css +Copyright: Copyright (c) Tim Shedor +License: MIT + +Files: helpcontent2/help3xsl/flexsearch*.js +Copyright: Copyright 2018-2021 Nextapps GmbH +License: Apache-2.0 + +Files: debian/* +Copyright: Copyright (C) 2002-2009 Software in the Public Interest, Inc. +License: GPL-2 + +Files: debian/templates/debian-presentation.otp +Copyright: Copyright (C) 2010 Raphaël Hertzog +License: GPL-2+ + +Files: debian/templates/debian-presentation-background.xcf +Copyright: Copyright Alexis Younes "ayo" +License: GPL-2+ + +Files: vcl/qa/cppunit/data/tdf153440.ttf.readme +Copyright: (C) 2023 Khaled Hosny +License: + This is a subset copy of Noto Emoji font licensed under Open Font License and + obtained from: + . + https://fonts.google.com/noto/specimen/Noto+Emoji + . + And subset using hb-subset to contain only the one glyph used in the test: + . + hb-subset static/NotoEmoji-Regular.ttf "🌿 " -o tdf153440.ttf --drop-tables=GSUB,STAT,vhea,vmtx + . + The space is added to the subset as it seems needed to get the font to work on + Windows. (The --drop-tables argument is not necessary be saves a few bytes of + stuff we don’t need.) + . + Open Font License: + . + PREAMBLE + The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership +with others. + . + The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + . + DEFINITIONS + “Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + . + “Reserved Font Name” refers to any names specified as such after the copyright statement(s). + . + “Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). + . + “Modified Version” refers to any derivative made by adding to, deleting, or substituting – in part or in whole – any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + . + “Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + . + PERMISSION & CONDITIONS + Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + . + 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + . + 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + . + 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + . + 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + . + 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + . + TERMINATION + . + This license becomes null and void if any of the above conditions are + not met. + . + DISCLAIMER + . + THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT + OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE + COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM + OTHER DEALINGS IN THE FONT SOFTWARE. + +Files: vcl/qa/cppunit/data/tdf107718.otf +Copyright: (C) 2023 Khaled Hosny +License: + This is a subset copy of Source Han Sans font licensed under Open Font License and + obtained from (the Static Super OTC): + . + https://github.com/adobe-fonts/source-han-sans/releases/tag/2.004R + . + And subset using hb-subset to contain only the one glyph used in the test: + . + hb-subset SourceHanSans.ttc --face-index=25 --unicodes="u4E16,u1109,u1168,u11BC,u302E,uC185,u0020" -o tdf107718.otf + . + Open Font License: + . + PREAMBLE + The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership +with others. + . + The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + . + DEFINITIONS + “Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + . + “Reserved Font Name” refers to any names specified as such after the copyright statement(s). + . + “Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). + . + “Modified Version” refers to any derivative made by adding to, deleting, or substituting – in part or in whole – any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + . + “Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + . + PERMISSION & CONDITIONS + Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + . + 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + . + 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + . + 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + . + 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + . + 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + . + TERMINATION + . + This license becomes null and void if any of the above conditions are + not met. + . + DISCLAIMER + . + THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT + OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE + COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM + OTHER DEALINGS IN THE FONT SOFTWARE. + +# https://github.com/google/skia/blob/master/LICENSE +Files: tarballs/skia* +Copyright: Copyright (c) 2011 Google Inc. +License: BSD-3-clause + +Files: tarballs/pdfium* +Copyright: // Copyright 2014-2016 PDFium Authors. + // Original code copyright 2014 Foxit Software Inc. +License: other + // Redistribution and use in source and binary forms, with or without + // modification, are permitted provided that the following conditions are + // met: + // + // * Redistributions of source code must retain the above copyright + // notice, this list of conditions and the following disclaimer. + // * Redistributions in binary form must reproduce the above + // copyright notice, this list of conditions and the following disclaimer + // in the documentation and/or other materials provided with the + // distribution. + // * Neither the name of Google Inc. nor the names of its + // contributors may be used to endorse or promote products derived from + // this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: helpcontent2/help3xsl/polyfills.js +Copyright: Copyright (c) 2016-present, jszhou +License: MIT + +Files: helpcontent2/help3xsl/polyfills.js +Copyright: Copyright (C) 2015 Larry Davis +License: BSD-2-clause + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License: MPL-2.0 + On Debian systems the full text of the MPL-2.0 can be found in + /usr/share/common-licenses/MPL-2.0. + +License: Apache-2.0 + On Debian systems the full text of the Apache-2.0 license can be found in + /usr/share/common-licenses/Apache-2.0. + +License: GPL-2+ + On Debian systems the full text of the GPL-2 can be found in + /usr/share/common-licenses/GPL-2 + +License: GPL-3+ + On Debian systems the full text of the GPL-3 can be found in + /usr/share/common-licenses/GPL-3 + +License: GPL-2 + On Debian systems the full text of the GPL-2 can be found in + /usr/share/common-licenses/GPL-2 + +License: MPL-1.1 + On Debian systems the full text of the MPL-1.1 can be found in + /usr/share/common-licenses/MPL-1.1 + +License: LGPL-2 + On Debian systems the full text of the LGPL-2 can be found in + /usr/share/common-licenses/LGPL-2 + +License: LGPL-3+ + On Debian systems the full text of the LGPL-3 can be found in + /usr/share/common-licenses/LGPL-3 + +License: CC0-1.0 + On Debian systems the full text of the CC0-1.0 license can be found in + /usr/share/common-licenses/CC0-1.0 + + diff --git a/debian/liblibreoffice-java.lintian-overrides b/debian/liblibreoffice-java.lintian-overrides new file mode 100644 index 00000000000..16847714fbf --- /dev/null +++ b/debian/liblibreoffice-java.lintian-overrides @@ -0,0 +1,5 @@ +liblibreoffice-java: codeless-jar [usr/share/java/juh-*.jar] +liblibreoffice-java: codeless-jar [usr/share/java/jurt-*.jar] +liblibreoffice-java: codeless-jar [usr/share/java/ridl-*.jar] +liblibreoffice-java: codeless-jar [usr/share/java/unoil-*.jar] +liblibreoffice-java: classpath-contains-relative-path ../ [usr/share/java/libreoffice-*.jar] diff --git a/debian/liblibreoffice-java.poms b/debian/liblibreoffice-java.poms new file mode 100644 index 00000000000..e73276d03fa --- /dev/null +++ b/debian/liblibreoffice-java.poms @@ -0,0 +1,32 @@ +# List of POM files for the package +# Format of this file is: +# [option]* +# where option can be: +# --ignore: ignore this POM and its artifact if any +# --ignore-pom: don't install the POM. To use on POM files that are created +# temporarily for certain artifacts such as Javadoc jars. [mh_install, mh_installpoms] +# --no-parent: remove the tag from the POM +# --package=: an alternative package to use when installing this POM +# and its artifact +# --has-package-version: to indicate that the original version of the POM is the same as the upstream part +# of the version for the package. +# --keep-elements=: a list of XML elements to keep in the POM +# during a clean operation with mh_cleanpom or mh_installpom +# --artifact=: path to the build artifact associated with this POM, +# it will be installed when using the command mh_install. [mh_install] +# --java-lib: install the jar into /usr/share/java to comply with Debian +# packaging guidelines +# --usj-name=: name to use when installing the library in /usr/share/java +# --usj-version=: version to use when installing the library in /usr/share/java +# --no-usj-versionless: don't install the versionless link in /usr/share/java +# --dest-jar=: the destination for the real jar. +# It will be installed with mh_install. [mh_install] +# --classifier=: Optional, the classifier for the jar. Empty by default. +# --site-xml=: Optional, the location for site.xml if it needs to be installed. +# Empty by default. [mh_install] +# +debian/pom.juh.xml --no-parent --has-package-version +debian/pom.jurt.xml --no-parent --has-package-version +debian/pom.ridl.xml --no-parent --has-package-version +debian/pom.unoil.xml --no-parent --has-package-version +debian/pom.libreoffice.xml --no-parent --has-package-version diff --git a/debian/liblibreofficekitgtk.links b/debian/liblibreofficekitgtk.links new file mode 100644 index 00000000000..c8017de61d1 --- /dev/null +++ b/debian/liblibreofficekitgtk.links @@ -0,0 +1 @@ +usr/lib/libreoffice/program/liblibreofficekitgtk.so usr/lib/liblibreofficekitgtk.so diff --git a/debian/libofficebean-java.poms b/debian/libofficebean-java.poms new file mode 100644 index 00000000000..36e613aa9ae --- /dev/null +++ b/debian/libofficebean-java.poms @@ -0,0 +1,28 @@ +# List of POM files for the package +# Format of this file is: +# [option]* +# where option can be: +# --ignore: ignore this POM and its artifact if any +# --ignore-pom: don't install the POM. To use on POM files that are created +# temporarily for certain artifacts such as Javadoc jars. [mh_install, mh_installpoms] +# --no-parent: remove the tag from the POM +# --package=: an alternative package to use when installing this POM +# and its artifact +# --has-package-version: to indicate that the original version of the POM is the same as the upstream part +# of the version for the package. +# --keep-elements=: a list of XML elements to keep in the POM +# during a clean operation with mh_cleanpom or mh_installpom +# --artifact=: path to the build artifact associated with this POM, +# it will be installed when using the command mh_install. [mh_install] +# --java-lib: install the jar into /usr/share/java to comply with Debian +# packaging guidelines +# --usj-name=: name to use when installing the library in /usr/share/java +# --usj-version=: version to use when installing the library in /usr/share/java +# --no-usj-versionless: don't install the versionless link in /usr/share/java +# --dest-jar=: the destination for the real jar. +# It will be installed with mh_install. [mh_install] +# --classifier=: Optional, the classifier for the jar. Empty by default. +# --site-xml=: Optional, the location for site.xml if it needs to be installed. +# Empty by default. [mh_install] +# +debian/pom.officebean.xml --no-parent --has-package-version diff --git a/debian/libreoffice-base-drivers.NEWS b/debian/libreoffice-base-drivers.NEWS new file mode 100644 index 00000000000..049002ccdae --- /dev/null +++ b/debian/libreoffice-base-drivers.NEWS @@ -0,0 +1,14 @@ +libreoffice (1:6.2.0~beta1-1) unstable; urgency=low + + * The JDBC Driver used for JDBC Access by the LibreOffice MySQL driver + (NOT libreoffice-mysql-connector) contained in this package has been + changed from MySQL to MariaDB (libmysql-java -> libmariadb-java). See + http://bugs.debian.org/913360 and https://bugs.debian.org/912916. + + This also involves changing the classes used in the code, so using + libmysql-java and com.mysql.jdbc.Driver does not work anymore. + + If you want to connect to MySQL or MariaDB databases over JDBC, use + libmariadb-java. + + -- Rene Engelhard Fri, 16 Nov 2018 19:35:22 +0100 diff --git a/debian/libreoffice-base-drivers.lintian-overrides b/debian/libreoffice-base-drivers.lintian-overrides new file mode 100644 index 00000000000..2e33386c3a8 --- /dev/null +++ b/debian/libreoffice-base-drivers.lintian-overrides @@ -0,0 +1,2 @@ +# "aged out" due to debhelpers changelog trimming (see #1021502) +libreoffice-base-drivers: debian-news-entry-has-unknown-version 1:6.2.0~beta1-1 [usr/share/doc/libreoffice-base-drivers/NEWS.Debian.gz:1] diff --git a/debian/libreoffice-base-nogui.bug-control b/debian/libreoffice-base-nogui.bug-control new file mode 100644 index 00000000000..b06c62ee293 --- /dev/null +++ b/debian/libreoffice-base-nogui.bug-control @@ -0,0 +1,2 @@ +report-with: libreoffice-core libreoffice-core-nogui +package-status: unixodbc libmyodbc odbc-postgresql libsqliteodbc tdsodbc mdbtools libmariadb-java libmysql-java libpg-java libsapdbc-java diff --git a/debian/libreoffice-base-nogui.mime b/debian/libreoffice-base-nogui.mime new file mode 100644 index 00000000000..3174fccf851 --- /dev/null +++ b/debian/libreoffice-base-nogui.mime @@ -0,0 +1,11 @@ +### +# shared-mime-info + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.database; soffice --nologo --base %s; edit=soffice --nologo --base %s; print=soffice --nologo --base -p %s; test=test -n "$DISPLAY"; description="OpenDocument Database"; nametemplate=%s.odb; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.base; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Database"; nametemplate=%s.sdb; priority=8 + +# +### diff --git a/debian/libreoffice-base.NEWS b/debian/libreoffice-base.NEWS new file mode 100644 index 00000000000..b7a30f1a0e0 --- /dev/null +++ b/debian/libreoffice-base.NEWS @@ -0,0 +1,14 @@ +libreoffice (1:4.2.1-1) experimental; urgency=low + + * the database drivers have been split out to a new libreoffice-base-drivers + package. This package depends on most of them, but that explicitly + _does not_ include the HSQLDB SDBC Driver or the new Firebird SDBC Driver + (both for the embedded database) - whose because of their dependencies are + split into extra packages. + . + If you used a "normal" embedded database in your (old) database file you + _must_ install libreoffice-sdbc-hsqldb so that it can "connect" to it. + . + Similar with the new Firebird embedded database in 4.2 and -sdbc-firebird. + + -- Rene Engelhard Fri, 16 Aug 2013 10:21:53 +0200 diff --git a/debian/libreoffice-base.bug-control b/debian/libreoffice-base.bug-control new file mode 100644 index 00000000000..31f42c1f1f7 --- /dev/null +++ b/debian/libreoffice-base.bug-control @@ -0,0 +1,2 @@ +report-with: libreoffice-core +package-status: unixodbc libmyodbc odbc-postgresql libsqliteodbc tdsodbc mdbtools libmariadb-java libmysql-java libpg-java libsapdbc-java diff --git a/debian/libreoffice-base.lintian-overrides b/debian/libreoffice-base.lintian-overrides new file mode 100644 index 00000000000..458c78f837a --- /dev/null +++ b/debian/libreoffice-base.lintian-overrides @@ -0,0 +1,3 @@ +libreoffice-base: desktop-command-not-in-package libreoffice [usr/share/applications/libreoffice-base.desktop] +# "aged out" due to debhelpers changelog trimming (see #1021502) +libreoffice-base: debian-news-entry-has-unknown-version 1:4.2.1-1 [usr/share/doc/libreoffice-base/NEWS.Debian.gz:1] diff --git a/debian/libreoffice-base.manpages b/debian/libreoffice-base.manpages new file mode 100644 index 00000000000..144eec74763 --- /dev/null +++ b/debian/libreoffice-base.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man1/lobase.1.gz diff --git a/debian/libreoffice-base.mime b/debian/libreoffice-base.mime new file mode 100644 index 00000000000..3174fccf851 --- /dev/null +++ b/debian/libreoffice-base.mime @@ -0,0 +1,11 @@ +### +# shared-mime-info + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.database; soffice --nologo --base %s; edit=soffice --nologo --base %s; print=soffice --nologo --base -p %s; test=test -n "$DISPLAY"; description="OpenDocument Database"; nametemplate=%s.odb; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.base; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Database"; nametemplate=%s.sdb; priority=8 + +# +### diff --git a/debian/libreoffice-calc-nogui.lintian-overrides b/debian/libreoffice-calc-nogui.lintian-overrides new file mode 100644 index 00000000000..630bb42ecd4 --- /dev/null +++ b/debian/libreoffice-calc-nogui.lintian-overrides @@ -0,0 +1 @@ +libreoffice-calc-nogui: binary-or-shlib-defines-rpath diff --git a/debian/libreoffice-calc-nogui.mime b/debian/libreoffice-calc-nogui.mime new file mode 100644 index 00000000000..d306e622514 --- /dev/null +++ b/debian/libreoffice-calc-nogui.mime @@ -0,0 +1,37 @@ +### +# shared-mime-info + +# Generic +text/csv; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="CSV Document"; nametemplate=%s.csv; priority=3 +text/spreadsheet; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Spreadsheet Interchange Document"; nametemplate=%s.slk; priority=3 + +# Corel Quattro Pro +application/x-quattropro; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Quattro Pro 6 for Windows Spreadsheet"; nametemplate=%s.wb2; priority=3 + +# dBase dBASE +application/x-dbf; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf; priority=3 + +# ECMA Office Open XML (Microsoft Office 2007) +application/vnd.ms-excel.sheet.macroEnabled.12; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet with Macros Enabled"; nametemplate=%s.xlsm; priority=3 +application/vnd.ms-excel.template.macroEnabled.12; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template with Macros Enabled"; nametemplate=%s.xltm; priority=3 +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet"; nametemplate=%s.xlsx; priority=3 +application/vnd.openxmlformats-officedocument.spreadsheetml.template; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template"; nametemplate=%s.xltx; priority=3 + +# IBM Lotus 1-2-3 +application/vnd.lotus-1-2-3; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Lotus 1-2-3 spreadsheet"; nametemplate=%s.123; priority=3 + +# Microsoft Excel +application/vnd.ms-excel; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.chart; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; print=soffice --nologo --calc -p %s; test=test -n "$DISPLAY"; description="OpenDocument Chart"; nametemplate=%s.odc; priority=9 +application/vnd.oasis.opendocument.spreadsheet; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; print=soffice --nologo --calc -p %s; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet"; nametemplate=%s.ods; priority=9 +application/vnd.oasis.opendocument.spreadsheet-template; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; print=soffice --nologo --calc -p %s; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet Template"; nametemplate=%s.ots; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.calc; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet"; nametemplate=%s.sxc; priority=8 +application/vnd.sun.xml.calc.template; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet Template"; nametemplate=%s.stc; priority=8 + +# +### + diff --git a/debian/libreoffice-calc.bug-control b/debian/libreoffice-calc.bug-control new file mode 100644 index 00000000000..1ac405f9788 --- /dev/null +++ b/debian/libreoffice-calc.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core diff --git a/debian/libreoffice-calc.config.in b/debian/libreoffice-calc.config.in new file mode 100644 index 00000000000..1815f8e0b92 --- /dev/null +++ b/debian/libreoffice-calc.config.in @@ -0,0 +1,10 @@ +#!/bin/sh -e + +# Source debconf library. +. /usr/share/debconf/confmodule + +if [ "@DEB_HOST_ARCH@" = "riscv64" ]; then + db_input high libreoffice-calc/no_nan_passing_support_warning || true + db_go +fi + diff --git a/debian/libreoffice-calc.lintian-overrides b/debian/libreoffice-calc.lintian-overrides new file mode 100644 index 00000000000..ba31100b779 --- /dev/null +++ b/debian/libreoffice-calc.lintian-overrides @@ -0,0 +1,2 @@ +libreoffice-calc: binary-or-shlib-defines-rpath +libreoffice-calc: desktop-command-not-in-package libreoffice [usr/share/applications/libreoffice-calc.desktop] diff --git a/debian/libreoffice-calc.manpages b/debian/libreoffice-calc.manpages new file mode 100644 index 00000000000..a4b78ee3406 --- /dev/null +++ b/debian/libreoffice-calc.manpages @@ -0,0 +1,2 @@ +debian/tmp/usr/share/man/man1/localc.1.gz + diff --git a/debian/libreoffice-calc.mime b/debian/libreoffice-calc.mime new file mode 100644 index 00000000000..d306e622514 --- /dev/null +++ b/debian/libreoffice-calc.mime @@ -0,0 +1,37 @@ +### +# shared-mime-info + +# Generic +text/csv; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="CSV Document"; nametemplate=%s.csv; priority=3 +text/spreadsheet; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Spreadsheet Interchange Document"; nametemplate=%s.slk; priority=3 + +# Corel Quattro Pro +application/x-quattropro; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Quattro Pro 6 for Windows Spreadsheet"; nametemplate=%s.wb2; priority=3 + +# dBase dBASE +application/x-dbf; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf; priority=3 + +# ECMA Office Open XML (Microsoft Office 2007) +application/vnd.ms-excel.sheet.macroEnabled.12; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet with Macros Enabled"; nametemplate=%s.xlsm; priority=3 +application/vnd.ms-excel.template.macroEnabled.12; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template with Macros Enabled"; nametemplate=%s.xltm; priority=3 +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet"; nametemplate=%s.xlsx; priority=3 +application/vnd.openxmlformats-officedocument.spreadsheetml.template; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template"; nametemplate=%s.xltx; priority=3 + +# IBM Lotus 1-2-3 +application/vnd.lotus-1-2-3; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Lotus 1-2-3 spreadsheet"; nametemplate=%s.123; priority=3 + +# Microsoft Excel +application/vnd.ms-excel; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.chart; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; print=soffice --nologo --calc -p %s; test=test -n "$DISPLAY"; description="OpenDocument Chart"; nametemplate=%s.odc; priority=9 +application/vnd.oasis.opendocument.spreadsheet; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; print=soffice --nologo --calc -p %s; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet"; nametemplate=%s.ods; priority=9 +application/vnd.oasis.opendocument.spreadsheet-template; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; print=soffice --nologo --calc -p %s; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet Template"; nametemplate=%s.ots; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.calc; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet"; nametemplate=%s.sxc; priority=8 +application/vnd.sun.xml.calc.template; soffice --nologo --calc %s; edit=soffice --nologo --calc %s; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet Template"; nametemplate=%s.stc; priority=8 + +# +### + diff --git a/debian/libreoffice-calc.postinst.in b/debian/libreoffice-calc.postinst.in new file mode 100644 index 00000000000..b94801b0987 --- /dev/null +++ b/debian/libreoffice-calc.postinst.in @@ -0,0 +1,11 @@ +#!/bin/sh -e + +# Source debconf library. +. /usr/share/debconf/confmodule + +if [ "@DEB_HOST_ARCH@" = "riscv64" ]; then + db_get libreoffice-calc/no_nan_passing_support_warning +fi + +#DEBHELPER# + diff --git a/debian/libreoffice-calc.templates b/debian/libreoffice-calc.templates new file mode 100644 index 00000000000..f0c8daeb495 --- /dev/null +++ b/debian/libreoffice-calc.templates @@ -0,0 +1,10 @@ +Template: libreoffice-calc/no_nan_passing_support_warning +Type: note +_Description: Architecture doesn't support "NaN passing" + LibreOffice Calc relies on a feature called "NaN passing" which is optional + in the IEEE 754 standard. Your architecture (riscv64) does not support it, though. + . + This package is shipped nevertheless for use cases where this does not matter + but you should be aware that Calc can give you wrong results, especially + with =IFERROR() etc. + diff --git a/debian/libreoffice-common.links.in b/debian/libreoffice-common.links.in new file mode 100644 index 00000000000..637f60b0b64 --- /dev/null +++ b/debian/libreoffice-common.links.in @@ -0,0 +1,38 @@ +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-database.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.database.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-drawing.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.drawing.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-drawing-template.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.drawing-template.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-formula.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.formula.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-master-document.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.master-document.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-presentation.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.presentation.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-presentation-template.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.presentation-template.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-spreadsheet.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.spreadsheet.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-spreadsheet-template.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.spreadsheet-template.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-text.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.text.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-text-template.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.text-template.png +usr/share/icons/hicolor/16x16/mimetypes/libreoffice-oasis-web-template.png usr/share/icons/hicolor/16x16/mimetypes/application-vnd.oasis.opendocument.web-template.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-database.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.database.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-drawing.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.drawing.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-drawing-template.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.drawing-template.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-formula.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.formula.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-master-document.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.master-document.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-presentation.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.presentation.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-presentation-template.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.presentation-template.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-spreadsheet.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.spreadsheet.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-spreadsheet-template.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.spreadsheet-template.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-text.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.text.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-text-template.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.text-template.png +usr/share/icons/hicolor/32x32/mimetypes/libreoffice-oasis-web-template.png usr/share/icons/hicolor/32x32/mimetypes/application-vnd.oasis.opendocument.web-template.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-database.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.database.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-drawing.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.drawing.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-drawing-template.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.drawing-template.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-formula.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.formula.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-master-document.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.master-document.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-presentation.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.presentation.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-presentation-template.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.presentation-template.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-spreadsheet.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.spreadsheet.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-spreadsheet-template.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.spreadsheet-template.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-text.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.text.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-text-template.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.text-template.png +usr/share/icons/hicolor/48x48/mimetypes/libreoffice-oasis-web-template.png usr/share/icons/hicolor/48x48/mimetypes/application-vnd.oasis.opendocument.web-template.png +etc/libreoffice/registry/main.xcd usr/lib/libreoffice/share/registry/main.xcd +usr/share/man/man1/libreoffice.1.gz usr/share/man/man1/soffice.1.gz diff --git a/debian/libreoffice-common.lintian-overrides b/debian/libreoffice-common.lintian-overrides new file mode 100644 index 00000000000..efdaf3d980c --- /dev/null +++ b/debian/libreoffice-common.lintian-overrides @@ -0,0 +1,2 @@ +# this is essentially a breaks with version +libreoffice-common: breaks-without-version libreoffice-help-5.2 diff --git a/debian/libreoffice-common.maintscript b/debian/libreoffice-common.maintscript new file mode 100644 index 00000000000..85db037026c --- /dev/null +++ b/debian/libreoffice-common.maintscript @@ -0,0 +1,5 @@ +symlink_to_dir /usr/lib/libreoffice/share/registry /etc/libreoffice/registry 4:25.2.1~rc1-3~ libreoffice-common +mv_conffile /etc/apparmor.d/usr.lib.libreoffice.program.oosplash /etc/apparmor.d/libreoffice-oosplash 4:26.2.0~alpha1~ libreoffice-common +mv_conffile /etc/apparmor.d/usr.lib.libreoffice.program.senddoc /etc/apparmor.d/libreoffice-senddoc 4:26.2.0~alpha1~ libreoffice-common +mv_conffile /etc/apparmor.d/usr.lib.libreoffice.program.soffice.bin /etc/apparmor.d/libreoffice-soffice.bin 4:26.2.0~alpha1~ libreoffice-common +mv_conffile /etc/apparmor.d/usr.lib.libreoffice.program.xpdfimport /etc/apparmor.d/libreoffice-xpdfimport 4:26.2.0~alpha1~ libreoffice-common diff --git a/debian/libreoffice-common.manpages b/debian/libreoffice-common.manpages new file mode 100644 index 00000000000..37ce2e86511 --- /dev/null +++ b/debian/libreoffice-common.manpages @@ -0,0 +1,4 @@ +debian/tmp/usr/share/man/man1/libreoffice.1.gz +debian/tmp/usr/share/man/man1/loffice.1.gz +debian/tmp/usr/share/man/man1/unopkg.1.gz +debian/tmp/usr/share/man/man1/lofromtemplate.1.gz diff --git a/debian/libreoffice-common.postinst.in b/debian/libreoffice-common.postinst.in new file mode 100644 index 00000000000..ea024a9432e --- /dev/null +++ b/debian/libreoffice-common.postinst.in @@ -0,0 +1,29 @@ +#!/bin/sh + +set -e + +#INCLUDE_SHELL_LIB# + +if [ "$1" = "triggered" ]; then + for triggername in $2; do + case "$triggername" in + # new "bundled" extensions (since 3.3) + "/@OODIR@/share/extensions") + make_lo_sync_extensions + ;; + "/@OODIR@") + # check also whether /usr/bin/loolwsd-systemplate-setup + # is +x do to not fail when it's gone but + # /var/lib/lool/systemplate is still there (loolwsd + # removed but not purged) + if [ -x /usr/bin/loolwsd-systemplate-setup -a \ + -d /var/lib/lool/systemplate ]; then + update_lool_systemplate + fi + ;; + esac + done +fi + +#DEBHELPER# + diff --git a/debian/libreoffice-common.postrm.in b/debian/libreoffice-common.postrm.in new file mode 100644 index 00000000000..c4471b59176 --- /dev/null +++ b/debian/libreoffice-common.postrm.in @@ -0,0 +1,26 @@ +#!/bin/sh + +set -e + +#INCLUDE_SHELL_LIB# + +case "$1" in + remove|abort-install|abort-upgrade) + rm -rf /`echo @OODIR@ | sed -e s,usr/,var/,g`/share/prereg/bundled + rmdir /`echo @OODIR@ | sed -e s,usr/,var/,g`/share/prereg/ || true + rmdir /`echo @OODIR@ | sed -e s,usr/,var/,g`/share/ || true + # this belongs to -core, but won't work until we have -common stuff removed, too, so try here again + # in adduition to -core + rmdir /`echo @OODIR@ | sed -e s,usr/,var/,g`/program/ || true + rmdir /`echo @OODIR@ | sed -e s,usr/,var/,g` || true + # and try to remove /@OOBRANDDIR@ itself + rmdir /`echo @OODIR@ | sed -e s,usr/,var/,g` || true + ;; + purge) + rm -f /`echo @OODIR@ | sed -e s,usr/,var/,g`/share/config/javasettingsunopkginstall.xml + rmdir /`echo @OODIR@ | sed -e s,usr/,var/,g`/share/config || true + rmdir /`echo @OODIR@ | sed -e s,usr/,var/,g`/share || true + ;; +esac + +#DEBHELPER# diff --git a/debian/libreoffice-common.preinst.in b/debian/libreoffice-common.preinst.in new file mode 100644 index 00000000000..ee89ce68124 --- /dev/null +++ b/debian/libreoffice-common.preinst.in @@ -0,0 +1,30 @@ +#!/bin/sh + +set -e + +#INCLUDE_SHELL_LIB# + +#DEBHELPER# + +# also move local apparmor overrides. They even get created by dh_apparmor +# (cf. https://sources.debian.org/src/apparmor/4.1.0-1/debian/debhelper/postinst-apparmor?hl=5#L5). +# Check if existing in the old path anyway +if [ "$1" = "upgrade" ] && dpkg --compare-versions $2 lt 4:26.2.0~alpha1~; then + if [ -f /etc/apparmor.d/local/usr.lib.libreoffice.program.oosplash ]; then + mv /etc/apparmor.d/local/usr.lib.libreoffice.program.oosplash \ + /etc/apparmor.d/local/libreoffice-oosplash + fi + if [ -f /etc/apparmor.d/local/usr.lib.libreoffice.program.senddoc ]; then + mv /etc/apparmor.d/local/usr.lib.libreoffice.program.senddoc \ + /etc/apparmor.d/local/libreoffice-senddoc + fi + if [ -f /etc/apparmor.d/local/usr.lib.libreoffice.program.soffice.bin ]; then + mv /etc/apparmor.d/local/usr.lib.libreoffice.program.soffice.bin \ + /etc/apparmor.d/local/libreoffice-soffice.bin + fi + if [ -f /etc/apparmor.d/local/usr.lib.libreoffice.program.xpdfimport ]; then + mv /etc/apparmor.d/local/usr.lib.libreoffice.program.xpdfimport \ + /etc/apparmor.d/local/libreoffice-xpdfimport + fi +fi + diff --git a/debian/libreoffice-common.triggers.in b/debian/libreoffice-common.triggers.in new file mode 100644 index 00000000000..274301752fe --- /dev/null +++ b/debian/libreoffice-common.triggers.in @@ -0,0 +1,2 @@ +interest-noawait /@OODIR@/share/extensions +interest-noawait /@OODIR@ diff --git a/debian/libreoffice-common.ucf b/debian/libreoffice-common.ucf new file mode 100644 index 00000000000..a471beaf32d --- /dev/null +++ b/debian/libreoffice-common.ucf @@ -0,0 +1 @@ +/usr/lib/libreoffice/share/.registry/main.xcd /etc/libreoffice/registry/main.xcd diff --git a/debian/libreoffice-core-nogui.bug-control b/debian/libreoffice-core-nogui.bug-control new file mode 100644 index 00000000000..7dc225723b8 --- /dev/null +++ b/debian/libreoffice-core-nogui.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-common libreoffice-java-common fonts-opensymbol ure-java diff --git a/debian/libreoffice-core-nogui.bug-script.in b/debian/libreoffice-core-nogui.bug-script.in new file mode 100755 index 00000000000..bba16b11cfc --- /dev/null +++ b/debian/libreoffice-core-nogui.bug-script.in @@ -0,0 +1,16 @@ +#!/bin/sh + +# list all installed extensions. --bundled, --shared and non-shared +/usr/lib/libreoffice/program/unopkg list --bundled >&3 +/usr/lib/libreoffice/program/unopkg list --shared >&3 +/usr/lib/libreoffice/program/unopkg list >&3 + +# experimental stuff enabled? +echo "" >&3 +echo "Experimental features enabled:" >&3 +#_lo_profile_ver=`echo @OOVER@ | cut -d. -f1` +_lo_profile_ver=4 +if [ -d "$HOME/.config/libreoffice/$_lo_profile_ver" ]; then + grep ExperimentalMode $HOME/.config/libreoffice/$_lo_profile_ver/user/registrymodifications.xcu >&3 +fi + diff --git a/debian/libreoffice-core.NEWS b/debian/libreoffice-core.NEWS new file mode 100644 index 00000000000..56dca91df07 --- /dev/null +++ b/debian/libreoffice-core.NEWS @@ -0,0 +1,13 @@ +libreoffice (1:7.4.2~rc1-1) unstable; urgency=low + + * LibreOffice 7.4.0/7.4.1 contained a bug about wrongly remembering the + size of the LibreOffice windows. (Most prominently showing inside KDE). + . + This has been fixed in 7.4.2 but you experience this problem even after + a second start of the new LibreOffice you might either need to reset your + user profile or remove the affecting keys from it manuallly + (ooSetupFactoryWindowAttributes in + ~/.config/libreofficei/4/user/registrymodifications.xcu) + + -- Rene Engelhard Wed, 09 Nov 2022 07:31:23 +0200 + diff --git a/debian/libreoffice-core.bug-control b/debian/libreoffice-core.bug-control new file mode 100644 index 00000000000..389aa4122b7 --- /dev/null +++ b/debian/libreoffice-core.bug-control @@ -0,0 +1,2 @@ +report-with: ure-java libreoffice-common libreoffice-java-common fonts-opensymbol +package-status: libxrender1 libxinerama1 libsane iceweasel firefox icedove iceape-browser pstoedit imagemagick fglrx-driver nvidia-glx nvidia-glx-legacy diff --git a/debian/libreoffice-core.bug-script.in b/debian/libreoffice-core.bug-script.in new file mode 100755 index 00000000000..3ba60de164f --- /dev/null +++ b/debian/libreoffice-core.bug-script.in @@ -0,0 +1,20 @@ +#!/bin/sh + +# list all installed extensions. --bundled, --shared and non-shared +/usr/lib/libreoffice/program/unopkg list --bundled >&3 +/usr/lib/libreoffice/program/unopkg list --shared >&3 +/usr/lib/libreoffice/program/unopkg list >&3 + +# experimental stuff enabled? +echo "" >&3 +echo "Experimental features enabled:" >&3 +#_lo_profile_ver=`echo @OOVER@ | cut -d. -f1` +_lo_profile_ver=4 +if [ -d "$HOME/.config/libreoffice/$_lo_profile_ver" ]; then + grep ExperimentalMode $HOME/.config/libreoffice/$_lo_profile_ver/user/registrymodifications.xcu >&3 +fi + +# installed VCLplugs +echo "" >&3 +echo "Installed VCLplugs:" >&3 +dpkg -l libreoffice-gtk3 libreoffice-gtk4 libreoffice-qt5 libreoffice-kf5 libreoffice-qt6 libreoffice-kf6 >&3 diff --git a/debian/libreoffice-core.postrm.in b/debian/libreoffice-core.postrm.in new file mode 100755 index 00000000000..95ed9cb4f46 --- /dev/null +++ b/debian/libreoffice-core.postrm.in @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +#INCLUDE_SHELL_LIB# + +if [ "$1" = "remove" ]; then + rm -rf /var/spool/libreoffice +fi + +#DEBHELPER# + +exit 0 diff --git a/debian/libreoffice-dev-doc.links b/debian/libreoffice-dev-doc.links new file mode 100644 index 00000000000..7e6fd17fba7 --- /dev/null +++ b/debian/libreoffice-dev-doc.links @@ -0,0 +1 @@ +usr/share/doc/libreoffice/sdk/docs usr/share/doc/libreoffice-dev-doc/api diff --git a/debian/libreoffice-draw-nogui.bug-control b/debian/libreoffice-draw-nogui.bug-control new file mode 100644 index 00000000000..f7a2b996bb0 --- /dev/null +++ b/debian/libreoffice-draw-nogui.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core libreoffice-core-nogui diff --git a/debian/libreoffice-draw-nogui.mime b/debian/libreoffice-draw-nogui.mime new file mode 100644 index 00000000000..e0b81d3bfb4 --- /dev/null +++ b/debian/libreoffice-draw-nogui.mime @@ -0,0 +1,13 @@ +### +# shared-mime-info + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.graphics; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; print=soffice --nologo --draw -p %s; test=test -n "$DISPLAY"; description="OpenDocument Drawing"; nametemplate=%s.odg; priority=9 +application/vnd.oasis.opendocument.graphics-template; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; print=soffice --nologo --draw -p %s; test=test -n "$DISPLAY"; description="OpenDocument Drawing Template"; nametemplate=%s.otg; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.draw; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing"; nametemplate=%s.sxd; priority=8 +application/vnd.sun.xml.draw.template; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing Template"; nametemplate=%s.std; priority=8 + +# +### diff --git a/debian/libreoffice-draw.bug-control b/debian/libreoffice-draw.bug-control new file mode 100644 index 00000000000..1ac405f9788 --- /dev/null +++ b/debian/libreoffice-draw.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core diff --git a/debian/libreoffice-draw.lintian-overrides b/debian/libreoffice-draw.lintian-overrides new file mode 100644 index 00000000000..6e0f4c22b60 --- /dev/null +++ b/debian/libreoffice-draw.lintian-overrides @@ -0,0 +1 @@ +libreoffice-draw: desktop-command-not-in-package libreoffice [usr/share/applications/libreoffice-draw.desktop] diff --git a/debian/libreoffice-draw.manpages b/debian/libreoffice-draw.manpages new file mode 100644 index 00000000000..3267e53d6e2 --- /dev/null +++ b/debian/libreoffice-draw.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man1/lodraw.1.gz diff --git a/debian/libreoffice-draw.mime b/debian/libreoffice-draw.mime new file mode 100644 index 00000000000..e0b81d3bfb4 --- /dev/null +++ b/debian/libreoffice-draw.mime @@ -0,0 +1,13 @@ +### +# shared-mime-info + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.graphics; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; print=soffice --nologo --draw -p %s; test=test -n "$DISPLAY"; description="OpenDocument Drawing"; nametemplate=%s.odg; priority=9 +application/vnd.oasis.opendocument.graphics-template; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; print=soffice --nologo --draw -p %s; test=test -n "$DISPLAY"; description="OpenDocument Drawing Template"; nametemplate=%s.otg; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.draw; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing"; nametemplate=%s.sxd; priority=8 +application/vnd.sun.xml.draw.template; soffice --nologo --draw %s; edit=soffice --nologo --draw %s; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing Template"; nametemplate=%s.std; priority=8 + +# +### diff --git a/debian/libreoffice-evolution.bug-control b/debian/libreoffice-evolution.bug-control new file mode 100644 index 00000000000..aa427dea40d --- /dev/null +++ b/debian/libreoffice-evolution.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core evolution libreoffice-base diff --git a/debian/libreoffice-help-common.links b/debian/libreoffice-help-common.links new file mode 100644 index 00000000000..83497a2b252 --- /dev/null +++ b/debian/libreoffice-help-common.links @@ -0,0 +1,3 @@ +/usr/share/javascript/normalize.css/normalize.css usr/share/libreoffice/help/normalize.css +/usr/share/nodejs/prismjs/prism.js usr/share/libreoffice/help/prism.js +/usr/share/nodejs/prismjs/themes/prism-coy.css usr/share/libreoffice/help/prism.css diff --git a/debian/libreoffice-help.lintian-overrides.in b/debian/libreoffice-help.lintian-overrides.in new file mode 100644 index 00000000000..17fde6dd126 --- /dev/null +++ b/debian/libreoffice-help.lintian-overrides.in @@ -0,0 +1,15 @@ +# these are in -help-common. See lintian bug http://bugs.debian.org/897244 +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/media/* +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/help.html +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/idxcaption.xsl +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/fuse.js +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/help.js +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/hid2file.js +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/paginathing.js +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/idxcontent.xsl +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/index.html +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/normalize.css +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/main_transform.xsl +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/help2.js +doc-base-file-references-missing-file libreoffice-help-@LCODE@:8 /usr/share/libreoffice/help/default.css + diff --git a/debian/libreoffice-impress-nogui.bug-control b/debian/libreoffice-impress-nogui.bug-control new file mode 100644 index 00000000000..285e78bf7aa --- /dev/null +++ b/debian/libreoffice-impress-nogui.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core libreoffice-core-nogui libreoffice-draw libreoffice-draw-nogui diff --git a/debian/libreoffice-impress-nogui.mime b/debian/libreoffice-impress-nogui.mime new file mode 100644 index 00000000000..ed8a11fd90b --- /dev/null +++ b/debian/libreoffice-impress-nogui.mime @@ -0,0 +1,25 @@ +### +# shared-mime-info + +# ECMA Office Open XML (Microsoft Office 2007) +application/vnd.ms-powerpoint.presentation.macroEnabled.12; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation with Macros Enabled"; nametemplate=%s.pptm; priority=3 +application/vnd.ms-powerpoint.slideshow.macroEnabled.12; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show with Macros Enabled"; nametemplate=%s.ppsm; priority=3 +application/vnd.ms-powerpoint.template.macroEnabled.12; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template with Macros Enabled"; nametemplate=%s.potm; priority=3 +application/vnd.openxmlformats-officedocument.presentationml.presentation; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation"; nametemplate=%s.pptx; priority=3 +application/vnd.openxmlformats-officedocument.presentationml.slideshow; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show"; nametemplate=%s.ppsx; priority=3 +application/vnd.openxmlformats-officedocument.presentationml.template; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template"; nametemplate=%s.potx; priority=3 + +# Microsoft PowerPoint +application/vnd.ms-powerpoint; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.presentation; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; print=soffice --nologo --impress -p %s; test=test -n "$DISPLAY"; description="OpenDocument Presentation"; nametemplate=%s.odp; priority=9 +application/vnd.oasis.opendocument.presentation-template; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; print=soffice --nologo --impress -p %s; test=test -n "$DISPLAY"; description="OpenDocument Presentation Template"; nametemplate=%s.otp; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.impress; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation"; nametemplate=%s.sxi; priority=8 +application/vnd.sun.xml.impress.template; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation Template"; nametemplate=%s.sti; priority=8 + +# +### + diff --git a/debian/libreoffice-impress.bug-control b/debian/libreoffice-impress.bug-control new file mode 100644 index 00000000000..e7775baad49 --- /dev/null +++ b/debian/libreoffice-impress.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core libreoffice-draw glx-alternative-nvidia diff --git a/debian/libreoffice-impress.bug-script.in b/debian/libreoffice-impress.bug-script.in new file mode 100644 index 00000000000..f2bd614b771 --- /dev/null +++ b/debian/libreoffice-impress.bug-script.in @@ -0,0 +1,3 @@ +#!/bin/sh + +dpkg -l | grep nvidia >&3 diff --git a/debian/libreoffice-impress.lintian-overrides b/debian/libreoffice-impress.lintian-overrides new file mode 100644 index 00000000000..c251e9069fb --- /dev/null +++ b/debian/libreoffice-impress.lintian-overrides @@ -0,0 +1 @@ +libreoffice-impress: desktop-command-not-in-package libreoffice [usr/share/applications/libreoffice-impress.desktop] diff --git a/debian/libreoffice-impress.manpages b/debian/libreoffice-impress.manpages new file mode 100644 index 00000000000..60ab514ba8f --- /dev/null +++ b/debian/libreoffice-impress.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man1/loimpress.1.gz diff --git a/debian/libreoffice-impress.mime b/debian/libreoffice-impress.mime new file mode 100644 index 00000000000..ed8a11fd90b --- /dev/null +++ b/debian/libreoffice-impress.mime @@ -0,0 +1,25 @@ +### +# shared-mime-info + +# ECMA Office Open XML (Microsoft Office 2007) +application/vnd.ms-powerpoint.presentation.macroEnabled.12; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation with Macros Enabled"; nametemplate=%s.pptm; priority=3 +application/vnd.ms-powerpoint.slideshow.macroEnabled.12; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show with Macros Enabled"; nametemplate=%s.ppsm; priority=3 +application/vnd.ms-powerpoint.template.macroEnabled.12; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template with Macros Enabled"; nametemplate=%s.potm; priority=3 +application/vnd.openxmlformats-officedocument.presentationml.presentation; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation"; nametemplate=%s.pptx; priority=3 +application/vnd.openxmlformats-officedocument.presentationml.slideshow; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show"; nametemplate=%s.ppsx; priority=3 +application/vnd.openxmlformats-officedocument.presentationml.template; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template"; nametemplate=%s.potx; priority=3 + +# Microsoft PowerPoint +application/vnd.ms-powerpoint; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.presentation; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; print=soffice --nologo --impress -p %s; test=test -n "$DISPLAY"; description="OpenDocument Presentation"; nametemplate=%s.odp; priority=9 +application/vnd.oasis.opendocument.presentation-template; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; print=soffice --nologo --impress -p %s; test=test -n "$DISPLAY"; description="OpenDocument Presentation Template"; nametemplate=%s.otp; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.impress; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation"; nametemplate=%s.sxi; priority=8 +application/vnd.sun.xml.impress.template; soffice --nologo --impress %s; edit=soffice --nologo --impress %s; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation Template"; nametemplate=%s.sti; priority=8 + +# +### + diff --git a/debian/libreoffice-math-nogui.bug-control b/debian/libreoffice-math-nogui.bug-control new file mode 100644 index 00000000000..f7a2b996bb0 --- /dev/null +++ b/debian/libreoffice-math-nogui.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core libreoffice-core-nogui diff --git a/debian/libreoffice-math-nogui.mime b/debian/libreoffice-math-nogui.mime new file mode 100644 index 00000000000..ea648287795 --- /dev/null +++ b/debian/libreoffice-math-nogui.mime @@ -0,0 +1,14 @@ +### +# shared-mime-info + +# Generic +text/mathml; soffice --nologo --math %s; edit=soffice --nologo --math %s; test=test -n "$DISPLAY"; description="MathML Formula"; nametemplate=%s.mml; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.formula; soffice --nologo --math %s; edit=soffice --nologo --math %s; print=soffice --nologo --math -p %s; test=test -n "$DISPLAY"; description="OpenDocument Formula"; nametemplate=%s.odf; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.math; soffice --nologo --math %s; edit=soffice --nologo --math %s; test=test -n "$DISPLAY"; description="OpenOffice.org Formula"; nametemplate=%s.sxm; priority=8 + +# +### diff --git a/debian/libreoffice-math.bug-control b/debian/libreoffice-math.bug-control new file mode 100644 index 00000000000..1ac405f9788 --- /dev/null +++ b/debian/libreoffice-math.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core diff --git a/debian/libreoffice-math.lintian-overrides b/debian/libreoffice-math.lintian-overrides new file mode 100644 index 00000000000..4544db776dd --- /dev/null +++ b/debian/libreoffice-math.lintian-overrides @@ -0,0 +1 @@ +libreoffice-math: desktop-command-not-in-package libreoffice [usr/share/applications/libreoffice-math.desktop] diff --git a/debian/libreoffice-math.manpages b/debian/libreoffice-math.manpages new file mode 100644 index 00000000000..6798b1e6b4e --- /dev/null +++ b/debian/libreoffice-math.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man1/lomath.1.gz diff --git a/debian/libreoffice-math.mime b/debian/libreoffice-math.mime new file mode 100644 index 00000000000..ea648287795 --- /dev/null +++ b/debian/libreoffice-math.mime @@ -0,0 +1,14 @@ +### +# shared-mime-info + +# Generic +text/mathml; soffice --nologo --math %s; edit=soffice --nologo --math %s; test=test -n "$DISPLAY"; description="MathML Formula"; nametemplate=%s.mml; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.formula; soffice --nologo --math %s; edit=soffice --nologo --math %s; print=soffice --nologo --math -p %s; test=test -n "$DISPLAY"; description="OpenDocument Formula"; nametemplate=%s.odf; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.math; soffice --nologo --math %s; edit=soffice --nologo --math %s; test=test -n "$DISPLAY"; description="OpenOffice.org Formula"; nametemplate=%s.sxm; priority=8 + +# +### diff --git a/debian/libreoffice-nlpsolver.bug-control b/debian/libreoffice-nlpsolver.bug-control new file mode 100644 index 00000000000..6af44785dda --- /dev/null +++ b/debian/libreoffice-nlpsolver.bug-control @@ -0,0 +1 @@ +report-with: ure-java diff --git a/debian/libreoffice-nlpsolver.bug-script.in b/debian/libreoffice-nlpsolver.bug-script.in new file mode 100755 index 00000000000..84085335315 --- /dev/null +++ b/debian/libreoffice-nlpsolver.bug-script.in @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/lib/libreoffice/program/unopkg list --bundled com.sun.star.comp.Calc.NLPSolver >&3 diff --git a/debian/libreoffice-nlpsolver.lintian-overrides b/debian/libreoffice-nlpsolver.lintian-overrides new file mode 100644 index 00000000000..e5e19451244 --- /dev/null +++ b/debian/libreoffice-nlpsolver.lintian-overrides @@ -0,0 +1,3 @@ +libreoffice-nlpsolver: jar-not-in-usr-share [usr/lib/libreoffice/share/extensions/nlpsolver/EvolutionarySolver.jar] +libreoffice-nlpsolver: jar-not-in-usr-share [usr/lib/libreoffice/share/extensions/nlpsolver/help/*/help.jar] +libreoffice-nlpsolver: jar-not-in-usr-share [usr/lib/libreoffice/share/extensions/nlpsolver/nlpsolver.jar] diff --git a/debian/libreoffice-report-builder.bug-control b/debian/libreoffice-report-builder.bug-control new file mode 100644 index 00000000000..3aabaa3187f --- /dev/null +++ b/debian/libreoffice-report-builder.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-base libreoffice-java-common ure-java diff --git a/debian/libreoffice-rust-uno-example.install.in b/debian/libreoffice-rust-uno-example.install.in new file mode 100644 index 00000000000..1ad2274a9ff --- /dev/null +++ b/debian/libreoffice-rust-uno-example.install.in @@ -0,0 +1 @@ +../../workdir/Extension/rust_uno-example/root/* usr/lib/libreoffice/share/extensions/rust_uno-example diff --git a/debian/libreoffice-script-provider-python.bug-control b/debian/libreoffice-script-provider-python.bug-control new file mode 100644 index 00000000000..38da481c1f2 --- /dev/null +++ b/debian/libreoffice-script-provider-python.bug-control @@ -0,0 +1 @@ +report-with: python-uno python3-uno diff --git a/debian/libreoffice-sdbc-firebird.NEWS b/debian/libreoffice-sdbc-firebird.NEWS new file mode 100644 index 00000000000..faee0f2cf41 --- /dev/null +++ b/debian/libreoffice-sdbc-firebird.NEWS @@ -0,0 +1,21 @@ +libreoffice (1:5.3.0~alpha1-1) experimental; urgency=low + + * LibreOffice switched from Firebird 2.5 to Firebird 3. Unfortunately + the format used by the Firebird 2.5 code (fdb - the native on-disk format) + is NOT compatible with the "new" one (the archive format). LibreOffice 5.3 + can NOT read older .odbs having .fdb embedded. + + Some future firebird version might have a way to convert itself/make LO + able to convert but until then you need to convert manually as follows: + + You need the gbak tool from firebird2.5: + https://packages.debian.org/search?searchon=contents&keywords=gbak&mode=exactfilename&suite=oldstable&arch=any + + Then execute: + unzip -d oldFirebird.odb temp; + gbak -b temp/database/firebird.fdb temp/database/firebird.fbk; + rm temp/database/firebird.fdb + zip -FSr oldFirebird.odb temp; + rm -r temp; + + -- Rene Engelhard Mon, 28 Nov 2016 10:27:15 +0200 diff --git a/debian/libreoffice-sdbc-firebird.bug-script.in b/debian/libreoffice-sdbc-firebird.bug-script.in new file mode 100644 index 00000000000..c7d794340e4 --- /dev/null +++ b/debian/libreoffice-sdbc-firebird.bug-script.in @@ -0,0 +1,10 @@ +#!/bin/sh + +# experimental stuff enabled? +echo "" >&3 +echo "Experimental features enabled:" >&3 +#_lo_profile_ver=`echo @OOVER@ | cut -d. -f1` +_lo_profile_ver=4 +if [ -d "$HOME/.config/libreoffice/$_lo_profile_ver" ]; then + grep ExperimentalMode $HOME/.config/libreoffice/$_lo_profile_ver/user/registrymodifications.xcu >&3 +fi diff --git a/debian/libreoffice-sdbc-firebird.lintian-overrides b/debian/libreoffice-sdbc-firebird.lintian-overrides new file mode 100644 index 00000000000..9f2850f6197 --- /dev/null +++ b/debian/libreoffice-sdbc-firebird.lintian-overrides @@ -0,0 +1,2 @@ +# "aged out" due to debhelpers changelog trimming (see #1021502) +libreoffice-sdbc-firebird: debian-news-entry-has-unknown-version 1:5.3.0~alpha1-1 [usr/share/doc/libreoffice-sdbc-firebird/NEWS.Debian.gz:1] diff --git a/debian/libreoffice-wiki-publisher.bug-control b/debian/libreoffice-wiki-publisher.bug-control new file mode 100644 index 00000000000..6af44785dda --- /dev/null +++ b/debian/libreoffice-wiki-publisher.bug-control @@ -0,0 +1 @@ +report-with: ure-java diff --git a/debian/libreoffice-wiki-publisher.bug-script.in b/debian/libreoffice-wiki-publisher.bug-script.in new file mode 100755 index 00000000000..9497e5ca079 --- /dev/null +++ b/debian/libreoffice-wiki-publisher.bug-script.in @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/lib/libreoffice/program/unopkg list --bundled com.sun.wiki-publisher >&3 diff --git a/debian/libreoffice-wiki-publisher.lintian-overrides b/debian/libreoffice-wiki-publisher.lintian-overrides new file mode 100644 index 00000000000..0c205530831 --- /dev/null +++ b/debian/libreoffice-wiki-publisher.lintian-overrides @@ -0,0 +1,2 @@ +libreoffice-wiki-publisher: jar-not-in-usr-share [usr/lib/libreoffice/share/extensions/wiki-publisher/help/*/help.jar] +libreoffice-wiki-publisher: jar-not-in-usr-share [usr/lib/libreoffice/share/extensions/wiki-publisher/mediawiki.jar] diff --git a/debian/libreoffice-writer-nogui.bug-control b/debian/libreoffice-writer-nogui.bug-control new file mode 100644 index 00000000000..f7a2b996bb0 --- /dev/null +++ b/debian/libreoffice-writer-nogui.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core libreoffice-core-nogui diff --git a/debian/libreoffice-writer-nogui.mime b/debian/libreoffice-writer-nogui.mime new file mode 100644 index 00000000000..fb38a25029d --- /dev/null +++ b/debian/libreoffice-writer-nogui.mime @@ -0,0 +1,37 @@ +### +# shared-mime-info + +# Generic +application/rtf; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf; priority=3 +application/x-extension-txt; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Plain Text Document"; nametemplate=%s.txt; priority=3 +application/x-t602; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="T602 Document"; nametemplate=%s.602; priority=3 + +# Corel WordPerfect +application/vnd.wordperfect; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp; priority=3 + +# ECMA Office Open XML (Microsoft Office 2007) +application/vnd.ms-word.document.macroEnabled.12; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document with Macros Enabled"; nametemplate=%s.docm; priority=3 +application/vnd.ms-word.template.macroEnabled.12; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document Template with Macros Enabled"; nametemplate=%s.dotm; priority=3 +application/vnd.openxmlformats-officedocument.wordprocessingml.document; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document"; nametemplate=%s.docx; priority=3 +application/vnd.openxmlformats-officedocument.wordprocessingml.template; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document Template"; nametemplate=%s.dotx; priority=3 + +# Microsoft Word +application/msword; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Microsoft Word Document"; nametemplate=%s.doc; priority=3 + +# Microsoft Works +application/vnd.ms-works; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Microsoft Works Document"; nametemplate=%s.wps; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.text; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; print=soffice --nologo --writer -p %s; test=test -n "$DISPLAY"; description="OpenDocument Text Document"; nametemplate=%s.odt; priority=9 +application/vnd.oasis.opendocument.text-master; soffice --nologo --global %s; edit=soffice --nologo --writer %s; print=soffice --nologo --writer -p %s; test=test -n "$DISPLAY"; description="OpenDocument Master Document"; nametemplate=%s.odm; priority=9 +application/vnd.oasis.opendocument.text-template; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; print=soffice --nologo --writer -p %s; test=test -n "$DISPLAY"; description="OpenDocument Text Document Template"; nametemplate=%s.ott; priority=9 +application/vnd.oasis.opendocument.text-web; soffice --nologo --web %s; edit=soffice --nologo --web %s; print=soffice --nologo --web -p %s; test=test -n "$DISPLAY"; description="OpenDocument HTML Document Template"; nametemplate=%s.oth; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.writer; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Text Document"; nametemplate=%s.sxw; priority=8 +application/vnd.sun.xml.writer.global; soffice --nologo --global %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Master Document"; nametemplate=%s.sxg; priority=8 +application/vnd.sun.xml.writer.template; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Text Document Template"; nametemplate=%s.stw; priority=8 + +# +### + diff --git a/debian/libreoffice-writer.bug-control b/debian/libreoffice-writer.bug-control new file mode 100644 index 00000000000..1ac405f9788 --- /dev/null +++ b/debian/libreoffice-writer.bug-control @@ -0,0 +1 @@ +report-with: libreoffice-core diff --git a/debian/libreoffice-writer.lintian-overrides b/debian/libreoffice-writer.lintian-overrides new file mode 100644 index 00000000000..df8d66097a2 --- /dev/null +++ b/debian/libreoffice-writer.lintian-overrides @@ -0,0 +1 @@ +libreoffice-writer: desktop-command-not-in-package libreoffice [usr/share/applications/libreoffice-writer.desktop] diff --git a/debian/libreoffice-writer.manpages b/debian/libreoffice-writer.manpages new file mode 100644 index 00000000000..53c4e248a63 --- /dev/null +++ b/debian/libreoffice-writer.manpages @@ -0,0 +1,3 @@ +debian/tmp/usr/share/man/man1/loweb.1.gz +debian/tmp/usr/share/man/man1/lowriter.1.gz + diff --git a/debian/libreoffice-writer.mime b/debian/libreoffice-writer.mime new file mode 100644 index 00000000000..fb38a25029d --- /dev/null +++ b/debian/libreoffice-writer.mime @@ -0,0 +1,37 @@ +### +# shared-mime-info + +# Generic +application/rtf; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf; priority=3 +application/x-extension-txt; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Plain Text Document"; nametemplate=%s.txt; priority=3 +application/x-t602; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="T602 Document"; nametemplate=%s.602; priority=3 + +# Corel WordPerfect +application/vnd.wordperfect; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp; priority=3 + +# ECMA Office Open XML (Microsoft Office 2007) +application/vnd.ms-word.document.macroEnabled.12; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document with Macros Enabled"; nametemplate=%s.docm; priority=3 +application/vnd.ms-word.template.macroEnabled.12; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document Template with Macros Enabled"; nametemplate=%s.dotm; priority=3 +application/vnd.openxmlformats-officedocument.wordprocessingml.document; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document"; nametemplate=%s.docx; priority=3 +application/vnd.openxmlformats-officedocument.wordprocessingml.template; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Office Open XML Document Template"; nametemplate=%s.dotx; priority=3 + +# Microsoft Word +application/msword; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Microsoft Word Document"; nametemplate=%s.doc; priority=3 + +# Microsoft Works +application/vnd.ms-works; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; test=test -n "$DISPLAY"; description="Microsoft Works Document"; nametemplate=%s.wps; priority=3 + +# OASIS OpenDocument Format +application/vnd.oasis.opendocument.text; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; print=soffice --nologo --writer -p %s; test=test -n "$DISPLAY"; description="OpenDocument Text Document"; nametemplate=%s.odt; priority=9 +application/vnd.oasis.opendocument.text-master; soffice --nologo --global %s; edit=soffice --nologo --writer %s; print=soffice --nologo --writer -p %s; test=test -n "$DISPLAY"; description="OpenDocument Master Document"; nametemplate=%s.odm; priority=9 +application/vnd.oasis.opendocument.text-template; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; print=soffice --nologo --writer -p %s; test=test -n "$DISPLAY"; description="OpenDocument Text Document Template"; nametemplate=%s.ott; priority=9 +application/vnd.oasis.opendocument.text-web; soffice --nologo --web %s; edit=soffice --nologo --web %s; print=soffice --nologo --web -p %s; test=test -n "$DISPLAY"; description="OpenDocument HTML Document Template"; nametemplate=%s.oth; priority=9 + +# OpenOffice.org 1.0 +application/vnd.sun.xml.writer; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Text Document"; nametemplate=%s.sxw; priority=8 +application/vnd.sun.xml.writer.global; soffice --nologo --global %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Master Document"; nametemplate=%s.sxg; priority=8 +application/vnd.sun.xml.writer.template; soffice --nologo --writer %s; edit=soffice --nologo --writer %s; description="OpenOffice.org Text Document Template"; nametemplate=%s.stw; priority=8 + +# +### + diff --git a/debian/libreoffice.bug-control b/debian/libreoffice.bug-control new file mode 100644 index 00000000000..21ad6ad79a4 --- /dev/null +++ b/debian/libreoffice.bug-control @@ -0,0 +1,2 @@ +report-with: libreoffice-core libreoffice-writer libreoffice-calc libreoffice-base libreoffice-draw libreoffice-impress libreoffice-math + diff --git a/debian/libreofficekit-dev.docs b/debian/libreofficekit-dev.docs new file mode 100644 index 00000000000..1dbbe5dc9ee --- /dev/null +++ b/debian/libreofficekit-dev.docs @@ -0,0 +1 @@ +libreofficekit/README.md diff --git a/debian/libreofficekit-dev.links b/debian/libreofficekit-dev.links new file mode 100644 index 00000000000..7be2c38b410 --- /dev/null +++ b/debian/libreofficekit-dev.links @@ -0,0 +1 @@ +usr/include/LibreOfficeKit usr/include/libreoffice/LibreOfficeKit diff --git a/debian/librust-rust-uno-dev.install.in b/debian/librust-rust-uno-dev.install.in new file mode 100644 index 00000000000..19190a26810 --- /dev/null +++ b/debian/librust-rust-uno-dev.install.in @@ -0,0 +1 @@ +../../rust_uno/* /usr/share/cargo/registry/rust-uno-@RUST_UNO_VERSION@ diff --git a/debian/libuno-cppu3t64.lintian-overrides b/debian/libuno-cppu3t64.lintian-overrides new file mode 100644 index 00000000000..ad1c6921043 --- /dev/null +++ b/debian/libuno-cppu3t64.lintian-overrides @@ -0,0 +1,2 @@ +libuno-cppu3t64: symbols-declares-dependency-on-other-package libstdc++6 (>= 4.1.1) (libuno_cppu.so.3) [symbols] +libuno-cppu3t64: package-name-doesnt-match-sonames libuno-cppu3 diff --git a/debian/libuno-cppu3t64.symbols b/debian/libuno-cppu3t64.symbols new file mode 100644 index 00000000000..25569df28ff --- /dev/null +++ b/debian/libuno-cppu3t64.symbols @@ -0,0 +1,11 @@ +libuno_cppu.so.3 libuno-cppu3t64 #MINVER# +| libuno-cppu3t64 #MINVER#, libstdc++6 (>= 4.1.1) + (symver)UDK_3_0_0 1.4.0 + (symver)UDK_3.1 1.4.0 + (symver)UDK_3.2 1.4.0 + (symver)UDK_3.3 1.4.0 + (symver|optional)GLIBCXX_3.4 3.6 1 + (symver)LIBO_UDK_4.4 4.4.0~alpha +# add new stuff BELOW this line +# and note that the stuff above HAS NO epoch but the +# below HAS diff --git a/debian/libuno-cppuhelpergcc3-3t64.lintian-overrides b/debian/libuno-cppuhelpergcc3-3t64.lintian-overrides new file mode 100644 index 00000000000..3e4ed0e9e9e --- /dev/null +++ b/debian/libuno-cppuhelpergcc3-3t64.lintian-overrides @@ -0,0 +1,3 @@ +libuno-cppuhelpergcc3-3t64: symbols-declares-dependency-on-other-package uno-libs-private (libuno_cppuhelpergcc3.so.3) [symbols] +libuno-cppuhelpergcc3-3t64: symbols-declares-dependency-on-other-package libstdc++6 (>= 4.1.1) (libuno_cppuhelpergcc3.so.3) [symbols] +libuno-cppuhelpergcc3-3t64: package-name-doesnt-match-sonames libuno-cppuhelpergcc3-3 diff --git a/debian/libuno-cppuhelpergcc3-3t64.symbols b/debian/libuno-cppuhelpergcc3-3t64.symbols new file mode 100644 index 00000000000..ff3384b2fb7 --- /dev/null +++ b/debian/libuno-cppuhelpergcc3-3t64.symbols @@ -0,0 +1,18 @@ +libuno_cppuhelpergcc3.so.3 libuno-cppuhelpergcc3-3t64 #MINVER#, uno-libs-private +| libuno-cppuhelpergcc3-3t64 #MINVER#, uno-libs-private, libstdc++6 (>= 4.1.1) + (symver)UDK_3_0_0 1.4.0 + (symver)UDK_3.1 1.4.0 + (symver)UDK_3.2 1.4.0 + (symver)UDK_3.3 1.4.0 + (symver)UDK_3.4 1.4.0 + (symver)UDK_3.5 1.4.0 + (symver)UDK_3.6 1.7.0 + (symver)UDK_3.7 3.4.0 + (symver)UDK_3.8 3.5.0~beta + (symver|optional)GLIBCXX_3.4 3.6 1 + (symver)LIBO_UDK_3.9 4.0.0~alpha + (symver)LIBO_UDK_5.3 5.3.0~alpha +# add new stuff BELOW this line +# and note that the stuff above HAS NO epoch but the +# below HAS + (symver)LIBO_UDK_7.4 1:7.4.0~alpha diff --git a/debian/libuno-purpenvhelpergcc3-3t64.lintian-overrides b/debian/libuno-purpenvhelpergcc3-3t64.lintian-overrides new file mode 100644 index 00000000000..fca2887d132 --- /dev/null +++ b/debian/libuno-purpenvhelpergcc3-3t64.lintian-overrides @@ -0,0 +1,2 @@ +libuno-purpenvhelpergcc3-3t64: symbols-declares-dependency-on-other-package libstdc++6 (>= 4.1.1) (libuno_purpenvhelpergcc3.so.3) [symbols] +libuno-purpenvhelpergcc3-3t64: package-name-doesnt-match-sonames libuno-purpenvhelpergcc3-3 diff --git a/debian/libuno-purpenvhelpergcc3-3t64.symbols b/debian/libuno-purpenvhelpergcc3-3t64.symbols new file mode 100644 index 00000000000..1bbc5937b0b --- /dev/null +++ b/debian/libuno-purpenvhelpergcc3-3t64.symbols @@ -0,0 +1,7 @@ +libuno_purpenvhelpergcc3.so.3 libuno-purpenvhelpergcc3-3t64 #MINVER# +| libuno-purpenvhelpergcc3-3t64 #MINVER#, libstdc++6 (>= 4.1.1) + (symver)UDK_3_0_0 1.4.0 + (symver|optional)GLIBCXX_3.4 3.6 1 +# add new stuff BELOW this line +# and note that the stuff above HAS NO epoch but the +# below HAS diff --git a/debian/libuno-sal3t64.lintian-overrides b/debian/libuno-sal3t64.lintian-overrides new file mode 100644 index 00000000000..48f5f465aa9 --- /dev/null +++ b/debian/libuno-sal3t64.lintian-overrides @@ -0,0 +1,2 @@ +libuno-sal3t64: symbols-declares-dependency-on-other-package libstdc++6 (>= 4.1.1) (libuno_sal.so.3) [symbols] +libuno-sal3t64: package-name-doesnt-match-sonames libuno-sal3 diff --git a/debian/libuno-sal3t64.symbols.in b/debian/libuno-sal3t64.symbols.in new file mode 100644 index 00000000000..5a4827ba261 --- /dev/null +++ b/debian/libuno-sal3t64.symbols.in @@ -0,0 +1,43 @@ +libuno_sal.so.3 libuno-sal3t64 #MINVER# +| libuno-sal3t64 #MINVER#, libstdc++6 (>= 4.1.1) +| libuno-sal3t64 #MINVER#, libreoffice-sal-private-abi (= @UREPACKAGEVERSION@) + (symver)UDK_3_0_0 1.4.0 + (symver)UDK_3.1 1.4.0 + (symver)UDK_3.2 1.4.0 + (symver)UDK_3.3 1.4.0 + (symver)UDK_3.4 1.4.0 + (symver)UDK_3.5 1.4.0 + (symver)UDK_3.6 1.4.0 + (symver)UDK_3.7 1.4.0 + (symver)UDK_3.8 1.4.0 + (symver)UDK_3.9 1.5.0 + (symver)UDK_3.10 1.6.0 + UDK_3.11@UDK_3.11 1.7.0+LibO3.3.0~beta3 + osl_clearEnvironment@UDK_3.11 1.7.0+LibO3.3.0~beta3 + osl_setEnvironment@UDK_3.11 1.7.0+LibO3.3.0~beta3 + (symver)UDK_3.11 1.8.0 + (symver)PRIVATE_1.0 3.3.0~ 2 + (symver)PRIVATE_1.1 3.3.0~ 2 + (symver)LIBO_UDK_3.5 3.5.0~beta + (symver)PRIVATE_1.2 3.5.0~beta 2 + (symver)PRIVATE_textenc.1 3.6.0~beta 2 + (symver|optional)GLIBCXX_3.4 3.6 1 + (symver)LIBO_UDK_3.6 4.0.0~alpha + (symver)LIBO_UDK_4.0 4.0.0~beta + (symver)LIBO_UDK_4.1 4.1.0~alpha + (symver)LIBO_UDK_4.2 4.2.0~rc1 + (symver)LIBO_UDK_4.3 4.3.0~alpha + (symver)LIBO_UDK_5.0 5.0.0~alpha + (symver)LIBO_UDK_5.1 5.1.0~alpha + (symver)LIBO_UDK_5.2 5.2.0~alpha + (symver)LIBO_UDK_5.3 5.3.0~alpha + (symver)LIBO_UDK_6.2 6.2.0~alpha + (symver)PRIVATE_1.3 5.4.0~alpha 2 + (symver)PRIVATE_1.4 6.0.0~alpha 2 + (symver)PRIVATE_1.5 6.1.0~alpha 2 + (symver)PRIVATE_1.6 6.4.0~beta 2 +# add new stuff BELOW this line +# and note that the stuff above HAS NO epoch but the +# below HAS + (symver)PRIVATE_1.7 1:7.1.0~alpha1 2 + (symver)PRIVATE_1.8 1:7.3.0~beta1 2 diff --git a/debian/libuno-salhelpergcc3-3t64.lintian-overrides b/debian/libuno-salhelpergcc3-3t64.lintian-overrides new file mode 100644 index 00000000000..956945a7333 --- /dev/null +++ b/debian/libuno-salhelpergcc3-3t64.lintian-overrides @@ -0,0 +1,2 @@ +libuno-salhelpergcc3-3t64: symbols-declares-dependency-on-other-package libstdc++6 (>= 4.1.1) (libuno_salhelpergcc3.so.3) [symbols] +libuno-salhelpergcc3-3t64: package-name-doesnt-match-sonames libuno-salhelpergcc3-3 diff --git a/debian/libuno-salhelpergcc3-3t64.symbols.in b/debian/libuno-salhelpergcc3-3t64.symbols.in new file mode 100644 index 00000000000..e6f849ab486 --- /dev/null +++ b/debian/libuno-salhelpergcc3-3t64.symbols.in @@ -0,0 +1,11 @@ +libuno_salhelpergcc3.so.3 libuno-salhelpergcc3-3t64 #MINVER# +| libuno-salhelpergcc3-3t64 #MINVER#, libstdc++6 (>= 4.1.1) +| libuno-salhelpergcc3-3t64 #MINVER#, libreoffice-salhelper-private-abi (= @UREPACKAGEVERSION@) + (symver)UDK_3_0_0 1.4.0 + (symver)UDK_3.1 1.4.0 + (symver)LIBO_UDK_3.6 3.6.0~beta + (symver|optional)GLIBCXX_3.4 3.6 1 +# add new stuff BELOW this line +# and note that the stuff above HAS NO epoch but the +# below HAS + (symver)PRIVATE_1.0 4:25.8.0~ 2 diff --git a/debian/libunoloader-java.poms b/debian/libunoloader-java.poms new file mode 100644 index 00000000000..e89019b4b1f --- /dev/null +++ b/debian/libunoloader-java.poms @@ -0,0 +1,28 @@ +# List of POM files for the package +# Format of this file is: +# [option]* +# where option can be: +# --ignore: ignore this POM and its artifact if any +# --ignore-pom: don't install the POM. To use on POM files that are created +# temporarily for certain artifacts such as Javadoc jars. [mh_install, mh_installpoms] +# --no-parent: remove the tag from the POM +# --package=: an alternative package to use when installing this POM +# and its artifact +# --has-package-version: to indicate that the original version of the POM is the same as the upstream part +# of the version for the package. +# --keep-elements=: a list of XML elements to keep in the POM +# during a clean operation with mh_cleanpom or mh_installpom +# --artifact=: path to the build artifact associated with this POM, +# it will be installed when using the command mh_install. [mh_install] +# --java-lib: install the jar into /usr/share/java to comply with Debian +# packaging guidelines +# --usj-name=: name to use when installing the library in /usr/share/java +# --usj-version=: version to use when installing the library in /usr/share/java +# --no-usj-versionless: don't install the versionless link in /usr/share/java +# --dest-jar=: the destination for the real jar. +# It will be installed with mh_install. [mh_install] +# --classifier=: Optional, the classifier for the jar. Empty by default. +# --site-xml=: Optional, the location for site.xml if it needs to be installed. +# Empty by default. [mh_install] +# +debian/pom.unoloader.xml --no-parent --has-package-version diff --git a/debian/patches/Rust-Bindings-Add-initial-documentation-for-Rust-UNO.diff b/debian/patches/Rust-Bindings-Add-initial-documentation-for-Rust-UNO.diff new file mode 100644 index 00000000000..3300f3f8d79 --- /dev/null +++ b/debian/patches/Rust-Bindings-Add-initial-documentation-for-Rust-UNO.diff @@ -0,0 +1,440 @@ +From a7ef6f04e92d7b89d6fa10b1e4766b444312c0a0 Mon Sep 17 00:00:00 2001 +From: Mohamed Ali +Date: Mon, 26 Jan 2026 07:06:01 +0200 +Subject: [PATCH 01/21] Rust Bindings: Add initial documentation for Rust UNO + bindings + +Change-Id: Ibb2978ebf1bbca8afddd13bdf8fba5e070c9037f +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198115 +Reviewed-by: Stephan Bergmann +Tested-by: Jenkins +--- + rust_uno/doc/Rust_UNO_Developer_Guide.md | 206 +++++++++++++++++++++++ + rust_uno/doc/Rust_UNO_User_Guide.md | 202 ++++++++++++++++++++++ + 2 files changed, 408 insertions(+) + create mode 100644 rust_uno/doc/Rust_UNO_Developer_Guide.md + create mode 100644 rust_uno/doc/Rust_UNO_User_Guide.md + +diff --git a/rust_uno/doc/Rust_UNO_Developer_Guide.md b/rust_uno/doc/Rust_UNO_Developer_Guide.md +new file mode 100644 +index 000000000000..114228248461 +--- /dev/null ++++ b/rust_uno/doc/Rust_UNO_Developer_Guide.md +@@ -0,0 +1,206 @@ ++# Rust UNO Developer Guide ++ ++ ++- [Rust UNO Developer Guide](#rust-uno-developer-guide) ++ - [Table of Contents](#table-of-contents) ++ - [Project Overview](#project-overview) ++ - [Codebase Structure](#codebase-structure) ++ - [Code Generator (`codemaker`)](#code-generator-codemaker) ++ - [Runtime Library (`rust_uno`)](#runtime-library-rustuno) ++ - [The Rustmaker Generator](#the-rustmaker-generator) ++ - [Generation Flow](#generation-flow) ++ - [Key Implementation Details](#key-implementation-details) ++ - [Development Workflow](#development-workflow) ++ - [Prerequisites](#prerequisites) ++ - [Rebuilding Bindings](#rebuilding-bindings) ++ - [Testing Strategy](#testing-strategy) ++ - [Integration Tests](#integration-tests) ++ - [Unit Tests](#unit-tests) ++ - [Future Work: Embindtest](#future-work-embindtest) ++ ++ ++This guide is intended for contributors working on the **Rust UNO bindings** implementation itself. If you are a user looking to *use* the bindings, please see the [User Guide](Rust_UNO_User_Guide.md). ++ ++## Table of Contents ++ ++1. [Project Overview](#project-overview) ++2. [Codebase Structure](#codebase-structure) ++3. [The Rustmaker Generator](#the-rustmaker-generator) ++4. [Development Workflow](#development-workflow) ++5. [Testing Strategy](#testing-strategy) ++ ++--- ++ ++## Project Overview ++ ++The Rust UNO project enables LibreOffice to be scripted and extended using Rust. It works by inspecting the UNO IDL (Interface Definition Language) types and generating: ++ ++1. **Rust Wrappers**: Safe, idiomatic Rust structs. ++2. **C++ Bridges**: `extern "C"` functions that handle the raw UNO C++ API. ++ ++The system is fully integrated into the LibreOffice build system via `autogen.sh` and `make`. ++ ++--- ++ ++## Codebase Structure ++ ++The project is split across the core LibreOffice codebase: ++ ++### Code Generator (`codemaker`) ++ ++Located in `codemaker/source/rustmaker/`. This tool reads the binary type library (RDB files) and outputs source code. ++ ++| File | Purpose | ++|------|---------| ++| `rustproduce.cxx` | Generates Rust source files (structs, enums, interfaces). | ++| `cpproduce.cxx` | Generates the C++ side of the bridge. | ++| `unoproduce.cxx` | Coordinator that drives the generation process. | ++| `rustfile.cxx` | Helper for writing Rust source files (indentation, imports). | ++ ++### Runtime Library (`rust_uno`) ++ ++Located in `rust_uno/`. This is the crate that users depend on. ++ ++- `src/lib.rs`: Crate root, exports `generated` modules. ++- `src/generated/`: Destination for generated Rust code. ++- `src/core/`: Handwritten core utilities (`OUString` wrapper, primitive types). ++ ++--- ++ ++## The Rustmaker Generator ++ ++The heart of the project is the `rustmaker` binary. It runs during the build process to produce the bindings. ++ ++### Generation Flow ++ ++```mermaid ++graph LR ++ IDL["UNO IDL Files"] -->|idlc| RDB["Binary RDB"] ++ RDB -->|read by| RustMaker["rustmaker (codemaker)"] ++ RustMaker -->|writes| RustFiles["Rust Wrappers (.rs)"] ++ RustMaker -->|writes| CppFiles["C++ Bridge (.cxx)"] ++ ++ RustFiles -->|compiled by| Rustc["rustc"] ++ CppFiles -->|compiled by| Gxx["g++"] ++ ++ Rustc -->|links| SharedLib["lib_rust_uno.so"] ++ Gxx -->|links| SharedLib ++``` ++ ++### Key Implementation Details ++ ++- **Typed Parameters**: Methods are generated with native types (e.g. `i32`, `bool`) where possible. ++- **Opaque Pointers**: All UNO objects are held as `*mut c_void` in Rust, pointing to a `Ref` in C++. ++- **Memory Management**: The `Drop` trait implementation calls the C++ destructor, which releases the UNO reference. ++ ++--- ++ ++## Development Workflow ++ ++### Prerequisites ++ ++Ensure you have a full LibreOffice build environment and have run `./autogen.sh --enable-rust-uno`. ++ ++### Rebuilding Bindings ++ ++When you modify `codemaker`, you need to regenerate the bindings: ++ ++```bash ++# Rebuild the generator ++make codemaker ++ ++# Regenerate the source files ++make rust_uno ++ ++# Rebuild the final library ++make ++``` ++ ++> [!TIP] ++> If you see bizarre errors after changing `rustmaker`, try `make rust_uno.clean` first to force a fresh generation. ++ ++--- ++ ++## Testing Strategy ++ ++Testing is integrated into the LibreOffice startup sequence for basic sanity checks. ++ ++### Integration Tests ++ ++The entry point `run_rust_uno_test` in `rust_uno/src/lib.rs` is called by `soffice` on startup. ++It runs scenarios defined in `rust_uno/src/examples/`. ++ ++To run the tests: ++ ++```bash ++./instdir/program/soffice --norestore ++``` ++ ++Watch the console output for `=== Rust UNO Bridge Test ===`. ++ ++### Unit Tests ++ ++Pure Rust unit tests (for `OUString` logic, etc.) can be run via Cargo: ++ ++```bash ++cd rust_uno ++cargo test ++``` ++ ++### Future Work: Embindtest ++ ++We plan to integrate with `embindtest`, the comprehensive UNO test suite. This is a high-priority task to ensure full coverage of generated types. ++ ++## Roadmap and Missing Features ++ ++This section details the current implementation status and future development tasks, ordered by architectural dependency and impact. ++ ++### Implementation Status ++ ++The following table summarizes the generation status of UNO types in `codemaker`. ++ ++| UNO Type | Status | Generator Function | Notes | ++|----------|--------|-------------------|-------| ++| **Module** | Implemented | `produceModule()` | Generates directory structure and `mod.rs` files. | ++| **Enum** | Implemented | `produceEnum()` | Full support including validation and bridge functions. | ++| **Struct** | Implemented | `produceStruct()` | Generates PlainStructs with getters, setters, and constructors. | ++| **Interface** | Implemented | `produceInterface()` | Generates traits, wrappers, and reference-counting logic. | ++| **Service** | Partial | `produceService()` | Supports single-interface services; accumulation-based services are deprecated. | ++| **Sequence** | Partial | `rustproduce.cxx` | Currently handled as `void*` in FFI; lacks safe Rust wrappers. | ++| **ConstantGroup** | Not Implemented | `produceConstantGroup()` | Function exists but body contains only a log message; content is skipped. | ++| **Exception** | Not Implemented | `produceException()` | Function exists but body contains only a log message; code generation is missing. | ++ ++### Development Tasks ++ ++The following tasks are ordered by their foundational importance to the binding quality. ++ ++#### 1. ConstantGroup Generation ++**Goal**: Generate Rust constants for UNO ConstantGroups (e.g., `com.sun.star.awt.FontWeight`). ++**Files**: `codemaker/source/rustmaker/rustproduce.cxx`, `cpproduce.cxx` ++**Details**: Currently, `produceConstantGroup` prints a skipping message. This needs to look up the constants in the IDL entity and generate a Rust `module` with `const` items. ++ ++#### 2. Exception Mapping ++**Goal**: Integrate UNO exceptions with Rust's `Result` type. ++**Files**: `codemaker/source/rustmaker/` ++**Details**: ++* Generate structs for UNO Exception types (`produceException`). ++* Update method signatures to return `Result` instead of `Option`. ++* The C++ bridge currently catches exceptions but does not fully propagate type information to Rust. ++ ++#### 3. Typedef Resolution ++**Goal**: Resolve UNO typedefs to their concrete Rust types. ++**Files**: `codemaker/source/rustmaker/unoproduce.cxx` ++**Details**: `produceTypedef` currently prints a log message. It should resolve the aliased type and generate a `type Alias = ConcreteType;` definition in Rust. ++ ++#### 4. Singleton Generation ++**Goal**: Generate accessors for UNO singletons. ++**Files**: `codemaker/source/rustmaker/rustproduce.cxx` ++**Details**: `produceSingleton` is currently a placeholder. It should generate helper methods to retrieve the singleton instance (typically via component context), avoiding manual `createInstance` calls. ++ ++#### 5. Type-Safe Sequences ++**Goal**: Replace `void*` usage for Sequences with a proper `Sequence` wrapper. ++**Files**: `codemaker/source/rustmaker/rustproduce.cxx`, `rust_uno/src/core/` ++**Details**: Implement a `Sequence` struct that manages the memory layout compatible with UNO sequences and implements `Iterator`. ++ ++--- ++ +diff --git a/rust_uno/doc/Rust_UNO_User_Guide.md b/rust_uno/doc/Rust_UNO_User_Guide.md +new file mode 100644 +index 000000000000..afea64e6cc1a +--- /dev/null ++++ b/rust_uno/doc/Rust_UNO_User_Guide.md +@@ -0,0 +1,202 @@ ++# Rust UNO User Guide ++ ++ ++- [Rust UNO User Guide](#rust-uno-user-guide) ++ - [Table of Contents](#table-of-contents) ++ - [Introduction](#introduction) ++ - [Prerequisites & Setup](#prerequisites-setup) ++ - [Requirements](#requirements) ++ - [Enabling Rust Support](#enabling-rust-support) ++ - [Building](#building) ++ - [Architecture Overview](#architecture-overview) ++ - [Quick Start](#quick-start) ++ - [1. Dependencies](#1-dependencies) ++ - [2. Loading a Document](#2-loading-a-document) ++ - [Core Concepts](#core-concepts) ++ - [Interfaces](#interfaces) ++ - [Strings](#strings) ++ - [Memory Management](#memory-management) ++ - [Troubleshooting](#troubleshooting) ++ ++ ++Welcome to the **Rust UNO Bindings** user guide. This document provides comprehensive instructions for using Rust to interact with LibreOffice via the UNO (Universal Network Objects) API. ++ ++## Table of Contents ++ ++1. [Introduction](#introduction) ++2. [Prerequisites & Setup](#prerequisites--setup) ++3. [Architecture Overview](#architecture-overview) ++4. [Quick Start](#quick-start) ++5. [Core Concepts](#core-concepts) ++6. [Troubleshooting](#troubleshooting) ++ ++--- ++ ++## Introduction ++ ++The Rust UNO bindings provide a safe, high-performance interface to automate LibreOffice. Unlike Python or Java bindings which rely heavily on runtime reflection, Rust UNO uses **compile-time generated wrappers** ensuring: ++ ++- **Type Safety**: Errors are caught at compile time. ++- **Performance**: Zero-cost abstractions over the C++ bridge. ++- **Memory Safety**: Automatic resource management via RAII (Drop trait). ++- **Typed Parameters**: Methods take native Rust types (`bool`, `i32`) instead of unsafe `void*` pointers. ++ ++--- ++ ++## Prerequisites & Setup ++ ++To use Rust UNO, you must build it as part of LibreOffice. ++ ++### Requirements ++ ++- **Rust**: Stable toolchain (install via `rustup`). ++- **LibreOffice Build Deps**: Standard development environment for LibreOffice. ++- **Disk Space**: Sufficient space for a full LibreOffice build. ++ ++### Enabling Rust Support ++ ++Add the following to your `autogen.input` file or pass it to `autogen.sh`: ++ ++```bash ++--enable-rust-uno ++``` ++ ++### Building ++ ++Run the following commands to generate bindings and build LibreOffice: ++ ++```bash ++./autogen.sh ++make codemaker # Builds the IDL compiler ++make rust_uno # Generates Rust/C++ bridge code ++make # Final build ++``` ++ ++> [!NOTE] ++> The generated Rust unit tests run automatically during the build process to verify the bridge. ++ ++--- ++ ++## Architecture Overview ++ ++The bindings utilize a 3-layer architecture to safely bridge safe Rust with C++ UNO. ++ ++```mermaid ++graph TD ++ UserCode["Your Rust Code"] -->|Calls| RustWrapper["Rust Wrappers"] ++ RustWrapper -->|FFI| CppBridge["C++ Bridge (extern C)"] ++ CppBridge -->|Calls| NativeUNO["Native LibreOffice C++ API"] ++ ++ subgraph "Layer 1: Safe Rust" ++ RustWrapper ++ end ++ ++ subgraph "Layer 2: FFI Bridge" ++ CppBridge ++ end ++ ++ subgraph "Layer 3: Core" ++ NativeUNO ++ end ++``` ++ ++1. **Rust Wrappers** (`rust_uno/src/generated/`): Safe structs holding opaque pointers. Methods are fully typed. ++2. **C++ Bridge** (`workdir/CustomTarget/rust_uno/rustmaker/cpp/`): Handles exception catching and reference counting. ++3. **Native UNO**: The actual LibreOffice implementation. ++ ++--- ++ ++## Quick Start ++ ++### 1. Dependencies ++ ++Ensure your `Cargo.toml` includes the dependencies. Since `rust_uno` is currently built in-tree, you point to it using a path dependency: ++ ++```toml ++[dependencies] ++rust_uno = { path = "rust_uno" } ++``` ++ ++### 2. Loading a Document ++ ++Here is a complete example of bootstrapping UNO and loading a Writer document. This demonstrates the **Typed Parameter API**. ++ ++```rust ++use rust_uno::generated::rustmaker::com::sun::star::frame::{Desktop, XComponentLoader}; ++use rust_uno::generated::rustmaker::com::sun::star::text::XTextDocument; ++use rust_uno::core::{OUString, uno_wrapper::defaultBootstrap_InitialComponentContext}; ++use std::ptr; ++ ++fn main() -> Result<(), Box> { ++ // 1. Bootstrap the component context ++ let context = defaultBootstrap_InitialComponentContext()?; ++ ++ // 2. Create the Desktop service ++ // Wrappers take raw pointers for low-level compatibility, or other wrappers ++ let desktop = Desktop::create(context.as_ptr()) ++ .ok_or("Failed to create Desktop service")?; ++ ++ // 3. Query the XComponentLoader interface ++ // Interface conversion is explicit and safe ++ let loader = XComponentLoader::from_ptr(desktop.as_ptr()) ++ .ok_or("Desktop does not support XComponentLoader")?; ++ ++ // 4. Load a blank Writer document ++ let url = OUString::from("private:factory/swriter"); ++ let target = OUString::from("_blank"); ++ ++ // Note: Typed parameters! No casting to void* needed. ++ let component = loader.loadComponentFromURL( ++ url, // Passed by value (moved) or reference depending on signature ++ target, ++ 0, // i32 ++ ptr::null_mut() // Any/Sequence arguments ++ ).ok_or("Failed to load component")?; ++ ++ // 5. Use the document ++ if !component.as_ptr().is_null() { ++ let text_doc = XTextDocument::from_ptr(component.as_ptr()) ++ .ok_or("Loaded component is not a TextDocument")?; ++ ++ if let Some(text) = text_doc.getText() { ++ println!("Document loaded successfully!"); ++ // text.setString(OUString::from("Hello Rust!")); ++ } ++ } ++ ++ Ok(()) ++} ++``` ++ ++--- ++ ++## Core Concepts ++ ++### Interfaces ++ ++UNO interfaces map directly to Rust structs. ++ ++- **C++**: `Reference` ++- **Rust**: `pub struct XInterface { ptr: *mut c_void }` ++ ++### Strings ++ ++LibreOffice uses `OUString` (UTF-16). The bindings provide efficient conversion: ++ ++- `OUString::from("Hello")`: Rust string slice -> OUString ++- `ou_string.to_string()`: OUString -> Rust String ++ ++### Memory Management ++ ++Rust's `Drop` trait automatically calls `acquire` and `release` on the underlying UNO objects via the C++ bridge. You do not need to manually manage reference counts. ++ ++### Troubleshooting ++ ++| Issue | Cause | Solution | ++|-------|-------|----------| ++| `make rust_uno` fails | Codemaker out of date | Run `make rust_uno.clean && make codemaker && make rust_uno` | ++| Runtime panic "Symbol not found" | LD_LIBRARY_PATH missing | Run your binary via `instdir/program/soffice --norestore` environment or set paths manually. | ++| `Option::None` from query | Interface not supported | Check API docs to ensure the object supports the interface you are querying. | ++ ++> [!TIP] ++> Always check `instdir/program/soffice` execution logs. The rust bridge prints initialization status to stdout/stderr with `SAL_WARN` channels if enabled. +-- +2.47.3 + diff --git a/debian/patches/adapt-for-new-carlito.diff b/debian/patches/adapt-for-new-carlito.diff new file mode 100644 index 00000000000..c3d5908ecf6 --- /dev/null +++ b/debian/patches/adapt-for-new-carlito.diff @@ -0,0 +1,74 @@ +diff --git a/sw/qa/extras/layout/layout3.cxx b/sw/qa/extras/layout/layout3.cxx +index 7f62a3a9d6b8..ec1567a564dc 100644 +--- a/sw/qa/extras/layout/layout6.cxx ++++ b/sw/qa/extras/layout/layout6.cxx +@@ -1043,7 +1043,7 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter3, testBtlrCell) + // Without the accompanying fix in place, this test would have failed with 'Expected: 1915; + // Actual : 1756', i.e. the AAA1 text was too close to the left cell border due to an ascent vs + // descent mismatch when calculating the baseline offset of the text portion. +- assertXPath(pXmlDoc, "//textarray[1]", "x", u"1915"); ++ assertXPath(pXmlDoc, "//textarray[1]", "x", u"1911"); + assertXPath(pXmlDoc, "//textarray[1]", "y", u"2707"); + + // Without the accompanying fix in place, this test would have failed with 'Expected: 1979; +diff --git a/sd/qa/unit/import-tests-smartart.cxx b/sd/qa/unit/import-tests-smartart.cxx +index 0a519c117b52..e4b504dcddbd 100644 +--- a/sd/qa/unit/import-tests-smartart.cxx ++++ b/sd/qa/unit/import-tests-smartart.cxx +@@ -1541,7 +1541,7 @@ CPPUNIT_TEST_FIXTURE(SdImportTestSmartArt, testAutofitSync) + // - Actual : 100 + // i.e. the left shape had no scale-down and the right shape was scaled down, even if it was + // requested that their scaling matches. +- CPPUNIT_ASSERT_EQUAL(fSecondScale, fFirstScale); ++//FIXME CPPUNIT_ASSERT_EQUAL(fSecondScale, fFirstScale); + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 0 (drawing::TextFitToSizeType_NONE) +diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx +index c15fda2c3b1c..031ac8a62414 100644 +--- a/chart2/qa/extras/chart2import.cxx ++++ b/chart2/qa/extras/chart2import.cxx +@@ -2056,8 +2056,8 @@ CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTdf146756) + xmlDocUniquePtr pXmlDoc(xmlParseDoc(reinterpret_cast(aXmlDump.getStr()))); + OString aPath("//XShape[@text='New service request and approval; 18%']"_ostr); + assertXPath(pXmlDoc, aPath, 1); +- // Expected something like 4 lines tall(1697), not 11 lines(3817). +- assertXPath(pXmlDoc, aPath, "sizeY", u"1697"); ++ // Expected something like 4 lines tall(2013), not 11 lines(3817). ++ assertXPath(pXmlDoc, aPath, "sizeY", u"2013"); + // Expected some reasonable maximum text length for the label like 2350, not 881. + sal_Int32 nTextLength = getXPath(pXmlDoc, aPath, "textMaximumFrameWidth").toInt32(); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2350), nTextLength); +diff --git a/chart2/qa/extras/chart2import2.cxx b/chart2/qa/extras/chart2import2.cxx +index dc9a2cddae46..c2bf4f67d986 100644 +--- a/chart2/qa/extras/chart2import2.cxx ++++ b/chart2/qa/extras/chart2import2.cxx +@@ -513,8 +513,8 @@ CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf133376) + CPPUNIT_ASSERT(xDataPointLabel.is()); + // Check the position of the 3rd data point label, which is out from the pie slice + awt::Point aLabelPosition = xDataPointLabel->getPosition(); +- CPPUNIT_ASSERT_DOUBLES_EQUAL(1624, aLabelPosition.X, 30); +- CPPUNIT_ASSERT_DOUBLES_EQUAL(5635, aLabelPosition.Y, 30); ++ CPPUNIT_ASSERT_DOUBLES_EQUAL(1795, aLabelPosition.X, 30); ++ CPPUNIT_ASSERT_DOUBLES_EQUAL(5569, aLabelPosition.Y, 30); + } + + CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf134225) +@@ -592,7 +592,7 @@ CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf136105) + CPPUNIT_ASSERT(xDataPointLabel.is()); + // Check the position of the 1st data point label, which is out from the pie slice + awt::Point aLabelPosition = xDataPointLabel->getPosition(); +- CPPUNIT_ASSERT_DOUBLES_EQUAL(7978, aLabelPosition.X, 500); ++ CPPUNIT_ASSERT_DOUBLES_EQUAL(7457, aLabelPosition.X, 500); + CPPUNIT_ASSERT_DOUBLES_EQUAL(1550, aLabelPosition.Y, 500); + } + } +@@ -653,7 +653,7 @@ CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf136752) + // Check the position of the 1st data point label, which is out from the pie slice + awt::Point aLabelPosition = xDataPointLabel->getPosition(); + CPPUNIT_ASSERT_DOUBLES_EQUAL(8675, aLabelPosition.X, 500); +- CPPUNIT_ASSERT_DOUBLES_EQUAL(1458, aLabelPosition.Y, 500); ++ CPPUNIT_ASSERT_DOUBLES_EQUAL(952, aLabelPosition.Y, 500); + } + + CPPUNIT_TEST_FIXTURE(Chart2ImportTest2, testTdf137505) diff --git a/debian/patches/appstream-ignore-startcenter.diff b/debian/patches/appstream-ignore-startcenter.diff new file mode 100644 index 00000000000..d61aa87c713 --- /dev/null +++ b/debian/patches/appstream-ignore-startcenter.diff @@ -0,0 +1,10 @@ +--- a/sysui/desktop/menus/startcenter.desktop ++++ b/sysui/desktop/menus/startcenter.desktop +@@ -31,6 +31,7 @@ StartupNotify=true + X-GIO-NoFuse=true + StartupWMClass=libreoffice-startcenter + X-KDE-Protocols=file,http,webdav,webdavs ++X-AppStream-Ignore=True + + ##Define Actions + Actions=Writer;Calc;Impress;Draw;Base;Math; diff --git a/debian/patches/arm-fp-mode.diff b/debian/patches/arm-fp-mode.diff new file mode 100644 index 00000000000..3047188f56e --- /dev/null +++ b/debian/patches/arm-fp-mode.diff @@ -0,0 +1,15 @@ +Description: Explicitly set fpu mode on armhf +Author: Rico Tzschichholz + +diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S b/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S +index 4eff3ff0a012..7996b9c5b3f0 100644 +--- a/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S ++++ b/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S +@@ -51,6 +51,7 @@ privateSnippetExecutor: + mov r0, ip @ r0 points to functionoffset/vtable + mov r1, sp @ r1 points to this and params + #ifdef __ARM_PCS_VFP ++ .fpu vfpv2 + vpush {d0-d7} @ floating point parameter on stack + #endif + UNWIND .pad #PAD @ throw this data away on exception diff --git a/debian/patches/build-against-shared-lpsolve.diff b/debian/patches/build-against-shared-lpsolve.diff new file mode 100644 index 00000000000..ddd80de1aaa --- /dev/null +++ b/debian/patches/build-against-shared-lpsolve.diff @@ -0,0 +1,27 @@ +diff --git a/configure.ac b/configure.ac +index cdae8b5..49f3ba2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -9468,8 +9468,9 @@ if test "$with_system_lpsolve" = "yes"; then + # some systems need this. Like Ubuntu... + AC_CHECK_LIB(m, floor) + AC_CHECK_LIB(dl, dlopen) ++ AC_CHECK_LIB(colamd, colamd) + AC_CHECK_LIB([lpsolve55], [make_lp], [:], +- [ AC_MSG_ERROR(lpsolve library not found or too old.)], []) ++ [ AC_MSG_ERROR(lpsolve library not found or too old.)], [-L/usr/lib/lp_solve]) + LIBS=$save_LIBS + else + AC_MSG_RESULT([internal]) +diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk +index a4daea7..0dea12d 100644 +--- a/RepositoryExternal.mk ++++ b/RepositoryExternal.mk +@@ -1961,6 +1961,7 @@ ifeq ($(WITH_LPSOLVER),lpsolve) + + define gb_LinkTarget__use_lpsolve + $(call gb_LinkTarget_add_libs,$(1),-llpsolve55) ++$(call gb_LinkTarget_add_ldflags,$(1),-L/usr/lib/lp_solve -Wl$(COMMA)-rpath=/usr/lib/lp_solve) + $(call gb_LinkTarget_add_defs,$(1),\ + -DSYSTEM_LPSOLVE \ + ) diff --git a/debian/patches/cargo-build-flag.diff b/debian/patches/cargo-build-flag.diff new file mode 100644 index 00000000000..d50d627faf6 --- /dev/null +++ b/debian/patches/cargo-build-flag.diff @@ -0,0 +1,11 @@ +--- a/rust_uno/CustomTarget_cargo.mk-old 2025-11-25 17:36:18.610382034 +0100 ++++ b/rust_uno/CustomTarget_cargo.mk 2025-11-25 17:36:39.491922437 +0100 +@@ -13,7 +13,7 @@ + $(call gb_CustomTarget_get_target,rust_uno/cargo): \ + $(call gb_Library_get_target,rust_uno-cpp) \ + $(gb_CustomTarget_workdir)/rust_uno/rustmaker/cpp +- cd $(SRCDIR)/rust_uno && export DEB_CARGO_CRATE=rust-uno_$(shell grep version rust_uno/Cargo.toml | awk '{ print $$3 }' | sed -e s/\"//g); cargo build $(if $(verbose),--verbose,) --release ++ cd $(SRCDIR)/rust_uno && export DEB_CARGO_CRATE=rust-uno_$(shell grep version rust_uno/Cargo.toml | awk '{ print $$3 }' | sed -e s/\"//g); cargo build $(if $(verbose),--verbose,) $(CARGO_FLAGS) + + #TODO: Add to the general pattern rule from solenv/gbuild/CustomTarget.mk, instead of having to + # repeat its recipe here: diff --git a/debian/patches/cppunit-optional.diff b/debian/patches/cppunit-optional.diff new file mode 100644 index 00000000000..9f61e3e8a6e --- /dev/null +++ b/debian/patches/cppunit-optional.diff @@ -0,0 +1,213 @@ +diff --git a/configure.ac b/configure.ac +index c12fe95a561c..66d327ae8fb8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2047,6 +2047,11 @@ AC_ARG_WITH(bffvalidator, + See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]), + ,with_bffvalidator=no) + ++libo_FUZZ_ARG_WITH(cppunit, ++ AS_HELP_STRING([--without-cppunit>], ++ [disable building(!) of cppunit stuff also built during make build]), ++,with_cppunit=yes) ++ + libo_FUZZ_ARG_WITH(junit, + AS_HELP_STRING([--with-junit=], + [Specifies the JUnit 4 jar file to use for JUnit-based tests. +@@ -7932,8 +7959,12 @@ dnl =================================================================== + dnl Check for system cppunit + dnl =================================================================== + if test "$_os" != "Android" ; then ++ if test "$with_cppunit" != "no"; then + libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0]) ++ ENABLE_CPPUNIT=TRUE ++ fi + fi ++AC_SUBST(ENABLE_CPPUNIT) + + dnl =================================================================== + dnl Check whether freetype is available +diff --git a/config_host.mk.in b/config_host.mk.in +index 8888355642ef..ac8a4b64967e 100644 +--- a/config_host.mk.in ++++ b/config_host.mk.in +@@ -147,6 +147,7 @@ export ENABLE_COINMP=@ENABLE_COINMP@ + SYSTEM_COINMP=@SYSTEM_COINMP@ + export COINMP_CFLAGS=@COINMP_CFLAGS@ + export COINMP_LIBS=@COINMP_LIBS@ ++export ENABLE_CPPUNIT=@ENABLE_CPPUNIT@ + export ENABLE_ATSPI_TESTS=@ENABLE_ATSPI_TESTS@ + export ENABLE_CPDB=@ENABLE_CPDB@ + export ENABLE_CUPS=@ENABLE_CUPS@ +diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk +index fe9523a7a6e2..719edf8c6252 100644 +--- a/sal/Module_sal.mk ++++ b/sal/Module_sal.mk +@@ -10,7 +10,6 @@ + $(eval $(call gb_Module_Module,sal)) + + $(eval $(call gb_Module_add_targets,sal,\ +- $(if $(CROSS_COMPILING),,$(if $(filter TRUE,$(DISABLE_DYNLOADING)),,Executable_cppunittester)) \ + $(if $(filter $(OS),ANDROID EMSCRIPTEN), \ + Library_lo-bootstrap) \ + Library_sal \ +@@ -33,4 +32,10 @@ $(eval $(call gb_Module_add_check_targets,sal,\ + + endif + ++ifeq ($(ENABLE_CPPUNIT),TRUE) ++$(eval $(call gb_Module_add_check_targets,sal,\ ++ $(if $(CROSS_COMPILING),,$(if $(filter TRUE,$(DISABLE_DYNLOADING)),,Executable_cppunittester)) \ ++)) ++endif ++ + # vim: set noet sw=4 ts=4: +diff --git a/sdext/Executable_pdf2xml.mk b/sdext/Executable_pdf2xml.mk +index 373f40da36fd..c0401bef9c7a 100644 +--- a/sdext/Executable_pdf2xml.mk ++++ b/sdext/Executable_pdf2xml.mk +@@ -13,10 +13,10 @@ $(eval $(call gb_Executable_use_sdk_api,pdf2xml)) + + $(eval $(call gb_Executable_use_externals,pdf2xml,\ + boost_headers \ +- cppunit \ + zlib \ + )) + ++ + $(eval $(call gb_Executable_set_include,pdf2xml,\ + -I$(SRCDIR)/sdext/source/pdfimport/inc \ + $$(INCLUDE) \ +@@ -29,7 +29,6 @@ $(eval $(call gb_Executable_use_libraries,pdf2xml,\ + cppu \ + drawinglayercore \ + drawinglayer \ +- unotest \ + cppuhelper \ + sal \ + salhelper \ +@@ -38,6 +37,15 @@ $(eval $(call gb_Executable_use_libraries,pdf2xml,\ + i18nutil \ + )) + ++ifeq ($(ENABLE_CPPUNIT),TRUE) ++$(eval $(call gb_Executable_use_externals,pdf2xml,\ ++ cppunit \ ++)) ++$(eval $(call gb_Executable_use_libraries,pdf2xml,\ ++ unotest \ ++)) ++endif ++ + $(eval $(call gb_Executable_use_library_objects,pdf2xml,pdfimport)) + + $(eval $(call gb_Executable_add_exception_objects,pdf2xml,\ +diff --git a/smoketest/Module_smoketest.mk b/smoketest/Module_smoketest.mk +index 217dbfa6543a..fa2d0d489bd7 100644 +--- a/smoketest/Module_smoketest.mk ++++ b/smoketest/Module_smoketest.mk +@@ -13,8 +13,12 @@ $(eval $(call gb_Module_Module,smoketest)) + ifeq ($(CROSS_COMPILING),) + + ifneq (,$(filter DESKTOP,$(BUILD_TYPE))) ++ifeq ($(ENABLE_CPPUNIT),TRUE) + $(eval $(call gb_Module_add_targets,smoketest,\ + Library_smoketest \ ++)) ++endif ++$(eval $(call gb_Module_add_targets,smoketest,\ + Zip_smoketestdoc \ + )) + endif +@@ -26,6 +30,7 @@ $(eval $(call gb_Module_add_targets,smoketest,\ + endif + endif + ++ifeq ($(ENABLE_CPPUNIT),TRUE) + ifneq (MACOSX/TRUE,$(OS)/$(ENABLE_MACOSX_SANDBOX)) + ifneq ($(filter EXTENSIONS,$(BUILD_TYPE)),) + $(eval $(call gb_Module_add_subsequentcheck_targets,smoketest,\ +@@ -33,6 +38,7 @@ $(eval $(call gb_Module_add_subsequentcheck_targets,smoketest,\ + )) + endif + endif ++endif + + endif + +diff --git a/test/Module_test.mk b/test/Module_test.mk +index e1051f16b5a0..d1787cb5789b 100644 +--- a/test/Module_test.mk ++++ b/test/Module_test.mk +@@ -11,6 +11,7 @@ $(eval $(call gb_Module_Module,test)) + + ifneq (,$(filter DESKTOP,$(BUILD_TYPE))) + ++ifeq ($(ENABLE_CPPUNIT),TRUE) + $(eval $(call gb_Module_add_targets,test,\ + Library_test \ + Library_test_setupvcl \ +@@ -18,6 +19,7 @@ $(eval $(call gb_Module_add_targets,test,\ + CppunitTest_test_a11y \ + CppunitTest_test_xpath \ + )) ++endif + + endif + +diff --git a/unotest/Module_unotest.mk b/unotest/Module_unotest.mk +index bdffe8e8ac14..acdd4da6c539 100644 +--- a/unotest/Module_unotest.mk ++++ b/unotest/Module_unotest.mk +@@ -12,12 +12,14 @@ $(eval $(call gb_Module_Module,unotest)) + + ifeq ($(gb_Side),host) + ifneq (,$(filter DESKTOP,$(BUILD_TYPE))) ++ifeq ($(ENABLE_CPPUNIT),TRUE) + $(eval $(call gb_Module_add_targets,unotest,\ + Library_unobootstrapprotector \ + Library_unoexceptionprotector \ + Library_unotest \ + )) + endif ++endif + + ifneq ($(ENABLE_JAVA),) + $(eval $(call gb_Module_add_targets,unotest,\ +diff --git a/testtools/Module_testtools.mk b/testtools/Module_testtools.mk +index a1b84e175b30..08e4aad24c11 100644 +--- a/testtools/Module_testtools.mk ++++ b/testtools/Module_testtools.mk +@@ -11,6 +11,8 @@ $(eval $(call gb_Module_Module,testtools)) + + ifeq ($(CROSS_COMPILING),) + ++ifeq ($(ENABLE_CPPUNIT),TRUE) ++ + $(eval $(call gb_Module_add_targets,testtools,\ + CustomTarget_bridgetest \ + InternalUnoApi_bridgetest \ +@@ -41,4 +43,6 @@ $(eval $(call gb_Module_add_check_targets,testtools,\ + + endif + ++endif ++ + # vim:set noet sw=4 ts=4: +diff --git a/Repository.mk b/Repository.mk +index dbb628f2a6b3..4387e665624e 100644 +--- a/Repository.mk ++++ b/Repository.mk +@@ -799,8 +805,12 @@ endif + + # 'test_unittest' is only package delivering to workdir. + # Other packages could be potentially autoinstalled. ++ifeq ($(ENABLE_CPPUNIT),TRUE) + $(eval $(call gb_Helper_register_packages, \ + test_unittest \ ++)) ++endif ++$(eval $(call gb_Helper_register_packages, \ + $(if $(ENABLE_CLI),cli_basetypes_copy) \ + extras_wordbook \ + instsetoo_native_setup \ diff --git a/debian/patches/debian-debug.diff b/debian/patches/debian-debug.diff new file mode 100644 index 00000000000..79e0ec27552 --- /dev/null +++ b/debian/patches/debian-debug.diff @@ -0,0 +1,47 @@ +diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk +index 9de88a2..9161a4e 100644 +--- a/solenv/gbuild/platform/com_GCC_defs.mk ++++ b/solenv/gbuild/platform/com_GCC_defs.mk +@@ -170,6 +170,8 @@ gb_COMPILERNOOPTFLAGS := -O0 -fstrict-aliasing -fstrict-overflow + ifeq ($(OS),ANDROID) + gb_DEBUGINFO_FLAGS=-glldb + # Clang does not know -ggdb2 or some other options ++else ifeq ($(enable_symbols),SMALL) ++gb_DEBUGINFO_FLAGS=-g1 + else ifeq ($(HAVE_GCC_GGDB2),TRUE) + gb_DEBUGINFO_FLAGS=-ggdb2 + else +diff --git a/configure.ac b/configure.ac +index 2d62af9981a9..b1ad5a970700 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4056,6 +4056,9 @@ fi + if test "$enable_symbols" = yes; then + ENABLE_SYMBOLS_FOR=all + AC_MSG_RESULT([yes]) ++elif test "$enable_symbols" = "SMALL" -o "$enable_symbols" = "small"; then ++ ENABLE_SYMBOLS_FOR=all ++ AC_MSG_RESULT([yes, small ones]) + elif test "$enable_symbols" = no; then + ENABLE_SYMBOLS_FOR= + AC_MSG_RESULT([no]) +@@ -4064,6 +4067,7 @@ else + ENABLE_SYMBOLS_FOR="$enable_symbols" + AC_MSG_RESULT([for "$enable_symbols"]) + fi ++AC_SUBST(enable_symbols) + AC_SUBST(ENABLE_SYMBOLS_FOR) + + if test -n "$with_android_ndk" -a \( -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_SYMBOLS_FOR" = "all"; then +diff --git a/config_host.mk.in b/config_host.mk.in +index 7df26713a1dd..174c4e50466c 100644 +--- a/config_host.mk.in ++++ b/config_host.mk.in +@@ -208,6 +209,7 @@ export ENABLE_SDREMOTE_BLUETOOTH=@ENABLE_SDREMOTE_BLUETOOTH@ + export ENABLE_SILENT_MSI=@ENABLE_SILENT_MSI@ + export ENABLE_SKIA=@ENABLE_SKIA@ + export ENABLE_SKIA_DEBUG=@ENABLE_SKIA_DEBUG@ ++export enable_symbols=@enable_symbols@ + export ENABLE_SYMBOLS_FOR=@ENABLE_SYMBOLS_FOR@ + export ENABLE_VALGRIND=@ENABLE_VALGRIND@ + export ENABLE_WASM_STRIP_ACCESSIBILITY=@ENABLE_WASM_STRIP_ACCESSIBILITY@ diff --git a/debian/patches/debian-hardened-buildflags-CPPFLAGS.diff b/debian/patches/debian-hardened-buildflags-CPPFLAGS.diff new file mode 100644 index 00000000000..5f07fd6ae4b --- /dev/null +++ b/debian/patches/debian-hardened-buildflags-CPPFLAGS.diff @@ -0,0 +1,37 @@ +--- a/configure.ac-old 2012-03-02 21:48:47.000000000 +0000 ++++ b/configure.ac 2012-03-02 21:51:29.000000000 +0000 +@@ -10225,6 +10225,11 @@ else + AC_SUBST(GSTREAMER_1_0_LIBS) + AC_SUBST(ENABLE_GSTREAMER_1_0) + ++if test -x /usr/bin/dpkg-buildflags; then ++ HARDEN_CPPFLAGS=`dpkg-buildflags --get CPPFLAGS 2>/dev/null` ++fi ++AC_SUBST(HARDEN_CPPFLAGS) ++ + ENABLE_OPENGL_TRANSITIONS= + ENABLE_OPENGL_CANVAS= + if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then +--- a/config_host.mk.in-old 2012-04-06 14:17:55.164239390 +0200 ++++ b/config_host.mk.in 2012-04-06 14:18:55.440239065 +0200 +@@ -76,6 +76,7 @@ + export CPUNAME=@CPUNAME@ + ENABLE_LASX=@ENABLE_LASX@ + export CDEFAULTOPT=@CDEFAULTOPT@ ++export HARDEN_CPPFLAGS=@HARDEN_CPPFLAGS@ + export CROSS_COMPILING=@CROSS_COMPILING@ + export CURL=@CURL@ + export CURL_CFLAGS=$(gb_SPACE)@CURL_CFLAGS@ +diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk +index c71cb40..f826d65 100644 +--- a/solenv/gbuild/gbuild.mk ++++ b/solenv/gbuild/gbuild.mk +@@ -259,6 +259,8 @@ gb_GLOBALDEFS += \ + DISABLE_DYNLOADING \ + ) + ++gb_GLOBALDEFS += $(HARDEN_CPPFLAGS) ++ + gb_GLOBALDEFS := $(sort $(gb_GLOBALDEFS)) + + # Common environment variables passed into all gb_*Test classes: diff --git a/debian/patches/debian-hardened-buildflags-no-LO-fstack-protector-strong.diff b/debian/patches/debian-hardened-buildflags-no-LO-fstack-protector-strong.diff new file mode 100644 index 00000000000..c6fb86a0649 --- /dev/null +++ b/debian/patches/debian-hardened-buildflags-no-LO-fstack-protector-strong.diff @@ -0,0 +1,32 @@ +don't hardcode -fstack-protector-strong in configure.ac/gbuild. We get the +hardening flags from dpkg-buildflags anyway. + +diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk +index 712a61df544f..0d50f538ba7b 100644 +--- a/solenv/gbuild/platform/com_GCC_defs.mk ++++ b/solenv/gbuild/platform/com_GCC_defs.mk +@@ -77,7 +77,6 @@ gb_CFLAGS_COMMON := \ + -fno-common \ + -pipe \ + $(if $(ENABLE_HARDENING_FLAGS),$(HARDENING_CFLAGS)) \ +- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \ + + gb_CXXFLAGS_COMMON := \ + -Wall \ +@@ -94,7 +93,6 @@ gb_CXXFLAGS_COMMON := \ + -fno-common \ + -pipe \ + $(if $(ENABLE_HARDENING_FLAGS),$(HARDENING_CFLAGS)) \ +- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \ + + ifeq ($(HAVE_WDEPRECATED_COPY_DTOR),TRUE) + gb_CXXFLAGS_COMMON += -Wdeprecated-copy-dtor +@@ -136,8 +134,6 @@ endif + gb_VISIBILITY_FLAGS_CXX := -fvisibility-inlines-hidden + gb_CXXFLAGS_COMMON += $(gb_VISIBILITY_FLAGS_CXX) + +-gb_LinkTarget_LDFLAGS += $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) +- + ifneq ($(gb_ENABLE_PCH),) + ifeq ($(COM_IS_CLANG),TRUE) + # Clang by default includes in the PCH timestamps of the files it was diff --git a/debian/patches/debian-opt.diff b/debian/patches/debian-opt.diff new file mode 100644 index 00000000000..b50cd5548cc --- /dev/null +++ b/debian/patches/debian-opt.diff @@ -0,0 +1,26 @@ +diff --git a/configure.ac b/configure.ac +index f06ef8e..91ce612 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -12776,6 +12776,9 @@ fi + fi + AC_SUBST(KEEP_AWAKE_CMD) + ++CDEFAULTOPT=`echo $CFLAGS 2>/dev/null | grep -E -o "\-O[[0-3]]"` ++AC_SUBST(CDEFAULTOPT) ++ + dnl ========================================= + dnl Check for Jom (parallel nmake) + dnl ========================================= +diff --git a/config_host.mk.in b/config_host.mk.in +index 1ec3268..abb45b1 100644 +--- a/config_host.mk.in ++++ b/config_host.mk.in +@@ -69,6 +69,7 @@ export CPP_LIBRARY=@CPP_LIBRARY@ + export CPPUNIT_LIBS=$(gb_SPACE)@CPPUNIT_LIBS@ + export CPUNAME=@CPUNAME@ + ENABLE_LASX=@ENABLE_LASX@ ++export CDEFAULTOPT=@CDEFAULTOPT@ + export CROSS_COMPILING=@CROSS_COMPILING@ + export CURL=@CURL@ + export CURL_CFLAGS=$(gb_SPACE)@CURL_CFLAGS@ diff --git a/debian/patches/disable-flaky-tests.diff b/debian/patches/disable-flaky-tests.diff new file mode 100644 index 00000000000..227768f541f --- /dev/null +++ b/debian/patches/disable-flaky-tests.diff @@ -0,0 +1,157 @@ +14:13 < mst__> _rene_, the toolkit unoapi tests are known to be flaky (in some + system dependent way) e.g. on the Win@6 tinderbox it always + crashes +14:14 < mst__> _rene_, sc.ScAccessible* tests also fail on some systems some of + the time + +diff --git a/toolkit/Module_toolkit.mk b/toolkit/Module_toolkit.mk +index 25db0b6..14e507c 100644 +--- a/toolkit/Module_toolkit.mk ++++ b/toolkit/Module_toolkit.mk +@@ -26,11 +26,11 @@ $(eval $(call gb_Module_add_targets,toolkit,\ + ifneq ($(OOO_JUNIT_JAR),) + $(eval $(call gb_Module_add_subsequentcheck_targets,toolkit,\ + JunitTest_toolkit_complex \ +- JunitTest_toolkit_unoapi_1 \ +- JunitTest_toolkit_unoapi_2 \ +- JunitTest_toolkit_unoapi_3 \ +- JunitTest_toolkit_unoapi_4 \ + )) + endif ++# JunitTest_toolkit_unoapi_1 \ ++# JunitTest_toolkit_unoapi_2 \ ++# JunitTest_toolkit_unoapi_3 \ ++# JunitTest_toolkit_unoapi_4 \ + + # vim: set noet sw=4 ts=4: +diff --git a/sc/qa/unoapi/sc_1.sce b/sc/qa/unoapi/sc_1.sce +index fa1684c..cc8e1a5 100644 +--- a/sc/qa/unoapi/sc_1.sce ++++ b/sc/qa/unoapi/sc_1.sce +@@ -24,10 +24,3 @@ + # i84554 -o sc.AccessibleEditableTextPara_PreviewNote + # i88241 -o sc.AccessibleEditableTextPara_HeaderFooter + -o sc.AccessibleEditableTextPara_PreviewCell +--o sc.ScAccessibleCell +-# i91044 -o sc.ScAccessibleCsvCell +-# i91044 -o sc.ScAccessibleCsvGrid +-# i84641 -o sc.ScAccessibleCsvRuler +-# i88330 -o sc.ScAccessibleDocument +-# i91045 -o sc.ScAccessibleDocumentPagePreview +--o sc.ScAccessiblePageHeader +diff --git a/sc/qa/unoapi/sc_2.sce b/sc/qa/unoapi/sc_2.sce +index dbfc3e1..d235c5d 100644 +--- a/sc/qa/unoapi/sc_2.sce ++++ b/sc/qa/unoapi/sc_2.sce +@@ -15,11 +15,6 @@ + # except in compliance with the License. You may obtain a copy of + # the License at http://www.apache.org/licenses/LICENSE-2.0 . + # +-# fdo#FOO -o sc.ScAccessiblePageHeaderArea +--o sc.ScAccessiblePreviewCell +--o sc.ScAccessiblePreviewHeaderCell +--o sc.ScAccessiblePreviewTable +-# fdo#45337 -o sc.ScAccessibleSpreadsheet + # FIXME_REMOVE_WHEN_RE_BASE_COMPLETE + # -o sc.ScAnnotationShapeObj + -o sc.ScAutoFormatFieldObj + +diff --git a/svx/qa/unoapi/svx.sce b/svx/qa/unoapi/svx.sce +index 1c3925f..a16f001 100644 +--- a/svx/qa/unoapi/svx.sce ++++ b/svx/qa/unoapi/svx.sce +@@ -25,7 +25,7 @@ + #i111216 -o svx.AccessiblePresentationGraphicShape + #i111216 -o svx.AccessiblePresentationOLEShape + #i85539 -o svx.AccessiblePresentationShape +--o svx.AccessibleShape ++#-o svx.AccessibleShape + #i90294 -o svx.GraphicExporter + -o svx.SvxDrawPage + #i85501 -o svx.SvxGraphCtrlAccessibleContext + +19:26 <@x1sc0> _rene_, since that test is using exact dimensions, it seems it + fails on your side probably because the paragraph style is + different. 1. I will change the test to avoid the exact + dimensions. 2. meantime you can skip that test: +https://cgit.freedesktop.org/libreoffice/core/commit/?id=e05f16e6bf36efbaab16dd2ed1427a750ce7cafd +19:26 < IZBot> core - disable UI test that does exact comparison +19:27 < _rene_> mmh, ok, saw that but that was for a different test, so.. :) +19:27 -!- jacobo [~jaragunde@fanzine.igalia.com] has quit [Quit: Leaving.] +19:27 < _rene_> thanks, will do + +diff --git a/uitest/writer_tests/tdf79236.py b/uitest/writer_tests/tdf79236.py +index 8585e48d8c64..704f42c009a1 100644 +--- a/sw/qa/uitest/writer_tests3/tdf79236.py ++++ b/sw/qa/uitest/writer_tests3/tdf79236.py +@@ -8,8 +8,11 @@ from uitest.framework import UITestCase + from uitest.framework import UITestCase + from uitest.uihelper.common import type_text + ++import unittest ++ + class tdf79236(UITestCase): + ++ @unittest.skip("Currently broken") + def test_paragraph(self): + + with self.ui_test.create_doc_in_start_center("writer") as document: + +14:39 < ztamas> _rene_: chart2dump is used to fail because of font size differences, just use a bigger delta or disable it if it + fails for you. +14:40 <@sberg_> noelgrandin, no +14:40 < noelgrandin> sberg_, sure seems that way both in the debugger and in the resulting SAL_WARN output +14:42 < ztamas> _rene_: there were some work on making font rendering consistent on different platforms, but it's not finished + yet, I guess +diff --git a/chart2/Module_chart2.mk b/chart2/Module_chart2.mk +index 37acfdc3730f..7d26342f179f 100644 +--- a/chart2/Module_chart2.mk ++++ b/chart2/Module_chart2.mk +@@ -33,9 +33,9 @@ $(eval $(call gb_Module_add_slowcheck_targets,chart2,\ + CppunitTest_chart2_import2 \ + CppunitTest_chart2_trendcalculators \ +- CppunitTest_chart2_dump \ + CppunitTest_chart2_pivot_chart_test \ + CppunitTest_chart2_geometry \ + CppunitTest_chart2_uichart \ + )) ++# CppunitTest_chart2_dump \ + + ifeq ($(WITH_FONTS), TRUE) +diff --git a/sccomp/qa/unit/solver.cxx b/sccomp/qa/unit/solver.cxx +index 536df7425bb9..f3e37932c79c 100644 +--- a/sccomp/qa/unit/solver.cxx ++++ b/sccomp/qa/unit/solver.cxx +@@ -14,6 +14,16 @@ + #include + #include + ++#ifdef ENABLE_LPSOLVE ++ /* works constantly on some buildds (arm-conova-*) but fails on arm-ubc-*. ++ * On my rpi4 some attempts work, some not. ++ * Disable it on armhf based on flakiness ++ */ ++ #if defined(__arm__) && defined(__ARM_EABI__) && defined(__ARM_PCS_VFP) ++ #undef ENABLE_LPSOLVE ++ #endif ++#endif ++ + using namespace css; + + namespace { +diff --git a/sw/qa/unoapi/sw_1.sce b/sw/qa/unoapi/sw_1.sce +index f55cfaba4a26..fbc24334df3f 100644 +--- a/sw/qa/unoapi/sw_1.sce ++++ b/sw/qa/unoapi/sw_1.sce +@@ -34,7 +34,7 @@ + #i111178 -o sw.SwAccessibleTextFrameView + -o sw.SwAccessibleTextGraphicObject + -o sw.SwXAutoTextEntry +--o sw.SwXAutoTextGroup ++#-o sw.SwXAutoTextGroup + -o sw.SwXCell + -o sw.SwXCellRange + -o sw.SwXChapterNumbering + +# see https://bugs.documentfoundation.org/show_bug.cgi?id=145158#c18. Broken upstream, no reaction... + diff --git a/debian/patches/disable-java-in-odk-build-examples-on-zero-vm.diff b/debian/patches/disable-java-in-odk-build-examples-on-zero-vm.diff new file mode 100644 index 00000000000..d8309ba293e --- /dev/null +++ b/debian/patches/disable-java-in-odk-build-examples-on-zero-vm.diff @@ -0,0 +1,58 @@ +diff --git a/config_host.mk.in b/config_host.mk.in +index 6cea6ccf795e..d08fac922239 100644 +--- a/config_host.mk.in ++++ b/config_host.mk.in +@@ -324,6 +324,7 @@ export JAVACFLAGS=@JAVACFLAGS@ + export JAVAIFLAGS=@JAVAIFLAGS@ + export JAVAIFLAGS_FOR_BUILD=@JAVAIFLAGS_FOR_BUILD@ + export JAVAINTERPRETER=@JAVAINTERPRETER@ ++export JAVA_HAS_ZERO_VM=@JAVA_HAS_ZERO_VM@ + export JAVA_HOME=@JAVA_HOME@ + export JAVA_HOME_FOR_BUILD=@JAVA_HOME_FOR_BUILD@ + export JAVA_SOURCE_VER=@JAVA_SOURCE_VER@ +diff --git a/configure.ac b/configure.ac +index 06398bfa99a7..06835ae884c4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -7826,6 +7826,14 @@ if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then + JAVAIFLAGS=-Xmx64M + # set to limit VM usage for javac + JAVACFLAGS=-J-Xmx128M ++ ++ AC_MSG_CHECKING([whether $JAVAINTERPRETER is using the Zero VM]) ++ if $JAVAINTERPRETER -version 2>&1 | grep -q Zero; then ++ JAVA_HAS_ZERO_VM=y ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ fi + fi + else + AC_MSG_ERROR([Java not found. You need at least JDK 8]) +@@ -7841,6 +7849,7 @@ else + JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD + fi + fi ++AC_SUBST(JAVA_HAS_ZERO_VM) + + dnl =================================================================== + dnl Checks for javac +diff --git a/odk/Module_odk.mk b/odk/Module_odk.mk +index 410f8cf8ef1e..bd05d4bba200 100644 +--- a/odk/Module_odk.mk ++++ b/odk/Module_odk.mk +@@ -60,10 +62,14 @@ $(eval $(call gb_Module_add_check_targets,odk,\ + ifneq ($(filter $(OS),LINUX MACOSX),) + $(eval $(call gb_Module_add_subsequentcheck_targets,odk, \ + CustomTarget_build-examples \ ++)) ++ifneq ($(JAVA_HAS_ZERO_VM),y) ++$(eval $(call gb_Module_add_subsequentcheck_targets,odk, \ + $(if $(ENABLE_JAVA),\ + CustomTarget_build-examples_java \ + ) \ + )) + endif ++endif + + # vim: set noet sw=4 ts=4: diff --git a/debian/patches/disable-shortcuts_tab_navigation-uitest.diff b/debian/patches/disable-shortcuts_tab_navigation-uitest.diff new file mode 100644 index 00000000000..99845b3e89b --- /dev/null +++ b/debian/patches/disable-shortcuts_tab_navigation-uitest.diff @@ -0,0 +1,34 @@ +--- a/cui/qa/uitest/dialogs/shortcuts.py 2024-06-10 16:53:25.647230480 +0200 ++++ /dev/null 2024-06-07 16:44:09.580083050 +0200 +@@ -1,31 +0,0 @@ +-# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +-# +-# This Source Code Form is subject to the terms of the Mozilla Public +-# License, v. 2.0. If a copy of the MPL was not distributed with this +-# file, You can obtain one at http://mozilla.org/MPL/2.0/. +-# +- +-from uitest.framework import UITestCase +-from uitest.uihelper.common import select_pos +-from libreoffice.uno.propertyvalue import mkPropertyValues +-from uitest.uihelper.common import get_state_as_dict +- +-class Test(UITestCase): +- +- def test_tab_navigation(self): +- with self.ui_test.create_doc_in_start_center("writer"),\ +- self.ui_test.execute_dialog_through_command(".uno:EditStyle") as xDialog: +- xTabs = xDialog.getChild("tabcontrol") +- select_pos(xTabs, "0") +- +- for i in range(16): +- self.assertEqual(get_state_as_dict(xTabs)["CurrPagePos"], str(i)) +- xTabs.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+PAGEDOWN"})) +- +- for i in reversed(range(16)): +- self.assertEqual(get_state_as_dict(xTabs)["CurrPagePos"], str(i)) +- xTabs.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+PAGEUP"})) +- +- +- +-# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/debian/patches/disable-uitest-xmlsecurity-gpg.diff b/debian/patches/disable-uitest-xmlsecurity-gpg.diff new file mode 100644 index 00000000000..fe54288d28a --- /dev/null +++ b/debian/patches/disable-uitest-xmlsecurity-gpg.diff @@ -0,0 +1,20 @@ +diff --git a/xmlsecurity/Module_xmlsecurity.mk b/xmlsecurity/Module_xmlsecurity.mk +index afb1e251586a..12241f6b6520 100644 +--- a/xmlsecurity/Module_xmlsecurity.mk ++++ b/xmlsecurity/Module_xmlsecurity.mk +@@ -48,9 +48,9 @@ $(eval $(call gb_Module_add_screenshot_targets,xmlsecurity,\ + )) + +-ifeq ($(ENABLE_GPGMEPP),TRUE) +-$(eval $(call gb_Module_add_uicheck_targets,xmlsecurity,\ +- UITest_xmlsecurity_gpg \ +-)) +-endif ++ifeq ($(ENABLE_GPGMEPP),TRUE) ++#$(eval $(call gb_Module_add_uicheck_targets,xmlsecurity,\ ++# UITest_xmlsecurity_gpg \ ++#)) ++endif + + ifneq (,$(filter DESKTOP,$(BUILD_TYPE))) + ifneq (,$(or $(ENABLE_NSS),$(filter WNT,$(OS)))) diff --git a/debian/patches/disable-unused-test-programs.diff b/debian/patches/disable-unused-test-programs.diff new file mode 100644 index 00000000000..c1402c61565 --- /dev/null +++ b/debian/patches/disable-unused-test-programs.diff @@ -0,0 +1,70 @@ +diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk +index a5e4bf5d68d2..3e9e1bf9fe27 100644 +--- a/vcl/Module_vcl.mk ++++ b/vcl/Module_vcl.mk +@@ -28,28 +28,9 @@ $(eval $(call gb_Module_add_targets,vcl,\ + StaticLibrary_vclmain \ + $(if $(ENABLE_MACOSX_SANDBOX),, \ + $(if $(DISABLE_GUI),, \ +- Executable_ui-previewer)) \ +- $(if $(filter LINUX MACOSX SOLARIS WNT %BSD,$(OS)), \ +- Executable_outdevgrind \ +- $(if $(DISABLE_GUI),, \ +- Executable_vcldemo \ +- Executable_icontest \ +- Executable_visualbackendtest \ +- Executable_mtfdemo ))) \ ++ Executable_ui-previewer))) \ + )) + +-ifeq ($(CROSS_COMPILING)$(DISABLE_DYNLOADING),) +- +-$(eval $(call gb_Module_add_targets,vcl,\ +- $(if $(filter-out ANDROID iOS WNT,$(OS)), \ +- Executable_svdemo \ +- Executable_fftester \ +- Executable_svptest \ +- Executable_svpclient) \ +-)) +- +-endif +- + $(eval $(call gb_Module_add_l10n_targets,vcl,\ + AllLangMoTarget_vcl \ + )) +diff --git a/xmlsecurity/Module_xmlsecurity.mk b/xmlsecurity/Module_xmlsecurity.mk +index d3fafeb7e4ec..87b8c067903e 100644 +--- a/xmlsecurity/Module_xmlsecurity.mk ++++ b/xmlsecurity/Module_xmlsecurity.mk +@@ -45,14 +45,6 @@ $(eval $(call gb_Module_add_screenshot_targets,xmlsecurity,\ + CppunitTest_xmlsecurity_dialogs_test \ + )) + +-ifneq (,$(filter DESKTOP,$(BUILD_TYPE))) +- +-$(eval $(call gb_Module_add_targets,xmlsecurity,\ +- Executable_pdfverify \ +-)) +- +-endif +- + endif + + # vim: set noet sw=4 ts=4: +diff --git a/libreofficekit/Module_libreofficekit.mk b/libreofficekit/Module_libreofficekit.mk +index 351f89a33e48..defe0b14a681 100644 +--- a/libreofficekit/Module_libreofficekit.mk ++++ b/libreofficekit/Module_libreofficekit.mk +@@ -23,12 +23,10 @@ $(eval $(call gb_Module_add_check_targets,libreofficekit, \ + ifneq ($(ENABLE_GTK3),) + $(eval $(call gb_Module_add_targets,libreofficekit,\ + Library_libreofficekitgtk \ +- Executable_gtktiledviewer \ + )) + endif # ($(ENABLE_GTK3),) + + $(eval $(call gb_Module_add_targets,libreofficekit,\ +- Executable_tilebench \ + Package_selectionhandles \ + UIConfig_libreofficekit \ + )) diff --git a/debian/patches/disableClassPathURLCheck.diff b/debian/patches/disableClassPathURLCheck.diff new file mode 100644 index 00000000000..89ae9a1afaa --- /dev/null +++ b/debian/patches/disableClassPathURLCheck.diff @@ -0,0 +1,10 @@ +--- a/configure.ac-old 2020-09-13 14:08:41.553174902 +0200 ++++ b/configure.ac 2020-09-13 14:08:54.365300591 +0200 +@@ -7833,6 +7833,7 @@ + + # set to limit VM usage for JunitTests + JAVAIFLAGS=-Xmx64M ++ JAVAIFLAGS="$JAVAIFLAGS -Djdk.net.URLClassPath.disableClassPathURLCheck=true" + # set to limit VM usage for javac + JAVACFLAGS=-J-Xmx128M + diff --git a/debian/patches/do-not-abort-on-NON_APPLICATION_FONT_USE.diff b/debian/patches/do-not-abort-on-NON_APPLICATION_FONT_USE.diff new file mode 100644 index 00000000000..85f07b66504 --- /dev/null +++ b/debian/patches/do-not-abort-on-NON_APPLICATION_FONT_USE.diff @@ -0,0 +1,14 @@ +diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk +index b16e3d0e5417..33bdde04b072 100644 +--- a/solenv/gbuild/CppunitTest.mk ++++ b/solenv/gbuild/CppunitTest.mk +@@ -132,9 +132,6 @@ else + $(if $(gb_CppunitTest__vcl_no_svp), \ + $(filter-out SAL_USE_VCLPLUGIN=svp,$(gb_TEST_ENV_VARS)),$(gb_TEST_ENV_VARS)) \ + $(EXTRA_ENV_VARS) \ +- $(if $(filter allow,$(NON_APPLICATION_FONT_USE)),, \ +- $(if $(filter abort,$(NON_APPLICATION_FONT_USE)),SAL_NON_APPLICATION_FONT_USE=abort, \ +- $(if $(filter deny,$(NON_APPLICATION_FONT_USE)),SAL_NON_APPLICATION_FONT_USE=deny))) \ + $(if $(G_SLICE),G_SLICE=$(G_SLICE)) \ + $(if $(GLIBCXX_FORCE_NEW),GLIBCXX_FORCE_NEW=$(GLIBCXX_FORCE_NEW)) \ + $(if $(strip $(PYTHON_URE)),\ diff --git a/debian/patches/do-not-hide-test-output.diff b/debian/patches/do-not-hide-test-output.diff new file mode 100644 index 00000000000..7b388107d7d --- /dev/null +++ b/debian/patches/do-not-hide-test-output.diff @@ -0,0 +1,99 @@ +diff --git a/odk/build-examples_common.mk b/odk/build-examples_common.mk +index abcb3a3e2593..35d45ad23413 100644 +--- a/odk/build-examples_common.mk ++++ b/odk/build-examples_common.mk +@@ -49,12 +49,7 @@ else + && printf 'yes\n' | LANGUAGE= LC_ALL=C make -j1 \ + CC="$(CXX) $(gb_CXX03FLAGS)" LINK="$(CXX)" LIB="$(CXX)" \ + $(if $(MACOSX_SHELL_HACK), SHELL="$$$$ODK_BUILD_SHELL", ))) \ +- $(if $(MACOSX_SHELL_HACK),&& rm -f "$$$$ODK_BUILD_SHELL")) \ +- >$(gb_CustomTarget_workdir)/$(1)/log 2>&1 \ +- || (RET=$$$$? \ +- $(if $(MACOSX_SHELL_HACK), && rm -f "$$$$ODK_BUILD_SHELL" , ) \ +- && cat $(gb_CustomTarget_workdir)/$(1)/log \ +- && exit $$$$RET) ++ 2>&1 ) + endif + + $(gb_CustomTarget_workdir)/$(1)/setsdkenv: \ +diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk +index cfca2bbbf570..17c1070dcb12 100644 +--- a/solenv/gbuild/CppunitTest.mk ++++ b/solenv/gbuild/CppunitTest.mk +@@ -159,12 +159,7 @@ else + $(call gb_CppunitTest__make_args) "-env:CPPUNITTESTTARGET=$@" \ + ) \ + $(if $(gb_CppunitTest__interactive),$(if $(gb_CppunitTest_localized),|| exit $$?), \ +- > $@.$(if $(gb_CppunitTest_localized),$$l.)log 2>&1 \ +- || { $(if $(value gb_CppunitTest_postprocess), \ +- RET=$$?; \ +- $(call gb_CppunitTest_postprocess,$(gb_CppunitTest_CPPTESTCOMMAND),$@.core,$$RET) >> $@.$(if $(gb_CppunitTest_localized),$$l.)log 2>&1;) \ +- cat $@.$(if $(gb_CppunitTest_localized),$$l.)log; $(gb_CppunitTest_UNITTESTFAILED) Cppunit $*; \ +- $(if $(gb_CppunitTest_localized),exit $$RET;) } ) \ ++ 2>&1 ) \ + $(if $(gb_CppunitTest_localized),; done)) + $(call gb_Trace_EndRange,$*,CUT) + endif +diff --git a/solenv/gbuild/JunitTest.mk b/solenv/gbuild/JunitTest.mk +index 36f29b50ef28..3ac4603ff6a0 100644 +--- a/solenv/gbuild/JunitTest.mk ++++ b/solenv/gbuild/JunitTest.mk +@@ -44,17 +44,7 @@ else + -classpath "$(T_CP)" \ + $(DEFS) \ + org.junit.runner.JUnitCore \ +- $(CLASSES) > $@.log 2>&1 || \ +- (cat $@.log \ +- && echo "to rerun just this failed test without all others, run:" \ +- && echo && echo " make JunitTest_$*" && echo \ +- && echo "cd into the module dir to run the tests faster" \ +- && echo "Or to do interactive debugging, run two shells with:" \ +- && echo \ +- && echo " make debugrun" \ +- && echo " make gb_JunitTest_DEBUGRUN=T JunitTest_$*" \ +- && echo \ +- && false))) ++ $(CLASSES) 2>&1)) + $(CLEAN_CMD) + $(call gb_Trace_EndRange,$*,JUT) + endif +diff --git a/solenv/gbuild/UITest.mk b/solenv/gbuild/UITest.mk +index 03d30448ef7b..5628e47866f8 100644 +--- a/solenv/gbuild/UITest.mk ++++ b/solenv/gbuild/UITest.mk +@@ -77,16 +77,7 @@ else + --userdir=$(call gb_Helper_make_url,$(dir $(call gb_UITest_get_target,$*))user) \ + --dir=$(strip $(MODULES)) \ + $(gb_UITest_GDBTRACE) \ +- $(if $(gb_UITest__interactive),, \ +- > $@.log 2>&1 \ +- || ($(if $(value gb_CppunitTest_postprocess), \ +- RET=$$?; \ +- $(call gb_CppunitTest_postprocess,$(gb_UITest_EXECUTABLE_GDB),$@.core,$$RET) >> $@.log 2>&1;) \ +- $(if $(filter WNT,$(OS)), \ +- printf '%s: <<<\n' $(dir $(call gb_UITest_get_target,$*))soffice.out.log; \ +- cat $(dir $(call gb_UITest_get_target,$*))soffice.out.log; \ +- printf ' >>>\n\n';) \ +- cat $@.log; $(gb_UITest_UNITTESTFAILED) UI $*)))) ++ 2>&1)) + $(call gb_Trace_EndRange,$*,UIT) + endif + +diff --git a/solenv/gbuild/PythonTest.mk b/solenv/gbuild/PythonTest.mk +index bc404d4fb817..f605634d3d07 100644 +--- a/solenv/gbuild/PythonTest.mk ++++ b/solenv/gbuild/PythonTest.mk +@@ -67,12 +67,7 @@ else + $(gb_PythonTest_COMMAND) \ + $(if $(PYTHON_TEST_NAME),$(PYTHON_TEST_NAME),$(MODULES)) \ + ; } \ +- $(if $(gb_CppunitTest__interactive),, \ +- > $@.log 2>&1 \ +- || ($(if $(value gb_CppunitTest_postprocess), \ +- RET=$$?; \ +- $(call gb_CppunitTest_postprocess,$(gb_PythonTest_EXECUTABLE_GDB),$@.core,$$RET) >> $@.log 2>&1;) \ +- cat $@.log; $(gb_PythonTest_UNITTESTFAILED) Python $*))) ++ 2>&1) + $(call gb_Trace_EndRange,$*,PYT) + endif + diff --git a/debian/patches/dont-touch-urd.diff b/debian/patches/dont-touch-urd.diff new file mode 100644 index 00000000000..f19ef5dc217 --- /dev/null +++ b/debian/patches/dont-touch-urd.diff @@ -0,0 +1,80 @@ +18:43 <@_rene_> hmm. /me wonders why after a rm config.status autogen.lastrun + and a re-configure (and make clean for odk/scp2/scripting) LO + master tries to rebuild offapi/udkapi again? +18:44 <@_rene_> this a) takes with cpp instead of ucpp and b) causes all kind + of stuff "down" to be rebuilt.... :( +18:44 <@_rene_> which is extremely bad. +18:44 <@_rene_> if it isn't solvable easily: what to touch to prevent it from + doing that? :-) +18:45 < loirkerbot> LibreOffice (core) mstahl * desktop/source/app/main.c: + desktop: tweak xmlCleanupParser hack: disable on return + from main +18:46 < mst__> _rene_, did you switch between --with-system-ucpp and without? + that should rebuild IDL file... +18:47 <@_rene_> nah, first run is just --disable-help, --disable-scripting etc +18:47 <@_rene_> and the second run does that +18:47 <@_rene_> (first pass to "just" build what is needed for arch-specific + stuff) +18:48 <@_rene_> (and I am not using ucpp at all, but cpp ;)) +18:51 < mst__> _rene_, hmm don't know why that would happen then... you could + try running second make with -d and redirect to a file, but + beware that file will be huge... then grep for "Must + remake.*urd" or something should give you the problem area +18:59 -!- reisi007 [~chatzilla@cpe90-146-226-33.liwest.at] has quit [Quit: + ChatZilla 0.9.89 [Firefox 14.0.1/20120713134347]] +19:00 -!- crossmanith_ [~cr@p3E9EAEF6.dip.t-dialin.net] has joined + #libreoffice-dev +19:00 -!- erAck_away is now known as erAck +19:05 -!- cbosdonnat [~cbosdo@ALyon-651-1-309-127.w90-14.abo.wanadoo.fr] has + quit [Quit: Leaving] +19:07 <@_rene_> mst__: ok, starting a new build, let's see +[...] +10:36 <@_rene_> mst__: nothing interesting there instead of the loads of + touch'es... +10:36 <@_rene_> mst__: butI just removed the touch from the UnoApiTarget and + let's see now :) +10:36 -!- erAck [~erathke@f054050047.adsl.alicedsl.de] has joined + #libreoffice-dev +10:36 -!- mode/#libreoffice-dev [+o erAck] by ChanServ +10:36 <@_rene_> $(call gb_UnoApiPartTarget_get_target,%.urd) : +10:36 <@_rene_> - touch $@ +10:36 <@_rene_> + +[...] +10:38 < mst__> _rene_, there must be something interesting there: preceding the + "Must remake.*urd" line there must be some line that says target + "foo" is "newer" than the .urd and therefor it will be rebuilt +[...] +10:40 <@_rene_> mst__: I didn't see anything there, no ".*urd*muss neu" +10:41 < mst__> _rene_, there must be a message like that immediately preceding + running the touch command +10:41 -!- pepp [~pierre-er@vaf26-6-78-248-2-61.fbx.proxad.net] has joined + #libreoffice-dev +10:42 <@vmiklos> mst__: makes sense. +10:42 -!- matus [~ubuntu@adsl-dyn17.78-98-107.t-com.sk] has joined + #libreoffice-dev +10:42 <@_rene_> as said, there was done. I don't think I oversaw it +10:43 <@_rene_> but can try again later, for now I will just keep removing the + touch. according to the comment this shoudln't do harm +10:43 < mst__> _rene_, removing it will break incremental builds iirc +10:44 <@_rene_> but only if you change idl stuff inbetween +10:44 <@_rene_> which won't happen that often in package builds ;) +10:44 < mst__> _rene_, exactly +10:44 -!- Fridrich [~fridrich@71-99.199-178.cust.bluewin.ch] has joined + #libreoffice-dev +10:44 -!- mode/#libreoffice-dev [+o Fridrich] by ChanServ +10:45 <@_rene_> (when I am out of "use git", only when there's a new + (pre-)release" + +diff --git a/solenv/gbuild/UnoApiTarget.mk b/solenv/gbuild/UnoApiTarget.mk +index 98734ab..b281a84 100644 +--- a/solenv/gbuild/UnoApiTarget.mk ++++ b/solenv/gbuild/UnoApiTarget.mk +@@ -46,7 +46,7 @@ $(dir $(call gb_UnoApiPartTarget_get_target,))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + + $(call gb_UnoApiPartTarget_get_target,%.urd) : +- touch $@ ++ + + # TODO: + # - get idlc switch "-P" (generate .urd into package dir) diff --git a/debian/patches/fix-32bits-test-build.diff b/debian/patches/fix-32bits-test-build.diff new file mode 100644 index 00000000000..dda171f468e --- /dev/null +++ b/debian/patches/fix-32bits-test-build.diff @@ -0,0 +1,92 @@ +diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx +index e8b6e4c497eb..cf6e1210256b 100644 +--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx ++++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx +@@ -2840,8 +2840,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering) + sal_Int32 nViewWidth = 2000; + sal_Int32 nViewHeight = 2000; + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1125, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1125, static_cast(nViewHeight)); + + const Color aTransparentColor(ColorAlpha, 0x00000000); + const tools::Long nLeft = 20; +@@ -2958,8 +2958,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_WithFie + sal_Int32 nViewWidth = 2000; + sal_Int32 nViewHeight = 2000; + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1125, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1125, static_cast(nViewHeight)); + + const Color aTransparentColor(ColorAlpha, 0x00000000); + const tools::Long nLeft = 20; +@@ -3168,8 +3168,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_SlideNu + sal_Int32 nViewWidth = 2000; + sal_Int32 nViewHeight = 2000; + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1125, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1125, static_cast(nViewHeight)); + + // Background Layer + { +@@ -3381,8 +3381,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_Animati + sal_Int32 nViewWidth = 2000; + sal_Int32 nViewHeight = 2000; + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1125, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1125, static_cast(nViewHeight)); + + { + std::vector pBuffer(nViewWidth * nViewHeight * 4); +@@ -3553,8 +3553,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_Animati + sal_Int32 nViewHeight = 2000; + std::string sHash = GetInterfaceHash(GetXDrawPageForSdrPage(pPage)); + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1125, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1125, static_cast(nViewHeight)); + + { + std::vector pBuffer(nViewWidth * nViewHeight * 4); +@@ -3815,8 +3815,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_Animati + + std::string sHash = GetInterfaceHash(GetXDrawPageForSdrPage(pPage)); + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1125, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1125, static_cast(nViewHeight)); + + { + std::vector pBuffer(nViewWidth * nViewHeight * 4); +@@ -3982,8 +3982,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_Animati + + std::string sHash = GetInterfaceHash(GetXDrawPageForSdrPage(pPage)); + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1125, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1125, static_cast(nViewHeight)); + + { + std::vector pBuffer(nViewWidth * nViewHeight * 4); +@@ -4087,8 +4087,8 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_Animati + + std::string sHash = GetInterfaceHash(GetXDrawPageForSdrPage(pPage)); + CPPUNIT_ASSERT(pXImpressDocument->createSlideRenderer(sHash.c_str(), 0, nViewWidth, nViewHeight, true, true)); +- CPPUNIT_ASSERT_EQUAL(2000, nViewWidth); +- CPPUNIT_ASSERT_EQUAL(1500, nViewHeight); ++ CPPUNIT_ASSERT_EQUAL(2000, static_cast(nViewWidth)); ++ CPPUNIT_ASSERT_EQUAL(1500, static_cast(nViewHeight)); + + std::vector aBufferHashes; + diff --git a/debian/patches/fix-flaky-bridgetest.diff b/debian/patches/fix-flaky-bridgetest.diff new file mode 100644 index 00000000000..d113f55d901 --- /dev/null +++ b/debian/patches/fix-flaky-bridgetest.diff @@ -0,0 +1,38 @@ +Description: Add safer float comparisons to bridgetest equals() +Author: Marcus Tomlinson +Bug-Ubuntu: https://launchpad.net/bugs/1832360 + +--- a/testtools/source/bridgetest/bridgetest.cxx ++++ b/testtools/source/bridgetest/bridgetest.cxx +@@ -124,6 +125,9 @@ public: + + static bool equals( const TestElement & rData1, const TestElement & rData2 ) + { ++ const float epsilon_f = 0.00001f; ++ const double epsilon_d = 0.000000000001; ++ + check( rData1.Bool == rData2.Bool, "### bool does not match!" ); + check( rData1.Char == rData2.Char, "### char does not match!" ); + check( rData1.Byte == rData2.Byte, "### byte does not match!" ); +@@ -133,8 +137,8 @@ static bool equals( const TestElement & rData1, const TestElement & rData2 ) + check( rData1.ULong == rData2.ULong, "### unsigned long does not match!" ); + check( rData1.Hyper == rData2.Hyper, "### hyper does not match!" ); + check( rData1.UHyper == rData2.UHyper, "### unsigned hyper does not match!" ); +- check( rData1.Float == rData2.Float, "### float does not match!" ); +- check( rData1.Double == rData2.Double, "### double does not match!" ); ++ check( fabs( rData1.Float - rData2.Float ) < epsilon_f, "### float does not match!" ); ++ check( fabs( rData1.Double - rData2.Double ) < epsilon_d, "### double does not match!" ); + check( rData1.Enum == rData2.Enum, "### enum does not match!" ); + check( rData1.String == rData2.String, "### string does not match!" ); + check( rData1.Byte2 == rData2.Byte2, "### byte2 does not match!" ); +@@ -149,8 +153,8 @@ static bool equals( const TestElement & rData1, const TestElement & rData2 ) + rData1.ULong == rData2.ULong && + rData1.Hyper == rData2.Hyper && + rData1.UHyper == rData2.UHyper && +- rData1.Float == rData2.Float && +- rData1.Double == rData2.Double && ++ fabs( rData1.Float - rData2.Float ) < epsilon_f && ++ fabs( rData1.Double - rData2.Double ) < epsilon_d && + rData1.Enum == rData2.Enum && + rData1.String == rData2.String && + rData1.Byte2 == rData2.Byte2 && diff --git a/debian/patches/fix-internal-hsqldb-build.diff b/debian/patches/fix-internal-hsqldb-build.diff new file mode 100644 index 00000000000..9360d0c17bd --- /dev/null +++ b/debian/patches/fix-internal-hsqldb-build.diff @@ -0,0 +1,45 @@ +diff -urN hsqldb.old/patches/use-system-servlet-api.jar.diff hsqldb/patches/use-system-servlet-api.jar.diff +--- a/external/hsqldb/patches/use-system-servlet-api.jar.diff 1970-01-01 01:00:00.000000000 +0100 ++++ b/external/hsqldb/patches/use-system-servlet-api.jar.diff 2013-03-19 15:09:42.137801521 +0100 +@@ -0,0 +1,29 @@ ++--- misc/hsqldb/build/build.xml +++++ misc/build/hsqldb/build/build.xml ++@@ -356,7 +356,7 @@ ++ optimize="${build.optimize}" ++ > ++ ++- +++ ++ ++ ++ ++@@ -818,7 +818,7 @@ ++ ${src}/org/hsqldb/util/RCData.java, ++ ${src}/org/hsqldb/util/SqlTool.java" ++ destdir="${basedir}/doc/src" ++- classpath="${basedir}/lib/servlet.jar;${basedir}/lib/junit.jar" +++ classpath="/usr/share/java/servlet-api-3.1.jar;${basedir}/lib/junit.jar" ++ author="true" ++ version="false" ++ use="true" ++@@ -839,7 +839,7 @@ ++ .") + #define STR_QUICKSTART_EXIT NC_("STR_QUICKSTART_EXIT", "Exit Quickstarter") + #define STR_QUICKSTART_TIP NC_("STR_QUICKSTART_TIP", "%PRODUCTNAME %PRODUCTVERSION Quickstarter") + #define STR_QUICKSTART_FILEOPEN NC_("STR_QUICKSTART_FILEOPEN", "Open Document...") diff --git a/debian/patches/hide-math-desktop-file.patch b/debian/patches/hide-math-desktop-file.patch new file mode 100644 index 00000000000..56aaa83f268 --- /dev/null +++ b/debian/patches/hide-math-desktop-file.patch @@ -0,0 +1,15 @@ +Description: Hide startcenter and math from the shell +Author: Olivier Tilloy +Bug-Ubuntu: https://launchpad.net/bugs/1696250 +Forwarded: not-needed + +--- a/sysui/desktop/menus/math.desktop ++++ b/sysui/desktop/menus/math.desktop +@@ -33,6 +33,7 @@ Keywords=Equation;OpenDocument Formula;F + InitialPreference=5 + StartupWMClass=libreoffice-math + X-KDE-Protocols=file,http,webdav,webdavs ++NotShowIn=GNOME; + + Actions=NewDocument; + [Desktop Action NewDocument] diff --git a/debian/patches/install-fixes.diff b/debian/patches/install-fixes.diff new file mode 100644 index 00000000000..891bb321c78 --- /dev/null +++ b/debian/patches/install-fixes.diff @@ -0,0 +1,166 @@ +diff --git a/bin/distro-install-file-lists b/bin/distro-install-file-lists +index eaabf9c..c1b1ec6 100755 +--- libreoffice-3.5.0/bin/distro-install-file-lists ++++ libreoffice-3.5.0/bin/distro-install-file-lists +@@ -8,6 +8,8 @@ + exit 1 + fi + ++export OOO_VENDOR=Debian ++ + BUILDDIR=`pwd` + FILELISTSDIR="$BUILDDIR/file-lists" + +@@ -351,152 +351,6 @@ if test "z$OOO_VENDOR" != "zDebian" ; then + remove_duplicity_from_flists common_list.txt lang_bg_list.txt $INSTALLDIR/presets/config/styles.sod + # the British fixes can be removed after the issue #54113 is fixed + remove_duplicity_from_flists common_list.txt lang_en-GB_list.txt $INSTALLDIR/presets/config/standard.sog +- +-else +- +- echo "Creating package directories..." +- +- test -d pkg && rm -r pkg || : +- +- # Create package tree (needed by Debian's dpkg) +- # create_package_directory +- create_package_directory() +- { +- listfile=$1 +- directory="$2" +- perl -nl \ +- -e " if(/^%dir (.*)/) +- {system('mkdir', '-p', '-m', '755', \"$directory\".\$1);} +- else +- {rename('./'.\$_, \"$directory\".\$_);} +- " \ +- $listfile +- } +- +- create_package_directory gid_Module_Root_Ure_Hidden pkg/ure +- +- create_package_directory gid_Module_Root pkg/libreoffice-common +- create_package_directory gid_Module_Root_Brand pkg/libreoffice-common +- create_package_directory gid_Module_Root_Files_Images pkg/libreoffice-common +- create_package_directory gid_Module_Oo_Linguistic pkg/libreoffice-common +- create_package_directory gid_Module_Optional_Xsltfiltersamples pkg/libreoffice-common +- create_package_directory gid_Module_Optional_Grfflt pkg/libreoffice-draw +- create_package_directory gid_Module_Prg_Calc_Bin pkg/libreoffice-calc +- create_package_directory gid_Module_Prg_Math_Bin pkg/libreoffice-math +- create_package_directory gid_Module_Prg_Draw_Bin pkg/libreoffice-draw +- create_package_directory gid_Module_Prg_Wrt_Bin pkg/libreoffice-writer +- create_package_directory gid_Module_Prg_Impress_Bin pkg/libreoffice-impress +- create_package_directory gid_Module_Prg_Base_Bin pkg/libreoffice-base +- create_package_directory gid_Module_Brand_Prg_Calc pkg/libreoffice-calc +- create_package_directory gid_Module_Brand_Prg_Math pkg/libreoffice-math +- create_package_directory gid_Module_Brand_Prg_Draw pkg/libreoffice-draw +- create_package_directory gid_Module_Brand_Prg_Wrt pkg/libreoffice-writer +- create_package_directory gid_Module_Brand_Prg_Impress pkg/libreoffice-impress +- create_package_directory gid_Module_Brand_Prg_Base pkg/libreoffice-base +- create_package_directory gid_Module_Pyuno pkg/python-uno +- create_package_directory gid_Module_Optional_Gnome pkg/libreoffice-gnome +- +- create_package_directory gid_Module_Root_Files_2 pkg/libreoffice-common +- create_package_directory gid_Module_Root_Files_3 pkg/libreoffice-common +- create_package_directory gid_Module_Root_Files_4 pkg/libreoffice-common +- create_package_directory gid_Module_Root_Files_5 pkg/libreoffice-common +- create_package_directory gid_Module_Root_Files_6 pkg/libreoffice-common +- create_package_directory gid_Module_Root_Files_7 pkg/libreoffice-common +- if [ -e gid_Module_Optional_Pymailmerge ]; then +- create_package_directory gid_Module_Optional_Pymailmerge pkg/libreoffice-emailmerge +- else # post m26 +- mkdir -p pkg/libreoffice-emailmerge/$INSTALLDIR/program +- mv pkg/libreoffice-common/$INSTALLDIR/program/mailmerge.py \ +- pkg/libreoffice-emailmerge/$INSTALLDIR/program/mailmerge.py +- fi +- create_package_directory gid_Module_Optional_OGLTrans pkg/libreoffice-ogltrans +- +- create_package_directory gid_Module_Root_SDK pkg/libreoffice-dev +- +- for l in `echo $WITH_LANG_LIST`; do +- for p in Impress Draw Math Calc Base Writer; do +- create_package_directory gid_Module_Langpack_${p}_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l +- done +- create_package_directory gid_Module_Langpack_Basis_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l +- create_package_directory gid_Module_Langpack_Brand_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l +- create_package_directory gid_Module_Langpack_Resource_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l +- create_package_directory gid_Module_Helppack_Help_`echo $l | sed -e s/-/_/g` pkg/libreoffice-help-$l +- +- # some help files are in _Langpack_{Writer,Impress,...}_ +- # move them from -l10n to -help +- if [ "$l" = "en-US" ]; then d=en; else d=$l; fi +- mv pkg/libreoffice-l10n-$l/$INSTALLDIR/help/$d/* \ +- pkg/libreoffice-help-$l/$INSTALLDIR/help/$d && \ +- rmdir pkg/libreoffice-l10n-$l/$INSTALLDIR/help/$d +- done +- +- # move_wrappers [...] +- move_wrappers() +- { +- directory=$1 +- shift +- mkdir -m755 -p "$directory"/usr/bin +- while test -n "$1"; do +- mv usr/*bin/"$1$BINSUFFIX" "$directory"/usr/bin +- shift +- done +- } +- move_wrappers pkg/libreoffice-common soffice unopkg +- if test "$COMPAT_OOWRAPPERS" = "YES" ; then +- move_wrappers pkg/libreoffice-common ooffice oofromtemplate +- move_wrappers pkg/libreoffice-base oobase +- move_wrappers pkg/libreoffice-writer oowriter ooweb +- move_wrappers pkg/libreoffice-calc oocalc +- move_wrappers pkg/libreoffice-impress ooimpress +- move_wrappers pkg/libreoffice-math oomath +- move_wrappers pkg/libreoffice-draw oodraw +- fi +- move_wrappers pkg/libreoffice-common libreoffice lofromtemplate +- move_wrappers pkg/libreoffice-base lobase +- move_wrappers pkg/libreoffice-writer lowriter loweb +- move_wrappers pkg/libreoffice-calc localc +- move_wrappers pkg/libreoffice-impress loimpress +- move_wrappers pkg/libreoffice-math lomath +- move_wrappers pkg/libreoffice-draw lodraw +- +- # Move all libraries, binaries, *.rdb from -common to -core +- for d in $INSTALLDIR/program $INSTALLDIR/program; do \ +- if [ ! -d $DESTDIR/pkg/libreoffice-core/$d ]; then \ +- mkdir -p $DESTDIR/pkg/libreoffice-core/$d; \ +- fi && +- ( cd pkg/libreoffice-common/$d +- find -maxdepth 1 \ +- -regex '\./\(.*\.so.*\|.*\.bin\|pagein\|msfontextract\|.*\.rdb\|javaldx\|uri-encode\)' \ +- -exec mv {} $DESTDIR/pkg/libreoffice-core/$d \; +- ); \ +- done +- +- # install additional ooo-build scripts & misc stuff +- mkdir -p pkg/libreoffice-common/usr/share/man/man1 +- if test "$COMPAT_OOWRAPPERS" = "YES" ; then +- mv usr/share/man/man1/openoffice$BINSUFFIX.1 \ +- pkg/libreoffice-common/usr/share/man/man1 +- fi +- mv usr/share/man/man1/libreoffice$BINSUFFIX.1 \ +- pkg/libreoffice-common/usr/share/man/man1 +- mkdir -p pkg/libreoffice-common/etc/bash_completion.d +- if test "$COMPAT_OOWRAPPERS" = "YES" ; then +- mv etc/bash_completion.d/ooffice$BINSUFFIX.sh \ +- pkg/libreoffice-common/etc/bash_completion.d +- fi +- mv etc/bash_completion.d/libreoffice$BINSUFFIX.sh \ +- pkg/libreoffice-common/etc/bash_completion.d +- mv .$INSTALLDIR/program/java-set-classpath \ +- pkg/libreoffice-common/$INSTALLDIR/program +- if echo $WITH_LANG_LIST | grep -q en-US; then +- for i in forms/resume.ott officorr/project-proposal.ott; do \ +- mkdir -p pkg/libreoffice-common/$INSTALLDIR/share/template/en-US/`dirname $i`; \ +- mv .$INSTALLDIR/share/template/en-US/$i \ +- pkg/libreoffice-common/$INSTALLDIR/share/template/en-US/$i; \ +- done; \ +- fi +- # Warn for any remaining files +- find . -path './pkg' -prune -o -not -name 'gid_Module_*' -not -type d -exec echo "File not packaged: {}" \; + fi + + # mark the config files diff --git a/debian/patches/javadoc-optional.diff b/debian/patches/javadoc-optional.diff new file mode 100644 index 00000000000..6886ac21d79 --- /dev/null +++ b/debian/patches/javadoc-optional.diff @@ -0,0 +1,151 @@ +Gemeinsame Unterverzeichnisse: odk-old/config und odk/config. +Gemeinsame Unterverzeichnisse: odk-old/docs und odk/docs. +Gemeinsame Unterverzeichnisse: odk-old/examples und odk/examples. +diff --git a/odk/Module_odk.mk b/odk/Module_odk.mk +index 693885322115..5fcb39306a0b 100644 +--- a/odk/Module_odk.mk ++++ b/odk/Module_odk.mk +@@ -42,8 +42,10 @@ endif + ifneq ($(ENABLE_JAVA),) + $(eval $(call gb_Module_add_targets,odk,\ + CustomTarget_classes \ +- CustomTarget_javadoc \ +- GeneratedPackage_odk_javadoc \ ++ $(if $(JAVADOC),\ ++ CustomTarget_javadoc \ ++ GeneratedPackage_odk_javadoc \ ++ ) \ + GeneratedPackage_uno_loader_classes \ + )) + endif + +Gemeinsame Unterverzeichnisse: odk-old/pack und odk/pack. +Gemeinsame Unterverzeichnisse: odk-old/qa und odk/qa. +Gemeinsame Unterverzeichnisse: odk-old/settings und odk/settings. +Gemeinsame Unterverzeichnisse: odk-old/source und odk/source. +Gemeinsame Unterverzeichnisse: odk-old/util und odk/util. +--- a/configure.ac-old 2013-05-27 18:32:42.187305241 +0200 ++++ b/configure.ac 2013-05-27 18:44:29.131286710 +0200 +@@ -2057,6 +2057,18 @@ AC_ARG_WITH(doxygen, + --without-doxygen disables generation of ODK C/C++ documentation.]), + ,with_doxygen=yes) + ++AC_ARG_WITH( ++ [javadoc], ++ AS_HELP_STRING( ++ [--with-javadoc], ++ [Specifies the javadoc executable to use when generating ODK Java ++ documentation. --without-javadoc disables generation of ODK Java ++ documentation. Not relevant in the --disable-odk case.]) ++ [ ++ Usage: --with-javadoc= ++ ],, ++ [with_javadoc=yes]) ++ + AC_ARG_WITH(visual-studio, + AS_HELP_STRING([--with-visual-studio=<2022>], + [Specify which Visual Studio version to use in case several are +@@ -7872,34 +7872,43 @@ fi + dnl =================================================================== + dnl Checks for javadoc + dnl =================================================================== +-if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then ++if test "$ENABLE_JAVA" != "" -a "$enable_odk" != no -a "$cross_compiling" != "yes"; then + if test -z "$with_jdk_home"; then + AC_PATH_PROG(JAVADOC, $javadoc) + else +- _javadoc_path="$with_jdk_home/bin/$javadoc" +- dnl Check if there is a javadoc at all. +- if test -x "$_javadoc_path"; then +- JAVADOC=$_javadoc_path +- else +- AC_PATH_PROG(JAVADOC, $javadoc) +- fi +- fi +- if test -z "$JAVADOC"; then +- AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home]) +- fi +- if test "$build_os" = "cygwin"; then +- if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then +- JAVADOC="${JAVADOC}.exe" +- fi +- JAVADOC=`win_short_path_for_make "$JAVADOC"` +- fi ++ if test "$with_javadoc" = "yes"; then ++ _javadoc_path="$with_jdk_home/bin/$javadoc" ++ dnl Check if there is a javadoc at all. ++ if test -x "$_javadoc_path"; then ++ JAVADOC=$_javadoc_path ++ else ++ AC_PATH_PROG(JAVADOC, $javadoc) ++ fi ++ if test -z "$JAVADOC"; then ++ AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home]) ++ fi ++ if test "$build_os" = "cygwin"; then ++ if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then ++ JAVADOC="${JAVADOC}.exe" ++ fi ++ JAVADOC=`win_short_path_for_make "$JAVADOC"` ++ fi + +- if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then +- JAVADOCISGJDOC="yes" ++ if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then ++ JAVADOCISGJDOC="yes" ++ fi ++ else ++ unset JAVADOC ++ fi + fi ++else ++ unset JAVADOC + fi +-AC_SUBST(JAVADOC) + AC_SUBST(JAVADOCISGJDOC) ++if test "$JAVADOCISGJDOC" = "yes"; then ++ unset JAVADOC ++fi ++AC_SUBST(JAVADOC) + + if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then + # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr +diff --git a/odk/CustomTarget_check.mk b/odk/CustomTarget_check.mk +index 74331955be9b..3415b0193cf9 100644 +--- a/odk/CustomTarget_check.mk ++++ b/odk/CustomTarget_check.mk +@@ -36,7 +36,7 @@ $(call gb_CustomTarget_get_workdir,odk/check)/checkbin : \ + $(if $(filter WNT,$(OS)),$(call gb_Package_get_target,odk_config_win)) \ + $(call gb_Package_get_target,odk_docs) \ + $(call gb_Package_get_target,odk_html) \ +- $(if $(ENABLE_JAVA),$(call gb_GeneratedPackage_get_target,odk_javadoc)) \ ++ $(if $(JAVADOC),$(call gb_GeneratedPackage_get_target,odk_javadoc)) \ + $(call gb_Package_get_target,odk_settings) \ + $(call gb_Package_get_target,odk_settings_generated) + ifneq ($(gb_SUPPRESS_TESTS),) +diff --git a/odk/util/check.pl b/odk/util/check.pl +index 899b42c..2c7a780 100644 +--- a/odk/util/check.pl ++++ b/odk/util/check.pl +@@ -188,7 +188,7 @@ if (-d "$SdkDir") { + # improvement required + my $solar_java = $ENV{"ENABLE_JAVA"}; + my $JDK = $ENV{"JDK"}; +- if (defined($solar_java) && $solar_java ne "" && (!defined($JDK) || $JDK ne "gcj")) { ++ if (defined($solar_java) && $solar_java ne "" && $ENV{"JAVADOC"} ne "") { + print "check java docu: "; + if (check_dir("docs/java/ref")) { + if (!check_file("docs/java/ref/index.html")) { +diff --git a/Repository.mk b/Repository.mk +index 5f2654b..471210f 100644 +--- a/Repository.mk ++++ b/Repository.mk +@@ -834,7 +841,7 @@ $(eval $(call gb_Helper_register_packages_for_install,sdk,\ + odk_settings \ + odk_settings_generated \ + $(if $(ENABLE_JAVA), \ +- odk_javadoc \ ++ $(if $(JAVADOC),odk_javadoc) \ + odk_uno_loader_classes \ + ) \ + odk_scripts \ diff --git a/debian/patches/jdbc-driver-classpaths.diff b/debian/patches/jdbc-driver-classpaths.diff new file mode 100644 index 00000000000..8f4a1660e75 --- /dev/null +++ b/debian/patches/jdbc-driver-classpaths.diff @@ -0,0 +1,35 @@ +diff --git a/officecfg/registry/data/org/openoffice/Office/DataAccess.xcu b/officecfg/registry/data/org/openoffice/Office/DataAccess.xcu +index 9be30a2..59c87cb 100644 +--- a/officecfg/registry/data/org/openoffice/Office/DataAccess.xcu ++++ b/officecfg/registry/data/org/openoffice/Office/DataAccess.xcu +@@ -147,6 +147,30 @@ + + + ++ ++ ++ ++ ++ file:///usr/share/java/mariadb-java-client.jar ++ ++ ++ ++ ++ file:///usr/share/java/mysql.jar ++ ++ ++ ++ ++ file:///usr/share/java/posgresql.jar ++ ++ ++ ++ ++ file:///usr/share/java/jtds.jar ++ ++ ++ ++ + + + diff --git a/debian/patches/jdk-minimal-and-zero-paths.diff b/debian/patches/jdk-minimal-and-zero-paths.diff new file mode 100644 index 00000000000..6cabc655751 --- /dev/null +++ b/debian/patches/jdk-minimal-and-zero-paths.diff @@ -0,0 +1,61 @@ +From 85aecfe4fa9b28baf4b4b44b80f03d14f91c5eb2 Mon Sep 17 00:00:00 2001 +From: WANG Xuerui +Date: Thu, 22 Aug 2024 14:22:49 +0800 +Subject: [PATCH] sunjre: check all four possible OpenJDK variants for + libjvm.so + +Since OpenJDK 21, the "minimal" and "zero" variants of JVM no longer +reside in the "server" directory in $JAVA_HOME/lib, making the loader +unable to find libjvm.so. This regresses LO builds on platforms with +only those variants of JVM (i.e. without a HotSpot port). + +Example error message is like this: + +> exception occurred: Could not create Java implementation loader at +> ./stoc/source/javaloader/javaloader.cxx:551 + +Fix it by probing all four possible variant directories for libjvm.so. +This is tested on Debian unstable (loong64 port) to fix the packaging. + +Link: https://bugs.openjdk.org/browse/JDK-8273494 +Link: https://github.com/openjdk/jdk/pull/5440 +Link: https://github.com/openjdk/jdk/commit/8fbcc8239a3fc04e56ebbd287c7bb5db731977b7 +Change-Id: I3545f93054d7a3af0181e4c739c82efaaf8aeaed +--- + jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx +index a0f8cbee1f3e..926a0e469935 100644 +--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx ++++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx +@@ -63,10 +63,15 @@ char const* const* SunInfo::getRuntimePaths(int * size) + "/lib/jli/libjli.dylib" + #elif defined UNX + "/lib/" JFW_PLUGIN_ARCH "/client/libjvm.so", ++ "/lib/" JFW_PLUGIN_ARCH "/minimal/libjvm.so", + "/lib/" JFW_PLUGIN_ARCH "/server/libjvm.so", ++ "/lib/" JFW_PLUGIN_ARCH "/zero/libjvm.so", + "/lib/" JFW_PLUGIN_ARCH "/classic/libjvm.so", + "/lib/" JFW_PLUGIN_ARCH "/jrockit/libjvm.so", +- "/lib/server/libjvm.so" ++ "/lib/client/libjvm.so", ++ "/lib/minimal/libjvm.so", ++ "/lib/server/libjvm.so", ++ "/lib/zero/libjvm.so" + #endif + }; + *size = std::size(ar); +@@ -78,7 +83,9 @@ char const* const* SunInfo::getLibraryPaths(int* size) + #if defined UNX && !defined MACOSX + static char const * const ar[] = { + "/lib/" JFW_PLUGIN_ARCH "/client", ++ "/lib/" JFW_PLUGIN_ARCH "/minimal", + "/lib/" JFW_PLUGIN_ARCH "/server", ++ "/lib/" JFW_PLUGIN_ARCH "/zero", + "/lib/" JFW_PLUGIN_ARCH "/native_threads", + ("/lib/" JFW_PLUGIN_ARCH) + }; +-- +2.39.2 + diff --git a/debian/patches/jurt-soffice-location.diff b/debian/patches/jurt-soffice-location.diff new file mode 100644 index 00000000000..aa334d8ea4d --- /dev/null +++ b/debian/patches/jurt-soffice-location.diff @@ -0,0 +1,20 @@ +commit b71107fb12e3c3125e0cb62c5a4f6636a80c6408 +Author: Bjoern Michaelsen +AuthorDate: Tue Jun 7 11:52:37 2011 +0200 +Commit: Bjoern Michaelsen +CommitDate: Tue Jun 7 11:52:37 2011 +0200 + + on debian-based systems, we know where our soffice binary is + +diff --git a/jurt/com/sun/star/lib/util/NativeLibraryLoader.java b/jurt/com/sun/star/lib/util/NativeLibraryLoader.jav +index da22980..36664ca 100644 +--- libreoffice-3.5.0/ridljar/com/sun/star/lib/util/NativeLibraryLoader.java ++++ libreoffice-3.5.0/ridljar/com/sun/star/lib/util/NativeLibraryLoader.java +@@ -111,6 +111,8 @@ public final class NativeLibraryLoader { + } + } + } ++ if (name.equals("soffice")) ++ return new File("/usr/lib/libreoffice/program/soffice"); + return null; + } diff --git a/debian/patches/lpsolve-fPIC.diff b/debian/patches/lpsolve-fPIC.diff new file mode 100644 index 00000000000..a3116731100 --- /dev/null +++ b/debian/patches/lpsolve-fPIC.diff @@ -0,0 +1,11 @@ +--- a/external/lpsolve/lp_solve_5.5.patch-old 2025-11-28 19:18:23.702374716 +0100 ++++ b/external/lpsolve/lp_solve_5.5.patch 2025-11-28 19:18:33.730426860 +0100 +@@ -28,7 +28,7 @@ + + a=a + + soprefix=lib + + libs="-lm" +-+ pic=-fpic +++ pic=-fPIC + + ldflags="-Wl,-Bsymbolic -Wl,-soname,liblpsolve55.$so" + fi + diff --git a/debian/patches/make-package-modules-not-suck.diff b/debian/patches/make-package-modules-not-suck.diff new file mode 100644 index 00000000000..80559f6d42e --- /dev/null +++ b/debian/patches/make-package-modules-not-suck.diff @@ -0,0 +1,210 @@ +diff --git a/scp2/InstallModule_draw.mk b/scp2/InstallModule_draw.mk +index a7c02be..d48edf2 100644 +--- a/scp2/InstallModule_draw.mk ++++ b/scp2/InstallModule_draw.mk +@@ -10,6 +10,7 @@ + $(eval $(call gb_InstallModule_InstallModule,scp2/draw)) + + $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/draw,\ ++ draw \ + draw_brand \ + )) + +diff --git a/scp2/source/draw/module_draw.scp b/scp2/source/draw/module_draw.scp +index 8737579..0913c61 100644 +--- a/scp2/source/draw/module_draw.scp ++++ b/scp2/source/draw/module_draw.scp +@@ -18,6 +18,7 @@ + + #include "macros.inc" + ++#include "AutoInstall/draw" + #include "AutoInstall/draw_brand" + + Module gid_Module_Prg_Draw +@@ -34,7 +35,8 @@ Module gid_Module_Prg_Draw_Bin + Sortkey = "100"; + Default = YES; + Styles = (HIDDEN_ROOT); +- Files = (gid_File_Extra_Urldesktop_Draw,gid_File_Extra_Urlnew_Draw,gid_File_Extra_Urlstart_Draw,gid_File_Extra_Urltasks_Draw, ++ Files = (auto_draw_ALL, ++ gid_File_Extra_Urldesktop_Draw,gid_File_Extra_Urlnew_Draw,gid_File_Extra_Urlstart_Draw,gid_File_Extra_Urltasks_Draw, + gid_File_Share_Registry_Draw_Xcd, + gid_File_Tmp_Userinstall_Draw_Inf); + End +diff --git a/scp2/AutoInstall.mk b/scp2/AutoInstall.mk +index 7d2a347..a15ac52 100644 +--- a/scp2/AutoInstall.mk ++++ b/scp2/AutoInstall.mk +@@ -17,6 +17,7 @@ $(eval $(call gb_AutoInstall_add_module,base_brand,,LIBO_EXECUTABLE,,PACKAGE_FIL + $(eval $(call gb_AutoInstall_add_module,brand,,LIBO_EXECUTABLE,,PACKAGE_FILELIST)) + $(eval $(call gb_AutoInstall_add_module,calc,LIBO_LIB_FILE,,,PACKAGE_FILELIST)) + $(eval $(call gb_AutoInstall_add_module,calc_brand,,LIBO_EXECUTABLE,,PACKAGE_FILELIST)) ++$(eval $(call gb_AutoInstall_add_module,draw,LIBO_LIB_FILE)) + $(eval $(call gb_AutoInstall_add_module,draw_brand,,LIBO_EXECUTABLE,,PACKAGE_FILELIST)) + $(eval $(call gb_AutoInstall_add_module,extensions_bsh,,,LIBO_JAR_FILE)) + $(eval $(call gb_AutoInstall_add_module,extensions_rhino,,,LIBO_JAR_FILE)) +diff --git a/Repository.mk b/Repository.mk +index f386b8aa7c05..7c337f23891b 100644 +--- a/Repository.mk ++++ b/Repository.mk +@@ -244,13 +244,29 @@ $(eval $(call gb_Helper_register_executables_for_install,UREBIN,ure,\ + + $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,base, \ + abp \ ++ calc \ ++ dba \ ++ dbahsql \ ++ $(call gb_Helper_optional,DBCONNECTIVITY, \ ++ dbase \ ++ dbaxml) \ + dbp \ + dbu \ ++ $(call gb_Helper_optional,DBCONNECTIVITY,flat) \ ++ $(if $(ENABLE_JAVA),jdbc) \ ++ $(call gb_Helper_optional,DBCONNECTIVITY,mysql_jdbc) \ ++ $(call gb_Helper_optional,MARIADBC,$(call gb_Helper_optional,DBCONNECTIVITY,mysqlc)) \ ++ odbc \ ++)) ++ ++$(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,base, \ ++ $(call gb_Helper_optional,DBCONNECTIVITY,dbpool2) \ ++ $(if $(ENABLE_JAVA),hsqldb) \ ++ sdbc2 \ + )) + + $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,calc, \ + analysis \ +- $(call gb_Helper_optional,DBCONNECTIVITY,calc) \ + date \ + pricing \ + sc \ +@@ -265,6 +281,12 @@ $(eval $(call gb_Helper_register_plugins_for_install,OOOLIBS,calc, \ + scui \ + )) + ++$(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,draw, \ ++ animcore \ ++ sd \ ++ sdd \ ++)) ++ + $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,graphicfilter, \ + svgfilter \ + wpftdraw \ +@@ -272,10 +295,10 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,graphicfilter, \ + )) + + $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,impress, \ +- animcore \ + PresentationMinimizer \ + wpftimpress \ ++ slideshow \ + )) + + $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,onlineupdate, \ + $(if $(ENABLE_ONLINE_UPDATE), \ +@@ -355,11 +378,6 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ + $(if $(filter $(OS),WNT),,cmdmail) \ + configmgr \ + ctl \ +- dba \ +- dbahsql \ +- $(call gb_Helper_optional,DBCONNECTIVITY, \ +- dbase \ +- dbaxml) \ + dbtools \ + deploymentmisc \ + $(if $(filter-out MACOSX WNT,$(OS)),desktopbe1) \ +@@ -373,7 +391,6 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ + $(if $(filter WNT,$(OS)),emser) \ + evtatt \ + $(call gb_Helper_optional,DBCONNECTIVITY, \ +- flat \ + file) \ + filterconfig \ + fps_office \ +@@ -412,7 +412,6 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ + $(call gb_Helper_optionals_or,HELPTOOLS XMLHELP,helplinker) \ + i18npool \ + i18nsearch \ +- $(if $(ENABLE_JAVA),jdbc) \ + $(if $(filter WNT,$(OS)),jumplist) \ + $(if $(ENABLE_LDAP),ldapbe2) \ + $(if $(filter WNT,$(OS)),WinUserInfoBe) \ +@@ -403,10 +419,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ + msfilter \ + $(call gb_Helper_optional,SCRIPTING,msforms) \ + mtfrenderer \ +- $(call gb_Helper_optional,DBCONNECTIVITY,mysql_jdbc) \ +- $(call gb_Helper_optional,MARIADBC,$(call gb_Helper_optional,DBCONNECTIVITY,mysqlc)) \ + numbertext \ +- odbc \ + odfflatxml \ + offacc \ + oox \ +@@ -443,10 +443,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ + sb \ + $(call gb_Helper_optional,DBCONNECTIVITY,sdbt) \ + scn \ +- sd \ +- sdd \ + sfx \ +- slideshow \ + sot \ + $(if $(or $(DISABLE_GUI),$(ENABLE_WASM_STRIP_SPLASH)),,spl) \ + storagefd \ +@@ -436,7 +445,6 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ + svt \ + svx \ + svxcore \ +- sw \ + syssh \ + textconversiondlgs \ + textfd \ +@@ -506,12 +501,15 @@ $(eval $(call gb_Helper_register_plugins_for_install,OOOLIBS,ooo, \ + $(if $(ENABLE_CUSTOMTARGET_COMPONENTS),components) \ + cui \ + icg \ +- sdui \ + $(if $(ENABLE_GEN),vclplug_gen) \ + $(if $(filter $(OS),WNT),vclplug_win) \ + $(if $(filter $(OS),MACOSX),vclplug_osx) \ + )) + ++$(eval $(call gb_Helper_register_plugins_for_install,OOOLIBS,draw, \ ++ sdui \ ++)) ++ + $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,postgresqlsdbc, \ + $(if $(BUILD_POSTGRESQL_SDBC), \ + postgresql-sdbc \ +@@ -529,6 +540,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,writer, \ + hwp \ + $(if $(ENABLE_LWP),lwpft) \ + msword \ ++ sw \ + swd \ + t602filter \ + $(call gb_Helper_optional,SCRIPTING,vbaswobj) \ +@@ -622,12 +634,10 @@ $(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo, \ + ) \ + cached1 \ + comphelper \ +- $(call gb_Helper_optional,DBCONNECTIVITY,dbpool2) \ + $(call gb_Helper_optional,BREAKPAD,crashreport) \ + deployment \ + deploymentgui \ + embobj \ +- $(if $(ENABLE_JAVA),hsqldb) \ + i18nutil \ + $(if $(and $(ENABLE_GTK3), $(filter LINUX %BSD SOLARIS,$(OS))), libreofficekitgtk) \ + $(if $(and $(ENABLE_GTKTILEDVIEWER), $(filter WNT,$(OS))), libreofficekitgtk) \ +@@ -636,7 +646,6 @@ $(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo, \ + emboleobj \ + package2 \ + $(call gb_Helper_optional,SCRIPTING,scriptframe) \ +- sdbc2 \ + sofficeapp \ + srtrs1 \ + ucb1 \ diff --git a/debian/patches/mediwiki-oor-replace.diff b/debian/patches/mediwiki-oor-replace.diff new file mode 100644 index 00000000000..ed04c917e35 --- /dev/null +++ b/debian/patches/mediwiki-oor-replace.diff @@ -0,0 +1,51 @@ +diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu b/swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu +index 2b35ced08f31..0c96070dd4f0 100644 +--- a/swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu ++++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu +@@ -18,9 +18,9 @@ + --> + + +- ++ + +- ++ + + com.sun.wiki-publisher + +diff --git a/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu +index 3309b503824c..261e470b253b 100644 +--- a/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu ++++ b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu +@@ -19,7 +19,7 @@ + + + +- ++ + 0 + MediaWiki + com.sun.star.text.TextDocument +@@ -31,7 +31,7 @@ + + EXPORT ALIEN 3RDPARTYFILTER + +- ++ + 0 + MediaWiki + com.sun.star.text.WebDocument +diff --git a/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu +index 15e4f850041a..ce7cd0763b79 100644 +--- a/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu ++++ b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu +@@ -19,7 +19,7 @@ + + + +- ++ + com.sun.star.comp.filters.XMLFilterDetect + + txt diff --git a/debian/patches/mention-java-common-package.diff b/debian/patches/mention-java-common-package.diff new file mode 100644 index 00000000000..9cafdac67f3 --- /dev/null +++ b/debian/patches/mention-java-common-package.diff @@ -0,0 +1,35 @@ +diff --git a/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx b/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx +index 718902caba6f..3c8499b5a42c 100644 +--- a/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx ++++ b/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx +@@ -141,6 +141,9 @@ static bool findAndSelect(JavaInfo ** ppInfo) + if (errcode == JFW_E_NO_JAVA_FOUND) + { + SAL_WARN("jvmfwk.javaenvsetup", "javaldx: Could not find a Java Runtime Environment!"); ++ SAL_WARN("jvmfwk.javaenvsetup", "Please ensure that a JVM and the package libreoffice-java-common"); ++ SAL_WARN("jvmfwk.javaenvsetup", "is installed."); ++ SAL_WARN("jvmfwk.javaenvsetup", "If it is already installed then try removing ~/.config/libreoffice/4/user/config/javasettings_Linux_*.xml"); + return false; + } + else if (errcode != JFW_E_NONE && errcode != JFW_E_DIRECT_MODE) +diff --git a/include/svtools/strings.hrc b/include/svtools/strings.hrc +index f9dc617f4313..874b0400cbc5 100644 +--- a/include/svtools/strings.hrc ++++ b/include/svtools/strings.hrc +@@ -267,13 +267,13 @@ + #define STR_WARNING_EXTERNAL_LINK_EDIT_DISABLED NC_("STR_ERROR_EXTERNAL_LINK_EDIT_DISABLED", "It is not possible to edit external links. Active content is disabled in the security settings.") + #define STR_SVT_DEFAULT_SERVICE_LABEL NC_("STR_SVT_DEFAULT_SERVICE_LABEL", "$user$'s $service$") + +-#define STR_WARNING_JAVANOTFOUND NC_("STR_WARNING_JAVANOTFOUND", "%PRODUCTNAME requires a Java runtime environment (JRE) to perform this task. Please install a JRE and restart %PRODUCTNAME. %FAQLINK") ++#define STR_WARNING_JAVANOTFOUND NC_("STR_WARNING_JAVANOTFOUND", "%PRODUCTNAME requires a Java runtime environment (JRE) to perform this task. Please install a JRE (and libreoffice-java-common) and restart %PRODUCTNAME. %FAQLINK") + #define STR_WARNING_JAVANOTFOUND_WIN NC_("STR_WARNING_JAVANOTFOUND_WIN", "%PRODUCTNAME requires a %BITNESS-bit Java runtime environment (JRE) to perform this task. Please install a JRE and restart %PRODUCTNAME. %FAQLINK") + #define STR_WARNING_JAVANOTFOUND_MAC NC_("STR_WARNING_JAVANOTFOUND_MAC", "%PRODUCTNAME requires Oracle's Java Development Kit (JDK) on macOS 10.10 or greater to perform this task. Please install them and restart %PRODUCTNAME. %FAQLINK") + #define STR_WARNING_INVALIDJAVASETTINGS_MAC NC_("STR_WARNING_INVALIDJAVASETTINGS_MAC", "The %PRODUCTNAME configuration has been changed. Under %PRODUCTNAME - Preferences - %PRODUCTNAME - Advanced, select the Java runtime environment you want to have used by %PRODUCTNAME.") +-#define STR_WARNING_INVALIDJAVASETTINGS NC_("STR_WARNING_INVALIDJAVASETTINGS", "The %PRODUCTNAME configuration has been changed. Under Tools - Options - %PRODUCTNAME - Advanced, select the Java runtime environment you want to have used by %PRODUCTNAME.") ++#define STR_WARNING_INVALIDJAVASETTINGS NC_("STR_WARNING_INVALIDJAVASETTINGS", "The %PRODUCTNAME configuration has been changed. Under Tools - Options - %PRODUCTNAME - Advanced, select the Java runtime environment you want to have used by %PRODUCTNAME. Maybe you also need to install libreoffice-java-common.") + #define STR_ERROR_JVMCREATIONFAILED_MAC NC_("STR_ERROR_JVMCREATIONFAILED_MAC", "%PRODUCTNAME requires a Java runtime environment (JRE) to perform this task. The selected JRE is defective. Please select another version or install a new JRE and select it under %PRODUCTNAME - Preferences - %PRODUCTNAME - Advanced.") +-#define STR_ERROR_JVMCREATIONFAILED NC_("STR_ERROR_JVMCREATIONFAILED", "%PRODUCTNAME requires a Java runtime environment (JRE) to perform this task. The selected JRE is defective. Please select another version or install a new JRE and select it under Tools - Options - %PRODUCTNAME - Advanced.") ++#define STR_ERROR_JVMCREATIONFAILED NC_("STR_ERROR_JVMCREATIONFAILED", "%PRODUCTNAME requires a Java runtime environment (JRE) to perform this task. The selected JRE is defective. Please select another version or install a new JRE and select it under Tools - Options - %PRODUCTNAME - Advanced or install libreoffice-java-common if not already installed.") + #define STR_WARNING_JAVANOTFOUND_TITLE NC_("STR_WARNING_JAVANOTFOUND_TITLE", "JRE Required") + #define STR_WARNING_INVALIDJAVASETTINGS_TITLE NC_("STR_WARNING_INVALIDJAVASETTINGS_TITLE", "Select JRE") + #define STR_ERROR_JVMCREATIONFAILED_TITLE NC_("STR_ERROR_JVMCREATIONFAILED_TITLE", "JRE is Defective") diff --git a/debian/patches/moreIconsDialog-accesses-internet.diff b/debian/patches/moreIconsDialog-accesses-internet.diff new file mode 100644 index 00000000000..77f9c3f6fc6 --- /dev/null +++ b/debian/patches/moreIconsDialog-accesses-internet.diff @@ -0,0 +1,21 @@ +diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx +index a8eabf6d369c..676add18204e 100644 +--- a/cui/source/dialogs/AdditionsDialog.cxx ++++ b/cui/source/dialogs/AdditionsDialog.cxx +@@ -277,9 +277,13 @@ SearchAndParseThread::SearchAndParseThread(AdditionsDialog* pDialog, const bool + , m_bExecute(true) + , m_bIsFirstLoading(isFirstLoading) + { +- // if we are running a UITest, e.g. UITest_sw_options then +- // don't attempt to downloading anything +- m_bUITest = o3tl::IsRunningUITest(); ++ if (getenv("AUTOPKGTEST_TMP") != NULL) { ++ m_bUITest = false; // run always in autopkgtest ++ } else { ++ // if we are running a UITest, e.g. UITest_sw_options then ++ // don't attempt to downloading anything ++ m_bUITest = o3tl::IsRunningUITest(); ++ } + } + + SearchAndParseThread::~SearchAndParseThread() {} diff --git a/debian/patches/no-opencl-per-default.diff b/debian/patches/no-opencl-per-default.diff new file mode 100644 index 00000000000..5a5b0853c33 --- /dev/null +++ b/debian/patches/no-opencl-per-default.diff @@ -0,0 +1,26 @@ +From b54cfe9d3d22fdd40f7015bd343df8620c983779 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Mon, 27 Mar 2017 11:47:01 +0100 +Subject: [PATCH] Resolves: rhbz#1432468 disable opencl by default + +Change-Id: Ie037fcabdd219f195425979dd721501fb5527573 +--- + officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs +index 946bd32..284d694 100644 +--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs ++++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs +@@ -5670,7 +5670,7 @@ + Determines whether OpenCL can be used, when available, to speed up + some operations. + +- true ++ false + + + +-- +2.9.3 + diff --git a/debian/patches/no-packagekit-per-default.diff b/debian/patches/no-packagekit-per-default.diff new file mode 100644 index 00000000000..a496c702169 --- /dev/null +++ b/debian/patches/no-packagekit-per-default.diff @@ -0,0 +1,21 @@ +diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu +index 3d138551b593..9cb9831f3236 100644 +--- a/officecfg/registry/data/org/openoffice/Office/Common.xcu ++++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu +@@ -551,13 +551,13 @@ + + + +- true ++ false + + +- true ++ false + + +- true ++ false + + + diff --git a/debian/patches/parquet-filter-config-only-if-enabled-in-orcus.diff b/debian/patches/parquet-filter-config-only-if-enabled-in-orcus.diff new file mode 100644 index 00000000000..36f3fc19ab2 --- /dev/null +++ b/debian/patches/parquet-filter-config-only-if-enabled-in-orcus.diff @@ -0,0 +1,38 @@ +diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk +index d157a4c664d7..27d44eb40d03 100644 +--- a/filter/Configuration_filter.mk ++++ b/filter/Configuration_filter.mk +@@ -475,7 +475,6 @@ $(eval $(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,f + generic_XML \ + calc_Gnumeric \ + calc_Lotus \ +- calc_Parquet \ + calc_QPro \ + calc_MS_Excel_40 \ + calc_MS_Excel_40_VorlageTemplate \ +@@ -538,7 +537,6 @@ $(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_calc_filters.x + calc_HTML_WebQuery \ + calc_StarOffice_XML_Calc_Template \ + calc_pdf_Export \ +- calc_Parquet \ + dBase \ + calc8 \ + calc8_template \ +@@ -563,6 +561,17 @@ $(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_calc_filters.x + MS_Multiplan \ + )) + ++ifeq "$(SYSTEM_LIBORCUS)" "TRUE" ++ ifeq "$(shell objdump -p /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/liborcus-0.*so | grep NEED | grep -q parquet && echo true)" "true" ++$(eval $(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,filter/source/config/fragments/types,\ ++ calc_Parquet \ ++)) ++$(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_calc_filters.xcu,filter/source/config/fragments/filters,\ ++ calc_Parquet \ ++)) ++ endif ++endif ++ + ifneq ($(ENABLE_WASM_STRIP_BASIC_DRAW_MATH_IMPRESS),TRUE) + # fcfg_draw + $(eval $(call filter_Configuration_add_types,fcfg_langpack,fcfg_draw_types.xcu,filter/source/config/fragments/types,\ diff --git a/debian/patches/pdfium-ports.diff b/debian/patches/pdfium-ports.diff new file mode 100644 index 00000000000..2834db8b624 --- /dev/null +++ b/debian/patches/pdfium-ports.diff @@ -0,0 +1,97 @@ +--- a/external/pdfium/debian-ports.diff 2024-03-04 21:33:17.133064736 +0100 ++++ b/external/pdfium/debian-ports.diff 2024-03-05 16:52:13.688932548 +0100 +@@ -0,0 +1,28 @@ ++--- build/build_config.h 2024-03-05 16:50:08.624785549 +0100 +++++ build/build_config.h 2024-03-05 16:50:55.616839071 +0100 ++@@ -350,6 +350,25 @@ ++ #define ARCH_CPU_RISCV64 1 ++ #define ARCH_CPU_64_BITS 1 ++ #define ARCH_CPU_LITTLE_ENDIAN 1 +++#elif defined(__sparc__) +++#define ARCH_CPU_BIG_ENDIAN 1 +++#if defined(__arch64__) +++#define ARCH_CPU_64_BITS 1 +++#else +++#define ARCH_CPU_32_BITS 1 +++#endif +++#elif defined(__m68k__) +++#define ARCH_CPU_32_BITS 1 +++#define ARCH_CPU_BIG_ENDIAN 1 +++#elif defined(__hppa__) +++#define ARCH_CPU_32_BITS 1 +++#define ARCH_CPU_BIG_ENDIAN 1 +++#elif defined(__alpha__) +++#define ARCH_CPU_64_BITS 1 +++#define ARCH_CPU_LITTLE_ENDIAN 1 +++#elif defined(__ia64__) +++#define ARCH_CPU_64_BITS 1 +++#define ARCH_CPU_LITTLE_ENDIAN 1 ++ #else ++ #error Please add support for your architecture in build/build_config.h ++ #endif +--- a/external/pdfium/UnpackedTarball_pdfium.mk 2024-03-05 16:54:17.425089179 +0100 ++++ b/external/pdfium/UnpackedTarball_pdfium.mk 2024-03-05 16:54:31.949108078 +0100 +@@ -18,6 +18,9 @@ + pdfium_patches += pdfium-vs2019-arm64_no-__umulh.patch.1 + endif + ++pdfium_patches += debian-ports.diff ++pdfium_patches += 0001-core-fxcrt-numerics-Fix-incorrect-preprocessor-check.patch ++ + # TODO, attempt upstream + pdfium_patches += ofz451333752.patch + pdfium_patches += extractpatterns.patch + +--- a/external/pdfium/0001-core-fxcrt-numerics-Fix-incorrect-preprocessor-check.patch 2025-11-16 13:22:36.315966137 +0100 ++++ b/external/pdfium/0001-core-fxcrt-numerics-Fix-incorrect-preprocessor-check.patch 2025-11-27 18:49:42.533657770 +0100 +@@ -0,0 +1,50 @@ ++>From 1c815bec0324037494840d01fc579f2a3420e624 Mon Sep 17 00:00:00 2001 ++From: John Paul Adrian Glaubitz ++Date: Thu, 27 Nov 2025 13:22:22 +0100 ++Subject: [PATCH] core/fxcrt/numerics: Fix incorrect preprocessor check on ++ aarch64 ++ ++The preprocessor macro to toggle the use of safe_math_arm_impl.h ++currently checks whether __ARMEL__ or __arch64__ are defined. However, ++on aarch64, the actual define is called __aarch64__ not __arch64__: ++ ++(sid_arm64-dchroot)glaubitz@amdahl:~$ uname -a ++Linux amdahl 6.12.57+deb13-arm64 #1 SMP Debian 6.12.57-1 (2025-11-05) aarch64 GNU/Linux ++(sid_arm64-dchroot)glaubitz@amdahl:~$ echo | gcc -E -dM -|grep arch ++(sid_arm64-dchroot)glaubitz@amdahl:~$ ++ ++However, the define __arch64__ is used on sparc64: ++ ++(sid_sparc64-dchroot)glaubitz@stadler:~$ uname -a ++Linux stadler 6.17.0-rc5+ #1 SMP Fri Sep 12 20:37:32 UTC 2025 sparc64 GNU/Linux ++(sid_sparc64-dchroot)glaubitz@stadler:~$ echo | gcc -E -dM -|grep arch ++(sid_sparc64-dchroot)glaubitz@stadler:~$ ++ ++This triggers the use of safe_math_arm_impl.h on sparc64 which causes ++the compiler to emit the "qsub" instruction which is not recongized: ++ ++/tmp/ccLEFgM7.s: Assembler messages: ++/tmp/ccLEFgM7.s:10332: Error: Unknown opcode: `qsub' ++/tmp/ccLEFgM7.s:10365: Error: Unknown opcode: `qsub' ++ ++Signed-off-by: John Paul Adrian Glaubitz ++--- ++ core/fxcrt/numerics/safe_math_clang_gcc_impl.h | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/core/fxcrt/numerics/safe_math_clang_gcc_impl.h b/core/fxcrt/numerics/safe_math_clang_gcc_impl.h ++index 58419d5c9..d395ebd3e 100644 ++--- core/fxcrt/numerics/safe_math_clang_gcc_impl.h +++++ core/fxcrt/numerics/safe_math_clang_gcc_impl.h ++@@ -14,7 +14,7 @@ ++ ++ #include "core/fxcrt/numerics/safe_conversions.h" ++ ++-#if defined(__ARMEL__) || defined(__arch64__) +++#if defined(__ARMEL__) ++ #include "core/fxcrt/numerics/safe_math_arm_impl.h" // IWYU pragma: export ++ #define BASE_HAS_ASSEMBLER_SAFE_MATH (1) ++ #else ++-- ++2.47.3 ++ diff --git a/debian/patches/remove-JITC_PROCESSOR_TYPE-setting.diff b/debian/patches/remove-JITC_PROCESSOR_TYPE-setting.diff new file mode 100644 index 00000000000..908bffa5104 --- /dev/null +++ b/debian/patches/remove-JITC_PROCESSOR_TYPE-setting.diff @@ -0,0 +1,72 @@ +From f154bce7304938cd85ff92086afab5d9f5622e5f Mon Sep 17 00:00:00 2001 +From: Rene Engelhard +Date: Thu, 11 Dec 2025 19:26:02 +0100 +Subject: [PATCH] remove JITC_PROCESSOR_TYPE export for powerpc + +long obsolete; there's no IBM JDK for 32-bit ppc anymore. And it breaks +creating instdir/program/soffice with +x by cp (sed doesn't keep the +permission, obviously) + +Change-Id: I9e8ffc6017056adb5142099a661761c2caaa87c4 +--- + +diff --git a/config_host.mk.in b/config_host.mk.in +index abbdb3f..2103814 100644 +--- a/config_host.mk.in ++++ b/config_host.mk.in +@@ -389,7 +389,6 @@ + export JDK_FOR_BUILD=@JDK_FOR_BUILD@ + export JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=@JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD@ + export JFREEREPORT_JAR=@JFREEREPORT_JAR@ +-export JITC_PROCESSOR_TYPE=@JITC_PROCESSOR_TYPE@ + JOM=@JOM@ + export JQ=@JQ@ + export JVM_ONE_PATH_CHECK=@JVM_ONE_PATH_CHECK@ +diff --git a/configure.ac b/configure.ac +index 6b51d0a..db70f46 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -9069,14 +9069,6 @@ + AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO]) + AC_SUBST(HAVE_POSIX_FALLOCATE) + +-JITC_PROCESSOR_TYPE="" +-if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then +- # IBMs JDK needs this... +- JITC_PROCESSOR_TYPE=6 +- export JITC_PROCESSOR_TYPE +-fi +-AC_SUBST([JITC_PROCESSOR_TYPE]) +- + if test $_os = "WINNT"; then + for i in $PKGFORMAT; do + if test "$i" = msi; then +diff --git a/desktop/CustomTarget_soffice.mk b/desktop/CustomTarget_soffice.mk +index 26e661e..0c895c7 100644 +--- a/desktop/CustomTarget_soffice.mk ++++ b/desktop/CustomTarget_soffice.mk +@@ -35,11 +35,7 @@ + | $(gb_CustomTarget_workdir)/desktop/soffice/.dir + $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),SED,1) + $(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),SED) +-ifneq ($(JITC_PROCESSOR_TYPE),) +- sed -e "s/^#@JITC_PROCESSOR_TYPE_EXPORT@/export JITC_PROCESSOR_TYPE=$(JITC_PROCESSOR_TYPE)/" $< > $@ +-else + cp $< $@ +-endif + $(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),SED) + + endif +diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh +index 7188f39..1f3c4cd1 100755 +--- a/desktop/scripts/soffice.sh ++++ b/desktop/scripts/soffice.sh +@@ -37,8 +37,6 @@ + # uncomment line below if you encounter problems starting soffice on your system + # SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS + +-#@JITC_PROCESSOR_TYPE_EXPORT@ +- + # resolve installation directory + sd_cwd=$(pwd) + sd_res="$0" diff --git a/debian/patches/reportdesign-mention-package.diff b/debian/patches/reportdesign-mention-package.diff new file mode 100644 index 00000000000..f85471bf069 --- /dev/null +++ b/debian/patches/reportdesign-mention-package.diff @@ -0,0 +1,13 @@ +diff --git a/dbaccess/inc/strings.hrc b/dbaccess/inc/strings.hrc +index 47068f43d09e..1f8b9a2331b6 100644 +--- a/dbaccess/inc/strings.hrc ++++ b/dbaccess/inc/strings.hrc +@@ -349,7 +349,7 @@ + #define STR_WARNINGS_DURING_CONNECT NC_("STR_WARNINGS_DURING_CONNECT", "Warnings were encountered while connecting to the data source. Press \"$buttontext$\" to view them.") + #define STR_NAMED_OBJECT_ALREADY_EXISTS NC_("STR_NAMED_OBJECT_ALREADY_EXISTS", "The name '$#$' already exists.\nPlease enter another name." ) + // #i96130# use hard coded name +-#define RID_STR_EXTENSION_NOT_PRESENT NC_("RID_STR_EXTENSION_NOT_PRESENT", "The report, \"$file$\", requires the Report Builder feature.") ++#define RID_STR_EXTENSION_NOT_PRESENT NC_("RID_STR_EXTENSION_NOT_PRESENT", "The report, \"$file$\", requires the Report Builder feature. For this, install the package 'libreoffice-report-builder'.") + + #define STR_COULDNOTCREATE_DRIVERMANAGER NC_("STR_COULDNOTCREATE_DRIVERMANAGER", "Cannot connect to the SDBC driver manager (#servicename#).") + #define STR_NOREGISTEREDDRIVER NC_("STR_NOREGISTEREDDRIVER", "A driver is not registered for the URL #connurl#.") diff --git a/debian/patches/rust-uno-DEB_CARGO_CRATE.diff b/debian/patches/rust-uno-DEB_CARGO_CRATE.diff new file mode 100644 index 00000000000..4ce01823ada --- /dev/null +++ b/debian/patches/rust-uno-DEB_CARGO_CRATE.diff @@ -0,0 +1,13 @@ +diff --git a/rust_uno/CustomTarget_cargo.mk b/rust_uno/CustomTarget_cargo.mk +index c7f56870f419..5f933906b01d 100644 +--- a/rust_uno/CustomTarget_cargo.mk ++++ b/rust_uno/CustomTarget_cargo.mk +@@ -13,7 +13,7 @@ $(eval $(call gb_CustomTarget_CustomTarget,rust_uno/cargo)) + $(call gb_CustomTarget_get_target,rust_uno/cargo): \ + $(call gb_Library_get_target,rust_uno-cpp) \ + $(gb_CustomTarget_workdir)/rust_uno/rustmaker/cpp +- cd $(SRCDIR)/rust_uno && cargo build $(if $(verbose),--verbose,) --release ++ cd $(SRCDIR)/rust_uno && export DEB_CARGO_CRATE=rust-uno_$(shell grep version rust_uno/Cargo.toml | awk '{ print $$3 }' | sed -e s/\"//g); cargo build $(if $(verbose),--verbose,) --release + + #TODO: Add to the general pattern rule from solenv/gbuild/CustomTarget.mk, instead of having to + # repeat its recipe here: diff --git a/debian/patches/search-usr-share-for-images.diff b/debian/patches/search-usr-share-for-images.diff new file mode 100644 index 00000000000..6b91fcc127e --- /dev/null +++ b/debian/patches/search-usr-share-for-images.diff @@ -0,0 +1,137 @@ +diff --git a/vcl/inc/impimagetree.hxx b/vcl/inc/impimagetree.hxx +index 41c4f56..93d80f1 100644 +--- a/vcl/inc/impimagetree.hxx ++++ b/vcl/inc/impimagetree.hxx +@@ -85,6 +85,10 @@ private: + typedef boost::unordered_map< + rtl::OUString, std::pair< bool, BitmapEx >, rtl::OUStringHash > IconCache; + ++ // we want to search zip files (icons) also in /usr/share/ ++ ::rtl::OUString m_datadir; // /usr/share/ ++ ::rtl::OUString m_libdir; // /usr/lib or /usr/lib64 ++ + rtl::OUString m_style; + Zips m_zips; + CheckStyleCache m_checkStyleCache; +@@ -92,6 +96,7 @@ private: + + void setStyle(rtl::OUString const & style ); + ++ void addUrlToZips(const rtl::OUString &url); + void resetZips(); + + bool checkStyleCacheLookup( rtl::OUString const & style, bool &exists ); +diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx +index 03442fc..cfe6c45 100644 +--- a/vcl/source/gdi/impimagetree.cxx ++++ b/vcl/source/gdi/impimagetree.cxx +@@ -121,7 +121,11 @@ void loadFromStream( + + } + +-ImplImageTree::ImplImageTree() {} ++ImplImageTree::ImplImageTree() ++{ ++ m_datadir = ::rtl::OUString::createFromAscii ( "/usr/share/" ); ++ m_libdir = ::rtl::OUString::createFromAscii ( "/usr/lib/" ); ++} + + ImplImageTree::~ImplImageTree() {} + +@@ -259,6 +263,22 @@ void ImplImageTree::setStyle(rtl::OUString const & style) { + } + } + ++void ImplImageTree::addUrlToZips(const rtl::OUString &url) { ++ if ( url.getLength() == 0 ) ++ return; ++ m_zips.push_back( ++ std::make_pair( ++ url, ++ css::uno::Reference< css::container::XNameAccess >())); ++ sal_Int32 nLibDirPos = url.indexOf( m_libdir ); ++ if ( nLibDirPos >= 0 ) { ++ m_zips.push_back( ++ std::make_pair( ++ url.replaceAt( nLibDirPos, m_libdir.getLength(), m_datadir ), ++ css::uno::Reference< css::container::XNameAccess >())); ++ } ++} ++ + void ImplImageTree::resetZips() { + m_zips.clear(); + { +@@ -284,19 +304,14 @@ void ImplImageTree::resetZips() { + b.appendAscii(RTL_CONSTASCII_STRINGPARAM("_brand.zip")); + bool ok = u.Append(b.makeStringAndClear(), INetURLObject::ENCODE_ALL); + OSL_ASSERT(ok); (void) ok; +- m_zips.push_back( +- std::make_pair( +- u.GetMainURL(INetURLObject::NO_DECODE), +- css::uno::Reference< css::container::XNameAccess >())); ++ addUrlToZips(u.GetMainURL(INetURLObject::NO_DECODE)); + } + { + rtl::OUString url( + RTL_CONSTASCII_USTRINGPARAM( + "$BRAND_BASE_DIR/share/config/images_brand.zip")); + rtl::Bootstrap::expandMacros(url); +- m_zips.push_back( +- std::make_pair( +- url, css::uno::Reference< css::container::XNameAccess >())); ++ addUrlToZips(url); + } + { + rtl::OUString url( +@@ -310,10 +310,7 @@ + b.appendAscii(RTL_CONSTASCII_STRINGPARAM(".zip")); + bool ok = u.Append(b.makeStringAndClear(), INetURLObject::ENCODE_ALL); + OSL_ASSERT(ok); (void) ok; +- m_zips.push_back( +- std::make_pair( +- u.GetMainURL(INetURLObject::NO_DECODE), +- css::uno::Reference< css::container::XNameAccess >())); ++ addUrlToZips(u.GetMainURL(INetURLObject::NO_DECODE)); + } + if ( m_style == "default" ) + { +@@ -321,9 +333,7 @@ void ImplImageTree::resetZips() { + RTL_CONSTASCII_USTRINGPARAM( + "$BRAND_BASE_DIR/share/config/images.zip")); + rtl::Bootstrap::expandMacros(url); +- m_zips.push_back( +- std::make_pair( +- url, css::uno::Reference< css::container::XNameAccess >())); ++ addUrlToZips(url); + } + } + +diff --git a/xmlhelp/source/cxxhelp/provider/provider.cxx b/xmlhelp/source/cxxhelp/provider/provider.cxx +index e55fe5d..848bed7 100644 +--- a/xmlhelp/source/cxxhelp/provider/provider.cxx ++++ b/xmlhelp/source/cxxhelp/provider/provider.cxx +@@ -335,7 +335,7 @@ void ContentProvider::init() + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( " " )) + + setupextension ); + +- uno::Sequence< rtl::OUString > aImagesZipPaths( 2 ); ++ uno::Sequence< rtl::OUString > aImagesZipPaths( 3 ); + xHierAccess = getHierAccess( sProvider, "org.openoffice.Office.Common" ); + + rtl::OUString aPath( getKey( xHierAccess, "Path/Current/UserConfig" ) ); +@@ -344,6 +344,15 @@ void ContentProvider::init() + + aPath = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("$BRAND_BASE_DIR/share/config")); + rtl::Bootstrap::expandMacros(aPath); ++ aImagesZipPaths[ 2 ] = aPath; ++ ++ // try also /usr/share and even before /usr/lib ++ ::rtl::OUString aDataDir = ::rtl::OUString::createFromAscii ( "/usr/share/" ); ++ ::rtl::OUString aLibDir = ::rtl::OUString::createFromAscii ( "/usr/lib/" ); ++ sal_Int32 nLibDirPos = aPath.indexOf( aLibDir ); ++ ++ if ( nLibDirPos >= 0 ) ++ aPath = aPath.replaceAt( nLibDirPos, aLibDir.getLength(), aDataDir ); + aImagesZipPaths[ 1 ] = aPath; + + uno::Reference< uno::XComponentContext > xContext; diff --git a/debian/patches/sensible-lomua.diff b/debian/patches/sensible-lomua.diff new file mode 100644 index 00000000000..f660532a8aa --- /dev/null +++ b/debian/patches/sensible-lomua.diff @@ -0,0 +1,50 @@ +Index: libreoffice-3.6.2~rc1/officecfg/registry/data/org/openoffice/Office/Common.xcu +=================================================================== +--- libreoffice-3.6.2~rc1.orig/officecfg/registry/data/org/openoffice/Office/Common.xcu 2012-10-07 21:03:17.662850386 -0400 ++++ libreoffice-3.6.2~rc1/officecfg/registry/data/org/openoffice/Office/Common.xcu 2012-10-07 21:03:57.174850591 -0400 +@@ -655,7 +655,7 @@ + + + +- ++ sensible-lomua + + + +Index: libreoffice-3.6.2~rc1/shell/source/unix/misc/senddoc.sh +=================================================================== +--- libreoffice-3.6.2~rc1.orig/shell/source/unix/misc/senddoc.sh 2012-10-07 21:03:17.662850386 -0400 ++++ libreoffice-3.6.2~rc1/shell/source/unix/misc/senddoc.sh 2012-10-07 21:29:13.074858447 -0400 +@@ -35,6 +35,32 @@ if [ "$1" = "--mailclient" ]; then + shift + fi + ++case `basename "$MAILER"` in ++ sensible-lomua) ++ if [ -x /usr/bin/xdg-email ] ; then ++ MAILER=/usr/bin/xdg-email ++ elif [ -n "$KDE_FULL_SESSION" -a -x /usr/bin/kde-open ] \ ++ || [ -x /usr/bin/gnome-open ] \ ++ || [ -x /usr/bin/xdg-open ]; then ++ # use an undefined mailer, to trigger the default handling ++ MAILER=undefined ++ elif [ -n "$GNOME_DESKTOP_SESSION_ID" -a -x /usr/bin/evolution ]; then ++ MAILER=/usr/bin/evolution ++ elif [ -n "$KDE_FULL_SESSION" -a -x /usr/bin/kmail ]; then ++ MAILER=/usr/bin/kmail ++ elif [ -x /usr/bin/evolution ]; then ++ # default ++ MAILER=/usr/bin/evolution ++ elif [ -x /usr/bin/icedove ]; then ++ # fallback ++ MAILER=/usr/bin/icedove ++ elif [ -x /usr/bin/thunderbird ]; then ++ # fallback ++ MAILER=/usr/bin/thunderbird ++ fi ++ ;; ++esac ++ + # autodetect mail client from executable name + + MAILER_TYPE=$(basename "$MAILER") diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000000..85f61c55273 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,55 @@ +debian-opt.diff +jurt-soffice-location.diff +splits-adapt-registry.diff +debian-debug.diff +#fix-system-lpsolve-build.diff +build-against-shared-lpsolve.diff +install-fixes.diff +mention-java-common-package.diff +help-msg-add-package-info.diff +sensible-lomua.diff +reportdesign-mention-package.diff +jdbc-driver-classpaths.diff +#search-usr-share-for-images.diff +make-package-modules-not-suck.diff +mediwiki-oor-replace.diff +debian-hardened-buildflags-CPPFLAGS.diff +debian-hardened-buildflags-no-LO-fstack-protector-strong.diff +disable-flaky-tests.diff +#dont-touch-urd.diff +fix-internal-hsqldb-build.diff +javadoc-optional.diff +no-packagekit-per-default.diff +system-officeotron-and-odfvalidator.diff +cppunit-optional.diff +#disable-unused-test-programs.diff +hide-math-desktop-file.patch +appstream-ignore-startcenter.diff +disable-java-in-odk-build-examples-on-zero-vm.diff +do-not-hide-test-output.diff +disableClassPathURLCheck.diff +use-mariadb-java-instead-of-mysql-java.diff +fix-flaky-bridgetest.diff +disable-shortcuts_tab_navigation-uitest.diff +no-opencl-per-default.diff +arm-fp-mode.diff +moreIconsDialog-accesses-internet.diff +do-not-abort-on-NON_APPLICATION_FONT_USE.diff +we-dont-have-the-needed-fonts.diff +adapt-for-new-carlito.diff +pdfium-ports.diff +jdk-minimal-and-zero-paths.diff +#fix-32bits-test-build.diff +disable-uitest-xmlsecurity-gpg.diff +system-crates.diff +we-rely-on-dicts-as-non-extensions-in-checks.diff +fix-rust_uno-path-for-cargo-wrapper.diff +rust-uno-DEB_CARGO_CRATE.diff +cargo-build-flag.diff +#strict-firebird-api-version-check.diff +skia-gcc-no-musttail.diff +lpsolve-fPIC.diff +remove-JITC_PROCESSOR_TYPE-setting.diff +Rust-Bindings-Add-initial-documentation-for-Rust-UNO.diff +parquet-filter-config-only-if-enabled-in-orcus.diff + diff --git a/debian/patches/skia-gcc-no-musttail.diff b/debian/patches/skia-gcc-no-musttail.diff new file mode 100644 index 00000000000..4a21c85ca3f --- /dev/null +++ b/debian/patches/skia-gcc-no-musttail.diff @@ -0,0 +1,48 @@ +diff --git a/external/skia/UnpackedTarball_skia.mk b/external/skia/UnpackedTarball_skia.mk +index 692eba0130e5..066521387d5b 100644 +--- a/external/skia/UnpackedTarball_skia.mk ++++ b/external/skia/UnpackedTarball_skia.mk +@@ -44,6 +44,7 @@ skia_patches := \ + msvc-unknown-attributes.patch.1 \ + fix-semaphore-include.patch.1 \ + fix-xputimage-depth.patch.1 \ ++ gcc-no-musttail.diff \ + + ifneq ($(MSYSTEM),) + # use binary flag so patch from git-bash won't choke on mixed line-endings in patches +--- a/external/skia/gcc-no-musttail.diff 2025-11-16 13:22:36.315966137 +0100 ++++ b/external/skia/gcc-no-musttail.diff 2025-11-23 08:52:51.772213670 +0100 +@@ -0,0 +1,33 @@ ++diff -urN skia-old/modules/skcms/src/skcms_internals.h skia/modules/skcms/src/skcms_internals.h ++--- skia-old/modules/skcms/src/skcms_internals.h 2025-11-13 07:45:02.000000000 +0100 +++++ skia/modules/skcms/src/skcms_internals.h 2025-11-30 12:05:23.846221957 +0100 ++@@ -53,13 +53,16 @@ ++ && !defined(__riscv) \ ++ && !defined(__powerpc__) \ ++ && !defined(__loongarch__) \ +++ && !defined(__alpha__) \ ++ && !defined(_WIN32) && !defined(__SYMBIAN32__) ++ #define SKCMS_HAS_MUSTTAIL 1 ++ #endif ++ #elif defined(__GNUC__) && !defined(SKCMS_HAS_MUSTTAIL) ++ // GCC on riscv64 does not support our tail call functions ++ // cf. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121784 ++- #if __has_cpp_attribute(clang::musttail) && !defined(__riscv) +++ // copy the rest over from the clang case, just in case we ever built with +++ // gcc for them (which we do for alpha right now) +++ #if __has_cpp_attribute(clang::musttail) && !defined(__arm__) && !defined(__riscv) && !defined (__powerpc__) && !defined(__loongarch__) && !defined (__alpha__) ++ #define SKCMS_HAS_MUSTTAIL 1 ++ #else ++ #define SKCMS_HAS_MUSTTAIL 0 ++diff -Nru skia-old/src/core/SkRasterPipeline.h skia/src/core/SkRasterPipeline.h ++--- skia-old/src/core/SkRasterPipeline.h 2025-11-13 07:45:03.000000000 +0100 +++++ skia/src/core/SkRasterPipeline.h 2025-12-08 17:01:58.882479397 +0100 ++@@ -27,7 +27,7 @@ ++ struct skcms_TransferFunction; ++ ++ #if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && \ ++- !defined(SK_CPU_LOONGARCH) && !defined(SK_CPU_PPC) && \ +++ !defined(SK_CPU_LOONGARCH) && !defined(SK_CPU_PPC) && !defined(__alpha__) && \ ++ !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) ++ // [[clang::musttail]] is disabled for the Android version of Skia running on Windows as it ++ // causes crashes (This is probably related to http://crbug.com/1505442). diff --git a/debian/patches/splits-adapt-registry.diff b/debian/patches/splits-adapt-registry.diff new file mode 100644 index 00000000000..e7e674b42e1 --- /dev/null +++ b/debian/patches/splits-adapt-registry.diff @@ -0,0 +1,168 @@ +diff --git a/scp2/source/gnome/file_gnome.scp b/scp2/source/gnome/file_gnome.scp +index c7a13c8..a3f59a6 100644 +--- a/scp2/source/gnome/file_gnome.scp ++++ b/scp2/source/gnome/file_gnome.scp +@@ -25,3 +25,13 @@ File gid_File_Share_Registry_Gnome_Xcd + Name = "gnome.xcd"; + End + #endif ++ ++#ifdef ENABLE_EVOAB2 ++File gid_File_Share_Registry_Evoab_Xcd ++ TXT_FILE_BODY; ++ Styles = (PACKED); ++ Dir = gid_Brand_Dir_Share_Registry; ++ Name = "evoab.xcd"; ++End ++#endif ++ +diff --git a/scp2/source/gnome/module_gnome.scp b/scp2/source/gnome/module_gnome.scp +index 08d9efe..492e274 100644 +--- a/scp2/source/gnome/module_gnome.scp ++++ b/scp2/source/gnome/module_gnome.scp +@@ -31,6 +31,9 @@ Module gid_Module_Optional_Gnome + #if ENABLE_GIO + ,gid_File_Share_Registry_Gnome_Xcd + #endif ++#ifdef ENABLE_EVOAB2 ++ ,gid_File_Share_Registry_Evoab_Xcd ++#endif + ); + End + +diff --git a/scp2/InstallModule_gnome.mk b/scp2/InstallModule_gnome.mk +index c33f4f52d67b..8f06c0273eff 100644 +--- a/scp2/InstallModule_gnome.mk ++++ b/scp2/InstallModule_gnome.mk +@@ -19,4 +19,8 @@ $(eval $(call gb_InstallModule_add_localized_scpfiles,scp2/gnome,\ + scp2/source/gnome/module_gnome \ + )) + ++$(eval $(call gb_InstallModule_define_if_set,scp2/gnome,\ ++ ENABLE_EVOAB2 \ ++)) ++ + # vim: set shiftwidth=4 tabstop=4 noexpandtab: +diff --git a/postprocess/CustomTarget_registry.mk b/postprocess/CustomTarget_registry.mk +index 4be442c49ae4..c5f5c7166fdd 100644 +--- a/postprocess/CustomTarget_registry.mk ++++ b/postprocess/CustomTarget_registry.mk +@@ -453,7 +453,9 @@ postprocess_FILES_calc += \ + postprocess_DRIVERS += calc + + ifeq ($(ENABLE_EVOAB2),TRUE) +-postprocess_FILES_main += \ ++postprocess_XCDS += evoab.xcd ++postprocess_DEPS_evoab := main ++postprocess_FILES_evoab += \ + $(call gb_XcuModuleTarget_get_target,connectivity/registry/evoab2)/org/openoffice/Office/DataAccess/Drivers-evoab2.xcu \ + $(postprocess_MOD)/org/openoffice/Office/DataAccess-evoab2.xcu + postprocess_DRIVERS += evoab +@@ -464,20 +464,27 @@ endif + + ifeq ($(ENABLE_JAVA),TRUE) ++postprocess_XCDS += hsqldb.xcd ++postprocess_DEPS_hsqldb := main ++postprocess_FILES_hsqldb += \ ++ $(call gb_XcuModuleTarget_get_target,connectivity/registry/hsqldb)/org/openoffice/Office/DataAccess/Drivers-hsqldb.xcu + postprocess_FILES_main += \ +- $(call gb_XcuModuleTarget_get_target,connectivity/registry/hsqldb)/org/openoffice/Office/DataAccess/Drivers-hsqldb.xcu \ + $(call gb_XcuModuleTarget_get_target,connectivity/registry/jdbc)/org/openoffice/Office/DataAccess/Drivers-jdbc.xcu \ + $(call gb_XcuModuleTarget_get_target,connectivity/registry/mysql_jdbc)/org/openoffice/Office/DataAccess/Drivers-mysql_jdbc.xcu + postprocess_DRIVERS += hsqldb jdbc mysql_jdbc + endif + + ifeq ($(ENABLE_FIREBIRD_SDBC),TRUE) +-postprocess_FILES_main += \ ++postprocess_XCDS += firebird_sdbc.xcd ++postprocess_DEPS_firebird_sdbc := main ++postprocess_FILES_firebird_sdbc += \ + $(call gb_XcuModuleTarget_get_target,connectivity/registry/firebird)/org/openoffice/Office/DataAccess/Drivers-firebird.xcu + postprocess_DRIVERS += firebird_sdbc + endif + + ifeq ($(ENABLE_MARIADBC),TRUE) +-postprocess_FILES_main += \ ++postprocess_XCDS += mysqlc.xcd ++postprocess_DEPS_mysqlc := main ++postprocess_FILES_mysqlc += \ + $(call gb_XcuModuleTarget_get_target,connectivity/registry/mysqlc)/org/openoffice/Office/DataAccess/Drivers-mysqlc.xcu + postprocess_DRIVERS += mysqlc + endif +diff --git a/scp2/source/base/firebird.scp b/scp2/source/base/firebird.scp +index 61cfff9cc496..0fdb2ffc6e66 100644 +--- a/scp2/source/base/firebird.scp ++++ b/scp2/source/base/firebird.scp +@@ -20,15 +20,27 @@ + + #include "AutoInstall/firebirdsdbc" + +-#if defined( ENABLE_FIREBIRD_SDBC ) && !defined( SYSTEM_FIREBIRD ) ++#if defined( ENABLE_FIREBIRD_SDBC ) ++ ++#if !defined( SYSTEM_FIREBIRD ) + + Module gid_Module_Optional_Firebird + Name = "Firebird"; + Description = "Firebird embedded database"; + PackageInfo = "packinfo_office.txt"; + ParentID = gid_Module_Root_Brand; +- Files = (auto_firebirdsdbc_ALL); ++ Files = (auto_firebirdsdbc_ALL, ++ gid_File_FirebirdSdbc_Xcd); + Styles = (HIDDEN_ROOT); + End + + #endif ++ ++File gid_File_FirebirdSdbc_Xcd ++ TXT_FILE_BODY; ++ Dir = gid_Brand_Dir_Share_Registry; ++ Name = "firebird_sdbc.xcd"; ++ Styles = (PACKED); ++End ++ ++#endif +diff --git a/scp2/InstallModule_base.mk b/scp2/InstallModule_base.mk +index 709d1493e0d8..52318117cd49 100644 +--- a/scp2/InstallModule_base.mk ++++ b/scp2/InstallModule_base.mk +@@ -29,6 +29,7 @@ $(eval $(call gb_InstallModule_add_templates,scp2/base,\ + $(eval $(call gb_InstallModule_add_scpfiles,scp2/base,\ + scp2/source/base/file_base \ + scp2/source/base/firebird \ ++ scp2/source/base/hsqldb \ + )) + + $(eval $(call gb_InstallModule_add_localized_scpfiles,scp2/base,\ +--- a/scp2/source/base/hsqldb.scp 2025-02-15 08:57:11.237759355 +0100 ++++ b/scp2/source/base/hsqldb.scp 2025-02-15 17:45:20.400734156 +0100 +@@ -0,0 +1,28 @@ ++/* ++ * This file is part of the LibreOffice project. ++ * ++ * This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * ++ * This file incorporates work covered by the following license notice: ++ * ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed ++ * with this work for additional information regarding copyright ++ * ownership. The ASF licenses this file to you under the Apache ++ * License, Version 2.0 (the "License"); you may not use this file ++ * except in compliance with the License. You may obtain a copy of ++ * the License at http://www.apache.org/licenses/LICENSE-2.0 . ++ */ ++ ++#include "macros.inc" ++ ++#if defined ENABLE_JAVA ++File gid_File_Hsqldb_Xcd ++ TXT_FILE_BODY; ++ Dir = gid_Brand_Dir_Share_Registry; ++ Name = "hsqldb.xcd"; ++ Styles = (PACKED); ++End ++#endif diff --git a/debian/patches/strict-firebird-api-version-check.diff b/debian/patches/strict-firebird-api-version-check.diff new file mode 100644 index 00000000000..63ae3dc1909 --- /dev/null +++ b/debian/patches/strict-firebird-api-version-check.diff @@ -0,0 +1,29 @@ +diff --git a/configure.ac b/configure.ac +index 5831f186b0e7..5fea9b28276d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -11146,15 +11208,7 @@ if test "$enable_firebird_sdbc" = "yes" ; then + FIREBIRD_LIBS="${filteredlibs}" + fi + AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS']) +- AC_MSG_CHECKING([Firebird version]) +- if test -n "${FIREBIRD_VERSION}"; then +- FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1` +- if test "$FIREBIRD_MAJOR" -ge "3"; then +- AC_MSG_RESULT([OK]) +- else +- AC_MSG_ERROR([Ensure firebird >= 3 is installed]) +- fi +- else ++ AC_MSG_CHECKING([Firebird API version]) + save_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include +@@ -11164,7 +11218,6 @@ int fb_api_is_30(void) { return 0; } + #error "Wrong Firebird API version" + #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed])) + CFLAGS="$save_CFLAGS" +- fi + ENABLE_FIREBIRD_SDBC=TRUE + AC_DEFINE([ENABLE_FIREBIRD_SDBC],1) + elif test "$enable_database_connectivity" = no; then diff --git a/debian/patches/system-crates.diff b/debian/patches/system-crates.diff new file mode 100644 index 00000000000..a3b590c5ba9 --- /dev/null +++ b/debian/patches/system-crates.diff @@ -0,0 +1,89 @@ +--- a/configure.ac-old 2025-09-13 12:16:00.149332314 +0200 ++++ b/configure.ac 2025-09-13 12:18:08.454597162 +0200 +@@ -2909,10 +2909,28 @@ + [Enables very experimental experiments.]),[ + WITH_YRS=$withval + if test "x$withval" != "xno"; then +- BUILD_TYPE="${BUILD_TYPE} YRS" ++ if test "$with_system_yrs" = "yes"; then ++ SYSTEM_YRS=TRUE ++ else ++ BUILD_TYPE="${BUILD_TYPE} YRS" ++ fi + AC_DEFINE(ENABLE_YRS) + fi]) + AC_SUBST(WITH_YRS) ++AC_SUBST(SYSTEM_YRS) ++ ++# call it yrs even though the crate is built is yffi. But it's clearer ++# that way that it belongs to the above --with-yrs ++AC_ARG_WITH(system-yrs, ++ AS_HELP_STRING([--with-system-yrs], ++ [Use yrs/yffi crates already on system]),, ++ [with_system_yrs="$with_system_crates"]) ++ ++AC_ARG_WITH(system-crates, ++ AS_HELP_STRING([--without-system-crates], ++ [When building with --with-system-libs, also the needed crates are expected ++ on the system. Use this to disable that]),, ++ [with_system_crates="$with_system_libs"]) + + AC_ARG_WITH(perl-home, + AS_HELP_STRING([--with-perl-home=], +diff --git a/config_host.mk.in b/config_host.mk.in +index 9b7a7a747e2d..4e1fc5d128cc 100644 +--- a/config_host.mk.in ++++ b/config_host.mk.in +@@ -732,6 +741,7 @@ SYSTEM_WPD=@SYSTEM_WPD@ + SYSTEM_WPG=@SYSTEM_WPG@ + SYSTEM_WPS=@SYSTEM_WPS@ + SYSTEM_XMLSEC=@SYSTEM_XMLSEC@ ++SYSTEM_YRS=@SYSTEM_YRS@ + SYSTEM_ZLIB=@SYSTEM_ZLIB@ + SYSTEM_ZSTD=@SYSTEM_ZSTD@ + SYSTEM_ZMF=@SYSTEM_ZMF@ +diff --git a/Makefile.fetch b/Makefile.fetch +index 239fcc01753f..1175e65cee70 100644 +--- a/Makefile.fetch ++++ b/Makefile.fetch +@@ -252,8 +252,10 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S + $(call fetch_Optional,OFFICEOTRON,OFFICEOTRON_JAR) \ + ,$(call fetch_Download_item,https://dev-www.libreoffice.org/extern,$(item))) + -@mkdir -p $(TARFILE_LOCATION)/cargo ++ $(if $(filter TRUE,$(SYSTEM_YRS)), \ + $(if $(call fetch_Optional,YRS,1),\ +- CARGO_HOME=$(TARFILE_LOCATION)/cargo cargo fetch $(if $(verbose),--verbose,) --locked --manifest-path $(SRCDIR)/external/y-crdt/Cargo.toml) ++ CARGO_HOME=$(TARFILE_LOCATION)/cargo cargo fetch $(if $(verbose),--verbose,) --locked --manifest-path $(SRCDIR)/external/y-crdt/Cargo.toml) \ ++ ) + @mkdir -p $(dir $@) && touch $@ + @mkdir -p $(dir $@)/Executable + +diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk +index dce2138d1df2..a45fbea93f4a 100644 +--- a/RepositoryExternal.mk ++++ b/RepositoryExternal.mk +@@ -4465,6 +4466,7 @@ endif + + ifneq ($(WITH_YRS),) + ++ifeq ($(SYSTEM_YRS),) + define gb_LinkTarget__use_yrs + $(call gb_LinkTarget_use_external_project,$(1),y-crdt) + $(call gb_LinkTarget_set_include,$(1),\ +@@ -4476,6 +4478,16 @@ endef + + else + ++define gb_LinkTarget__use_yrs ++$(call gb_LinkTarget_set_include,$(1),\ ++ $$(INCLUDE) \ ++) ++$(call gb_LinkTarget_add_libs,$(1),$(SRC_ROOT)/debian/cargo_registry/yffi/target/$(DEB_HOST_RUST_TYPE)/$(CARGO_CHANNEL)/libyrs.a) ++endef ++endif ++ ++else ++ + gb_LinkTarget__use_yrs := + + endif diff --git a/debian/patches/system-officeotron-and-odfvalidator.diff b/debian/patches/system-officeotron-and-odfvalidator.diff new file mode 100644 index 00000000000..2bb3adf6dce --- /dev/null +++ b/debian/patches/system-officeotron-and-odfvalidator.diff @@ -0,0 +1,16 @@ +diff --git a/bin/odfvalidator.sh.in b/bin/odfvalidator.sh.in +index 56e2f29..9415ef6 100644 +--- a/bin/odfvalidator.sh.in ++++ b/bin/odfvalidator.sh.in +@@ -1,2 +1,2 @@ + #!/usr/bin/env bash +-java -Djavax.xml.validation.SchemaFactory:http://relaxng.org/ns/structure/1.0=org.iso_relax.verifier.jaxp.validation.RELAXNGSchemaFactoryImpl -Dorg.iso_relax.verifier.VerifierFactoryLoader=com.sun.msv.verifier.jarv.FactoryLoaderImpl -jar @TARFILE_LOCATION_NATIVE@/@ODFVALIDATOR_JAR@ "$@" ++java -Djavax.xml.validation.SchemaFactory:http://relaxng.org/ns/structure/1.0=org.iso_relax.verifier.jaxp.validation.RELAXNGSchemaFactoryImpl -Dorg.iso_relax.verifier.VerifierFactoryLoader=com.sun.msv.verifier.jarv.FactoryLoaderImpl -jar /usr/share/java/odfvalidator.jar "$@" +diff --git a/bin/officeotron.sh.in b/bin/officeotron.sh.in +index 7281f1b..6eab5b5 100644 +--- a/bin/officeotron.sh.in ++++ b/bin/officeotron.sh.in +@@ -1,2 +1,2 @@ + #!/usr/bin/env bash +-java -jar @TARFILE_LOCATION_NATIVE@/@OFFICEOTRON_JAR@ "$@" ++java -jar /usr/share/java/officeotron.jar "$@" diff --git a/debian/patches/use-mariadb-java-instead-of-mysql-java.diff b/debian/patches/use-mariadb-java-instead-of-mysql-java.diff new file mode 100644 index 00000000000..dda195524ff --- /dev/null +++ b/debian/patches/use-mariadb-java-instead-of-mysql-java.diff @@ -0,0 +1,59 @@ +>From 1172166889764ae0e77488e5d173f33961b9859b Mon Sep 17 00:00:00 2001 +From: Markus Koschany +Date: Fri, 9 Nov 2018 23:06:15 +0100 +Subject: [PATCH] mariadb + +--- + connectivity/qa/complex/connectivity/JdbcLongVarCharTest.java | 4 ++-- + .../mysql/org/openoffice/Office/DataAccess/Drivers.xcu | 2 +- + connectivity/source/drivers/mysql/YDriver.cxx | 4 ++-- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/connectivity/qa/complex/connectivity/JdbcLongVarCharTest.java b/connectivity/qa/complex/connectivity/JdbcLongVarCharTest.java +index 3817add48da6..ace57bd35d98 100644 +--- a/connectivity/qa/complex/connectivity/JdbcLongVarCharTest.java ++++ b/connectivity/qa/complex/connectivity/JdbcLongVarCharTest.java +@@ -64,7 +64,7 @@ public class JdbcLongVarCharTest extends ComplexTestCase + */ + String url = System.getenv("CONNECTIVITY_TEST_MYSQL_DRIVER_JDBC"); + com.sun.star.beans.PropertyValue prop[] = new PropertyValue[1]; +- prop[0] = new PropertyValue("JavaDriverClass", 0, "com.mysql.jdbc.Driver", PropertyState.DIRECT_VALUE); ++ prop[0] = new PropertyValue("JavaDriverClass", 0, "org.mariadb.jdbc.Driver", PropertyState.DIRECT_VALUE); + + // get the remote office component context + XMultiServiceFactory xServiceManager = param.getMSF(); +diff --git a/connectivity/registry/mysql/org/openoffice/Office/DataAccess/Drivers.xcu b/connectivity/registry/mysql/org/openoffice/Office/DataAccess/Drivers.xcu +index 77988448f..acd8bfdaf 100644 +--- a/connectivity/registry/mysql_jdbc/org/openoffice/Office/DataAccess/Drivers.xcu ++++ b/connectivity/registry/mysql_jdbc/org/openoffice/Office/DataAccess/Drivers.xcu +@@ -33,7 +33,7 @@ + + + +- com.mysql.jdbc.Driver ++ org.mariadb.jdbc.Driver + + + +diff --git a/connectivity/source/drivers/mysql/YDriver.cxx b/connectivity/source/drivers/mysql/YDriver.cxx +index 95094265e..c0ad7802e 100644 +--- a/connectivity/source/drivers/mysql_jdbc/YDriver.cxx ++++ b/connectivity/source/drivers/mysql_jdbc/YDriver.cxx +@@ -54,7 +54,7 @@ namespace + OUString getJavaDriverClass(css::uno::Sequence const& info) + { + return comphelper::NamedValueCollection::getOrDefault(info, u"JavaDriverClass", +- u"com.mysql.jdbc.Driver"_ustr); ++ u"org.mariadb.jdbc.Driver"_ustr); + } + } + +@@ -165,7 +165,7 @@ Sequence lcl_convertProperties(T_DRIVERTYPE _eType, + { + if (!jdc) + { +- aProps.emplace_back("JavaDriverClass", 0, Any(u"com.mysql.jdbc.Driver"_ustr), ++ aProps.emplace_back("JavaDriverClass", 0, Any(u"org.mariadb.jdbc.Driver"_ustr), + PropertyState_DIRECT_VALUE); + } + } diff --git a/debian/patches/we-dont-have-the-needed-fonts.diff b/debian/patches/we-dont-have-the-needed-fonts.diff new file mode 100644 index 00000000000..a5618b81ccb --- /dev/null +++ b/debian/patches/we-dont-have-the-needed-fonts.diff @@ -0,0 +1,305 @@ +diff --git a/sw/qa/core/text/text.cxx b/sw/qa/core/text/text.cxx +index a4d4540ab228..46d262f6f0b8 100644 +--- a/sw/qa/core/text/text.cxx ++++ b/sw/qa/core/text/text.cxx +@@ -9,6 +9,8 @@ + + #include + ++#include ++ + #include + + #include +@@ -1363,6 +1365,8 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testParaUpperMarginFlyIntersect) + CPPUNIT_ASSERT_EQUAL(521, nHeight); + } + ++/* needs Source Han Serif SC*/ ++#if HAVE_MORE_FONTS + CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testTdf129810) + { + // Load the document. +@@ -1394,6 +1398,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testTdf129810) + } + } + } ++#endif + + CPPUNIT_TEST_FIXTURE(SwCoreTextTest, testScriptinfosurrogatePairs) + { +diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx +index 2c314d6b886f..b50e7dd4d82f 100644 +--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx ++++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx +@@ -5045,68 +5045,73 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf134226) + fnEqualPos(aRect[3], aRect[5]); + } + +-// tdf#71956 - Tests that glyphs can be individually styled +-CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf71956) +-{ +- saveAsPDF(u"tdf71956-styled-diacritics.fodt"); +- std::unique_ptr pPdfDocument = parsePDFExport(); +- +- CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount()); +- +- // Get the first page +- std::unique_ptr pPdfPage = pPdfDocument->openPage(/*nIndex*/ 0); +- CPPUNIT_ASSERT(pPdfPage); +- std::unique_ptr pTextPage = pPdfPage->getTextPage(); +- CPPUNIT_ASSERT(pTextPage); +- +- int nPageObjectCount = pPdfPage->getObjectCount(); +- CPPUNIT_ASSERT_EQUAL(12, nPageObjectCount); +- +- std::vector aText; +- std::vector aRect; +- +- int nTextObjectCount = 0; +- for (int i = 0; i < nPageObjectCount; ++i) +- { +- auto pPageObject = pPdfPage->getObject(i); +- CPPUNIT_ASSERT_MESSAGE("no object", pPageObject != nullptr); +- if (pPageObject->getType() == vcl::pdf::PDFPageObjectType::Text) +- { +- aText.push_back(pPageObject->getText(pTextPage)); +- aRect.push_back(pPageObject->getBounds()); +- ++nTextObjectCount; +- } +- } +- +- CPPUNIT_ASSERT_EQUAL(12, nTextObjectCount); +- +- CPPUNIT_ASSERT_EQUAL(u"ه"_ustr, aText[0].trim()); +- CPPUNIT_ASSERT_EQUAL(u"\u064e\u0651\u0670ل"_ustr, aText[1].trim()); +- CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[2].trim()); +- CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[3].trim()); +- CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[4].trim()); +- CPPUNIT_ASSERT_EQUAL(u"ل"_ustr, aText[5].trim()); +- CPPUNIT_ASSERT_EQUAL(u"ل"_ustr, aText[6].trim()); +- CPPUNIT_ASSERT_EQUAL(u"\u064e\u0651\u0670ل"_ustr, aText[7].trim()); +- CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[8].trim()); +- CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[9].trim()); +- CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[10].trim()); +- CPPUNIT_ASSERT_EQUAL(u"ه"_ustr, aText[11].trim()); +- +- // Verify that the corresponding text segments are positioned roughly equally +- auto fnEqualPos +- = [](const basegfx::B2DRectangle& stExpected, const basegfx::B2DRectangle& stFound) { +- CPPUNIT_ASSERT_DOUBLES_EQUAL(stExpected.getMinX(), stFound.getMinX(), /*delta*/ 0.15); +- CPPUNIT_ASSERT_DOUBLES_EQUAL(stExpected.getMaxX(), stFound.getMaxX(), /*delta*/ 0.15); +- }; +- +- fnEqualPos(aRect[0], aRect[11]); +- fnEqualPos(aRect[1], aRect[10]); +- fnEqualPos(aRect[2], aRect[8]); +- fnEqualPos(aRect[3], aRect[9]); +- fnEqualPos(aRect[4], aRect[7]); +- fnEqualPos(aRect[5], aRect[6]); +-} ++/* uses Noto Sans Arabic. ++ * visually looking at this this seems to work ; it seems even when having that one installed ++ * I get it cusive (not being there). In a clean VM I get it but not in the chroot even thoug ++ * fc-list shows it. ++ * Disable it for now.*/ ++//// tdf#71956 - Tests that glyphs can be individually styled ++//CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf71956) ++//{ ++// saveAsPDF(u"tdf71956-styled-diacritics.fodt"); ++// std::unique_ptr pPdfDocument = parsePDFExport(); ++// ++// CPPUNIT_ASSERT_EQUAL(1, pPdfDocument->getPageCount()); ++// ++// // Get the first page ++// std::unique_ptr pPdfPage = pPdfDocument->openPage(/*nIndex*/ 0); ++// CPPUNIT_ASSERT(pPdfPage); ++// std::unique_ptr pTextPage = pPdfPage->getTextPage(); ++// CPPUNIT_ASSERT(pTextPage); ++// ++// int nPageObjectCount = pPdfPage->getObjectCount(); ++// CPPUNIT_ASSERT_EQUAL(12, nPageObjectCount); ++// ++// std::vector aText; ++// std::vector aRect; ++// ++// int nTextObjectCount = 0; ++// for (int i = 0; i < nPageObjectCount; ++i) ++// { ++// auto pPageObject = pPdfPage->getObject(i); ++// CPPUNIT_ASSERT_MESSAGE("no object", pPageObject != nullptr); ++// if (pPageObject->getType() == vcl::pdf::PDFPageObjectType::Text) ++// { ++// aText.push_back(pPageObject->getText(pTextPage)); ++// aRect.push_back(pPageObject->getBounds()); ++// ++nTextObjectCount; ++// } ++// } ++// ++// CPPUNIT_ASSERT_EQUAL(12, nTextObjectCount); ++// ++// CPPUNIT_ASSERT_EQUAL(u"ه"_ustr, aText[0].trim()); ++// CPPUNIT_ASSERT_EQUAL(u"\u064e\u0651\u0670ل"_ustr, aText[1].trim()); ++// CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[2].trim()); ++// CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[3].trim()); ++// CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[4].trim()); ++// CPPUNIT_ASSERT_EQUAL(u"ل"_ustr, aText[5].trim()); ++// CPPUNIT_ASSERT_EQUAL(u"ل"_ustr, aText[6].trim()); ++// CPPUNIT_ASSERT_EQUAL(u"\u064e\u0651\u0670ل"_ustr, aText[7].trim()); ++// CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[8].trim()); ++// CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[9].trim()); ++// CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[10].trim()); ++// CPPUNIT_ASSERT_EQUAL(u"ه"_ustr, aText[11].trim()); ++// ++// // Verify that the corresponding text segments are positioned roughly equally ++// auto fnEqualPos ++// = [](const basegfx::B2DRectangle& stExpected, const basegfx::B2DRectangle& stFound) { ++// CPPUNIT_ASSERT_DOUBLES_EQUAL(stExpected.getMinX(), stFound.getMinX(), /*delta*/ 0.15); ++// CPPUNIT_ASSERT_DOUBLES_EQUAL(stExpected.getMaxX(), stFound.getMaxX(), /*delta*/ 0.15); ++// }; ++// ++// fnEqualPos(aRect[0], aRect[11]); ++// fnEqualPos(aRect[1], aRect[10]); ++// fnEqualPos(aRect[2], aRect[8]); ++// fnEqualPos(aRect[3], aRect[9]); ++// fnEqualPos(aRect[4], aRect[7]); ++// fnEqualPos(aRect[5], aRect[6]); ++//} + + // tdf#101686 - Verifies that drawinglayer clears RTL flags while drawing Writer text boxes + CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf101686) +diff --git a/vcl/qa/cppunit/complextext.cxx b/vcl/qa/cppunit/complextext.cxx +index 9be428b59128..a833314bd23d 100644 +--- a/vcl/qa/cppunit/complextext.cxx ++++ b/vcl/qa/cppunit/complextext.cxx +@@ -792,49 +792,6 @@ CPPUNIT_TEST_FIXTURE(VclComplexTextTest, testTdf165510) + } + } + +-CPPUNIT_TEST_FIXTURE(VclComplexTextTest, testTdf154104) +-{ +- ScopedVclPtrInstance pOutDev; +- +- vcl::Font aBaseFont{ u"David Libre"_ustr, u"Regular"_ustr, Size{ 0, 72 } }; +- pOutDev->SetFont(aBaseFont); +- +- vcl::Font aFallbackFont{ u"Noto Sans Arabic"_ustr, u"Regular"_ustr, Size{ 0, 72 } }; +- pOutDev->ForceFallbackFont(aFallbackFont); +- +- pOutDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::BiDiRtl +- | vcl::text::ComplexTextLayoutFlags::BiDiStrong); +- +- auto aText = u"\u05D0\u05D0\u05D0\u0644\u0627"_ustr; +- KernArray aKernArray = { 100, 200, 300, 350, 400 }; +- auto pLayout = pOutDev->ImplLayout(aText, /*nIndex*/ 0, /*nLen*/ aText.getLength(), +- /*rLogicPos*/ Point(0, 0), /*nLogicWidth*/ 0, aKernArray); +- +- // Fallback must have happened for this test to be meaningful +- auto pMultiLayout = dynamic_cast(pLayout.get()); +- CPPUNIT_ASSERT(pMultiLayout); +- +- std::vector aCharX; +- +- const GlyphItem* pGlyph = nullptr; +- basegfx::B2DPoint stPos; +- int nCurrPos = 0; +- while (pLayout->GetNextGlyph(&pGlyph, stPos, nCurrPos)) +- { +- aCharX.push_back(stPos.getX()); +- } +- +- // tdf#154104 caused overlapping glyphs in fallback runs: +- // { -295.0, -195.0, -95.0, -341.0 } +- std::vector aRefCharX{ -245.0, -145.0, -45.0, -341.0 }; +- +- CPPUNIT_ASSERT_EQUAL(aRefCharX.size(), aCharX.size()); +- for (size_t i = 0; i < aRefCharX.size(); ++i) +- { +- CPPUNIT_ASSERT_DOUBLES_EQUAL(aRefCharX.at(i), aCharX.at(i), /*delta*/ 0.2); +- } +-} +- + CPPUNIT_TEST_FIXTURE(VclComplexTextTest, testTdf163761) + { + ScopedVclPtrInstance pOutDev; + +FIXME: Not exactly sure why this fails. But building without --without-fonts make them +work so I guess it's some font stuff we miss... + +diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx +index b54e424e4546..e1af0fc4b2c0 100644 +--- a/sd/qa/unit/export-tests.cxx ++++ b/sd/qa/unit/export-tests.cxx +@@ -1076,72 +1076,6 @@ CPPUNIT_TEST_FIXTURE(SdExportTest, testExplodedPdfTextPos) + assertXPath(pXml, "//textarray", 1); + } + +-CPPUNIT_TEST_FIXTURE(SdExportTest, testExplodedPdfFont) +-{ +- auto pPdfium = vcl::pdf::PDFiumLibrary::get(); +- if (!pPdfium) +- return; +- UsePdfium aGuard; +- +- loadFromFile(u"pdf/differentfonts.pdf"); +- +- setFilterOptions("{\"DecomposePDF\":{\"type\":\"boolean\",\"value\":\"true\"}}"); +- setImportFilterName(TestFilter::FODG); +- saveAndReload(TestFilter::FODG); +- +- xmlDocUniquePtr pXml = parseLayout(); +- { +- OUString sItalic = getXPath(pXml, "//font[2]", "italic"); +- // was "none" before +- CPPUNIT_ASSERT_EQUAL(u"normal"_ustr, sItalic); +- // check that the others remain as expected +- OUString sFontName = getXPath(pXml, "//font[2]", "name"); +- CPPUNIT_ASSERT_EQUAL(u"Liberation Serif"_ustr, sFontName); +- int nFontHeight = getXPath(pXml, "//font[2]", "height").toInt32(); +- CPPUNIT_ASSERT_EQUAL(494, nFontHeight); +- } +-#if !defined _WIN32 +- //TODO, debug this +- { +- OUString sWeight = getXPath(pXml, "//font[3]", "weight"); +- // was "normal" before +- CPPUNIT_ASSERT_EQUAL(u"bold"_ustr, sWeight); +- // check that the others remain as expected +- OUString sFontName = getXPath(pXml, "//font[3]", "name"); +- CPPUNIT_ASSERT_EQUAL(u"Liberation Sans"_ustr, sFontName); +- sal_Int32 nFontHeight = getXPath(pXml, "//font[3]", "height").toInt32(); +- CPPUNIT_ASSERT_EQUAL(564, nFontHeight); +- } +-#endif +-} +- +-CPPUNIT_TEST_FIXTURE(SdExportTest, testExplodedPdfHindi) +-{ +- auto pPdfium = vcl::pdf::PDFiumLibrary::get(); +- if (!pPdfium) +- return; +- UsePdfium aGuard; +- +- loadFromFile(u"pdf/BasicHindi.pdf"); +- +- setFilterOptions("{\"DecomposePDF\":{\"type\":\"boolean\",\"value\":\"true\"}}"); +- save(TestFilter::FODG); +- +- xmlDocUniquePtr pXmlDoc = parseExportedFile(); +- +- // Check that the English text in here is correct at least +- +- // ensure the expected content +- assertXPathContent(pXmlDoc, +- "/office:document/office:body/office:drawing/draw:page/draw:g/draw:frame[3]/" +- "draw:text-box/text:p[@text:style-name='P4'][1]", +- u"FIRST-YEAR HINDI COURSE"); +- +- // ensure the expected font name +- assertXPath(pXmlDoc, "/office:document/office:automatic-styles/style:style[@style:name='P4']/" +- "style:text-properties[@style:font-name='AcademyEngravedLetPlain']"); +-} +- + CPPUNIT_TEST_FIXTURE(SdExportTest, testExplodedPdfGrayscaleImageUnderInvisibleTest) + { + auto pPdfium = vcl::pdf::PDFiumLibrary::get(); diff --git a/debian/patches/we-rely-on-dicts-as-non-extensions-in-checks.diff b/debian/patches/we-rely-on-dicts-as-non-extensions-in-checks.diff new file mode 100644 index 00000000000..88d471b354e --- /dev/null +++ b/debian/patches/we-rely-on-dicts-as-non-extensions-in-checks.diff @@ -0,0 +1,26 @@ +checking for the extension (only) dos not make sense; this is also fulklfilled by "system" hunspell dicts +(here: hunspell-en-us), which we have in Build-Depends: + +diff --git a/sc/qa/uitest/calc_tests8/tdf125051.py b/sc/qa/uitest/calc_tests8/tdf125051.py +index d923a3ff7580..abf9836e97f9 100644 +--- a/sc/qa/uitest/calc_tests8/tdf125051_spellcheking.py ++++ b/sc/qa/uitest/calc_tests8/tdf125051_spellcheking.py +@@ -16,18 +16,7 @@ from libreoffice.uno.propertyvalue import mkPropertyValues + + # Bug 125051 - EDITING: CRASH when start SpellCheck + class tdf125051(UITestCase): +- def hasExtension(self, identifier): +- m = self.xContext.getByName("/singletons/com.sun.star.deployment.ExtensionManager") +- # Only check bundled extensions for now; it doesn't seem useful to check user and shared ones in UITests +- p = (i for i in m.getDeployedExtensions("bundled", None, None) if i.getIdentifier().Value == identifier) +- return any(r.IsPresent and not r.Value.IsAmbiguous and r.Value.Value for r in (i.isRegistered(None, None) for i in p)) +- + def test_tdf125051_crash_spelling_dialog(self): +- # Check if English spellchecker is installed and active +- if not self.hasExtension("org.openoffice.en.hunspell.dictionaries"): +- print("Skipping test_tdf125051_crash_spelling_dialog: English spellchecker is unavailable") +- return # can't test without English spell checker +- + with self.ui_test.create_doc_in_start_center("calc") as document: + xCalcDoc = self.xUITest.getTopFocusWindow() + gridwin = xCalcDoc.getChild("grid_window") diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in new file mode 100644 index 00000000000..bb7ce2f16a9 --- /dev/null +++ b/debian/po/POTFILES.in @@ -0,0 +1,2 @@ +[type: gettext/rfc822deb] libreoffice-calc.templates + diff --git a/debian/po/ar.po b/debian/po/ar.po new file mode 100644 index 00000000000..720bd48f24a --- /dev/null +++ b/debian/po/ar.po @@ -0,0 +1,47 @@ +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# Maytham Alsudany , 2025 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-13 11:52+0800\n" +"Last-Translator: Maytham Alsudany \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.5\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "البنية لا تدعم ميزة \"إعطاء شيء ليس رقمًا\"" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"LibreOffice Calc يعتمد على ميزة تسمى \"إعطاء شيء ليس رقمًا\" التي " +"اختيارية في معيار IEEE 754, لكن بنية نظامك (risv64) لا تدعمه." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"ومع ذلك, هذه الحزمة مصممة حتى هذا الأمر لكن كن على علم بأن Calc سيعطيك " +"نتائج خاطئة احياناً, خاصة مع =IFERROR() وما إلى ذلك." diff --git a/debian/po/ca.po b/debian/po/ca.po new file mode 100644 index 00000000000..6849053fa7c --- /dev/null +++ b/debian/po/ca.po @@ -0,0 +1,49 @@ +# Catalan translation of libreoffice's debconf messages +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# poc senderi , 2025. +# +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-12 22:16+0100\n" +"Last-Translator: poc senderi \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.2\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "L'arquitectura no és compatible amb «NaN passing»" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"El LibreOffice Calc es basa en una característica anomenada «NaN " +"passing» que a l'estàndard IEEE 754 és opcional. La vostra arquitectura " +"(riscv64) no ho suporta, però." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Aquest paquet es proporciona, no obstant això, per a casos d'ús en els " +"quals això no importa, però hauríeu de ser conscients que el Calc pot " +"donar resultats erronis, especialment amb «=IFERROR()» etc." diff --git a/debian/po/cs.po b/debian/po/cs.po new file mode 100644 index 00000000000..ae5949bd4fd --- /dev/null +++ b/debian/po/cs.po @@ -0,0 +1,47 @@ +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# Miroslav Kure , 2025 +# +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-13 07:30+0100\n" +"Last-Translator: Miroslav Kure \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "Architektura nepodporuje „předávání NaN“" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"LibreOffice Calc spoléhá na vlastnost nazvanou „předávání NaN“, která je ve " +"standardu IEEE 754 volitelná. Vaše architektura (riscv64) ji bohužel " +"nepodporuje." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Tento balík je i přes to dostupný pro případy, kde to nevadí, ale měli " +"byste vědět, že vám Calc může vracet špatné výsledky, obzvláště s " +"funkcemi =IFERROR() apod." \ No newline at end of file diff --git a/debian/po/de.po b/debian/po/de.po new file mode 100644 index 00000000000..f06d87e9fab --- /dev/null +++ b/debian/po/de.po @@ -0,0 +1,45 @@ +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2024-05-13 16:58+0200\n" +"Last-Translator: Rene Engelhard \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "Architektur unterstützt kein »NaN passing«" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"LibreOffice Calc benötigt eine Funktionalität namens \"NaN passing\", welche im " +"IEEE 754-Standard optional ist. Ihre Architektur (riscv64) unterstüzt diese " +"allerdings nicht." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Dieses Paket wird trotzdem für Anwendungsfälle, bei denen dieses kein Problem ist, zur " +"Verfügung gestellt. Bitte seien Sie allerdings vorsichtig; Calc kann falsche " +"Ergebnisse liefern - insbesondere mit =IFERROR() etc." diff --git a/debian/po/es.po b/debian/po/es.po new file mode 100644 index 00000000000..9e6d4b96acd --- /dev/null +++ b/debian/po/es.po @@ -0,0 +1,50 @@ +# Spanish translation of libreoffice calc debconf templates for risc. +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# Translation: Camaleón , 2025. +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-18 18:05+0100\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: Camaleón \n" +"Language-Team: Debian Spanish \n" +"X-Generator: Poedit 2.4.2\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "La arquitectura no admite «NaN passing\"»" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does " +"not support it, though." +msgstr "" +"LibreOffice Calc depende de una característica denominada «NaN " +"passing» que es opcional en la norma IEEE 754. Sin embargo, su " +"arquitectura (riscv64) no lo admite." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does " +"not matter but you should be aware that Calc can give you wrong " +"results, especially with =IFERROR() etc." +msgstr "" +"No obstante, este paquete se suministra para casos de uso en los que " +"esto no es relevante, pero debe tener en cuenta que Calc puede " +"generar resultados erróneos, especialmente con =IFERROR(), etc." diff --git a/debian/po/fr.po b/debian/po/fr.po new file mode 100644 index 00000000000..9713aeb0b7d --- /dev/null +++ b/debian/po/fr.po @@ -0,0 +1,46 @@ +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-13 15:04+0100\n" +"Last-Translator: Jean-Paul Guillonneau \n" +"Language-Team: Debian French Team \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "Architecture ne gérant pas « passage de NaN »" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"Calc de LibreOffice repose sur une fonction appelée « NaN passing » (NaN –" +" Not a Number ») qui est facultative dans la norme IEEE 754. Cependant votre " +"architecture (riscv64) ne la gère pas." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Ce paquet est néanmoins fourni pour les cas où cela n’a aucune importance, " +"mais vous devez être conscient que Calc peut donner des résultats faux, " +"particulièrement avec =IFERROR(), etc." diff --git a/debian/po/gl.po b/debian/po/gl.po new file mode 100644 index 00000000000..2b6e7f78f7c --- /dev/null +++ b/debian/po/gl.po @@ -0,0 +1,49 @@ +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# +# Rene Engelhard , 2024. +# parodper , 2025. +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-16 08:29+0100\n" +"Last-Translator: Pablo \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.2.2\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "Esta arquitectura non permite o «paso de NaN»" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"LibreOffice Calc depende dunha capacidade chamada «paso de NaN» [NaN " +"passing], unha parte opcional da norma IEEE 754. Porén, esta " +"arquitectura (riscv64) non a inclúe." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Este paquete inclúese de tódolos xeitos para aqueles casos de uso nos " +"que isto non importe, pero que saiba que Calc pode dar malos " +"resultados, especialmente se emprega =SEÉRROR() ou semellantes." diff --git a/debian/po/nl.po b/debian/po/nl.po new file mode 100644 index 00000000000..6a811d42896 --- /dev/null +++ b/debian/po/nl.po @@ -0,0 +1,50 @@ +# Dutch translation of libreoffice calc debconf templates for risc. +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# Translation: Frans Spiesschaert , 2025. + +# +msgid "" +msgstr "" +"Project-Id-Version: libreoffice_4:25.2.2~rc1-1\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-13 14:04+0100\n" +"Last-Translator: Frans Spiesschaert \n" +"Language-Team: \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.2.2\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "Architectuur ondersteunt \"NaN passing\" niet" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"LibreOffice Calc is gebaseerd op een functie genaamd \"NaN passeren\" " +"die optioneel is in de IEEE 754 standaard. Uw architectuur (riscv64) " +"ondersteunt deze functie echter niet." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Dit pakket wordt desalniettemin geleverd voor gebruikssituaties waarbij " +"dit niet van belang is. U dient er echter rekening mee te houden dat " +"Calc u onjuiste resultaten kan geven, vooral met =IFERROR() enz." diff --git a/debian/po/pt.po b/debian/po/pt.po new file mode 100644 index 00000000000..9482b3bf19b --- /dev/null +++ b/debian/po/pt.po @@ -0,0 +1,50 @@ +# Translation of libreoffice debconf messages to European Portuguese +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# +# Rene Engelhard , 2024. +# Américo Monteiro , 2025. +msgid "" +msgstr "" +"Project-Id-Version: libreoffice 4:25.2.2\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-12 23:15+0000\n" +"Last-Translator: Américo Monteiro \n" +"Language-Team: Portuguese <>\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 22.12.3\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "Arquitectura não suporta \"NaN passing\"" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"O LibreOffice Calc confia numa funcionalidade chamada \"NaN passing\" a qual " +"é opcional no standard IEEE 754. Contudo, a sua arquitectura (riscv64) não " +"a suporta." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Não obstante, este pacote é enviado para casos de utilização onde isto " +"não tem importância mas você deve ter atenção que o Calc pode dar-lhe " +"resultados errados, especialmente com =IFERROR() etc." diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po new file mode 100644 index 00000000000..77ab60e2023 --- /dev/null +++ b/debian/po/pt_BR.po @@ -0,0 +1,48 @@ +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# Paulo Henrique de Lima Santana (phls) , 2025 +# +msgid "" +msgstr "" +"Project-Id-Version: libreoffice_4:25.2.2~rc1-1\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: 2025-03-12 18:22-0300\n" +"Last-Translator: Paulo Henrique de Lima Santana (phls) \n" +"Language-Team: l10n portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.5\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "A arquitetura não suporta \"NaN passing\"" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" +"O LibreOffice Calc depende de um recurso chamado \"NaN passing\", que é " +"opcional no padrão IEEE 754. No entanto, sua arquitetura (riscv64) não " +"oferece suporte a ele." + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" +"Mesmo assim, este pacote é enviado para casos de uso em que isso não " +"importa, mas você deve estar ciente de que o Calc pode fornecer resultados " +"errados, especialmente com =IFERROR() etc." diff --git a/debian/po/templates.pot b/debian/po/templates.pot new file mode 100644 index 00000000000..535b22ae011 --- /dev/null +++ b/debian/po/templates.pot @@ -0,0 +1,41 @@ +# Copyright (C) 2024 Software in the Public Interest, Inc. +# This file is distributed under the same license as the libreoffice package. +# Rene Engelhard , 2024 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: libreoffice\n" +"Report-Msgid-Bugs-To: libreoffice@packages.debian.org\n" +"POT-Creation-Date: 2024-05-13 17:33+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "Architecture doesn't support \"NaN passing\"" +msgstr "" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"LibreOffice Calc relies on a feature called \"NaN passing\" which is " +"optional in the IEEE 754 standard. Your architecture (riscv64) does not " +"support it, though." +msgstr "" + +#. Type: note +#. Description +#: ../libreoffice-calc.templates:1001 +msgid "" +"This package is shipped nevertheless for use cases where this does not " +"matter but you should be aware that Calc can give you wrong results, " +"especially with =IFERROR() etc." +msgstr "" diff --git a/debian/python3-access2base.links b/debian/python3-access2base.links new file mode 100644 index 00000000000..f76ba1c90f7 --- /dev/null +++ b/debian/python3-access2base.links @@ -0,0 +1 @@ +usr/share/doc/libreoffice-common/access2base.html usr/share/doc/python3-access2base/access2base.html diff --git a/debian/python3-uno.NEWS b/debian/python3-uno.NEWS new file mode 100644 index 00000000000..e731bbcb2b7 --- /dev/null +++ b/debian/python3-uno.NEWS @@ -0,0 +1,11 @@ +libreoffice (1:3.5.2-2) unstable; urgency=low + + * The script provider for python (which was in python3-uno before) has been + split out into libreoffice-script-provider-python as it's the same in both + variants and python3-uno should contain just the module anyway. + + If you relied on python3-uno for the script provider, install the new + package in addition. + + -- Rene Engelhard Sat, 07 Apr 2012 14:30:41 +0200 + diff --git a/debian/python3-uno.lintian-overrides b/debian/python3-uno.lintian-overrides new file mode 100644 index 00000000000..41bb77ccfa2 --- /dev/null +++ b/debian/python3-uno.lintian-overrides @@ -0,0 +1,5 @@ +# "aged out" due to debhelpers changelog trimming (see #1021502) +python3-uno: debian-news-entry-has-unknown-version 1:3.5.2-2 [usr/share/doc/python3-uno/NEWS.Debian.gz:1] +# see comment in control(.in) +python3-uno: virtual-package-depends-without-real-package-depends Pre-Depends: awk +python3-uno: needlessly-depends-on-awk Pre-Depends \ No newline at end of file diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000000..09d2c4b88d7 --- /dev/null +++ b/debian/rules @@ -0,0 +1,5098 @@ +#!/usr/bin/make -f +################################################################################ +# LibreOffice source package rules file +# +# Please see debian/README for detailed documentation about the build system, and +# how to build LibreOffice. +################################################################################ +# Authors: +# Chris Halls +# Rene Engelhard +# Copyright 2002-2025 Software in the Public Interest, Inc. +# Portions Copyright 2010 Canonical Ltd. Author: Matthias Klose +# Portions Copyright 2011-2013 Canonical Ltd. Author: Bjoern Michaelsen +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . +################################################################################ + +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) + +include /usr/share/dpkg/pkg-info.mk +CURDIR ?= $(realpath $(dir $(firstword $(MAKEFILE_LIST)))/..) +BASE_VERSION:=$(shell echo $(DEB_VERSION) | cut -d: -f1):$(DEB_VERSION_UPSTREAM) +BINARY_VERSION=$(DEB_VERSION) +OOVER:=26.2 +HELP_L10N_VIRTUAL_VERSION:=$(OOVER) +ifeq "$(shell echo $(OOVER) | cut -d. -f2)" "2" +# 24.2 + .6 -> 24.8 -> OK +NEXT_OOVER=$(shell echo "$(OOVER) + .6" | bc) +else +# 24.8 + .6 = 25.4 -> wrong (doesn't take into account that the year +# has 12 months)so subtract 2 (so effectively + .4) to get back to February (25.2), +# which is supposed to be the schedule. +NEXT_OOVER=$(shell echo "$(OOVER) + .4" | bc) +endif + +ARCH_INDEP_PACKAGES := $(shell dh_listpackages -i) +ARCH_DEP_PACKAGES := $(shell dh_listpackages -a) +PACKAGES := $(ARCH_INDEP_PACKAGES) $(ARCH_DEP_PACKAGES) + +ifneq (,$(shell pwd | grep autopkgtest)) +AUTOPKGTEST_BUILD=y +$(warning Build for autopkgtest) +endif +AUTOPKGTEST_CPPUNIT_PACKAGES := $(shell dh_listpackages | grep -v help | grep -v l10n | grep -v dev-doc | grep -v "nogui$$") + +include /usr/share/dpkg/architecture.mk +include /usr/share/dpkg/vendor.mk +SHELL:=/bin/bash + +SYSTEM_GCC_VERSION = $(shell gcc --version | sed -n '/^gcc/s/.*\(..\..\)\../\1/p' | cut -d" " -f1 | cut -d. -f1) +SYSTEM_CLANG_VERSION = $(shell clang -v 2>&1 | head -n1 | awk '{ print $$4 }' | cut -d. -f1) + +PKGDIR:=debian/libreoffice +OODIRNAME=libreoffice +OODIR:=usr/lib/$(OODIRNAME) +OOSDKDIR:=$(OODIR)/sdk + +# Figure out who's building this package. +ifneq "$(DEB_VENDOR)" "Debian" +OOO_VENDOR:=The Document Foundation, $(DEB_PARENT_VENDOR) and $(DEB_VENDOR) +else +OOO_VENDOR=The Document Foundation/$(DEB_VENDOR) +endif +export OOO_VENDOR + +# debhelper +export DH_OPTIONS +export DH_ALWAYS_EXCLUDE=CVS:.svn:.bzr:.git +#export DH_VERBOSE=1 +# quilt +export QUILT_PATCHES=debian/patches +export QUILT_OPTIONS="-p1 -F0" + +SOURCE_TREE=. +STAMP_DIR=debian/stampdir +TARFILE_LOCATION=$(CURDIR)/tarballs +export TARFILE_LOCATION +USE_SOURCE_TARBALLS=y +USE_GIT_TARBALLS=n +ifeq "$(USE_GIT_TARBALLS)" "y" +GIT_BASEURL:=git://anongit.freedesktop.org/libreoffice +lo_sources_ver=$(shell grep AC_INIT $(SOURCE_TREE)/configure.ac | grep documentfoundation | cut -d, -f2 | sed -e 's,\[,,' -e 's,\],,') +# NOT in proper libreoffice-3-6 branch +# use ./g checkout -b tag-libreoffice-3.6.2.1 libreoffice-3.6.2.1 +GIT_TAG=libreoffice-$(lo_sources_ver) +GIT_BRANCH=libreoffice-26-2-4 +endif +ifeq "$(USE_SOURCE_TARBALLS)" "y" +lo_sources_ver=$(shell cat $(CURDIR)/sources.ver | cut -d= -f2) +endif + +######### +# Default package configuration +# +# FIXME: Should riscv64 be here at all given it doesn't support NaN payload propagation which LO (at least Calc) needs? +# see https://bugs.documentfoundation.org/show_bug.cgi?id=152943 and https://lists.debian.org/debian-riscv/2024/01/msg00018.html +OOO_ARCHS = alpha amd64 arm64 armel armhf hppa i386 ia64 loong64 m68k mips mipsel mips64 mips64el powerpc ppc64 ppc64el riscv64 s390x sparc sparc64 +DEBIAN_MAIN_ARCHITECTURES = amd64 arm64 armhf i386 loong64 ppc64el riscv64 s390x +PATCHSET=$(DEB_VENDOR) +BUILD_DEPS=\ + autoconf,\ + automake,\ + bc,\ + bison,\ + bzip2,\ + flex, \ + gperf,\ + libfreetype-dev,\ + libfontconfig-dev,\ + pkgconf,\ + po-debconf,\ + unzip,\ + xsltproc,\ + zip,\ + zlib1g-dev\ + +BUILD_DEPS_INDEP += rdfind, symlinks + +# These are components which can be built from internal copies, or used from the +# distribution. See configure --help for valid values (--with-system-). +SYSTEM_STUFF = dicts + +ENABLE_GUI=y + +ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) +ENABLE_PYTHON=y +ifeq "$(ENABLE_PYTHON)" "y" + CONFIGURE_FLAGS += --enable-python=system + ENABLE_SCRIPT_PROVIDER_PYTHON=y + PACKAGE_LIBRELOGO=y +endif +# THIS IS ONLY FOR TESTING. When building against a specified pythonX.Y +# this will work inside OOo but *not* from outside OOo unless the user +# uses pythonX.Y directly (and the dh_pycentral-created dependencies allow +# also the non-working default python then) - see e.g. #587402. Also +# note we are NOT working with python < 2.6 anymore! +PYTHON_VERSION=default +ifeq "$(PYTHON_VERSION)" "default" + PYTHON=python3 + export PYTHON +else + PYTHON=python$(PYTHON_VERSION) + PYTHON_CFLAGS=$(shell pkg-config --cflags python-$(PYTHON_VERSION)) + PYTHON_LIBS=$(shell pkg-config --libs python-$(PYTHON_VERSION)) + # overriding this via PYTHON= (or export) doesn't work, see https://bugs.documentfoundation.org/show_bug.cgi?id=169163 + export PYTHON PYTHON_VERSION PYTHON_CFLAGS PYTHON_LIBS +endif +endif +BUILD_ONLY_EN_US=n +ifeq ($(filter nojava,$(DEB_BUILD_PROFILES)),) + include /usr/share/java/java_defaults.mk + ifneq ($(DEB_HOST_ARCH),$(filter-out $(DEB_HOST_ARCH),$(java_unsupported_architectures))) + ENABLE_JAVA=y + endif + ifeq "$(ENABLE_JAVA)" "y" + JDK=default + ifneq "$(JDK)" "default" + JAVA_MAINVER=17 + endif + endif +else + ENABLE_JAVA=n +endif +#JAVAHELPER_MIN_VERSION= +SYSTEM_STUFF += hunspell +SYSTEM_STUFF += altlinuxhyph +SYSTEM_STUFF += boost +BOOST_VERSION=default +# libmdds-dev depends on libboost-dev, which will be removed +# when you install a non-default libboostX.Y-dev +ifeq "$(BOOST_VERSION)" "default" +SYSTEM_STUFF += mdds +endif +USE_EXTERNAL_CXXLIBS=y +SYSTEM_STUFF += mythes +SYSTEM_STUFF += icu +SYSTEM_STUFF += librevenge +SYSTEM_STUFF += libwpd libwpg libwps +SYSTEM_STUFF += libvisio +SYSTEM_STUFF += libcdr +SYSTEM_STUFF += libmspub +SYSTEM_STUFF += libmwaw +SYSTEM_STUFF += libodfgen +SYSTEM_STUFF += libepubgen +SYSTEM_STUFF += libetonyek +SYSTEM_STUFF += libfreehand +# this is libe-book, NOT evolutions libebook (which is +# dlopen()'ed anyway and whose headers we need from the +# system anyways if enabled +SYSTEM_STUFF += libebook +SYSTEM_STUFF += libabw +SYSTEM_STUFF += libpagemaker +SYSTEM_STUFF += libzmf +SYSTEM_STUFF += libstaroffice +SYSTEM_STUFF += libqxp +ENABLE_ZXING=y +SYSTEM_STUFF += zxing +BUILD_CAIROCANVAS=y +SYSTEM_STUFF += cairo +ENABLE_GPGMEPP=y +ifeq "$(ENABLE_GUI)" "y" +BUILD_PLASMA=y +# let's assume we won't ship two plasmas parallel.. +PLASMA_VERSION=6 +PLASMA_KF_VERSION=$(PLASMA_VERSION) +PLASMA_ARCHITECTURE=all +ENABLE_QT5=n +#QT5_MINVER= +ENABLE_KF5=n +ENABLE_QT6=y +ifneq ($(DEB_HOST_ARCH),$(findstring $(DEB_HOST_ARCH),m68k)) +ENABLE_QT6_MULTIMEDIA=y +endif +ENABLE_KF6=y +endif +# go sure. if we want plasma, we want kfX, too and if we want that +# one we want qtX, too. +ifeq "$(BUILD_PLASMA)" "y" + ifeq "$(PLASMA_VERSION)" "5" + ENABLE_KF5=y + endif + ifeq "$(PLASMA_VERSION)" "6" + ENABLE_KF6=y + endif +endif +# KF5 depends on Qt5 +ifeq "$(ENABLE_KF5)" "y" + ENABLE_QT5=y + KF5_QT5_DEPENDS := libreoffice-qt5 (= $${binary:Version}) +endif +# KF6 depends on Qt6 +ifeq "$(ENABLE_KF6)" "y" + ENABLE_QT6=y + KF6_QT6_DEPENDS := libreoffice-qt6 (= $${binary:Version}) +endif +# https://www.debian.org/doc/debian-policy/ says this is not defined and must +# be ignored, but dh_strip mentions (and honours) it, so... +ifneq (noautodbgsym,$(findstring noautodbgsym,$(DEB_BUILD_OPTIONS))) +BUILD_DBGSYM_PACKAGES=y +ifeq "$(DEB_HOST_ARCH)" "amd64" +USE_DWZ=n +DWZ_ARGS:=-L 100000000 +endif +endif +SYSTEM_STUFF += xmlsec +SYSTEM_STUFF += zxcvbn +SYSTEM_STUFF += md4c +SYSTEM_STUFF += fast-float + +ENABLE_EMBINDTEST_UNO=y + +ifeq ($(filter noinsttest,$(DEB_BUILD_PROFILES)),) + # this changes the packages built/contents of packages (-subsequentcheckbase) + # This is not exactly allowed in https://wiki.debian.org/BuildProfileSpec#Registered_profile_names + # but it doesn't have real practical difference, does it? + ifneq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + BUILD_TEST_PACKAGES=y + endif +endif + +ifneq ($(MAKECMDGOALS),binary-indep) +ENABLE_SYMBOLS=y +SMALL_SYMBOLS=y +endif +ifeq ($(MAKECMDGOALS),binary-indep) +# no need to do a double build... +BUILD_NOGUI_PACKAGES=n +# go sure + ifeq "$(BUILD_TEST_PACKAGES)" "y" + ENABLE_JUNIT4=y + endif +endif + +ifeq "$(ENABLE_JAVA)" "y" + SYSTEM_STUFF += beanshell + SYSTEM_STUFF += rhino + SYSTEM_STUFF += hsqldb + SYSTEM_STUFF += java-websocket +endif +ENABLE_LPSOLVE=y +# disabled. system-lpsolve somehow now causes +#scsolverobj.cxx:119:Assertion +#Test name: sc_apitest::ScSolverSettingsObj::testXSolverSettings +#equality assertion failed +#- Expected: 6981 +#- Actual : 6987 +# +#Failures !!! +#Run: 1 Failure total: 1 Failures: 1 Errors: 0 +#SYSTEM_STUFF += lpsolve +#USE_SHARED_LPSOLVE=y +# This is strictly-speaking only needed on ppc64el due to the long double transition, see +# https://wiki.debian.org/ToolChain/IEEELongDouble and +# https://fedoraproject.org/wiki/Changes/PPC64LE_Float128_Transition where it was rebuilt +# with the new ABI at that version +#ifneq (y,$(TRIXIE_BACKPORT)) +# LPSOLVE_MIN_VERSION= (>= 5.5.2.14-4.1) +#endif +ifeq (,$(filter lpsolve, $(SYSTEM_STUFF))) + SYSTEM_STUFF += colamd +endif +ENABLE_COINMP=y +SYSTEM_STUFF += coinmp +USE_DBUS=y +ifeq "$(USE_DBUS)" "y" + ifeq (,$(findstring linux,$(DEB_HOST_ARCH_OS))) + ENABLE_BLUETOOTH=n + else + ENABLE_BLUETOOTH=y + SYSTEM_STUFF += bluez + endif + ENABLE_PACKAGEKIT=n +endif +ENABLE_AVAHI=y +ifeq "$(ENABLE_GUI)" "y" +USE_GSTREAMER=y +endif +ENABLE_CURL=y +ENABLE_WEBDAV=y +ifeq "$(ENABLE_WEBDAV)" "y" + ENABLE_CURL=y +endif +ifeq "$(ENABLE_CURL)" "y" +SYSTEM_STUFF += curl +endif +SYSTEM_STUFF += redland +PACKAGE_SDK=y +ifneq ($(filter nodoc,$(DEB_BUILD_PROFILES)),) +PACKAGE_SDK_DOCS=n +else +PACKAGE_SDK_DOCS=y +endif +PACKAGE_LOKIT=y +# will not work, uses schema/ stripped in the tarballs +ifeq "$(USE_SOURCE_TARBALLS)" "y" +ENABLE_EXPORT_VALIDATION_TESTS=n +endif +#JUNIT_MIN_VER= +PARALLEL_BUILD=y +ENABLE_LDAP=y +SYSTEM_STUFF += openldap +SYSTEM_STUFF += epoxy +ifeq "$(ENABLE_JAVA)" "y" + ENABLE_REPORTBUILDER=y + SYSTEM_STUFF += jfreereport + ENABLE_MEDIAWIKI=y + ENABLE_SCRIPT_PROVIDER_BSH=y + ENABLE_SCRIPT_PROVIDER_JS=y + ENABLE_NLPSOLVER=y +else + ENABLE_REPORTBUILDER=n + ENABLE_MEDIAWIKI=n + ENABLE_SCRIPT_PROVIDER_BSH=n + ENABLE_SCRIPT_PROVIDER_JS=n + ENABLE_NLPSOLVER=n +endif +ENABLE_SDBC_POSTGRESQL=y +ifeq "$(ENABLE_GUI)" "y" +BUILD_GTK3=y + # introspection needs GTK3 + ifeq "$(BUILD_GTK3)" "y" + ifeq ($(filter nogir,$(DEB_BUILD_PROFILES)),) + ENABLE_INTROSPECTION=y + endif + endif +endif +BUILD_GTK4=y +ENABLE_EVO2=y +ENABLE_GIO=y +ENABLE_DCONF=y +ENABLE_RANDR=y +PACKAGE_BASE=y +SYSTEM_STUFF += graphite +SYSTEM_STUFF += harfbuzz +SYSTEM_STUFF += libexttextcat +SYSTEM_STUFF += cppunit +SYSTEM_STUFF += dragonbox +SYSTEM_STUFF += libfixmath +DEFAULT_IMAGE=colibre +IMAGES:=$(DEFAULT_IMAGE) colibre_dark colibre_svg colibre_dark_svg sifr sifr_svg sifr_dark sifr_dark_svg breeze breeze_dark breeze_dark_svg breeze_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sukapura sukapura_svg sukapura_dark sukapura_dark_svg +CONFIGURE_FLAGS_INDEP += --with-theme="$(IMAGES)" +ENABLE_MARIADB=y +ifeq "$(ENABLE_MARIADB)" "y" +# FIXME: the mysql test doesn't get really tested since it is only ran/built +# with CONNECTIVITY_TEST_MYSQL_DRIVER set - and doesn't build on 32bit... The +# test is run in autopkgtest on OOO_CHECK_FATAL_ARCHS (aka 64bit archs!) only for +# now anyway so let's just hack around here for now and disable the build of it +# alltogether when not used and just set CONNECTIVITY_TEST_MYSQL_DRIVER on those +# OOO_CHECK_FATAL_ARCHS + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_CHECK_FATAL_ARCHS))) +export CONNECTIVITY_TEST_MYSQL_DRIVER=dummy + endif +endif + MYSQL_FLAVOUR=mariadb +# set this also to y for system-mysql.. +SYSTEM_STUFF += mariadb +SYSTEM_STUFF += postgresql +DICT_DIR=/usr/share/hunspell +HYPH_DIR=/usr/share/hyphen +THES_DIR=/usr/share/mythes +ENABLE_LIBCMIS=y +ifeq "$(ENABLE_LIBCMIS)" "y" +SYSTEM_STUFF += libcmis +endif +SYSTEM_STUFF += jpeg +SYSTEM_STUFF += libxml +SYSTEM_STUFF += expat +SYSTEM_STUFF += odbc +SYSTEM_STUFF += sane +ENABLE_PDFIMPORT=y +ENABLE_POPPLER=y +SYSTEM_STUFF += poppler +ENABLE_PDFIUM=y +PACKAGE_GEN=y +ifeq "$(PACKAGE_GEN)" "y" + # keep packaging gen (s390x is a release arch...), just disable skia. In contrast for + # alpha and ia64 (ports-only) where skia also is disabled we set PACKAGE_GEN=n later in + # the architecture specific settings + ifneq (big,$(DEB_HOST_ARCH_ENDIAN)) + ENABLE_SKIA=y + endif +else + ENABLE_SKIA=n +endif +SYSTEM_STUFF += libpng +ENABLE_NSS=y +ifeq "$(ENABLE_NSS)" "y" +SYSTEM_STUFF += nss +endif +ENABLE_HELP=y +ifeq "$(ENABLE_HELP)" "y" + ENABLE_HTML_HELP=y + ENABLE_XMLHELP=y + ifeq "$(ENABLE_HTML_HELP)" "y" + HELP_DEPENDS := libreoffice-help-common (= $${binary:Version}), + HELP_RECOMMENDS := firefox-esr | epiphany-browser | konqueror | chromium | firefox + HELP_COMMON_DEPENDS := node-normalize.css + BUILD_DEPS_INDEP += , node-normalize.css + HELP_COMMON_DEPENDS += , node-prismjs + BUILD_DEPS_INDEP += , node-prismjs + else + HELP_DEPENDS := libreoffice-writer + DEBHELPER_OPTIONS += -Nlibreoffice-help-common + endif + ifeq "$(ENABLE_XMLHELP)" "y" + SYSTEM_STUFF += clucene + endif +endif +SYSTEM_STUFF += lcms2 +SYSTEM_STUFF += liblangtag +SYSTEM_STUFF += orcus +# enable mergelibs only for 64bit archs +ifeq "$(DEB_HOST_ARCH_BITS)" "64" + ENABLE_MERGELIBS=y +endif +ifeq "$(ENABLE_MERGELIBS)" "y" + ENABLE_LTO=y +else + ENABLE_LTO=n +endif +USE_OPENCL=y +ENABLE_FIREBIRD=y +# file format changes. see https://bugs.documentfoundation.org/show_bug.cgi?id=168143 +# Go sure and just allow matching firebird per default. +# (just now know until internal firebird is >= 4.0 so keep compatibility with older Debian +# releases...) +EXPECTED_FIREBIRD_VERSION=$(shell grep FIREBIRD_TARBALL download.lst | awk '{ print $$3 }' | cut -d- -f2 | cut -d. -f1,2) +SYSTEM_FIREBIRD_VERSION=$(shell fb_config --version | cut -d. -f1,2) +ifneq "$(SYSTEM_FIREBIRD_VERSION)" "$(EXPECTED_FIREBIRD_VERSION)" +#$(error firebird version does not match) + # only uncomment this )and comment the above) if you know what you do or for testing. + # see above + # You also want to disable strict-firebird-api-version-check.diff in debian/patches if + # you try this... + FIREBIRD_VERSION := $(SYSTEM_FIREBIRD_VERSION) +else + FIREBIRD_VERSION := $(EXPECTED_FIREBIRD_VESION) +endif +ifeq "$(ENABLE_FIREBIRD)" "y" + SYSTEM_STUFF += firebird + ifeq (,$(filter firebird, $(SYSTEM_STUFF))) + SYSTEM_STUFF += libatomic-ops + SYSTEM_STUFF += libtommath + endif +endif +ENABLE_EOT=y +ifeq "$(ENABLE_EOT)" "y" +SYSTEM_STUFF += libeot +endif +SYSTEM_STUFF += glm +BUILD_PPC64EL=y +BUILD_ARM64=y +SYSTEM_STUFF += gpgmepp +INSTALL_APPARMOR_PROFILES=y +ENABLE_APPARMOR_PROFILES=y +ifneq "$(AUTOPKGTEST_BUILD)" "y" + CHECK_APPARMOR_PROFILES=true +endif +SYSTEM_STUFF += libnumbertext +SYSTEM_STUFF += box2d +SYSTEM_STUFF += libwebp +SYSTEM_STUFF += libtiff +SYSTEM_STUFF += frozen +SYSTEM_STUFF += argon2 +# we don't have it in the archive. The "new" .net dlls are incomplete +# yet anyway. and what about cli-common-dev and the dh_cli* tools? Will they +# even work here? +ifeq ($(filter nocil,$(DEB_BUILD_PROFILES)),) +ENABLE_DOTNET=n +endif +ENABLE_CUPS=y +ENABLE_CPDB=y +SYSTEM_STUFF += zstd + +# override stuff for indep builds to save build dependencies +ifeq ($(MAKECMDGOALS),binary-indep) +ENABLE_EVOAB=n +BUILD_GTK3=n +ENABLE_INTROSPECTION=n +ENABLE_GIO=n +BUILD_GTK4=n +ENABLE_QT5=n +ENABLE_QT6=n +# libgpgmepp-dev depends on Qt, too, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863149 +ENABLE_GPGMEPP=n +ENABLE_KF5=n +ENABLE_KF6=n +ifneq "$(PLASMA_ARCHITECTURE)" "all" +BUILD_PLASMA=n +endif +ENABLE_MARIADB=n +ENABLE_FIREBIRD=n +ENABLE_SDBC_POSTGRESQL=n +ENABLE_SKIA=n +ENABLE_COINMP=n +ENABLE_LPSOLVE=n +ENABLE_LDAP=n +ENABLE_PDFIUM=n +USE_DBUS=n +ENABLE_AVAHI=n +ENABLE_RUST=n +endif + +# Default flags to pass to configure +CONFIGURE_FLAGS+= \ + --with-vendor='$(OOO_VENDOR)' \ + --with-extra-buildid='$(DEB_VENDOR) package version: $(BINARY_VERSION)' \ + --prefix=/usr --mandir=/usr/share/man \ + --docdir=/usr/share/doc/libreoffice \ + --libdir=/usr/lib \ + --bindir=/usr/bin \ + --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ + --disable-online-update \ + --disable-fetch-external \ + --without-fonts \ + --without-myspell-dicts \ + --with-branding=$(CURDIR)/debian/branding \ + --without-coredumpctl + +# don't rebuild the font anywhere, we just really need it in indep builds. +# please put https://dev-www.libreoffice.org/extern/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf +# into $(SOURCE_TREE)/tarballs if you don't rebuild the font. +BUILD_DEPS_INDEP += , fontforge-nox | fontforge +ifeq ($(filter pkg.libreoffice.noopensymbolbuild,$(DEB_BUILD_PROFILES)),) +ENABLE_OPENSYMBOL_BUILD=y +endif + +# we get a fonts-opensymbol build-dep -b builds (_ARCH also affects -b), too anyway but it's still lesser +# dependencies than fontforge-nox | fontforge... +# But this can get a problem for bootstrapping if we ever needed a newer fonts-opensymbol for +# tests to pass... +# Allow building it nevertheless if wanted +BUILD_DEPS_ARCH += , fonts-opensymbol +ifneq ($(MAKECMDGOALS),build-arch) +ifneq ($(filter pkg.libreoffice.opensymbolbuild,$(DEB_BUILD_PROFILES)),) +ENABLE_OPENSYMBOL_BUILD=y +endif +ifeq "$(ENABLE_OPENSYMBOL_BUILD)" "y" +CONFIGURE_FLAGS_INDEP += --enable-build-opensymbol +endif +endif + +export LANG=C.UTF-8 + +ifeq "$(ENABLE_GUI)" "y" +BUILD_DEPS += ,\ + libgl-dev,\ + libice-dev,\ + libsm-dev,\ + libx11-dev,\ + libx11-xcb-dev, \ + libxaw7-dev,\ + libxext-dev,\ + libxinerama-dev,\ + libxkbfile-dev,\ + libxrender-dev,\ + libxt-dev,\ + libxtst-dev,\ + x11proto-render-dev +endif + +ifeq "$(ENABLE_HELP)" "y" +CONFIGURE_FLAGS_INDEP+= --with-help + ifeq "$(ENABLE_HTML_HELP)" "y" + CONFIGURE_FLAGS_INDEP+= --with-help=html + endif + ifneq "$(ENABLE_XMLHELP)" "y" + CONFIGURE_FLAGS += --disable-xmlhelp + endif +else + CONFIGURE_FLAGS += --without-helppack-integration --without-help +endif + + +ifeq "$(shell echo $(DEB_VERSION_UPSTREAM) | grep -E '(alpha|beta)'; echo $$?)" "1" +CONFIGURE_FLAGS += --enable-release-build +RELEASE_BUILD := y +endif + +ifeq "$(DEB_DISTRIBUTION)" "UNRELEASED" +BUGS=mailto:debian-openoffice@lists.debian.org +endif + +ifneq (terse,$(findstring terse,$(DEB_BUILD_OPTIONS))) +export verbose=t +CARGO_FLAGS += --verbose +endif + +############# +# Architecture-specific changes + +# helper to generate no_archs macros (pass name of source macro) +define gen_no_archs + _no_arch_macro = $(subst OOO_,OOO_NO_,$1) + _no_arch_tmp_$1 = $$(foreach _a,$$(filter-out $$(call $1),$(OOO_ARCHS)),!$$(_a)) + $$(_no_arch_macro) = $$(if $$(_no_arch_tmp_$1),$$(_empty) [$$(_no_arch_tmp_$1)]) +endef + +PLATFORMID := $(shell grep PLATFORMID debian/vars.$(DEB_HOST_ARCH) | cut -d"=" -f2) +RTL_OS := $(shell grep RTL_OS debian/vars.$(DEB_HOST_ARCH) | cut -d"=" -f2) +RTL_ARCH := $(shell grep RTL_ARCH debian/vars.$(DEB_HOST_ARCH) | cut -d"=" -f2) + +OOO_64BIT_ARCHS = $(filter alpha amd64 arm64 ia64 loong64 mips64 mips64el ppc64 ppc64el riscv64 s390x sparc64, $(OOO_ARCHS)) +$(eval $(call gen_no_archs,OOO_64BIT_ARCHS)) +OOO_32BIT_ARCHS = $(filter-out $(OOO_64BIT_ARCHS),$(OOO_ARCHS)) +$(eval $(call gen_no_archs,OOO_32BIT_ARCHS)) +OOO_BE_ARCHS = $(filter hppa m68k mips mips64 powerpc ppc64 s390 s390x sparc sparc64,$(OOO_ARCHS)) +$(eval $(call gen_no_archs,OOO_BE_ARCHS)) +OOO_LE_ARCHS = $(filter-out $(OOO_BE_ARCHS),$(OOO_ARCHS)) +$(eval $(call gen_no_archs,OOO_LE_ARCHS)) +OOO_CLANG_SUPPORTED_ARCHS := $(filter-out alpha ia64 mipsel mips64el,$(OOO_LE_ARCHS)) +$(eval $(call gen_no_archs,OOO_CLANG_SUPPORTED_ARCHS)) + +# supported upstream (upstream does aarch64 flatpak builds) +OOO_CHECK_ARCHS := amd64 arm64 +$(eval $(call gen_no_archs,OOO_CHECK_ARCHS)) +OOO_JUNIT_ARCHS := amd64 arm64 +$(eval $(call gen_no_archs,OOO_JUNIT_ARCHS)) + +OOO_CHECK_FATAL_ARCHS := amd64 arm64 + +## original idea was without armhf, but since --disable-cve-tests for 32bit archs (see below) +## this now also passes. and the autopkgtests also pass (also the junit ones). +## So let's include armhf in the above +#OOO_CHECK_ARCHS += armhf +##OOO_JUNIT_ARCHS += armhf +#OOO_CHECK_FATAL_ARCHS += armhf + +# if bridgetest and smoketest fail this is surely not working in a way +# we would want in the archive +OOO_SMOKETEST_FATAL_ARCHS := $(OOO_ARCHS) + +# archs where the archive/ci runs autopkgtests +OOO_AUTOPKGTEST_ARCHS := $(OOO_CHECK_ARCHS) i386 loong64 ppc64el riscv64 s390x + +ifeq (alpha,$(findstring $(DEB_HOST_ARCH),$(OOO_ARCHS))) +PACKAGE_GEN=n +endif +ifeq (ia64,$(findstring $(DEB_HOST_ARCH),$(OOO_ARCHS))) +PACKAGE_GEN=n +endif + +BUILD_TESTS=y +ifeq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + BUILD_TESTS=n +endif + +ifeq "$(DEB_HOST_ARCH_BITS)" "32" + # consistently crash in vcl_filters_test when + # Testing load file:///<>//vcl/qa/cppunit/graphicfilter/data/tiff/fail/CVE-2017-9936-1.tiff: + # CVE-2017-9936 is a memory leak and even a expected failure. + # And we are not supposed to test for others' packages CVEs anyway, especially since this is fixed in libtiff + # in 4.0.8-3(see https://security-tracker.debian.org/tracker/CVE-2017-9936) so ages ago + CONFIGURE_FLAGS += --disable-cve-tests +endif + +RUN_MAKE_CHECK=n +ifneq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_CHECK_ARCHS))) + RUN_MAKE_CHECK=y + endif + ifeq "$(RUN_MAKE_CHECK)" "y" + ifeq "$(ENABLE_JAVA)" "y" + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_JUNIT_ARCHS))) + ENABLE_JUNIT4=y + endif + endif + # run the atspi tests + ifeq "$(BUILD_GTK3)" "y" + ENABLE_ATSPI_TESTS=y + endif + endif + IGNORE_MAKE_FAILURES=- + TEST_TIMEOUT := timeout --foreground --preserve-status -v -k 250m 200m + ifeq "$(RUN_MAKE_CHECK)" "y" + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_CHECK_FATAL_ARCHS))) + IGNORE_MAKE_FAILURES:= + TEST_TIMEOUT:= + endif + else + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_SMOKETEST_FATAL_ARCHS))) + IGNORE_MAKE_FAILURES:= + TEST_TIMEOUT:= + endif + endif +endif +ifeq "$(RUN_MAKE_CHECK)" "y" + BUILD_TESTS=y +else + BUILD_TESTS=n +endif + +# Java... +# upstream says --source=1.8 / --target=1.8 so 1.8 is fine in runtime +JAVA_RUNTIME_BASELINE=8 +JAVA_BRIDGE_BROKEN_ARCHS:=ppc64el s390x armhf +# like this it's more consistent (e.g. with armhf above); it should work, though... +JAVA_BRIDGE_BROKEN_ARCHS += armel +ifeq "$(JDK)" "default" +OOO_JAVA_ARCHS = $(filter-out $(JAVA_BRIDGE_BROKEN_ARCHS),$(filter $(OOO_ARCHS),$(java$(JAVA_RUNTIME_BASELINE)_architectures))) +else +OOO_JAVA_ARCHS = $(OOO_ARCHS) +endif +$(eval $(call gen_no_archs,OOO_JAVA_ARCHS)) + +# CLI +OOO_CLI_ARCHS := amd64 arm64 +$(eval $(call gen_no_archs,OOO_CLI_ARCHS)) + +# Rust +# this is where rust would be available +OOO_RUST_ARCHS := amd64 arm64 armel armhf i386 loong64 mips64el ppc64 ppc64el riscv64 s390x sparc64 +$(eval $(call gen_no_archs,OOO_RUST_ARCHS)) +#OOO_YRS_ARCHS := $(OOO_RUST_ARCHS)) +#$(eval $(call gen_no_archs,OOO_YRS_ARCHS)) +# armhf/powerpc got cc1plus: out of memory allocating 67108852 bytes after a total of 69656576 bytes +# Let's disable it on all 32bit architectures +# ppc64(el): doesn't work, see https://lists.debian.org/debian-powerpc/2025/12/msg00002.html ff. +OOO_RUST_UNO_ARCHS := $(filter-out $(OOO_32BIT_ARCHS) ppc64 ppc64el,$(OOO_RUST_ARCHS)) +# i386 worked even though 32bit so keep that for now +OOO_RUST_UNO_ARCHS += i386 +$(eval $(call gen_no_archs,OOO_RUST_UNO_ARCHS)) + +OOO_ARCH_DEP_EXTENSIONS_ARCHS := $(OOO_ARCHS) +OOO_EXTENSIONS_ARCHS := $(OOO_ARCH_DEP_EXTENSIONS_ARCHS) + +OOO_BASE_ARCHS := $(OOO_ARCHS) +$(eval $(call gen_no_archs,OOO_BASE_ARCHS)) +OOO_REPORTBUILDER_ARCHS := $(OOO_JAVA_ARCHS) +$(eval $(call gen_no_archs,OOO_REPORTBUILDER_ARCHS)) +OOO_FIREBIRD_ARCHS := $(filter-out m68k,$(OOO_BASE_ARCHS)) +$(eval $(call gen_no_archs,OOO_FIREBIRD_ARCHS)) +OOO_NOGUI_ARCHS := $(filter amd64 i386 arm64 armhf loong64 s390x ppc64 ppc64el,$(OOO_ARCHS)) +$(eval $(call gen_no_archs,OOO_NOGUI_ARCHS)) +OOO_PDFIUM_ARCHS := $(OOO_ARCHS) +$(eval $(call gen_no_archs,OOO_PDFIUM_ARCHS)) + +ifneq (,$(filter $(DEB_HOST_ARCH),$(OOO_NO_BASE_ARCHS))) + ifneq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_BASE_ARCHS))) + PACKAGE_BASE=n + ENABLE_SDBC_POSTGRESQL=n + ENABLE_EVO2=n + ENABLE_REPORTBUILDER=n + DEBHELPER_OPTIONS += -Nlibreoffice-base libreoffice-base-core -Nlibreoffice-base-drivers + DEBHELPER_OPTIONS += -Nlibreoffice-evolution + DEBHELPER_OPTIONS += -Nlibreoffice-sdbc-postgresql -Nlibreoffice-sdbc-mysql + DEBHELPER_OPTIONS += -Nlibreoffice-sdbc-hsqldb -Nlibreoffice-sdbc-firebird + DEBHELPER_OPTIONS += -Nlibreoffice-report-builder-bin -Nlibreoffice-report-builder + DEBHELPER_OPTIONS += -Npython3-access2base +# CONFIGURE_FLAGS += --disable-database-connectivity + endif +endif + +ifeq (,$(filter $(DEB_HOST_ARCH),$(OOO_EXTENSIONS_ARCHS))) + ENABLE_MEDIAWIKI=n + ENABLE_NLPSOLVER=n + DEBHELPER_OPTIONS += -Nlibreoffice-wiki-publisher -Nlibreoffice-nlpsolver + CONFIGURE_FLAGS += --disable-extension-integration --disable-extensions +endif + +ifeq (,$(filter $(DEB_HOST_ARCH),$(OOO_JAVA_ARCHS))) + ENABLE_JAVA=n + ENABLE_REPORTBUILDER=n + ENABLE_MEDIAWIKI=n + ENABLE_NLPSOLVER=n +endif + +ifneq "$(BUILD_TEST_PACKAGES)" "y" + DEBHELPER_OPTIONS += -Nlibreoffice-subsequentcheckbase -Nlibreoffice-smoketest-data -Nlibreoffice-rust-uno-example +else + BUILD_DEPS_INDEP += , junit4 $(JUNIT_MIN_VER) +endif + +ifeq "$(ENABLE_GUI)" "y" + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_NOGUI_ARCHS))) + BUILD_NOGUI_PACKAGES=y + endif +else +CONFIGURE_FLAGS += --disable-gui +DEBHELPER_OPTIONS += -Nlibreoffice-core -Nlibreoffice-calc -Nlibreoffice-writer -Nlibreoffice-draw -Nlibreoffice-report-builder-bin -Nlibreoffice-base -Nlibreoffice-impress -Nlibreoffice-math +endif +ifneq "$(BUILD_NOGUI_PACKAGES)" "y" +DEBHELPER_OPTIONS += -Nlibreoffice-core-nogui -Nlibreoffice-calc-nogui -Nlibreoffice-writer-nogui -Nlibreoffice-draw-nogui -Nlibreoffice-report-builder-bin-nogui -Nlibreoffice-base-nogui -Nlibreoffice-impress-nogui -Nlibreoffice-math-nogui +endif + +# this assumes autopkgtest -B. Without -B it tries to use the built packages +# which would break (nogui being empty, needed l10ns not being there) +ifeq "$(AUTOPKGTEST_BUILD)" "y" +# save build time for languages we do not exactly need. +BUILD_ONLY_EN_US=y +# as above (for binary-indep), no need to do two builds here... +# needs to be here since there is arch-specific rules before +BUILD_NOGUI_PACKAGES=n +# go sure +BUILD_TESTS=y +BUILD_TEST_PACKAGES=y +ENABLE_JUNIT4=y +endif + +############# +# Distro-specific overrides + +# Debian Trixie +ifeq "$(DEB_DISTRIBUTION)" "trixie-backports" + BUGS=mailto:debian-backports@lists.debian.org + TRIXIE_BACKPORT=y + # dependencies not there and no sense to backport getrandom/fastrand changes *and* + # completely new rust packages. Internal is no senseful alternative here (320M + # cargo dir...) + ENABLE_YRS=n +endif + +# for t64 +BUILD_DEPS += , dpkg-dev (>= 1.22.5) [$(filter-out i386,$(OOO_32BIT_ARCHS))] + +CONFIGURE_FLAGS += $(foreach i, $(SYSTEM_STUFF),--with-system-$(i)) + +CC_PREFIX:=$(shell gcc -dumpmachine)- + +# generally use clang +USE_CLANG=n +# allow clang for skia? +ALLOW_CLANG=y + +CLANG_VERSION=default + +ifneq "$(shell echo $(USE_CLANG)$(ALLOW_CLANG) | grep y)" "" + # /usr/bin/ld: /usr/lib/llvm-11/bin/../lib/LLVMgold.so: error loading plugin: /usr/lib/llvm-11/bin/../lib/LLVMgold.so: cannot open shared object file: No such file or directory + # for mips64el and riscv64 that doesn't exist so disable LTO there... + ifeq "$(ENABLE_LTO)" "y" + ifeq "$(DEB_HOST_ARCH)" "mips64el" + ENABLE_LTO=n + endif + # we apparently also need --disable-split-debug (see below) since according to configure.ac both are + # "Inherently incompatible, since no debug info is created while compiling, GCC complains." + # so make it explicit + ifeq "$(DEB_HOST_ARCH)" "riscv64" + ENABLE_LTO=n + endif + # probably... + ifeq "$(DEB_HOST_ARCH)" "loong64" + ENABLE_LTO=n + endif + # since the llvm-defaults packages pointing to llvm 13(?) it apparently doesn't + # automatically pull in llvm-xx-linker-tools anymore which contains the needed LLVMgold.so + # (see above). + # So build-depend on llvm, too. + # We shouldn't depend on llvm-xx-linker-tools since this probably should be + # version-agnostic when the default changes (unless explicitely specified of course). + ifeq "$(USE_CLANG)" "y" + ifeq "$(CLANG_VERSION)" "default" + BUILD_DEPS += , llvm + else + BUILD_DEPS += , llvm-$(CLANG_VERSION)-linker-tools + endif + else + ifeq "$(ALLOW_CLANG)" "y" + ifeq "$(CLANG_VERSION)" "default" + BUILD_DEPS_ARCH += , llvm$(OOO_NO_CLANG_SUPPORTED_ARCHS) + else + BUILD_DEPS_ARCH += , llvm-$(CLANG_VERSION)-linker-tools$(OOO_NO_CLANG_SUPPORTED_ARCHS) + endif + endif + endif + endif +endif +ifeq "$(USE_DWZ)" "y" + # dwz errors out with + # dwz: debian/libreoffice-core/usr/lib/libreoffice/program/libskialo.so: Unknown debugging section .debug_addr + # since clang 14 + ifeq "$(USE_CLANG)" "y" + USE_DWZ := n + endif + ifeq "$(ENABLE_SKIA)" "y" + ifneq "$(shell echo $(ALLOW_CLANG) | grep y)" "" + ifeq "$(shell dpkg --compare-versions $(SYSTEM_CLANG_VERSION) ge 14 && echo true)" "true" + DH_DWZ_ARGS += -Xskia + endif + endif + endif +endif + +ifeq "$(USE_CLANG)" "y" + ENABLE_COMPILER_PLUGINS=n +endif + +# bridgetest fails when built with gcc 13, works with 12 +# or works with clang, so instead of build-depending on an obsolete +# gcc we take this route +ifeq "$(DEB_HOST_ARCH)" "i386" + USE_CLANG=y +endif + BUILD_DEPS += , clang [i386] +ifneq "$(USE_CLANG)" "y" + ifneq "$(GCC_VERSION)" "" + ifneq "$(SYSTEM_GCC_VERSION)" "$(GCC_VERSION)" + BUILD_DEPS += , gcc-$(GCC_VERSION), g++-$(GCC_VERSION) + CONFIGURE_FLAGS+= \ + CC=$(CC_PREFIX)gcc-$(GCC_VERSION) \ + CXX=$(CC_PREFIX)g++-$(GCC_VERSION) + endif + else + BUILD_DEPS += , gcc (>= 4:12) [!i386], g++ (>= 4:12) [!i386] + endif + # Use -O0 for gcc 10 on armhf to avoid build/test failure with gcc 10 + # https://bugs.launchpad.net/ubuntu/+bug/1891623 + # In Debian this never appeared to be an actual build failure but + # this also helps for the test timeout on armv8 machines/buildds. + # (armv7 "works"). So make it conditional on whether we run checks. + # With g++-10 there also appear SIGSEGVs in/with openjdk-11 and it + # hangs at RunMacros, which also tries to use Java "Macros". + # A --without-java build passes. +ifeq "$(DEB_HOST_ARCH)" "armhf" + ifeq ($(ENABLE_JAVA),y) + ifneq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + ifneq (noopt,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + DEB_BUILD_OPTIONS += noopt + endif + endif + endif +endif + # and also on s390x since it otherwise gets miscompiled. + # Upstream tracked it down to a gcc bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106355 + # but + # 16:37 <@sberg> _rene_, I couldn't reproduce the issue with an -O0 (--enable-dbgutil) build, and can with a -O2 (no --enable-debug etc.) one +ifeq "$(DEB_HOST_ARCH)" "s390x" + ifneq (noopt,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + DEB_BUILD_OPTIONS += noopt + endif +endif +ifeq "$(DEB_HOST_ARCH)" "riscv64" + CONFIGURE_FLAGS += --disable-nan-tests + # see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1039906#26 (fixed) + # and it seems it the payloadNaN test actually passes with -O2 where it's + # unclear whether it actually is on hardware supporting it. Let's keep at + # -O0 for now and be sure it fails before shipping something broken + ifneq (noopt,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + DEB_BUILD_OPTIONS += noopt + endif + # see https://lists.debian.org/debian-riscv/2024/01/msg00018.html + CONFIGURE_FLAGS += --disable-split-debug +endif + # skia build picks up clang if present (for performance reasons, + # at least on Windows...). See the thread starting at + # https://lists.freedesktop.org/archives/libreoffice/2020-April/084929.html + # Make it a explicit build-dependency so we don't have builds + # "randomly" using gcc or clang depending on whether clang is installed + # or not + ifeq "$(ENABLE_SKIA)" "y" + ifeq "$(ALLOW_CLANG)" "y" + ifeq (ccache,$(findstring ccache,$(DEB_BUILD_OPTIONS))) + export CCACHE_CPP2=1 + endif + ifeq "$(CLANG_VERSION)" "default" + export LO_CLANG_CC=clang + export LO_CLANG_CXX=clang++ + BUILD_DEPS_ARCH += , clang$(OOO_NO_CLANG_SUPPORTED_ARCHS) + else + export LO_CLANG_CC=clang-$(CLANG_VERSION) + export LO_CLANG_CXX=clang++-$(CLANG_VERSION) + BUILD_DEPS_ARCH += , clang-$(CLANG_VERSION) [$(OOO_LE_ARCHS)] + endif + endif + endif +else + ifeq "$(CLANG_VERSION)" "default" + BUILD_DEPS += , clang + CONFIGURE_FLAGS+= CC=clang CXX=clang++ + else + BUILD_DEPS += , clang-$(CLANG_VERSION) + CONFIGURE_FLAGS+= CC=clang-$(CLANG_VERSION) CXX=clang++-$(CLANG_VERSION) + endif + ifeq "$(ENABLE_COMPILER_PLUGINS)" "y" + CONFIGURE_FLAGS += --enable-compiler-plugins + CLANGDIR := /usr/lib/llvm-$(shell $(CLANG) --version | head -n 1 | awk '{ print $$3 }' | cut -d. -f1) + ifeq "$(CLANG_VERSION)" "default" + BUILD_DEPS += , clang (>= 1:12.0.1), libclang-dev (>= 1:12.0.1), llvm-dev (>= 1:12.0.1) + else + BUILD_DEPS += , libclang-$(CLANG_VERSION)-dev, llvm-$(CLANG_VERSION)-dev + endif + endif +endif +USE_GOLD=n +ALLOW_GOLD=n +USE_MOLD=n +# leaves cruft around after building because it runs update_pch.sh.. +ENABLE_PCH=n + +ifeq "$(PACKAGE_SDK)" "y" + CONFIGURE_FLAGS += --enable-odk + ifeq "$(PACKAGE_SDK_DOCS)" "y" + BUILD_DEPS_INDEP += , doxygen , graphviz + else + CONFIGURE_FLAGS += --without-doxygen --without-javadoc + endif +endif + +ifeq "$(ENABLE_PDFIMPORT)" "y" + ifeq "$(ENABLE_POPPLER)" "y" + BUILD_DEPS += , libpoppler-dev, libpoppler-private-dev, libpoppler-cpp-dev + ifeq "$(RUN_MAKE_CHECK)" "y" + BUILD_DEPS_ARCH += , poppler-data [$(OOO_CHECK_ARCHS)] + endif + else + CONFIGURE_FLAGS += --disable-poppler + endif + ifeq "$(ENABLE_PDFIUM)" "n" + CONFIGURE_FLAGS += --disable-pdfium + else + SYSTEM_STUFF += abseil + SYSTEM_STUFF += openjpeg + SYSTEM_STUFF += afdko + ifneq (,$(filter openjpeg, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libopenjp2-7-dev [$(OOO_PDFIUM_ARCHS)] + endif + ifneq (,$(filter abseil, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libabsl-dev [$(OOO_PDFIUM_ARCHS)] + endif + ifneq (,$(filter afdko, $(SYSTEM_STUFF))) + # upstream is ok with this just being a Recommends:. + # We don't NEED to have it. + AFDKO_RECOMMENDS += afdko-bin [$(OOO_PDFIUM_ARCHS)] + # but we need to B-D-A on it since the paths found/set + # are used as-is in the resulting LO... (and it's used during tests) + BUILD_DEPS_ARCH += , $(AFDKO_RECOMMENDS) + endif + endif +endif + +ifeq "$(ENABLE_CUPS)" "y" + BUILD_DEPS += , libcups2-dev +else + CONFIGURE_FLAGS += --disable-cups +endif + +ifeq "$(ENABLE_CPDB)" "y" + BUILD_DEPS += , libcpdb-frontend-dev + CONFIGURE_FLAGS += --enable-cpdb +endif + + +ifneq (,$(filter graphite, $(SYSTEM_STUFF))) + BUILD_DEPS += , libgraphite2-dev +endif + +ifneq (,$(filter harfbuzz, $(SYSTEM_STUFF))) + BUILD_DEPS += , libharfbuzz-dev (>= 5.1.0) +else + BUILD_DEPS += , meson, ninja-build +endif + +ifneq (,$(filter libexttextcat, $(SYSTEM_STUFF))) + BUILD_DEPS += , libexttextcat-dev + TEXTCAT_DATA_RECOMMENDS := libexttextcat-data +endif + +ifneq "$(ENABLE_LDAP)" "y" + CONFIGURE_FLAGS += --disable-ldap +endif + +ifneq (,$(filter libnumbertext, $(SYSTEM_STUFF))) + BUILD_DEPS += , libnumbertext-dev + ifeq "$(RUN_MAKE_CHECK)" "y" + # https://cgit.freedesktop.org/libreoffice/core/commit/?h=libreoffice-7-3&id=09dfe214a30f58ddcd7a857db8f5eee68d4cef2a + BUILD_DEPS_ARCH += , libnumbertext-data (>= 1.0.11) + endif + NUMBERTEXT_DATA_RECOMMENDS := libnumbertext-data +endif + +ifneq (,$(filter jpeg, $(SYSTEM_STUFF))) + BUILD_DEPS += , libjpeg-dev +endif +ifneq (,$(filter libxml, $(SYSTEM_STUFF))) + BUILD_DEPS += , libxml2-dev, libxml2-utils + CONFIGURE_FLAGS += --with-system-libxml +ifeq "$(shell dpkg --compare-versions `pkg-config --modversion libxml-2.0` gt 2.14 && echo true)" "true" + BUILD_DEPS_ARCH += , libxml2-dev (>= 2.14.3+dfsg-0exp3) +endif + BUILD_DEPS += , libxslt1-dev +endif +ifneq (,$(filter xmlsec, $(SYSTEM_STUFF))) + BUILD_DEPS += , libxmlsec1-dev (>= 1.2.35) + # for t64 + ifneq (,$(filter $(OOO_CHECK_ARCHS),$(filter-out i386,$(OOO_32BIT_ARCHS)))) + BUILD_DEPS_ARCH += , libxmlsec1-dev (>= 1.2.39-5) [$(filter $(OOO_CHECK_ARCHS),$(filter-out i386,$(OOO_32BIT_ARCHS)))] + endif +endif +ifneq (,$(filter expat, $(SYSTEM_STUFF))) + BUILD_DEPS += , libexpat1-dev +endif +ifneq (,$(filter odbc, $(SYSTEM_STUFF))) + BUILD_DEPS += , unixodbc-dev +endif +ifneq (,$(filter sane, $(SYSTEM_STUFF))) + BUILD_DEPS += , libsane-dev +endif +ifneq (,$(filter libpng, $(SYSTEM_STUFF))) + BUILD_DEPS += , libpng-dev +endif + +CURL_SECTYPE=openssl +ifeq "$(ENABLE_CURL)" "y" + ifneq (,$(filter curl, $(SYSTEM_STUFF))) + BUILD_DEPS += , libcurl4-$(CURL_SECTYPE)-dev + endif +else + CONFIGURE_FLAGS += --disable-curl +endif + +ifneq (,$(filter box2d, $(SYSTEM_STUFF))) + BUILD_DEPS += , libbox2d-dev +endif + +ifneq (,$(filter libwebp, $(SYSTEM_STUFF))) + BUILD_DEPS += , libwebp-dev +endif + +ifneq (,$(filter libtiff, $(SYSTEM_STUFF))) + BUILD_DEPS += , libtiff-dev +endif + +ifneq ($(ENABLE_COINMP),y) + CONFIGURE_FLAGS += --disable-coinmp +else + ifneq (,$(filter coinmp, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , coinor-libcoinmp-dev $(COINMP_MINVER), coinor-libcoinutils-dev $(COINUTILS_MINVER) + endif +endif + +ifneq (,$(filter amd64,$(DEB_HOST_ARCH))) + ifneq "$(AUTOPKGTEST_BUILD)" "y" + SMALL_SYMBOLS = n + endif +endif + +# silence long-obsolete warnings. Should probably be in +# upstreams makefiles but I failed to get it actually appear... +ifeq "$(DEB_HOST_ARCH)" "armel" + DEB_CXXFLAGS_MAINT_APPEND = -Wno-psabi +endif +ifeq "$(DEB_HOST_ARCH)" "armhf" + DEB_CXXFLAGS_MAINT_APPEND = -Wno-psabi +endif + +# see https://lists.freedesktop.org/archives/libreoffice/2023-September/090877.html +ifneq (,$(filter ppc64el s390x,$(DEB_HOST_ARCH))) + DEB_CFLAGS_MAINT_APPEND = -ffp-contract=off + DEB_CXXFLAGS_MAINT_APPEND = -ffp-contract=off +endif + +ifneq (,$(filter s390x,$(DEB_HOST_ARCH))) + ifeq (,$(shell gcc -v 2>&1 | grep disable-s390-excess-float-precision)) + DEB_CFLAGS_MAINT_APPEND = -fexcess-precision=fast + # the gcc manpage says + # "-fexcess-precision=standard is not implemented for languages other than C" + # but it works with this and fails without, so probably has some effect after all + DEB_CXXFLAGS_MAINT_APPEND = -fexcess-precision=fast + endif +endif + +ifeq "$(ENABLE_SYMBOLS)" "y" + # Small symbols? + ifeq "$(SMALL_SYMBOLS)" "y" + CONFIGURE_FLAGS += --enable-symbols=SMALL + DEB_CFLAGS_MAINT_STRIP += -g + DEB_CXXFLAGS_MAINT_STRIP += -g + DEB_CFLAGS_MAINT_PREPEND += -g1 + DEB_CXXFLAGS_MAINT_PREPEND += -g1 +export DEB_CFLAGS_MAINT_STRIP DEB_CXXFLAGS_MAINT_STRIP +export DEB_CFLAGS_MAINT_PREPEND DEB_CXXFLAGS_MAINT_PREPEND + else + CONFIGURE_FLAGS += --enable-symbols + endif +else + DEB_CFLAGS_MAINT_STRIP := -g + DEB_CXXFLAGS_MAINT_STRIP := -g +export DEB_CFLAGS_MAINT_STRIP DEB_CXXFLAGS_MAINT_STRIP +endif +export DPKG_EXPORT_BUILDFLAGS=y +include /usr/share/dpkg/buildflags.mk +ifeq (debug,$(findstring debug,$(DEB_BUILD_OPTIONS))) + CONFIGURE_FLAGS += --enable-debug + export CARGO_CHANNEL := debug +else + export CARGO_CHANNEL := release +endif +export CARGO_FLAGS = --$(CARGO_CHANNEL) +ifeq (noopt,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CONFIGURE_FLAGS += --disable-optimized +endif + +ifeq "$(ENABLE_PYTHON)" "y" +PYMAJOR:=$(shell $(PYTHON) -c "import sys; print (sys.version_info[0])") +PYMINOR:=$(shell $(PYTHON) -c "import sys; print (sys.version_info[1])") +PYMINORPLUS1:=$(shell $(PYTHON) -c "import sys; print (sys.version_info[1]+1)") +PYTHON_SITE:=$(shell $(PYTHON) -c 'from distutils import sysconfig; print(sysconfig.get_python_lib())') +endif + + BUILD_DEPS += , $(PYTHON) +ifeq "$(ENABLE_PYTHON)" "y" + BUILD_DEPS += , $(PYTHON)-dev + BUILD_DEPS += , $(PYTHON)-setuptools + BUILD_DEPS += , dh-python + ifeq "$(RUN_MAKE_CHECK)" "y" + ifneq (nocheck,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) + BUILD_DEPS_ARCH += , $(PYTHON)-lxml$(OOO_NO_CHECK_ARCHS) + # pyuno testpip: https://cgit.freedesktop.org/libreoffice/core/diff/pyuno/qa/pytests/testpip.py?id=47e110fc66292e76152252a90a0e20580c33c13d + BUILD_DEPS_ARCH += , $(PYTHON)-pip$(OOO_NO_CHECK_ARCHS) + # same with setuptools + BUILD_DEPS_ARCH += , $(PYTHON)-setuptools$(OOO_NO_CHECK_ARCHS) + # and venv ...: https://cgit.freedesktop.org/libreoffice/core/commit/?h=libreoffice-25-8&id=fbb1d7bcba219685d789c2f4cdf348f8f7f8d696 + BUILD_DEPS_ARCH += , $(PYTHON)-venv$(OOO_NO_CHECK_ARCHS) + else + CONFIGURE_FLAGS += --without-lxml + endif + endif +endif + +ifeq "$(ENABLE_DOTNET)" "y" + #BUILD_DEPS_INDEP += , cli-common-dev [$(OOO_CLI_ARCHS)] + # both for Microsofts and Ubuntus packages + BUILD_DEPS_INDEP += , dotnet-sdk-8.0 [$(OOO_CLI_ARCHS)] +else + CONFIGURE_FLAGS += --without-dotnet +endif + + BUILD_DEPS += , debhelper-compat (= 12) + + ifeq "$(RUN_MAKE_CHECK)" "y" + BUILD_DEPS_ARCH += , locales | locales-all + BUILD_DEPS_ARCH += , gdb [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , fontconfig [$(OOO_AUTOPKGTEST_ARCHS)] + BUILD_DEPS_ARCH += , fonts-liberation (>= 1:2) [$(OOO_AUTOPKGTEST_ARCHS)] + BUILD_DEPS_ARCH += , fonts-crosextra-carlito (>= 20230309) [$(OOO_AUTOPKGTEST_ARCHS)] + # porrst.cxx:85:Assertion + #Test name: (anonymous namespace)::testFloattableAnchorHeight::TestBody + #equality assertion failed + #- Expected: 1 + #- Actual : 2 + BUILD_DEPS_ARCH += , fonts-crosextra-caladea [$(OOO_AUTOPKGTEST_ARCHS)] + # https://lists.freedesktop.org/archives/libreoffice/2017-May/077764.html + BUILD_DEPS_ARCH += , fonts-dejavu [$(OOO_AUTOPKGTEST_ARCHS)] + # used in vcl/qa/cppunit/text.cxx:void VclTextTest::testImplLayoutArgs_PrepareFallback_precalculatedglyphs() + BUILD_DEPS_ARCH += , fonts-hosny-amiri (>= 1.000) [$(OOO_AUTOPKGTEST_ARCHS)] + # sdext/source/pdfimport/test/tests.cxx (the test PDF uses NaskhArabic) and the result of the import is + # checked which fails without the font. Also used in /vcl/qa/cppunit/complextext.cxx (VclComplexTextTest::testCaching()) + BUILD_DEPS_ARCH += , fonts-noto-core [$(OOO_AUTOPKGTEST_ARCHS)] + # in pdfexport2.cxx (testTdf124116TrackUntrack - which uses David CLM) + BUILD_DEPS_ARCH += , culmus [$(OOO_AUTOPKGTEST_ARCHS)] + # FIXME: Linux Libertine G (does fonts-linuxlibertine even contain it?, I don't see the _G files?) + # now is used in test documents. + # now we get a abort if fonts is not found and replaced in layout tests (even though + # https://cgit.freedesktop.org/libreoffice/core/commit/?id=172270a8f04388a8f8062f672f9c3f3144a01a1f suggests that + # it isn't the case in --without-fonts) but... And while we disable that abort via patch having this + # to be sure there is no other failure mode makes sense (as with the other fonts above) + BUILD_DEPS_ARCH += , fonts-linuxlibertine [$(OOO_AUTOPKGTEST_ARCHS)] + # 17:35 <@sberg_> vmiklos, oh, what kind of poor test is that? "warn:sal.osl:3785:2:sal/osl/unx/process.cxx:344: ChildStatusProc : starting 'pstoedit' failed" etc. is what I see in workdir/CppunitTest/filter_eps_test.test.log... + BUILD_DEPS_ARCH += , pstoedit [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , imagemagick [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , ghostscript [$(OOO_CHECK_ARCHS)] + + BUILD_DEPS_ARCH += , hunspell-en-us [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , hyphen-en-us [$(OOO_CHECK_ARCHS)] + # $ git grep xHyphenator.*hasLocale | grep -v u\"US + # sw/qa/extras/layout/layout2.cxx: if (!xHyphenator->hasLocale(lang::Locale(u"hu"_ustr, u"HU"_ustr, OUString()))) + # sw/qa/extras/layout/layout2.cxx: if (!xHyphenator->hasLocale(lang::Locale(u"hu"_ustr, u"HU"_ustr, OUString()))) + # sw/qa/extras/layout/layout3.cxx: if (!xHyphenator->hasLocale(lang::Locale("de", "DE", OUString()))) + BUILD_DEPS_ARCH += , hyphen-hu [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , hyphen-de [$(OOO_CHECK_ARCHS)] + endif + # we don't run any cppunit check in all builds +# ifneq "$(AUTOPKGTEST_BUILD)" "y" + ifneq (,$(filter cppunit, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libcppunit-dev + # without the deterministic order patch the xmlsecurity_signing test fails. See + # https://cgit.freedesktop.org/libreoffice/core/commit/external/cppunit/order.patch.0?id=2f2246d22e2a8ccbc1dc3e6f5243734a61edf270 + ifeq "$(ENABLE_LTO)" "y" + BUILD_DEPS_ARCH += , libcppunit-dev (>= 1.15.1-4) [$(filter $(OOO_CHECK_ARCHS),$(OOO_ARCHS))] + endif + endif + ifeq ($(MAKECMDGOALS),binary-indep) + CONFIGURE_FLAGS_INDEP += --without-cppunit + endif +# endif + ifeq "$(ENABLE_JUNIT4)" "y" + BUILD_DEPS += , junit4 $(JUNIT_MIN_VER) [$(OOO_JUNIT_ARCHS)] + else + CONFIGURE_FLAGS += --without-junit + endif + ifeq "$(ENABLE_EXPORT_VALIDATION_TESTS)" "y" + BUILD_DEPS += , libofficeotron-java$(OOO_NO_CHECK_ARCHS) , libodfvalidator-java$(OOO_NO_CHECK_ARCHS) + else + CONFIGURE_FLAGS += --without-export-validation + endif +ifneq "$(BUILD_ONLY_EN_US)" "y" + ifeq (lang=,$(findstring lang=,$(DEB_BUILD_OPTIONS))) + ISOS=$(shell echo "$(DEB_BUILD_OPTIONS) " | sed -n 's/^.*lang=\([^\s].*\)\s.*/\1/p' | awk '{ print $$1 }' | sed -e 's/,/ /g') + ifeq "$(ENABLE_HELP)" "n" + HELPISOS= + else + HELPISOS=$(shell echo "$(DEB_BUILD_OPTIONS) " | sed -n 's/^.*lang=\([^\s].*\)\s.*/\1/p' | awk '{ print $$1 }' | sed -e 's/,/ /g') + endif + LANGPACKISOS=$(shell echo "$(DEB_BUILD_OPTIONS) " | sed -n 's/^.*lang=\([^\s].*\)\s.*/\1/p' | awk '{ print $$1 }' | sed -e 's/,/ /g') + else + # Note that the first one here *has to be* en-US. the first one gets + # gid_Module_Root as filelist later and the rest gid_Module_Root.$iso + # but we can't/shouldn't do dynamic switching, so let en-US be the first + # one to that gid_Module_Root always is english and the other langpacks + # have gid_Module_Root.$iso + #ISOS=$(shell $(SOURCE_TREE)/bin/lo-xlate-lang -i all') + ISOS:=en-US af am ar as ast be bg bn bn-IN br bs ca ca-valencia cs cy da de dz el \ + en-GB en-ZA eo es et eu fa fi fr ga gd gl gu gug he hi hr hu hy id is it ja \ + ka kk km kmr-Latn kn ko lt lv mk mn ml mr nb ne nl nn nr nso oc om or \ + pa-IN pl pt pt-BR ro ru rw si sk sl sr sr-Latn ss st sv szl \ + ta te tg th tl tn tr ts ug uk uz ve vi xh zh-CN zh-TW zu + ifeq "$(ENABLE_HELP)" "n" + HELPISOS:= + else + #HELPISOS:=$(shell $(SOURCE_TREE)/bin/lo-xlate-lang -i all') + HELPISOS:=en-US ca ca-valencia cs da de dz el en-GB es et eu fi fr gl hi hu id it \ + ja km ko nl om pl pt pt-BR ru sk sl sv tr vi zh-CN zh-TW + endif + #LANGPACKISOS:=$(shell $(SOURCE_TREE)/bin/lo-xlate-lang -i all') + LANGPACKISOS:=en-US af am ar as ast be bg bn bn-IN br bs ca ca-valencia cs cy da de dz el \ + en-GB en-ZA eo es et eu fa fi fr ga gd gl gu gug he hi hr hu hy id is it ja \ + ka kk km kmr-Latn kn ko lt lv mk mn ml mr nb ne nl nn nr nso oc om or \ + pa-IN pl pt pt-BR ro ru rw si sk sl sr sr-Latn ss st sv szl \ + ta te tg th tl tn tr ts ug uk uz ve vi xh zh-CN zh-TW zu + endif + # only needed if we supported builds without -B, see above + #ifeq "$(AUTOPKGTEST_BUILD)" "y" + # ISOS := en-US he zh-TW + # HELPISOS := en-US zh-TW + # LANGPACKISOS := en-US he zh-TW + #endif +else + ISOS=en-US + ifeq "$(ENABLE_HELP)" "n" + HELPISOS= + else + HELPISOS=en-US + endif + LANGPACKISOS=en-US +endif +BUILD_ISOS = $(ISOS) + +ifneq "$(BUILD_ONLY_EN_US)" "y" + ifneq "$(BUILD_ISOS)" "en-US" + CONFIGURE_FLAGS_LANG += --with-lang="$(BUILD_ISOS)" + CONFIGURE_FLAGS_INDEP += $(CONFIGURE_FLAGS_LANG) + BUILD_DEPS_INDEP += , gettext + endif +endif + +ifeq "$(ENABLE_JAVA)" "y" + BUILD_DEPS += , java-common (>= 0.75) + BUILD_DEPS += , maven-repo-helper$(OOO_NO_JAVA_ARCHS) + ifeq "$(JDK)" "default" + JAVA_HOME=/usr/lib/jvm/default-java + DEFAULT_JDK := $(call java_dependency, default-jdk) + # build-depend on 1.9 (upstream needs it anyway for module-info support) + BUILD_DEPS += , $(shell echo $(DEFAULT_JDK) | sed -e 's/default-jdk/default-jdk (>= 2:1.9)/' | sed -e 's/\]/$(foreach i,$(JAVA_BRIDGE_BROKEN_ARCHS), !$(i))\]/') + endif + ifeq "$(JDK)" "openjdk" + BUILD_DEPS += , openjdk-$(JAVA_MAINVER)-jdk + JAVA_HOME=/usr/lib/jvm/java-$(JAVA_MAINVER)-openjdk-$(DEB_HOST_ARCH) + endif + TEST_JAVA_HOME=$(JAVA_HOME) + ifeq "$(ENABLE_MEDIAWIKI)" "y" + BUILD_DEPS_INDEP += , ant$(OOO_NO_JAVA_ARCHS) , ant-optional$(OOO_NO_JAVA_ARCHS) + else + # report-builder is done in build-arch already + ifneq (,$(filter jfreereport, $(SYSTEM_STUFF))) + BUILD_DEPS += , ant$(OOO_NO_JAVA_ARCHS) + else + BUILD_DEPS_INDEP += , ant$(OOO_NO_JAVA_ARCHS) + endif + endif + JAVA_RUNTIME_DEPENDS = default-jre (>= 2:1.$(JAVA_RUNTIME_BASELINE)) + JAVA_RUNTIME_DEPENDS += | java-runtime (>= $(JAVA_RUNTIME_BASELINE)) | java$(JAVA_RUNTIME_BASELINE)-runtime + # Suns Java "packages" + JAVA_RUNTIME_DEPENDS += | jre +export JAVA_HOME + CONFIGURE_FLAGS += --with-jdk-home=$(JAVA_HOME) + JAVA_COMMON_DEPENDS= , libreoffice-java-common + JAVA_COMMON_DEPENDS_VERSION:= (>= $(BASE_VERSION)~) + ifeq "$(ENABLE_MEDIAWIKI)" "y" + CONFIGURE_FLAGS_INDEP += --enable-ext-wiki-publisher + endif + ifeq "$(ENABLE_REPORTBUILDER)" "y" + # report-builder + ifneq (,$(filter jfreereport, $(SYSTEM_STUFF))) + REPORT_BUILDER_BUILD_DEPS += , libbase-java$(OOO_NO_REPORTBUILDER_ARCHS) , libsac-java$(OOO_NO_REPORTBUILDER_ARCHS) , libxml-java$(OOO_NO_REPORTBUILDER_ARCHS) , libflute-java$(OOO_NO_REPORTBUILDER_ARCHS) , libpentaho-reporting-flow-engine-java$(OOO_NO_REPORTBUILDER_ARCHS) , liblayout-java$(OOO_NO_REPORTBUILDER_ARCHS) , libloader-java$(OOO_NO_REPORTBUILDER_ARCHS) , libformula-java$(OOO_NO_REPORTBUILDER_ARCHS) , librepository-java$(OOO_NO_REPORTBUILDER_ARCHS) , libfonts-java$(OOO_NO_REPORTBUILDER_ARCHS) , libserializer-java$(OOO_NO_REPORTBUILDER_ARCHS) + REPORT_BUILDER_JAR_DEPENDS := , libbase-java, libsac-java, libxml-java, libflute-java, libpentaho-reporting-flow-engine-java, liblayout-java, libloader-java, libformula-java, librepository-java, libfonts-java, libserializer-java + CONFIGURE_FLAGS += --with-libbase-jar=/usr/share/java/libbase.jar --with-libxml-jar=/usr/share/java/libxml.jar --with-flute-jar=/usr/share/java/flute.jar --with-jfreereport-jar=/usr/share/java/flow-engine.jar --with-liblayout-jar=/usr/share/java/liblayout.jar --with-libloader-jar=/usr/share/java/libloader.jar --with-libformula-jar=/usr/share/java/libformula.jar --with-librepository-jar=/usr/share/java/librepository.jar --with-libfonts-jar=/usr/share/java/libfonts.jar --with-libserializer-jar=/usr/share/java/libserializer.jar + endif + BUILD_DEPS += $(REPORT_BUILDER_BUILD_DEPS) + else + CONFIGURE_FLAGS += --disable-report-builder + endif + ifeq "$(ENABLE_NLPSOLVER)" "y" + CONFIGURE_FLAGS_INDEP += --enable-ext-nlpsolver + endif + OOO_OFFICEBEAN_DEP = libofficebean-java + BUILD_DEPS += , javahelper $(JAVAHELPER_MIN_VERSION)$(OOO_NO_JAVA_ARCHS) +else + CONFIGURE_FLAGS += --without-java + DEBHELPER_OPTIONS += -Nlibofficebean-java -Nlibreoffice-java-common -Nlibreoffice-script-provider-bsh -Nlibreoffice-script-provider-js -Nlibreoffice-subsequentcheckbase -Nlibunoloader-java -Nliblibreoffice-java -Nlibreoffice-sdbc-hsqldb -Nure-java +endif + +ifeq "$(ENABLE_JAVA)" "y" + ifeq "$(shell $(JAVA_HOME)/bin/java -version 2>&1 | grep -q Zero && echo true)" "true" + RUN_MAKE_CHECK:=n + ENABLE_JUNIT4=n + endif +endif + +ifeq "$(ENABLE_NSS)" "y" + ifneq (,$(filter nss, $(SYSTEM_STUFF))) + BUILD_DEPS+= , libnss3-dev + BUILD_DEPS+= , libnspr4-dev + else + CONFIGURE_FLAGS += --without-system-nss + endif +else + CONFIGURE_FLAGS += --disable-nss +endif + +ifneq (,$(filter hunspell, $(SYSTEM_STUFF))) + BUILD_DEPS += , libhunspell-dev +endif + CONFIGURE_FLAGS += --with-external-dict-dir=$(DICT_DIR) + +ifneq (,$(filter altlinuxhyph, $(SYSTEM_STUFF))) + BUILD_DEPS += , libhyphen-dev +endif + CONFIGURE_FLAGS += --with-external-hyph-dir=$(HYPH_DIR) + +ifneq (,$(filter boost, $(SYSTEM_STUFF))) + ifneq "$(BOOST_VERSION)" "default" + BUILD_DEPS += , libboost$(BOOST_VERSION)-dev $(BOOST_MINVER), libboost-date-time$(BOOST_VERSION)-dev $(BOOST_MINVER), libboost-iostreams$(BOOST_VERSION)-dev, libboost-filesystem$(BOOST_VERSION)-dev, libboost-locale$(BOOST_VERSION)-dev + #BUILD_DEPS += , libboost-thread$(BOOST_VERSION)-dev, libboost-program-options$(BOOST_VERSION)-dev + ifeq (,$(filter orcus, $(SYSTEM_STUFF))) + BUILD_DEPS += , libboost-iostreams$(BOOST_VERSION)-dev $(BOOST_MINVER), libboost-program-options$(BOOST_VERSION)-dev $(BOOST_MINVER), libboost-filesystem$(BOOST_VERSION)-dev $(BOOST_MINVER) + endif + else + BUILD_DEPS += , libboost-dev $(BOOST_MINVER), libboost-date-time-dev $(BOOST_MINVER), libboost-iostreams-dev $(BOOST_MINVER), libboost-filesystem-dev $(BOOST_MINVER), libboost-locale-dev $(BOOST_MINVER) + #BUILD_DEPS += , libboost-thread-dev, libboost-program-options-dev + ifeq (,$(filter orcus, $(SYSTEM_STUFF))) + BUILD_DEPS += , libboost-iostreams-dev $(BOOST_MINVER), libboost-program-options-dev $(BOOST_MINVER), libboost-filesystem-dev $(BOOST_MINVER) + endif + endif + ifeq "$(shell if [ -e /usr/lib/$(DEB_HOST_MULTIARCH)/libboost_date_time.so ]; then echo true; fi)" "true" + CONFIGURE_FLAGS += --with-boost-libdir=/usr/lib/$(DEB_HOST_MULTIARCH) + endif + ifneq (,$(filter dragonbox, $(SYSTEM_STUFF))) + BUILD_DEPS += , libdragonbox-dev + endif + ifneq (,$(filter libfixmath, $(SYSTEM_STUFF))) + BUILD_DEPS += , libfixmath-dev + endif +endif + +ifneq "$(ENABLE_SKIA)" "y" + CONFIGURE_FLAGS += --disable-skia +endif + +ifneq (,$(filter mdds, $(SYSTEM_STUFF))) + BUILD_DEPS += , libmdds-dev (>= 3.0), libmdds-dev (<< 3.3~) +endif + +ifneq (,$(filter orcus, $(SYSTEM_STUFF))) + ifneq "$(TRIXIE_BACKPORT)" "y" + BUILD_DEPS += , liborcus-dev (>= 0.21.0-5), liborcus-dev (<< 0.22~) + else + # in trixie there's no liborcus with parquet enabled anyway (and arrow isn't backporte + # either), so we can keep this. any build won't have parquet support in liborcus anyway + BUILD_DEPS += , liborcus-dev (>= 0.21), liborcus-dev (<< 0.22~) + endif +endif + +ifeq "$(ENABLE_XMLHELP)" "y" + ifneq (,$(filter clucene, $(SYSTEM_STUFF))) + BUILD_DEPS += , libclucene-dev + endif +endif + +ifeq "$(USE_EXTERNAL_CXXLIBS)" "y" + ifneq (,$(filter librevenge, $(SYSTEM_STUFF))) + BUILD_DEPS += , librevenge-dev, librevenge-dev (<< 0.1~) + endif + ifneq (,$(filter libwpd, $(SYSTEM_STUFF))) + BUILD_DEPS += , libwpd-dev (>= 0.10), libwpd-dev (<< 0.11~) + endif + ifneq (,$(filter mythes, $(SYSTEM_STUFF))) + BUILD_DEPS += , libmythes-dev + endif + ifneq (,$(filter libwps, $(SYSTEM_STUFF))) + BUILD_DEPS += , libwps-dev (>= 0.4), libwps-dev (<< 0.5~) + endif + ifneq (,$(filter libwpg, $(SYSTEM_STUFF))) + BUILD_DEPS += , libwpg-dev (>= 0.3), libwpg-dev (<< 0.4~) + endif + ifneq (,$(filter libvisio, $(SYSTEM_STUFF))) + BUILD_DEPS += , libvisio-dev (>= 0.1), libvisio-dev (<< 0.2~) + endif + ifneq (,$(filter libcdr, $(SYSTEM_STUFF))) + BUILD_DEPS += , libcdr-dev (>= 0.1), libcdr-dev (<< 0.2~) + endif + ifneq (,$(filter libmspub, $(SYSTEM_STUFF))) + BUILD_DEPS += , libmspub-dev (>= 0.1), libmspub-dev (<< 0.2~) + endif + ifneq (,$(filter libmwaw, $(SYSTEM_STUFF))) +# BUILD_DEPS += , libmwaw-dev (>= 0.3.1), libmwaw-dev (<< 0.4~) +# configure.ac checks for >= 0.3.21 + BUILD_DEPS += , libmwaw-dev (>= 0.3.21), libmwaw-dev (<< 0.4~) +# ifeq "$(RUN_MAKE_CHECK)" "y" +# BUILD_DEPS_ARCH += , libmwaw-dev (>= 0.3.21) [$(OOO_CHECK_ARCHS)] +# endif + endif + ifneq (,$(filter libodfgen, $(SYSTEM_STUFF))) + BUILD_DEPS += , libodfgen-dev (>= 0.1), libodfgen-dev (<< 0.2~) + endif + ifneq (,$(filter libepubgen, $(SYSTEM_STUFF))) + BUILD_DEPS += , libepubgen-dev (>= 0.1.0), libepubgen-dev (<< 0.2~) + endif + ifneq (,$(filter libetonyek, $(SYSTEM_STUFF))) + BUILD_DEPS += , libetonyek-dev, libetonyek-dev (<< 0.2~) + endif + ifneq (,$(filter libfreehand, $(SYSTEM_STUFF))) + BUILD_DEPS += , libfreehand-dev (>= 0.1), libfreehand-dev (<< 0.2~) + endif + ifneq (,$(filter libabw, $(SYSTEM_STUFF))) + BUILD_DEPS += , libabw-dev (>= 0.1), libabw-dev (<< 0.2~) + endif + ifneq (,$(filter libpagemaker, $(SYSTEM_STUFF))) + BUILD_DEPS += , libpagemaker-dev, libpagemaker-dev (<< 0.1~) + endif + ifneq (,$(filter libzmf, $(SYSTEM_STUFF))) + BUILD_DEPS += , libzmf-dev, libzmf-dev (<< 0.1~) + endif + ifneq (,$(filter libstaroffice, $(SYSTEM_STUFF))) + BUILD_DEPS += , libstaroffice-dev, libstaroffice-dev (<< 0.1~) + endif + ifneq (,$(filter libqxp, $(SYSTEM_STUFF))) + BUILD_DEPS += , libqxp-dev, libqxp-dev (<< 0.1~) + endif + ifneq (,$(filter libebook, $(SYSTEM_STUFF))) + BUILD_DEPS += , libe-book-dev (>= 0.1), libe-book-dev (<< 0.2~) + endif + ifeq "$(ENABLE_LIBCMIS)" "y" + ifneq (,$(filter libcmis, $(SYSTEM_STUFF))) + BUILD_DEPS += , libcmis-dev (>= 0.6.1~), libcmis-dev (<< 0.7~) + endif + else + CONFIGURE_FLAGS += --disable-libcmis + endif + ifeq "$(ENABLE_ZXING)" "y" + ifneq (,$(filter zxing, $(SYSTEM_STUFF))) + BUILD_DEPS += , libzxing-dev + endif + else + CONFIGURE_FLAGS += --disable-zxing + endif +endif + CONFIGURE_FLAGS += --with-external-thes-dir=$(THES_DIR) + +ifneq (,$(filter zxcvbn, $(SYSTEM_STUFF))) + BUILD_DEPS += , libzxcvbn-dev +endif + +ifneq (,$(filter md4c, $(SYSTEM_STUFF))) + BUILD_DEPS += , libmd4c-dev +endif + +ifneq (,$(filter fast-float, $(SYSTEM_STUFF))) +ifeq "$(ENABLE_PDFIUM)" "y" + # no [$(PDFIUM_ARCHS)] since that is currently all archs anyway.... + #BUILD_DEPS += , libfast-float-dev (>= 7.0.0) [$(PDFIUM_ARCHS)] + BUILD_DEPS += , libfast-float-dev (>= 7.0.0) +else + BUILD_DEPS += , libfast-float-dev +endif +endif + +ifeq "$(INSTALL_APPARMOR_PROFILES)" "y" + BUILD_DEPS_INDEP += , dh-apparmor + ifeq "$(CHECK_APPARMOR_PROFILES)" "true" + BUILD_DEPS_INDEP += , apparmor + endif +endif + +ifeq "$(ENABLE_EOT)" "y" + ifneq (,$(filter libeot, $(SYSTEM_STUFF))) + BUILD_DEPS += , libeot-dev + endif +else + CONFIGURE_FLAGS += --disable-eot +endif + +ifneq (,$(filter lcms2, $(SYSTEM_STUFF))) + BUILD_DEPS += , liblcms2-dev +endif + +ifneq (,$(filter openldap, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libldap-dev +endif + +ifneq (,$(filter liblangtag, $(SYSTEM_STUFF))) + BUILD_DEPS += , liblangtag-dev +endif + +ifneq (,$(filter icu, $(SYSTEM_STUFF))) + BUILD_DEPS += , libicu-dev +endif + + +ifeq "$(BUILD_CAIROCANVAS)" "y" + ifneq (,$(filter cairo, $(SYSTEM_STUFF))) + BUILD_DEPS+= , libcairo2-dev + else + BUILD_DEPS += , meson, ninja-build + endif +else + CONFIGURE_FLAGS+= --disable-cairo +endif + +ifeq "$(ENABLE_EMBINDTEST_UNO)" "y" + CONFIGURE_FLAGS += --enable-embindtest-uno +endif + +ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_RUST_ARCHS))) + ENABLE_RUST=y + ifeq "$(ENABLE_RUST)" "y" + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_RUST_UNO_ARCHS))) + ENABLE_RUST_UNO=y + endif + ifeq "$(ENABLE_RUST_UNO)" "y" + CONFIGURE_FLAGS += --enable-rust-uno + RUST_UNO_VERSION=$(shell grep version rust_uno/Cargo.toml | awk '{ print $$3 }' | sed -e s/\"//g) + endif + ifeq ($(DEB_HOST_ARCH),$(filter $(DEB_HOST_ARCH),$(OOO_YRS_ARCHS))) + ENABLE_YRS=y + endif + ifeq "$(ENABLE_YRS)" "y" + ifeq ($(filter upstream-cargo,$(DEB_BUILD_PROFILES)),) + SYSTEM_STUFF += yrs + endif + endif + # FIXME: if not using yffi from the system yet maybe it might make sense to use that one internally + # and use the other libs from the system? + endif +endif + +ifeq "$(ENABLE_RUST)" "y" + # for the include below this is explicit, otherwise cargo would get us this anyway + BUILD_DEPS += , rustc (>= 1.85) $(OOO_NO_RUST_ARCHS) +include /usr/share/rustc/architecture.mk +export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE + BUILD_DEPS += , cargo (>= 1.85) $(OOO_NO_RUST_ARCHS) +# /usr/share/cargo/bin/cargo says: +# Make sure you add "Build-Depends: python3:native" if you use this directly. +# If using this only indirectly via dh-cargo, then you only need "Build-Depends: +# dh-cargo"; this is a general principle when declaring dependencies. + BUILD_DEPS += , python3 $(OOO_NO_RUST_ARCHS) + ifeq ($(filter upstream-cargo,$(DEB_BUILD_PROFILES)),) +export PATH := /usr/share/cargo/bin:$(PATH) +export CARGO=/usr/share/cargo/bin/cargo +export CARGO_HOME=$(CURDIR)/debian/cargo_home + endif + BUILD_DEPS_ARCH += , dh-cargo $(OOO_NO_RUST_ARCHS) + ifeq "$(ENABLE_YRS)" "y" + CONFIGURE_FLAGS += --with-yrs + ifeq ($(filter upstream-cargo,$(DEB_BUILD_PROFILES)),) + CONFIGURE_FLAGS += --with-system-yrs + BUILD_DEPS_ARCH += , cbindgen $(OOO_NO_YRS_ARCHS) + BUILD_DEPS_ARCH += , librust-yffi-dev $(OOO_NO_YRS_ARCHS) + CARGO_PREPARE_DEBIAN_FLAGS += --link-from-system + endif + endif +endif + +ifeq "$(ENABLE_RUST_UNO)" "y" + ifeq "$(DEB_HOST_ARCH)" "riscv64" + USE_MOLD=y + endif + ifeq (riscv64,$(findstring riscv64,$(OOO_RUST_UNO_ARCHS))) + BUILD_DEPS += , mold [riscv64] + endif +endif + +ifeq "$(ENABLE_KF5)" "y" + CONFIGURE_FLAGS += --enable-kf5 + BUILD_DEPS_ARCH += , libkf5coreaddons-dev, libkf5i18n-dev, libkf5config-dev, libkf5windowsystem-dev, libkf5kio-dev +endif +ifeq "$(ENABLE_KF6)" "y" + CONFIGURE_FLAGS += --enable-kf6 + BUILD_DEPS_ARCH += , libkf6coreaddons-dev, libkf6i18n-dev, libkf6config-dev, libkf6windowsystem-dev, libkf6kio-dev +endif + PLASMA_ICONSET_DEP=libreoffice-style-breeze +ifeq "$(ENABLE_QT5)" "y" + CONFIGURE_FLAGS += --enable-qt5 + BUILD_DEPS_ARCH += , qtbase5-dev $(QT5_MINVER), qt5-qmake $(QT5_MINVER), qtbase5-dev-tools $(QT5_MINVER) + BUILD_DEPS_ARCH += , libqt5x11extras5-dev $(QT5_MINVER) + BUILD_DEPS_ARCH += , libglib2.0-dev + BUILD_DEPS_ARCH += , libxcb1-dev +endif +ifeq "$(ENABLE_QT6)" "y" + CONFIGURE_FLAGS += --enable-qt6 + BUILD_DEPS_ARCH += , qt6-base-dev $(QT6_MINVER), qmake6 $(QT6_MINVER), qt6-base-dev-tools $(QT6_MINVER) + BUILD_DEPS_ARCH += , libxcb1-dev +endif +ifneq "$(shell echo $(ENABLE_QT6)$(ENABLE_KF6) | grep -q y && echo true)" "true" + CONFIGURE_FLAGS += --disable-qt6-multimedia +else + ifeq "$(ENABLE_QT6_MULTIMEDIA)" "y" + # go sure. the avmediaqt6 code has stuff enabled only if >= 6.5.0 + QT6_MINVER := (>= 6.5.0) + BUILD_DEPS_ARCH += , qt6-multimedia-dev $(QT6_MINVER) [!m68k] + else + CONFIGURE_FLAGS += --disable-qt6-multimedia + endif +endif + +ifeq "$(ENABLE_MARIADB)" "y" + ifeq "$(MYSQL_FLAVOUR)" "default" + BUILD_DEPS_ARCH += , default-libmysqlclient-dev + else + ifeq "$(MYSQL_FLAVOUR)" "mysql" + ifneq (,$(filter mariadb, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libmysqlclient-dev + endif + MARIADBCONFIG=/usr/bin/mysql_config + endif + ifeq "$(MYSQL_FLAVOUR)" "mariadb" + ifneq (,$(filter mariadb, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libmariadb-dev + endif + MARIADBCONFIG=/usr/bin/mariadb_config + endif + endif +else + CONFIGURE_FLAGS += --disable-mariadb-sdbc +endif + +ifeq "$(ENABLE_FIREBIRD)" "y" + BASE_FIREBIRD_RECOMMENDS = libreoffice-sdbc-firebird [$(OOO_FIREBIRD_ARCHS)] + ifneq (,$(filter libatomic-ops, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libatomic-ops-dev$(OOO_NO_FIREBIRD_ARCHS) + endif + ifneq (,$(filter libtommath, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH += , libtommath-dev$(OOO_NO_FIREBIRD_ARCHS) + endif + ifneq (,$(filter firebird, $(SYSTEM_STUFF))) + # make this versioned. See the comment above and the libfbclient2 .substvars mangling at the end ... + BUILD_DEPS_ARCH += , firebird-dev (>= $(FIREBIRD_VERSION))$(OOO_NO_FIREBIRD_ARCHS), firebird-dev (<< $(shell echo "$(FIREBIRD_VERSION) + 1" | bc)~)$(OOO_NO_FIREBIRD_ARCHS) + # we need libEngine12.so + ifeq "$(RUN_MAKE_CHECK)" "y" + # ... and here we need the version-spcific -server-core anyway. + BUILD_DEPS_ARCH += , firebird$(FIREBIRD_VERSION)-server-core $(OOO_NO_FIREBIRD_ARCHS) + endif + FIREBIRD_ENGINE_DEPENDS += firebird$(FIREBIRD_VERSION)-server-core + endif +else + CONFIGURE_FLAGS += --disable-firebird-sdbc +endif + +ifeq "$(BUILD_GTK3)" "y" + BUILD_DEPS_ARCH += , libgtk-3-dev, libglib2.0-dev, libatk1.0-dev + ifneq (cairo,$(findstring cairo,$(SYSTEM_STUFF))) + $(error GTK3 build fails without system-cairo!!) + endif + ifeq (,$(filter epoxy, $(SYSTEM_STUFF))) + BUILD_DEPS += , libegl1-mesa-dev + endif + GNOME_GTK_RECOMMENDS += libreoffice-gtk3 + ifeq "$(ENABLE_INTROSPECTION)" "y" + BUILD_DEPS_ARCH += , gobject-introspection (>= 1.80) + # dh_girepository: warning: Missing Build-Depends: gir1.2-gobject-2.0-dev (ideally with <!nogir>) + # dh_girepository: warning: Missing Build-Depends: gir1.2-gdk-3.0-dev (ideally with <!nogir>) + # dh_girepository: warning: Missing Build-Depends: gir1.2-gdkpixbuf-2.0-dev (ideally with <!nogir>) + # dh_girepository: warning: Missing Build-Depends: gir1.2-gio-2.0-dev (ideally with <!nogir>) + # dh_girepository: warning: Missing Build-Depends: gir1.2-gtk-3.0-dev (ideally with <!nogir>) + BUILD_DEPS_ARCH += , gir1.2-gobject-2.0-dev , gir1.2-gdk-3.0-dev , gir1.2-gdkpixbuf-2.0-dev , gir1.2-gio-2.0-dev , gir1.2-gtk-3.0-dev + CONFIGURE_FLAGS += --enable-introspection + else + DEBHELPER_OPTIONS+= -Ngir1.2-lokdocview-0.1 + endif + ifeq "$(ENABLE_ATSPI_TESTS)" "y" + # make sure it is enabled; it is auto-enabled if the below is there, though + CONFIGURE_FLAGS_TESTS += --enable-atspi-tests + BUILD_DEPS_ARCH += , libatspi2.0-dev [$(OOO_CHECK_ARCHS)] , at-spi2-core [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , xvfb [$(OOO_CHECK_ARCHS)] , xauth [$(OOO_CHECK_ARCHS)] , dbus-x11 [$(OOO_CHECK_ARCHS)] + else + # explicitely disable it if not wanted as t is auto-enabled if the above is there + CONFIGURE_FLAGS += --disable-atspi-tests + endif +else + CONFIGURE_FLAGS += --disable-gtk3 +endif + +ifeq "$(BUILD_GTK4)" "y" + GTK4_MINVER := (>= 4.10) + BUILD_DEPS_ARCH += , libgtk-4-dev $(GTK4_MINVER), libglib2.0-dev, libcairo2-dev + CONFIGURE_FLAGS += --enable-gtk4 +endif + +ifeq "$(ENABLE_EVO2)" "n" + CONFIGURE_FLAGS += --disable-evolution2 + #DEBHELPER_OPTIONS += -Nlibreoffice-evolution +else + CONFIGURE_FLAGS += --enable-evolution2 + BUILD_DEPS_ARCH += , libebook1.2-dev + LIBEBOOK_DEP = $(shell debian/scripts/get_libebook_dep.sh) +endif + +ifeq "$(ENABLE_SDBC_POSTGRESQL)" "y" + ifneq (,$(filter postgresql, $(SYSTEM_STUFF))) + BUILD_DEPS += , libkrb5-dev + BUILD_DEPS_ARCH += , libpq-dev + else + BUILD_DEPS += , libkrb5-dev + endif +else + CONFIGURE_FLAGS += --disable-postgresql-sdbc +endif + +ifeq "$(ENABLE_RANDR)" "y" + BUILD_DEPS += , libxrandr-dev +else + CONFIGURE_FLAGS += --disable-randr +endif + +ifneq "$(ENABLE_PYTHON)" "y" + DEBHELPER_OPTIONS+= -Npython3-uno -Nlibreoffice-script-provider-python -Npython3-access2base -Npython3-scriptforge + CONFIGURE_FLAGS += --disable-python +else + PYUNO_DEPENDS = python3-uno + CONFIGURE_FLAGS += --enable-python=system +endif + +ifneq "$(PACKAGE_LIBRELOGO)" "y" + DEBHELPER_OPTIONS+= -Nlibreoffice-librelogo + CONFIGURE_FLAGS += --disable-librelogo +endif + +ifeq "$(ENABLE_JAVA)" "y" + ifneq (,$(filter hsqldb, $(SYSTEM_STUFF))) + #HSQLDB_MINVER= + HSQLDB_JAR=/usr/share/java/hsqldb1.8.0.jar + BUILD_DEPS += , libhsqldb1.8.0-java $(HSQLDB_MINVER)$(OOO_NO_JAVA_ARCHS) , libarchive-zip-perl$(OOO_NO_JAVA_ARCHS) + BASE_HSQLDB_DEPENDS = libhsqldb1.8.0-java $(HSQLDB_MINVER) + CONFIGURE_FLAGS += --with-hsqldb-jar=$(HSQLDB_JAR) + else + BUILD_DEPS += , libservlet3.1-java + endif + ifeq "$(ENABLE_SCRIPT_PROVIDER_BSH)" "y" + ifneq (,$(filter beanshell, $(SYSTEM_STUFF))) + BUILD_DEPS_INDEP += , libbsh-java + endif + CONFIGURE_FLAGS_INDEP += --enable-scripting-beanshell + else + CONFIGURE_FLAGS += --disable-scripting-beanshell + DEBHELPER_OPTIONS += -Nlibreoffice-script-provider-bsh + endif + ifeq "$(ENABLE_SCRIPT_PROVIDER_JS)" "y" + ifneq (,$(filter rhino, $(SYSTEM_STUFF))) + BUILD_DEPS_INDEP += , librhino-java + endif + CONFIGURE_FLAGS_INDEP += --enable-scripting-javascript + else + CONFIGURE_FLAGS += --disable-scripting-javascript + DEBHELPER_OPTIONS += -Nlibreoffice-script-provider-js + endif + ifneq (,$(filter java-websocket, $(SYSTEM_STUFF))) + BUILD_DEPS += , libjava-websocket-java$(OOO_NO_JAVA_ARCHS) + JAVA_WEBSOCKET_JAR := /usr/share/java/Java-WebSocket.jar + CONFIGURE_FLAGS += --with-java-websocket-jar=$(JAVA_WEBSOCKET_JAR) + endif +endif + +ifeq ($(ENABLE_LPSOLVE),y) + ifneq (,$(filter lpsolve, $(SYSTEM_STUFF))) + ifeq "$(USE_SHARED_LPSOLVE)" "y" + BUILD_DEPS_ARCH += , liblpsolve55-dev $(LPSOLVE_MIN_VERSION), lp-solve $(LPSOLVE_MIN_VERSION) + LPSOLVE_DEP = lp-solve $(LPSOLVE_MIN_VERSION) + else + BUILD_DEPS += , liblpsolve55-dev $(LPSOLVE_MIN_VERSION) + endif + endif + ifneq (,$(filter colamd, $(SYSTEM_STUFF))) + BUILD_DEPS += , libsuitesparse-dev $(SUITESPARSE_MIN_VERSION) + endif +else + CONFIGURE_FLAGS += --disable-lpsolve +endif + +ifeq "$(USE_DBUS)" "y" + BUILD_DEPS_ARCH += , libdbus-1-dev + ifeq "$(ENABLE_BLUETOOTH)" "y" + BUILD_DEPS += , libglib2.0-dev + ifneq (,$(filter bluez, $(SYSTEM_STUFF))) + BUILD_DEPS += , libbluetooth-dev [linux-any] + endif + else + CONFIGURE_FLAGS += --disable-sdremote-bluetooth + endif + ifeq "$(ENABLE_PACKAGEKIT)" "y" + CONFIGURE_FLAGS += --enable-packagekit + endif +else + CONFIGURE_FLAGS += --disable-dbus +endif + +ifeq "$(ENABLE_AVAHI)" "y" + BUILD_DEPS_ARCH += , libavahi-client-dev + CONFIGURE_FLAGS += --enable-avahi +endif + +ifeq "$(USE_GSTREAMER)" "y" + BUILD_DEPS += , libgstreamer1.0-dev + CONFIGURE_FLAGS += --enable-gstreamer-1-0 + BUILD_DEPS += , libgstreamer-plugins-base1.0-dev + GSTREAMER_PLUGINS_SUGGESTS += , gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-ugly, gstreamer1.0-plugins-bad, gstreamer1.0-libav +else + CONFIGURE_FLAGS += --disable-gstreamer-1-0 +endif + +ifeq "$(ENABLE_WEBDAV)" "y" + ifneq (,$(filter curl, $(SYSTEM_STUFF))) + BUILD_DEPS += , libcurl4-$(CURL_SECTYPE)-dev + endif + ENABLE_CURL=y +else + CONFIGURE_FLAGS += --with-webdav=no +endif + +ENABLE_SAL_OPENSSL_BACKEND=n +ifneq "$(ENABLE_SAL_OPENSSL_BACKEND)" "y" + ifneq (,$(filter mariadb, $(SYSTEM_STUFF))) + ifneq (,$(filter postgresql, $(SYSTEM_STUFF))) + CONFIGURE_FLAGS += --disable-openssl + endif + endif +else + CONFIGURE_FLAGS += --enable-cipher-openssl-backend + SYSTEM_STUFF += openssl + BUILD_DEPS += , libssl-dev +endif + +SYSTEM_STUFF += lockfile +ifneq (,$(filter lockfile, $(SYSTEM_STUFF))) + BUILD_DEPS += , liblockfile-bin +endif + +ifneq (,$(filter frozen, $(SYSTEM_STUFF))) + BUILD_DEPS += , libfrozen-dev +endif + +ifneq (,$(filter argon2, $(SYSTEM_STUFF))) + BUILD_DEPS += , libargon2-dev +endif + +ifneq (,$(filter zstd, $(SYSTEM_STUFF))) + BUILD_DEPS += , libzstd-dev +endif + +ifneq (,$(filter redland, $(SYSTEM_STUFF))) + BUILD_DEPS += , librdf0-dev +endif + +ifeq "$(ENABLE_GUI)" "y" + ifneq (,$(filter epoxy, $(SYSTEM_STUFF))) + BUILD_DEPS += , libepoxy-dev + else + BUILD_DEPS += , libegl1-mesa-dev + endif +endif +ifneq (,$(filter glm, $(SYSTEM_STUFF))) + BUILD_DEPS += , libglm-dev +endif + +ifeq "$(ENABLE_GPGMEPP)" "y" +ifneq (,$(filter gpgmepp, $(SYSTEM_STUFF))) + BUILD_DEPS_ARCH+= , libgpgmepp-dev, libgpgme-dev, libgpg-error-dev +endif +ifeq "$(RUN_MAKE_CHECK)" "y" + BUILD_DEPS_ARCH += , gpg [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , gpgconf [$(OOO_CHECK_ARCHS)] + BUILD_DEPS_ARCH += , gpg-agent [$(OOO_CHECK_ARCHS)] +endif +else + CONFIGURE_FLAGS += --disable-gpgmepp +endif + +ifeq "$(ENABLE_GIO)" "y" + ifneq "$(BUILD_GTK3)" "y" + BUILD_DEPS_ARCH += , libglib2.0-dev + endif +else + CONFIGURE_FLAGS += --disable-gio +endif + +ifeq "$(ENABLE_DCONF)" "y" + BUILD_DEPS += , libdconf-dev (>= 0.40) +else + CONFIGURE_FLAGS += --disable-dconf +endif + +ifeq ($(ENABLE_MERGELIBS),y) + CONFIGURE_FLAGS += --enable-mergelibs +endif + +ifeq ($(ENABLE_LTO),y) + CONFIGURE_FLAGS += --enable-lto + # see https://lists.debian.org/debian-devel-changes/2021/11/msg02548.html + BUILD_DEPS += , binutils (>= 2.37-9) [ppc64] +endif + + LIBERATION_FONT_RECOMMENDS += , fonts-liberation-sans-narrow + LIBERATION2_FONT_RECOMMENDS += , fonts-liberation (>= 1:2) +LIBERATION_FONTS_RECOMMENDS += $(LIBERATION2_FONT_RECOMMENDS) $(LIBERATION_FONT_RECOMMENDS) + +# go sure. if we explicitely disable LTO when it is enabled we don't want it to sneak in +# (and vice-versa). See https://lists.debian.org/debian-devel/2022/06/msg00092.html +ifeq ($(ENABLE_LTO),y) +export DEB_BUILD_MAINT_OPTIONS=optimize=+lto +# Replacing -flto=auto doesn't work since clang doesn't understand -flto=X (except thin) +DEB_CFLAGS_MAINT_STRIP += -flto=auto +DEB_CXXFLAGS_MAINT_STRIP += -flto=auto +DEB_LDFLAGS_MAINT_STRIP += -flto=auto +# save space +ifeq "$(SMALL_SYMBOLS)" "y" +DEB_CFLAGS_MAINT_STRIP += -ffat-lto-objects +DEB_CXXFLAGS_MAINT_STRIP += -ffat-lto-objects +DEB_LDFLAGS_MAINT_STRIP += -ffat-lto-objects +endif +export DEB_CFLAGS_MAINT_STRIP DEB_CXXFLAGS_MAINT_STRIP DEB_LDFLAGS_MAINT_STRIP +export DEB_CFLAGS_MAINT_APPEND DEB_CXXFLAGS_MAINT_APPEND DEB_LDFLAGS_MAINT_APPEND +else +export DEB_BUILD_MAINT_OPTIONS=optimize=-lto +endif + +ifeq ($(USE_GOLD),y) + CONFIGURE_FLAGS += --enable-ld=gold +else + # --enable-ld=gold is default for debug builds if found + # FIXME: Should we allow gold here nevertheless? configure + # prints the following with --disable-ld: + # * WARNING : Linker is not capable of creating gdb index, debugger startup will be slow + ifeq (debug,$(findstring debug,$(DEB_BUILD_OPTIONS))) + ifneq "$(ALLOW_GOLD)" "y" + CONFIGURE_FLAGS += --disable-ld + endif + endif +endif +ifneq (,$(findstring mips,$(DEB_HOST_ARCH))) +#10:46 < _rene_> can anyone shed a light on /<>/workdir/LinkTarget/Executable/bestreversemap: error while loading shared libraries: +# /<>/instdir/program/libuno_sal.so.3: ELF file ABI version invalid? both were built in the same LO build +#10:47 < _rene_> mips64el, apparently since gcc9 or new(er) binutils? +#10:47 < _rene_> on an other binary: +#10:47 < _rene_> file /home/rene/libreoffice-6.3.1~rc2/instdir/program/libunoidllo.so +# /home/rene/libreoffice-6.3.1~rc2/instdir/program/libunoidllo.so: ELF 64-bit LSB shared object, MIPS, MIPS64 rel2 version 1 (SYSV), +# dynamically linked, BuildID[sha1]=82f15433db9000b9dfee24ed07e2082ffb439dfd, with debug_info, not stripped +#10:47 < _rene_> (eller, mips64el chroot) +#[...] +#13:49 < aurel32> _rene_: the problem is the ABI version, ie those library have Version ABI: 5 instead of 0 for normal binaries +#13:50 < aurel32> the ABI version 5 will be used for gnu hash support in mips +#13:51 < aurel32> support has been added to binutils trunk recently, although the default is still sysv hash style +#13:51 < aurel32> and glibc support is still being reviewed, it might land in 2.31 +#13:51 < aurel32> previous version of libreoffice used -Wl,--hash-style=sysv +#13:52 < aurel32> now it seems it autodetect that binutils has gnu hash support and it passes -Wl,--hash-style=gnu +#13:52 < aurel32> but there is no support for the full toolchain yet +#13:54 < _rene_> so I need to force -Wl,--hash-style=sysv? +#13:54 < aurel32> --with-linker-hash-style +#13:54 < aurel32> Use linker with --hash-style=