# Contributor: Jens Staal <staal1978@gmail.com>
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Timo Teräs <timo.teras@iki.fi>
pkgname=libreoffice
pkgver=5.3.4.2
pkgrel=2
pkgdesc="LibreOffice - Meta package for the full office suite"
url="http://www.libreoffice.org/"
arch="all"
license="MPL2"
depends_dev="cups-dev libjpeg-turbo-dev boost-dev clucene-dev libe-book-dev icu-dev icu
	libetonyek-dev libwpd-dev libwpg-dev libmspub-dev libmwaw-dev libpagemaker-dev
	libvisio-dev libcmis-dev lcms2-dev cppunit-dev freetype-dev libabw-dev libwps-dev
	libxslt-dev postgresql-dev mdds-dev glm-dev glu-dev glew-dev vigra-dev
	unixodbc-dev openldap-dev libressl-dev nss-dev npapi-sdk hunspell-dev
	libxrender-dev libxrandr-dev neon-dev apr-dev redland-dev libexttextcat-dev
	gconf-dev bluez-dev gstreamer-dev gst-plugins-base-dev gtk+3.0-dev
	poppler-dev cairo-dev hyphen-dev mythes-dev python3-dev harfbuzz-dev
	libfreehand-dev libodfgen-dev libcdr-dev libzmf-dev libstaroffice-dev
	liborcus-dev openjdk8 apache-ant junit"
makedepends="$depends_dev autoconf automake tar coreutils findutils ucpp gperf
	bison flex zip perl perl-archive-zip sed tar libxml2-utils doxygen paxmark"
# GNU sed is needed for in i18npool/CustomTarget_localedata.mk
install=""
subpackages="$pkgname-base $pkgname-calc $pkgname-common $pkgname-draw
	$pkgname-gnome $pkgname-impress $pkgname-math $pkgname-connector-postgres $pkgname-writer
	$pkgname-sdk $pkgname-sdk-doc:sdk_doc libreofficekit"
depends="$pkgname-base $pkgname-calc $pkgname-common $pkgname-draw $pkgname-impress $pkgname-math
	$pkgname-connector-postgres $pkgname-writer libreofficekit"
_addsrcurl="http://dev-www.libreoffice.org/src"
case $pkgver in
*.*.*.*) _v=${pkgver%.*};;
*.*.*) _v=$pkgver;;
esac

# grep LIBXMLSEC_TARBALL download.lst
source="http://download.documentfoundation.org/libreoffice/src/${_v}/libreoffice-$pkgver.tar.xz
	http://download.documentfoundation.org/libreoffice/src/${_v}/libreoffice-dictionaries-$pkgver.tar.xz
	http://download.documentfoundation.org/libreoffice/src/${_v}/libreoffice-translations-$pkgver.tar.xz
	$_addsrcurl/86b1daaa438f5a7bea9a52d7b9799ac0-xmlsec1-1.2.23.tar.gz
	$_addsrcurl/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
	$_addsrcurl/commons-logging-1.2-src.tar.gz
	$_addsrcurl/beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip
	$_addsrcurl/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip
	$_addsrcurl/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
	$_addsrcurl/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
	$_addsrcurl/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip
	$_addsrcurl/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
	$_addsrcurl/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip
	$_addsrcurl/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip
	$_addsrcurl/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip
	$_addsrcurl/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip
	$_addsrcurl/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip
	$_addsrcurl/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
	$_addsrcurl/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
	$_addsrcurl/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
	http://dev-www.libreoffice.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll

	linux-musl.patch
	fix-execinfo.patch
	fix-includes.patch
	"

