# Copyright 2015 awesome information technology, http://awesome-it.de # Distributed under the terms of the GNU General Public License v3 # $Header: $ EAPI=5 inherit git-2 versionator confutils eutils EGIT_REPO_URI="https://github.com/roundcube/roundcubemail.git" [[ ${PV} == "9999" ]] || EGIT_COMMIT="${PV/_/-}" SLOT="0" DESCRIPTION="A browser-based multilingual IMAP client with an application-like user interface" HOMEPAGE="http://roundcube.net" # kolab-roundcube is GPL-licensed, the rest of the licenses here are # for bundled PEAR components, googiespell and utf8.class.php LICENSE="GPL-3 BSD PHP-2.02 PHP-3 MIT public-domain" KEYWORDS="~amd64" IUSE="caldav ldap +mysql postgres sqlite ssl spell" KOLAB_PLUGINS_GIT_REPO_URI="https://git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git" KOLAB_PLUGINS_GIT_COMMIT="roundcubemail-plugins-kolab-3.2.3" KOLAB_CALDAV_PLUGINS_GIT_REPO_URI="https://gitlab.awesome-it.de/kolab/roundcube-plugins.git" KOLAB_CALDAV_PLUGINS_GIT_COMMIT="roundcubemail-plugins-kolab-caldav-3.2.3-r3" DEPEND="virtual/httpd-php >=dev-lang/php-5.3[crypt,gd,iconv,json,ldap?,pdo,postgres?,session,sockets,ssl?,xml,unicode] mysql? ( || ( dev-lang/php[mysql] dev-lang/php[mysqli] ) ) spell? ( dev-lang/php[curl,spell] ) sqlite? ( || ( dev-lang/php[sqlite] dev-lang/php[sqlite3] ) ) dev-php/PEAR-Auth_SASL dev-php/PEAR-HTTP_Request2 dev-php/PEAR-Mail_Mime dev-php/PEAR-Net_IDNA2 dev-php/PEAR-Net_Sieve dev-php/PEAR-Net_SMTP dev-php/PEAR-Net_Socket dev-php/PEAR-Net_URL2 dev-php/PEAR-Net_LDAP3 net-libs/libkolab[php] www-servers/nginx dev-lang/php[fpm] " RDEPEND="${DEPEND}" ROUNDCUBE_DIR="/usr/share/kolab-roundcube" ROUNDCUBE_LOG_DIR="/var/log/kolab/roundcube" ROUNDCUBE_CONF_DIR="/etc/kolab-roundcube" WWW_USER="nginx" src_unpack() { git-2_src_unpack git_repo_uri=${KOLAB_PLUGINS_GIT_REPO_URI} git_commit=${KOLAB_PLUGINS_GIT_COMMIT} if use caldav ; then git_repo_uri=${KOLAB_CALDAV_PLUGINS_GIT_REPO_URI} git_commit=${KOLAB_CALDAV_PLUGINS_GIT_COMMIT} fi # Put kolab plugins in temp location for better config file handling in src_prepare(). git clone "${git_repo_uri}" "${S}/plugins/kolab" || die if [[ -n "${git_commit}" ]] ; then pushd "${S}/plugins/kolab" git checkout "${git_commit}" || die popd fi } src_prepare() { # Use dist files as config files mv "config/config.inc.php.sample" "config/config.inc.php" # Enigma mv "plugins/enigma/config.inc.php.dist" "config/enigma.inc.php" ln -s "../../config/enigma.inc.php" "plugins/enigma/config.inc.php" # Managesieve plugin mv "plugins/managesieve/config.inc.php.dist" "config/managesieve.inc.php" ln -s "../../config/managesieve.inc.php" "plugins/managesieve/config.inc.php" # Password plugin mv "plugins/password/config.inc.php.dist" "config/password.inc.php" ln -s "../../config/password.inc.php" "plugins/password/config.inc.php" # Prepare config files for pykolab-setup. # Copy kolab plugins cp -a "${S}/plugins/kolab/plugins/"* "${S}/plugins/" # Copy plugin configuration files to the correct location for conffile in $(find "${S}/plugins/kolab" -type f -name "config.inc.php.dist") do plugin=$(basename $(dirname $conffile)) mv $conffile "config/${plugin}.inc.php" ln -s "../../config/${plugin}.inc.php" "plugins/${plugin}/config.inc.php" done mv "config/libkolab.inc.php" "config/kolab.inc.php" ln -sf "../../config/kolab.inc.php" "plugins/libkolab/config.inc.php" # Use default freebusy path http:///freebusy sed -s 's#$rcmail_config\[.kolab_freebusy_server.\]#//$rcmail_config\[.kolab_freebusy_server.\]#' -i "config/kolab.inc.php" # Remove temp plugin location rm -rf "${S}/plugins/kolab" cd "${S}" # Apply patches for kolab_patch in $(find ${FILESDIR} -iname "${P}-*.patch") ; do epatch "${kolab_patch}" done } src_install() { dodoc CHANGELOG INSTALL README.md UPGRADING dodir "${ROUNDCUBE_CONF_DIR}" insinto "${ROUNDCUBE_CONF_DIR}" for c in $(ls config) ; do doins "config/$c" done rm -rf "config" ln -s "${ROUNDCUBE_CONF_DIR}" "config" dodir "${ROUNDCUBE_DIR}" insinto "${ROUNDCUBE_DIR}" doins -r [[:lower:]]* SQL doins .htaccess # Kolab-setup needs them unpacked dodoc -r "SQL" docompress -x "/usr/share/doc/${PF}/SQL" dodir "${ROUNDCUBE_LOG_DIR}" fowners "${WWW_USER}" "${ROUNDCUBE_LOG_DIR}" [[ -d logs ]] && rm -rf logs ln -s "${ROUNDCUBE_LOG_DIR}" "logs" fowners "${WWW_USER}" "${ROUNDCUBE_DIR}/plugins/enigma/home" fowners "${WWW_USER}" "${ROUNDCUBE_DIR}/plugins/odfviewer/files" fowners "${WWW_USER}" "${ROUNDCUBE_DIR}/temp" insinto "/etc/nginx/conf.d" newins "${FILESDIR}/${P}-nginx.conf" "kolab-roundcube.conf" dodir "/etc/php/fpm.d" insinto "/etc/php/fpm.d" newins "${FILESDIR}/php-fpm.conf" "kolab-roundcube.conf" fperms 0755 "${ROUNDCUBE_DIR}/bin/update.sh" fperms 0755 "${ROUNDCUBE_DIR}/bin/updatedb.sh" } pkg_postinst() { einfo "After you've properly configured your Kolab Roundcube instance, " einfo "execute the following command for finalizing the setup:" einfo einfo "# emerge --config \"=${CATEGORY}/${PF}\"" einfo } pkg_config() { einfo "Updating package: \"roundcube\", using schema dir \"/usr/share/doc/${PF}/SQL\" ..." ${ROUNDCUBE_DIR}/bin/updatedb.sh \ --dir "/usr/share/doc/${PF}/SQL" \ --package roundcube || die "Failed updating Roundcube." for plugin in calendar kolab_activesync kolab_addressbook \ kolab_auth kolab_config kolab_delegation kolab_files \ libkolab libcalendaring odfviewer \ owncloud piwik_analytics tasklist; do plugin_dir="${ROUNDCUBE_DIR}/plugins/${plugin}" # Driver support? if [[ -d "$plugin_dir/drivers" ]] ; then for driver in $(ls "$plugin_dir/drivers") ; do # Check which driver is enabled if echo "