Qpid
  1. Qpid
  2. QPID-3027

PHP binding of Qpid Messaging API

    Details

    • Type: New Feature New Feature
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 0.8
    • Fix Version/s: None
    • Component/s: C++ Client
    • Labels:
      None

      Description

      Working on a PHP binding for the Qpid Messaging API via SWIG. There are several PHP-specific issues with C++ and SWIG which I've managed to workaround, so the binding is starting to take shape, but still very much a work in progress.

      The rough plan:
      1. report relevant bugs / feature requests to SWIG (done).
      2. clean-up Qpid php.i SWIG interface file (mostly done - just need to implement PHP namespaces).
      3. implement qpid::types::Variant <-> PHP typemapping (not started).
      4. implement printinfo pragma (should be easy, just need to choose what info to include).
      5. create relevant [auto]makefile.

      Of course, there's lots of things to discuss / decide along the way... so I'll post 'em here as they come up.

      1. cqpid_php.diff
        15 kB
        Paul Colby
      2. cqpid_php.20110220.diff
        36 kB
        Paul Colby
      3. Makefile
        1 kB
        Paul Colby
      4. cqpid_php.20110301.diff
        43 kB
        Paul Colby
      5. cqpid_php.20110328.diff
        57 kB
        Paul Colby
      6. cqpid_php.20110415.diff
        71 kB
        Paul Colby
      7. FindPHPDev.cmake
        3 kB
        Paul Colby
      8. cqpid_php.20120406.diff
        70 kB
        Paul Colby
      9. cqpid_php.20121105.diff
        70 kB
        Paul Colby
      10. cqpid_php.20121105-qpid-0.19.diff
        70 kB
        Paul Colby
      11. cqpid_php.20121106.diff
        74 kB
        Paul Colby

        Issue Links

          Activity

          Hide
          Paul Colby added a comment -

          No, that was a mistake. I must have selected the description by accident while adding my comment yesterday.

          No problem. I've very nearly done the same thing a few times. I've restored the original description from the history tab (not that I would have been upset if you'd removed it intentionally either).

          Do you feel this is a work in progress or is the patch close to if not totally working at this point?

          I'd say "close to if not totally working at this point".

          Both the cqpid and cqmf2 PHP modules should be fully working, there's just a few areas (particularly in cqmf2) that I've never used, thus never tested. For example, while I have tested the QMF2 client support, I've never tried writing a QMF2 agent in PHP... should work though.

          Show
          Paul Colby added a comment - No, that was a mistake. I must have selected the description by accident while adding my comment yesterday. No problem. I've very nearly done the same thing a few times. I've restored the original description from the history tab (not that I would have been upset if you'd removed it intentionally either). Do you feel this is a work in progress or is the patch close to if not totally working at this point? I'd say "close to if not totally working at this point". Both the cqpid and cqmf2 PHP modules should be fully working, there's just a few areas (particularly in cqmf2) that I've never used, thus never tested. For example, while I have tested the QMF2 client support, I've never tried writing a QMF2 agent in PHP... should work though.
          Paul Colby made changes -
          Description    Working on a PHP binding for the Qpid Messaging API via SWIG. There are several PHP-specific issues with C++ and SWIG which I've managed to workaround, so the binding is starting to take shape, but still very much a work in progress.

          The rough plan:
          1. report relevant bugs / feature requests to SWIG (done).
          2. clean-up Qpid php.i SWIG interface file (mostly done - just need to implement PHP namespaces).
          3. implement qpid::types::Variant <-> PHP typemapping (not started).
          4. implement printinfo pragma (should be easy, just need to choose what info to include).
          5. create relevant [auto]makefile.

          Of course, there's lots of things to discuss / decide along the way... so I'll post 'em here as they come up.
          Hide
          Darryl L. Pierce added a comment - - edited

          No, that was a mistake. I must have selected the description by accident while adding my comment yesterday. My apologies.

          I'll apply and build the 20121106 patch in my development repo and give it some preliminary testing. Do you feel this is a work in progress or is the patch close to if not totally working at this point?

          Show
          Darryl L. Pierce added a comment - - edited No, that was a mistake. I must have selected the description by accident while adding my comment yesterday. My apologies. I'll apply and build the 20121106 patch in my development repo and give it some preliminary testing. Do you feel this is a work in progress or is the patch close to if not totally working at this point?
          Paul Colby made changes -
          Attachment cqpid_php.20121106.diff [ 12552206 ]
          Hide
          Paul Colby added a comment -

          Attached cqpid_php.20121106.diff

          This version adds the FindPHPDev module as a custom project module under qpid/cpp/bindings/CMakeModules, so there's no longer any need to add the module under /usr/share/cmake*/Modules

          Show
          Paul Colby added a comment - Attached cqpid_php.20121106.diff This version adds the FindPHPDev module as a custom project module under qpid/cpp/bindings/CMakeModules , so there's no longer any need to add the module under /usr/share/cmake*/Modules
          Hide
          Paul Colby added a comment -

          Hey Darryl, it appears that you blanked the "Description" field this morning / last night... was that intentional?

          Paul.

          Show
          Paul Colby added a comment - Hey Darryl, it appears that you blanked the "Description" field this morning / last night... was that intentional? Paul.
          Hide
          Paul Colby added a comment -

          Can you ping me in IRC

          I tried that, but you were away... I suspect our timezone differences will make IRC tricky (I'm UTC+11 at the moment). Let me know you're timezone and I'll see if I can workout a convenient time for chatting.

          In the meantime, here's some basic ways you can test the PHP code.

          PHP Info

          The first thing to check, is that the cqpid and cqmf2 PHP modules are loaded by PHP. The easiest way to do this is to run the following command:

          php -i

          This will produce a whole lot of text output describing PHP's configuration and modules, etc. If you pipe it to a command like less, and then search for cqmf2, you will see the following details that have been added by the cqmf2 and cqpid modules:

          cqmf2
          
          SWIG Version => 2.0.8
          Targeted PHP Version => 5.4.7 (5.4.7)
          PHP Thread Safety => disabled
          Compiler Version => gcc 4.7.2
          Build Date => Nov  5 2012 02:53:38
          
          cqpid
          
          SWIG Version => 2.0.8
          Targeted PHP Version => 5.4.7 (5.4.7)
          PHP Thread Safety => disabled
          Compiler Version => gcc 4.7.2
          Build Date => Nov  5 2012 02:53:34
          

          If that information is not present, then the module was not loaded (the install target should have created relevant /etc/php.d/cqpid.ini and /etc/php.d/cqmf2.ini files to load the module). Such as:

          cqpid.ini
          ; configuration for PHP Qpid module
          extension=/usr/lib64/php/modules/cqpid.so
          

          If you want some (slightly) prettier output, instead of running php -i you could setup a simple PHP webpage and run the phpinfo() function to see the same output as above, but in HTML tables instead.

          CLI Examples

          Once the modules are loaded (should happen automatically if you do a make install), the next thing I do is run some of the PHP examples.

          First, run a qpidd broker in one terminal:

          qpidd --auth=no

          Then, run some of the examples under qpid/cpp/bindings/qpid/examples/php/cli - these are PHP ports of the existing Qpid examples, so work the same way.

          For example:

          [paul@fepoch cli]$ php -f map_sender.php   # Will send a PHP associative array as a map message to the broker.
          [paul@fepoch cli]$ php -f map_receiver.php # Will print_r the next message from the broker.
          Array
          (
              [colours] => Array
                  (
                      [0] => red
                      [1] => green
                      [2] => white
                  )
          
              [id] => 987654321
              [name] => Widget
              [percent] => 0.99
              [uuid] => 773bb118-286c-435e-8948-71e57f9e2f97
          )
          [paul@fepoch cli]$
          

          This example is particularly interesting since it shows the marshalling of different QVariant types from/to PHP types

          Web Example

          There's also a very basic "hello world" web-based exmaple in qpid/cpp/bindings/qpid/examples/php/web. To run that example, simply drop the PHP file into a directory being hosted by a webserver with PHP enabled. It will present an HTML form allowing you to specify some basic broker parameters, and will then send/receive a message.

          Unit Testing

          I'm quite a fan of phpunit for PHP unit testing, so I'll create some PHP unit tests for this sometime. Perhaps I'll create them as a separate diff though, since the above patch is already 70kB (and the PHP unit tests will not require any direct code linkage to the Qpid / PHP module source, so can be entirely independent).

          Other Issues

          The other issue I see, is the requirement for a custom FindPHPDev CMake module. I've begun talks on the CMake mailing list in hopes of getting the module included there. Is this a blocker in the meantime? There might (probably should) be a way to include the custom CMake module in the Qpid source / build tree for now, but this is not something I've looked into yet.

          I look forward to chatting on IRC sometime.

          Show
          Paul Colby added a comment - Can you ping me in IRC I tried that, but you were away... I suspect our timezone differences will make IRC tricky (I'm UTC+11 at the moment). Let me know you're timezone and I'll see if I can workout a convenient time for chatting. In the meantime, here's some basic ways you can test the PHP code. PHP Info The first thing to check, is that the cqpid and cqmf2 PHP modules are loaded by PHP. The easiest way to do this is to run the following command: php -i This will produce a whole lot of text output describing PHP's configuration and modules, etc. If you pipe it to a command like less , and then search for cqmf2 , you will see the following details that have been added by the cqmf2 and cqpid modules: cqmf2 SWIG Version => 2.0.8 Targeted PHP Version => 5.4.7 (5.4.7) PHP Thread Safety => disabled Compiler Version => gcc 4.7.2 Build Date => Nov 5 2012 02:53:38 cqpid SWIG Version => 2.0.8 Targeted PHP Version => 5.4.7 (5.4.7) PHP Thread Safety => disabled Compiler Version => gcc 4.7.2 Build Date => Nov 5 2012 02:53:34 If that information is not present, then the module was not loaded (the install target should have created relevant /etc/php.d/cqpid.ini and /etc/php.d/cqmf2.ini files to load the module). Such as: cqpid.ini ; configuration for PHP Qpid module extension=/usr/lib64/php/modules/cqpid.so If you want some (slightly) prettier output, instead of running php -i you could setup a simple PHP webpage and run the phpinfo() function to see the same output as above, but in HTML tables instead. CLI Examples Once the modules are loaded (should happen automatically if you do a make install ), the next thing I do is run some of the PHP examples. First, run a qpidd broker in one terminal: qpidd --auth=no Then, run some of the examples under qpid/cpp/bindings/qpid/examples/php/cli - these are PHP ports of the existing Qpid examples, so work the same way. For example: [paul@fepoch cli]$ php -f map_sender.php # Will send a PHP associative array as a map message to the broker. [paul@fepoch cli]$ php -f map_receiver.php # Will print_r the next message from the broker. Array ( [colours] => Array ( [0] => red [1] => green [2] => white ) [id] => 987654321 [name] => Widget [percent] => 0.99 [uuid] => 773bb118-286c-435e-8948-71e57f9e2f97 ) [paul@fepoch cli]$ This example is particularly interesting since it shows the marshalling of different QVariant types from/to PHP types Web Example There's also a very basic "hello world" web-based exmaple in qpid/cpp/bindings/qpid/examples/php/web . To run that example, simply drop the PHP file into a directory being hosted by a webserver with PHP enabled. It will present an HTML form allowing you to specify some basic broker parameters, and will then send/receive a message. Unit Testing I'm quite a fan of phpunit for PHP unit testing, so I'll create some PHP unit tests for this sometime. Perhaps I'll create them as a separate diff though, since the above patch is already 70kB (and the PHP unit tests will not require any direct code linkage to the Qpid / PHP module source, so can be entirely independent). Other Issues The other issue I see, is the requirement for a custom FindPHPDev CMake module. I've begun talks on the CMake mailing list in hopes of getting the module included there. Is this a blocker in the meantime? There might (probably should) be a way to include the custom CMake module in the Qpid source / build tree for now, but this is not something I've looked into yet. I look forward to chatting on IRC sometime.
          Hide
          Darryl L. Pierce added a comment -

          Okay, this time it's built fine using CMake. I'd like to spend some time testing it, but am unsure what would be the best route. Can you ping me in IRC (Freenode #qpid channel) to go over a test approach? Then we can get this integrated.

          Show
          Darryl L. Pierce added a comment - Okay, this time it's built fine using CMake. I'd like to spend some time testing it, but am unsure what would be the best route. Can you ping me in IRC (Freenode #qpid channel) to go over a test approach? Then we can get this integrated.
          Darryl L. Pierce made changes -
          Description Working on a PHP binding for the Qpid Messaging API via SWIG. There are several PHP-specific issues with C++ and SWIG which I've managed to workaround, so the binding is starting to take shape, but still very much a work in progress.

          The rough plan:
          1. report relevant bugs / feature requests to SWIG (done).
          2. clean-up Qpid php.i SWIG interface file (mostly done - just need to implement PHP namespaces).
          3. implement qpid::types::Variant <-> PHP typemapping (not started).
          4. implement printinfo pragma (should be easy, just need to choose what info to include).
          5. create relevant [auto]makefile.

          Of course, there's lots of things to discuss / decide along the way... so I'll post 'em here as they come up.
            
          Paul Colby made changes -
          Attachment cqpid_php.20121105-qpid-0.19.diff [ 12552043 ]
          Hide
          Paul Colby added a comment -

          Attached cqpid_php.20121105-qpid-0.19.diff

          This update:

          • patches the combined bindings/CMakeLists.txt file added in r1400781 (ie Qpid 0.19+)
          • fixes an error with the install target for out-of-tree cmake builds.
          Show
          Paul Colby added a comment - Attached cqpid_php.20121105-qpid-0.19.diff This update: patches the combined bindings/CMakeLists.txt file added in r1400781 (ie Qpid 0.19+) fixes an error with the install target for out-of-tree cmake builds.
          Hide
          Paul Colby added a comment -

          Hmm... does (or will) the PHP work as part of Apache Qpid Proton make this SWIG-based PHP binding redundant?

          Show
          Paul Colby added a comment - Hmm... does (or will) the PHP work as part of Apache Qpid Proton make this SWIG-based PHP binding redundant?
          Paul Colby made changes -
          Attachment cqpid_php.20121105.diff [ 12552022 ]
          Hide
          Paul Colby added a comment -

          Attached cqpid_php.20121105.diff which adds support for PHP 5.4.0+

          I note that for Qpid 0.19+ two relevant files (qpid/cpp/bindings/qmf2/CMakeLists.txt and qpid/cpp/bindings/qpid/CMakeLists.txt) have been combined into a single qpid/cpp/bindings/CMakeLists.txt file.

          I'll make the relevant cqpid_php changes for that tomorrow, and upload a Qpid 0.19+ patch then.

          Show
          Paul Colby added a comment - Attached cqpid_php.20121105.diff which adds support for PHP 5.4.0+ I note that for Qpid 0.19+ two relevant files ( qpid/cpp/bindings/qmf2/CMakeLists.txt and qpid/cpp/bindings/qpid/CMakeLists.txt ) have been combined into a single qpid/cpp/bindings/CMakeLists.txt file. I'll make the relevant cqpid_php changes for that tomorrow, and upload a Qpid 0.19+ patch then.
          Hide
          Paul Colby added a comment - - edited

          Ok, so the build error is the result of changes in the PHP development headers.

          Somewhere between PHP 5.3.8 and 5.4.7, the signature of the following functions changed:

          • zend_get_object_classname
          • zend_rsrc_list_get_rsrc_type

          Now to track down the exact PHP version that changed, and #ifdef some variable declarations...

          Edit: changes were in commit aaa2f1c30b3ba3da3e0030804054ee9c70e80bc7

          Show
          Paul Colby added a comment - - edited Ok, so the build error is the result of changes in the PHP development headers. Somewhere between PHP 5.3.8 and 5.4.7, the signature of the following functions changed: zend_get_object_classname zend_rsrc_list_get_rsrc_type Now to track down the exact PHP version that changed, and #ifdef some variable declarations... Edit: changes were in commit aaa2f1c30b3ba3da3e0030804054ee9c70e80bc7
          Hide
          Paul Colby added a comment -

          Works fine on all of my existing test boxes. I'll setup an FC17 VM to test.

          Show
          Paul Colby added a comment - Works fine on all of my existing test boxes. I'll setup an FC17 VM to test.
          Hide
          Paul Colby added a comment -

          Thanks Darryl. I'll look into it

          Show
          Paul Colby added a comment - Thanks Darryl. I'll look into it
          Hide
          Darryl L. Pierce added a comment -

          The patch fails to build for me on Fedora 17 x86_64 with Cmake. The steps I took:

          1. Copy FindPHPDev.cmake to /usr/share/cmake/Modules/
          2. Applied cqpid_php.20120406.diff in the $REPO/qpid directory: patch -p0 < cqpid_php.20120406.diff
          3. Created an out-of-tree build environment: mkdir cmake; cd cmake; cmake ../qpid/cpp
          4. Run the build: make

          The result I see is:

          [100%] Building CXX object bindings/qpid/php/CMakeFiles/cqpid_php.dir/phpPHP_wrap.o
          /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx: In function ‘qpid::types::Variant zvalToVariant(zval**)’:
          /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx:1544:107: error: invalid conversion from ‘char*’ to ‘const char*’ [-fpermissive]
          In file included from /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx:742:0:
          /usr/include/php/Zend/zend_API.h:337:45: error: initializing argument 2 of ‘int zend_get_object_classname(const zval*, const char*, zend_uint)’ [-fpermissive]
          /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx:1555:91: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
          make[3]: *** [bindings/qpid/php/CMakeFiles/cqpid_php.dir/phpPHP_wrap.o] Error 1
          make[2]: *** [bindings/qpid/php/CMakeFiles/cqpid_php.dir/all] Error 2
          make[1]: *** [bindings/qpid/php/CMakeFiles/cqpid_php.dir/rule] Error 2
          make: *** [cqpid_php] Error 2

          Building with automake tools I get:

          /bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../../../qpid/cpp/bindings/qpid/php -I../../../src -I../../../../qpid/cpp/include -I../../../include -fpic -I../../../../qpid/cpp/include -I../../../include -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DPHP_QPID_VERSION='"0.19"' -Wno-write-strings -g -O2 -MT cqpid_la-cqpid.lo -MD -MP -MF .deps/cqpid_la-cqpid.Tpo -c -o cqpid_la-cqpid.lo `test -f 'cqpid.cpp' || echo '../../../../qpid/cpp/bindings/qpid/php/'`cqpid.cpp
          libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../qpid/cpp/bindings/qpid/php -I../../../src -I../../../../qpid/cpp/include -I../../../include -fpic -I../../../../qpid/cpp/include -I../../../include -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DPHP_QPID_VERSION=\"0.19\" -Wno-write-strings -g -O2 -MT cqpid_la-cqpid.lo -MD -MP -MF .deps/cqpid_la-cqpid.Tpo -c cqpid.cpp -fPIC -DPIC -o .libs/cqpid_la-cqpid.o
          cqpid.cpp: In function 'qpid::types::Variant zvalToVariant(zval**)':
          cqpid.cpp:1544:107: error: invalid conversion from 'char*' to 'const char*' [-fpermissive]
          In file included from cqpid.cpp:742:0:
          /usr/include/php/Zend/zend_API.h:337:45: error: initializing argument 2 of 'int zend_get_object_classname(const zval*, const char*, zend_uint)' [-fpermissive]
          cqpid.cpp:1555:91: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
          make[3]: *** [cqpid_la-cqpid.lo] Error 1
          make[3]: Leaving directory `/home/mcpierce/Programming/Qpid/automake/bindings/qpid/php'
          make[2]: *** [all-recursive] Error 1
          make[2]: Leaving directory `/home/mcpierce/Programming/Qpid/automake/bindings/qpid'
          make[1]: *** [all] Error 2
          make[1]: Leaving directory `/home/mcpierce/Programming/Qpid/automake/bindings/qpid'
          make: *** [all-recursive] Error 1

          Show
          Darryl L. Pierce added a comment - The patch fails to build for me on Fedora 17 x86_64 with Cmake. The steps I took: 1. Copy FindPHPDev.cmake to /usr/share/cmake/Modules/ 2. Applied cqpid_php.20120406.diff in the $REPO/qpid directory: patch -p0 < cqpid_php.20120406.diff 3. Created an out-of-tree build environment: mkdir cmake; cd cmake; cmake ../qpid/cpp 4. Run the build: make The result I see is: [100%] Building CXX object bindings/qpid/php/CMakeFiles/cqpid_php.dir/phpPHP_wrap.o /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx: In function ‘qpid::types::Variant zvalToVariant(zval**)’: /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx:1544:107: error: invalid conversion from ‘char* ’ to ‘const char *’ [-fpermissive] In file included from /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx:742:0: /usr/include/php/Zend/zend_API.h:337:45: error: initializing argument 2 of ‘int zend_get_object_classname(const zval*, const char* , zend_uint )’ [-fpermissive] /home/mcpierce/Programming/Qpid/cmake/bindings/qpid/php/phpPHP_wrap.cxx:1555:91: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] make [3] : *** [bindings/qpid/php/CMakeFiles/cqpid_php.dir/phpPHP_wrap.o] Error 1 make [2] : *** [bindings/qpid/php/CMakeFiles/cqpid_php.dir/all] Error 2 make [1] : *** [bindings/qpid/php/CMakeFiles/cqpid_php.dir/rule] Error 2 make: *** [cqpid_php] Error 2 Building with automake tools I get: /bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../../../qpid/cpp/bindings/qpid/php -I../../../src -I../../../../qpid/cpp/include -I../../../include -fpic -I../../../../qpid/cpp/include -I../../../include -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DPHP_QPID_VERSION='"0.19"' -Wno-write-strings -g -O2 -MT cqpid_la-cqpid.lo -MD -MP -MF .deps/cqpid_la-cqpid.Tpo -c -o cqpid_la-cqpid.lo `test -f 'cqpid.cpp' || echo '../../../../qpid/cpp/bindings/qpid/php/'`cqpid.cpp libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../qpid/cpp/bindings/qpid/php -I../../../src -I../../../../qpid/cpp/include -I../../../include -fpic -I../../../../qpid/cpp/include -I../../../include -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DPHP_QPID_VERSION=\"0.19\" -Wno-write-strings -g -O2 -MT cqpid_la-cqpid.lo -MD -MP -MF .deps/cqpid_la-cqpid.Tpo -c cqpid.cpp -fPIC -DPIC -o .libs/cqpid_la-cqpid.o cqpid.cpp: In function 'qpid::types::Variant zvalToVariant(zval**)': cqpid.cpp:1544:107: error: invalid conversion from 'char* ' to 'const char *' [-fpermissive] In file included from cqpid.cpp:742:0: /usr/include/php/Zend/zend_API.h:337:45: error: initializing argument 2 of 'int zend_get_object_classname(const zval*, const char* , zend_uint )' [-fpermissive] cqpid.cpp:1555:91: error: invalid conversion from 'const char*' to 'char*' [-fpermissive] make [3] : *** [cqpid_la-cqpid.lo] Error 1 make [3] : Leaving directory `/home/mcpierce/Programming/Qpid/automake/bindings/qpid/php' make [2] : *** [all-recursive] Error 1 make [2] : Leaving directory `/home/mcpierce/Programming/Qpid/automake/bindings/qpid' make [1] : *** [all] Error 2 make [1] : Leaving directory `/home/mcpierce/Programming/Qpid/automake/bindings/qpid' make: *** [all-recursive] Error 1
          Darryl L. Pierce made changes -
          Assignee Ted Ross [ tedross ] Darryl L. Pierce [ mcpierce ]
          Paul Colby made changes -
          Attachment cqpid_php.20120406.diff [ 12521664 ]
          Hide
          Paul Colby added a comment -

          cqpid_php.20120406.diff

          Changes in this version:

          • fixed a bug in the conversion of NULL values to QVariants.
          • updates to suit current trunk revision (r1310193).
          Show
          Paul Colby added a comment - cqpid_php.20120406.diff Changes in this version: fixed a bug in the conversion of NULL values to QVariants. updates to suit current trunk revision (r1310193).
          Paul Colby made changes -
          Link This issue is related to QPID-3364 [ QPID-3364 ]
          Hide
          David Simon added a comment -

          thank you for the effort.

          it works fine with cmake.

          David

          Show
          David Simon added a comment - thank you for the effort. it works fine with cmake. David
          Hide
          Paul Colby added a comment -

          Regarding the segfault, I've created a very small test case that reproduces the same fault without involving PHP or swig at all, and reported it as a separate issue - https://issues.apache.org/jira/browse/QPID-3364

          Show
          Paul Colby added a comment - Regarding the segfault, I've created a very small test case that reproduces the same fault without involving PHP or swig at all, and reported it as a separate issue - https://issues.apache.org/jira/browse/QPID-3364
          Hide
          Paul Colby added a comment -

          This is very strange error... the crash happens while destructing static objects in the libqpidmessaging library, and seems to be timing-related... ie only happens if the Qpid Messaging library is loaded and then unloaded very quickly.

          However, the problem does not happen if the Qpid Messaging library is built using CMake instead of Autotools. Moreover, it doesn't matter if the cqpid PHP library is built via CMake or Autotools - the crash still happens in libqpidmessaging or not depending on whether or not that library was built via Autotools or CMake.

          Of course, that observation may also just be related to subtle differences in timing. But either way, the problem seems to be with the destruction of very-recently-created static objects within libqpidmessaging - which is more than just a little bit beyond me... (and, I suspect, not specific to my PHP binding).

          For now, I suggest you use CMake. Or don't use the *.ini file at all, but instead load the cqpid PHP library when you actually intend to use it (using the library between creation and destruction alleviates the issue for me).

          Show
          Paul Colby added a comment - This is very strange error... the crash happens while destructing static objects in the libqpidmessaging library, and seems to be timing-related... ie only happens if the Qpid Messaging library is loaded and then unloaded very quickly. However, the problem does not happen if the Qpid Messaging library is built using CMake instead of Autotools. Moreover, it doesn't matter if the cqpid PHP library is built via CMake or Autotools - the crash still happens in libqpidmessaging or not depending on whether or not that library was built via Autotools or CMake. Of course, that observation may also just be related to subtle differences in timing. But either way, the problem seems to be with the destruction of very-recently-created static objects within libqpidmessaging - which is more than just a little bit beyond me... (and, I suspect, not specific to my PHP binding). For now, I suggest you use CMake. Or don't use the *.ini file at all, but instead load the cqpid PHP library when you actually intend to use it (using the library between creation and destruction alleviates the issue for me).
          Hide
          Paul Colby added a comment -

          Thanks David! I'm now able to reproduce the segfault... I'll investigate further

          Paul.

          Show
          Paul Colby added a comment - Thanks David! I'm now able to reproduce the segfault... I'll investigate further Paul.
          Hide
          David Simon added a comment -

          hey Paul,

          it is a 32 bit debian squeeze in VirtualBox, just for test it. The debug version of the php was only for the backtrace.

          I have just now made a brand new deployment again.

          here is your request (though I know that you wanted it about the last deployment):
          david@qpid4:~$ which -a php php-config
          /usr/bin/php
          /usr/bin/php-config

          david@qpid4:~$ php -r 'phpinfo();' | grep -A7 '^cqpid$'
          cqpid

          Qpid Version => 0.11
          SWIG Version => 2.0.4
          Targeted PHP Version => 5.3.3 (5.3.3-7+squeeze1)
          PHP Thread Safety => disabled
          Compiler Version => gcc 4.4.5
          Build Date => Jun 27 2011 17:27:45

          here is my installation process (mostly the relevant lines are copied from the .bash_history):
          cd ~

          sudo apt-get install cmake libopenais-dev uuid-dev libboost-all-dev php5-cli php5-dev subversion build-essential automake autoconf libtool ruby python sasl2-bin libpcre3-dev

          svn co http://svn.apache.org/repos/asf/qpid/trunk/qpid -r r1092662

          cd ~

          wget https://issues.apache.org/jira/secure/attachment/12476447/FindPHPDev.cmake

          sudo cp FindPHPDev.cmake /usr/share/cmake-2.8/Modules/

          wget https://issues.apache.org/jira/secure/attachment/12476446/cqpid_php.20110415.diff
          patch -p0 <cqpid_php.20110415.diff
          cd qpid/cpp
          ./bootstrap
          ./configure
          make
          sudo make install

          here there is a Makefile problem:
          ............
          libtool: install: warning: relinking `acl.la'
          libtool: install: (cd /home/david/qpid/cpp/src; /bin/bash /home/david/qpid/cpp/libtool --tag CXX --mode=relink g++ -Werror -pedantic -Wall -Wextra -Wno-shadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Wno-system-headers -Woverloaded-virtual -DQPID_LIBEXEC_DIR=\"/usr/local/libexec/qpid\" -DBOOST_FILESYSTEM_VERSION=2 -g -O2 -no-undefined -module -avoid-version -o acl.la -rpath /usr/local/lib/qpid/daemon qpid/acl/Acl.lo qpid/acl/AclData.lo qpid/acl/AclPlugin.lo qpid/acl/AclReader.lo qpid/acl/AclValidator.lo libqpidbroker.la )
          libtool: relink: g++ -shared -nostdlib /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.4.5/crtbeginS.o qpid/acl/.libs/Acl.o qpid/acl/.libs/AclData.o qpid/acl/.libs/AclPlugin.o qpid/acl/.libs/AclReader.o qpid/acl/.libs/AclValidator.o -L/usr/local/lib -lqpidbroker -L/usr/lib/gcc/i486-linux-gnu/4.4.5 -L/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.4.5/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/i486-linux-gnu/4.4.5/crtendS.o /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crtn.o -Wl,-soname -Wl,acl.so -o .libs/acl.so
          /usr/bin/ld: cannot find -lqpidbroker
          collect2: ld returned 1 exit status
          libtool: install: error: relink `acl.la' with the above command before installing it
          make[3]: *** [install-dmoduleexecLTLIBRARIES] Error 1
          make[3]: Leaving directory `/home/david/qpid/cpp/src'
          make[2]: *** [install-am] Error 2
          make[2]: Leaving directory `/home/david/qpid/cpp/src'
          make[1]: *** [install-recursive] Error 1
          make[1]: Leaving directory `/home/david/qpid/cpp/src'
          make: *** [install-recursive] Error 1

          1. that's why I do:

          sudo cp src/.libs/libq*.so /lib/

          and somehow it hasnt created the cqpid.ini under the /etc/php5/conf.d

          I create it.

          and the result:

          david@qpid4:~$ php -r ""
          Segmentation fault

          best regards,
          David

          Show
          David Simon added a comment - hey Paul, it is a 32 bit debian squeeze in VirtualBox, just for test it. The debug version of the php was only for the backtrace. I have just now made a brand new deployment again. here is your request (though I know that you wanted it about the last deployment): david@qpid4:~$ which -a php php-config /usr/bin/php /usr/bin/php-config david@qpid4:~$ php -r 'phpinfo();' | grep -A7 '^cqpid$' cqpid Qpid Version => 0.11 SWIG Version => 2.0.4 Targeted PHP Version => 5.3.3 (5.3.3-7+squeeze1) PHP Thread Safety => disabled Compiler Version => gcc 4.4.5 Build Date => Jun 27 2011 17:27:45 here is my installation process (mostly the relevant lines are copied from the .bash_history): cd ~ sudo apt-get install cmake libopenais-dev uuid-dev libboost-all-dev php5-cli php5-dev subversion build-essential automake autoconf libtool ruby python sasl2-bin libpcre3-dev svn co http://svn.apache.org/repos/asf/qpid/trunk/qpid -r r1092662 cd ~ wget https://issues.apache.org/jira/secure/attachment/12476447/FindPHPDev.cmake sudo cp FindPHPDev.cmake /usr/share/cmake-2.8/Modules/ wget https://issues.apache.org/jira/secure/attachment/12476446/cqpid_php.20110415.diff patch -p0 <cqpid_php.20110415.diff cd qpid/cpp ./bootstrap ./configure make sudo make install here there is a Makefile problem: ............ libtool: install: warning: relinking `acl.la' libtool: install: (cd /home/david/qpid/cpp/src; /bin/bash /home/david/qpid/cpp/libtool --tag CXX --mode=relink g++ -Werror -pedantic -Wall -Wextra -Wno-shadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Wno-system-headers -Woverloaded-virtual -DQPID_LIBEXEC_DIR=\"/usr/local/libexec/qpid\" -DBOOST_FILESYSTEM_VERSION=2 -g -O2 -no-undefined -module -avoid-version -o acl.la -rpath /usr/local/lib/qpid/daemon qpid/acl/Acl.lo qpid/acl/AclData.lo qpid/acl/AclPlugin.lo qpid/acl/AclReader.lo qpid/acl/AclValidator.lo libqpidbroker.la ) libtool: relink: g++ -shared -nostdlib /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.4.5/crtbeginS.o qpid/acl/.libs/Acl.o qpid/acl/.libs/AclData.o qpid/acl/.libs/AclPlugin.o qpid/acl/.libs/AclReader.o qpid/acl/.libs/AclValidator.o -L/usr/local/lib -lqpidbroker -L/usr/lib/gcc/i486-linux-gnu/4.4.5 -L/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.4.5/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/i486-linux-gnu/4.4.5/crtendS.o /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crtn.o -Wl,-soname -Wl,acl.so -o .libs/acl.so /usr/bin/ld: cannot find -lqpidbroker collect2: ld returned 1 exit status libtool: install: error: relink `acl.la' with the above command before installing it make [3] : *** [install-dmoduleexecLTLIBRARIES] Error 1 make [3] : Leaving directory `/home/david/qpid/cpp/src' make [2] : *** [install-am] Error 2 make [2] : Leaving directory `/home/david/qpid/cpp/src' make [1] : *** [install-recursive] Error 1 make [1] : Leaving directory `/home/david/qpid/cpp/src' make: *** [install-recursive] Error 1 that's why I do: sudo cp src/.libs/libq*.so /lib/ and somehow it hasnt created the cqpid.ini under the /etc/php5/conf.d I create it. and the result: david@qpid4:~$ php -r "" Segmentation fault best regards, David
          Hide
          Paul Colby added a comment -

          Hi David,

          Thanks for the feedback!

          I have tried it out using the same version of Debian (6.0.1 in fact), but have not been able to reproduce the segfault at all.

          It looks to me like you are using a locally-built version of PHP (ie the backtrace includes references to Zend source in your home directory). Can you please do a quick check using the official Debian PHP interpreter like:

          /usr/bin/php -r ""

          And see if that segfault's the same way?

          Also, would you mind reporting the output of the following commands:

          which -a php php-config
          php -r 'phpinfo();' | grep -A7 '^cqpid$'

          Finally, is this on a 32-bit or 64-bit version of Debian, and did you build using Autotools or CMake?

          Thanks!

          Paul.

          Show
          Paul Colby added a comment - Hi David, Thanks for the feedback! I have tried it out using the same version of Debian (6.0.1 in fact), but have not been able to reproduce the segfault at all. It looks to me like you are using a locally-built version of PHP (ie the backtrace includes references to Zend source in your home directory). Can you please do a quick check using the official Debian PHP interpreter like: /usr/bin/php -r "" And see if that segfault's the same way? Also, would you mind reporting the output of the following commands: which -a php php-config php -r 'phpinfo();' | grep -A7 '^cqpid$' Finally, is this on a 32-bit or 64-bit version of Debian, and did you build using Autotools or CMake? Thanks! Paul.
          Hide
          David Simon added a comment -

          hi Paul,

          on Debian Squeeze with a brand new install there is a segfault when the cqpid.so module is not in use. otherwise seems to be fine.

          I followed the instructions, I used the svn revision you mentioned above.

          problem:
          david@qpid:~$ php -r ""
          Segmentation fault

          my system description:
          david@qpid:~$ php-config
          Usage: /usr/bin/php-config [OPTION]
          Options:
          --prefix [/usr]
          --includes [-I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64]
          --ldflags []
          --libs [-lcrypt -lz -lcrypt -lonig -lssl -ldb -lqdbm -lbz2 -lz -lpcre -lssl -lm -ldl -lnsl -lxml2 -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lxml2 -lxml2 -lxml2 -lcrypt -lxml2 -lxml2 -lxml2 -lxml2 -lcrypt ]
          --extension-dir [/usr/lib/php5/20090626+lfs]
          --include-dir [/usr/include/php5]
          --php-binary [/usr/bin/php]
          --php-sapis [cli apache2handler]
          --phpapi [20090626+lfs]
          --configure-options [--prefix=/usr --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php5/apache2 --with-config-file-scan-dir=/etc/php5/apache2/conf.d --build=i486-linux-gnu --host=i486-linux-gnu --sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man --disable-debug --with-regex=php --disable-rpath --disable-static --with-pic --with-layout=GNU --with-pear=/usr/share/php --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-db4 --with-qdbm=/usr --without-gdbm --with-iconv --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-onig=/usr --with-pcre-regex=/usr --enable-shmop --enable-sockets --enable-wddx --with-libxml-dir=/usr --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --with-mhash=yes --with-exec-dir=/usr/lib/php5/libexec --with-system-tzdata --without-mm --with-curl=shared,/usr --with-enchant=shared,/usr --with-zlib-dir=/usr --with-gd=shared,/usr --enable-gd-native-ttf --with-gmp=shared,/usr --with-jpeg-dir=shared,/usr --with-xpm-dir=shared,/usr/X11R6 --with-png-dir=shared,/usr --with-freetype-dir=shared,/usr --with-imap=shared,/usr --with-imap-ssl --with-interbase=shared,/usr --with-pdo-firebird=shared,/usr --enable-intl=shared --with-ttf=shared,/usr --with-t1lib=shared,/usr --with-ldap=shared,/usr --with-ldap-sasl=/usr --with-mcrypt=shared,/usr --with-mysql=shared,/usr --with-mysqli=shared,/usr/bin/mysql_config --with-pspell=shared,/usr --with-unixODBC=shared,/usr --with-recode=shared,/usr --with-xsl=shared,/usr --with-snmp=shared,/usr --with-sqlite=shared,/usr --with-sqlite3=shared,/usr --with-mssql=shared,/usr --with-tidy=shared,/usr --with-xmlrpc=shared --with-pgsql=shared,/usr]
          --version [5.3.3-7+squeeze1]
          --vernum [50303]

          here is the gdb backtrace:

          david@qpid:~$ gdb php
          GNU gdb (GDB) 7.0.1-debian
          Copyright (C) 2009 Free Software Foundation, Inc.
          License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
          This is free software: you are free to change and redistribute it.
          There is NO WARRANTY, to the extent permitted by law. Type "show copying"
          and "show warranty" for details.
          This GDB was configured as "i486-linux-gnu".
          For bug reporting instructions, please see:
          <http://www.gnu.org/software/gdb/bugs/>...
          Reading symbols from /usr/bin/php...Reading symbols from /usr/lib/debug/usr/bin/php5...done.
          (no debugging symbols found)...done.
          (gdb) run -r ""
          Starting program: /usr/bin/php -r ""
          [Thread debugging using libthread_db enabled]

          Program received signal SIGSEGV, Segmentation fault.
          0x00000000 in ?? ()
          (gdb) bt
          #0 0x00000000 in ?? ()
          #1 0xb7980688 in __cxa_finalize () from /lib/i686/cmov/libc.so.6
          #2 0xb7369df4 in __do_global_dtors_aux () from /lib/libqpidmessaging.so.2
          #3 0xb73c1ba0 in _fini () from /lib/libqpidmessaging.so.2
          #4 0xb7ff571e in ?? () from /lib/ld-linux.so.2
          #5 0xb7ff6197 in ?? () from /lib/ld-linux.so.2
          #6 0xb7ce0ca4 in ?? () from /lib/i686/cmov/libdl.so.2
          #7 0xb7ff07f6 in ?? () from /lib/ld-linux.so.2
          #8 0xb7ce109c in ?? () from /lib/i686/cmov/libdl.so.2
          #9 0xb7ce0cda in dlclose () from /lib/i686/cmov/libdl.so.2
          #10 0x083dcf54 in module_destructor (module=0x8913198) at /home/david/php5-5.3.3/Zend/zend_API.c:2120
          #11 0x083e4651 in zend_hash_apply_deleter (ht=0x88c0900, p=0x8912da8) at /home/david/php5-5.3.3/Zend/zend_hash.c:813
          #12 0x083e47ff in zend_hash_graceful_reverse_destroy (ht=0x88c0900) at /home/david/php5-5.3.3/Zend/zend_hash.c:848
          #13 0x083d4397 in zend_shutdown () at /home/david/php5-5.3.3/Zend/zend.c:831
          #14 0x0835b4ac in php_module_shutdown () at /home/david/php5-5.3.3/main/main.c:2166
          #15 0x084a7345 in main (argc=3, argv=0xbffff874) at /home/david/php5-5.3.3/sapi/cli/php_cli.c:1391
          (gdb) f 1
          #1 0xb7980688 in __cxa_finalize () from /lib/i686/cmov/libc.so.6
          (gdb) f 10
          #10 0x083dcf54 in module_destructor (module=0x8913198) at /home/david/php5-5.3.3/Zend/zend_API.c:2120
          2120 DL_UNLOAD(module->handle);
          (gdb)

          hope it helps

          best regards,
          David

          Show
          David Simon added a comment - hi Paul, on Debian Squeeze with a brand new install there is a segfault when the cqpid.so module is not in use. otherwise seems to be fine. I followed the instructions, I used the svn revision you mentioned above. problem: david@qpid:~$ php -r "" Segmentation fault my system description: david@qpid:~$ php-config Usage: /usr/bin/php-config [OPTION] Options: --prefix [/usr] --includes [-I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64] --ldflags [] --libs [-lcrypt -lz -lcrypt -lonig -lssl -ldb -lqdbm -lbz2 -lz -lpcre -lssl -lm -ldl -lnsl -lxml2 -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lxml2 -lxml2 -lxml2 -lcrypt -lxml2 -lxml2 -lxml2 -lxml2 -lcrypt ] --extension-dir [/usr/lib/php5/20090626+lfs] --include-dir [/usr/include/php5] --php-binary [/usr/bin/php] --php-sapis [cli apache2handler] --phpapi [20090626+lfs] --configure-options [--prefix=/usr --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php5/apache2 --with-config-file-scan-dir=/etc/php5/apache2/conf.d --build=i486-linux-gnu --host=i486-linux-gnu --sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man --disable-debug --with-regex=php --disable-rpath --disable-static --with-pic --with-layout=GNU --with-pear=/usr/share/php --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-db4 --with-qdbm=/usr --without-gdbm --with-iconv --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-onig=/usr --with-pcre-regex=/usr --enable-shmop --enable-sockets --enable-wddx --with-libxml-dir=/usr --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --with-mhash=yes --with-exec-dir=/usr/lib/php5/libexec --with-system-tzdata --without-mm --with-curl=shared,/usr --with-enchant=shared,/usr --with-zlib-dir=/usr --with-gd=shared,/usr --enable-gd-native-ttf --with-gmp=shared,/usr --with-jpeg-dir=shared,/usr --with-xpm-dir=shared,/usr/X11R6 --with-png-dir=shared,/usr --with-freetype-dir=shared,/usr --with-imap=shared,/usr --with-imap-ssl --with-interbase=shared,/usr --with-pdo-firebird=shared,/usr --enable-intl=shared --with-ttf=shared,/usr --with-t1lib=shared,/usr --with-ldap=shared,/usr --with-ldap-sasl=/usr --with-mcrypt=shared,/usr --with-mysql=shared,/usr --with-mysqli=shared,/usr/bin/mysql_config --with-pspell=shared,/usr --with-unixODBC=shared,/usr --with-recode=shared,/usr --with-xsl=shared,/usr --with-snmp=shared,/usr --with-sqlite=shared,/usr --with-sqlite3=shared,/usr --with-mssql=shared,/usr --with-tidy=shared,/usr --with-xmlrpc=shared --with-pgsql=shared,/usr] --version [5.3.3-7+squeeze1] --vernum [50303] here is the gdb backtrace: david@qpid:~$ gdb php GNU gdb (GDB) 7.0.1-debian Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later < http://gnu.org/licenses/gpl.html > This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu". For bug reporting instructions, please see: < http://www.gnu.org/software/gdb/bugs/ >... Reading symbols from /usr/bin/php...Reading symbols from /usr/lib/debug/usr/bin/php5...done. (no debugging symbols found)...done. (gdb) run -r "" Starting program: /usr/bin/php -r "" [Thread debugging using libthread_db enabled] Program received signal SIGSEGV, Segmentation fault. 0x00000000 in ?? () (gdb) bt #0 0x00000000 in ?? () #1 0xb7980688 in __cxa_finalize () from /lib/i686/cmov/libc.so.6 #2 0xb7369df4 in __do_global_dtors_aux () from /lib/libqpidmessaging.so.2 #3 0xb73c1ba0 in _fini () from /lib/libqpidmessaging.so.2 #4 0xb7ff571e in ?? () from /lib/ld-linux.so.2 #5 0xb7ff6197 in ?? () from /lib/ld-linux.so.2 #6 0xb7ce0ca4 in ?? () from /lib/i686/cmov/libdl.so.2 #7 0xb7ff07f6 in ?? () from /lib/ld-linux.so.2 #8 0xb7ce109c in ?? () from /lib/i686/cmov/libdl.so.2 #9 0xb7ce0cda in dlclose () from /lib/i686/cmov/libdl.so.2 #10 0x083dcf54 in module_destructor (module=0x8913198) at /home/david/php5-5.3.3/Zend/zend_API.c:2120 #11 0x083e4651 in zend_hash_apply_deleter (ht=0x88c0900, p=0x8912da8) at /home/david/php5-5.3.3/Zend/zend_hash.c:813 #12 0x083e47ff in zend_hash_graceful_reverse_destroy (ht=0x88c0900) at /home/david/php5-5.3.3/Zend/zend_hash.c:848 #13 0x083d4397 in zend_shutdown () at /home/david/php5-5.3.3/Zend/zend.c:831 #14 0x0835b4ac in php_module_shutdown () at /home/david/php5-5.3.3/main/main.c:2166 #15 0x084a7345 in main (argc=3, argv=0xbffff874) at /home/david/php5-5.3.3/sapi/cli/php_cli.c:1391 (gdb) f 1 #1 0xb7980688 in __cxa_finalize () from /lib/i686/cmov/libc.so.6 (gdb) f 10 #10 0x083dcf54 in module_destructor (module=0x8913198) at /home/david/php5-5.3.3/Zend/zend_API.c:2120 2120 DL_UNLOAD(module->handle); (gdb) hope it helps best regards, David
          Hide
          jiraposter@reviews.apache.org added a comment -

          -----------------------------------------------------------
          This is an automatically generated e-mail. To reply, visit:
          https://reviews.apache.org/r/462/
          -----------------------------------------------------------

          (Updated 2011-04-15 11:43:31.835386)

          Review request for qpid.

          Changes
          -------

          Implemented CMake support. Note, update also requires a custom CMake module if building with CMake. See https://issues.apache.org/jira/browse/QPID-3027 for details, and to download FindPHPDev.cmake.

          Summary
          -------

          A SWIG-based PHP binding for the Qpid Messaging API.

          The SWIG-based binding itself is complete, and working (hence needing review).

          This diff includes integration with Qpid's autoconf build system. I've only just begun learning autoconf / automake, so the build integration definitely needs review too

          This addresses bug QPID-3027.
          https://issues.apache.org/jira/browse/QPID-3027

          Diffs (updated)


          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/CMakeLists.txt 1092659
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/CMakeLists.txt PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/Makefile.am 1092659
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/examples/php/cli/list_agents.php PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/CMakeLists.txt PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/Makefile.am PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/php.i PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1092659
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/Makefile.am 1092659
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/client.php PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/hello_world.php PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_receiver.php PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_sender.php PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/server.php PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/web/hello_world.php PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/CMakeLists.txt PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/Makefile.am PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/php.i PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/phpinfo.i PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/swig_php_typemaps.i PRE-CREATION
          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/configure.ac 1092659

          Diff: https://reviews.apache.org/r/462/diff

          Testing
          -------

          Thanks,

          Paul

          Show
          jiraposter@reviews.apache.org added a comment - ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/462/ ----------------------------------------------------------- (Updated 2011-04-15 11:43:31.835386) Review request for qpid. Changes ------- Implemented CMake support. Note, update also requires a custom CMake module if building with CMake. See https://issues.apache.org/jira/browse/QPID-3027 for details, and to download FindPHPDev.cmake. Summary ------- A SWIG-based PHP binding for the Qpid Messaging API. The SWIG-based binding itself is complete, and working (hence needing review). This diff includes integration with Qpid's autoconf build system. I've only just begun learning autoconf / automake, so the build integration definitely needs review too This addresses bug QPID-3027 . https://issues.apache.org/jira/browse/QPID-3027 Diffs (updated) http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/CMakeLists.txt 1092659 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/CMakeLists.txt PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/Makefile.am 1092659 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/examples/php/cli/list_agents.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/CMakeLists.txt PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/Makefile.am PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/php.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1092659 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/Makefile.am 1092659 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/client.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/hello_world.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_receiver.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_sender.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/server.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/web/hello_world.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/CMakeLists.txt PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/Makefile.am PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/php.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/phpinfo.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/swig_php_typemaps.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/configure.ac 1092659 Diff: https://reviews.apache.org/r/462/diff Testing ------- Thanks, Paul
          Paul Colby made changes -
          Attachment cqpid_php.20110415.diff [ 12476446 ]
          Attachment FindPHPDev.cmake [ 12476447 ]
          Hide
          Paul Colby added a comment -

          Attaching a new version: cqpid_php.20110415.diff

          Main changes in this version:

          • CMake support!
          • fixed typemap error that can occur on some 32-bit platforms.

          The CMake support requires a FindPHPDev.cmake file (attached separately), which should be placed in the CMake Modules directory (eg /usr/share/cmake-2.8/Modules/FindPHPDev.cmake). The PHP module included with CMake only supports PHP4, not 5, and doesn't fetch anywhere near as much php-config info as the PHP bindings require.

          Note also, if you see "undefined variable: r" notices from PHP, then you're probably using a very old version if SWIG (ie pre-2.0)... those notices are benign, so either ignore them, or upgrade SWIG

          PS - Diff is against http://svn.apache.org/repos/asf/qpid/trunk/ r1092662.

          Paul.

          Show
          Paul Colby added a comment - Attaching a new version: cqpid_php.20110415.diff Main changes in this version: CMake support! fixed typemap error that can occur on some 32-bit platforms. The CMake support requires a FindPHPDev.cmake file (attached separately), which should be placed in the CMake Modules directory (eg /usr/share/cmake-2.8/Modules/FindPHPDev.cmake ). The PHP module included with CMake only supports PHP4, not 5, and doesn't fetch anywhere near as much php-config info as the PHP bindings require. Note also, if you see "undefined variable: r" notices from PHP, then you're probably using a very old version if SWIG (ie pre-2.0)... those notices are benign, so either ignore them, or upgrade SWIG PS - Diff is against http://svn.apache.org/repos/asf/qpid/trunk/ r1092662 . Paul.
          Hide
          jiraposter@reviews.apache.org added a comment -

          On 2011-04-04 17:36:13, Steve Huston wrote:

          > Could you also please add the needed pieces for cmake builds?

          Will do... I'm working on them at the moment

          • Paul

          -----------------------------------------------------------
          This is an automatically generated e-mail. To reply, visit:
          https://reviews.apache.org/r/462/#review378
          -----------------------------------------------------------

          On 2011-03-29 14:07:55, Paul Colby wrote:

          -----------------------------------------------------------

          This is an automatically generated e-mail. To reply, visit:

          https://reviews.apache.org/r/462/

          -----------------------------------------------------------

          (Updated 2011-03-29 14:07:55)

          Review request for qpid.

          Summary

          -------

          A SWIG-based PHP binding for the Qpid Messaging API.

          The SWIG-based binding itself is complete, and working (hence needing review).

          This diff includes integration with Qpid's autoconf build system. I've only just begun learning autoconf / automake, so the build integration definitely needs review too

          This addresses bug QPID-3027.

          https://issues.apache.org/jira/browse/QPID-3027

          Diffs

          -----

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/Makefile.am 1086164

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/examples/php/cli/list_agents.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/Makefile.am PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/php.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/Makefile.am 1086164

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/client.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/hello_world.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_receiver.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_sender.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/server.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/web/hello_world.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/Makefile.am PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/php.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/phpinfo.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/swig_php_typemaps.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/configure.ac 1086164

          Diff: https://reviews.apache.org/r/462/diff

          Testing

          -------

          Thanks,

          Paul

          Show
          jiraposter@reviews.apache.org added a comment - On 2011-04-04 17:36:13, Steve Huston wrote: > Could you also please add the needed pieces for cmake builds? Will do... I'm working on them at the moment Paul ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/462/#review378 ----------------------------------------------------------- On 2011-03-29 14:07:55, Paul Colby wrote: ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/462/ ----------------------------------------------------------- (Updated 2011-03-29 14:07:55) Review request for qpid. Summary ------- A SWIG-based PHP binding for the Qpid Messaging API. The SWIG-based binding itself is complete, and working (hence needing review). This diff includes integration with Qpid's autoconf build system. I've only just begun learning autoconf / automake, so the build integration definitely needs review too This addresses bug QPID-3027 . https://issues.apache.org/jira/browse/QPID-3027 Diffs ----- http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/Makefile.am 1086164 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/examples/php/cli/list_agents.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/Makefile.am PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/php.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/Makefile.am 1086164 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/client.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/hello_world.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_receiver.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_sender.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/server.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/web/hello_world.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/Makefile.am PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/php.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/phpinfo.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/swig_php_typemaps.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/configure.ac 1086164 Diff: https://reviews.apache.org/r/462/diff Testing ------- Thanks, Paul
          Hide
          jiraposter@reviews.apache.org added a comment -

          -----------------------------------------------------------
          This is an automatically generated e-mail. To reply, visit:
          https://reviews.apache.org/r/462/#review378
          -----------------------------------------------------------

          Could you also please add the needed pieces for cmake builds?

          • Steve

          On 2011-03-29 14:07:55, Paul Colby wrote:

          -----------------------------------------------------------

          This is an automatically generated e-mail. To reply, visit:

          https://reviews.apache.org/r/462/

          -----------------------------------------------------------

          (Updated 2011-03-29 14:07:55)

          Review request for qpid.

          Summary

          -------

          A SWIG-based PHP binding for the Qpid Messaging API.

          The SWIG-based binding itself is complete, and working (hence needing review).

          This diff includes integration with Qpid's autoconf build system. I've only just begun learning autoconf / automake, so the build integration definitely needs review too

          This addresses bug QPID-3027.

          https://issues.apache.org/jira/browse/QPID-3027

          Diffs

          -----

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/Makefile.am 1086164

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/examples/php/cli/list_agents.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/Makefile.am PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/php.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/Makefile.am 1086164

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/client.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/hello_world.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_receiver.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_sender.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/server.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/web/hello_world.php PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/Makefile.am PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/php.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/phpinfo.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/swig_php_typemaps.i PRE-CREATION

          http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/configure.ac 1086164

          Diff: https://reviews.apache.org/r/462/diff

          Testing

          -------

          Thanks,

          Paul

          Show
          jiraposter@reviews.apache.org added a comment - ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/462/#review378 ----------------------------------------------------------- Could you also please add the needed pieces for cmake builds? Steve On 2011-03-29 14:07:55, Paul Colby wrote: ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/462/ ----------------------------------------------------------- (Updated 2011-03-29 14:07:55) Review request for qpid. Summary ------- A SWIG-based PHP binding for the Qpid Messaging API. The SWIG-based binding itself is complete, and working (hence needing review). This diff includes integration with Qpid's autoconf build system. I've only just begun learning autoconf / automake, so the build integration definitely needs review too This addresses bug QPID-3027 . https://issues.apache.org/jira/browse/QPID-3027 Diffs ----- http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/Makefile.am 1086164 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/examples/php/cli/list_agents.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/Makefile.am PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qmf2/php/php.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/Makefile.am 1086164 http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/client.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/hello_world.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_receiver.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/map_sender.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/cli/server.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/examples/php/web/hello_world.php PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/Makefile.am PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/php.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/qpid/php/phpinfo.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/bindings/swig_php_typemaps.i PRE-CREATION http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/configure.ac 1086164 Diff: https://reviews.apache.org/r/462/diff Testing ------- Thanks, Paul
          Paul Colby made changes -
          Attachment cqpid_php.20110328.diff [ 12474765 ]
          Hide
          Paul Colby added a comment -

          Added cqpid_php.20110328.diff.

          • added a QMF2 binding.
          • fixed an int-size conversion bug in PHP type-mapping code.
          • added the web-based example that was supposed to be in the last update (Subversion was misbehaving).
          Show
          Paul Colby added a comment - Added cqpid_php.20110328.diff. added a QMF2 binding. fixed an int-size conversion bug in PHP type-mapping code. added the web-based example that was supposed to be in the last update (Subversion was misbehaving).
          Paul Colby made changes -
          Attachment cqpid_php.20110301.diff [ 12472294 ]
          Hide
          Paul Colby added a comment -

          Added cqpid_php.20110301.diff.

          The main difference in this version is integration with Qpid's autoconf / automake build system. This is the first time I've ever worked with autoconf / automake, so there's likely to be something that needs tweaking... ?

          Also included in this version is a small fix to key names extracted from PHP associative arrays when converting to Variants (was incorrectly including the trailing '\0' character).

          And finally, this version includes a web-based hello_world.php example - ie one that can be hosted by Apache, or some other PHP-enabled web server (the other included examples are meant to be used via PHP's CLI SAPI).

          The only thing that remains (apart from probable autoconf / automake tweaks), is CMake support.

          Show
          Paul Colby added a comment - Added cqpid_php.20110301.diff. The main difference in this version is integration with Qpid's autoconf / automake build system. This is the first time I've ever worked with autoconf / automake, so there's likely to be something that needs tweaking... ? Also included in this version is a small fix to key names extracted from PHP associative arrays when converting to Variants (was incorrectly including the trailing '\0' character). And finally, this version includes a web-based hello_world.php example - ie one that can be hosted by Apache, or some other PHP-enabled web server (the other included examples are meant to be used via PHP's CLI SAPI). The only thing that remains (apart from probable autoconf / automake tweaks), is CMake support.
          Ted Ross made changes -
          Assignee Ted Ross [ tedross ]
          Paul Colby made changes -
          Comment [ Sample Makefile for early adopters :) ]
          Paul Colby made changes -
          Attachment Makefile [ 12471506 ]
          Paul Colby made changes -
          Attachment cqpid_php.20110220.diff [ 12471505 ]
          Hide
          Paul Colby added a comment - - edited

          Just attached a code-complete version of PHP binding The only thing that remains (AFAIK) is integration with Qpid's build process (and more examples, of course).

          The latest diff also includes the map_sender.php and map_receiver.php examples, which show off the Variant <-> PHP type-mapping.

          I've also attached my temporary Makefile which can be used for experimenting until the proper build integration is done... if anyone is keen to help with that integration, I'd love to hear from you

          Show
          Paul Colby added a comment - - edited Just attached a code-complete version of PHP binding The only thing that remains (AFAIK) is integration with Qpid's build process (and more examples, of course). The latest diff also includes the map_sender.php and map_receiver.php examples, which show off the Variant <-> PHP type-mapping. I've also attached my temporary Makefile which can be used for experimenting until the proper build integration is done... if anyone is keen to help with that integration, I'd love to hear from you
          Hide
          Paul Colby added a comment -

          The SWIG "Segfault on overloaded methods with different return types" issue I reported has just been fixed

          This means that we won't need to rename/ignore certain overloaded methods when using SWIG 2.0.2+ (when its released; or r12471 in the meantime). So I think the least confusing thing to do is %ignore the offending overloads on for earlier versions of SWIG, rather than %rename them (which would introduce entirely new function names - worth avoiding).

          Type-mapping is 99% done... will upload soon!

          Show
          Paul Colby added a comment - The SWIG "Segfault on overloaded methods with different return types" issue I reported has just been fixed This means that we won't need to rename/ignore certain overloaded methods when using SWIG 2.0.2+ (when its released; or r12471 in the meantime). So I think the least confusing thing to do is %ignore the offending overloads on for earlier versions of SWIG, rather than %rename them (which would introduce entirely new function names - worth avoiding). Type-mapping is 99% done... will upload soon!
          Hide
          Paul Colby added a comment -

          I've just attached an initial PHP binding. This includes:

          • the basic SWIG interface files.
          • three PHP CLI examples (ports of the hello_world, client and server examples from C++ to PHP).
          • a basic temporary Makefile (just for initial development).

          Still to go:

          • Variant mapping.
          • map_sender and map_receiver examples (depends on Variant mapping).
          • phpinfo implementation.
          • integration into Qpid's build system.
          Show
          Paul Colby added a comment - I've just attached an initial PHP binding. This includes: the basic SWIG interface files. three PHP CLI examples (ports of the hello_world, client and server examples from C++ to PHP). a basic temporary Makefile (just for initial development). Still to go: Variant mapping. map_sender and map_receiver examples (depends on Variant mapping). phpinfo implementation. integration into Qpid's build system.
          Paul Colby made changes -
          Field Original Value New Value
          Attachment cqpid_php.diff [ 12470574 ]
          Hide
          Paul Colby added a comment -

          Initial C++ Messaging API binding for PHP.

          Show
          Paul Colby added a comment - Initial C++ Messaging API binding for PHP.
          Hide
          Paul Colby added a comment -

          Another related SWIG bug report:

          Show
          Paul Colby added a comment - Another related SWIG bug report: %nspace does not work for PHP - https://sourceforge.net/tracker/?func=detail&aid=3169536&group_id=1645&atid=101645
          Hide
          Paul Colby added a comment -

          Related SWIG bug reports / feature requests:

          Show
          Paul Colby added a comment - Related SWIG bug reports / feature requests: Segfault on overloaded methods with different return types - https://sourceforge.net/tracker/?func=detail&aid=3168531&group_id=1645&atid=101645 Temporary fix for segmentation fault in php.cxx - https://sourceforge.net/tracker/?func=detail&aid=3168603&group_id=1645&atid=301645 Warn when creating functions that clash with PHP built-ins - https://sourceforge.net/tracker/?func=detail&aid=3168551&group_id=1645&atid=351645 %rename global function and class method independently - https://sourceforge.net/tracker/?func=detail&aid=3168562&group_id=1645&atid=351645
          Paul Colby created issue -

            People

            • Assignee:
              Darryl L. Pierce
              Reporter:
              Paul Colby
            • Votes:
              3 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:

                Development