languages=""
add_lang() {
	local pkglang="${3:-$1}"
	subpackages="$subpackages $pkgname-lang-${1}:_lang_${1}"
	languages="$languages ${pkglang/_/-}"
	eval "_lang_$1() { pkgdesc=\"LibreOffice - $2 language pack\"; depends=\"\"; _split lang_${pkglang}; }"
}
add_lang af "Afrikaans"
add_lang am "Amharic"
add_lang ar "Arabic"
add_lang as "Assamese"
add_lang ast "Asturian"
add_lang be "Belarusian"
add_lang bg "Bulgarian"
add_lang bn "Bengali"
add_lang bn_in "Bengali (India)" bn_IN
add_lang bo "Tibetan"
add_lang br "Breton"
add_lang brx "Bodo"
add_lang bs "Bosnian"
add_lang ca "Catalan"
add_lang ca_valencia "Catalan (Valencian)"
add_lang cs "Czech"
add_lang cy "Welsh (Cymraeg)"
add_lang da "Danish"
add_lang de "German"
add_lang dgo "Dogri proper"
add_lang dz "Dzongkha"
add_lang el "Greek"
add_lang en_gb "English (UK)" en_GB
add_lang en_us "English (US)" en_US
add_lang en_za "English (South Africa)" en_ZA
add_lang eo "Esperanto"
add_lang es "Spanish"
add_lang et "Estonian"
add_lang eu "Basque"
add_lang fa "Persian (Farsi)"
add_lang fi "Finnish"
add_lang fr "French"
add_lang ga "Irish"
add_lang gd "Scottish Gaelic"
add_lang gl "Galician"
add_lang gu "Gujarati"
add_lang gug "Guaraní (Paraguay)"
add_lang he "Hebrew"
add_lang hi "Hindi"
add_lang hr "Croatian"
add_lang hu "Hungarian"
add_lang id "Indonesian"
add_lang is "Icelandic"
add_lang it "Italian"
add_lang ja "Japanese"
add_lang ka "Georgian"
add_lang kk "Kazakh"
add_lang km "Khmer"
add_lang kmr_latn "Kurmanji Kurdish (Latin)" kmr_Latn
add_lang kn "Kannada"
add_lang ko "Korean"
add_lang kok "Konkani"
add_lang ks "Kashmiri"
add_lang lb "Luxembourgish"
add_lang lo "Lao"
add_lang lt "Lithuanian"
add_lang lv "Latvian"
add_lang mai "Maithili"
add_lang mk "Macedonian"
add_lang ml "Malayalam"
add_lang mn "Mongolian"
add_lang mni "Meithei (Manipuri)"
add_lang mr "Marathi"
add_lang my "Burmese"
add_lang nb "Norwegian (Bokmal)"
add_lang ne "Nepali"
add_lang nl "Dutch"
add_lang nn "Nynorsk"
add_lang nr "Ndebele (South)"
add_lang nso "Northern Sotho"
add_lang oc "Occitan"
add_lang om "Oromo"
add_lang or "Oriya"
add_lang pa_in "Punjabi (India)" pa_IN
add_lang pl "Polish"
add_lang pt "Portuguese"
add_lang pt_br "Portuguese (Brazil)" pt_BR
add_lang ro "Romanian"
add_lang ru "Russian"
add_lang rw "Kinyarwanda"
add_lang sa_in "Sanskrit (India)" sa_IN
add_lang sat "Santali"
add_lang sd "Sindhi"
add_lang si "Sinhala"
add_lang sid "Sidamo"
add_lang sk "Slovak"
add_lang sl "Slovenian"
add_lang sq "Albanian"
add_lang sr "Serbian"
add_lang sr_latn "Serbian (Latin)" sr_Latn
add_lang ss "Swati"
add_lang st "Southern Sotho"
add_lang sv "Swedish"
add_lang sw_tz "Swahili (Tanzania)" sw_TZ
add_lang ta "Tamil"
add_lang te "Telugu"
add_lang tg "Tajik"
add_lang th "Thai"
add_lang tn "Tswana"
add_lang tr "Turkish"
add_lang ts "Tsonga"
add_lang tt "Tatar"
add_lang ug "Uyghur"
add_lang uk "Ukrainian"
add_lang uz "Uzbek"
add_lang ve "Venda"
add_lang vi "Vietnamese"
add_lang xh "Xhosa"
add_lang zh_cn "Simplified Chinese (Peoples Republic of China)" zh_CN
add_lang zh_tw "Traditional Chinese (Taiwan)" zh_TW
add_lang zu "Zulu"


# help abuild find shared objects in rpath
ldpath="/usr/lib/libreoffice/program:/usr/lib/libreoffice/ure/lib/"

builddir="$srcdir"/libreoffice-$pkgver
unpack() {
	if [ -z "$force" ]; then
		verify || return 1
		initdcheck || return 1
	fi
	mkdir -p "$srcdir"
	msg "Unpacking sources..."

	local u
	for u in $source; do
		local s="$SRCDEST/$(filename_from_uri $u)"
		case $s in
		*/libreoffice-*.tar.xz)
			msg "Unpacking $s..."
			unxz -c "$s" | tar -C "$srcdir" -x || return 1;;
		esac
	done
}

prepare() {
	cd "$builddir"
	default_prepare || return 1
	NOCONFIGURE=1 ./autogen.sh
}

