On Mon, Aug 04, 2008 at 04:27:58PM +0200, [EMAIL PROTECTED] wrote: > Hi, > I want to unit test my module (catacomb.tigris.org) using Python. My > idea is to load the module with ctypes (a python module that allows to > load functions from shared libraries into python) and test it in this > environment. The main advantage is that it's much easier to create > mock-up objects in Python than in C. My problem is that ctypes fails if > the shared library contains any undefined symbols. Because the module is > used normally together with a httpd server, > there're a lot of undefined symbols. My solution is to link libapr, > libaprutil, libexpat and libmysql statically in my module and to add a > file with the definitions of the apache-internal functions (just copy > and paste from httpd source). With every function which I copy in this > file I get a few new undefined symbols. All in all it's a pain to search > all definitions and I probably have to do this again after adding new > features which uses other functionalities. > > Is there an easier way to do this? To build a module which includes all > needed links to apache functions without linking the needed libraries > statically and copy-and-paste functions from apache source? Or do you > know a better way to do this? > > Steven
With httpd 1.3, there used to be a way to build something what was
called "shared core", a shared object that contained the server in a
form you could link it into an application.
I don't know if this is still possible with httpd 2.x, but what used I
in an RPM package at the time was
--enable-rule=SHARED_CORE
mkdir shared_core
cp -p src/libhttpd.ep src/libhttpd.so src/httpd
shared_core
# install shared-core apache
install -m 755 shared_core/libhttpd.ep $RPM_BUILD_ROOT/%{_libdir}/%{name}
install -m 755 shared_core/libhttpd.so $RPM_BUILD_ROOT/%{_libdir}/%{name}
ln -s %{_libdir}/%{name}/libhttpd.ep
$RPM_BUILD_ROOT/%{_sbindir}/httpd-shared_core
ln -s %{_libdir}/%{name}/libhttpd.so $RPM_BUILD_ROOT/%{_libdir}/libhttpd.so
At the time, that was reportedly working to build DSOs with Kylix 3.
Peter
--
Contact: [EMAIL PROTECTED] (a.k.a. [EMAIL PROTECTED])
#opensuse-mirrors on freenode.net
Info: http://en.opensuse.org/Mirror_Infrastructure
SUSE LINUX Products GmbH
Research & Development
pgp5uxWB6T0sk.pgp
Description: PGP signature
