You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Steve Huston (JIRA)" <qp...@incubator.apache.org> on 2009/03/31 00:41:50 UTC

[jira] Created: (QPID-1780) Remove boost dependencies from C++ client API

Remove boost dependencies from C++ client API
---------------------------------------------

                 Key: QPID-1780
                 URL: https://issues.apache.org/jira/browse/QPID-1780
             Project: Qpid
          Issue Type: Bug
          Components: C++ Client
    Affects Versions: M4
            Reporter: Steve Huston


Currently there is a dependency on Boost headers being present when building a Qpid client application. I believe that Qpid client programmers should not have to be exposed to Boost just for building Qpid applications. It's a Bad Idea to impose a requirement such as this on all users - Boost is a supporting artifact of the implementation and shouldn't be a requirement for users.

More pointedly, it could cause version skew on Windows installed kits. Unlike on RHEL, Windows doesn't offer Boost packages as part of the vendor-supplied OS kit. So, Windows users needing Boost must get their kit somewhere else. This makes it impossible to predict what version of Boost will (or won't) be on a user's system. To take care of this, the Windows installable kit is currently including the needed Boost DLLs that the kit is built against within the install. This removes the need to have Boost installed by the user prior to installing/using Qpid and isolates Qpid's binaries from whatever Boost version is present if there is one. This is a Good Thing except that when trying to build a client app (such as the Qpid examples) Boost ends up getting pulled in from the client API at build time. This is bad because the user now needs to go install Boost. If it's not the same version that the installed kit was built against, there's a chance that object sizes, methods, etc. will differ between what Qpid was built with and what the user installed.

The case that brought this up immediately is that qpid/SessionId.h derives from boost::totally_ordered1<SessionId>. Since qpid/client/Session_Base_0_10.h defines a method which returns a SessionId by value, it needs to pull in SessionId.h which yields a compile error if Boost is not available.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-1780) Remove boost dependencies from C++ client API

Posted by "Carl Trieloff (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-1780?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12693958#action_12693958 ] 

Carl Trieloff commented on QPID-1780:
-------------------------------------


I not sure it will be that simple with Shared pointer.

> Remove boost dependencies from C++ client API
> ---------------------------------------------
>
>                 Key: QPID-1780
>                 URL: https://issues.apache.org/jira/browse/QPID-1780
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Client
>    Affects Versions: M4
>            Reporter: Steve Huston
>
> Currently there is a dependency on Boost headers being present when building a Qpid client application. I believe that Qpid client programmers should not have to be exposed to Boost just for building Qpid applications. It's a Bad Idea to impose a requirement such as this on all users - Boost is a supporting artifact of the implementation and shouldn't be a requirement for users.
> More pointedly, it could cause version skew on Windows installed kits. Unlike on RHEL, Windows doesn't offer Boost packages as part of the vendor-supplied OS kit. So, Windows users needing Boost must get their kit somewhere else. This makes it impossible to predict what version of Boost will (or won't) be on a user's system. To take care of this, the Windows installable kit is currently including the needed Boost DLLs that the kit is built against within the install. This removes the need to have Boost installed by the user prior to installing/using Qpid and isolates Qpid's binaries from whatever Boost version is present if there is one. This is a Good Thing except that when trying to build a client app (such as the Qpid examples) Boost ends up getting pulled in from the client API at build time. This is bad because the user now needs to go install Boost. If it's not the same version that the installed kit was built against, there's a chance that object sizes, methods, etc. will differ between what Qpid was built with and what the user installed.
> The case that brought this up immediately is that qpid/SessionId.h derives from boost::totally_ordered1<SessionId>. Since qpid/client/Session_Base_0_10.h defines a method which returns a SessionId by value, it needs to pull in SessionId.h which yields a compile error if Boost is not available.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-1780) Remove boost dependencies from C++ client API

Posted by "James Mansion (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-1780?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12693993#action_12693993 ] 

James Mansion commented on QPID-1780:
-------------------------------------