build() {
	cd "$builddir"
	# boost-1.59
	export CPPFLAGS="$CPPFLAGS -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED"
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--localstatedir=/var \
		--with-vendor="Alpine Linux" \
		--disable-online-update \
		--disable-fetch-external \
		--disable-dependency-tracking \
		--enable-release-build \
		--enable-split-app-modules \
		--enable-python=system \
		--with-alloc=system \
		--with-tls=openssl \
		--with-system-libs \
		--with-system-dicts \
		--with-system-ucpp \
		--with-external-dict-dir=/usr/share/hunspell \
		--with-external-hyph-dir=/usr/share/hyphen \
		--with-external-tar="$srcdir" \
		--with-lang="$languages" \
		--with-jdk-home="/usr/lib/jvm/default-jvm" \
		--with-ant-home="/usr/share/java/apache-ant" \
		--without-system-jars \
		--without-junit \
		--without-fonts \
		--without-system-sane \
		--without-myspell-dicts \
		--disable-firebird-sdbc \
		--disable-graphite \
		--disable-coinmp \
		--disable-lpsolve \
		--disable-gltf \
		--disable-liblangtag \
		--disable-gtk \
		--enable-gtk3 \
		|| return 1
	# adding '-isystem /usr/include' make things break with gcc6
	# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823145
	sed -i -e 's:-isystem /usr/include[^/]::g' config_host.mk || return 1

	make build-nocheck || return 1
	# build libreofficekit
	cd libreofficekit && make || return 1
}

package() {
	cd "$builddir"
	make DESTDIR="$pkgdir"/../all distro-pack-install || return 1
}

_split() {
	local i
	for i in $(grep -v ^%dir $builddir/file-lists/${1}_list.txt | sort -u); do
		dirname="$(dirname $i)"
		[ -d "$subpkgdir/$dirname" ] || install -dm755 "$subpkgdir/$dirname"
		mv "$pkgdir"/../all/"$i" "$subpkgdir"/"$i" || return 1
	done
}

base() {
	pkgdesc="LibreOffice - Database frontend"
	depends="libreoffice-common"
	_split base
}

calc() {
	pkgdesc="LibreOffice - Spreadsheet"
	depends="libreoffice-common"
	_split calc
}

common() {
	pkgdesc="LibreOffice - Common files"
	depends="libreoffice-lang-en_us"
	_split common || return 1
	paxmark -m \
		"$subpkgdir"/usr/lib/libreoffice/program/soffice.bin \
		"$subpkgdir"/usr/lib/libreoffice/program/unopkg.bin
}

draw() {
	pkgdesc="LibreOffice - Drawing application"
	depends="libreoffice-common"
	_split draw
}

gnome() {
	pkgdesc="LibreOffice - GNOME integration"
	depends="libreoffice-common"
	_split gnome
}

impress() {
	pkgdesc="LibreOffice - Presentation application"
	depends="libreoffice-common"
	_split impress
}

libreofficekit() {
	mkdir -p "$subpkgdir"/usr/include
	cp -a "$builddir"/include/LibreOfficeKit "$subpkgdir"/usr/include || return 1
}

math() {
	pkgdesc="LibreOffice - Equation editor"
	depends="libreoffice-common"
	_split math
}

postgres() {
	pkgdesc="LibreOffice - Connector for PostgreSQL database"
	depends="libreoffice-base"
	_split postgresql
}

writer() {
	pkgdesc="LibreOffice - Word Processor"
	depends="libreoffice-common"
	_split writer
}

sdk() {
	pkgdesc="LibreOffice - SDK"
	depends="libreoffice-common"
	_split sdk
}

sdk_doc() {
	pkgdesc="LibreOffice - SDK documentation"
	depends="libreoffice-common"
	_split sdk_doc
}

