+# -q be silent when service isn't started (for scriplets restaring other package's services)
+#
+%service(q) {{%(export quiet=%{-q:1}; /usr/lib/rpm/service_generator.sh %{*}) };}
+
+
+# java macros. based on jpackage macros.java
+%_jvmdir %{_libdir}/jvm
+%_jvmjardir %{_libdir}/jvm-exports
+%_jvmprivdir %{_libdir}/jvm-private
+%_jvmlibdir %{_libdir}/jvm
+%_jvmdatadir %{_datadir}/jvm
+%_jvmsysconfdir %{_sysconfdir}/jvm
+# FIXME: are these used?
+%_jvmcommonlibdir %{_libdir}/jvm-common
+%_jvmcommondatadir %{_datadir}/jvm-common
+%_jvmcommonsysconfdir %{_sysconfdir}/jvm-common
+%_jnidir %{_libdir}/java
+%java_home %(unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo $JAVA_HOME)
+
+%ant JAVA_HOME=%{java_home} ant
+%jar %{java_home}/bin/jar
+%java %(unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD)
+%javac %{java_home}/bin/javac
+%javadoc %{java_home}/bin/javadoc
+
+%add_jvm_extension JAVA_LIBDIR=%{buildroot}/%{_javadir} %{_bindir}/jvmjar -l
+
+%jpackage_script() \
+install -d $RPM_BUILD_ROOT%{_bindir}\
+cat > $RPM_BUILD_ROOT%{_bindir}/%5 << 'EOF' \
+#!/bin/sh\
+#\
+# %{name} script\
+# JPackage Project <http://www.jpackage.org/>\
+\
+# Source functions library\
+. %{_javadir}-utils/java-functions\
+\
+# Source system prefs\
+if [ -f %{_sysconfdir}/java/%{name}.conf ]; then\
+ . %{_sysconfdir}/java/%{name}.conf\
+fi\
+\
+# Source user prefs\
+if [ -f $HOME/.%{name}rc ]; then\
+ . $HOME/.%{name}rc\
+fi\
+\
+# Configuration\
+MAIN_CLASS=%1\
+BASE_FLAGS=%2\
+BASE_OPTIONS=%3\
+BASE_JARS="%(echo %4 | tr ':' ' ')"\
+\
+# Set parameters\
+set_jvm\
+set_classpath $BASE_JARS\
+set_flags $BASE_FLAGS\
+set_options $BASE_OPTIONS\
+\
+# Let's start\
+run "$@"\
+EOF
+
+# PEAR install macros
+# Author: Elan Ruusamäe <glen@pld-linux.org>
+#
+# Usage:
+# %%pear_package_setup [-a #] [-n FMT]
+#
+# -a # - also unpack SOURCE#. for PEAR bootstrapping
+# -n FMT - create builddir with FMT, instead of default %%{_pearname}-%%{version}
+# -z - unpack pear package and let pear use package.xml (not tarball) for install. for PEAR bootstrapping
+#
+# unpack PEAR package to %%{_builddir}/FMT. package is extracted with already
+# destination hierarchy. you should copy the tree to buildroot after
+# patching/reorganizing with %%pear_package_install.
+#
+# additionally BUILDROOT is stripped from files and files are converted to UNIX
+# line endings.
+#
+# the pear install process output is recorded to install.log, you should put it
+# to %%doc for later debug or just for information.
+#
+# additionally additional-packages.txt is produced if it was detected that the
+# package has optional dependencies. the file format is suitable of displaying
+# in %%post of a package. you should put this file to %%doc. noautocompressdoc is
+# automatically added for this file.
+
+
+# records install.log and transforms PEAR names to PLD Linux rpm package names.
+%__pear_install_log \
+tee install.log \
+# make post message of optional packages \
+grep 'can optionally use' install.log | sed -e 's,package "pear/,package "php-pear-,g;s,^pear/,php-pear-,' > optional-packages.txt \
+if [ -s optional-packages.txt ]; then \
+ awk -F'"' '/use package/{print $2}' optional-packages.txt | sed -e "s,_,/,g;s,php-pear-, 'pear(,;s,$,.*)'," | tr -d '\\\n' > _noautoreq \
+else \
+ rm -f optional-packages.txt \
+fi \
+%{nil}
+
+# command invoking pear cli
+%__pear /usr/bin/pear
+
+# the main macro.
+# using this macro will append optional-packages.txt to the nocompressdoc list
+# as it's displayed to user after package install. and adding additional gzip
+# dep is just waste ;)
+%pear_package_setup(a:n:z) \
+%define srcdir %{-n*}%{!-n:%{_pearname}-%{version}} \
+%define builddir %{_builddir}/%{srcdir} \
+%setup -q -c -T -n %{srcdir} \
+%{-z:tar zxf %{S:0}; %{-a:tar zxf %{S:%{-a*}}}} \
+%{-z:_P=package2.xml; [ -f $_P ] || _P=package.xml; _N=%{srcdir}; mv $_P $_N; cd $_N} \
+%__pear \\\
+ -c pearrc \\\
+ -d doc_dir=/docs \\\
+ -d php_dir=%{php_pear_dir} \\\
+ -d bin_dir=%{_bindir} \\\
+ -d data_dir=%{php_pear_dir}/data \\\
+ -d test_dir=%{php_pear_dir}/tests \\\
+ install \\\
+ --packagingroot=%{builddir} \\\
+ --offline \\\
+ --nodeps \\\
+ %{-f:--force} \\\
+ %{!-z:%{S:%{-a*}%{!-a:0}}}%{-z:$_P} > .install.log || { c=$?; cat .install.log; exit $c; } \
+%{-z:cd ..} \
+cat %{-z:$_N/}.install.log | %__pear_install_log \
+\
+# undos sources \
+find . -type f -print0 | xargs -0 sed -i -e 's,\\r$,,' \
+%{!?_noautocompressdoc:%global _noautocompressdoc %{nil}}%{expand:%%global _noautocompressdoc %{_noautocompressdoc} optional-packages.txt} \
+%{!?_noautoprov:%global _noautoprov %{nil}}%{expand:%%global _noautoprov %{_noautoprov} 'pear(tests/.*)'} \
+%{nil}
+
+# copies exctracted PEAR package structure to buildroot.
+# also copies PEAR registry file.
+# please use this macro, for future extensions being possible.
+%pear_package_install() \
+cp -a ./%{php_pear_dir}/{.registry,*} $RPM_BUILD_ROOT%{php_pear_dir} \
+find $RPM_BUILD_ROOT%{php_pear_dir} '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v \
+# help the developer out a little: \
+if [ -f _noautoreq ]; then \
+ echo "AutoReqdep detected:" \
+ echo "_noautoreq $(cat _noautoreq)" \
+fi \
+%{nil}
+
+
+# Register OpenLDAP schema.
+# Author: Elan Ruusamäe <glen@pld-linux.org>
+#
+# Usage:
+# %%openldap_schema_register [-d core,nis] %{schemadir}/horde.schema
+#
+# -d specify dependant schemas, separated by comma
+#
+%openldap_schema_register(d:) \
+for schema in %*; do \
+ if ! grep -q "$schema" /etc/openldap/slapd.conf; then \
+ %{__sed} -i -e " \
+ /^include.*local.schema/{ \
+ iinclude\\t $schema\
+ } \
+ " /etc/openldap/slapd.conf \