311 lines
10 KiB
BlitzBasic
311 lines
10 KiB
BlitzBasic
require ${BPN}.inc
|
|
|
|
inherit gobject-introspection bash-completion gtk-icon-cache mime mime-xdg
|
|
|
|
MIME_XDG_PACKAGES = "${PN}"
|
|
|
|
SRC_URI += " \
|
|
http://download.documentfoundation.org/libreoffice/src/${DIRV}/${BPN}-translations-${PV}.tar.xz;name=translations \
|
|
file://0001-configure.ac-skip-some-cross-compile-sections-they-d.patch \
|
|
file://0002-Makefile.in-avoid-building-target-cross-toolset.patch \
|
|
file://0003-remove-paths-for-gb_Executable_get_command.patch \
|
|
file://0004-ensure-that-native-gendict-build-by-libreoffice-is-u.patch \
|
|
file://0005-add-a-new-gb_Rdb_get_target_for_build_native-and-use.patch \
|
|
file://0006-Package.mk-workaround-icu-missing-error-for-without-.patch \
|
|
file://0007-configure.ac-avoid-finding-calling-pg_config.patch \
|
|
file://0008-avoid-downloading-by-git-submodules.patch \
|
|
file://0009-Use-wrappers-for-gobject-introspection.patch \
|
|
file://0010-Support-install-to-find-bash-completion.in.patch \
|
|
file://0011-Skip-isystem-check.patch \
|
|
"
|
|
|
|
SRC_URI[translations.sha256sum] = "c8053f863c95c31a83a079bb2eefd9b666ffd59e40c4344098c04a924a54f6e1"
|
|
|
|
DEPENDS += " \
|
|
${BPN}-native \
|
|
\
|
|
curl \
|
|
icu \
|
|
expat \
|
|
harfbuzz \
|
|
openldap \
|
|
nss \
|
|
zlib \
|
|
jpeg \
|
|
libpng \
|
|
libatomic-ops \
|
|
lcms \
|
|
harfbuzz \
|
|
cppunit \
|
|
glew \
|
|
openssl \
|
|
cups \
|
|
gstreamer1.0-plugins-base \
|
|
tiff \
|
|
\
|
|
glm \
|
|
redland \
|
|
libabw \
|
|
libwps \
|
|
libwpg \
|
|
libwpd \
|
|
libcdr \
|
|
librevenge \
|
|
libfreehand \
|
|
libe-book \
|
|
libmwaw \
|
|
libetonyek \
|
|
libvisio \
|
|
libmspub \
|
|
libpagemaker \
|
|
libodfgen \
|
|
libgltf \
|
|
libexttextcat \
|
|
clucene-core \
|
|
hunspell \
|
|
mythes \
|
|
hyphen \
|
|
graphite2 \
|
|
liblangtag \
|
|
lpsolve \
|
|
gpgme \
|
|
mdds-2.0 \
|
|
"
|
|
|
|
# necessary to let the call for python-config succeed
|
|
export BUILD_SYS
|
|
export HOST_SYS
|
|
export STAGING_LIBDIR
|
|
export STAGING_INCDIR
|
|
|
|
# Notes:
|
|
#
|
|
# 1. By default many many sources are downloaded from libreoffice mirrors.
|
|
# This can be avoided by --with-system-.. To see what's still loaded check
|
|
# log.do_compile.
|
|
# 2. in case of trouble in do_compile: configure with --enable-verbose might
|
|
# help detecting culprit
|
|
# 3. --enable-scripting-javascript / rhino meta-java
|
|
# 4. Libreoffice Base embedded db / hsqldb meta-java
|
|
|
|
EXTRA_OECONF += " \
|
|
--without-java \
|
|
--with-lang=ALL \
|
|
\
|
|
--disable-coinmp \
|
|
--with-tls=nss \
|
|
--without-galleries \
|
|
\
|
|
--with-system-openldap \
|
|
--with-system-libatomic_ops \
|
|
--with-system-icu \
|
|
--with-system-expat \
|
|
--with-system-curl \
|
|
--with-system-openssl \
|
|
\
|
|
--with-system-cppunit \
|
|
--with-system-glm \
|
|
--with-system-redland \
|
|
--with-system-libabw \
|
|
--with-system-libwps \
|
|
--with-system-libwpg \
|
|
--with-system-libwpd \
|
|
--with-system-libcdr \
|
|
--with-system-librevenge \
|
|
--with-system-libfreehand \
|
|
--with-system-libebook \
|
|
--with-system-libmwaw \
|
|
--with-system-libetonyek \
|
|
--with-system-libvisio \
|
|
--with-system-libmspub \
|
|
--with-system-libpagemaker \
|
|
--with-system-libodfgen \
|
|
--with-system-libexttextcat \
|
|
--with-system-clucene \
|
|
--with-system-mythes \
|
|
--with-system-altlinuxhyph \
|
|
--with-system-gpgmepp \
|
|
--with-system-libtiff \
|
|
\
|
|
--with-external-dict-dir=${datadir}/hunspell \
|
|
--with-system-dicts \
|
|
"
|
|
|
|
PACKAGECONFIG ??= " \
|
|
gtk3 \
|
|
mariadb \
|
|
postgresql \
|
|
"
|
|
|
|
PACKAGECONFIG[gtk3] = "--enable-gtk3 , --disable-gtk3, gtk+3 cairo"
|
|
PACKAGECONFIG[avahi] = "--enable-avahi, --disable-avahi, avahi"
|
|
PACKAGECONFIG[odk] = "--enable-odk, --disable-odk"
|
|
PACKAGECONFIG[mariadb] = "--with-system-mariadb, , mariadb"
|
|
PACKAGECONFIG[postgresql] = "--enable-postgresql-sdbc --with-system-postgresql, --disable-postgresql-sdbc, postgresql"
|
|
|
|
do_configure() {
|
|
olddir=`pwd`
|
|
cd ${S}
|
|
aclocal --system-acdir=${STAGING_DATADIR_NATIVE}/aclocal/ -I ${S}/m4
|
|
gnu-configize
|
|
autoconf
|
|
cd $olddir
|
|
export PYTHON_CFLAGS=-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}
|
|
export PYTHON_LIBS="-L${STAGING_LIBDIR} -lpython${PYTHON_BASEVERSION}${PYTHON_ABI}"
|
|
oe_runconf
|
|
|
|
mkdir -p ${B}/workdir/Executable
|
|
|
|
# icu binaries are expected in our build tree
|
|
mkdir -p ${B}/workdir/UnpackedTarball/icu/source/
|
|
cd ${B}/workdir/UnpackedTarball/icu/source/
|
|
icu_bindir=`find ${STAGING_DATADIR_NATIVE}/icu -name bin`
|
|
ln -sf $icu_bindir
|
|
|
|
# link to native saxparser.rdb - cross version of that file is useless
|
|
sed -i 's:%STAGING_LIBDIR_NATIVE%:${STAGING_LIBDIR_NATIVE}:g' ${S}/solenv/gbuild/TargetLocations.mk
|
|
|
|
# ensure gengal loads native libraries
|
|
sed -i 's:%STAGING_LIBDIR_NATIVE%:${STAGING_LIBDIR_NATIVE}:g' ${S}/solenv/gbuild/Gallery.mk
|
|
|
|
# adjust gpgme++ path
|
|
sed -i 's:-I${includedir}/gpgme++:-I${STAGING_INCDIR}/gpgme++:g' ${B}/config_host.mk
|
|
}
|
|
|
|
do_compile:prepend() {
|
|
# INTROSPECTION_SCANNER is exprted but INTROSPECTION_COMPILER is not. This
|
|
# caused 'Permission denied' errors. So give a little help:
|
|
export INTROSPECTION_COMPILER=${STAGING_BINDIR}/g-ir-compiler-wrapper
|
|
}
|
|
|
|
do_install() {
|
|
make DESTDIR=${D} distro-pack-install
|
|
|
|
# install LibreOfficeKit (gobject-introspection) manually - became necessary since 6.4.x
|
|
install -m 0755 -d ${D}${libdir}/girepository-1.0
|
|
install -m 0644 ${B}/workdir/CustomTarget/sysui/share/libreoffice/LOKDocView-0.1.typelib ${D}${libdir}/girepository-1.0/
|
|
install -m 0755 -d ${D}${libdir}/gir-1.0
|
|
install -m 0644 ${B}/workdir/CustomTarget/sysui/share/libreoffice/LOKDocView-0.1.gir ${D}${libdir}/gir-1.0/
|
|
install -m 0755 ${B}/instdir/program/liblibreofficekitgtk.so ${D}${libdir}/
|
|
# install LibreOfficeKit headers
|
|
install -m 0755 -d ${D}${includedir}/LibreOfficeKit
|
|
install -m 0644 ${S}/include/LibreOfficeKit/* ${D}${includedir}/LibreOfficeKit/
|
|
|
|
# unoconv
|
|
install -d ${D}${bindir}
|
|
install -m 0755 ${WORKDIR}/git/unoconv/unoconv ${D}/${bindir}
|
|
|
|
# remove some unneeded files
|
|
rm -rf ${D}${libdir}/libreoffice/readmes
|
|
rm -rf ${D}${libdir}/libreoffice/share/theme_definitions/ios
|
|
rmdir ${D}${libdir}/libreoffice/share/theme_definitions
|
|
}
|
|
|
|
|
|
FILES:${PN} += " \
|
|
${datadir}/icons \
|
|
${datadir}/metainfo \
|
|
${datadir}/mime \
|
|
"
|
|
|
|
PACKAGES =+ "${PN}-odk ${PN}-officekit"
|
|
|
|
FILES:${PN}-odk = "${libdir}/libreoffice/sdk"
|
|
INSANE_SKIP:${PN}-odk += "dev-so staticdev"
|
|
|
|
FILES:${PN}-officekit = " \
|
|
${libdir}/girepository-1.0 \
|
|
${libdir}/liblibreofficekitgtk.so \
|
|
"
|
|
|
|
# based http://pkgs.fedoraproject.org/cgit/rpms/libreoffice.git/tree/libreoffice.spec
|
|
LO_LANGUAGE_FILES = " \
|
|
${libdir}/libreoffice/share/autocorr/*%{1}.dat \
|
|
${libdir}/libreoffice/program/resource/*%{1}/LC_MESSAGES \
|
|
${libdir}/libreoffice/share/registry/Langpack-%{1}.xcd \
|
|
${libdir}/libreoffice/share/registry/res/registry_%{1}.xcd \
|
|
${libdir}/libreoffice/share/registry/res/fcfg_langpack_%{1}.xcd \
|
|
"
|
|
|
|
python lo_do_split_locales() {
|
|
import glob, subprocess
|
|
|
|
packages = (d.getVar('PACKAGES') or "").split()
|
|
|
|
datadir = d.getVar('datadir')
|
|
if not datadir:
|
|
bb.note("datadir not defined")
|
|
return
|
|
|
|
dvar = d.getVar('PKGD')
|
|
pn = d.getVar('LOCALEBASEPN')
|
|
|
|
if pn + '-locale' in packages:
|
|
packages.remove(pn + '-locale')
|
|
|
|
# extract locales from translation source path
|
|
# this won't add en-US which comes with base sources
|
|
locales = []
|
|
transpaths = glob.glob('%s/translations/source/*' % d.getVar('S'))
|
|
for l in transpaths:
|
|
locale = l.replace('%s/translations/source/' % d.getVar('S'), '')
|
|
if not locale in locales:
|
|
locales.append(locale)
|
|
|
|
# find the paths where locales are found
|
|
# en-US is fallback so it should be implemented everywhere (= folder created)
|
|
langfallback = 'en-US'
|
|
findCMD = 'find %s -name "*%s*"' % (dvar, langfallback)
|
|
fallbacksearchresult = subprocess.Popen(findCMD, stdout=subprocess.PIPE, shell=True, universal_newlines=True).communicate()[0]
|
|
# uncomment to see if we need more entries in LO_LANGUAGE_FILES
|
|
# bb.note("fallbacksearchresult = %s" % fallbacksearchresult.replace(dvar, ''))
|
|
|
|
# check for files matching at each location / language
|
|
langfiles = dict()
|
|
for transvar in d.getVar('LO_LANGUAGE_FILES').split():
|
|
filesfound = 0
|
|
for locale in sorted(locales):
|
|
pattern = transvar.replace('%{1}', locale)
|
|
translocation = '%s%s' % (dvar, pattern)
|
|
transfiles = glob.glob(translocation)
|
|
if transfiles:
|
|
if locale not in langfiles:
|
|
langfiles[locale] = ''
|
|
langfiles[locale] = '%s %s' % (langfiles[locale], pattern)
|
|
filesfound = 1
|
|
if filesfound:
|
|
# remove from fallbacksearchresult REVISIT
|
|
pattern = transvar.replace('%{1}', langfallback)
|
|
translocation = '%s%s' % (dvar, pattern)
|
|
if translocation in fallbacksearchresult:
|
|
fallbacksearchresult.replace(translocation, '')
|
|
else:
|
|
bb.warn('%s language file pattern not found: %s' % (d.getVar('PN'), transvar))
|
|
|
|
# setup packages for locales with files found
|
|
summary = d.getVar('SUMMARY') or pn
|
|
description = d.getVar('DESCRIPTION') or ""
|
|
locale_section = d.getVar('LOCALE_SECTION')
|
|
mlprefix = d.getVar('MLPREFIX') or ""
|
|
for locale in locales:
|
|
if locale in langfiles:
|
|
ln = legitimize_package_name(locale)
|
|
pkg = pn + '-locale-' + ln
|
|
packages.insert(0, pkg)
|
|
d.setVar('FILES:' + pkg, langfiles[locale] )
|
|
d.setVar('RRECOMMENDS:' + pkg, '%svirtual-locale-%s' % (mlprefix, ln))
|
|
d.setVar('RPROVIDES:' + pkg, '%s-locale %s%s-translation' % (pn, mlprefix, ln))
|
|
d.setVar('SUMMARY:' + pkg, '%s - %s translations' % (summary, l))
|
|
d.setVar('DESCRIPTION:' + pkg, '%s This package contains language translation files for the %s locale.' % (description, l))
|
|
if locale_section:
|
|
d.setVar('SECTION:' + pkg, locale_section)
|
|
|
|
d.setVar('PACKAGES', ' '.join(packages))
|
|
|
|
return
|
|
}
|
|
|
|
PACKAGESPLITFUNCS:prepend = "lo_do_split_locales "
|
|
|
|
RDEPENDS:${PN} = "hunspell-dictionaries"
|