sha512sums="ac3b0a0615577faf6c2529b7ec888fd7969d32f38d8b83a3747535bc408e8d2ef2e724f5b1840ae79a219bb855584be87f10ab26ef101afe04dd15d224e6ebc0  libreoffice-5.3.4.2.tar.xz
db4ee68454298903c902aaeed6e940e797bda00cba48f0598a3529c7d77f23d01b93e5feb99360f41bb6817008fb45fdd3aaa8dccc6b0c405cda2247633cd150  libreoffice-dictionaries-5.3.4.2.tar.xz
2b9cf188f246c8dfc6e847d9c33c6ab8c11830601222c71203074b862b67f245958eb843d6f15866e896202d068476d820a19543e249447e3bedbbb80e316ba5  libreoffice-translations-5.3.4.2.tar.xz
20b0c0ba517c764fcd32165254ae6dcdda8fb72ca3279dbfcf42d899e91d380b78d9be3b1c3d32910eaad5544a4fc51218e32579b10e6b6639338a7bd8b1ddc5  86b1daaa438f5a7bea9a52d7b9799ac0-xmlsec1-1.2.23.tar.gz
a231eba4a1baca11766ef292ab45e302081115477fe23018652882923308856835cf8c9ecba61a5cf22543474ccef3136965d794a90c9e4e9e6dcc21f9af6e1a  17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
9f3761184950f2f13e85d8bc447709ab8be631dfd231b4f053f8147468db1bf71fb116ddba95e39f4afc4cf28c742e07d40c7a637f28004a60dc13935f9609f9  commons-logging-1.2-src.tar.gz
a04eca6a57807358bd4f8d017a2eeaa58403ef51fab11fc46ab089113a0ff5f66aaa793d3fc57b484334cbf51ed388a90d8d72d1e5819c8248cc0113ac928a77  beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip
a7c3044a0a7c67881f78eddc4b3faf05e29b20755a59cdbb9a0a49bd21be5aaa95d4ea5eaabdd6f005a421981fb7c55fee590d4c9592fe363ba27ae590652bd4  39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip
9091d3628d9c75c068507537afc9e10bfb79c1abfd36ad697af3d592a1cc049ba6640f665bfc53cc520b6a26c21d70b0275106843444b441484c2178f2784743  eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
71164f5e052db4fc16d1eb6ceb66d2b483d4912d874e371399047761e1d82e95d14288be5a7952c40f0ce39366f0706e726720e6e7171a00ce7bb55632cbf10c  d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
17ba9d2c0376fb7326d53bb1e3796610176a1af426d1b9073b5f7cf06c93d865e585c495e75c52fb8e426d7c453e751356a9ca9a54dc821ddadb6c8160ed5ba6  97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip
58c1aa3965bf3a5f5d0facb67a5e42cec04e3f74e59cd7348ea2a9f6d9cafdce5552677c6b6d9c4cf2b31f52751695f2e53b2cee658e5f2eacb1393534a53c0e  ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
9fe106bbdb55365f589246e5a0d10bbe9b35224132b66a1823dc6361633a67f2acc0e8c393dc7ed70d086858d16d242b8806b8b2184c98e3d20d0be85bed9c44  3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip
8eaa9eed3bff16a16483d0754756c181089eb705ea34ded7f9f6db90a591cbce3f0551f28d097bd2f44de813cb818720c430e79e516939e0398b72bf4614f4cd  3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip
12ab17a4db3f7c834b21e59ff6f6f6456630d8626db7fb908867b20204295d4fba8969e79a3694ca66cb24e9f0e5a0fa4b9d2d3f748691b7f93985f9e666ce5f  8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip
c1a15ebbfe817ec79d4b3f1c97d096bf8511737d7d35d97302856ccfb3de14a1cd16bd31000415d9ab24bbd9ef770d37855cee4b819ff0e8fca2f2766920a114  f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip
4476024e7f307617719714fbf0999409aa11d730bc316f833bb6627d1b83abb42460417be588c193ecb49d6b926dd1f411934d8a8abebe00a3e85c0047dad0a6  db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip
654d2408c11349c90ae7d80b0c1997ee831004bc4ee36a706a0d8a84617fd0f82a97c5b45ab2388d60085afaec59a02eada007a8a1e14c3b366cabd36b7607ec  ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
ec5ae23c8fe2f5efc377f7a9665039afadf28b4d8f2791379296766a5fbc9a3bf7548f9b0e3b3b07762229ec733a92ccbb69791ee0318c9c6f78f8e847253d3f  798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
4a48f1e32907fb2dee601cda3cd7a0d7198b2d51f2a572b647f1e93f901fd511eef3567676e52dfb1723a2cdfbc01f2015ca0bb22903b0bc1476dd618cc9aa8a  35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
854b8ae29b57b40ba6bb6ff66e723a0e8dad053fcc2849f0ad763cd8a31352f4aeba9636fd4e3f0f2a0cd985a6f49b4261b9ace68d6be821ed42cfa7a73eb13c  185d60944ea767075d27247c3162b3bc-unowinreg.dll
10a1ee056ebce41b2f6d3863b220f8529f70b7fd159ff2d36967ad96d9653166737db4ba865c10769c37afad553f59fb9629437c0d8a1afbbff963fc36dbbf1a  linux-musl.patch
567123f990c4a47c2e4cebf99f3486150740015e647ca2b2521e606f3350fc55ceda6c7ac031302da34e8fc90747d66619334fcfda4e7b8998456fe3619ab860  fix-execinfo.patch
c9e0b05640d7d0e6053b8dd4735664d761a7d381c5b5cbda059fb7b38ab28531c014b6d38f58a0e1f7171a43d62f04d8ecbb7b6b008d0ad30017228ec7e6601a  fix-includes.patch"