[sisyphus] php --with-dom

Alexander Bokovoy =?iso-8859-1?q?ab_=CE=C1_avilink=2Enet?=
Сб Май 26 18:53:49 MSD 2001


On Sat, May 26, 2001 at 06:38:41PM +0400, Dmitry V. Popkov wrote:
> Alexander Bokovoy wrote:
> 
> >>
> >>../../shared/libphp_common.so: undefined reference to `xmlNewNode'
> >>collect2: ld returned 1 exit status
> >>Неверный код возврата из /var/tmp/rpm-tmp.10273 (%build)
> >>
> >>Возможно, для кого-то это прозрачно, но я зашел в тупик...
> >>
> >Поскольку мы собираем разделяемую библиотеку libphp_common.so вручную
> >(сборочный механизм PHP этого пока не обеспечивает, но движение в этом
> >направлении наблюдается), то нужно вручную добавлять недостающие
> >библиотеки.
> >
> >Вы действительно хотели модуль dom вкомпилировать, а не загружать
> >динамически?
> >
> С этим разобрался, спасибо (добавил -lxml2) .
Я бы посоветовал Вам все-таки собирать модули динамическими.
Концепция сборки PHP и модулей к нему у нас такова:
- php.spec содержит основной код и вкомпилированные модули (как правило, то,
что не вызывает дополнительных зависимостей)

- все остальные модули при сборке опираются на установленный php-devel и
  берут свой исходный текст из /usr/src/php-devel/extensions/%name

Таким образом отпадает необходимость усложнять основной spec-файл, который
и без того немаленький.

Версия в Spring2001 использует слегка иной способ (nosrc.rpm вместо
src.rpm для модулей + зависимость при сборке от php-%version.tar.bz2
вместо установленного php-devel в /usr/src/php-devel), новая версия,
которая будет в Сизифе в начале недели, собирается так, как указано
абзацем выше. Шаблонный SPEC-файл для модулей из нее (пример для модуля
Curl) прикладываю.

> Но мне нужна еще поддержка qtdom :
> сборка с опцией --with-qtdom выдает следующее
> /bin/sh /usr/src/RPM/BUILD/php4/libtool --silent --mode=compile c++ -I. 
> -I/usr/src/RPM/BUILD/php4/ext/qtdom -I/usr/src/RPM/BUILD/php4/main 
> -I/usr/src/RPM/BUILD/php4 -I/usr/include/apache 
> -I/usr/src/RPM/BUILD/php4/Zend -I/include 
> -I/usr/src/RPM/BUILD/php4/TSRM  -DLINUX=22 -DRUSSIAN_APACHE 
> -DDEV_RANDOM=/dev/random -DEAPI -DEAPI_MM 
> -DEAPI_MM_CORE_PATH="/var/run/mm" -DUSE_EXPAT -DSUPPORT_UTF8 -pipe -g 
> -Wall -O2 -fexpensive-optimizations -march=i686  -c qtdom_qt.cpp
> qtdom_qt.cpp:20:18: qdom.h: No such file or directory
> qtdom_qt.cpp:21:21: qstring.h: No such file or directory
> qtdom_qt.cpp:22:21: qglobal.h: No such file or directory
> qtdom_qt.cpp:24: `QDomNode' was not declared in this scope
> и т.д.
> 
> А здесь что можно сделать?
export QTDIR=/usr/lib/qt2
в SPEC-файле перед сборкой.
 
-- 
Sincerely yours, Alexander Bokovoy 
  The Midgard Project    | ALT  Linux  Team | Minsk Linux Users Group
 www.midgard-project.org | www.altlinux.ru  |    www.minsk-lug.net 
-- You won't skid if you stay in a rut.
		-- Frank Hubbard