I'm not sure the position is any better on RHEL or other *nix systems - the system-supplied Boost package evolves slowly and I'm likely to want a more modern one.

All platforms will often have the client built from source in a customer C++ application, I suspect, and packagers will choose a common Boost library for distributions.

If there is going to be a lightweight C API with a supported swig/sip/whatever interface, why worry?  Shouldn't that be the supported binary client?



> Remove boost dependencies from C++ client API
> ---------------------------------------------
>
>                 Key: QPID-1780
>                 URL: https://issues.apache.org/jira/browse/QPID-1780
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Client
>    Affects Versions: M4
>            Reporter: Steve Huston
>
> Currently there is a dependency on Boost headers being present when building a Qpid client application. I believe that Qpid client programmers should not have to be exposed to Boost just for building Qpid applications. It's a Bad Idea to impose a requirement such as this on all users - Boost is a supporting artifact of the implementation and shouldn't be a requirement for users.
> More pointedly, it could cause version skew on Windows installed kits. Unlike on RHEL, Windows doesn't offer Boost packages as part of the vendor-supplied OS kit. So, Windows users needing Boost must get their kit somewhere else. This makes it impossible to predict what version of Boost will (or won't) be on a user's system. To take care of this, the Windows installable kit is currently including the needed Boost DLLs that the kit is built against within the install. This removes the need to have Boost installed by the user prior to installing/using Qpid and isolates Qpid's binaries from whatever Boost version is present if there is one. This is a Good Thing except that when trying to build a client app (such as the Qpid examples) Boost ends up getting pulled in from the client API at build time. This is bad because the user now needs to go install Boost. If it's not the same version that the installed kit was built against, there's a chance that object sizes, methods, etc. will differ between what Qpid was built with and what the user installed.
> The case that brought this up immediately is that qpid/SessionId.h derives from boost::totally_ordered1<SessionId>. Since qpid/client/Session_Base_0_10.h defines a method which returns a SessionId by value, it needs to pull in SessionId.h which yields a compile error if Boost is not available.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-1780) Remove boost dependencies from C++ client API

Posted by "Pete MacKinnon (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-1780?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12723693#action_12723693 ] 

Pete MacKinnon commented on QPID-1780:
--------------------------------------

This also still affects the existing QMF C++ API which is generated from qmf-gen:

boost/iterator/iterator_facade.hpp
^
|
qpid/framing/Buffer.h
^
|
qpid/management/ManagementObject.h


> Remove boost dependencies from C++ client API
> ---------------------------------------------
>
>                 Key: QPID-1780
>                 URL: https://issues.apache.org/jira/browse/QPID-1780
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Client
>    Affects Versions: M4
>            Reporter: Steve Huston
>
> Currently there is a dependency on Boost headers being present when building a Qpid client application. I believe that Qpid client programmers should not have to be exposed to Boost just for building Qpid applications. It's a Bad Idea to impose a requirement such as this on all users - Boost is a supporting artifact of the implementation and shouldn't be a requirement for users.
> More pointedly, it could cause version skew on Windows installed kits. Unlike on RHEL, Windows doesn't offer Boost packages as part of the vendor-supplied OS kit. So, Windows users needing Boost must get their kit somewhere else. This makes it impossible to predict what version of Boost will (or won't) be on a user's system. To take care of this, the Windows installable kit is currently including the needed Boost DLLs that the kit is built against within the install. This removes the need to have Boost installed by the user prior to installing/using Qpid and isolates Qpid's binaries from whatever Boost version is present if there is one. This is a Good Thing except that when trying to build a client app (such as the Qpid examples) Boost ends up getting pulled in from the client API at build time. This is bad because the user now needs to go install Boost. If it's not the same version that the installed kit was built against, there's a chance that object sizes, methods, etc. will differ between what Qpid was built with and what the user installed.
> The case that brought this up immediately is that qpid/SessionId.h derives from boost::totally_ordered1<SessionId>. Since qpid/client/Session_Base_0_10.h defines a method which returns a SessionId by value, it needs to pull in SessionId.h which yields a compile error if Boost is not available.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org