php.spec 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. ##
  2. ## php.spec -- OpenPKG RPM Package Specification
  3. ## Copyright (c) 2000-2008 OpenPKG Foundation e.V. <http://openpkg.net/>
  4. ##
  5. ## Permission to use, copy, modify, and distribute this software for
  6. ## any purpose with or without fee is hereby granted, provided that
  7. ## the above copyright notice and this permission notice appear in all
  8. ## copies.
  9. ##
  10. ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  11. ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  12. ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  13. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  14. ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  15. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  16. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  17. ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  18. ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  19. ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  20. ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  21. ## SUCH DAMAGE.
  22. ##
  23. # package versions
  24. %define V_php 5.2.5
  25. %define V_php_suhosin_p 5.2.5-0.9.6.2
  26. %define V_php_suhosin_e 0.9.23
  27. %define V_php_hardened 5.1.6-0.4.15
  28. %define V_php_kolab 5.2.5
  29. # package information
  30. Name: php
  31. Summary: Personal HomePage (PHP)
  32. URL: http://www.php.net/
  33. Vendor: The PHP Project
  34. Packager: OpenPKG Foundation e.V.
  35. Distribution: OpenPKG Community
  36. Class: BASE
  37. Group: Language
  38. License: PHP
  39. Version: %{V_php}
  40. Release: 20080312
  41. # package options
  42. %option with_suhosin no
  43. %option with_hardened no
  44. %option with_bc no
  45. %option with_bdb no
  46. %option with_bzip2 no
  47. %option with_calendar no
  48. %option with_ctype no
  49. %option with_curl no
  50. %option with_debug no
  51. %option with_dom no
  52. %option with_exif no
  53. %option with_fastcgi no
  54. %option with_freetype no
  55. %option with_ftp no
  56. %option with_gd no
  57. %option with_gdbm no
  58. %option with_gettext no
  59. %option with_iconv no
  60. %option with_imap no
  61. %option with_imap_annotate no
  62. %option with_mbregex no
  63. %option with_mbstring no
  64. %option with_mcrypt no
  65. %option with_mhash no
  66. %option with_mm no
  67. %option with_mysql no
  68. %option with_oci8 no
  69. %option with_odbc no
  70. %option with_openldap no
  71. %option with_openldapsasl no
  72. %option with_pcre no
  73. %option with_pear no
  74. %option with_pgsql no
  75. %option with_sendmail no
  76. %option with_session no
  77. %option with_simplexml no
  78. %option with_snmp no
  79. %option with_sqlite no
  80. %option with_ssl no
  81. %option with_tidy no
  82. %option with_versioning no
  83. %option with_wddx no
  84. %option with_xml no
  85. %option with_xslt no
  86. %option with_zlib no
  87. # fixing implicit extension dependencies and correlations
  88. %if "%{with_mm}" == "yes"
  89. %undefine with_session
  90. %define with_session yes
  91. %endif
  92. %if "%{with_pear}" == "yes"
  93. %undefine with_xml
  94. %define with_xml yes
  95. %undefine with_pcre
  96. %define with_pcre yes
  97. %endif
  98. %if "%{with_freetype}" == "yes"
  99. %undefine with_gd
  100. %define with_gd yes
  101. %endif
  102. %if "%{with_imap_annotate}" == "yes"
  103. %undefine with_imap
  104. %define with_imap yes
  105. %endif
  106. %if "%{with_mysql}" == "yes" || "%{with_gd}" == "yes" || "%{with_dom}" == "yes"
  107. %undefine with_zlib
  108. %define with_zlib yes
  109. %endif
  110. %if "%{with_pgsql}" == "yes"
  111. %undefine with_ssl
  112. %define with_ssl yes
  113. %endif
  114. %if "%{with_suhosin}" == "yes" && "%{with_hardened}" == "yes"
  115. %undefine with_hardened
  116. %define with_hardened no
  117. %endif
  118. # list of sources
  119. Source0: http://static.php.net/www.php.net/distributions/php-%{V_php}.tar.gz
  120. Source1: http://download.suhosin.org/suhosin-%{V_php_suhosin_e}.tgz
  121. Source2: php.ini
  122. Patch0: http://www.hardened-php.net/hardening-patch-%{V_php_hardened}.patch.gz
  123. Patch1: http://download.suhosin.org/suhosin-patch-%{V_php_suhosin_p}.patch.gz
  124. Patch2: http://kolab.org/cgi-bin/viewcvs-kolab.cgi/*checkout*/server/patches/php/php-%{V_php_kolab}/KOLAB_Annotations.patch
  125. # build information
  126. Prefix: %{l_prefix}
  127. BuildRoot: %{l_buildroot}
  128. BuildPreReq: OpenPKG, openpkg >= 20050615, gcc, flex, bison
  129. PreReq: OpenPKG, openpkg >= 20050615
  130. %if "%{with_suhosin}" == "yes"
  131. BuildPreReq: autoconf
  132. %endif
  133. %if "%{with_sqlite}" == "yes"
  134. BuildPreReq: sqlite
  135. PreReq: sqlite
  136. %endif
  137. %if "%{with_mysql}" == "yes"
  138. BuildPreReq: mysql
  139. PreReq: mysql
  140. %endif
  141. %if "%{with_pgsql}" == "yes"
  142. BuildPreReq: postgresql
  143. PreReq: postgresql
  144. %endif
  145. %if "%{with_gd}" == "yes"
  146. BuildPreReq: gd >= 2.0.20, jpeg, png
  147. PreReq: gd >= 2.0.20, jpeg, png
  148. %endif
  149. %if "%{with_bdb}" == "yes"
  150. BuildPreReq: db
  151. PreReq: db
  152. %endif
  153. %if "%{with_zlib}" == "yes"
  154. BuildPreReq: zlib
  155. PreReq: zlib
  156. %endif
  157. %if "%{with_bzip2}" == "yes"
  158. BuildPreReq: bzip2
  159. PreReq: bzip2
  160. %endif
  161. %if "%{with_ssl}" == "yes"
  162. BuildPreReq: openssl
  163. PreReq: openssl
  164. %endif
  165. %if "%{with_openldap}" == "yes"
  166. BuildPreReq: openldap
  167. PreReq: openldap
  168. %if "%{with_openldapsasl}" == "yes"
  169. BuildPreReq: openldap::with_sasl = yes
  170. PreReq: openldap::with_sasl = yes
  171. %else
  172. BuildPreReq: openldap::with_sasl = no
  173. PreReq: openldap::with_sasl = no
  174. %endif
  175. %endif
  176. %if "%{with_mm}" == "yes"
  177. BuildPreReq: mm
  178. PreReq: mm
  179. %endif
  180. %if "%{with_pcre}" == "yes"
  181. BuildPreReq: pcre
  182. PreReq: pcre
  183. %endif
  184. %if "%{with_freetype}" == "yes"
  185. BuildPreReq: freetype
  186. PreReq: freetype
  187. %endif
  188. %if "%{with_gettext}" == "yes"
  189. BuildPreReq: gettext, libiconv
  190. PreReq: gettext, libiconv
  191. %endif
  192. %if "%{with_iconv}" == "yes"
  193. BuildPreReq: libiconv
  194. PreReq: libiconv
  195. %endif
  196. %if "%{with_imap}" == "yes"
  197. BuildPreReq: imap, openssl
  198. PreReq: imap, openssl
  199. %if "%{with_imap_annotate}" == "yes"
  200. BuildPreReq: imap::with_annotate = yes
  201. PreReq: imap::with_annotate = yes
  202. %endif
  203. %endif
  204. %if "%{with_xml}" == "yes"
  205. BuildPreReq: libxml
  206. PreReq: libxml
  207. %endif
  208. %if "%{with_xslt}" == "yes"
  209. BuildPreReq: libxslt
  210. PreReq: libxslt
  211. %endif
  212. %if "%{with_dom}" == "yes"
  213. BuildPreReq: libxml, libxslt
  214. PreReq: libxml, libxslt
  215. %endif
  216. %if "%{with_curl}" == "yes"
  217. BuildPreReq: curl
  218. PreReq: curl
  219. %endif
  220. %if "%{with_mhash}" == "yes"
  221. BuildPreReq: mhash
  222. PreReq: mhash
  223. %endif
  224. %if "%{with_mcrypt}" == "yes"
  225. BuildPreReq: libmcrypt
  226. PreReq: libmcrypt
  227. %endif
  228. %if "%{with_gdbm}" == "yes"
  229. BuildPreReq: gdbm, gdbm::with_ndbm = yes
  230. PreReq: gdbm, gdbm::with_ndbm = yes
  231. %endif
  232. %if "%{with_oci8}" == "yes"
  233. BuildPreReq: oracle
  234. PreReq: oracle
  235. %endif
  236. %if "%{with_snmp}" == "yes"
  237. BuildPreReq: snmp
  238. PreReq: snmp
  239. %endif
  240. %if "%{with_odbc}" == "yes"
  241. BuildPreReq: unixodbc
  242. PreReq: unixodbc
  243. %endif
  244. %if "%{with_sendmail}" == "yes"
  245. BuildPreReq: MTA
  246. PreReq: MTA
  247. %endif
  248. %if "%{with_simplexml}" == "yes"
  249. BuildPreReq: libxml
  250. PreReq: libxml
  251. %endif
  252. %if "%{with_tidy}" == "yes"
  253. BuildPreReq: tidy
  254. PreReq: tidy
  255. %endif
  256. AutoReq: no
  257. AutoReqProv: no
  258. %description
  259. PHP is an HTML-embedded scripting language. Much of its syntax is
  260. borrowed from C, Java and Perl with a couple of unique PHP-specific
  261. features thrown in. The goal of the language is to allow web
  262. developers to write dynamically generated pages quickly.
  263. This is the Command Line Interface (CLI) and Common Gateway
  264. Interface (CGI) version of PHP, intended for use in the "shebang"
  265. line ("#!%{l_prefix}/bin/php") of stand-alone PHP based programs
  266. and for use in the "shebang" line ("#!%{l_prefix}/cgi/php") of
  267. stand-alone webserver-independent CGI scripts.
  268. %track
  269. prog php = {
  270. version = %{V_php}
  271. url = http://www.php.net/downloads.php
  272. regex = php-(5.\d+\.\d+)\.tar\.gz
  273. }
  274. prog php:hardened = {
  275. version = %{V_php_hardened}
  276. url = http://www.hardened-php.net/downloads.13.html
  277. regex = hardening-patch-(5\.\d+\.\d+-\d+(\.\d+)+)\.patch\.gz
  278. }
  279. prog php:suhosin-patch = {
  280. version = %{V_php_suhosin_p}
  281. url = http://www.hardened-php.net/suhosin/download.html
  282. regex = suhosin-patch-(5\.\d+\.\d+-\d+(\.\d+)+)\.patch\.gz
  283. }
  284. prog php:suhosin-ext = {
  285. version = %{V_php_suhosin_e}
  286. url = http://www.hardened-php.net/suhosin/download.html
  287. regex = suhosin-(\d+(\.\d+)+)\.tgz
  288. }
  289. prog php:kolab = {
  290. version = %{V_php_kolab}
  291. url = http://kolab.org/cgi-bin/viewcvs-kolab.cgi/*checkout*/server/patches/php/
  292. regex = php-(\d+(\.\d+)+)/
  293. }
  294. %prep
  295. %setup -q
  296. %if "%{with_hardened}" == "yes"
  297. %patch -p1 -P 0
  298. %endif
  299. %if "%{with_suhosin}" == "yes"
  300. %setup -q -T -D -a 1
  301. %patch -p1 -P 1
  302. mv suhosin-%{V_php_suhosin_e} ext/suhosin
  303. rm -f package.xml
  304. export PHP_AUTOCONF=autoconf-213
  305. ./buildconf --copy --force
  306. $PHP_AUTOCONF
  307. %endif
  308. %{l_shtool} subst \
  309. -e 's;\(/include\)/freetype2;\1;' \
  310. configure \
  311. ext/gd/config.m4
  312. %if "%{with_imap_annotate}" == "yes"
  313. sed <%{PATCH2} -e '/php-5.2.1\/ext\/imap\/php_imap.c.orig/,/^[^\+]/d' | %{l_patch} -p1
  314. %endif
  315. %build
  316. # configure package
  317. case "%{l_platform -t}" in
  318. *-sunos5.10 ) cflags="%{l_cflags}" ;;
  319. * ) cflags="%{l_cflags -O}" ;;
  320. esac
  321. cppflags="%{l_cppflags}"
  322. ldflags="%{l_ldflags}"
  323. libs=""
  324. %if "%{with_gdbm}" == "yes"
  325. libs="$libs -lndbm -lgdbm"
  326. %endif
  327. %if "%{with_gd}" == "yes"
  328. libs="$libs -lpng -lz"
  329. %endif
  330. %if "%{with_gettext}" == "yes"
  331. libs="$libs -liconv"
  332. %endif
  333. %if "%{with_openldap}" == "yes" && "%{with_openldapsasl}" == "yes"
  334. libs="$libs -lsasl2"
  335. %endif
  336. %if "%{with_imap}" == "yes"
  337. libs="$libs -lssl -lcrypto"
  338. %endif
  339. %if "%{with_bdb}" == "yes"
  340. libs="$libs -ldb"
  341. %endif
  342. %if "%{with_pgsql}" == "yes"
  343. libs="$libs `pg_config --libs`"
  344. %endif
  345. %if "%{with_oci8}" == "yes"
  346. ORACLE_HOME="`%{l_rc} --query oracle_home`"
  347. export ORACLE_HOME
  348. %endif
  349. CC="%{l_cc}" \
  350. CFLAGS="$cflags" \
  351. CPPFLAGS="$cppflags" \
  352. LDFLAGS="$ldflags" \
  353. LIBS="$libs" \
  354. %if "%{with_sendmail}" == "yes"
  355. PROG_SENDMAIL="%{l_prefix}/sbin/sendmail" \
  356. %else
  357. PROG_SENDMAIL="`%{l_shtool} path false`" \
  358. %endif
  359. ./configure \
  360. --prefix=%{l_prefix} \
  361. --sysconfdir=%{l_prefix}/etc/php \
  362. --with-config-file-path=%{l_prefix}/etc/php \
  363. --libdir=%{l_prefix}/lib/php \
  364. --disable-all \
  365. --enable-pdo \
  366. %if "%{with_suhosin}" == "yes"
  367. --enable-suhosin \
  368. %endif
  369. %if "%{with_calendar}" == "yes"
  370. --enable-calendar \
  371. %endif
  372. --without-sqlite \
  373. %if "%{with_sqlite}" == "yes"
  374. --with-pdo-sqlite=%{l_prefix} \
  375. %else
  376. --without-pdo-sqlite \
  377. %endif
  378. %if "%{with_mysql}" == "yes"
  379. --with-mysql=%{l_prefix} \
  380. --with-pdo-mysql=%{l_prefix} \
  381. %else
  382. --without-mysql \
  383. %endif
  384. %if "%{with_pgsql}" == "yes"
  385. --with-pgsql=%{l_prefix} \
  386. --with-pdo-pgsql=%{l_prefix} \
  387. %else
  388. --without-pgsql \
  389. %endif
  390. %if "%{with_gd}" == "yes"
  391. --with-gd=%{l_prefix} \
  392. --with-jpeg-dir=%{l_prefix} \
  393. --with-png-dir=%{l_prefix} \
  394. %endif
  395. %if "%{with_fastcgi}" == "yes"
  396. --enable-fastcgi \
  397. %else
  398. --disable-fastcgi \
  399. %endif
  400. %if "%{with_freetype}" == "yes"
  401. --enable-gd-native-ttf \
  402. --with-freetype-dir=%{l_prefix} \
  403. %endif
  404. %if "%{with_bdb}" == "yes"
  405. --with-db4=%{l_prefix} \
  406. %endif
  407. %if "%{with_debug}" == "yes"
  408. --enable-debug \
  409. %else
  410. --disable-debug \
  411. %endif
  412. %if "%{with_zlib}" == "yes"
  413. --with-zlib=%{l_prefix} \
  414. --with-zlib-dir=%{l_prefix} \
  415. %endif
  416. %if "%{with_bzip2}" == "yes"
  417. --with-bz2=%{l_prefix} \
  418. %endif
  419. %if "%{with_ssl}" == "yes" || "%{with_openldap}" == "yes"
  420. --with-openssl=%{l_prefix} \
  421. %endif
  422. %if "%{with_openldap}" == "yes"
  423. --with-ldap=%{l_prefix} \
  424. %endif
  425. %if "%{with_session}" == "yes"
  426. --enable-session \
  427. %endif
  428. %if "%{with_mm}" == "yes"
  429. --with-mm=%{l_prefix} \
  430. %endif
  431. %if "%{with_pcre}" == "yes"
  432. --with-pcre-regex=%{l_prefix} \
  433. %endif
  434. %if "%{with_ftp}" == "yes"
  435. --enable-ftp \
  436. %endif
  437. %if "%{with_oci8}" == "yes"
  438. --with-oci8 \
  439. %endif
  440. %if "%{with_gettext}" == "yes"
  441. --with-gettext=%{l_prefix} \
  442. %endif
  443. %if "%{with_imap}" == "yes"
  444. --with-imap=%{l_prefix} \
  445. --with-imap-ssl=%{l_prefix} \
  446. %endif
  447. %if "%{with_xml}" == "yes"
  448. --enable-xml \
  449. --enable-libxml \
  450. --with-libxml-dir=%{l_prefix} \
  451. %else
  452. --disable-xml \
  453. %endif
  454. %if "%{with_xslt}" == "yes"
  455. --with-xsl=%{l_prefix} \
  456. %else
  457. --without-xsl \
  458. %endif
  459. %if "%{with_dom}" == "yes"
  460. --enable-dom \
  461. --with-libxml-dir=%{l_prefix} \
  462. %else
  463. --disable-dom \
  464. %endif
  465. %if "%{with_wddx}" == "yes"
  466. --enable-wddx \
  467. %endif
  468. %if "%{with_bc}" == "yes"
  469. --enable-bcmath \
  470. %endif
  471. %if "%{with_mhash}" == "yes"
  472. --with-mhash=%{l_prefix} \
  473. %endif
  474. %if "%{with_mcrypt}" == "yes"
  475. --with-mcrypt=%{l_prefix} \
  476. %endif
  477. %if "%{with_ctype}" == "yes"
  478. --enable-ctype \
  479. %endif
  480. %if "%{with_curl}" == "yes"
  481. --with-curl=%{l_prefix} \
  482. %endif
  483. %if "%{with_gdbm}" == "yes"
  484. --with-gdbm=%{l_prefix} \
  485. %endif
  486. %if "%{with_versioning}" == "yes"
  487. --enable-versioning \
  488. %endif
  489. %if "%{with_pear}" == "yes"
  490. --with-pear=%{l_prefix}/lib/php \
  491. %else
  492. --without-pear \
  493. %endif
  494. %if "%{with_simplexml}" == "yes"
  495. --enable-simplexml \
  496. --enable-libxml \
  497. --with-libxml-dir=%{l_prefix} \
  498. %else
  499. --disable-simplexml \
  500. %endif
  501. %if "%{with_snmp}" == "yes"
  502. --with-snmp=%{l_prefix} \
  503. --with-openssl-dir=%{l_prefix} \
  504. %endif
  505. %if "%{with_odbc}" == "yes"
  506. --with-unixODBC=%{l_prefix} \
  507. --with-pdo-odbc=unixODBC,%{l_prefix} \
  508. %endif
  509. %if "%{with_mbregex}" == "yes"
  510. --enable-mbregex \
  511. %endif
  512. %if "%{with_mbstring}" == "yes"
  513. --enable-mbstring \
  514. %endif
  515. %if "%{with_exif}" == "yes"
  516. --with-exif \
  517. %endif
  518. %if "%{with_iconv}" == "yes"
  519. --with-iconv=%{l_prefix} \
  520. %endif
  521. %if "%{with_tidy}" == "yes"
  522. --with-tidy=%{l_prefix} \
  523. %else
  524. --without-tidy \
  525. %endif
  526. --enable-cli \
  527. --enable-cgi \
  528. --enable-force-cgi-redirect \
  529. --enable-discard-path
  530. # build package
  531. %{l_make} %{l_mflags}
  532. %install
  533. # install package
  534. rm -rf $RPM_BUILD_ROOT
  535. %{l_make} %{l_mflags} install INSTALL_ROOT=$RPM_BUILD_ROOT
  536. # move CGI executale
  537. %{l_shtool} mkdir -f -p -m 755 \
  538. $RPM_BUILD_ROOT%{l_prefix}/cgi
  539. mv $RPM_BUILD_ROOT%{l_prefix}/bin/php-cgi \
  540. $RPM_BUILD_ROOT%{l_prefix}/cgi/php
  541. # install default configuration file
  542. %{l_shtool} mkdir -f -p -m 755 \
  543. $RPM_BUILD_ROOT%{l_prefix}/etc/php
  544. %{l_shtool} install -c -m 644 %{l_value -s -a} \
  545. %{SOURCE php.ini} $RPM_BUILD_ROOT%{l_prefix}/etc/php/
  546. # strip down installation
  547. rmdir $RPM_BUILD_ROOT%{l_prefix}/lib/php >/dev/null 2>&1 || true
  548. strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
  549. # determine installation files
  550. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} \
  551. '%config %{l_prefix}/etc/php/*'
  552. %files -f files
  553. %clean
  554. rm -rf $RPM_BUILD_ROOT