----------- следующая часть -----------
###############################################################
# This SPEC file is a configurable skeleton for PHP modules
# which are distributed with PHP4 tarball.
# Copyright (c) 2001 Alexander Bokovoy <ab на avilink.net>
# This SPEC file is available under terms of GNU GPL license
# versions 2 or greater
###############################################################
#  <Configuration>
#_/---------------\____________________________________________
# Package should be added into mod_php and/or console php?
# Some modules can be used under both, others (like php_gtk
# or midgard) are not.
%define 	use_mod_php	1
%define		use_con_php	1
#
# Package name without php prefix
%define		package_name	curl
###############################################################
%define		php_version	%(rpm -q --queryformat '%{VERSION}' php)
%define		php_release	%(rpm -q --queryformat '%{RELEASE}' php)

Name:	 	php-%package_name
Version:	%php_version
Release:	alt0.1RC1
Group:		System/Servers
Requires:	libcurl >= 7.7.3-alt2
License:	PHP Licence
Prereq:		php = %php_version-%php_release, perl
# Automatically added by buildreq on Thu Mar 08 2001
BuildRequires:  libbfd, libpam, php-devel = %php_version, libcurl-devel >= 7.7.3-alt2
Summary:	cURL module for PHP4
%add_serial php-devel

%description
The php-%package_name includes a dynamic shared object (DSO) that adds
cURL support to PHP4. cURL is a library that enables you to send and
receive files through various protocols, including HTTP, FTP, TELNET,
LDAP, DICT, and GOPHER. PHP4 is an HTML-embedded scripting language. If
you need cURL support for PHP4 applications, you will need to install
this package in addition to the php package.

