1 # Maintainer: AndyRTR <andyrtr@archlinux.org>
2 # Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
4 # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
5 # Note: These are for Arch Linux use ONLY. For your own distribution, please
6 # get your own set of keys. Feel free to contact foutrelis@archlinux.org for
8 _google_default_client_id=413772536636.apps.googleusercontent.com
9 _google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4
11 pkgbase=libreoffice-still
12 pkgname=('libreoffice-still-sdk' 'libreoffice-still')
18 url="https://www.libreoffice.org/"
19 makedepends=('curl>=7.20.0' 'hunspell>=1.2.8' 'python' 'libwpd>=0.9.2' 'libwps'
20 'neon>=0.28.6' 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib'
21 'libxslt' 'redland' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'graphite' 'icu'
22 'lcms2' 'poppler>=0.24.0' 'libvisio' 'libetonyek' 'libodfgen' 'libcdr'
23 'libmspub' 'harfbuzz-icu' 'nss' 'hicolor-icon-theme'
24 'desktop-file-utils' 'shared-mime-info' 'gst-plugins-base-libs'
25 'sane' 'perl-archive-zip' 'zip' 'unzip' 'unixodbc' 'ant'
26 'gperf' 'gtk3' 'gtk4' 'qt5-base' 'plasma-framework' 'qt6-base' 'cppunit' 'beanshell' 'clucene'
27 'junit' 'libmythes' 'libwpg' 'java-environment=11' 'postgresql-libs' 'mariadb-libs' 'libgl'
28 'bluez-libs' 'gdb' 'doxygen' 'libatomic_ops' 'mdds'
29 'ttf-liberation' 'ttf-dejavu' 'ttf-carlito' 'libxinerama' 'libpagemaker' 'glm'
30 'libabw' 'libmwaw' 'libe-book' 'coin-or-mp' 'liblangtag' 'liborcus'
31 'libexttextcat' 'gobject-introspection' # 'libfbclient' 'libcmis'
32 'libtommath' 'libzmf' 'xmlsec' 'rxvt-unicode' 'gpgme' 'libwebp'
33 'libepubgen' 'libfreehand' 'libqxp' 'libstaroffice' 'boost' 'libnumbertext'
34 'abseil-cpp' 'clang' 'zxing-cpp'
35 'libffi' 'box2d' 'git'
37 options=('!lto') # using --enable-lto (for parallel link-time optimization)
38 _mirror="https://download.documentfoundation.org/libreoffice/src/${pkgver}"
39 #_mirror="https://dev-builds.libreoffice.org/pre-releases/src"
40 _additional_source_url="https://dev-www.libreoffice.org/src"
41 _additional_source_url2="https://dev-www.libreoffice.org/extern"
42 source=(${_mirror}/libreoffice{,-help,-translations}-${_LOver}.tar.xz{,.asc}
43 ${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
44 ${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip # keep old bundled version, new system version ftbs
45 ${_additional_source_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
46 ${_additional_source_url}/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
47 ${_additional_source_url}/language-subtag-registry-2021-03-05.tar.bz2
48 ${_additional_source_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
49 ${_additional_source_url}/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
50 ${_additional_source_url}/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
51 ${_additional_source_url}/pdfium-5058.tar.bz2
52 ${_additional_source_url}/dtoa-20180411.tgz
53 ${_additional_source_url}/lxml-4.1.1.tgz
54 ${_additional_source_url}/Firebird-3.0.7.33374-0.tar.bz2
55 ${_additional_source_url}/skia-m103-b301ff025004c9cd82816c86c547588e6c24b466.tar.xz
56 ${_additional_source_url}/libcmis-0.5.2.tar.xz
57 ${_additional_source_url}/dragonbox-1.1.3.tar.gz
58 ${_additional_source_url2}/8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar # for test suite
59 ${_additional_source_url2}/odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar # for test suite
60 ${_additional_source_url2}/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
61 ${_additional_source_url2}/185d60944ea767075d27247c3162b3bc-unowinreg.dll
62 libreoffice-boost-1.81.0-locale.patch::https://github.com/LibreOffice/core/commit/23dcd4339428.patch
63 make-pyuno-work-with-system-wide-module-install.diff
64 0001_Remove_dependency_on_BitArray.h_from_zxing-1.2.0.patch
65 soffice-template.desktop.in
66 libreoffice-still.sh libreoffice-still.csh)
67 noextract=(35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
68 798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
69 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
70 0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
71 language-subtag-registry-2021-03-05.tar.bz2
72 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
73 d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
74 ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
78 Firebird-3.0.7.33374-0.tar.bz2
79 skia-m103-b301ff025004c9cd82816c86c547588e6c24b466.tar.xz
81 dragonbox-1.1.3.tar.gz
82 8249374c274932a21846fa7629c2aa9b-officeotron-0.7.4-master.jar # for test suite
83 odfvalidator-1.2.0-incubating-SNAPSHOT-jar-with-dependencies-971c54fd38a968f5860014b44301872706f9e540.jar # for test suite
84 f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
85 185d60944ea767075d27247c3162b3bc-unowinreg.dll
87 validpgpkeys=('C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3') # LibreOffice Build Team (CODE SIGNING KEY) <build@documentfoundation.org>
88 sha256sums=('743d91f2a138a678380fa7a8ecb5b2401d994b067b330750f03ad8f523a2fb20'
90 'bdc416137981671dac050f4acd387acccef6efb98af6dc1fbf21124f34e2208f'
92 'ef079ad040a59afc1c3ef8100c66a090e17b78156f613652702104a62add5e71'
94 '64585ac36a81291a58269ec5347e7e3e2e8596dbacb9221015c208191333c6e1'
95 '1fb458d6aab06932693cc8a9b6e4e70944ee1ff052fa63606e3131df34e21753'
96 '75823776fb51a9c526af904f1503a7afaaab900fba83eda64f8a41073724c870'
97 '983941d31ee8d366085cadf28db75eb1f5cb03ba1e5853b98f12f7f51c63b776'
98 'ce80e8face06bf2ada363e0c159e3f990c4116fdae9232ca43e6369aa82bf16a'
99 'd30b13f4ba2e3b6a2d4f020c0dee0a9fb9fc6fbcc2d561f36b78da4bf3802370'
100 '1b5b24f7bc543c0362b667692f78db8bab4ed6dafc6172f104d0bd3757d8a133'
101 '233f66e8d25c5dd971716d4200203a612a407649686ef3b52075d04b4c9df0dd'
102 'eaf4ce9fad32b5d951c524139df23119b66c67720057defb97acab2dfb2582ac'
103 '0082d0684f7db6f62361b76c4b7faba19e0c7ce5cb8e36c4b65fea8281e711b4'
104 '940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a5cfd0f40e'
105 'acb85cedafa10ce106b1823fb236b1b3e5d942a5741e8f8435cc8ccfec0afe76'
106 'c094a6247e44104beaaa0d00c825beb6baf1a8e532dc22214747495317a65bd9'
107 'd7b18d9602190e10d437f8a964a32e983afd57e2db316a07d87477a79f5000a2'
108 '09d63b05e9c594ec423778ab59b7a5aa1d76fdd71d25c7048b0258c4ec9c3384'
109 'f2443f27561af52324eee03a1892d9f569adc8db9e7bca55614898bc2a13a770'
110 '984f2a479df79e27e7b01a5815ac53ae64e07746b882262d8a64566494515504'
111 'f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140'
112 'eafde646a7dbe46d20c291685b0beac2382174d78d66ee990e229a1bf6e6cec6'
113 '9754c1c9025dd34b010b3e9c9c39ef2f850331e486b5d0adbf5c86f554259b04'
114 'c463654a73ecfbc242ff109726fb4faecdbfb3d91affafe919b24bea65afb563'
115 'fa0073dee8fc0519b84ed6af6fa9769b88abb24e694c314344c4606478101547'
116 'd0be8099cbee3c9dfda694a828149b881c345b204ab68826f317580aafb50879'
117 'b43ed267643fc5ced803dca010427b12b1f10db485173ccb19efb3395e60c82e'
118 '66f2cb5d2ff9909ee9633aea73d5306fc8c4ff358fa526f45d9994210d3e23ff')
122 cd libreoffice-$_LOver
124 # move external sources into place
125 mkdir "${srcdir}"/ext_sources && pushd "${srcdir}"/ext_sources
126 for source in "${noextract[@]}"; do
127 ln -s "${srcdir}"/$source .
131 # unowinreg.dll must be a file not a symlink or the result will become a broken symlink
132 # /usr/share/libreoffice/sdk/classes/win/unowinreg.dll -> /build/libreoffice/src/185d60944ea767075d27247c3162b3bc-unowinreg.dll
133 rm "${srcdir}"/ext_sources/185d60944ea767075d27247c3162b3bc-unowinreg.dll
134 cp -f "${srcdir}"/185d60944ea767075d27247c3162b3bc-unowinreg.dll "${srcdir}"/ext_sources
136 # https://gerrit.libreoffice.org/c/core/+/143343
137 patch -Np1 -i "${srcdir}"/libreoffice-boost-1.81.0-locale.patch
139 # fix not upstreamable pyuno paths - FS#54250
140 patch -Np1 -i "${srcdir}"/make-pyuno-work-with-system-wide-module-install.diff
142 # allow build with recent syytem xzing
143 patch -Np1 -i "${srcdir}"/0001_Remove_dependency_on_BitArray.h_from_zxing-1.2.0.patch
145 #use the CFLAGS but remove the LibO overridden ones
148 -O?|-pipe|-Wall|-g|-fexceptions) continue;;
150 ARCH_FLAGS="$ARCH_FLAGS $i"
155 cd libreoffice-$_LOver
157 # strip -s from Makeflags in case you use it to shorten build logs
158 _MAKEFLAGS=${MAKEFLAGS/-s/}
160 # Build only minimal debug info to reduce size (~1.2GB -> ~225MB)
161 CFLAGS=${CFLAGS/-g /-g1 }
162 CXXFLAGS=${CXXFLAGS/-g /-g1 }
164 # http://site.icu-project.org/download/61#TOC-Migration-Issues
165 CPPFLAGS+=' -DU_USING_ICU_NAMESPACE=1'
167 # fix build with qt6 expecting libexec path
168 export qt6_libexec_dirs="/usr/lib/qt6"
170 ./autogen.sh --with-extra-buildid="${pkgver}-${pkgrel}" \
171 --with-vendor="Arch Linux" \
172 --enable-split-app-modules \
173 --with-parallelism=${_MAKEFLAGS/-j/} \
174 --with-external-tar="${srcdir}/ext_sources" \
175 --disable-fetch-external \
176 --enable-release-build \
177 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc \
178 --libdir=/usr/lib --mandir=/usr/share/man \
191 --enable-introspection \
195 --enable-python=system \
196 --enable-scripting-beanshell \
197 --enable-scripting-javascript \
199 --disable-report-builder \
200 --enable-ext-wiki-publisher \
201 --enable-ext-nlpsolver \
203 --with-system-libcdr \
205 --without-myspell-dicts \
206 --with-system-libvisio \
207 --without-system-libcmis \
208 --with-system-libmspub \
209 --with-system-libexttextcat \
210 --with-system-orcus \
211 --with-system-liblangtag \
212 --with-system-libodfgen \
213 --with-system-libmwaw \
214 --with-system-libetonyek \
215 --with-system-libfreehand \
216 --without-system-firebird \
217 --with-system-zxing \
218 --with-system-libtommath \
219 --with-system-libatomic-ops \
220 --with-system-libebook \
221 --with-system-libabw \
222 --with-system-coinmp \
223 --with-system-dicts \
224 --with-external-dict-dir=/usr/share/hunspell \
225 --with-external-hyph-dir=/usr/share/hyphen \
226 --with-external-thes-dir=/usr/share/mythes \
227 --with-system-beanshell \
228 --with-system-cppunit\
229 --with-system-graphite\
231 --with-system-libnumbertext \
232 --with-system-libwpg \
233 --with-system-libwps \
234 --with-system-redland\
235 --with-system-libzmf \
236 --with-system-gpgmepp \
237 --with-system-libstaroffice \
238 --with-jdk-home="/usr/lib/jvm/default" \
239 --with-ant-home="/usr/share/ant"\
242 --with-system-cairo \
244 --with-system-mythes \
245 --with-system-headers \
246 --without-system-hsqldb \
247 --with-system-clucene \
248 --without-system-dragonbox \
249 --without-system-libfixmath \
250 --with-gdrive-client-id=${_google_default_client_id} \
251 --with-gdrive-client-secret=${_google_default_client_secret} \
252 --disable-dependency-tracking
257 mkdir "${srcdir}"/fakeinstall
258 make DESTDIR="${srcdir}"/fakeinstall distro-pack-install
262 # cd "${srcdir}"/build
266 package_libreoffice-still-sdk() {
267 pkgdesc="Software Development Kit for LibreOffice maintenance branch"
268 depends=('libreoffice-still' 'gcc-libs' 'sh' 'make' 'zip' 'gcc' 'java-environment')
269 provides=('libreoffice-sdk')
270 conflicts=('libreoffice-fresh-sdk')
272 for dir in $(grep -h ^%dir libreoffice-$_LOver/file-lists/sdk{,_doc}_list.txt); do
273 install -dm755 "${pkgdir}"/${dir/\%dir/}
276 for file in $(grep -h -v ^%dir libreoffice-$_LOver/file-lists/sdk{,_doc}_list.txt); do
277 dirname=$(dirname $file)
278 [[ -d "${pkgdir}"/$dirname ]] || install -dm755 "${pkgdir}"/$dirname
279 mv "${srcdir}"/fakeinstall/${file} "${pkgdir}"/$file
282 # fix environment path to keep compatibility with other java-environments
283 sed -i -e "s:\/usr\/lib\/jvm\/java-7-openjdk:\$J2SDKDIR:" \
284 "${pkgdir}"/usr/lib/libreoffice/sdk/setsdkenv_unix.sh
287 find "${pkgdir}"/usr/lib/libreoffice/sdk/examples -type f -exec chmod -x {} +
289 # add LibreOfficeKit headers; FS#48066
290 install -dm755 "${pkgdir}"/usr/include/LibreOfficeKit
291 install -v -m644 "${srcdir}"/libreoffice-$_LOver/include/LibreOfficeKit/* "${pkgdir}"/usr/include/LibreOfficeKit
294 package_libreoffice-still() {
295 pkgdesc="LibreOffice maintenance branch"
296 depends=('curl>=7.20.0' 'hunspell>=1.2.8' 'python' 'libwpd>=0.9.2' 'libwps'
297 'neon>=0.28.6' 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl'
298 'libxslt' 'redland' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'graphite' 'icu'
299 'lcms2' 'poppler>=0.24.0' 'libvisio' 'libetonyek' 'libodfgen' 'libcdr'
300 'libmspub' 'harfbuzz-icu' 'nss' 'clucene' 'hicolor-icon-theme'
301 'desktop-file-utils' 'shared-mime-info' 'libpagemaker'
302 'libxinerama' 'libabw' 'libmwaw' 'libe-book' 'libcups'
303 'liblangtag' 'libexttextcat' 'liborcus' 'libwebp' # 'libfbclient' 'libcmis'
304 'libtommath' 'libzmf' 'libatomic_ops' 'xmlsec' 'libnumbertext' 'gpgme'
305 'libfreehand' 'libstaroffice' 'libepubgen' 'libqxp' 'libepoxy' 'box2d'
308 optdepends=('java-runtime: adds java support'
309 'java-environment: required by extension-wiki-publisher and extension-nlpsolver'
310 'pstoedit: translates PostScript and PDF graphics into other vector formats'
311 'libmythes: for use in thesaurus'
312 'beanshell: interactive java -- good for prototyping/macros'
313 'libwpg: library for importing and converting WordPerfect Graphics format'
314 'sane: for scanner access'
315 'unixodbc: adds ODBC database support'
316 'gst-plugins-base-libs: for multimedia content, e.g. in Impress'
317 'libpaper: takes care of papersize'
318 'postgresql-libs: for postgresql-connector'
319 'mariadb-libs: for mysql-connector'
320 'coin-or-mp: required by the Calc solver'
321 'gtk3: for GTK3 integration'
322 'gtk4: for GTK4 integration (experimental)'
323 'kio: for KF5 KDE desktop integration'
324 'qt6-base: for QT6 desktop integration')
325 backup=(etc/libreoffice/sofficerc
326 etc/libreoffice/bootstraprc
327 etc/libreoffice/psprint.conf
328 etc/profile.d/libreoffice-still.sh
329 etc/profile.d/libreoffice-still.csh)
330 provides=('libreoffice' 'libreoffice-en-US')
331 conflicts=('libreoffice-fresh')
333 mv fakeinstall/* "${pkgdir}"/
335 # put configuration files into place
336 install -dm755 "${pkgdir}"/etc/libreoffice
337 install -m644 "${pkgdir}"/usr/lib/libreoffice/program/{bootstraprc,sofficerc} \
338 "${pkgdir}"/etc/libreoffice/
339 install -m644 "${pkgdir}"/usr/lib/libreoffice/share/psprint/psprint.conf \
340 "${pkgdir}"/etc/libreoffice/
342 # install dummy links to make them found by LibO
343 cd "${pkgdir}"/usr/lib/libreoffice/program/
344 ln -vsf /etc/libreoffice/{bootstraprc,sofficerc} .
345 cd "${pkgdir}"/usr/lib/libreoffice/share/psprint/
346 ln -vsf /etc/libreoffice/psprint.conf .
348 # allow to preset desired VLC
349 install -dm755 "${pkgdir}"/etc/profile.d
350 install -m644 "${srcdir}"/libreoffice-still.{sh,csh} "${pkgdir}"/etc/profile.d/
352 # make pyuno find its modules
353 local site_packages=$(python -c "import site; print(site.getsitepackages()[0])")
355 install -dm755 "${pkgdir}"/$site_packages
356 ln -svf /usr/lib/libreoffice/program/uno.py \
357 "${pkgdir}"/$site_packages/uno.py
358 ln -svf /usr/lib/libreoffice/program/unohelper.py \
359 "${pkgdir}"/$site_packages/unohelper.py
361 # add a symlink required for gnome-documents; FS#51887
362 # https://lists.freedesktop.org/archives/libreoffice/2016-March/073787.html
363 ln -svf /usr/lib/libreoffice/program/liblibreofficekitgtk.so \
364 "${pkgdir}"/usr/lib/liblibreofficekitgtk.so
367 rm -rf "${pkgdir}"/usr/share/libreoffice/sdk
369 # add application descriptions
370 install -dm755 "${pkgdir}"/usr/share/metainfo
371 install -v -m644 "${srcdir}"/libreoffice-$_LOver/sysui/desktop/appstream-appdata/*.xml \
372 "${pkgdir}"/usr/share/metainfo
374 # add kde filemanager templates; FS#61662 - file taken from Debian
375 install -dm755 "${pkgdir}"/usr/share/templates/.source
376 install -v -m644 "${srcdir}"/libreoffice-$_LOver/extras/source/shellnew/soffice.* \
377 "${pkgdir}"/usr/share/templates/.source
379 cat "${srcdir}"/soffice-template.desktop.in \
380 | sed -e "s/@APP@/Writer/" \
381 | sed -e "s/@EXT@/odt/" \
382 | sed -e "s/@TYPE@/text/" \
383 > "${pkgdir}"/usr/share/templates/soffice.odt.desktop
384 cat "${srcdir}"/soffice-template.desktop.in \
385 | sed -e "s/@APP@/Calc/" \
386 | sed -e "s/@EXT@/ods/" \
387 | sed -e "s/@TYPE@/spreadsheet/" \
388 > "${pkgdir}"/usr/share/templates/soffice.ods.desktop
389 cat "${srcdir}"/soffice-template.desktop.in \
390 | sed -e "s/@APP@/Impress/" \
391 | sed -e "s/@EXT@/odp/" \
392 | sed -e "s/@TYPE@/presentation/" \
393 > "${pkgdir}"/usr/share/templates/soffice.odp.desktop
394 cat "${srcdir}"/soffice-template.desktop.in \
395 | sed -e "s/@APP@/Draw/" \
396 | sed -e "s/@EXT@/odg/" \
397 | sed -e "s/@TYPE@/drawing/" \
398 > "${pkgdir}"/usr/share/templates/soffice.odg.desktop
400 # make all i18n lang packages with help section ('1') available to
401 # fix "F1" not opening translated offline help opening in browser
402 # see also /usr/lib/libreoffice/help/en-US/langnames.js
403 echo "var languagesSet = new Set(['en-US','am','ar','ast','bg','bn',\
404 'bn-IN','bo','bs','ca','ca-valencia','cs','da','de','dz','el',\
405 'en-GB','en-ZA','eo','es','et','eu','fi','fr','gl','gu','he',\
406 'hi','hr','hu','id','is','it','ja','ka','km','ko','lo','lt','lv',\
407 'mk','nb','ne','nl','nn','om','pl','pt','pt-BR','ro','ru','si',\
408 'sid','sk','sl','sq','sv','ta','tg','tr','ug','uk','vi','zh-CN','zh-TW'])" \
409 > "${pkgdir}"/usr/lib/libreoffice/help/languages.js