summaryrefslogtreecommitdiff
blob: b90f7b314c2f28ddded30b7ba03a2fc18a7474a7 (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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# Copyright 2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License, v2 or later
# Author: Robin H. Johnson <robbat2@gentoo.org>
# $Header: /var/cvsroot/gentoo-x86/eclass/php.eclass,v 1.9 2003/04/25 14:42:00 coredumb Exp $

# This EBUILD is totally masked presently. Use it at your own risk.  I know it
# is severely broken, but I needed to get a copy into CVS to pass around and
# repoman was complaining at me too much

# TODO LIST
# * Finish install cleanup
# * USE flags
# - needs to get cleaned up
# - dependancies on more things for correctness
# - JPEG/PNG/CJK correctness checking
# * SAPI choosing inside eclass
# - effects configure line and install code
# * Java still flakey
# - look at the long gcc line with repeats of java stuff
# - needs heavy testing
# 
#
#
#
#

inherit eutils flag-o-matic

ECLASS=php
INHERITED="$INHERITED $ECLASS"

EXPORT_FUNCTIONS src_unpack src_compile src_install 

MY_P=php-${PV}
S=${WORKDIR}/${MY_P}
[ -z "$HOMEPAGE" ]	&& HOMEPAGE="http://www.php.net/"
[ -z "$LICENSE" ]	&& LICENSE="PHP"
[ -z "$SRC_URI" ] 	&& SRC_URI="http://us3.php.net/distributions/${MY_P}.tar.bz2"
[ -z "$PROVIDE" ]	&& PROVIDE="virtual/php"

IUSE="${IUSE} berkdb cjk crypt curl exif firebird flash freetds gd gdbm imap informix java jpeg ldap libwww mcal mysql nls oci8 odbc pam pdflib pic png postgres qt snmp spell ssl tiff truetype X xml xml2 zlib"
IUSE="${IUSE} phpbcmath phpbz2 phpcalender phpdbase phpftp phpiconv phpmimemagic phpsafemode phpsockets phpsysv phpwddx phpmemlimit"

#removed: gmp
#causes breakage

DEPEND="${DEPEND}
    X? ( virtual/x11 )
    berkdb? ( >=sys-libs/db-3 )
    crypt? ( >=dev-libs/libmcrypt-2.4 >=app-crypt/mhash-0.8 )
    curl? ( >=net-ftp/curl-7.10.2 )
    firebird? ( >=dev-db/firebird-1.0 )
    flash? ( media-libs/libswf >=media-libs/ming-0.2a )
    freetds? ( >=dev-db/freetds-0.53 )
    gd? ( media-libs/libgd )
    gdbm? ( >=sys-libs/gdbm-1.8.0 )
    imap? ( >=net-mail/uw-imap-2001a-r1 )
	java? ( >=virtual/jdk-1.4 )
    jpeg? ( >=media-libs/jpeg-6b )
    ldap? ( >=net-nds/openldap-1.2.11 )
    libwww? ( >=net-libs/libwww-5.3.2 )
	mcal? ( dev-libs/libmcal )
    mysql? ( >=dev-db/mysql-3.23.26 )
    nls? ( sys-devel/gettext )
    odbc? ( >=dev-db/unixODBC-1.8.13 )
    pam? ( >=sys-libs/pam-0.75 )
    pdflib? ( >=media-libs/pdflib-4.0.1-r2 )
    png? ( >=media-libs/libpng-1.2.5 )
    postgres? ( >=dev-db/postgresql-7.1 )
    qt? ( x11-libs/qt )
    snmp? ( >=net-analyzer/ucd-snmp-4.2.3 )
    spell? ( app-text/aspell )
    ssl? ( >=dev-libs/openssl-0.9.5 )
    tiff? ( >=media-libs/tiff-3.5.5 )
    truetype? ( ~media-libs/freetype-1.3.1 >=media-libs/t1lib-1.3.1 )
    xml2? ( dev-libs/libxml2 )
    xml? ( >=net-libs/libwww-5.3.2 >=app-text/sablotron-0.96 )
	"


RDEPEND="${RDEPEND}
	xml? ( >=app-text/sablotron-0.95-r1 >=net-libs/libwww-5.3.2 )
	qt? ( >=x11-libs/qt-2.3.0 )"


#fixes bug #14067
replace-flags "-march=k6*" "-march=i586"

php_src_unpack() {
	ewarn "This EBUILD is totally masked presently. Use it at your own risk.  I know it"
	ewarn "is severely broken, but I needed to get a copy into CVS to pass around and"
	ewarn "repoman was complaining at me too much"
	
    unpack ${MY_P}.tar.bz2
    cd ${S}

    # Configure Patch for wired uname -a
    mv configure configure.old
    cat configure.old | sed "s/PHP_UNAME=\`uname -a\`/PHP_UNAME=\`uname -s -n -r -v\`/g" > configure
    chmod 755 configure

    # fix PEAR installer
    cp pear/PEAR/Registry.php pear/PEAR/Registry.old
    sed "s:\$pear_install_dir\.:\'$D/usr/lib/php/\' . :g" pear/PEAR/Registry.old > pear/PEAR/Registry.php

	#if [ "`use java`" ] ; then

	#	cp configure configure.orig
	#	cat configure.orig | \
	#		sed -e 's/LIBS="-lttf $LIBS"/LIBS="-lttf $LIBS"/' \
	#		> configure

	#	cp ext/gd/gd.c ext/gd/gd.c.orig
	#	cat ext/gd/gd.c.orig | \
	#		sed -e "s/typedef FILE gdIOCtx;//" \
	#		> ext/gd/gd.c
	#	if [ "$JAVAC" ];
	#	then
	#              cp ext/java/Makefile.in ext/java/Makefile.in.orig
	#              cat ext/java/Makefile.in.orig | \
	#                      sed -e "s/^\tjavac/\t\$(JAVAC)/" \
	#                      > ext/java/Makefile.in
	#	fi
	#fi

	# pear's world writable files is a php issue fixed in their cvs tree.
	# http://bugs.php.net/bug.php?id=20978
	# http://bugs.php.net/bug.php?id=20974
	epatch ${FILESDIR}/pear_config.diff || die "epatch failed"

}

#export this here so we can use it
myconf="${myconf}"

php_src_compile() {
	use berkdb && myconf="${myconf} --with-db3=/usr"
	#---
	use cjk && myconf="${myconf} --enable-mbstring --enable-mbregex"
	#use cjk && myconf="${myconf} --enable-mbstring"
	#---
	use curl && myconf="${myconf} --with-curl"
	use crypt && myconf="${myconf} --enable-mcrypt=/usr --with-mhash"
	use firebird && myconf="${myconf} --with-interbase=/opt/interbase"
	use flash && myconf="${myconf} --with-swf=/usr --with-ming=/usr"
	use freetds && myconf="${myconf} --with-sybase=/usr"
	use gd && myconf="${myconf} --with-gd=/usr"
	use gdbm && myconf="${myconf} --with-gdbm=/usr"
	use java && myconf="${myconf} --with-java=${JAVA_HOME}"
	#--- check out this weirdness
	#use jpeg && myconf="${myconf} --with-jpeg-dir=/usr"
	#use jpeg && myconf="${myconf} --with-jpeg-dir=/usr/lib" || myconf="${myconf} --without-jpeg"
	use jpeg && myconf="${myconf} --with-jpeg-dir=/usr" || myconf="${myconf} --without-jpeg"
	#---
	use libwww && myconf="${myconf} --with-xml" || myconf="${myconf} --disable-xml"
	use ldap &&  myconf="${myconf} --with-ldap"
	use mysql && myconf="${myconf} --with-mysql=/usr" || myconf="${myconf} --without-mysql"
	use nls && myconf="${myconf} --with-gettext" || myconf="${myconf} --without-gettext"
	use odbc && myconf="${myconf} --with-unixODBC=/usr"
	use pam && myconf="${myconf} --with-pam"
	use pic && myconf="${myconf} --with-pic"
	use pdflib && myconf="${myconf} --with-pdflib=/usr"
	#---
	use png && myconf="${myconf} --with-png-dir=/usr"
	use png || myconf="${myconf} --without-png"
	#---
	use postgres && myconf="${myconf} --with-pgsql=/usr"
	use qt && myconf="${myconf} --with-qtdom" 
	use snmp && myconf="${myconf} --with-snmp --enable-ucd-snmp-hack"
	use spell && myconf="${myconf} --with-pspell"
	use ssl && myconf="${myconf} --with-openssl"
	use tiff && myconf="${myconf} --with-tiff-dir=/usr" || myconf="${myconf} --without-tiff"
	use truetype && myconf="${myconf} --with-ttf --with-t1lib"
	use xml2 && myconf="${myconf} --with-dom"
	use zlib && myconf="${myconf} --with-zlib --with-zlib-dir=/usr/lib"
	
	use exif && myconf="${myconf} --enable-exif"
	use mcal && myconf="${myconf} --with-mcal=/usr"

	# optional support for oracle oci8
	use oci8 && [ -n "$ORACLE_HOME" ] && myconf="${myconf} --with-oci8=${ORACLE_HOME}"

	# optional support for informix
	use informix && [ -n "$INFORMIXDIR" ] && myconf="${myconf} --with-informix=${INFORMIXDIR}"

	use imap && use ssl && \
	if [ "`strings ${ROOT}/usr/lib/c-client.a \ | grep ssl_onceonlyinit`" ] ; then
		echo "Compiling imap with SSL support"
		myconf="${myconf} --with-imap --with-imap-ssl"
	else
		echo "Compiling imap without SSL support"
		myconf="${myconf} --with-imap"
	fi

	LDFLAGS="$LDFLAGS -ltiff -ljpeg"
	if [ "`use X`" ] ; then
		myconf="${myconf} --with-xpm-dir=/usr/X11R6"
		LDFLAGS="$LDFLAGS -L/usr/X11R6/lib"
	fi
	
	if [ "`use xml`" ] ; then
		export LIBS="-lxmlparse -lxmltok"
		myconf="${myconf} --with-sablot=/usr"
		myconf="${myconf} --enable-xslt" 
		myconf="${myconf} --with-xslt-sablot" 
		myconf="${myconf} --with-xmlrpc"
	fi

	#local use flags
	use phpbcmath && myconf="${myconf} --enable-bcmath"
	use phpbz2 && myconf="${myconf} --with-bz2"
	use phpcalender && myconf="${myconf} --enable-calendar"
	use phpdbase && myconf="${myconf} --enable-dbase"
	use phpftp && myconf="${myconf} --enable-ftp"
	use phpiconv && myconf="${myconf} --with-iconv"
	use phpmimemagic && myconf="${myconf} --enable-mime-magic"
	use phpsafemode && myconf="${myconf} --enable-safe-mode"
	use phpsockets && myconf="${myconf} --enable-sockets"
	use phpsysv && myconf="${myconf} --enable-sysvsem --enable-sysvshm"
	use phpwddx && myconf="${myconf} --enable-wddx"
	use phpmemlimit && myconf="${myconf} --enable-memory-limit"

	myconf="${myconf} \
		--enable-inline-optimization \
		--enable-track-vars \
		--enable-trans-sid \
		--enable-versioning \
		--with-config-file-path=/etc/php4" 

	econf \
		${myconf} || die "bad ./configure"

	emake || die "compile problem"

}

#export this here so we can use it
installtargets="${installtargets}"

php_src_install() {
	addwrite /usr/share/snmp/mibs/.index

	installtargets="${installtargets} install-pear install-headers install-programs install-build install-modules"
	emake INSTALL_ROOT=${D} ${installtargets} || die
	
	# put make here

	dodoc CODING_STANDARDS LICENSE EXTENSIONS 
	dodoc RELEASE_PROCESS README.* TODO* NEWS
	dodoc ChangeLog* *.txt

	#install scripts
	exeinto /usr/bin
	doexe ${S}/pear/scripts/phpize
	doexe ${S}/pear/scripts/php-config
	doexe ${S}/pear/scripts/phpextdist
	
	# PHP module building stuff
	mkdir ${D}/usr/lib/php/build
	insinto /usr/lib/php/build
	doins build/* pear/pear.m4 acinclude.m4 configure.in Makefile.global scan_makefile_in.awk

    #revert Pear patch
    rm ${D}/usr/lib/php/PEAR/Registry.php
    mv ${S}/pear/PEAR/Registry.old ${D}/usr/lib/php/PEAR/Registry.php


	
}