diff options
Diffstat (limited to 'gnustep-libs/sope/sope-9999.ebuild')
-rw-r--r-- | gnustep-libs/sope/sope-9999.ebuild | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/gnustep-libs/sope/sope-9999.ebuild b/gnustep-libs/sope/sope-9999.ebuild new file mode 100644 index 0000000..2ca84cc --- /dev/null +++ b/gnustep-libs/sope/sope-9999.ebuild @@ -0,0 +1,187 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=2 + +inherit gnustep-base apache-module flag-o-matic subversion + +ESVN_REPO_URI="http://svn.opengroupware.org/SOPE/trunk" + +DESCRIPTION="An extensive set of frameworks which form a complete Web application server environment" +HOMEPAGE="http://sope.opengroupware.org/en/index.html" +LICENSE="LGPL-2" +SLOT="0" +KEYWORDS="" +IUSE="apache2 ldap libFoundation mysql postgres sqlite" +DEPEND="gnustep-base/gnustep-base + dev-libs/libxml2 + dev-libs/openssl + dev-util/monotone + ldap? ( net-nds/openldap ) + mysql? ( virtual/mysql ) + postgres? ( virtual/postgresql-base ) + sqlite? ( >=dev-db/sqlite-3.0 )" +RDEPEND="${DEPEND}" + +APACHE2_MOD_DEFINE="NGOBJWEB" +APACHE2_MOD_FILE="sope-appserver/mod_ngobjweb/mod_ngobjweb.so" +APACHE2_MOD_CONF="47_mod_ngobjweb" + +S=${WORKDIR}/${PN} + +want_apache + +pkg_setup() { + gnustep-base_pkg_setup + local myLDFLAGS="$(gnustep-config --variable=LDFLAGS 2>/dev/null)" + if [ -n "${myLDFLAGS}" ] && (echo "${myLDFLAGS}" | grep -q "\-\-a\(dd\|s\)\-needed" 2>/dev/null); then + ewarn + ewarn "You seem to have compiled GNUstep with custom LDFLAGS:" + for foo in $(gnustep-config --variable=LDFLAGS); do + ewarn " "${foo} + done + ewarn + ewarn "SOPE is very sensitive regarding custom LDFLAGS. Especially with:" + ewarn " --add-needed" + ewarn " --as-needed" + ewarn + ewarn "If your SOPE install does not work as expected then please re-emerge SOPE" + ewarn "and your GNUstep (base and make) without any LDFLAGS before filing bugs." + ewarn + fi + append-ldflags -Wl,--no-as-needed + depend.apache_pkg_setup +} + +src_unpack() { + subversion_src_unpack + + # SOGo Monotone + EMTN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/mtn-src" + addread "${EMTN_STORE_DIR}" + addwrite "${EMTN_STORE_DIR}" + if [ ! -d "${EMTN_STORE_DIR}" ]; then + mkdir -p "${EMTN_STORE_DIR}" || die "Can't mkdir ${EMTN_STORE_DIR}." + fi + cd "${EMTN_STORE_DIR}" || die "Can't chdir to ${EMTN_STORE_DIR}" + + if [ ! -f "db.mtn" ]; then + mtn db init --db=./db.mtn || die "Failed to initialize Monotone database" + fi + + # Pull Inverse's SOGo Monotone repository + mtn --db=./db.mtn pull inverse.ca ca.inverse.sogo || die "Failed to pull Monotone repository" + if [ ! -d "SOGo" ]; then + mtn --db=./db.mtn checkout --branch ca.inverse.sogo SOGo || die "Failed to checkout SOGo branch" + else + cd SOGo + mtn update + fi +} + +src_prepare() { + # http://www.scalableogo.org/english/support/faq/article/how-do-i-compile-sogo.html + epatch "${EMTN_STORE_DIR}"/SOGo/SOPE/sope-gsmake2.diff + epatch "${EMTN_STORE_DIR}"/SOGo/SOPE/sope-patchset-r1660.diff + epatch "${FILESDIR}"/${PN}-r1660-use_system_root.patch + epatch "${FILESDIR}"/${PN}-r1660-SOGo-fix.patch + epatch "${FILESDIR}"/${PN}-r1660-SoOFS.patch # Fixing stuff after SOGo patches + epatch "${FILESDIR}"/${PN}-r1660-MySQL4Channel.m.patch # Fixing issues with primary key and UTF8 + epatch "${FILESDIR}"/${PN}-r1660-NGLogSyslogAppender.m.patch # Fixing compiler warnings + epatch "${FILESDIR}"/${PN}-r1660-NGHttp+WO.m.patch # Fixing compiler warnings + epatch "${FILESDIR}"/${PN}-r1660-LDAP_deprecated.patch # Fixing QA issues on 64 Bit + + if use apache2; then + # Only add mod_ngobjweb if it is not already in SUBPROJECTS + if ! ( sed -e :a -e '/\\$/N; s/\\\n//; ta' "${S}"/sope-appserver/GNUmakefile 2>/dev/null | grep -q "^[[:space:]]*SUBPROJECTS[\t \+=].*[[:space:]]mod_ngobjweb" ); then + sed -i "/^SUBPROJECTS[\t \+=]/,/^[\t ]\{1,99\}[a-zA-Z]\{1,99\}[\t ]*$/{s/\([a-zA-Z]\)$/\1\t\\\\\n\tmod_ngobjweb/}" \ + "${S}"/sope-appserver/GNUmakefile + fi + else + # Only remove mod_ngobjweb if it is found in SUBPROJECTS + if ( sed -e :a -e '/\\$/N; s/\\\n//; ta' "${S}"/sope-appserver/GNUmakefile 2>/dev/null | grep -q "^[[:space:]]*SUBPROJECTS[\t \+=].*[[:space:]]mod_ngobjweb" ); then + sed -i "s/^[\t ]*mod_ngobjweb[\t ]*$/\n/;/^[\t ]*mod_ngobjweb[\t ]*\\\\$/d" \ + "${S}"/sope-appserver/GNUmakefile + fi + fi + + gnustep-base_src_prepare +} + +src_configure() { + egnustep_env + local myconf + if use libFoundation; then + myconf="${myconf} --frameworks=libFoundation" + cd "${S}"/libFoundation + ./configure \ + --prefix=/usr \ + $(use_enable debug) \ + --with-gnustep || die "configure libFoundation failed" + fi + cd "${S}" + ./configure \ + $(use_enable debug) \ + $(use_enable debug strip) \ + --with-gnustep ${myconf} || die "configure failed" +} + +src_compile() { + egnustep_env + local myconf + if use libFoundation; then + cd "${S}"/libFoundation + CFLAGS="${CFLAGS} -Wno-import" egnustep_make + cd "${S}" + fi + if use apache2; then + myconf="${myconf} apxs=/usr/sbin/apxs" + myconf="${myconf} apr=/usr/bin/apr-1-config" + fi + egnustep_make ${myconf} +} + +src_test() { + # SOPE tends to break horribly if gnustep-make is build with LDFLAGS such as + # -Wl,--add-needed or -Wl,--as-needed. So we check here some vital binaries. + # Check if SoCore, SoOFS is correctly build/linked + local mySoCoreLDD=$(ldd -d "${S}"/sope-appserver/NGObjWeb/SoCore.sxp/SoCore 2>&1 | grep "lib\(NG\(ObjWeb\|Mime\|Streams\|Extensions\)\|EOControl\|DOM\|SaxObjC\|XmlRpc\)\.so\." | wc -l) + local mySoOFSLDD=$(ldd -d "${S}"/sope-appserver/SoOFS/SoOFS.sxp/SoOFS 2>&1 | grep "lib\(SoOFS\|NG\(ObjWeb\|Mime\|Streams\|Extensions\)\|EOControl\|DOM\|SaxObjC\|XmlRpc\)\.so\." | wc -l) + if [ -z "${mySoCoreLDD}" -o -z "${mySoOFSLDD}" -o "${mySoCoreLDD}" != "8" -o "${mySoOFSLDD}" != "9" ]; then + ewarn + ewarn "This SOPE installtion is not correctly build. Probably you are using" + ewarn "LDFLAGS to build SOPE that are not correctly handled in SOPE or you" + ewarn "have emerged gnustep-base/gnustep-make with LDFLAGS which are" + ewarn "preventing SOPE to link the needed libraries into it's own binaries." + ewarn "Please remerge gnustep-base/gnustep-make and/or SOPE with empty LDFLAGS." + ewarn + die "SOPE build is not complete (SoCore, SoOFS)" + fi + # Do the same for WEExtensions, WOExtensions, WEPrototype + local myWEExtensionsLDD=$(ldd -d "${S}"/sope-appserver/WEExtensions/WEExtensions.wox/WEExtensions 2>&1 | grep "lib\(WEExtensions\|NG\(ObjWeb\|Mime\|Streams\|Extensions\)\|EOControl\|DOM\|SaxObjC\|XmlRpc\)\.so\." | wc -l) + local myWOExtensionsLDD=$(ldd -d "${S}"/sope-appserver/WOExtensions/WOExtensions.wox/WOExtensions 2>&1 | grep "lib\(W[EO]Extensions\|NG\(ObjWeb\|Mime\|Streams\|Extensions\)\|EOControl\|DOM\|SaxObjC\|XmlRpc\)\.so\." | wc -l) + local myWEPrototypeLDD=$(ldd -d "${S}"/sope-appserver/WEPrototype/WEPrototype.wox/WEPrototype 2>&1 | grep "lib\(WEPrototype\|NG\(ObjWeb\|Mime\|Streams\|Extensions\)\|EOControl\|DOM\|SaxObjC\|XmlRpc\)\.so\." | wc -l) + if [ -z "${myWEExtensionsLDD}" -o -z "${myWOExtensionsLDD}" -o -z "${myWEPrototypeLDD}" -o "${myWEExtensionsLDD}" != "9" -o "${myWOExtensionsLDD}" != "10" -o "${myWEPrototypeLDD}" != "9" ]; then + ewarn + ewarn "This SOPE installtion is not correctly build. Probably you are using" + ewarn "LDFLAGS to build SOPE that are not correctly handled in SOPE or you" + ewarn "have emerged gnustep-base/gnustep-make with LDFLAGS which are" + ewarn "preventing SOPE to link the needed libraries into it's own binaries." + ewarn "Please remerge gnustep-base/gnustep-make and/or SOPE with empty LDFLAGS." + ewarn + die "SOPE build is not complete (WEExtensions, WOExtensions, WEPrototype)" + fi +} + +src_install() { + newenvd "${FILESDIR}"/sope.envd 99sope \ + || die "Failed installing env.d script" + gnustep-base_src_install + use apache2 && apache-module_src_install +} + +pkg_postinst() { + gnustep-base_pkg_postinst + use apache2 && apache-module_pkg_postinst +} |