blob: 55d379686aca0b3791a1171f660a3f81c6c7326e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI=2
inherit gnustep-base apache-module
MY_PV="1660-200908051100"
DESCRIPTION="An extensive set of frameworks which form a complete Web application server environment"
HOMEPAGE="http://sope.opengroupware.org/en/index.html"
SRC_URI="http://download.opengroupware.org/nightly/sources/trunk/${PN}-trunk-r${MY_PV}.tar.gz
http://www.scalableogo.org/files/downloads/SOGo/Sources/SOGo-1.1.0.tar.gz"
LICENSE="LGPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="apache2 ldap libFoundation mysql postgres sqlite"
DEPEND="gnustep-base/gnustep-base
dev-libs/libxml2
dev-libs/openssl
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
egnustep_env
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
depend.apache_pkg_setup
}
src_prepare() {
gnustep-base_src_prepare
# http://www.scalableogo.org/english/support/faq/article/how-do-i-compile-sogo.html
epatch "${WORKDIR}"/SOGo-1.1.0/SOPE/sope-gsmake2.diff
epatch "${WORKDIR}"/SOGo-1.1.0/SOPE/sope-patchset-r1660.diff
#epatch "${WORKDIR}"/SOGo-1.1.0/SOPE/sope-ngobjweb-fix.diff
epatch "${FILESDIR}"/${PN}-r1660-SOGo-fix.patch # Fixing stuff after SOGo patches
epatch "${FILESDIR}"/${PN}-r1660-NSZoneMallocAtomic.patch # NSZoneMalloc changed in GNUstep
epatch "${FILESDIR}"/${PN}-r1660-SoOFS.patch # libSoOFS is failing without -lcrypt
epatch "${FILESDIR}"/${PN}-r1660-WORepetition.m.patch
epatch "${FILESDIR}"/${PN}-r1660-NSDictionary+KVC.patch
epatch "${FILESDIR}"/${PN}-r1660-NSNull+misc.m.patch
epatch "${FILESDIR}"/${PN}-r1660-LDAP_deprecated.patch
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
}
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
fi
if use apache2; then
myconf="${myconf} apxs=/usr/sbin/apxs"
myconf="${myconf} apr=/usr/bin/apr-1-config"
fi
cd "${S}"
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
}
|