Projects
Kolab:3.4
roundcubemail
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 25
View file
roundcubemail.spec
Changed
@@ -14,6 +14,7 @@ %{!?php_inidir: %global php_inidir %{_sysconfdir}/php.d} +# Needed to reload the webserver if APC is installed/enabled. %if 0%{?suse_version} < 1 && 0%{?fedora} < 1 && 0%{?rhel} < 7 %global with_systemd 0 %else @@ -33,11 +34,11 @@ %global _ap_sysconfdir %{_sysconfdir}/%{httpd_name} # Paths. Do not include trailing slash -%global roundcube %{_datadir}/roundcubemail -%global roundcube_plugins %{roundcube}/plugins -%global roundcube_conf %{_sysconfdir}/roundcubemail -%global roundcube_log /var/log/roundcubemail -%global roundcube_lib /var/lib/roundcubemail +%global datadir %{_datadir}/roundcubemail +%global plugindir %{datadir}/plugins +%global confdir %{_sysconfdir}/roundcubemail +%global logdir /var/log/roundcubemail +%global tmpdir /var/lib/roundcubemail Name: roundcubemail Version: 1.1 @@ -52,12 +53,16 @@ # From GIT 6c1c60f3b908aa922a46cbae94a03eb162147b70 Source0: roundcubemail-1.1.tar.gz +Source1: comm.py Source20: roundcubemail.conf Source21: roundcubemail.logrotate Patch1: roundcubemail-1.1-csrf.patch +# https://github.com/roundcube/roundcubemail/pull/215 +Patch2: roundcubemail-1.1-assets.patch + Patch201: ticket-466-changes.patch Patch202: default-configuration.patch @@ -69,6 +74,22 @@ BuildRequires: uglify-js %endif +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-password) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description +Roundcube is the world's most popular webmail software. + +This is a meta-package that installs an appropriate bare minimum. + +%package core +Summary: The core of the Roundcube program +Group: Applications/Internet +Provides: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} + %if 0%{?suse_version} Requires: http_daemon Requires: php >= 5.3 @@ -97,195 +118,1821 @@ Requires: php-pear(Net_SMTP) Requires: php-pear(Net_Socket) -%description -RoundCube Webmail is a browser-based multilingual IMAP client -with an application-like user interface. It provides full -functionality you expect from an e-mail client, including MIME -support, address book, folder manipulation, message searching -and spell checking. RoundCube Webmail is written in PHP and -requires the MySQL database or the PostgreSQL database. The user -interface is fully skinnable using XHTML and CSS 2. +Requires: %{name}(core-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin) = %{?epoch:%{epoch}:}%{version}-%{release} +# The filesystem_attachments plugin is required. +Requires: %{name}(plugin-filesystem_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +# The jqueryui plugin is required. +Requires: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description core +The Roundcube program core functionality + +%package core-assets +Summary: Assets for Roundcube +Group: Applications/Internet +Provides: %{name}(core-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description core-assets +The assets sub-packages contains solely the static content +needed by Roundcube. + +%package plugin-acl +Summary: Plugin acl +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-acl-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-acl-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-acl +Plugin acl + +%package plugin-additional_message_headers +Summary: Plugin additional_message_headers +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-additional_message_headers-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-additional_message_headers-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-additional_message_headers) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-additional_message_headers +Plugin additional_message_headers + +%package plugin-archive +Summary: Plugin archive +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-archive-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-archive-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-archive +Plugin archive + +%package plugin-attachment_reminder +Summary: Plugin attachment_reminder +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-attachment_reminder-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-attachment_reminder-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-attachment_reminder) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-attachment_reminder +Plugin attachment_reminder + +%package plugin-autologon +Summary: Plugin autologon +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-autologon-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-autologon-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-autologon) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-autologon +Plugin autologon + +%package plugin-database_attachments +Summary: Plugin database_attachments +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-database_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-database_attachments-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-database_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-database_attachments +Plugin database_attachments + +%package plugin-debug_logger +Summary: Plugin debug_logger +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-debug_logger-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-debug_logger-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-debug_logger) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-debug_logger +Plugin debug_logger + +%package plugin-emoticons +Summary: Plugin emoticons +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-emoticons-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-emoticons-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-emoticons) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-emoticons +Plugin emoticons + +%package plugin-enigma +Summary: Plugin enigma +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-enigma-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-enigma-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-enigma) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-enigma +Plugin enigma + +%package plugin-example_addressbook +Summary: Plugin example_addressbook +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-example_addressbook-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-example_addressbook-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-example_addressbook) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-example_addressbook +Plugin example_addressbook + +%package plugin-filesystem_attachments +Summary: Plugin filesystem_attachments +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-filesystem_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +# The filesystem_attachments plugin does not provide any skin +#Requires: %{name}(plugin-filesystem_attachments-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-filesystem_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-filesystem_attachments +Plugin filesystem_attachments + +%package plugin-help +Summary: Plugin help +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-help-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-help-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-help +Plugin help + +%package plugin-hide_blockquote +Summary: Plugin hide_blockquote +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-hide_blockquote-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-hide_blockquote-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-hide_blockquote) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-hide_blockquote +Plugin hide_blockquote + +%package plugin-http_authentication +Summary: Plugin http_authentication +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-http_authentication-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-http_authentication-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-http_authentication) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-http_authentication +Plugin http_authentication + +%package plugin-identity_select +Summary: Plugin identity_select +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-identity_select-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-identity_select-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-identity_select) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-identity_select +Plugin identity_select + +%package plugin-jqueryui +Summary: Plugin jqueryui +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-jqueryui-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-jqueryui-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-jqueryui +Plugin jqueryui + +%package plugin-legacy_browser +Summary: Plugin legacy_browser +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-legacy_browser-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-legacy_browser-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-legacy_browser +Plugin legacy_browser + +%package plugin-managesieve +Summary: Plugin managesieve +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-managesieve-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-managesieve-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-managesieve +Plugin managesieve + +%package plugin-markasjunk +Summary: Plugin markasjunk +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-markasjunk-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-markasjunk-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-markasjunk +Plugin markasjunk + +%package plugin-new_user_dialog +Summary: Plugin new_user_dialog +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-new_user_dialog-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-new_user_dialog-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-new_user_dialog) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-new_user_dialog +Plugin new_user_dialog + +%package plugin-new_user_identity +Summary: Plugin new_user_identity +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-new_user_identity-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-new_user_identity-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-new_user_identity) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-new_user_identity +Plugin new_user_identity + +%package plugin-newmail_notifier +Summary: Plugin newmail_notifier +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-newmail_notifier-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-newmail_notifier-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-newmail_notifier) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-newmail_notifier +Plugin newmail_notifier + +%package plugin-password +Summary: Plugin password +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-password-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +# The password plugin does not provide any skins +#Requires: %{name}(plugin-password-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-password) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-password +Plugin password + +%package plugin-redundant_attachments +Summary: Plugin redundant_attachments +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-redundant_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-redundant_attachments-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-redundant_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-redundant_attachments +Plugin redundant_attachments + +%package plugin-show_additional_headers +Summary: Plugin show_additional_headers +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-show_additional_headers-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-show_additional_headers-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-show_additional_headers) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-show_additional_headers +Plugin show_additional_headers + +%package plugin-squirrelmail_usercopy +Summary: Plugin squirrelmail_usercopy +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-squirrelmail_usercopy-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-squirrelmail_usercopy-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-squirrelmail_usercopy) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-squirrelmail_usercopy +Plugin squirrelmail_usercopy + +%package plugin-subscriptions_option +Summary: Plugin subscriptions_option +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-subscriptions_option-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-subscriptions_option-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-subscriptions_option) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-subscriptions_option +Plugin subscriptions_option + +%package plugin-userinfo +Summary: Plugin userinfo +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-userinfo-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-userinfo-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-userinfo) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-userinfo +Plugin userinfo + +%package plugin-vcard_attachments +Summary: Plugin vcard_attachments +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-vcard_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-vcard_attachments-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-vcard_attachments +Plugin vcard_attachments + +%package plugin-virtuser_file +Summary: Plugin virtuser_file +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-virtuser_file-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-virtuser_file-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-virtuser_file) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-virtuser_file +Plugin virtuser_file + +%package plugin-virtuser_query +Summary: Plugin virtuser_query +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-virtuser_query-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-virtuser_query-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-virtuser_query) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-virtuser_query +Plugin virtuser_query + +%package plugin-zipdownload +Summary: Plugin zipdownload +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-zipdownload-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-zipdownload-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-zipdownload +Plugin zipdownload + +%package plugin-acl-assets +Summary: Plugin acl Assets +Group: Applications/Internet +Requires: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-acl-assets +Plugin acl Assets + +%package plugin-additional_message_headers-assets +Summary: Plugin additional_message_headers Assets +Group: Applications/Internet +Requires: %{name}(plugin-additional_message_headers) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-additional_message_headers-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-additional_message_headers-assets +Plugin additional_message_headers Assets + +%package plugin-archive-assets +Summary: Plugin archive Assets +Group: Applications/Internet +Requires: %{name}(plugin-archive) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-archive-assets +Plugin archive Assets + +%package plugin-attachment_reminder-assets +Summary: Plugin attachment_reminder Assets +Group: Applications/Internet +Requires: %{name}(plugin-attachment_reminder) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-attachment_reminder-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-attachment_reminder-assets +Plugin attachment_reminder Assets + +%package plugin-autologon-assets +Summary: Plugin autologon Assets +Group: Applications/Internet +Requires: %{name}(plugin-autologon) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-autologon-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-autologon-assets +Plugin autologon Assets + +%package plugin-database_attachments-assets +Summary: Plugin database_attachments Assets +Group: Applications/Internet +Requires: %{name}(plugin-database_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-database_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-database_attachments-assets +Plugin database_attachments Assets + +%package plugin-debug_logger-assets +Summary: Plugin debug_logger Assets +Group: Applications/Internet +Requires: %{name}(plugin-debug_logger) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-debug_logger-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-debug_logger-assets +Plugin debug_logger Assets + +%package plugin-emoticons-assets +Summary: Plugin emoticons Assets +Group: Applications/Internet +Requires: %{name}(plugin-emoticons) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-emoticons-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-emoticons-assets +Plugin emoticons Assets + +%package plugin-enigma-assets +Summary: Plugin enigma Assets +Group: Applications/Internet +Requires: %{name}(plugin-enigma) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-enigma-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-enigma-assets +Plugin enigma Assets + +%package plugin-example_addressbook-assets +Summary: Plugin example_addressbook Assets +Group: Applications/Internet +Requires: %{name}(plugin-example_addressbook) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-example_addressbook-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-example_addressbook-assets +Plugin example_addressbook Assets + +%package plugin-filesystem_attachments-assets +Summary: Plugin filesystem_attachments Assets +Group: Applications/Internet +Requires: %{name}(plugin-filesystem_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-filesystem_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-filesystem_attachments-assets +Plugin filesystem_attachments Assets + +%package plugin-help-assets +Summary: Plugin help Assets +Group: Applications/Internet +Requires: %{name}(plugin-help) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-help-assets +Plugin help Assets + +%package plugin-hide_blockquote-assets +Summary: Plugin hide_blockquote Assets +Group: Applications/Internet +Requires: %{name}(plugin-hide_blockquote) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-hide_blockquote-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-hide_blockquote-assets +Plugin hide_blockquote Assets + +%package plugin-http_authentication-assets +Summary: Plugin http_authentication Assets +Group: Applications/Internet +Requires: %{name}(plugin-http_authentication) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-http_authentication-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-http_authentication-assets +Plugin http_authentication Assets + +%package plugin-identity_select-assets +Summary: Plugin identity_select Assets +Group: Applications/Internet +Requires: %{name}(plugin-identity_select) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-identity_select-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-identity_select-assets +Plugin identity_select Assets + +%package plugin-jqueryui-assets +Summary: Plugin jqueryui Assets +Group: Applications/Internet +Requires: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-jqueryui-assets +Plugin jqueryui Assets + +%package plugin-legacy_browser-assets +Summary: Plugin legacy_browser Assets +Group: Applications/Internet +Requires: %{name}(plugin-legacy_browser) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-legacy_browser-assets +Plugin legacy_browser Assets + +%package plugin-managesieve-assets +Summary: Plugin managesieve Assets +Group: Applications/Internet +Requires: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-managesieve-assets +Plugin managesieve Assets + +%package plugin-markasjunk-assets +Summary: Plugin markasjunk Assets +Group: Applications/Internet +Requires: %{name}(plugin-markasjunk) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-markasjunk-assets +Plugin markasjunk Assets + +%package plugin-new_user_dialog-assets +Summary: Plugin new_user_dialog Assets +Group: Applications/Internet +Requires: %{name}(plugin-new_user_dialog) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-new_user_dialog-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-new_user_dialog-assets +Plugin new_user_dialog Assets + +%package plugin-new_user_identity-assets +Summary: Plugin new_user_identity Assets +Group: Applications/Internet +Requires: %{name}(plugin-new_user_identity) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-new_user_identity-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-new_user_identity-assets +Plugin new_user_identity Assets + +%package plugin-newmail_notifier-assets +Summary: Plugin newmail_notifier Assets +Group: Applications/Internet +Requires: %{name}(plugin-newmail_notifier) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-newmail_notifier-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-newmail_notifier-assets +Plugin newmail_notifier Assets + +%package plugin-password-assets +Summary: Plugin password Assets +Group: Applications/Internet +Requires: %{name}(plugin-password) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-password-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-password-assets +Plugin password Assets + +%package plugin-redundant_attachments-assets +Summary: Plugin redundant_attachments Assets +Group: Applications/Internet +Requires: %{name}(plugin-redundant_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-redundant_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-redundant_attachments-assets +Plugin redundant_attachments Assets + +%package plugin-show_additional_headers-assets +Summary: Plugin show_additional_headers Assets +Group: Applications/Internet +Requires: %{name}(plugin-show_additional_headers) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-show_additional_headers-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-show_additional_headers-assets +Plugin show_additional_headers Assets + +%package plugin-squirrelmail_usercopy-assets +Summary: Plugin squirrelmail_usercopy Assets +Group: Applications/Internet +Requires: %{name}(plugin-squirrelmail_usercopy) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-squirrelmail_usercopy-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-squirrelmail_usercopy-assets +Plugin squirrelmail_usercopy Assets + +%package plugin-subscriptions_option-assets +Summary: Plugin subscriptions_option Assets +Group: Applications/Internet +Requires: %{name}(plugin-subscriptions_option) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-subscriptions_option-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-subscriptions_option-assets +Plugin subscriptions_option Assets + +%package plugin-userinfo-assets +Summary: Plugin userinfo Assets +Group: Applications/Internet +Requires: %{name}(plugin-userinfo) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-userinfo-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-userinfo-assets +Plugin userinfo Assets + +%package plugin-vcard_attachments-assets +Summary: Plugin vcard_attachments Assets +Group: Applications/Internet +Requires: %{name}(plugin-vcard_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-vcard_attachments-assets +Plugin vcard_attachments Assets + +%package plugin-virtuser_file-assets +Summary: Plugin virtuser_file Assets +Group: Applications/Internet +Requires: %{name}(plugin-virtuser_file) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-virtuser_file-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-virtuser_file-assets +Plugin virtuser_file Assets + +%package plugin-virtuser_query-assets +Summary: Plugin virtuser_query Assets +Group: Applications/Internet +Requires: %{name}(plugin-virtuser_query) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-virtuser_query-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-virtuser_query-assets +Plugin virtuser_query Assets + +%package plugin-zipdownload-assets +Summary: Plugin zipdownload Assets +Group: Applications/Internet +Requires: %{name}(plugin-zipdownload) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-zipdownload-assets +Plugin zipdownload Assets + +%package plugin-acl-skin-larry +Summary: Plugin acl / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-acl-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-acl-skin-larry +Plugin acl / Skin larry + +%package plugin-acl-skin-classic +Summary: Plugin acl / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-acl-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-acl-skin-classic +Plugin acl / Skin classic + +%package plugin-archive-skin-larry +Summary: Plugin archive / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-archive) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-archive-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-archive-skin-larry +Plugin archive / Skin larry + +%package plugin-archive-skin-classic +Summary: Plugin archive / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-archive) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-archive-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-archive-skin-classic +Plugin archive / Skin classic + +%package plugin-enigma-skin-classic +Summary: Plugin enigma / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-enigma) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-enigma-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-enigma-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-enigma-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-enigma-skin-classic +Plugin enigma / Skin classic + +%package plugin-help-skin-larry +Summary: Plugin help / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-help) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-help-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-help-skin-larry +Plugin help / Skin larry + +%package plugin-help-skin-classic +Summary: Plugin help / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-help) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-help-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-help-skin-classic +Plugin help / Skin classic + +%package plugin-hide_blockquote-skin-larry +Summary: Plugin hide_blockquote / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-hide_blockquote) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-hide_blockquote-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-hide_blockquote-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-hide_blockquote-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-hide_blockquote-skin-larry +Plugin hide_blockquote / Skin larry + +%package plugin-jqueryui-skin-larry +Summary: Plugin jqueryui / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-jqueryui-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-jqueryui-skin-larry +Plugin jqueryui / Skin larry + +%package plugin-jqueryui-skin-classic +Summary: Plugin jqueryui / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-jqueryui-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-jqueryui-skin-classic +Plugin jqueryui / Skin classic + +%package plugin-legacy_browser-skin-larry +Summary: Plugin legacy_browser / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-legacy_browser) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-legacy_browser-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-legacy_browser-skin-larry +Plugin legacy_browser / Skin larry + +%package plugin-legacy_browser-skin-classic +Summary: Plugin legacy_browser / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-legacy_browser) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-legacy_browser-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-legacy_browser-skin-classic +Plugin legacy_browser / Skin classic + +%package plugin-managesieve-skin-larry +Summary: Plugin managesieve / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-managesieve-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-managesieve-skin-larry +Plugin managesieve / Skin larry + +%package plugin-managesieve-skin-classic +Summary: Plugin managesieve / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-managesieve-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-managesieve-skin-classic +Plugin managesieve / Skin classic + +%package plugin-markasjunk-skin-larry +Summary: Plugin markasjunk / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-markasjunk) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-markasjunk-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-markasjunk-skin-larry +Plugin markasjunk / Skin larry + +%package plugin-markasjunk-skin-classic +Summary: Plugin markasjunk / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-markasjunk) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-markasjunk-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-markasjunk-skin-classic +Plugin markasjunk / Skin classic + +%package plugin-vcard_attachments-skin-larry +Summary: Plugin vcard_attachments / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-vcard_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-vcard_attachments-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-vcard_attachments-skin-larry +Plugin vcard_attachments / Skin larry + +%package plugin-vcard_attachments-skin-classic +Summary: Plugin vcard_attachments / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-vcard_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-vcard_attachments-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-vcard_attachments-skin-classic +Plugin vcard_attachments / Skin classic + +%package plugin-zipdownload-skin-larry +Summary: Plugin zipdownload / Skin larry +Group: Applications/Internet +Requires: %{name}(plugin-zipdownload) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-zipdownload-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-zipdownload-skin-larry +Plugin zipdownload / Skin larry + +%package plugin-zipdownload-skin-classic +Summary: Plugin zipdownload / Skin classic +Group: Applications/Internet +Requires: %{name}(plugin-zipdownload) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-zipdownload-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload-skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-zipdownload-skin-classic +Plugin zipdownload / Skin classic + +%package plugin-acl-skin-larry-assets +Summary: Plugin acl / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-acl-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-acl-skin-larry-assets +Plugin acl / Skin larry (Assets Package) + +%package plugin-acl-skin-classic-assets +Summary: Plugin acl / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-acl-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-acl-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-acl-skin-classic-assets +Plugin acl / Skin classic (Assets Package) + +%package plugin-archive-skin-larry-assets +Summary: Plugin archive / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-archive) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-archive-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-archive-skin-larry-assets +Plugin archive / Skin larry (Assets Package) + +%package plugin-archive-skin-classic-assets +Summary: Plugin archive / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-archive) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-archive-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-archive-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-archive-skin-classic-assets +Plugin archive / Skin classic (Assets Package) + +%package plugin-enigma-skin-classic-assets +Summary: Plugin enigma / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-enigma) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-enigma-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-enigma-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-enigma-skin-classic-assets +Plugin enigma / Skin classic (Assets Package) + +%package plugin-help-skin-larry-assets +Summary: Plugin help / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-help) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-help-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-help-skin-larry-assets +Plugin help / Skin larry (Assets Package) + +%package plugin-help-skin-classic-assets +Summary: Plugin help / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-help) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-help-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-help-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-help-skin-classic-assets +Plugin help / Skin classic (Assets Package) + +%package plugin-hide_blockquote-skin-larry-assets +Summary: Plugin hide_blockquote / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-hide_blockquote) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-hide_blockquote-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-hide_blockquote-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-hide_blockquote-skin-larry-assets +Plugin hide_blockquote / Skin larry (Assets Package) + +%package plugin-jqueryui-skin-larry-assets +Summary: Plugin jqueryui / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-jqueryui-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-jqueryui-skin-larry-assets +Plugin jqueryui / Skin larry (Assets Package) + +%package plugin-jqueryui-skin-classic-assets +Summary: Plugin jqueryui / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-jqueryui-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-jqueryui-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-jqueryui-skin-classic-assets +Plugin jqueryui / Skin classic (Assets Package) + +%package plugin-legacy_browser-skin-larry-assets +Summary: Plugin legacy_browser / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-legacy_browser) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-legacy_browser-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-legacy_browser-skin-larry-assets +Plugin legacy_browser / Skin larry (Assets Package) + +%package plugin-legacy_browser-skin-classic-assets +Summary: Plugin legacy_browser / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-legacy_browser) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-legacy_browser-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-legacy_browser-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-legacy_browser-skin-classic-assets +Plugin legacy_browser / Skin classic (Assets Package) + +%package plugin-managesieve-skin-larry-assets +Summary: Plugin managesieve / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-managesieve-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-managesieve-skin-larry-assets +Plugin managesieve / Skin larry (Assets Package) + +%package plugin-managesieve-skin-classic-assets +Summary: Plugin managesieve / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-managesieve-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-managesieve-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-managesieve-skin-classic-assets +Plugin managesieve / Skin classic (Assets Package) + +%package plugin-markasjunk-skin-larry-assets +Summary: Plugin markasjunk / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-markasjunk) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-markasjunk-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-markasjunk-skin-larry-assets +Plugin markasjunk / Skin larry (Assets Package) + +%package plugin-markasjunk-skin-classic-assets +Summary: Plugin markasjunk / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-markasjunk) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-markasjunk-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-markasjunk-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-markasjunk-skin-classic-assets +Plugin markasjunk / Skin classic (Assets Package) + +%package plugin-vcard_attachments-skin-larry-assets +Summary: Plugin vcard_attachments / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-vcard_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-vcard_attachments-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-vcard_attachments-skin-larry-assets +Plugin vcard_attachments / Skin larry (Assets Package) + +%package plugin-vcard_attachments-skin-classic-assets +Summary: Plugin vcard_attachments / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-vcard_attachments) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-vcard_attachments-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-vcard_attachments-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-vcard_attachments-skin-classic-assets +Plugin vcard_attachments / Skin classic (Assets Package) + +%package plugin-zipdownload-skin-larry-assets +Summary: Plugin zipdownload / Skin larry (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-zipdownload) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-zipdownload-skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload-skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-zipdownload-skin-larry-assets +Plugin zipdownload / Skin larry (Assets Package) + +%package plugin-zipdownload-skin-classic-assets +Summary: Plugin zipdownload / Skin classic (Assets) +Group: Applications/Internet +Requires: %{name}(plugin-zipdownload) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(plugin-zipdownload-skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(plugin-zipdownload-skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description plugin-zipdownload-skin-classic-assets +Plugin zipdownload / Skin classic (Assets Package) + +%package skin-larry +Summary: Skin larry +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(skin-larry) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description skin-larry +Skin larry + +%package skin-classic +Summary: Skin classic +Group: Applications/Internet +Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}(skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(skin) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(skin-classic) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description skin-classic +Skin classic + +%package skin-larry-assets +Summary: Skin larry (Assets) +Group: Applications/Internet +Provides: %{name}(skin-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(skin-larry-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description skin-larry-assets +Skin larry (Assets Package) + +%package skin-classic-assets +Summary: Skin classic (Assets) +Group: Applications/Internet +Provides: %{name}(skin-assets) = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: %{name}(skin-classic-assets) = %{?epoch:%{epoch}:}%{version}-%{release} + +%description skin-classic-assets +Skin classic (Assets Package) %prep -%setup -q +%setup -q -c "%{name}-%{version}" +pushd %{name}-%{version} %patch1 -p1 +%patch2 -p1 %patch201 -p1 %patch202 -p1 +# Remove the results of patching when there's an incidental offset find . -type f -name "*.orig" -delete -# fix permissions -find . -type f -print | xargs chmod a-x - -# remove any reference to sqlite in config file so people don't mistakely -# assume it works -sed -i '/sqlite/d' config/defaults.inc.php -sed -i 's/\r//' SQL/mssql.initial.sql +# Remove hidden files +find . -type f -name ".*" -delete -%build +# Remove any reference to sqlite in config file so people don't +# mistakely assume it works +%{__sed} -i '/sqlite/d' config/defaults.inc.php +%{__sed} -i 's/\r//' SQL/mssql.initial.sql +popd -%install +for skin in larry classic; do + # Template files and the like + for sdir in $(find %{name}-%{version}/ -type d -name "$skin" | sort); do + target_dir=$(echo $sdir | %{__sed} -e "s|%{name}-%{version}|%{name}-skin-$skin-%{version}|g") + %{__mkdir_p} $(dirname $target_dir) + # Copy all, including assets, for the -devel sub-package + cp -av $sdir $target_dir + done -rm -rf %{buildroot} -install -d %{buildroot}%{roundcube} -cp -pr ./* %{buildroot}%{roundcube} -rm -rf %{buildroot}%{roundcube}/installer - -# Remove plugins and skins symbolic links in public_html/ -rm -rf %{buildroot}%{roundcube}/public_html/plugins -rm -rf %{buildroot}%{roundcube}/public_html/skins + ( + echo "%package skin-$skin" + echo "Summary: Skin $skin" + echo "Group: Applications/Internet" + echo "Requires: %%{name}(core) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Requires: %%{name}(skin-$skin-assets) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(skin-$skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "" + echo "%description skin-$skin" + echo "Skin $skin" + echo "" + ) >> skins.packages + + ( + echo "%files skin-$skin -f skin-$skin.files" + echo "%defattr(-,root,root,-)" + echo "" + ) >> skins.files + + ( + echo "%package skin-$skin-assets" + echo "Summary: Skin $skin (Assets)" + echo "Group: Applications/Internet" + echo "Provides: %%{name}(skin-assets) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(skin-$skin-assets) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "" + echo "%description skin-$skin-assets" + echo "Skin $skin (Assets Package)" + echo "" + ) >> skins-assets.packages + + ( + echo "%files skin-$skin-assets -f skin-$skin-assets.files" + echo "%defattr(-,root,root,-)" + echo "" + ) >> skins-assets.files -# Move robots.txt to the correct place -rm -rf %{buildroot}%{roundcube}/public_html/robots.txt -mv %{buildroot}%{roundcube}/robots.txt %{buildroot}%{roundcube}/public_html/robots.txt + %{__rm} -rf %{name}-skin-$skin-%{version}/plugins +done -mkdir -p %{buildroot}%{_ap_sysconfdir}/conf.d -cp -pr %SOURCE20 %{buildroot}%{_ap_sysconfdir}/conf.d +for plugin in $(find %{name}-%{version}/plugins -mindepth 1 -maxdepth 1 -type d | sort); do + target_dir=$(echo $plugin | %{__sed} -e "s|%{name}-%{version}|%{name}-plugin-$(basename $plugin)-%{version}|g") + %{__mkdir_p} $(dirname $target_dir) + cp -av ${plugin} $target_dir + + # Special treatment of the jquery plugin + if [ "$(basename $plugin)" == "jqueryui" ]; then + %{__mv} $target_dir/themes $target_dir/skins + %{__sed} -i -e 's/themes/skins/g' $target_dir/{config.inc.php.dist,jqueryui.php,README} + fi -mkdir -p %{buildroot}%{roundcube_conf} -mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d -cp -pr %SOURCE21 %{buildroot}%{_sysconfdir}/logrotate.d/roundcubemail + ( + echo "%package plugin-$(basename $plugin)" + echo "Summary: Plugin $(basename $plugin)" + echo "Group: Applications/Internet" + echo "Requires: %%{name}(core) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Requires: %%{name}(plugin-$(basename $plugin)-assets) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Requires: %%{name}(plugin-$(basename $plugin)-skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(plugin-$(basename $plugin)) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "" + echo "%description plugin-$(basename $plugin)" + echo "Plugin $(basename $plugin)" + echo "" + ) >> plugins.packages + + ( + echo "%files plugin-$(basename $plugin) -f plugin-$(basename $plugin).files" + echo "%defattr(-,root,root,-)" + echo "" + ) >> plugins.files + + ( + echo "%package plugin-$(basename $plugin)-assets" + echo "Summary: Plugin $(basename $plugin) Assets" + echo "Group: Applications/Internet" + echo "Requires: %%{name}(plugin-$(basename $plugin)) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(plugin-$(basename $plugin)-assets) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "" + echo "%description plugin-$(basename $plugin)-assets" + echo "Plugin $(basename $plugin) Assets" + echo "" + ) >> plugins-assets.packages + + ( + echo "%files plugin-$(basename $plugin)-assets -f plugin-$(basename $plugin)-assets.files" + echo "%defattr(-,root,root,-)" + echo "" + ) >> plugins-assets.files + + for skin in larry classic; do + for dir in $(find $target_dir -type d -name "$skin" | sort); do + starget_dir=$(echo $dir | %{__sed} -e "s|%{name}-plugin-$(basename $plugin)-%{version}|%{name}-plugin-$(basename $plugin)-skin-$skin-%{version}|g") + %{__mkdir_p} $(dirname $starget_dir) + %{__mv} $dir $starget_dir + + ( + echo "%package plugin-$(basename $plugin)-skin-$skin" + echo "Summary: Plugin $(basename $plugin) / Skin $skin" + echo "Group: Applications/Internet" + echo "Requires: %%{name}(plugin-$(basename $plugin)) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Requires: %%{name}(skin-$skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Requires: %%{name}(plugin-$(basename $plugin)-skin-$skin-assets) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(plugin-$(basename $plugin)-skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(plugin-$(basename $plugin)-skin-$skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "" + echo "%description plugin-$(basename $plugin)-skin-$skin" + echo "Plugin $(basename $plugin) / Skin $skin" + echo "" + ) >> plugins-skins.packages + + ( + echo "%files plugin-$(basename $plugin)-skin-$skin -f plugin-$(basename $plugin)-skin-$skin.files" + echo "%defattr(-,root,root,-)" + echo "" + ) >> plugins-skins.files + + ( + echo "%package plugin-$(basename $plugin)-skin-$skin-assets" + echo "Summary: Plugin $(basename $plugin) / Skin $skin (Assets)" + echo "Group: Applications/Internet" + echo "Requires: %%{name}(plugin-$(basename $plugin)) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Requires: %%{name}(skin-$skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Requires: %%{name}(plugin-$(basename $plugin)-skin-$skin) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "Provides: %%{name}(plugin-$(basename $plugin)-skin-$skin-assets) = %%{?epoch:%%{epoch}:}%%{version}-%%{release}" + echo "" + echo "%description plugin-$(basename $plugin)-skin-$skin-assets" + echo "Plugin $(basename $plugin) / Skin $skin (Assets Package)" + echo "" + ) >> plugins-skins-assets.packages + + ( + echo "%files plugin-$(basename $plugin)-skin-$skin-assets -f plugin-$(basename $plugin)-skin-$skin-assets.files" + echo "%defattr(-,root,root,-)" + echo "" + ) >> plugins-skins-assets.files + done + done +done -mkdir -p %{buildroot}%{roundcube_lib}/plugins/enigma -mkdir -p %{buildroot}%{roundcube_log} +cat \ + plugins.packages \ + plugins-assets.packages \ + plugins-skins.packages \ + plugins-skins-assets.packages \ + skins.packages \ + skins-assets.packages \ + > packages + +cat \ + plugins.files \ + plugins-assets.files \ + plugins-skins.files \ + plugins-skins-assets.files \ + skins.files \ + skins-assets.files \ + > files -# use dist files as config files -mv %{buildroot}%{roundcube}/config/config.inc.php.sample %{buildroot}%{roundcube_conf}/config.inc.php -mv %{buildroot}%{roundcube}/config/defaults.inc.php %{buildroot}%{roundcube_conf}/defaults.inc.php -# keep any other config files too -mv %{buildroot}%{roundcube}/config/* %{buildroot}%{roundcube_conf}/ -rm -rf %{buildroot}%{roundcube}/config -rm -rf %{buildroot}%{roundcube}/logs -rm -rf %{buildroot}%{roundcube}/temp -rm -rf %{buildroot}%{roundcube}/tests -rm -rf %{buildroot}%{roundcube}/.htaccess -rm -rf %{buildroot}%{roundcube}/public_html/.htaccess -rm -rf %{buildroot}%{roundcube}/index-test.php - -pushd %{buildroot}%{roundcube} -ln -s ../../..%{roundcube_conf} config -ln -s ../../..%{roundcube_log} logs -ln -s ../../..%{roundcube_lib} temp -popd +find | sort | tee files.find >/dev/null -# Enigma -mv %{buildroot}%{roundcube_plugins}/enigma/config.inc.php.dist %{buildroot}%{roundcube_conf}/enigma.inc.php -rm -rf %{buildroot}%{roundcube_plugins}/enigma/config.inc.php -pushd %{buildroot}%{roundcube_plugins}/enigma -ln -s ../../../../..%{roundcube_conf}/enigma.inc.php config.inc.php -rm -rf home/ -ln -s ../../../../..%{roundcube_lib}/plugins/enigma/ home -popd -mkdir -p %{buildroot}%{roundcube_lib}/plugins/enigma +%build -# ACL plugin -mv %{buildroot}%{roundcube_plugins}/acl/config.inc.php.dist %{buildroot}%{roundcube_conf}/acl.inc.php -rm -rf %{buildroot}%{roundcube_plugins}/acl/config.inc.php -pushd %{buildroot}%{roundcube_plugins}/acl/ -ln -s ../../../../..%{roundcube_conf}/acl.inc.php config.inc.php -popd +%install +%{__install} -pm 755 %{SOURCE1} . -# Managesieve plugin -mv %{buildroot}%{roundcube_plugins}/managesieve/config.inc.php.dist %{buildroot}%{roundcube_conf}/managesieve.inc.php -pushd %{buildroot}%{roundcube_plugins}/managesieve/ -ln -s ../../../../..%{roundcube_conf}/managesieve.inc.php config.inc.php -popd +function new_files() { + find %{buildroot}%{datadir} -type d -exec echo "%dir {}" \; > current-new.files + find %{buildroot}%{datadir} -type f >> current-new.files + find %{buildroot}%{datadir} -type l >> current-new.files + + if [ -f "current.files" ]; then + ./comm.py current.files current-new.files + else + cat current-new.files + fi -# Password plugin -mv %{buildroot}%{roundcube_plugins}/password/config.inc.php.dist %{buildroot}%{roundcube_conf}/password.inc.php -pushd %{buildroot}%{roundcube_plugins}/password/ -ln -s ../../../../..%{roundcube_conf}/password.inc.php config.inc.php -popd + %{__mv} current-new.files current.files +} -# clean up the buildroot -rm -rf %{buildroot}%{roundcube}/{CHANGELOG,INSTALL,LICENSE,README,UPGRADING,SQL} +%{__rm} -rf %{buildroot} -if [ -d "%{buildroot}%{roundcube}/public_html/" ]; then - asset_path="%{buildroot}%{roundcube}/public_html/assets" -else - asset_path="%{buildroot}%{roundcube}/assets" -fi +%{__install} -d \ + %{buildroot}%{_ap_sysconfdir}/conf.d \ + %{buildroot}%{_sysconfdir}/logrotate.d \ + %{buildroot}%{confdir} \ + %{buildroot}%{datadir}/public_html \ + %{buildroot}%{logdir} \ + %{buildroot}%{tmpdir} -mkdir -p ${asset_path} +pushd %{name}-%{version} +# Move robots.txt to the correct place +%{__install} -pm 644 robots.txt %{buildroot}%{datadir}/public_html/robots.txt -# Compress the CSS -for file in `find %{buildroot}/%{roundcube} -type f -name "*.css"`; do - asset_loc=$(dirname $(echo ${file} | sed -e "s|%{buildroot}/%{roundcube}|${asset_path}|g")) - mkdir -p ${asset_loc} - cat ${file} | %{_bindir}/python-cssmin > ${asset_loc}/$(basename ${file}).min && \ - mv -vf ${asset_loc}/$(basename ${file}).min ${asset_loc}/$(basename ${file}) || \ - cp -av ${file} ${asset_loc}/$(basename ${file}) -done +%{__install} -pm 644 %SOURCE20 %{buildroot}%{_ap_sysconfdir}/conf.d -# Compress the JS -for file in `find %{buildroot}/%{roundcube} -type f -name "*.js"`; do - asset_loc=$(dirname $(echo ${file} | sed -e "s|%{buildroot}/%{roundcube}|${asset_path}|g")) - mkdir -p ${asset_loc} - uglifyjs ${file} > ${asset_loc}/$(basename ${file}).min && \ - mv -vf ${asset_loc}/$(basename ${file}).min ${asset_loc}/$(basename ${file}) || \ - cp -av ${file} ${asset_loc}/$(basename ${file}) -done +%{__install} -pm 644 %SOURCE21 %{buildroot}%{_sysconfdir}/logrotate.d/roundcubemail -# Fix anything executable that does not have a shebang -for file in `find %{buildroot}/%{roundcube} -type f -perm /a+x`; do - [ -z "`head -n 1 $file | grep \"^#!/\"`" ] && chmod -v 644 $file -done +# use dist files as config files +%{__install} -pm 644 config/config.inc.php.sample %{buildroot}%{confdir}/config.inc.php +%{__install} -pm 644 config/defaults.inc.php %{buildroot}%{confdir}/defaults.inc.php -# Find files with a shebang that do not have executable permissions -for file in `find %{buildroot}/%{roundcube} -type f ! -perm /a+x`; do - [ ! -z "`head -n 1 $file | grep \"^#!/\"`" ] && chmod -v 755 $file -done +pushd %{buildroot}%{datadir} +%{__ln_s} ../../..%{confdir} config +%{__ln_s} ../../..%{logdir} logs +%{__ln_s} ../../..%{tmpdir} temp +popd -# Find files that have non-standard-executable-perm -find %{buildroot}/%{roundcube} -type f -perm /g+wx -exec chmod -v g-w {} \; +# Utilities +%{__cp} -a bin/ %{buildroot}%{datadir}/bin/ -# Find files that are not readable -find %{buildroot}/%{roundcube} -type f ! -perm /go+r -exec chmod -v go+r {} \; +# The core of the program +%{__install} -pm 644 index.php %{buildroot}%{datadir}/index.php +%{__install} -d %{buildroot}%{datadir}/program/ +%{__cp} -a program/include/ %{buildroot}%{datadir}/program/include/ +%{__cp} -a program/lib/ %{buildroot}%{datadir}/program/lib/ +%{__cp} -a program/localization/ %{buildroot}%{datadir}/program/localization/ +%{__cp} -a program/steps/ %{buildroot}%{datadir}/program/steps/ +%{__install} -pm 644 public_html/index.php %{buildroot}%{datadir}/public_html/index.php +popd # # Exclude the following external libraries # +# php-pear-Auth-SASL +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/Auth/SASL/ \ + %{buildroot}/%{datadir}/program/lib/Auth/SASL.php + # php-pear-Net-LDAP3 -rm -rf %{buildroot}/%{roundcube}/program/lib/Net/LDAP3/ \ - %{buildroot}/%{roundcube}/program/lib/Net/LDAP3.php +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/Net/LDAP3/ \ + %{buildroot}/%{datadir}/program/lib/Net/LDAP3.php + # php-pear-Net-IDNA2 -rm -rf %{buildroot}/%{roundcube}/program/lib/Net/IDNA2/ \ - %{buildroot}/%{roundcube}/program/lib/Net/IDNA2.php +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/Net/IDNA2/ \ + %{buildroot}/%{datadir}/program/lib/Net/IDNA2.php + # php-pear-Net-SMTP -rm -rf %{buildroot}/%{roundcube}/program/lib/Net/SMTP.php +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/Net/SMTP.php + # php-pear-Net-Socket -rm -rf %{buildroot}/%{roundcube}/program/lib/Net/Socket.php +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/Net/Socket.php + # php-pear-Mail -rm -rf %{buildroot}/%{roundcube}/program/lib/Mail/ +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/Mail/ + # php-pear-MDB2 -rm -rf %{buildroot}/%{roundcube}/program/lib/MDB2/ \ - %{buildroot}/%{roundcube}/program/lib/MDB2.php +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/MDB2/ \ + %{buildroot}/%{datadir}/program/lib/MDB2.php + # php-pear -rm -rf %{buildroot}/%{roundcube}/program/lib/PEAR.php \ - %{buildroot}/%{roundcube}/program/lib/PEAR5.php +%{__rm} -rf %{buildroot}/%{datadir}/program/lib/PEAR.php \ + %{buildroot}/%{datadir}/program/lib/PEAR5.php # Remove any empty directory we might be left with -find %{buildroot}/%{roundcube}/program/lib -type d -empty -delete +find %{buildroot}/%{datadir} -type d -empty -delete + +%{__install} -d \ + %{buildroot}%{plugindir} \ + %{buildroot}%{datadir}/skins %if 0%{?rhel} > 5 || 0%{?fedora} > 13 # php-pear-Net-Sieve -rm -rf %{buildroot}/%{roundcube_plugins}/managesieve/lib/Net +%{__rm} -rf %{buildroot}/%{plugindir}/managesieve/lib/Net %endif -%pre -if [ -f "/etc/roundcubemail/kolab.inc.php" ]; then - mv /etc/roundcubemail/kolab.inc.php /etc/roundcubemail/libkolab.inc.php +if [ -d "%{buildroot}%{datadir}/public_html/" ]; then + asset_path="%{buildroot}%{datadir}/public_html/assets" +else + asset_path="%{buildroot}%{datadir}/assets" fi -if [ -L %{roundcube_plugins}/enigma/home -a ! -d %{roundcube_plugins}/enigma/home ]; then - rm -rf %{roundcube_plugins}/enigma/home >/dev/null 2>&1 || : +%{__mkdir_p} ${asset_path} + +orig_dir="%{name}-%{version}" +asset_dir="%{name}-assets-%{version}$(echo ${asset_path} | %{__sed} -e 's|%{buildroot}%{datadir}||g')" + +# Remove the skins and installer directories from $orig_dir +%{__rm} -rf $orig_dir/{installer,skins} + +echo "Original directory for core: $orig_dir" +echo "Asset directory for core: $asset_dir" + +# Compress the CSS +for file in `find $orig_dir -type f -name "*.css" | grep -vE "/(plugins|skins)/"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + cat ${file} | %{_bindir}/python-cssmin > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) +done + +# Compress the JS, but not the already minified +for file in `find $orig_dir -type f -name "*.js" ! -name "*.min.js" | grep -vE "/(plugins|skins)/"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + uglifyjs ${file} > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) +done + +# The already minified JS can just be copied over to the assets location +for file in `find $orig_dir -type f -name "*.min.js" | grep -vE "/(plugins|skins)/"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) +done + +# Other assets +for file in $(find $orig_dir -type f \ + -name "*.eot" -o \ + -name "*.gif" -o \ + -name "*.ico" -o \ + -name "*.jpg" -o \ + -name "*.png" -o \ + -name "*.svg" -o \ + -name "*.swf" -o \ + -name "*.tif" -o \ + -name "*.ttf" -o \ + -name "*.woff" | \ + grep -vE "/(plugins|skins)/" + ); do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -vf ${file} ${asset_loc}/$(basename $file) +done + +new_files > core.files + +echo "== Files for core: ==" +cat core.files +echo "===========================" + +for file in `find %{name}-assets-%{version}/ -type f`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|%{name}-assets-%{version}|%{buildroot}%{datadir}|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) +done + +new_files > core-assets.files + +echo "== Files for core assets: ==" +cat core-assets.files +echo "===========================" + +echo "=================================================================" +echo "Dividing Skin Assets and Non-Assets" +echo "=================================================================" + +for skin in larry classic; do + # Take the files from the original directory, + # Find the ones that are assets, + # Move those over to the assets-specific directory. + + orig_dir="%{name}-skin-$skin-%{version}" + asset_dir="%{name}-skin-$skin-assets-%{version}$(echo ${asset_path} | %{__sed} -e 's|%{buildroot}%{datadir}||g')" + + echo "Original directory for the $skin skin: $orig_dir" + echo "Asset directory for the $skin skin: $asset_dir" + + # Compress the CSS + for file in `find $orig_dir -type f -name "*.css"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + cat ${file} | %{_bindir}/python-cssmin > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # Compress the JS, but not the already minified + for file in `find $orig_dir -type f -name "*.js" ! -name "*.min.js"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + uglifyjs ${file} > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # The already minified JS can just be copied over to the assets location + for file in `find $orig_dir -type f -name "*.min.js"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # Other assets + for file in $(find $orig_dir -type f \ + -name "*.eot" -o \ + -name "*.gif" -o \ + -name "*.ico" -o \ + -name "*.jpg" -o \ + -name "*.png" -o \ + -name "*.svg" -o \ + -name "*.swf" -o \ + -name "*.tif" -o \ + -name "*.ttf" -o \ + -name "*.woff" + ); do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -vf ${file} ${asset_loc}/$(basename $file) + done + + # The watermark.html is an asset, too + if [ -f "$orig_dir/skins/$skin/watermark.html" ]; then + %{__mv} -v $orig_dir/skins/$skin/watermark.html \ + $asset_dir/skins/$skin/watermark.html + fi + + find %{name}-skin-$skin-%{version}/skins/ -type d -empty -delete + + cp -a %{name}-skin-$skin-%{version}/skins/* %{buildroot}%{datadir}/skins/. + + new_files > skin-$skin.files + + echo "== Files for skin $skin: ==" + cat skin-$skin.files + echo "===========================" + + %{__mkdir_p} %{buildroot}%{datadir}/public_html/assets/skins/ + cp -a %{name}-skin-$skin-assets-%{version}/public_html/assets/skins/* %{buildroot}%{datadir}/public_html/assets/skins/. + + new_files > skin-$skin-assets.files + + echo "== Files for skin assets $skin: ==" + cat skin-$skin-assets.files + echo "===========================" +done + +echo "=================================================================" +echo "Dividing Plugins, Plugin Assets, Plugin Skins and Plugin Skin Assets and Non-Assets" +echo "=================================================================" + +for plugin in $(find %{name}-%{version}/plugins/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sort); do + for skin in larry classic; do + orig_dir="%{name}-plugin-$plugin-skin-$skin-%{version}" + + # No skin, no assets + if [ ! -d "$orig_dir" ]; then + continue + fi + + asset_dir="%{name}-plugin-$plugin-skin-$skin-assets-%{version}" + + # Compress the CSS + for file in `find $orig_dir -type f -name "*.css"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + cat ${file} | %{_bindir}/python-cssmin > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # Compress the JS, but not the already minified + for file in `find $orig_dir -type f -name "*.js" ! -name "*.min.js"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + uglifyjs ${file} > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # The already minified JS can just be copied over to the assets location + for file in `find $orig_dir -type f -name "*.min.js"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # Other assets + for file in $(find $orig_dir -type f \ + -name "*.eot" -o \ + -name "*.gif" -o \ + -name "*.ico" -o \ + -name "*.jpg" -o \ + -name "*.png" -o \ + -name "*.svg" -o \ + -name "*.swf" -o \ + -name "*.tif" -o \ + -name "*.ttf" -o \ + -name "*.woff" + ); do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -vf ${file} ${asset_loc}/$(basename $file) + done + + # Purge empty directories + find $orig_dir -type d -empty -delete + done + + %{__mkdir_p} %{buildroot}%{plugindir} + cp -a %{name}-plugin-${plugin}-%{version}/plugins/${plugin} %{buildroot}%{plugindir}/. + + if [ -f "%{buildroot}%{plugindir}/$plugin/config.inc.php.dist" ]; then + pushd %{buildroot}%{plugindir}/$plugin + %{__mv} config.inc.php.dist %{buildroot}%{confdir}/$plugin.inc.php + ln -s ../../../..%{confdir}/$plugin.inc.php config.inc.php + popd + fi + + new_files > plugin-$plugin.files + + echo "== Files for plugin $plugin: ==" + cat plugin-$plugin.files + echo "===========================" + + # Skin-independent assets + orig_dir="%{name}-plugin-$plugin-%{version}" + asset_dir="%{name}-plugin-$plugin-assets-%{version}" + + # Compress the CSS + for file in `find $orig_dir -type f -name "*.css"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + cat ${file} | %{_bindir}/python-cssmin > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # Compress the JS, but not the already minified + for file in `find $orig_dir -type f -name "*.js" ! -name "*.min.js"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + uglifyjs ${file} > ${asset_loc}/$(basename ${file}) && \ + %{__rm} -rf ${file} || \ + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # The already minified JS can just be copied over to the assets location + for file in `find $orig_dir -type f -name "*.min.js"`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + # Other assets + for file in $(find $orig_dir -type f \ + -name "*.eot" -o \ + -name "*.gif" -o \ + -name "*.ico" -o \ + -name "*.jpg" -o \ + -name "*.png" -o \ + -name "*.svg" -o \ + -name "*.swf" -o \ + -name "*.tif" -o \ + -name "*.ttf" -o \ + -name "*.woff" + ); do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|$orig_dir|$asset_dir|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -vf ${file} ${asset_loc}/$(basename $file) + done + + # Purge empty directories + find $orig_dir -type d -empty -delete + + if [ ! -d $asset_dir ]; then + touch plugin-$plugin-assets.files + continue + fi + + # Install the assets + for file in `find %{name}-plugin-$plugin-assets-%{version} -type f`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|%{name}-plugin-$plugin-assets-%{version}|$asset_path|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + new_files > plugin-$plugin-assets.files + + echo "== Files for plugin $plugin: ==" + cat plugin-$plugin-assets.files + echo "===========================" +done + +for plugin in $(find %{name}-%{version}/plugins/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sort); do + for skin in larry classic; do + touch plugin-$plugin-skin-$skin.files + touch plugin-$plugin-skin-$skin-assets.files + + if [ ! -d "%{name}-plugin-${plugin}-skin-$skin-%{version}/plugins/${plugin}/skins" ]; then + continue + fi + + %{__install} -d %{buildroot}%{plugindir}/$plugin/skins/ + cp -a %{name}-plugin-${plugin}-skin-$skin-%{version}/plugins/${plugin}/skins/$skin %{buildroot}%{plugindir}/$plugin/skins/. + + new_files > plugin-$plugin-skin-$skin.files + + echo "== Files for skin $plugin-$skin: ==" + cat plugin-$plugin-skin-$skin.files + echo "===========================" + + # Install the assets + for file in `find %{name}-plugin-$plugin-skin-$skin-assets-%{version} -type f`; do + asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|%{name}-plugin-$plugin-skin-$skin-assets-%{version}|$asset_path|g")) + %{__mkdir_p} ${asset_loc} + %{__mv} -v ${file} ${asset_loc}/$(basename ${file}) + done + + new_files > plugin-$plugin-skin-$skin-assets.files + + echo "== Files for skin $plugin-$skin: ==" + cat plugin-$plugin-skin-$skin-assets.files + echo "===========================" + + done +done + +%{__sed} -r -i \ + -e 's|%{buildroot}||g' \ + -e '/^%dir\s*$/d' \ + -e '/^(%dir )*\/etc\/roundcubemail\//d' \ + -e '/^(%dir )*\/var\//d' \ + *.files + +%pre +if [ -L %{plugindir}/enigma/home -a ! -d %{plugindir}/enigma/home ]; then + %{__rm} -rf %{plugindir}/enigma/home >/dev/null 2>&1 || : fi %clean -rm -rf %{buildroot} +%{__rm} -rf %{buildroot} %post # replace default des string in config file for better security @@ -302,10 +1949,10 @@ echo $str } -sed -i "s/rcmail-\!24ByteDESkey\*Str/`makedesstr`/" /etc/roundcubemail/defaults.inc.php || : &> /dev/null +%{__sed} -i "s/rcmail-\!24ByteDESkey\*Str/`makedesstr`/" /etc/roundcubemail/defaults.inc.php || : &> /dev/null -sed -i -r -e "s/.*(\s*define\(\s*'RCMAIL_VERSION'\s*,\s*').*('\);)/\1%{version}-%{release}\2/g" \ - %{roundcube}/program/include/iniset.php || : +%{__sed} -i -r -e "s/.*(\s*define\(\s*'RCMAIL_VERSION'\s*,\s*').*('\);)/\1%{version}-%{release}\2/g" \ + %{datadir}/program/include/iniset.php || : if [ -f "%{php_inidir}/apc.ini" ]; then if [ ! -z "`grep ^apc.enabled=1 %{php_inidir}/apc.ini`" ]; then @@ -326,29 +1973,360 @@ %files %defattr(-,root,root,-) -%doc CHANGELOG -%doc LICENSE -%doc UPGRADING -%doc SQL -%{roundcube} -%dir %{_sysconfdir}/%{name} -%attr(0640,root,%{httpd_group}) %config(noreplace) %{_sysconfdir}/%{name}/acl.inc.php -%attr(0640,root,%{httpd_group}) %config(noreplace) %{_sysconfdir}/%{name}/config.inc.php -%attr(0640,root,%{httpd_group}) %{_sysconfdir}/%{name}/defaults.inc.php -%attr(0640,root,%{httpd_group}) %config(noreplace) %{_sysconfdir}/%{name}/enigma.inc.php -%attr(0640,root,%{httpd_group}) %config(noreplace) %{_sysconfdir}/%{name}/managesieve.inc.php -%attr(0640,root,%{httpd_group}) %config(noreplace) %{_sysconfdir}/%{name}/password.inc.php -%attr(0640,root,%{httpd_group}) %{_sysconfdir}/%{name}/mimetypes.php -%if 0%{?suse_version} -%dir %{_ap_sysconfdir} -%dir %{_ap_sysconfdir}/conf.d -%endif -%config(noreplace) %{_ap_sysconfdir}/conf.d/roundcubemail.conf -%attr(0770,root,%{httpd_group}) %dir /var/lib/roundcubemail -%attr(0770,root,%{httpd_group}) %dir /var/lib/roundcubemail/plugins -%attr(0770,root,%{httpd_group}) %dir /var/lib/roundcubemail/plugins/enigma +%doc %{name}-%{version}/LICENSE +%doc %{name}-%{version}/UPGRADING +%doc %{name}-%{version}/SQL + +%files core -f core.files +%defattr(-,root,root,-) +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} +%config(noreplace) %{_ap_sysconfdir}/conf.d/%{name}.conf +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/config.inc.php +%attr(0640,root,%{httpd_group}) %{confdir}/defaults.inc.php %attr(0770,root,%{httpd_group}) %dir /var/log/roundcubemail -%config(noreplace) %{_sysconfdir}/logrotate.d/roundcubemail +%attr(0770,root,%{httpd_group}) %dir /var/lib/roundcubemail + +%files core-assets -f core-assets.files +%defattr(-,root,root,-) + +%files plugin-acl -f plugin-acl.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/acl.inc.php + +%files plugin-additional_message_headers -f plugin-additional_message_headers.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/additional_message_headers.inc.php + +%files plugin-archive -f plugin-archive.files +%defattr(-,root,root,-) + +%files plugin-attachment_reminder -f plugin-attachment_reminder.files +%defattr(-,root,root,-) + +%files plugin-autologon -f plugin-autologon.files +%defattr(-,root,root,-) + +%files plugin-database_attachments -f plugin-database_attachments.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/database_attachments.inc.php + +%files plugin-debug_logger -f plugin-debug_logger.files +%defattr(-,root,root,-) + +%files plugin-emoticons -f plugin-emoticons.files +%defattr(-,root,root,-) + +%files plugin-enigma -f plugin-enigma.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/enigma.inc.php + +%files plugin-example_addressbook -f plugin-example_addressbook.files +%defattr(-,root,root,-) + +%files plugin-filesystem_attachments -f plugin-filesystem_attachments.files +%defattr(-,root,root,-) + +%files plugin-help -f plugin-help.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/help.inc.php + +%files plugin-hide_blockquote -f plugin-hide_blockquote.files +%defattr(-,root,root,-) + +%files plugin-http_authentication -f plugin-http_authentication.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/http_authentication.inc.php + +%files plugin-identity_select -f plugin-identity_select.files +%defattr(-,root,root,-) + +%files plugin-jqueryui -f plugin-jqueryui.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/jqueryui.inc.php + +%files plugin-legacy_browser -f plugin-legacy_browser.files +%defattr(-,root,root,-) + +%files plugin-managesieve -f plugin-managesieve.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/managesieve.inc.php + +%files plugin-markasjunk -f plugin-markasjunk.files +%defattr(-,root,root,-) + +%files plugin-new_user_dialog -f plugin-new_user_dialog.files +%defattr(-,root,root,-) + +%files plugin-new_user_identity -f plugin-new_user_identity.files +%defattr(-,root,root,-) + +%files plugin-newmail_notifier -f plugin-newmail_notifier.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/newmail_notifier.inc.php + +%files plugin-password -f plugin-password.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/password.inc.php +%{plugindir}/password/helpers/chpass-wrapper.pyc +%{plugindir}/password/helpers/chpass-wrapper.pyo + +%files plugin-redundant_attachments -f plugin-redundant_attachments.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/redundant_attachments.inc.php + +%files plugin-show_additional_headers -f plugin-show_additional_headers.files +%defattr(-,root,root,-) + +%files plugin-squirrelmail_usercopy -f plugin-squirrelmail_usercopy.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/squirrelmail_usercopy.inc.php + +%files plugin-subscriptions_option -f plugin-subscriptions_option.files +%defattr(-,root,root,-) + +%files plugin-userinfo -f plugin-userinfo.files +%defattr(-,root,root,-) + +%files plugin-vcard_attachments -f plugin-vcard_attachments.files +%defattr(-,root,root,-) + +%files plugin-virtuser_file -f plugin-virtuser_file.files +%defattr(-,root,root,-) + +%files plugin-virtuser_query -f plugin-virtuser_query.files +%defattr(-,root,root,-) + +%files plugin-zipdownload -f plugin-zipdownload.files +%defattr(-,root,root,-) +%attr(0640,root,%{httpd_group}) %config(noreplace) %{confdir}/zipdownload.inc.php + +%files plugin-acl-assets -f plugin-acl-assets.files +%defattr(-,root,root,-) + +%files plugin-additional_message_headers-assets -f plugin-additional_message_headers-assets.files +%defattr(-,root,root,-) + +%files plugin-archive-assets -f plugin-archive-assets.files +%defattr(-,root,root,-) + +%files plugin-attachment_reminder-assets -f plugin-attachment_reminder-assets.files +%defattr(-,root,root,-) + +%files plugin-autologon-assets -f plugin-autologon-assets.files +%defattr(-,root,root,-) + +%files plugin-database_attachments-assets -f plugin-database_attachments-assets.files +%defattr(-,root,root,-) + +%files plugin-debug_logger-assets -f plugin-debug_logger-assets.files +%defattr(-,root,root,-) + +%files plugin-emoticons-assets -f plugin-emoticons-assets.files +%defattr(-,root,root,-) + +%files plugin-enigma-assets -f plugin-enigma-assets.files +%defattr(-,root,root,-) + +%files plugin-example_addressbook-assets -f plugin-example_addressbook-assets.files +%defattr(-,root,root,-) + +%files plugin-filesystem_attachments-assets -f plugin-filesystem_attachments-assets.files +%defattr(-,root,root,-) + +%files plugin-help-assets -f plugin-help-assets.files +%defattr(-,root,root,-) + +%files plugin-hide_blockquote-assets -f plugin-hide_blockquote-assets.files +%defattr(-,root,root,-) + +%files plugin-http_authentication-assets -f plugin-http_authentication-assets.files +%defattr(-,root,root,-) + +%files plugin-identity_select-assets -f plugin-identity_select-assets.files +%defattr(-,root,root,-) + +%files plugin-jqueryui-assets -f plugin-jqueryui-assets.files +%defattr(-,root,root,-) + +%files plugin-legacy_browser-assets -f plugin-legacy_browser-assets.files +%defattr(-,root,root,-) + +%files plugin-managesieve-assets -f plugin-managesieve-assets.files +%defattr(-,root,root,-) + +%files plugin-markasjunk-assets -f plugin-markasjunk-assets.files +%defattr(-,root,root,-) + +%files plugin-new_user_dialog-assets -f plugin-new_user_dialog-assets.files +%defattr(-,root,root,-) + +%files plugin-new_user_identity-assets -f plugin-new_user_identity-assets.files +%defattr(-,root,root,-) + +%files plugin-newmail_notifier-assets -f plugin-newmail_notifier-assets.files +%defattr(-,root,root,-) + +%files plugin-password-assets -f plugin-password-assets.files +%defattr(-,root,root,-) + +%files plugin-redundant_attachments-assets -f plugin-redundant_attachments-assets.files +%defattr(-,root,root,-) + +%files plugin-show_additional_headers-assets -f plugin-show_additional_headers-assets.files +%defattr(-,root,root,-) + +%files plugin-squirrelmail_usercopy-assets -f plugin-squirrelmail_usercopy-assets.files +%defattr(-,root,root,-) + +%files plugin-subscriptions_option-assets -f plugin-subscriptions_option-assets.files +%defattr(-,root,root,-) + +%files plugin-userinfo-assets -f plugin-userinfo-assets.files +%defattr(-,root,root,-) + +%files plugin-vcard_attachments-assets -f plugin-vcard_attachments-assets.files +%defattr(-,root,root,-) + +%files plugin-virtuser_file-assets -f plugin-virtuser_file-assets.files +%defattr(-,root,root,-) + +%files plugin-virtuser_query-assets -f plugin-virtuser_query-assets.files +%defattr(-,root,root,-) + +%files plugin-zipdownload-assets -f plugin-zipdownload-assets.files +%defattr(-,root,root,-) + +%files plugin-acl-skin-larry -f plugin-acl-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-acl-skin-classic -f plugin-acl-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-archive-skin-larry -f plugin-archive-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-archive-skin-classic -f plugin-archive-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-enigma-skin-classic -f plugin-enigma-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-help-skin-larry -f plugin-help-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-help-skin-classic -f plugin-help-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-hide_blockquote-skin-larry -f plugin-hide_blockquote-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-jqueryui-skin-larry -f plugin-jqueryui-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-jqueryui-skin-classic -f plugin-jqueryui-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-legacy_browser-skin-larry -f plugin-legacy_browser-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-legacy_browser-skin-classic -f plugin-legacy_browser-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-managesieve-skin-larry -f plugin-managesieve-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-managesieve-skin-classic -f plugin-managesieve-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-markasjunk-skin-larry -f plugin-markasjunk-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-markasjunk-skin-classic -f plugin-markasjunk-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-vcard_attachments-skin-larry -f plugin-vcard_attachments-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-vcard_attachments-skin-classic -f plugin-vcard_attachments-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-zipdownload-skin-larry -f plugin-zipdownload-skin-larry.files +%defattr(-,root,root,-) + +%files plugin-zipdownload-skin-classic -f plugin-zipdownload-skin-classic.files +%defattr(-,root,root,-) + +%files plugin-acl-skin-larry-assets -f plugin-acl-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-acl-skin-classic-assets -f plugin-acl-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-archive-skin-larry-assets -f plugin-archive-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-archive-skin-classic-assets -f plugin-archive-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-enigma-skin-classic-assets -f plugin-enigma-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-help-skin-larry-assets -f plugin-help-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-help-skin-classic-assets -f plugin-help-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-hide_blockquote-skin-larry-assets -f plugin-hide_blockquote-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-jqueryui-skin-larry-assets -f plugin-jqueryui-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-jqueryui-skin-classic-assets -f plugin-jqueryui-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-legacy_browser-skin-larry-assets -f plugin-legacy_browser-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-legacy_browser-skin-classic-assets -f plugin-legacy_browser-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-managesieve-skin-larry-assets -f plugin-managesieve-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-managesieve-skin-classic-assets -f plugin-managesieve-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-markasjunk-skin-larry-assets -f plugin-markasjunk-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-markasjunk-skin-classic-assets -f plugin-markasjunk-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-vcard_attachments-skin-larry-assets -f plugin-vcard_attachments-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-vcard_attachments-skin-classic-assets -f plugin-vcard_attachments-skin-classic-assets.files +%defattr(-,root,root,-) + +%files plugin-zipdownload-skin-larry-assets -f plugin-zipdownload-skin-larry-assets.files +%defattr(-,root,root,-) + +%files plugin-zipdownload-skin-classic-assets -f plugin-zipdownload-skin-classic-assets.files +%defattr(-,root,root,-) + +%files skin-larry -f skin-larry.files +%defattr(-,root,root,-) + +%files skin-classic -f skin-classic.files +%defattr(-,root,root,-) + +%files skin-larry-assets -f skin-larry-assets.files +%defattr(-,root,root,-) + +%files skin-classic-assets -f skin-classic-assets.files +%defattr(-,root,root,-) %changelog * Thu Aug 21 2014 Daniel Hoffend <dh@dotlan.net> - 1.1-0.5.git
View file
roundcubemail-1.1-assets.patch
Added
@@ -0,0 +1,36 @@ +commit 21b9c3b6c012822b60a8fb4cb9a59247eaa2d156 +Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> +Date: Thu Aug 28 18:56:15 2014 +0200 + + Allow assets to be entirely separated from the main Roundcube program facilities. + +diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php +index a848246..d196ec1 100644 +--- a/program/include/rcmail_output_html.php ++++ b/program/include/rcmail_output_html.php +@@ -263,6 +263,14 @@ EOF; + if (is_file($path)) { + return $skin_path . $file; + } ++ ++ $path = rtrim(RCUBE_INSTALL_PATH, '/'); ++ $path .= '/' . $skin_path . $file; ++ $path = realpath($path); ++ ++ if ($skin_path[0] != '/' && is_file($path)) { ++ return $path; ++ } + } + + return false; +@@ -503,6 +511,10 @@ EOF; + } + } + ++ if (!is_readable($path) && $path[0] != '/' && is_readable(rtrim(RCUBE_INSTALL_PATH, '/') . '/' . $path)) { ++ $path = rtrim(RCUBE_INSTALL_PATH, '/') . '/' . $path; ++ } ++ + if (is_readable($path)) { + $this->config->set('skin_path', $skin_path); + $this->base_path = preg_replace('!plugins/\w+/!', '', $skin_path); // set base_path to core skin directory (not plugin's skin)
View file
comm.py
Added
@@ -0,0 +1,16 @@ +#!/usr/bin/python + +import sys + +f1 = sys.argv[1] +f2 = sys.argv[2] + +fp1 = open(f1, 'r') +fl1 = fp1.readlines() +fp1.close() + +fp2 = open(f2, 'r') +fl2 = fp2.readlines() +fp2.close() + +print "".join([x for x in fl2 if not x in fl1])
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.