# spec file for package loolwsd # # Copyright (c) 2015 Collabora # # This file 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/. %if 0%{?name_suffix:1} Name: loolwsd%{name_suffix} %else Name: loolwsd %endif Version: @PACKAGE_VERSION@ Release: 1%{?dist} %if 0%{?suse_version} == 1110 Group: Productivity/Office/Suite BuildRoot: %{_tmppath}/%{name}-%{version}-build %endif Vendor: Collabora Summary: LibreOffice On-Line WebSocket Daemon License: MPL Source0: loolwsd-@PACKAGE_VERSION@.tar.gz BuildRequires: libcap-devel libpng-devel poco-devel >= 1.7.5 pam-devel gcc-c++ cppunit-devel pam-devel fontconfig python-lxml make # Red Hat and CentOS %if 0%{?fedora} || 0%{?rhel} >= 6 BuildRequires: libpcap kernel-headers python2-polib %endif # openSUSE 42.3, openSUSE 15.0, SLES12, SLES15 %if 0%{?suse_version} >= 1300 BuildRequires: libcap-progs linux-glibc-devel systemd-rpm-macros python-polib %endif # SLES11SP4 %if 0%{?suse_version} == 1110 BuildRequires: libcap-progs %endif Requires: collaboraoffice6.0 = 6.0.10.29-20190828 collaboraoffice6.0-ure = 6.0.10.29-20190828 collaboraofficebasis6.0-core = 6.0.10.29-20190828 collaboraofficebasis6.0-writer = 6.0.10.29-20190828 collaboraofficebasis6.0-impress = 6.0.10.29-20190828 collaboraofficebasis6.0-graphicfilter = 6.0.10.29-20190828 collaboraofficebasis6.0-en-US = 6.0.10.29-20190828 collaboraofficebasis6.0-calc = 6.0.10.29-20190828 collaboraofficebasis6.0-ooofonts = 6.0.10.29-20190828 collaboraofficebasis6.0-images = 6.0.10.29-20190828 collaboraofficebasis6.0-draw = 6.0.10.29-20190828 collaboraofficebasis6.0-extension-pdf-import = 6.0.10.29-20190828 collaboraofficebasis6.0-ooolinguistic = 6.0.10.29-20190828 Conflicts: collaboraofficebasis6.0-kde-integration collaboraofficebasis6.0-gnome-integration Requires(post): coreutils grep sed %if 0%{?rhel} == 6 # loolwsd dependencies Requires: keyutils-libs krb5-libs libattr libcap libcom_err libgcc libpng libselinux openssl pcre zlib Requires: poco-crypto >= 1.7.8 poco-foundation >= 1.7.8 poco-json >= 1.7.8 poco-net >= 1.7.8 poco-netssl >= 1.7.8 poco-util >= 1.7.8 poco-xml >= 1.7.8 # Collabora Office dependencies (unfortunately Collabora Office RPM packages do not have real dependencies) Requires: expat fontconfig freetype Requires: avahi-libs cups-libs dbus-libs gnutls libdrm libgcc libgcrypt libgpg-error libICE libSM libtasn1 libuuid libX11 libXau libxcb libXdamage libXext libXfixes libXinerama libXrender libXxf86vm mesa-dri-drivers mesa-libGL %endif %if 0%{?fedora} || 0%{?rhel} >= 7 # loolwsd dependencies Requires: systemd Requires: keyutils-libs krb5-libs libattr libcap libcom_err libgcc libpng libselinux openssl-libs pcre xz-libs zlib Requires: poco-crypto >= 1.7.5 poco-foundation >= 1.7.5 poco-json >= 1.7.5 poco-net >= 1.7.5 poco-netssl >= 1.7.5 poco-util >= 1.7.5 poco-xml >= 1.7.5 # Collabora Office dependencies (unfortunately Collabora Office RPM packages do not have real dependencies) Requires: expat fontconfig freetype Requires: avahi-libs cups-libs dbus-libs libdrm libICE libSM libuuid libX11 libXau libxcb libXdamage libXext libXfixes libXinerama libXrender libxshmfence libXxf86vm mesa-libGL mesa-libglapi %endif %if 0%{?suse_version} # loolwsd dependencies Requires(post): libcap-progs Requires: libcap2 libpng12-0 %{fillup_prereq} %endif %if 0%{?suse_version} >= 1300 Requires: systemd Requires: libopenssl1_0_0 libpcre1 libz1 Requires: libPocoCrypto60 >= 1.9.0 libPocoFoundation60 >= 1.9.0 libPocoJSON60 >= 1.9.0 libPocoNet60 >= 1.9.0 libPocoNetSSL60 >= 1.9.0 libPocoUtil60 >= 1.9.0 libPocoXML60 >= 1.9.0 # Collabora Office dependencies (unfortunately Collabora Office RPM packages do not have real dependencies) # cd /opt/collaboraoffice6.0/program ; for i in soffice.bin *.so ;do ldd $i | grep '=>' | sed -e "s/^.*=> //" -e "s/ [(].*$//"; done | sort | uniq | xargs rpm -qf --qf="%{NAME}\n" | sort | uniq | grep -v collaboraoffice Requires: fontconfig libbz2-1 libexpat1 libfreetype6 libpng16-16 Requires: Mesa-libGL1 Mesa-libglapi0 cups-libs krb5 libavahi-client3 libavahi-common3 libavahi-glib1 libcom_err2 libdbus-1-3 libdrm2 libkeyutils1 libuuid1 libICE6 libselinux1 libSM6 libX11-6 libX11-xcb1 libXau6 libxcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0 libxcb-shm0 libxcb-sync1 libXdamage1 libXext6 libXfixes3 libXrender1 libxshmfence1 libXxf86vm1 %endif # SLES11SP4 %if 0%{?suse_version} == 1110 Requires: libattr libopenssl0_9_8 pcre zlib Requires: libPocoCrypto49 >= 1.7.9 libPocoFoundation49 >= 1.7.9 libPocoJSON49 >= 1.7.9 libPocoNet49 >= 1.7.9 libPocoNetSSL49 >= 1.7.9 libPocoUtil49 >= 1.7.9 libPocoXML49 >= 1.7.9 Requires: fontconfig freetype2 libexpat1 Requires: cups-libs glibc keyutils-libs krb5 libcom_err2 libdrm libgcc_s1 libstdc++6 libuuid1 Mesa pcre xorg-x11-libICE xorg-x11-libs xorg-x11-libSM xorg-x11-libX11 xorg-x11-libXau xorg-x11-libxcb xorg-x11-libXext xorg-x11-libXfixes xorg-x11-libXrender %endif %if 0%{?name_suffix:1} Provides: loleaflet = 1.5.8, loolwsd %else Provides: loleaflet = 1.5.8 %endif Obsoletes: loleaflet <= 1.5.8 %description %if 0%{?suse_version} %debug_package %endif %prep %setup -n loolwsd-@PACKAGE_VERSION@ %build %configure \ --enable-silent-rules \ --with-lokit-path=bundled/include \ --with-lo-path=/opt/collaboraoffice6.0 \ --disable-setcap \ %if 0%{?config_options:1} %{config_options} %endif env BUILDING_FROM_RPMBUILD=yes make %{?_smp_mflags} %check #env BUILDING_FROM_RPMBUILD=yes make check %install env BUILDING_FROM_RPMBUILD=yes make install DESTDIR=%{buildroot} install -d -m 755 %{buildroot}/var/adm/fillup-templates %if 0%{?rhel} == 6 install -d -m 755 %{buildroot}/etc/init.d install -D -m 755 loolwsd.init.rhel6 %{buildroot}/etc/init.d/loolwsd %endif %if 0%{?suse_version} == 1110 install -d -m 755 %{buildroot}/etc/init.d install -D -m 755 loolwsd.init.sle11 %{buildroot}/etc/init.d/loolwsd %endif %if 0%{?fedora} || 0%{?rhel} >= 7 install -D -m 444 loolwsd.service %{buildroot}%{_unitdir}/loolwsd.service install -D -m 644 sysconfig.loolwsd %{buildroot}/etc/sysconfig/loolwsd %endif %if 0%{?suse_version} >= 1300 install -D -m 444 loolwsd.service %{buildroot}%{_unitdir}/loolwsd.service install -D -m 644 sysconfig.loolwsd %{buildroot}/var/adm/fillup-templates %endif %if 0%{?rhel} > 0 install -d -m 755 %{buildroot}/etc/httpd/conf install -D -m 755 etc/apache2/loolwsd.conf %{buildroot}/etc/httpd/conf rm %{buildroot}/etc/apache2/conf-available/loolwsd.conf %endif mkdir -p %{buildroot}/etc/cron.d echo "#Remove old tiles once every 10 days at midnight" > %{buildroot}/etc/cron.d/loolwsd.cron echo "0 0 */1 * * root find /var/cache/loolwsd -type f -a -atime +10 -exec rm {} \;" >> %{buildroot}/etc/cron.d/loolwsd.cron mkdir -p %{buildroot}/etc/pam.d echo "auth required pam_unix.so" > %{buildroot}/etc/pam.d/loolwsd echo "account required pam_unix.so" >> %{buildroot}/etc/pam.d/loolwsd %files %defattr(-,root,root,-) /usr/bin/loolwsd /usr/bin/loolwsd-systemplate-setup /usr/bin/loolforkit /usr/bin/loolconvert /usr/bin/loolconfig /usr/share/loolwsd/discovery.xml /usr/share/loolwsd/favicon.ico /usr/share/loolwsd/loleaflet /usr/share/doc/loolwsd/README /usr/share/doc/loolwsd/README.vars /usr/share/doc/loolwsd/protocol.txt /usr/share/doc/loolwsd/reference.md /usr/share/man/man1/loolwsd.1.gz /usr/share/man/man1/loolforkit.1.gz /usr/share/man/man1/loolconvert.1.gz /usr/share/man/man1/loolconfig.1.gz /usr/share/man/man1/loolwsd-systemplate-setup.1.gz %if 0%{?rhel} == 6 || 0%{?suse_version} == 1110 /etc/init.d/loolwsd %endif %if 0%{?fedora} || 0%{?rhel} >= 7 %{_unitdir}/loolwsd.service %config(noreplace) /etc/sysconfig/loolwsd %endif %if 0%{?suse_version} >= 1300 %{_unitdir}/loolwsd.service /var/adm/fillup-templates/sysconfig.loolwsd %endif %config(noreplace) /etc/cron.d/loolwsd.cron %config(noreplace) /etc/pam.d/loolwsd %config(noreplace) %attr(640, lool, root) /etc/loolwsd/loolwsd.xml %config /etc/loolwsd/loolkitconfig.xcu %config(noreplace) /etc/nginx/snippets/loolwsd.conf %if 0%{?suse_version} > 0 %config(noreplace) /etc/apache2/conf-available/loolwsd.conf %endif %if 0%{?rhel} > 0 %config(noreplace) /etc/httpd/conf/loolwsd.conf %endif %doc README %pre %if 0%{?suse_version} >= 1300 %service_add_pre loolwsd.service %endif getent group lool >/dev/null || groupadd -r lool getent passwd lool >/dev/null || useradd -g lool -r lool -d /opt/lool -s /bin/bash # for filename in `find /opt/lool/systemplate -type f`;do stripped=$(echo -ne $filename | sed -e "s|/opt/lool/systemplate||");rpm -qf --qf="%{NAME}\n" $stripped;done | grep -v devel | grep -v 32bit | grep -v -- -fonts | sort | uniq %triggerin -- expat fontconfig freetype freetype2 glibc glibc-locale kernel keyutils-libs krb5 krb5-libs libbz2-1 libcap libcap-ng libcap2 libexpat1 libfreetype6 libgcc libgcc_s1 libgcrypt libiscsi libpng libpng12 libpng12-0 libpng15-15 libpng16-16 libstdc++ libstdc++6 libuuid libuuid1 libz1 lsb nss-mdns nss-softokn-freebl pcre sssd sssd-client systemd-libs timezone tzdata zlib echo -ne "Triggered update of loolwsd systemplate..." %if 0%{?rhel} == 6 if [ -f /var/lock/subsys/loolwsd ]; then LOOLWSD_IS_ACTIVE=1; else LOOLWSD_IS_ACTIVE=0; fi %endif %if 0%{?suse_version} == 1110 if [ -f /var/run/loolwsd.pid ]; then LOOLWSD_IS_ACTIVE=1; else LOOLWSD_IS_ACTIVE=0; fi %endif %if 0%{?rhel} == 6 || 0%{?suse_version} == 1110 if [ $LOOLWSD_IS_ACTIVE == "1" ]; then /etc/init.d/loolwsd stop; fi %endif %if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1300 systemctl is-active -q loolwsd && LOOLWSD_IS_ACTIVE=1 || LOOLWSD_IS_ACTIVE=0 if [ $LOOLWSD_IS_ACTIVE == "1" ]; then systemctl stop loolwsd; fi %endif # Figure out where LO is installed, let's hope it is not a mount point # Create a directory for loolwsd on the same file system loroot=/opt/collaboraoffice6.0 loolparent=`cd ${loroot} && cd .. && /bin/pwd` rm -rf ${loolparent}/lool mkdir -p ${loolparent}/lool/child-roots chown lool:lool ${loolparent}/lool chown lool:lool ${loolparent}/lool/child-roots fc-cache ${loroot}/share/fonts/truetype loolwsd-systemplate-setup ${loolparent}/lool/systemplate ${loroot} >/dev/null 2>&1 %if 0%{?rhel} == 6 || 0%{?suse_version} == 1110 if [ $LOOLWSD_IS_ACTIVE == "1" ]; then /etc/init.d/loolwsd start; fi %endif %if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1300 if [ $LOOLWSD_IS_ACTIVE == "1" ]; then systemctl start loolwsd; fi %endif echo " Done." %post setcap cap_fowner,cap_mknod,cap_sys_chroot=ep /usr/bin/loolforkit mkdir -p /var/cache/loolwsd && chown lool:lool /var/cache/loolwsd rm -rf /var/cache/loolwsd/* %if 0%{?rhel} == 6 || 0%{?suse_version} == 1110 touch /var/log/loolwsd.log && chown lool:lool /var/log/loolwsd.log %endif %if 0%{?fedora} || 0%{?rhel} >= 7 %systemd_post loolwsd.service %else %if 0%{?suse_version} >= 1300 %service_add_post loolwsd.service %{fillup_only -n loolwsd} %endif %endif %preun %if 0%{?fedora} || 0%{?rhel} >= 7 %systemd_preun loolwsd.service %else %if 0%{?suse_version} >= 1300 %service_del_preun loolwsd.service %endif %endif %postun %if 0%{?fedora} || 0%{?rhel} >= 7 %systemd_postun loolwsd.service %else %if 0%{?suse_version} >= 1300 %service_del_postun loolwsd.service %endif %endif %changelog * Mon Aug 03 2015 Mihai Varga - added the cronjob * Tue May 19 2015 Tor Lillqvist - Initial RPM release