Re: Newbie: issues developing a new extension
| From: | jpauli | Date: | Thu, 01 Mar 2012 10:08:11 +0000 |
| Subject: | Re: Newbie: issues developing a new extension | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-58405@lists.php.net to get a copy of this message | ||
On Wed, Feb 29, 2012 at 10:06 PM, Christian Ferrari <camauz@yahoo.com>wrote:
> >> >>>>> > Dear all,
>
> >>
> >> >
> >> >>>
> >> >>>>> > I'm asking your help because I'm not
> > able to
> >> > solve an
> >> >> issue
> >> >>>> probably
> >> >>>>> related to some foolish mistake I have not yet
> > discovered.
> >> >>>>> > I'm trying to develop an experimental
> > extension to
> >> >> interface LIXA
> >> >>>>> library (http:/lixa.sourceforge.net/).
> >> >>>>> >
> >> >>>>> > I have created the basic stuff (config.m4,
> > lixa.c,
> >> > php_lixa.h
> >> >> and so
> >> >>>> on).
> >> >>>>> >
> >> >>>>> > If I use this sequence from the ext/lixa
> > directory:
> >> >>>>> >
> >> >>>>> > /opt/php/bin/phpize
> >> >>>>> > ./configure --help
> >> >>>>> >
> >> >>>>> > I can see the lixa extension is available:
> >> >>>>> >
> >> >>>>> > [...]
> >> >>>>> > Optional Packages:
> >> >>>>> > --with-PACKAGE[=ARG] use PACKAGE
> > [ARG=yes]
> >> >>>>> > --without-PACKAGE do not use PACKAGE
> > (same as
> >> >>>> --with-PACKAGE=no)
> >> >>>>> > --with-libdir=NAME Look for libraries
> > in .../NAME
> >> >
> >> >> rather than
> >> >>>>> .../lib
> >> >>>>> > --with-php-config=PATH Path to php-config
> > php-config
> >> >>>>> > --with-lixa=FILE Include LIXA
> > support. File is
> >> > the
> >> >> path to
> >> >>>>> lixa-config
> >> >>>>> >
> >> >>>>> > [...]
> >> >>>>> >
> >> >>>>> > and I can compile with:
> >> >>>>> >
> >> >>>>> > ./configure
> > --with-lixa=/opt/lixa/bin/lixa-config
> >> >>>>> --with-php-config=/opt/php/bin/php-config
> >> >>>>> >
> >> >>>>> > the build process runs as expected and the
> > extension is
> >> >> available
> >> >>>> after
> >> >>>>> an addition to php.ini
> >> > (extension=[...]/ext/lixa/modules/lixa.so).
> >> >>>>>
> >> >>>>> Great, you are done. Why do you want to go any
> > further than
> >> > this?
> >> >> You
> >> >>>>> built your extension and it is available from PHP
> > exactly
> >> > like any
> >> >> pecl
> >> >>>>> extension.
> >> >>>>>
> >> >>>>
> >> >>>> and if you're using apache, reboot it and check your
> > phpinfo()
> >> > page
> >> >> for
> >> >>>> your extension.
> >> >>>> if you're connected up via the command line you can
> > run
> >> > "php
> >> >> -m"
> >> >>>> to see if
> >> >>>> your modules exists.
> >> >>>>
> >> >>>>
> >> >>>>>
> >> >>>>> -Rasmus
> >> >>>>>
> >> >>>
> >> >>> Dear all,
> >> >>> I would like to see my extension as any other extension,
> > like MySQL,
> >> >> PostgreSQL, Oracle and so on because:
> >> >>> 1. LIXA itself is useless without those resource managers
> >> >>> 2. I need to patch other extensions to implement the
> > interfaces
> >> > between
> >> >> LIXA and MySQL/PostgreSQL/Oracle.
> >> >>> What's the difference between an "internal"
> > extension
> >> > (like
> >> >>> MySQL/PostgreSQL/Oracle) and an "external"
> > extension as the
> >> > one I
> >> >>> produced?
> >> >>> Thanks in advance, your help is precious.
> >> >>
> >> >>
> >> >> The PHP source archive bundles several extensions under the ext/
> >> >> directory, these are the extensions are listed when you run
> >> >> ./configure --help
> >> >>
> >> >> I don't understand why you want your extension to show up
> > there, but
> >> >> to do so you have to place your extension in that folder and run
> >> >> ./buildconf --force
> >> >> PHP will not automatically scan your filesystem for possible
> > extension
> >> >> directories to list them under ./configure
> >> >> I'm sure you have seen, and used,
> >> >> http://pecl.php.net - these
> >> >> extensions don't show up when you build PHP.
> >> >>
> >> >> The standard way to build "external" extensions however
> > is to use
> >> >> pecl, or manually build them as shared modules (as you did
> > first).
> >> >>
> >> >>
> >> >> -Hannes
> >> >>
> >> >
> >> > That's the point: I tryed
> >> > ./buildconf --force
> >> > but it didn't include my extension.
> >> >
> >> > This is an excerpt from my initial post:
> >> >
> >> >> If I use this sequence from the PHP root directory:
> >> >
> >> >> ./buildconf --force
> >> >> as described here:
> >> > talks.somabo.de/200510_zend_conf_php_extension_development.pdf
> >> >
> >> >> I cannot see "lixa" as an available option of my
> > configure:
> >> >
> >> >> ./configure --help|grep lixa
> >> >> is empty.
> >> >
> >> >> If I try to build PHP anyway, I obtain:
> >> >
> >> >> tiian@mojan:~/src/swig/php5.4-201202241630$ ./configure
> >> > --with-lixa=/opt/lixa/bin/lixa-config
> >> >> configure: WARNING: unrecognized options: --with-lixa
> >> >
> >> > Do you have any idea how to debug why "buildconf --force"
> > does not
> >> > pick-up my extension?
> >>
> >
> > You should rm -f configure manually before invoking buildconf --force. It
> > wont overwrite configure by itself.
> >
> > Julien.P
> >
>
> Dear Julien,
> your suggestion is precious but unfortunately some more files must be
> deleted.
> After a bit of hacking I've found out this working sequence:
>
> tiian@mojan:~/php5.4-201202241630$ rm configure autom4te.cache/*
>
Yes I forgot about those, but your are right :)
Autotools are little complicated when you want to dive into them.
One may read
http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool
or
paper http://shop.oreilly.com/product/9781593272067.do
for deeper help and
understanding :)
Julien.P
> tiian@mojan:~/php5.4-201202241630$ ./buildconf --force
> Forcing buildconf
> rebuilding configure
> rebuilding main/php_config.h.in
> tiian@mojan:~/php5.4-201202241630$ ./configure --help|grep lixa
> --with-lixa=FILE Include LIXA support. File is the path to
> lixa-config program
>
> Thanks again for your needful help!
> Regards
> Ch.F.
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>