%prep
%setup -T -c
cp -pr /usr/src/php-devel/extensions/%package_name/* .

%build
# Fix includes so that local config header file will always supercede global options
for j in `ls *.c` ; do
    perl -pi -e "s/#include \"php.h\"/#include \"php.h\"\n#include \"config.h\"/" $j
done
phpize

BUILD_HAVE=`echo %package_name | tr '[:lower:]-' '[:upper:]_'`
CFLAGS="$RPM_OPT_FLAGS -fPIC -L%{_libdir} -DHAVE_${BUILD_HAVE}=1 -DCOMPILE_DL_${BUILD_HAVE}=1"; export CFLAGS  

%configure --with-%package_name=/usr

BUILD_ENV_VARS="top_srcdir=$RPM_BUILD_DIR/%name-%version \
		bindir=$RPM_BUILD_ROOT/usr/bin \
		sbindir=$RPM_BUILD_ROOT/usr/sbin \
		includedir=$RPM_BUILD_ROOT/usr/include \
		exec_prefix=$RPM_BUILD_ROOT/usr \
		libdir=$RPM_BUILD_ROOT/usr/lib \
		prefix=$RPM_BUILD_ROOT/usr \
		localstatedir=$RPM_BUILD_ROOT/var/lib \
		PEAR_INSTALLDIR=$RPM_BUILD_ROOT/usr/lib/php \
		EXTENSION_DIR=$RPM_BUILD_ROOT/usr/lib/php/extensions"
make $BUILD_ENV_VARS 

%install
# Set them again because this is _different_ script
BUILD_ENV_VARS="top_srcdir=$RPM_BUILD_DIR/%name-%version \
		bindir=$RPM_BUILD_ROOT/usr/bin \
		sbindir=$RPM_BUILD_ROOT/usr/sbin \
		includedir=$RPM_BUILD_ROOT/usr/include \
		exec_prefix=$RPM_BUILD_ROOT/usr \
		libdir=$RPM_BUILD_ROOT/usr/lib \
		prefix=$RPM_BUILD_ROOT/usr \
		localstatedir=$RPM_BUILD_ROOT/var/lib \
		PEAR_INSTALLDIR=$RPM_BUILD_ROOT/usr/lib/php \
		EXTENSION_DIR=$RPM_BUILD_ROOT/usr/lib/php/extensions"

make $BUILD_ENV_VARS install 

%clean

%files
%{_libdir}/php/extensions/*
%doc CREDITS

%post
# Common part: all modules need to 
if [ `uname` = "Linux" ]; then perl="%{_bindir}/perl"; fi
if [ `uname` = "SunOS" ]; then perl="%{_prefix}/local/bin/perl"; fi
%if %use_con_php
    if [ -f %{_sysconfdir}/php.ini ] ; then
	unset LC_ALL
        $perl -pi -e 's|^;extension=%{package_name}.so|extension=%{package_name}.so|g' %{_sysconfdir}/php.ini
    fi
%endif
%if %use_mod_php
    if [ -f %{_sysconfdir}/httpd/conf/php.ini ] ; then
	unset LC_ALL
        $perl -pi -e 's|^;extension=%{package_name}.so|extension=%{package_name}.so|g' %{_sysconfdir}/httpd/conf/php.ini
    fi
%endif
%if %use_mod_php
    %{_sbindir}/apachectl update
%endif
# Local script, specific to package

%preun
if [ `uname` = "Linux" ]; then perl="%{_bindir}/perl"; fi
if [ `uname` = "SunOS" ]; then perl="%{_prefix}/local/bin/perl"; fi
if [ $1 = "0" ]; then
%if %use_con_php
    if [ -f %{_sysconfdir}/php.ini ] ; then
	unset LC_ALL
	$perl -pi -e 's|^extension=%{package_name}.so|;extension=%{package_name}.so|g' %{_sysconfdir}/php.ini
    fi
%endif
%if %use_mod_php
    if [ -f %{_sysconfdir}/httpd/conf/php.ini ] ; then
	unset LC_ALL
        $perl -pi -e 's|^extension=%{package_name}.so|;extension=%{package_name}.so|g' %{_sysconfdir}/httpd/conf/php.ini
    fi
%endif
fi

%postun
%if %use_mod_php
    %{_sbindir}/apachectl update
%endif

%changelog
* Tue May 22 2001 Alexander Bokovoy <ab на altlinux.ru> 4.0.6-alt0.1RC1
- PHP 4.0.6 Release Candidate 1
- Dependencies fixed because curl >= 7.7.3-alt2 is required now

* Tue May 08 2001 Alexander Bokovoy <ab на altlinux.ru> 4.0.5-alt1
- PHP 4.0.5 release

* Thu Apr 05 2001 Alexander Bokovoy <ab на avilink.net> 4.0.5.RC6-alt1
- ALTification
- Last release candidate for 4.0.5
- SPEC file changes:
    + Reference to PHP source removed, php-devel is used to acquire sources of module 
    + locale-specific info unset during installation
    + nosrc -> src because NoSource tag cannot be used without corresponding Source one

* Sat Mar 17 2001 Alexander Bokovoy <ab на avilink.net> 4.0.5-ipl1
- First stable build

* Thu Mar 15 2001 Alexander Bokovoy <ab на avilink.net> 4.0.5-ipl0.4
- Rebuild with fixed version of PHP4

* Sun Mar 11 2001 Alexander Bokovoy <ab на avilink.net> 4.0.5-ipl0.3
- Fixed:
    + Build process for self-contained shared modules in PHP is generally broken,
      fixed by automatically adding -DHAVE_{MODULE}=1 -DCOMPILE_DL_{MODULE}=1 to
      configure
* Sat Mar 10 2001 Alexander Bokovoy <ab на avilink.net> 4.0.5-ipl0.2
- More enhancements in SPEC file:
    + Automatically gather PHP version, so no need to synchronize
      spec file's Version: field when new version of PHP is installed

* Thu Mar 08 2001 Alexander Bokovoy <ab на avilink.net> 4.0.5-ipl0.1
- Created new generalized spec file for nosrc.rpm for PHP modules
- Added ability to tune module installation for Console/Apache-based PHP
  Some modules cannot work in Web-server environment (php_gtk), some --
  in Console mode (midgard), some will be happy in both environments
  


Подробная информация о списке рассылки Sisyphus