From da7718ef463775acc7d6fbecf2d64c1bbfc39fd8 Mon Sep 17 00:00:00 2001 From: Justin Ross Date: Tue, 19 Apr 2016 23:11:13 +0000 Subject: QPID-7207: Remove files and components that are obsolete or no longer in use; move doc and packaging pieces to the cpp subtree git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1740032 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/LICENSE | 8 - qpid/NOTICE | 8 - qpid/QPID_VERSION.txt | 1 - qpid/README.txt | 57 - qpid/bin/LICENSE | 206 - qpid/bin/NOTICE | 8 - qpid/bin/install-cpp-python | 76 - qpid/bin/mvn-deploy-qpid-java.sh | 71 - qpid/bin/set_svn_properties.sh | 133 - qpid/buildtools/LICENSE | 206 - qpid/buildtools/NOTICE | 8 - qpid/buildtools/buildCreator/build.config | 37 - qpid/buildtools/buildCreator/buildCreator.py | 1472 ----- qpid/buildtools/buildCreator/qpid.build | 55 - qpid/cpp/docs/book/.gitignore | 21 + qpid/cpp/docs/book/Makefile | 38 + qpid/cpp/docs/book/src/Makefile.inc | 63 + qpid/cpp/docs/book/src/common/css/style.css | 279 + qpid/cpp/docs/book/src/cpp-broker/.gitignore | 20 + .../book/src/cpp-broker/AMQP-Compatibility.xml | 713 +++ .../cpp-broker/AMQP-Messaging-Broker-CPP-Book.xml | 74 + .../book/src/cpp-broker/Active-Passive-Cluster.xml | 1229 ++++ ...heat-Sheet-for-configuring-Exchange-Options.xml | 144 + .../Cheat-Sheet-for-configuring-Queue-Options.xml | 198 + .../book/src/cpp-broker/HA-Queue-Replication.xml | 126 + qpid/cpp/docs/book/src/cpp-broker/LVQ.xml | 181 + qpid/cpp/docs/book/src/cpp-broker/Makefile | 20 + .../book/src/cpp-broker/Managing-CPP-Broker.xml | 480 ++ .../src/cpp-broker/QMF-Python-Console-Tutorial.xml | 894 +++ .../Qpid-Interoperability-Documentation.xml | 377 ++ .../src/cpp-broker/Qpid-Management-Framework.xml | 944 +++ .../book/src/cpp-broker/Running-CPP-Broker.xml | 846 +++ qpid/cpp/docs/book/src/cpp-broker/Security.xml | 2516 ++++++++ .../src/cpp-broker/Using-Broker-Federation.xml | 715 +++ .../book/src/cpp-broker/Using-message-groups.xml | 295 + .../book/src/cpp-broker/producer-flow-control.xml | 351 ++ .../src/cpp-broker/queue-state-replication.xml | 333 + qpid/cpp/docs/book/src/images/qpid-logo.png | Bin 0 -> 39056 bytes qpid/cpp/docs/book/src/old/ACL.xml | 800 +++ .../book/src/old/AMQP-.NET-Messaging-Client.xml | 108 + .../book/src/old/AMQP-C++-Messaging-Client.xml | 61 + .../src/old/AMQP-Java-JMS-Messaging-Client.xml | 94 + .../book/src/old/AMQP-Messaging-Broker-CPP.xml | 70 + .../book/src/old/AMQP-Python-Messaging-Client.xml | 62 + .../book/src/old/AMQP-Ruby-Messaging-Client.xml | 40 + qpid/cpp/docs/book/src/old/AMQP.xml | 98 + qpid/cpp/docs/book/src/old/Binding-URL-Format.xml | 174 + qpid/cpp/docs/book/src/old/Book-Info.xml | 68 + qpid/cpp/docs/book/src/old/Book.xml | 93 + qpid/cpp/docs/book/src/old/Broker-CPP.xml | 40 + qpid/cpp/docs/book/src/old/Broker-Java.xml | 45 + qpid/cpp/docs/book/src/old/Clients.xml | 25 + .../docs/book/src/old/Connection-URL-Format.xml | 387 ++ qpid/cpp/docs/book/src/old/Download.xml | 174 + qpid/cpp/docs/book/src/old/Excel-AddIn.xml | 169 + qpid/cpp/docs/book/src/old/FAQ.xml | 524 ++ qpid/cpp/docs/book/src/old/Getting-Started.xml | 90 + qpid/cpp/docs/book/src/old/How-to-Use-JNDI.xml | 175 + qpid/cpp/docs/book/src/old/InfoPlugin.xml | 261 + qpid/cpp/docs/book/src/old/Introduction.xml | 106 + .../book/src/old/Java-Broker-StatusLogMessages.xml | 294 + .../docs/book/src/old/Java-JMS-Selector-Syntax.xml | 96 + .../docs/book/src/old/Management-Design-notes.xml | 2136 +++++++ qpid/cpp/docs/book/src/old/NET-User-Guide.xml | 1383 ++++ qpid/cpp/docs/book/src/old/PythonBrokerTest.xml | 98 + .../book/src/old/QMan-Qpid-Management-bridge.xml | 166 + qpid/cpp/docs/book/src/old/Qpid-ACLs.xml | 49 + qpid/cpp/docs/book/src/old/Qpid-Book.xml | 93 + ...pid-Compatibility-And-Interoperability-Book.xml | 36 + qpid/cpp/docs/book/src/old/SASL-Compatibility.xml | 70 + qpid/cpp/docs/book/src/old/SSL.xml | 180 + qpid/cpp/docs/book/src/old/Security-Plugins.xml | 611 ++ qpid/cpp/docs/book/src/old/System-Properties.xml | 357 ++ .../old/Using-Qpid-with-other-JNDI-Providers.xml | 215 + qpid/cpp/docs/book/src/old/WCF.xml | 137 + qpid/cpp/docs/book/src/old/schemas.xml | 102 + qpid/cpp/docs/book/src/programming/Makefile | 20 + .../book/src/programming/Message-Groups-Guide.xml | 163 + .../src/programming/Programming-In-Apache-Qpid.xml | 6594 ++++++++++++++++++++ qpid/cpp/docs/book/src/qmf/QmfBook.xml | 101 + qpid/cpp/docs/book/src/qmf/QmfIntroduction.xml | 45 + qpid/cpp/docs/book/xsl/html-custom.xsl | 188 + qpid/cpp/packaging/windows/INSTALL_NOTES.html | 100 + qpid/cpp/packaging/windows/LICENSE.rtf | 110 + qpid/cpp/packaging/windows/build_installer.bat | 55 + qpid/cpp/packaging/windows/installer.proj | 243 + qpid/cpp/packaging/windows/qpid-icon.ico | Bin 0 -> 52972 bytes .../packaging/windows/qpid-install-background.bmp | Bin 0 -> 155830 bytes qpid/cpp/packaging/windows/qpid-install-banner.bmp | Bin 0 -> 29846 bytes qpid/cpp/packaging/windows/qpidc.wxs | 343 + qpid/doc/book/.gitignore | 21 - qpid/doc/book/Makefile | 38 - qpid/doc/book/src/Makefile.inc | 63 - qpid/doc/book/src/common/css/style.css | 279 - qpid/doc/book/src/cpp-broker/.gitignore | 20 - .../doc/book/src/cpp-broker/AMQP-Compatibility.xml | 713 --- .../cpp-broker/AMQP-Messaging-Broker-CPP-Book.xml | 74 - .../book/src/cpp-broker/Active-Passive-Cluster.xml | 1229 ---- ...heat-Sheet-for-configuring-Exchange-Options.xml | 144 - .../Cheat-Sheet-for-configuring-Queue-Options.xml | 198 - .../book/src/cpp-broker/HA-Queue-Replication.xml | 126 - qpid/doc/book/src/cpp-broker/LVQ.xml | 181 - qpid/doc/book/src/cpp-broker/Makefile | 20 - .../book/src/cpp-broker/Managing-CPP-Broker.xml | 480 -- .../src/cpp-broker/QMF-Python-Console-Tutorial.xml | 894 --- .../Qpid-Interoperability-Documentation.xml | 377 -- .../src/cpp-broker/Qpid-Management-Framework.xml | 944 --- .../doc/book/src/cpp-broker/Running-CPP-Broker.xml | 846 --- qpid/doc/book/src/cpp-broker/Security.xml | 2516 -------- .../src/cpp-broker/Using-Broker-Federation.xml | 715 --- .../book/src/cpp-broker/Using-message-groups.xml | 295 - .../book/src/cpp-broker/producer-flow-control.xml | 351 -- .../src/cpp-broker/queue-state-replication.xml | 333 - qpid/doc/book/src/images/qpid-logo.png | Bin 39056 -> 0 bytes qpid/doc/book/src/old/ACL.xml | 800 --- .../book/src/old/AMQP-.NET-Messaging-Client.xml | 108 - .../doc/book/src/old/AMQP-C++-Messaging-Client.xml | 61 - .../src/old/AMQP-Java-JMS-Messaging-Client.xml | 94 - .../doc/book/src/old/AMQP-Messaging-Broker-CPP.xml | 70 - .../book/src/old/AMQP-Python-Messaging-Client.xml | 62 - .../book/src/old/AMQP-Ruby-Messaging-Client.xml | 40 - qpid/doc/book/src/old/AMQP.xml | 98 - qpid/doc/book/src/old/Binding-URL-Format.xml | 174 - qpid/doc/book/src/old/Book-Info.xml | 68 - qpid/doc/book/src/old/Book.xml | 93 - qpid/doc/book/src/old/Broker-CPP.xml | 40 - qpid/doc/book/src/old/Broker-Java.xml | 45 - qpid/doc/book/src/old/Clients.xml | 25 - qpid/doc/book/src/old/Connection-URL-Format.xml | 387 -- qpid/doc/book/src/old/Download.xml | 174 - qpid/doc/book/src/old/Excel-AddIn.xml | 169 - qpid/doc/book/src/old/FAQ.xml | 524 -- qpid/doc/book/src/old/Getting-Started.xml | 90 - qpid/doc/book/src/old/How-to-Use-JNDI.xml | 175 - qpid/doc/book/src/old/InfoPlugin.xml | 261 - qpid/doc/book/src/old/Introduction.xml | 106 - .../book/src/old/Java-Broker-StatusLogMessages.xml | 294 - qpid/doc/book/src/old/Java-JMS-Selector-Syntax.xml | 96 - qpid/doc/book/src/old/Management-Design-notes.xml | 2136 ------- qpid/doc/book/src/old/NET-User-Guide.xml | 1383 ---- qpid/doc/book/src/old/PythonBrokerTest.xml | 98 - .../book/src/old/QMan-Qpid-Management-bridge.xml | 166 - qpid/doc/book/src/old/Qpid-ACLs.xml | 49 - qpid/doc/book/src/old/Qpid-Book.xml | 93 - ...pid-Compatibility-And-Interoperability-Book.xml | 36 - qpid/doc/book/src/old/SASL-Compatibility.xml | 70 - qpid/doc/book/src/old/SSL.xml | 180 - qpid/doc/book/src/old/Security-Plugins.xml | 611 -- qpid/doc/book/src/old/System-Properties.xml | 357 -- .../old/Using-Qpid-with-other-JNDI-Providers.xml | 215 - qpid/doc/book/src/old/WCF.xml | 137 - qpid/doc/book/src/old/schemas.xml | 102 - qpid/doc/book/src/programming/Makefile | 20 - .../book/src/programming/Message-Groups-Guide.xml | 163 - .../src/programming/Programming-In-Apache-Qpid.xml | 6594 -------------------- qpid/doc/book/src/qmf/QmfBook.xml | 101 - qpid/doc/book/src/qmf/QmfIntroduction.xml | 45 - qpid/doc/book/xsl/html-custom.xsl | 188 - qpid/doc/dev-readme/QPID-Component-README.odg | Bin 12661 -> 0 bytes qpid/doc/dev-readme/QPID-Component-README.pdf | Bin 38097 -> 0 bytes qpid/doc/dev-readme/README.txt | 6 - qpid/doc/website/README.txt | 10 - qpid/etc/LICENSE | 206 - qpid/etc/NOTICE | 8 - qpid/etc/svn-auto-props | 77 - qpid/extras/dispatch/README | 4 - qpid/packaging/windows/INSTALL_NOTES.html | 100 - qpid/packaging/windows/LICENSE.rtf | 110 - qpid/packaging/windows/build_installer.bat | 55 - qpid/packaging/windows/installer.proj | 243 - qpid/packaging/windows/qpid-icon.ico | Bin 52972 -> 0 bytes qpid/packaging/windows/qpid-install-background.bmp | Bin 155830 -> 0 bytes qpid/packaging/windows/qpid-install-banner.bmp | Bin 29846 -> 0 bytes qpid/packaging/windows/qpidc.wxs | 343 - qpid/review/LICENSE | 206 - qpid/review/NOTICE | 8 - qpid/review/agenda.py | 84 - qpid/review/changeLogToWiki.py | 85 - qpid/review/jiraRSS2wiki.xsl | 37 - qpid/review/svnlog2wiki.xsl | 31 - qpid/sandbox/models/fedsim/__init__.py | 19 - qpid/sandbox/models/fedsim/fedsim.py | 434 -- qpid/sandbox/models/fedsim/testBig.py | 88 - qpid/sandbox/models/fedsim/testRing.py | 48 - qpid/sandbox/models/fedsim/testStar.py | 65 - qpid/sandbox/models/fedsim/testStarAdd.py | 56 - qpid/wcf/LICENSE.txt | 202 - qpid/wcf/NOTICE.txt | 5 - qpid/wcf/QpidWcf.sln | 89 - qpid/wcf/ReadMe.txt | 189 - qpid/wcf/samples/Channel/AppConfig/ConfigDemo.cs | 109 - .../samples/Channel/AppConfig/ConfigDemo.csproj | 143 - qpid/wcf/samples/Channel/HelloWorld/HelloWorld.cs | 119 - .../samples/Channel/HelloWorld/HelloWorld.csproj | 75 - .../Channel/WCFToWCFDirect/Client/Client.cs | 68 - .../Channel/WCFToWCFDirect/Client/Client.csproj | 91 - .../Client/Properties/AssemblyInfo.cs | 55 - .../Service/Properties/AssemblyInfo.cs | 55 - .../Channel/WCFToWCFDirect/Service/Service.cs | 83 - .../Channel/WCFToWCFDirect/Service/Service.csproj | 86 - .../Channel/WCFToWCFDirect/WCFToWCFDirect.sln | 46 - .../Another_Topic_Consumer.cs | 67 - .../Another_Topic_Consumer.csproj | 91 - .../Properties/AssemblyInfo.cs | 55 - .../Topic_Consumer/Properties/AssemblyInfo.cs | 55 - .../Topic_Consumer/Topic_Consumer.cs | 85 - .../Topic_Consumer/Topic_Consumer.csproj | 85 - .../Topic_Producer/Properties/AssemblyInfo.cs | 55 - .../Topic_Producer/Topic_Producer.cs | 68 - .../Topic_Producer/Topic_Producer.csproj | 91 - .../Channel/WCFToWCFPubSub/WCFToWCFPubSub.sln | 52 - qpid/wcf/samples/Integration/Drain/Drain.cs | 146 - qpid/wcf/samples/Integration/Drain/Drain.csproj | 80 - qpid/wcf/samples/Integration/Integration.sln | 46 - qpid/wcf/samples/Integration/Spout/Spout.cs | 109 - qpid/wcf/samples/Integration/Spout/Spout.csproj | 81 - qpid/wcf/samples/Integration/Util/Options.cs | 157 - qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpBoolean.cs | 57 - qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpInt.cs | 57 - .../src/Apache/Qpid/AmqpTypes/AmqpProperties.cs | 301 - qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpString.cs | 91 - qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpType.cs | 33 - .../wcf/src/Apache/Qpid/AmqpTypes/AmqpTypes.csproj | 158 - qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpUbyte.cs | 57 - .../src/Apache/Qpid/AmqpTypes/CreateNetModule.bat | 33 - .../Qpid/AmqpTypes/Properties/AssemblyInfo.cs | 55 - qpid/wcf/src/Apache/Qpid/AmqpTypes/PropertyName.cs | 35 - .../src/Apache/Qpid/Channel/AmqpBinaryBinding.cs | 68 - .../Channel/AmqpBinaryBindingCollectionElement.cs | 29 - .../AmqpBinaryBindingConfigurationElement.cs | 79 - qpid/wcf/src/Apache/Qpid/Channel/AmqpBinding.cs | 153 - .../Qpid/Channel/AmqpBindingCollectionElement.cs | 29 - .../Channel/AmqpBindingConfigurationElement.cs | 344 - .../src/Apache/Qpid/Channel/AmqpChannelFactory.cs | 154 - .../src/Apache/Qpid/Channel/AmqpChannelHelpers.cs | 234 - .../src/Apache/Qpid/Channel/AmqpChannelListener.cs | 204 - qpid/wcf/src/Apache/Qpid/Channel/AmqpCredential.cs | 113 - .../src/Apache/Qpid/Channel/AmqpCredentialType.cs | 37 - qpid/wcf/src/Apache/Qpid/Channel/AmqpSecurity.cs | 75 - .../src/Apache/Qpid/Channel/AmqpSecurityElement.cs | 126 - .../src/Apache/Qpid/Channel/AmqpSecurityMode.cs | 37 - .../Qpid/Channel/AmqpTransportBindingElement.cs | 186 - .../Apache/Qpid/Channel/AmqpTransportChannel.cs | 642 -- .../Apache/Qpid/Channel/AmqpTransportSecurity.cs | 101 - qpid/wcf/src/Apache/Qpid/Channel/Channel.csproj | 112 - .../src/Apache/Qpid/Channel/ConnectionManager.cs | 329 - .../Apache/Qpid/Channel/Properties/AssemblyInfo.cs | 52 - qpid/wcf/src/Apache/Qpid/Channel/RawMessage.cs | 374 -- .../src/Apache/Qpid/Channel/RawMessageEncoder.cs | 113 - .../Qpid/Channel/RawMessageEncoderFactory.cs | 45 - .../Channel/RawMessageEncodingBindingElement.cs | 102 - qpid/wcf/src/Apache/Qpid/Channel/RawXmlReader.cs | 353 -- qpid/wcf/src/Apache/Qpid/Channel/RawXmlWriter.cs | 221 - qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp | 797 --- .../wcf/src/Apache/Qpid/Interop/AmqpConnection.cpp | 276 - qpid/wcf/src/Apache/Qpid/Interop/AmqpConnection.h | 97 - qpid/wcf/src/Apache/Qpid/Interop/AmqpMessage.cpp | 76 - qpid/wcf/src/Apache/Qpid/Interop/AmqpMessage.h | 61 - qpid/wcf/src/Apache/Qpid/Interop/AmqpSession.cpp | 633 -- qpid/wcf/src/Apache/Qpid/Interop/AmqpSession.h | 109 - qpid/wcf/src/Apache/Qpid/Interop/AssemblyInfo.cpp | 57 - .../src/Apache/Qpid/Interop/CompletionWaiter.cpp | 145 - .../wcf/src/Apache/Qpid/Interop/CompletionWaiter.h | 98 - .../src/Apache/Qpid/Interop/DtxResourceManager.cpp | 285 - .../src/Apache/Qpid/Interop/DtxResourceManager.h | 76 - qpid/wcf/src/Apache/Qpid/Interop/InputLink.cpp | 868 --- qpid/wcf/src/Apache/Qpid/Interop/InputLink.h | 110 - qpid/wcf/src/Apache/Qpid/Interop/Interop.vcproj | 501 -- .../src/Apache/Qpid/Interop/MessageBodyStream.cpp | 337 - .../src/Apache/Qpid/Interop/MessageBodyStream.h | 131 - qpid/wcf/src/Apache/Qpid/Interop/MessageWaiter.cpp | 251 - qpid/wcf/src/Apache/Qpid/Interop/MessageWaiter.h | 125 - qpid/wcf/src/Apache/Qpid/Interop/OutputLink.cpp | 255 - qpid/wcf/src/Apache/Qpid/Interop/OutputLink.h | 75 - qpid/wcf/src/Apache/Qpid/Interop/QpidAddress.cpp | 304 - qpid/wcf/src/Apache/Qpid/Interop/QpidAddress.h | 89 - qpid/wcf/src/Apache/Qpid/Interop/QpidException.h | 37 - qpid/wcf/src/Apache/Qpid/Interop/QpidMarshal.h | 53 - qpid/wcf/src/Apache/Qpid/Interop/XaTransaction.cpp | 525 -- qpid/wcf/src/Apache/Qpid/Interop/XaTransaction.h | 96 - qpid/wcf/src/wcfnet.snk | Bin 596 -> 0 bytes .../Qpid/Test/Channel/Functional/AsyncTest.cs | 190 - .../Channel/Functional/BasicTransactionTest.cs | 173 - .../Channel/Functional/ChannelAbortCommitTest.cs | 113 - .../Channel/Functional/ChannelContextParameters.cs | 229 - .../Qpid/Test/Channel/Functional/ChannelEntity.cs | 72 - .../Test/Channel/Functional/ChannelReceiver.cs | 280 - .../Qpid/Test/Channel/Functional/ChannelSender.cs | 138 - .../Channel/Functional/CustomAmqpBindingTest.cs | 77 - .../Test/Channel/Functional/FunctionalTests.csproj | 121 - .../Channel/Functional/IGenericObjectService.cs | 30 - .../Test/Channel/Functional/IInteropService.cs | 31 - .../Channel/Functional/IQueuedDatagramService1.cs | 33 - .../Channel/Functional/IQueuedDatagramService2.cs | 33 - .../Channel/Functional/IQueuedDatagramService3.cs | 33 - .../Functional/IQueuedServiceUsingTSRAttribute.cs | 30 - .../IQueuedServiceUsingTransactionScope.cs | 30 - .../Test/Channel/Functional/MessageBodyTest.cs | 134 - .../Qpid/Test/Channel/Functional/MessageClient.cs | 144 - .../Test/Channel/Functional/MessageProperties.txt | 22 - .../Channel/Functional/MessagePropertiesTest.cs | 131 - .../Qpid/Test/Channel/Functional/MessageService.cs | 198 - .../Functional/MultipleEndpointsSameQueueTest.cs | 83 - .../Channel/Functional/Properties/AssemblyInfo.cs | 55 - .../Qpid/Test/Channel/Functional/RunTests.bat | 34 - .../Apache/Qpid/Test/Channel/Functional/Util.cs | 157 - .../Test/Channel/WcfPerftest/RawBodyUtility.cs | 161 - .../Qpid/Test/Channel/WcfPerftest/WcfPerftest.cs | 783 --- .../Test/Channel/WcfPerftest/WcfPerftest.csproj | 83 - qpid/wcf/tools/QCreate/QCreate.cpp | 65 - qpid/wcf/tools/QCreate/QCreate.sln | 40 - qpid/wcf/tools/QCreate/QCreate.vcproj | 232 - qpid/wcf/tools/QCreate/ReadMe.txt | 52 - qpid/wcf/tools/QCreate/stdafx.cpp | 27 - qpid/wcf/tools/QCreate/stdafx.h | 34 - qpid/wcf/tools/QCreate/targetver.h | 32 - 316 files changed, 28506 insertions(+), 50798 deletions(-) delete mode 100644 qpid/LICENSE delete mode 100644 qpid/NOTICE delete mode 100644 qpid/QPID_VERSION.txt delete mode 100644 qpid/README.txt delete mode 100644 qpid/bin/LICENSE delete mode 100644 qpid/bin/NOTICE delete mode 100755 qpid/bin/install-cpp-python delete mode 100755 qpid/bin/mvn-deploy-qpid-java.sh delete mode 100755 qpid/bin/set_svn_properties.sh delete mode 100644 qpid/buildtools/LICENSE delete mode 100644 qpid/buildtools/NOTICE delete mode 100644 qpid/buildtools/buildCreator/build.config delete mode 100755 qpid/buildtools/buildCreator/buildCreator.py delete mode 100644 qpid/buildtools/buildCreator/qpid.build create mode 100644 qpid/cpp/docs/book/.gitignore create mode 100644 qpid/cpp/docs/book/Makefile create mode 100644 qpid/cpp/docs/book/src/Makefile.inc create mode 100644 qpid/cpp/docs/book/src/common/css/style.css create mode 100644 qpid/cpp/docs/book/src/cpp-broker/.gitignore create mode 100644 qpid/cpp/docs/book/src/cpp-broker/AMQP-Compatibility.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/AMQP-Messaging-Broker-CPP-Book.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Active-Passive-Cluster.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Cheat-Sheet-for-configuring-Exchange-Options.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Cheat-Sheet-for-configuring-Queue-Options.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/HA-Queue-Replication.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/LVQ.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Makefile create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Managing-CPP-Broker.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/QMF-Python-Console-Tutorial.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Qpid-Interoperability-Documentation.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Qpid-Management-Framework.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Running-CPP-Broker.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Security.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Using-Broker-Federation.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/Using-message-groups.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/producer-flow-control.xml create mode 100644 qpid/cpp/docs/book/src/cpp-broker/queue-state-replication.xml create mode 100644 qpid/cpp/docs/book/src/images/qpid-logo.png create mode 100644 qpid/cpp/docs/book/src/old/ACL.xml create mode 100644 qpid/cpp/docs/book/src/old/AMQP-.NET-Messaging-Client.xml create mode 100644 qpid/cpp/docs/book/src/old/AMQP-C++-Messaging-Client.xml create mode 100644 qpid/cpp/docs/book/src/old/AMQP-Java-JMS-Messaging-Client.xml create mode 100644 qpid/cpp/docs/book/src/old/AMQP-Messaging-Broker-CPP.xml create mode 100644 qpid/cpp/docs/book/src/old/AMQP-Python-Messaging-Client.xml create mode 100644 qpid/cpp/docs/book/src/old/AMQP-Ruby-Messaging-Client.xml create mode 100644 qpid/cpp/docs/book/src/old/AMQP.xml create mode 100644 qpid/cpp/docs/book/src/old/Binding-URL-Format.xml create mode 100644 qpid/cpp/docs/book/src/old/Book-Info.xml create mode 100644 qpid/cpp/docs/book/src/old/Book.xml create mode 100644 qpid/cpp/docs/book/src/old/Broker-CPP.xml create mode 100644 qpid/cpp/docs/book/src/old/Broker-Java.xml create mode 100644 qpid/cpp/docs/book/src/old/Clients.xml create mode 100644 qpid/cpp/docs/book/src/old/Connection-URL-Format.xml create mode 100644 qpid/cpp/docs/book/src/old/Download.xml create mode 100644 qpid/cpp/docs/book/src/old/Excel-AddIn.xml create mode 100644 qpid/cpp/docs/book/src/old/FAQ.xml create mode 100644 qpid/cpp/docs/book/src/old/Getting-Started.xml create mode 100644 qpid/cpp/docs/book/src/old/How-to-Use-JNDI.xml create mode 100644 qpid/cpp/docs/book/src/old/InfoPlugin.xml create mode 100644 qpid/cpp/docs/book/src/old/Introduction.xml create mode 100644 qpid/cpp/docs/book/src/old/Java-Broker-StatusLogMessages.xml create mode 100644 qpid/cpp/docs/book/src/old/Java-JMS-Selector-Syntax.xml create mode 100644 qpid/cpp/docs/book/src/old/Management-Design-notes.xml create mode 100644 qpid/cpp/docs/book/src/old/NET-User-Guide.xml create mode 100644 qpid/cpp/docs/book/src/old/PythonBrokerTest.xml create mode 100644 qpid/cpp/docs/book/src/old/QMan-Qpid-Management-bridge.xml create mode 100644 qpid/cpp/docs/book/src/old/Qpid-ACLs.xml create mode 100644 qpid/cpp/docs/book/src/old/Qpid-Book.xml create mode 100644 qpid/cpp/docs/book/src/old/Qpid-Compatibility-And-Interoperability-Book.xml create mode 100644 qpid/cpp/docs/book/src/old/SASL-Compatibility.xml create mode 100644 qpid/cpp/docs/book/src/old/SSL.xml create mode 100644 qpid/cpp/docs/book/src/old/Security-Plugins.xml create mode 100644 qpid/cpp/docs/book/src/old/System-Properties.xml create mode 100644 qpid/cpp/docs/book/src/old/Using-Qpid-with-other-JNDI-Providers.xml create mode 100644 qpid/cpp/docs/book/src/old/WCF.xml create mode 100644 qpid/cpp/docs/book/src/old/schemas.xml create mode 100644 qpid/cpp/docs/book/src/programming/Makefile create mode 100644 qpid/cpp/docs/book/src/programming/Message-Groups-Guide.xml create mode 100644 qpid/cpp/docs/book/src/programming/Programming-In-Apache-Qpid.xml create mode 100644 qpid/cpp/docs/book/src/qmf/QmfBook.xml create mode 100644 qpid/cpp/docs/book/src/qmf/QmfIntroduction.xml create mode 100644 qpid/cpp/docs/book/xsl/html-custom.xsl create mode 100644 qpid/cpp/packaging/windows/INSTALL_NOTES.html create mode 100644 qpid/cpp/packaging/windows/LICENSE.rtf create mode 100644 qpid/cpp/packaging/windows/build_installer.bat create mode 100644 qpid/cpp/packaging/windows/installer.proj create mode 100644 qpid/cpp/packaging/windows/qpid-icon.ico create mode 100644 qpid/cpp/packaging/windows/qpid-install-background.bmp create mode 100644 qpid/cpp/packaging/windows/qpid-install-banner.bmp create mode 100644 qpid/cpp/packaging/windows/qpidc.wxs delete mode 100644 qpid/doc/book/.gitignore delete mode 100644 qpid/doc/book/Makefile delete mode 100644 qpid/doc/book/src/Makefile.inc delete mode 100644 qpid/doc/book/src/common/css/style.css delete mode 100644 qpid/doc/book/src/cpp-broker/.gitignore delete mode 100644 qpid/doc/book/src/cpp-broker/AMQP-Compatibility.xml delete mode 100644 qpid/doc/book/src/cpp-broker/AMQP-Messaging-Broker-CPP-Book.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Active-Passive-Cluster.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Cheat-Sheet-for-configuring-Exchange-Options.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Cheat-Sheet-for-configuring-Queue-Options.xml delete mode 100644 qpid/doc/book/src/cpp-broker/HA-Queue-Replication.xml delete mode 100644 qpid/doc/book/src/cpp-broker/LVQ.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Makefile delete mode 100644 qpid/doc/book/src/cpp-broker/Managing-CPP-Broker.xml delete mode 100644 qpid/doc/book/src/cpp-broker/QMF-Python-Console-Tutorial.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Qpid-Interoperability-Documentation.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Qpid-Management-Framework.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Running-CPP-Broker.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Security.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Using-Broker-Federation.xml delete mode 100644 qpid/doc/book/src/cpp-broker/Using-message-groups.xml delete mode 100644 qpid/doc/book/src/cpp-broker/producer-flow-control.xml delete mode 100644 qpid/doc/book/src/cpp-broker/queue-state-replication.xml delete mode 100644 qpid/doc/book/src/images/qpid-logo.png delete mode 100644 qpid/doc/book/src/old/ACL.xml delete mode 100644 qpid/doc/book/src/old/AMQP-.NET-Messaging-Client.xml delete mode 100644 qpid/doc/book/src/old/AMQP-C++-Messaging-Client.xml delete mode 100644 qpid/doc/book/src/old/AMQP-Java-JMS-Messaging-Client.xml delete mode 100644 qpid/doc/book/src/old/AMQP-Messaging-Broker-CPP.xml delete mode 100644 qpid/doc/book/src/old/AMQP-Python-Messaging-Client.xml delete mode 100644 qpid/doc/book/src/old/AMQP-Ruby-Messaging-Client.xml delete mode 100644 qpid/doc/book/src/old/AMQP.xml delete mode 100644 qpid/doc/book/src/old/Binding-URL-Format.xml delete mode 100644 qpid/doc/book/src/old/Book-Info.xml delete mode 100644 qpid/doc/book/src/old/Book.xml delete mode 100644 qpid/doc/book/src/old/Broker-CPP.xml delete mode 100644 qpid/doc/book/src/old/Broker-Java.xml delete mode 100644 qpid/doc/book/src/old/Clients.xml delete mode 100644 qpid/doc/book/src/old/Connection-URL-Format.xml delete mode 100644 qpid/doc/book/src/old/Download.xml delete mode 100644 qpid/doc/book/src/old/Excel-AddIn.xml delete mode 100644 qpid/doc/book/src/old/FAQ.xml delete mode 100644 qpid/doc/book/src/old/Getting-Started.xml delete mode 100644 qpid/doc/book/src/old/How-to-Use-JNDI.xml delete mode 100644 qpid/doc/book/src/old/InfoPlugin.xml delete mode 100644 qpid/doc/book/src/old/Introduction.xml delete mode 100644 qpid/doc/book/src/old/Java-Broker-StatusLogMessages.xml delete mode 100644 qpid/doc/book/src/old/Java-JMS-Selector-Syntax.xml delete mode 100644 qpid/doc/book/src/old/Management-Design-notes.xml delete mode 100644 qpid/doc/book/src/old/NET-User-Guide.xml delete mode 100644 qpid/doc/book/src/old/PythonBrokerTest.xml delete mode 100644 qpid/doc/book/src/old/QMan-Qpid-Management-bridge.xml delete mode 100644 qpid/doc/book/src/old/Qpid-ACLs.xml delete mode 100644 qpid/doc/book/src/old/Qpid-Book.xml delete mode 100644 qpid/doc/book/src/old/Qpid-Compatibility-And-Interoperability-Book.xml delete mode 100644 qpid/doc/book/src/old/SASL-Compatibility.xml delete mode 100644 qpid/doc/book/src/old/SSL.xml delete mode 100644 qpid/doc/book/src/old/Security-Plugins.xml delete mode 100644 qpid/doc/book/src/old/System-Properties.xml delete mode 100644 qpid/doc/book/src/old/Using-Qpid-with-other-JNDI-Providers.xml delete mode 100644 qpid/doc/book/src/old/WCF.xml delete mode 100644 qpid/doc/book/src/old/schemas.xml delete mode 100644 qpid/doc/book/src/programming/Makefile delete mode 100644 qpid/doc/book/src/programming/Message-Groups-Guide.xml delete mode 100644 qpid/doc/book/src/programming/Programming-In-Apache-Qpid.xml delete mode 100644 qpid/doc/book/src/qmf/QmfBook.xml delete mode 100644 qpid/doc/book/src/qmf/QmfIntroduction.xml delete mode 100644 qpid/doc/book/xsl/html-custom.xsl delete mode 100644 qpid/doc/dev-readme/QPID-Component-README.odg delete mode 100644 qpid/doc/dev-readme/QPID-Component-README.pdf delete mode 100644 qpid/doc/dev-readme/README.txt delete mode 100644 qpid/doc/website/README.txt delete mode 100644 qpid/etc/LICENSE delete mode 100644 qpid/etc/NOTICE delete mode 100644 qpid/etc/svn-auto-props delete mode 100644 qpid/extras/dispatch/README delete mode 100644 qpid/packaging/windows/INSTALL_NOTES.html delete mode 100644 qpid/packaging/windows/LICENSE.rtf delete mode 100644 qpid/packaging/windows/build_installer.bat delete mode 100644 qpid/packaging/windows/installer.proj delete mode 100644 qpid/packaging/windows/qpid-icon.ico delete mode 100644 qpid/packaging/windows/qpid-install-background.bmp delete mode 100644 qpid/packaging/windows/qpid-install-banner.bmp delete mode 100644 qpid/packaging/windows/qpidc.wxs delete mode 100644 qpid/review/LICENSE delete mode 100644 qpid/review/NOTICE delete mode 100755 qpid/review/agenda.py delete mode 100755 qpid/review/changeLogToWiki.py delete mode 100644 qpid/review/jiraRSS2wiki.xsl delete mode 100644 qpid/review/svnlog2wiki.xsl delete mode 100644 qpid/sandbox/models/fedsim/__init__.py delete mode 100644 qpid/sandbox/models/fedsim/fedsim.py delete mode 100644 qpid/sandbox/models/fedsim/testBig.py delete mode 100644 qpid/sandbox/models/fedsim/testRing.py delete mode 100644 qpid/sandbox/models/fedsim/testStar.py delete mode 100644 qpid/sandbox/models/fedsim/testStarAdd.py delete mode 100644 qpid/wcf/LICENSE.txt delete mode 100644 qpid/wcf/NOTICE.txt delete mode 100644 qpid/wcf/QpidWcf.sln delete mode 100644 qpid/wcf/ReadMe.txt delete mode 100644 qpid/wcf/samples/Channel/AppConfig/ConfigDemo.cs delete mode 100644 qpid/wcf/samples/Channel/AppConfig/ConfigDemo.csproj delete mode 100644 qpid/wcf/samples/Channel/HelloWorld/HelloWorld.cs delete mode 100644 qpid/wcf/samples/Channel/HelloWorld/HelloWorld.csproj delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFDirect/Client/Client.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFDirect/Client/Client.csproj delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFDirect/Client/Properties/AssemblyInfo.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFDirect/Service/Properties/AssemblyInfo.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFDirect/Service/Service.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFDirect/Service/Service.csproj delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFDirect/WCFToWCFDirect.sln delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Another_Topic_Consumer/Another_Topic_Consumer.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Another_Topic_Consumer/Another_Topic_Consumer.csproj delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Another_Topic_Consumer/Properties/AssemblyInfo.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Topic_Consumer/Properties/AssemblyInfo.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Topic_Consumer/Topic_Consumer.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Topic_Consumer/Topic_Consumer.csproj delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Topic_Producer/Properties/AssemblyInfo.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Topic_Producer/Topic_Producer.cs delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/Topic_Producer/Topic_Producer.csproj delete mode 100644 qpid/wcf/samples/Channel/WCFToWCFPubSub/WCFToWCFPubSub.sln delete mode 100644 qpid/wcf/samples/Integration/Drain/Drain.cs delete mode 100644 qpid/wcf/samples/Integration/Drain/Drain.csproj delete mode 100644 qpid/wcf/samples/Integration/Integration.sln delete mode 100644 qpid/wcf/samples/Integration/Spout/Spout.cs delete mode 100644 qpid/wcf/samples/Integration/Spout/Spout.csproj delete mode 100644 qpid/wcf/samples/Integration/Util/Options.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpBoolean.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpInt.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpProperties.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpString.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpType.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpTypes.csproj delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/AmqpUbyte.cs delete mode 100755 qpid/wcf/src/Apache/Qpid/AmqpTypes/CreateNetModule.bat delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/Properties/AssemblyInfo.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/AmqpTypes/PropertyName.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpBinaryBinding.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpBinaryBindingCollectionElement.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpBinaryBindingConfigurationElement.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpBinding.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpBindingCollectionElement.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpBindingConfigurationElement.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpChannelFactory.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpChannelHelpers.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpChannelListener.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpCredential.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpCredentialType.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpSecurity.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpSecurityElement.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpSecurityMode.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpTransportBindingElement.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpTransportChannel.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/AmqpTransportSecurity.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/Channel.csproj delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/ConnectionManager.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/Properties/AssemblyInfo.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/RawMessage.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/RawMessageEncoder.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/RawMessageEncoderFactory.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/RawMessageEncodingBindingElement.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/RawXmlReader.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/Channel/RawXmlWriter.cs delete mode 100644 qpid/wcf/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/AmqpConnection.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/AmqpConnection.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/AmqpMessage.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/AmqpMessage.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/AmqpSession.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/AmqpSession.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/AssemblyInfo.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/CompletionWaiter.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/CompletionWaiter.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/DtxResourceManager.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/DtxResourceManager.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/InputLink.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/InputLink.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/Interop.vcproj delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/MessageBodyStream.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/MessageBodyStream.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/MessageWaiter.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/MessageWaiter.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/OutputLink.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/OutputLink.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/QpidAddress.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/QpidAddress.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/QpidException.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/QpidMarshal.h delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/XaTransaction.cpp delete mode 100644 qpid/wcf/src/Apache/Qpid/Interop/XaTransaction.h delete mode 100644 qpid/wcf/src/wcfnet.snk delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/AsyncTest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/BasicTransactionTest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/ChannelAbortCommitTest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/ChannelContextParameters.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/ChannelEntity.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/ChannelReceiver.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/ChannelSender.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/CustomAmqpBindingTest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/FunctionalTests.csproj delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/IGenericObjectService.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/IInteropService.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/IQueuedDatagramService1.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/IQueuedDatagramService2.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/IQueuedDatagramService3.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/IQueuedServiceUsingTSRAttribute.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/IQueuedServiceUsingTransactionScope.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/MessageBodyTest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/MessageClient.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/MessageProperties.txt delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/MessagePropertiesTest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/MessageService.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/MultipleEndpointsSameQueueTest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/Properties/AssemblyInfo.cs delete mode 100755 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/RunTests.bat delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/Functional/Util.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/WcfPerftest/RawBodyUtility.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/WcfPerftest/WcfPerftest.cs delete mode 100644 qpid/wcf/test/Apache/Qpid/Test/Channel/WcfPerftest/WcfPerftest.csproj delete mode 100644 qpid/wcf/tools/QCreate/QCreate.cpp delete mode 100644 qpid/wcf/tools/QCreate/QCreate.sln delete mode 100644 qpid/wcf/tools/QCreate/QCreate.vcproj delete mode 100644 qpid/wcf/tools/QCreate/ReadMe.txt delete mode 100644 qpid/wcf/tools/QCreate/stdafx.cpp delete mode 100644 qpid/wcf/tools/QCreate/stdafx.h delete mode 100644 qpid/wcf/tools/QCreate/targetver.h diff --git a/qpid/LICENSE b/qpid/LICENSE deleted file mode 100644 index 2cbe987a10..0000000000 --- a/qpid/LICENSE +++ /dev/null @@ -1,8 +0,0 @@ -Please see the individual LICENSE[.txt] files in each main directory, e.g: - -cpp/LICENSE -java/LICENSE -python/LICENSE.txt -tools/LICENSE.txt -tools/src/java/LICENSE -wcf/LICENSE.txt diff --git a/qpid/NOTICE b/qpid/NOTICE deleted file mode 100644 index 39a002e222..0000000000 --- a/qpid/NOTICE +++ /dev/null @@ -1,8 +0,0 @@ -Please see the individual NOTICE[.txt] files in each main directory, e.g: - -cpp/NOTICE -java/NOTICE -python/NOTICE.txt -tools/NOTICE.txt -tools/src/java/NOTICE -wcf/NOTICE.txt diff --git a/qpid/QPID_VERSION.txt b/qpid/QPID_VERSION.txt deleted file mode 100644 index c74e8a041a..0000000000 --- a/qpid/QPID_VERSION.txt +++ /dev/null @@ -1 +0,0 @@ -0.35 diff --git a/qpid/README.txt b/qpid/README.txt deleted file mode 100644 index ccd92c757b..0000000000 --- a/qpid/README.txt +++ /dev/null @@ -1,57 +0,0 @@ -Apache Qpid is a high-speed, language independent, platform -independent enterprise messaging system. It currently provides two -messaging brokers (one implemented in C++, one implemented in Java), -and messaging client libraries for Java JMS, C++, C# .NET, Python, -Ruby, and WCF. The messaging protocol for Apache Qpid is AMQP -(Advanced Message Queuing Protocol). You can read more about Qpid -here: - - http://qpid.apache.org/ - -Documentation can be found here: - - http://qpid.apache.org/documentation.html - -Qpid includes many components, which are built in various ways. Each -component has a README.txt. Here are the subdirectories that contain -the basic components: - -Messaging Broker (implemented in C++): - - ./cpp - -Messaging Broker (implemented in Java): - - ./java - -C++ Messaging Client Libraries - - ./cpp - -Java JMS Client Libraries - - ./java/client - -Python Client Libraries - - ./python - -WCF Support - - ./wcf - -Management Tools (implemented in Python): - - ./tools - -Management Tools (implemented in Java): - - ./java/management - -Documentation: - - ./doc - - -Further information about the organization of Qpid source components may -be found in ./doc/dev-readme/QPID-Component-README.pdf. diff --git a/qpid/bin/LICENSE b/qpid/bin/LICENSE deleted file mode 100644 index bc46b77047..0000000000 --- a/qpid/bin/LICENSE +++ /dev/null @@ -1,206 +0,0 @@ -========================================================================= -== Apache License == -========================================================================= - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/qpid/bin/NOTICE b/qpid/bin/NOTICE deleted file mode 100644 index 05f39ba176..0000000000 --- a/qpid/bin/NOTICE +++ /dev/null @@ -1,8 +0,0 @@ -// ------------------------------------------------------------------ -// NOTICE file corresponding to the section 4d of The Apache License, -// Version 2.0, in this case for Qpid bin scripts -// ------------------------------------------------------------------ - -Apache Qpid -Copyright 2006-2008 Apache Software Foundation - diff --git a/qpid/bin/install-cpp-python b/qpid/bin/install-cpp-python deleted file mode 100755 index d43e8e4899..0000000000 --- a/qpid/bin/install-cpp-python +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - - -# -# Install C++ build and python tools to the standard places in a Unix buld -# WARNING: Will destroy any existing installation! -# - -# NOTE: build must be configured like this: -# ../qpid/cpp/configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 -# NOTE: Must run as root. - -usage() { - cat < --p : Prefix to install python --s : Skip C++ installation -EOF - - exit 1 -} - -fail() { echo $*; exit 1; } - -while getopts "ps" opt; do - case $opt in - p) PY_PREFIX="--prefix $OPTARG";; - s) SKIP_CPP=1;; - *) usage;; - esac -done -shift `expr $OPTIND - 1` -BUILD=$1 -SRC=$(dirname $0)/.. - -# Install python -cd $SRC || fail "No such directory: $SRC" -for d in python tools extras/qmf; do - ( - cd $d || fail "No such directory: $(pwd)/$d" - ./setup.py install || fail Python install failed in $(pwd) - ) -done - -if test $SKIP_CPP; then exit; fi - -test -n "$BUILD" || { echo "No build directory."; usage; } -test -d "$BUILD" || fail "No such directory: $BUILD" -SRC=$(dirname $BUILD) - - # Install C++ -cd $BUILD -make -j1 install || fail "C++ install failed in $BUILD" - -# NOTE: setup.py does not uninstall, but you can get a list of files installed with: -# setup.py install --record - - diff --git a/qpid/bin/mvn-deploy-qpid-java.sh b/qpid/bin/mvn-deploy-qpid-java.sh deleted file mode 100755 index 3c2a9fd05f..0000000000 --- a/qpid/bin/mvn-deploy-qpid-java.sh +++ /dev/null @@ -1,71 +0,0 @@ -# -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -# - -#!/bin/sh - -qpid_version=$1 -repo=$2 - -if [ -z "$qpid_version" -o -z "$repo" ]; then - echo "Usage: mvn-deploy-qpid-java.sh " - exit 1 -fi - -set -xe - - -build_dir=build/lib - -deploy_artifact() { - mvn deploy:deploy-file -DuniqueVersion=false -Durl=$repo -Dfile=${build_dir}/$1-${qpid_version}.jar -DgroupId=org.apache.qpid -DartifactId=$1 -Dversion=${qpid_version} -Dpackaging=jar -} - -deploy_artifact_with_classifier() { - mvn deploy:deploy-file -DuniqueVersion=false -Durl=$repo -Dfile=${build_dir}/$1-$2-${qpid_version}.jar -DgroupId=org.apache.qpid -DartifactId=$1 -Dclassifier=$2 -Dversion=${qpid_version} -Dpackaging=jar -} - -deploy_artifact qpid-broker -deploy_artifact_with_classifier qpid-broker-plugins tests -deploy_artifact_with_classifier qpid-broker tests -deploy_artifact qpid-client-example -deploy_artifact_with_classifier qpid-client-example tests -deploy_artifact qpid-client -deploy_artifact_with_classifier qpid-client tests -deploy_artifact qpid-common -deploy_artifact_with_classifier qpid-common tests -deploy_artifact qpid-integrationtests -deploy_artifact_with_classifier qpid-integrationtests tests -deploy_artifact qpid-junit-toolkit -deploy_artifact_with_classifier qpid-junit-toolkit tests -deploy_artifact qpid-management-eclipse-plugin -deploy_artifact_with_classifier qpid-management-eclipse-plugin tests -deploy_artifact qpid-perftests -deploy_artifact_with_classifier qpid-perftests tests -deploy_artifact qpid-systests -deploy_artifact_with_classifier qpid-systests tests -deploy_artifact qpid-testkit -deploy_artifact_with_classifier qpid-testkit tests -deploy_artifact qpid-tools -deploy_artifact_with_classifier qpid-tools tests - -build_dir=build/lib/plugins - -deploy_artifact qpid-broker-plugins diff --git a/qpid/bin/set_svn_properties.sh b/qpid/bin/set_svn_properties.sh deleted file mode 100755 index cc29490eea..0000000000 --- a/qpid/bin/set_svn_properties.sh +++ /dev/null @@ -1,133 +0,0 @@ -# -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -# This script will set the proper svn properties on all the files in the tree. -# It pretty much requires a gnu compatible xargs (for the -r flag). Running -# on Linux is probably the best option, or gnuxargs is available for OS X from -# darwinports. - - -find . -name "*.java" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.java" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.py" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native - -find . -name "*.rb" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native - -find . -name "*.xml" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml -find . -name "*.xml" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.xml" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.xsl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml -find . -name "*.xsl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.xsl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.xsd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml -find . -name "*.xsd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.xsd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.wsdl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml -find . -name "*.wsdl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.wsdl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.properties" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain -find . -name "*.properties" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.properties" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.txt" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.txt" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "*.htm*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.htm*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/html -find . -name "*.htm*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "README*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "README*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "LICENSE*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "LICENSE*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "NOTICE*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "NOTICE*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "TODO*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "TODO*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "KEYS*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "KEYS*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "*.png" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type image/png -find . -name "*.gif" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type image/gif -find . -name "*.jpg" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type image/jpeg -find . -name "*.jpeg" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type image/jpeg - - -find . -name "*.scdl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.scdl" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml - -find . -name "*.fragment" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.fragment" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml - -find . -name "*.componentType" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.componentType" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml - -find . -name "*.wsdd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml -find . -name "*.wsdd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native - -find . -name "sca.subsystem" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml -find . -name "sca.subsystem" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "Tuscany-model.config" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/xml -find . -name "Tuscany-model.config" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native - - - -find . -name "*.cpp" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.cpp" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.c" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.c" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.h" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.h" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "*.am" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.am" | grep -v ".svn" | xargs -n 1 -r svn propset svn:keywords "Rev Date" - -find . -name "ChangeLog*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "ChangeLog*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "*.sh" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.sh" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain -find . -name "*.sh" | grep -v ".svn" | xargs -n 1 -r svn propset svn:executable "" - -find . -name "*.bat" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style CRLF -find . -name "*.bat" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - -find . -name "*.cmd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "*.cmd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain -find . -name "*.cmd" | grep -v ".svn" | xargs -n 1 -r svn propset svn:executable "" - -find . -name "INSTALL*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "INSTALL*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain -find . -name "COPYING*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "COPYING*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain -find . -name "NEWS*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:eol-style native -find . -name "NEWS*" | grep -v ".svn" | xargs -n 1 -r svn propset svn:mime-type text/plain - diff --git a/qpid/buildtools/LICENSE b/qpid/buildtools/LICENSE deleted file mode 100644 index bc46b77047..0000000000 --- a/qpid/buildtools/LICENSE +++ /dev/null @@ -1,206 +0,0 @@ -========================================================================= -== Apache License == -========================================================================= - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/qpid/buildtools/NOTICE b/qpid/buildtools/NOTICE deleted file mode 100644 index 5813a7a09a..0000000000 --- a/qpid/buildtools/NOTICE +++ /dev/null @@ -1,8 +0,0 @@ -// ------------------------------------------------------------------ -// NOTICE file corresponding to the section 4d of The Apache License, -// Version 2.0, in this case for Qpid buildTools -// ------------------------------------------------------------------ - -Apache Qpid -Copyright 2006-2008 Apache Software Foundation - diff --git a/qpid/buildtools/buildCreator/build.config b/qpid/buildtools/buildCreator/build.config deleted file mode 100644 index cb45e99a6e..0000000000 --- a/qpid/buildtools/buildCreator/build.config +++ /dev/null @@ -1,37 +0,0 @@ - - - - M4.0-beta - - - - - qpid - svn - https://svn.eu.apache.org/repos/asf/incubator/qpid/trunk/qpid/ - - - - - qpid.build - - diff --git a/qpid/buildtools/buildCreator/buildCreator.py b/qpid/buildtools/buildCreator/buildCreator.py deleted file mode 100755 index 0a26ce09b0..0000000000 --- a/qpid/buildtools/buildCreator/buildCreator.py +++ /dev/null @@ -1,1472 +0,0 @@ -#!/usr/bin/env python -# -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -import os -import re -import datetime -import urllib -import sys -import string - -from xml.dom import minidom -from optparse import OptionParser - -if map(int, string.split(string.split(sys.version)[0], ".")) < [2, 4, 0]: - print ("subprocess is required for this tool and is not present in versions prior to 2.4.0") - try: - import subprocess - except ImportError: - print ("subprocess module not found please install it locally or upgrade your python version") - sys.exit(1) - -import subprocess -from subprocess import Popen - -TOOL_NAME="buildCreator.py" - -#Default Build script -DEFAULT_BUILD="build.config" - -# Path locations -DEFAULT_ROOTDIR="builder" -SOURCE_DIR="src" -PATCH_DIR="patch" -BUILD_DIR="build" -RELEASE_DIR="release" - -# Command Binaries -SVN='svn' -SVN_BIN='svn' -HTTP='http' -FTP='ftp' -WGET_BIN='wget' -FILE='file' -CP_BIN='cp' -PATCH_BIN='patch' -FILE_BIN='file' -LS_BIN='ls' -TAR_BIN='tar' -BZIP2_BIN='bzip2' -UNZIP_BIN='unzip' -ECHO_BIN='echo' -SVNVERSION_BIN='svnversion' - - - -GZIP_DATA='gzip compressed data' -BZIP2_DATA='bzip2 compressed data' -ZIP_DATA='Zip archive data' -TAR_DATA='POSIX tar archive' -DIFF_FILE="'diff' output text" - -#Build Targets -DISTCLEAN='distclean' -CLEAN='clean' -RETRIEVE='retrieve' -PREPARE='prepare' -PATCH='patch' -SHOWBUILDS='showbuilds' -BUILD='build' -RELEASE='release' -FULL='full' -HELP='help' -DEFAULT_TARGET=FULL - -# XML Elements toplevel -BUILDER="builder" -ENVIRONMENT="environment" -SOURCES="sources" -SOURCE="source" -PATCHES="patches" -PATCH="patch" -BUILDS="builds" -INCLUDE="include" -DEPENDENCY='dependency' -TARGETS='targets' -SCRIPT='script' - -# XML Elements - Source/Patch elements -NAME="name" -TYPE="type" -URL="url" -REVISION="revision" -ROOTDIR="root" -VERSION="version" -PREFIX='prefix' -PATH='path' - -PATH_SEP=os.sep - -_source=None -_target=DEFAULT_BUILD -_log = True -_verbose = False -_debug = False -_ignoreErrors = False - -_charIndex = 0 -_waitingChars = ['-', '/' , '|', '\\'] - -def showUsage(): - print TOOL_NAME+" [-c|--configure ] [-v| --verbose] [-q|--quiet] [-i|--ignore-errors] [] [options]" - print "Available Targets:" - print " distclean [source] - Remove all or specified retrieved source" - print " clean [source] - Remove all or specified source build directory" - print " retrieve [source] - Retrieve all or specified source" - print " prepare [source] - Prepare all or specified source : i.e. extract archives" - print " patch [source] - Patch all or specified source" - print " showbuilds - List all builds" - print " build [build] - Perform the build scripts for all or specified build" - print " release [build] - Perform the release scripts for all or specified source" - print " full - Perfrom clean, retrieve, prepare, patch, build, release for all builds (DEFAULT)" - -def main(): - global _log, _verbose, _debug, _rootDir, _target, _source, _baseConfiguration, _ignoreErrors - - # Load the - parser = OptionParser() - parser.add_option("-c", "--config", dest="config", - action="store", default=DEFAULT_BUILD, - help="set configuration file : default = " + DEFAULT_BUILD) - - parser.add_option("-v", "--verbose", dest="verbose", - action="store_true", default=False, help="enable verbose output") - - parser.add_option("-d", "--debug", dest="debug", - action="store_true", default=False, help="enable debug output") - - parser.add_option("-q", "--quiet", dest="quiet", - action="store_false", default=True, help="Enable quiet ouptut") - - parser.add_option("-i", "--ignore-errors", dest="ignoreErrors", - action="store_true", default=False, help="Ignore errors") - - - (options, args) = parser.parse_args() - - _verbose = options.verbose - _debug = options.debug - _log = options.quiet - _ignoreErrors = options.ignoreErrors - - log("Logging Enabled") - verbose("Verbose Output Enabled") - debug("Debug Enabled") - - if (len(args) > 2): - showUsage() - sys.exit(1) - else: - # NOTE : Would be good to be able to do builder.py clean build release - if (len(args) > 0 ): - # Override the default target - _target = checkTarget(args[0]) - # limit the comand to just the specified source - if (len(args) > 1 ): - _source = args[1] - else: - _source = None - else: - _target = FULL - - - _baseConfiguration = loadBaseConfiguration(options.config) - - debug ("Loading Environment") - prepareEnvironment(_baseConfiguration.getElementsByTagName(ENVIRONMENT)[0]) - - if _target == DISTCLEAN: - distclean() - - if _target == CLEAN or _target == FULL: - clean() - - if _target == RETRIEVE or _target == FULL: - try: - retrieve() - except KeyboardInterrupt: - log ("User Interrupted preparation") - sys.exit(0) - - if _target == PREPARE or _target == FULL: - prepare() - - if _target == PATCH or _target == FULL: - patch() - - if _target == SHOWBUILDS: - showBuilds() - - if _target == BUILD or _target == FULL: - build() - - if _target == RELEASE or _target == FULL: - release() - - log("Complete") - -def checkTarget(target): - - if target == HELP: - showUsage() - sys.exit(0) - - if target == DISTCLEAN: - return DISTCLEAN - - if target == CLEAN: - return CLEAN - - if target == RETRIEVE: - return RETRIEVE - - if target == PREPARE: - return PREPARE - - if target == PATCH: - return PATCH - - if target == SHOWBUILDS: - return SHOWBUILDS - - if target == BUILD: - return BUILD - - if target == RELEASE: - return RELEASE - - if target == FULL: - return FULL - - warn("Target: '"+target+"' not valid") - showUsage() - sys.exit(1) - - -################################################################################ -# -# Environment -# -################################################################################ -def prepareEnvironment(env): - global _rootDir - - rootdir = env.getElementsByTagName(ROOTDIR) - if (rootdir.length > 0): - _rootDir = getValue(rootdir[0]) - else: - verbose ("Using default build dir: "+DEFAULT_ROOTDIR) - _rootDir = os.getcwd() + PATH_SEP + DEFAULT_ROOTDIR - - if _rootDir == "": - verbose (ROOTDIR+" value is empty. Please specify a value for "+ ROOTDIR) - attemptExit(0) - - if (os.path.exists(_rootDir)): - verbose ("Using Existing root dir: "+_rootDir) - else: - mkdir(_rootDir) - -################################################################################ -# -# Clean Methods -# -################################################################################ -def clean(): - global _source - sources = getSourceList() - - if len(sources) > 0: - log ("Removing built code...") - performed = False - for source in sources: - if _source != None: - if getName(source) == _source: - performed = True - removeDir(source, BUILD_DIR) - else: - removeDir(source, BUILD_DIR) - - if _source == None: - deleteDir(_rootDir + PATH_SEP + BUILD_DIR) - - builds = getBuildList() - if len(builds) > 0: - log ("Removing built releases...") - for build in builds: - if _source != None: - if getName(build) == _source: - performed = True - removeDir(build, RELEASE_DIR) - else: - removeDir(build, RELEASE_DIR) - if _source == None: - deleteDir(_rootDir + PATH_SEP + RELEASE_DIR) - - if _source != None: - if not performed: - fatal("No such source:" + _source); - - - -def distclean(): - sources = getSourceList() - - if len(sources) > 0: - log ("Removing source...") - for source in sources: - if _source != None: - if getName(source) == _source: - performed = True - removeDir(source, SOURCE_DIR) - else: - removeDir(source, SOURCE_DIR) - - if _source == None: - deleteDir(_rootDir + PATH_SEP + SOURCE_DIR) - - log ("Removing built code...") - for source in sources: - if _source != None: - if getName(source) == _source: - performed = True - removeDir(source, BUILD_DIR) - else: - removeDir(source, BUILD_DIR) - if _source == None: - deleteDir(_rootDir + PATH_SEP + BUILD_DIR) - - patches =getPatchList() - if len(patches) > 0: - log ("Removing patches...") - for patch in patches: - if _source != None: - if getName(patch) == _source: - performed = True - removeDir(patch, PATCH_DIR) - else: - removeDir(patch, PATCH_DIR) - if _source == None: - deleteDir(_rootDir + PATH_SEP + PATCH_DIR) - - - builds = getBuildList() - if len(builds) > 0: - log ("Removing built releases...") - for build in builds: - if _source != None: - if getName(build) == _source: - performed = True - removeDir(build, RELEASE_DIR) - else: - removeDir(build, RELEASE_DIR) - if _source == None: - deleteDir(_rootDir + PATH_SEP + RELEASE_DIR) - - - if _source == None: - deleteDir(_rootDir) - - if _source != None: - if not performed: - fatal("No such source:" + _source); - - - -def removeDir(source, rootdir): - name = getName(source) - deleteDir(_rootDir + PATH_SEP + rootdir + PATH_SEP + name) - -################################################################################ -# -# Retrieve Methods -# -################################################################################ -def retrieve(): - global _source - sources = getSourceList() - - # Retreive Source - performed=False - if len(sources) > 0: - log ("Retrieving source...") - - mkdir(_rootDir + PATH_SEP + SOURCE_DIR) - - for source in sources: - if _source != None: - if getName(source) == _source: - performed = True - downloadSource(source, SOURCE_DIR) - else: - downloadSource(source, SOURCE_DIR) - - # Retreive Patches - patches = getPatchList() - if len(patches) > 0: - - log ("Retrieving patches...") - - mkdir(_rootDir + PATH_SEP + PATCH_DIR) - - for patch in patches: - if _source != None: - if getName(patch) == _source: - performed = True - downloadSource(patch, PATCH_DIR) - else: - downloadSource(patch, PATCH_DIR) - - if _source != None: - if not performed: - fatal("No such patch:" + _source); - - -################################################################################ -# -# Prepare Methods -# -################################################################################ - -def prepare(): - verbose("Prepare") - - mkdir(_rootDir + PATH_SEP + BUILD_DIR) - - sources = getSourceList() - performed = False - if len(sources) > 0: - log ("Preparing source...") - for source in sources: - if _source != None: - if getName(source) == _source: - log_no_newline("Preparing "+getName(source)+": ") - performed = True - postProcess(source, SOURCE_DIR) - else: - log_no_newline("Preparing "+getName(source)+": ") - postProcess(source, SOURCE_DIR) - if _source != None: - if not performed: - fatal("No such source:" + _source); - - patches = getPatchList() - if len(patches) > 0: - log ("Preparing patches...") - for patch in patches: - if _source != None: - if getName(patch) == _source: - performed = True - log("Preparing "+getName(patch)) - postProcess(patch, PATCH_DIR) - else: - log("Preparing "+getName(patch)) - postProcess(patch, PATCH_DIR) - - if _source != None: - if not performed: - fatal("No such patch:" + _source); - - -def postProcess(item, destination): - name = getName(item) - type = getType(item) - - verbose("Post Processing:"+name) - - targetdir = _rootDir + PATH_SEP + destination + PATH_SEP + name - - builddir = _rootDir + PATH_SEP + BUILD_DIR + PATH_SEP + name - - - if type == SVN: - # Do we want to perform an export? - - #extractcommand=SVN_BIN+" export "+ targetdir +" "+ builddir - # Use -v just now so we can show progress - extractcommand=CP_BIN+" -rvf "+ targetdir +" "+ builddir - - runCommand(extractcommand, False) - - else: - if type == FILE or type == HTTP or type == FTP: - - mkdir(builddir) - - # Look at all the files and see if they need unpacks - for root, dirs, files in os.walk(targetdir, topdown=False): - for file in files: - command = FILE_BIN+" "+root+PATH_SEP+file - - result = Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - line = result.stdout.readline() - firstline=line - while (line != "" ): - # process nextline - line=result.stdout.readline() - - result.wait() - - if result.returncode != 0: - fatal("Download (" + name + ") contained unrecognized file type:"+ firstline) - - - extractcommand="" - - if firstline.find(GZIP_DATA) != -1: - extractcommand=TAR_BIN+" -vxzf "+root+PATH_SEP+file+" -C " + builddir - - if firstline.find(BZIP2_DATA) != -1: - extractcommand=TAR_BIN+" -vxjf "+root+PATH_SEP+file+" -C " + builddir - - if firstline.find(ZIP_DATA) != -1: - extractcommand=UNZIP_BIN+" -v "+root+PATH_SEP+file+" -d "+ builddir - - if firstline.find(TAR_DATA) != -1: - extractcommand=TAR_BIN+" -vxf "+root+PATH_SEP+file+" -C "+ builddir - - if firstline.find(DIFF_FILE) != -1 or firstline.find("text"): - extractcommand=CP_BIN+" -r "+root+PATH_SEP+file+" "+ builddir - - - - if not extractcommand=="": - log_no_newline("Extracting archive:" + file+": " ) - runCommand(extractcommand, False) - else: - fatal("Download (" + name + ") contained unsupported file type:"+ firstline) - - - -################################################################################ -# -# Patch Methods -# -################################################################################ -def patch(): - - # Retreive Patches - patches= getPatchList() - if len(patches) > 0: - performed = False - for patch in patches: - if _source != None: - if getName(source) == _source: - performed = True - applyPatch(patch) - else: - applyPatch(patch) - - if _source != None: - if not performed: - fatal("No such patch:" + _source); - - -def applyPatch(patch): - global _rootDir - - name = getName(patch) - type = getType(patch) - source = getValue(patch.getElementsByTagName(SOURCE)[0]) - if (patch.getElementsByTagName(PREFIX).length > 0): - prefix = getValue(patch.getElementsByTagName(PREFIX)[0]) - else: - prefix = None - - if (patch.getElementsByTagName(PATH).length > 0): - path= getValue(patch.getElementsByTagName(PATH)[0]) - else: - path = None - - - basecommand = PATCH_BIN - - if prefix != None: - basecommand = basecommand + " -p "+prefix - - basecommand = basecommand + " -E -d "+ _rootDir + PATH_SEP + BUILD_DIR + PATH_SEP + source + PATH_SEP - - if path != None: - basecommand = basecommand + path - - basecommand = basecommand + " < " - - patchSource= _rootDir + PATH_SEP + PATCH_DIR + PATH_SEP + name - - for root, dirs, files in os.walk(patchSource): - if '.svn' in dirs: - dirs.remove('.svn') - files.sort() - for patchName in files: - log("Applying patch '" + name + "'("+patchName+") to " + source) - runCommandShowError(basecommand + patchSource + PATH_SEP + patchName) - - -################################################################################ -# -# build Methods -# -################################################################################ -def showBuilds(): - builds = getNamesfromBuildList(getBuildList()) - if len(builds) > 0: - log("Available Builds:") - for build in builds: - log(" "+build) - else: - log("No builds available") - -# -# Given a list of build elements extract the Name values and return as a list -# -def getNamesfromBuildList(list): - names=[] - for item in list: - name = getName(item) - if name != None: - names.append(name) - return names - -def build(): - doBuildAction(BUILD) - - - -################################################################################ -# -# Release Methods -# -################################################################################ -def release(): - log ("Releasing...") - mkdir(_rootDir + PATH_SEP + RELEASE_DIR) - - builds = getBuildList() - - for build in builds: - if _source != None: - if getName(build) == _source: - mkdir(_rootDir + PATH_SEP + RELEASE_DIR + PATH_SEP + getName(build)) - else: - mkdir(_rootDir + PATH_SEP + RELEASE_DIR + PATH_SEP + getName(build)) - - doBuildAction(RELEASE) - - - -################################################################################ -# -# Build Helper Methods -# -################################################################################ - -def doBuildAction(action): - config = _baseConfiguration - - if len(getSourceList()) > 0: - log("Performing "+ action.title() +"...") - - builds = getBuildList() - - performed = False - for build in builds: - if _source != None: - if getName(build) == _source: - performed = True - performScript(build , action) - else: - performScript(build, action) - - if _source != None: - if not performed: - fatal("No such build:" + _source); - - -def performScript(build, scriptName): - name = getName(build) - - checkDependencies(build) - - verbose("Running "+scriptName+":"+name) - - targets = build.getElementsByTagName(TARGETS) - - if targets.length > 0: - target = targets[0].getElementsByTagName(scriptName) - - if target.length > 1: - fatal("More than one build target specified") - - if target.length == 0: - fatal("No build target specified") - - script = getValue(target[0].getElementsByTagName(SCRIPT)[0]) - - script = peformSubstitutionsInScript(build, script) - - debug(script) - - runScript(script) - - else: - fatal("Build "+name+" has no build targets") - - -def checkDependencies(build): - name = getName(build) - dependencies = build.getElementsByTagName(DEPENDENCY) - - if dependencies > 0: - for dependency in dependencies : - sources = dependency.getElementsByTagName(SOURCE) - if sources.length == 0: - fatal("No sources specified in dependency block for build:"+name) - else: - for source in sources: - sourceDependency = getValue(source) - if not (sourceDefined(sourceDependency)): - fatal("Unable to build "+name+" as specifed dependency("+sourceDependency +") is not available") - -def sourceDefined(name): - for source in getSourceList(): - sourcename = getValue(source.getElementsByTagName(NAME)[0]) - if sourcename == name: - return True - return False - - -def runScript(script): - (returncode, stdout, stderr) = runCommandWithOutput(script) - - if _debug: - for line in stdout: - debug(line) - for line in stderr: - debug(line) - - if returncode != 0: - for line in stdout: - warn(line) - for line in stderr: - warn(line) - - warn("Script Failed") - - attemptExit(1) - - -################################################################################ -# -# XML Helper Methods -# -################################################################################ - -def loadBaseConfiguration(config): - log ("Loading configuration:" + config) - full = minidom.parse(config) - return full.getElementsByTagName(BUILDER)[0] - -# -# Assumes that we have a text element and returns the text value. -# -def getValue(node): - if node.childNodes.length > 0: - return node.childNodes[0].data - else: - return "" - -def getEnvironment(): - env = _baseConfiguration.getElementsByTagName(ENVIRONMENT) - if env.length > 0: - return env[0] - else: - return None - -# -# Returns the value of the NAME element contained in the specified item -# -def getName(item): - name = item.getElementsByTagName(NAME) - if name.length > 0: - return getValue(name[0]) - -# -# Returns the value of the TYPE element contained in the specified item -# -def getType(item): - type = item.getElementsByTagName(TYPE) - if type.length > 0: - return getValue(type[0]) - -# -# Returns the value of the URL element contained in the specified item -# -def getURL(item): - url = item.getElementsByTagName(URL) - if url.length > 0: - return getValue(url[0]) - -# -# Return the list of sources in this build configuration -# If no sources are available then this is logged as a fatal error. -# -def getSourceList(): - config = _baseConfiguration - sourceCount = config.getElementsByTagName(SOURCES).length - if sourceCount > 0: - return config.getElementsByTagName(SOURCES)[0].getElementsByTagName(SOURCE) - else: - fatal("No source elements defined.") -# -# Return the list of patches in this build configuration -# -def getPatchList(): - config = _baseConfiguration - patchCount = config.getElementsByTagName(PATCHES).length - if patchCount > 0: - return config.getElementsByTagName(PATCHES)[0].getElementsByTagName(PATCH) - else: - return [] - -# Returns a list of build elements including any any included build files -# Currently nested build elements are not supported so all builds must be specified via the tag. -# -def getBuildList(): - config = _baseConfiguration - - builds = config.getElementsByTagName(BUILDS) - buildcount = builds.length - - if buildcount > 0: - build = builds[0] - useInclude = build.getElementsByTagName(INCLUDE).length > 0 - - # If we are using includes then build a list of all the files we need to include - if useInclude: - return getIncludeList(build) - - else: - warn("Nested builds not currently supported") - else: - fatal("No Builds defined in config") - -# -# Look at all values in the given element and return the list of inlcudes -# -def getIncludeList(build): - includelist=[] - for include in build.getElementsByTagName(INCLUDE): - for item in getIncludeValue(getValue(include)): - includelist.append(item) - - return includelist - -# -# Process in the given include value. -# This is done by performing `ls ` -# This means includes such as 'builds/*.config' will match multiple includes and return all entries -# -# Any error in performing the ls is printed and the tool exits (unless ignore errors) -# -def getIncludeValue(include): - debug("Loading Includes:"+include+" ") - - command = LS_BIN+" "+include - (returncode, stdout, stderr) = runCommandWithOutput(command) - - if returncode == 0: - values=[] - for line in stdout: - include = loadIncludeFile(line) - if not include == None: - values.append(include) - return values - else: - for line in stderr: - warn(line) - attemptExit(1) - -# -# Given a file name parse the XML. Any trailing '\n's that the ls command may have added are removed here. -# The file is checked to ensure that it is a file -# The first element is returned. -# -# TODO: Allow multiple builds per file. -# -def loadIncludeFile(file): - buildFile = minidom.parse(file.rstrip('\n')) - - builds = buildFile.getElementsByTagName(BUILDS) - - if builds.length != 1: - warn("Build Configuration does not contain any <"+BUILDS+"> definitions") - else: - buildElements = builds[0].getElementsByTagName(BUILD) - if not buildElements.length > 0: - warn("Build Configuration does not contain any <"+BUILD+"> definitions") - else: - if buildElements.length > 0: - build = buildElements[0] - # getElementsByTagName is recursive so this will pick up the sub element build - # Only use the first element - namecount = build.getElementsByTagName(NAME).length - if namecount > 0: - return build - else: - return None - -# -# Given the build target and a script substitute $value entries in script for values in -# the Environment -# the Source entries -# the build -# the release location : _rootDir + PATH_SEP + RELEASE_DIR + PATH_SEP + buildName -# -def peformSubstitutionsInScript(build, script): - buildName = getName(build) - sources = getSourceList() - - #Replace Build name - script = script.replace("$build", buildName) - - #Replace release directory - releaseDir = _rootDir + PATH_SEP + RELEASE_DIR + PATH_SEP + buildName - script = script.replace("$release", releaseDir) - - # Replace Source varables - for source in sources: - sourceName = getName(source) - - search = "$"+sourceName - - sourcePath = source.getElementsByTagName(PATH) - - replacement = _rootDir + PATH_SEP + BUILD_DIR + PATH_SEP + sourceName - if sourcePath.length > 0: - replacement = replacement + PATH_SEP + getValue(sourcePath[0]) - - script = script.replace(search,replacement) - - # Take values from the environment script for replacement - env = getEnvironment() - if env != None: - for item in env.childNodes: - if item.nodeType == 1: - - search = "$"+item.tagName - replace = item.childNodes[0].data - - script = script.replace(search,replace) - - # Perform keyword substitution replacements - # Currently only one substitution exists so for simplisity fix it here - writeVersionSubstitution = script.find("$writeVersions") - if writeVersionSubstitution != -1: - - #Extract Filename - fileNameStart = script.find("(",writeVersionSubstitution) - fileNameEnd = script.find(")",fileNameStart) - fileName= script[fileNameStart+1:fileNameEnd] - - substitution = createVersionSubstitution(build, fileName) - - script = script.replace("$writeVersions(" + fileName + ")", substitution) - - - return script - -################################################################################ -# -# Keyword Substitutions -# -################################################################################ - -# -# Use the specified build as to lookup all associated source/patches and write out their details -# to the specified file using shell redirects. redirects are to be used as the absolute filename -# location may not be known as the name comes in via the release script -# -def createVersionSubstitution(build, filename): - substitution = "" - sources = getSourceList(); - - dependencies = build.getElementsByTagName(DEPENDENCY) - - if dependencies > 0: - substitution += "\n echo 'Source Version Information:'>> " + filename - for dependency in dependencies : - depSources = dependency.getElementsByTagName(SOURCE) - # Can assume we have dependencies as we would have failed before now - for source in depSources: - sourceDependency = getValue(source) - # We can assume source is valid. - for s in sources: - if sourceDependency == getName(s): - # provide header :: - substitution += "\n " + ECHO_BIN + " -n '" + sourceDependency + ":" \ - + getType(s) + ":' >> " + filename - substitution += "\n" + getVersionCommand(s) + " >>" + filename - # Add Source URL to Revisions file - url = getValue(s.getElementsByTagName(URL)[0]) - substitution += "\n" + ECHO_BIN + " \"URL:" + url + "\" >> "+filename - # Add Patches applied to this source to revisions file - substitution += addPatchVersions(s, filename) - - return substitution - -# -# Use the specified source as to lookup all associated patches and write their details out the -# the specified file using shell redirects. redirects are to be used as the absolute filename -# location may not be known as the name comes in via the release script -# -def addPatchVersions(source, filename): - substitution = "" - - patches = getPatchList() - - sourceName = getName(source) - - for patch in patches: - patchSourceName = getValue(patch.getElementsByTagName(SOURCE)[0]) - - if sourceName == patchSourceName: - type = getType(patch) - substitution += "\n" + ECHO_BIN + " \"\t"+getName(patch)+":"+type + "\" >> "+filename - url = getValue(patch.getElementsByTagName(URL)[0]) - substitution += "\n" + ECHO_BIN + " \"\t\tURL:" + url + "\" >> "+filename - if (type == SVN): - if (patch.getElementsByTagName(REVISION).length > 0): - substitution += "\n" + ECHO_BIN + " \"\t\tREVISION:"+ \ - getValue(patch.getElementsByTagName(REVISION)[0]) + "\" >> " + filename - else: - substitution += "\n" + ECHO_BIN + " -n \"\t\tREVISION: \" >> " + filename - substitution += "\n" + SVNVERSION_BIN + " " + _rootDir + PATH_SEP + PATCH_DIR + PATH_SEP + getName(patch) + " >> " + filename - - - if (patch.getElementsByTagName(PREFIX).length > 0): - substitution += "\n" + ECHO_BIN + " \"\t\tPREFIX: " + \ - getValue(patch.getElementsByTagName(PREFIX)[0]) + "\" >> " + filename - - if (patch.getElementsByTagName(PATH).length > 0): - substitution += "\n" + ECHO_BIN + " \"\t\tPATH: " + \ - getValue(patch.getElementsByTagName(PATH)[0]) + "\" >> " + filename - - global _rootDir - patchSource= _rootDir + PATH_SEP + PATCH_DIR + PATH_SEP + getName(patch) - - # - # Include the list of patches files applied - # - for root, dirs, files in os.walk(patchSource): - if '.svn' in dirs: - dirs.remove('.svn') - files.sort() - for patchName in files: - substitution += "\n" + ECHO_BIN + " \"\t\tFILE: " + patchName + "\" >> " + filename - - - - - if (substitution != ""): - return "\n" + ECHO_BIN + " \"\tPatches applied to " + sourceName + ":\" >> " + filename + substitution - else: - return "\n" + ECHO_BIN + " \"\tNo Patches\" >> " + filename - - -# -# Given a source entry return the command that will provide the current version -# of that source. -# i.e. svn source : svnversion -# http source : echo -# -def getVersionCommand(source): - global _rootDir - type = getType(source) - - versionCommand="" - - if type == SVN: - versionCommand=SVNVERSION_BIN+" "+_rootDir + PATH_SEP + SOURCE_DIR + PATH_SEP + getName(source) - else: - if type == FILE or type == HTTP or type == FTP: - versionCommand = ECHO_BIN +" " + getURL(source) - - - return versionCommand - -################################################################################ -# -# Download Helper Methods -# -################################################################################ - -# -# Download the item specified in source to the given destintation -# -def downloadSource(source, destination): - name = getName(source) - type = getType(source) - url = getValue(source.getElementsByTagName(URL)[0]) - log ( "Retrieving "+ name + "("+ type +")") - - targetdir=_rootDir + PATH_SEP + destination + PATH_SEP + name - - command = "" - - mkdir(targetdir) - - if (os.listdir(targetdir)==[]): - - # Setup command for a fresh checkout - if (type == SVN): - command = SVN_BIN+" co "+url+" "+targetdir - if (source.getElementsByTagName(REVISION).length > 0): - revision = getValue(source.getElementsByTagName(REVISION)[0]) - command = SVN_BIN+" co -r"+revision+" "+url+" "+targetdir - else: - if (type == HTTP): - command = WGET_BIN+" --no-directories -P "+targetdir+" "+url - else: - if (type == FILE): - if url.startswith(HTTP): - command = WGET_BIN+" -P "+targetdir+" "+url - else: - if url.startswith(FTP): - command = WGET_BIN+" -P "+targetdir+" "+url - else: - command = CP_BIN+" -R "+url+" "+targetdir - else: - warn("Target directory(" + targetdir + ") is not empty please ensure contents are valid or run 'clean "+name+"'") - - verbose("Executing:"+command) - log_no_newline("Retrieving "+source.nodeName+": ") - - if (type == FILE): - runCommand(command, True) - else: - runCommand(command, False) - -################################################################################ -# -# Command Helper Methods -# -################################################################################ - -# -# Run command and print out last 20 lines of data on error -# -def runCommandShowError(command): - last20 = runCommand(command, False) - if last20 != None: - lines=last20[0] - lines=lines + 1 - current = 1 - while current != lines: - log (last20[current]) - current = current + 1 - attemptExit(1) - -# -# Runs the given command if showOutput is true then stdout/stderr is shown on screen -# other wise the last 20 lines of output is gathered: -# -# As command runs progress is shown -# -# return array [0] = no of elements in array. Array is fixed size 21 elements but not all are used. FIXME: this is poor -# -# TODO: Current mechanism for limiting to 20 lines is poor, potential to replace usages of this -# method with runCommandWithOutput below -# -def runCommand(command, showOutput): - debug("Running Command:"+command) - try: - if showOutput: - # Process that shows the output - result = Popen(command, shell=True) - else: - # consume the output ourselves - result = Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - index=0 - last20=[""] * 21 - line = result.stdout.readline() - while (line != "" ): - logWaiting() - - #Record last 20 lines of output - index = index + 1 - if index == 20: - index = 1 - - last20[index]=line - - # process nextline - line = result.stdout.readline() - - # - # If we didn't get any standard or fill our buffers then fill the end of the buffer with any stderr - # - if index == 0 | index < 15 : - line = result.stderr.readline() - - if index != 0: - index = index + 1 - if line != "": - last20[index]="STDERR" - reset = index - while (line != "" ): - logWaiting() - - #Record last 20 lines of output - index = index + 1 - if index == 20: - index = reset - - last20[index]=line - - # process nextline - line = result.stderr.readline() - - result.wait() - - if result.returncode == 0: - logWaitingDone() - else: - logWaitingFailed("Failed") - attemptExit(1) - if not showOutput: - last20[0]=index - return last20 - - return None - - except IOError: - logWaitingFailed ("Error running command.") - attemptExit(1) - -# -# Runs the given command if showOutput is true then stdout/stderr is shown on screen -# Stdout and stderr is gathered up and returned with error code. -# -# return (result.returncode, stdout, stderr) -# -# As command runs progress is shown -# -def runCommandWithOutput(command): - - result = Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - - # Retrieve STDOUT - stdout=[] - line = result.stdout.readline() - while (line != "" ): - logWaiting() - - stdout.append(line) - - # process nextline - line = result.stdout.readline() - - line = result.stderr.readline() - - # Retrieve STDERR - stderr=[] - while (line != "" ): - stderr.append(line) - - # process nextline - line = result.stderr.readline() - - result.wait() - - logWaitingClear() - - return (result.returncode, stdout, stderr) - - -################################################################################ -# -# OS Helper Methods -# -################################################################################ - -# -# Check _ignoreErrors value and exit if false -# -def attemptExit(code): - if not _ignoreErrors: - sys.exit(code) - else: - print ("Ignoring Errors") - -# -# Check that the required binaries are present for this tool. -# Only checks the minimum set. -# Logs warning if archive tools are missing -# -def checkSystemRequirements(): - exists = checkExists(SVN_BIN) - exists = exists & checkExists(WGET_BIN) - exists = exists & checkExists(CP_BIN) - exists = exists & checkExists(PATCH_BIN) - exists = exists & checkExists(FILE_BIN) - - if not checkExists(TAR_BIN): - warn("Unable to process tar files as tar binary does not exist:" + TAR_BIN) - if not checkExists(BZIP2_BIN): - warn("Unable to process bzip2 files as bzip2 binary does not exist:" + BZIP2_BIN) - if not checkExists(UNZIP_BIN): - warn("Unable to process zip files as unzip binary does not exist:" + UNZIP_BIN) - - if not exists: - sys.exit(1) - -# -# Helper that checks for files existence -# -def checkExists(command): - debug_no_newline("Checking for "+command+":") - command = LS_BIN+" "+command - - result = Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - line = result.stdout.readline() - - while (line != "" ): - # process nextline - line = result.stdout.readline() - - result.wait() - - if result.returncode == 0: - debug("OK") - return True - else: - debug("Missing") - warn("Missing dependancy:"+command) - return False - - -# Delete everything reachable from the directory named in 'top', -# assuming there are no symbolic links. -# -# If an attempt to delete '/' is performed this is logged as a fatal error -# -def deleteDir(top): - if top == '/': - fatal("Exiting as attempt to delete '/' occured.") - else: - if (os.path.exists(top)): - log_no_newline("Removing:"+top+". ") - for root, dirs, files in os.walk(top, topdown=False): - logWaiting() - for name in files: - os.remove(os.path.join(root, name)) - for name in dirs: - logWaiting() - os.rmdir(os.path.join(root, name)) - - logWaiting() - os.rmdir(top) - - logWaitingDone() - -def mkdir(dir): - if not os.path.exists(dir): - os.mkdir(dir) - - -################################################################################ -# -# Logging Helper Methods -# -################################################################################ - -# -# Provide a spinning -/|\ -# -def logWaiting(): - global _charIndex, _waitingChars - - _charIndex = (_charIndex + 1) % len(_waitingChars) - - log_no_newline('\b') - log_no_newline(_waitingChars[_charIndex]) - -# -# Clear the logWaiting symbol and end the line with ' Done' -# -def logWaitingDone(): - log_no_newline('\b') - log(" Done") - -# -# Clear the logWaiting symbol -# -def logWaitingClear(): - log_no_newline('\b') - -# -# Clear the logWaiting symbol and end line with messsage -# -def logWaitingFailed(message): - log_no_newline('\b') - log(" "+message) - -def debug(string): - if _debug: - log(string) - -def verbose(string): - if _verbose: - log(string) - -def log (string): - if _log: - print string - -def warn (string): - print string - -def fatal(string): - print string - attemptExit(1) - -def log_no_newline (string): - if _log: - sys.stdout.write(string) - sys.stdout.flush() - -def verbose_no_newline (string): - if _verbose: - sys.stdout.write(string) - sys.stdout.flush() - -def debug_no_newline (string): - if _debug: - sys.stdout.write(string) - sys.stdout.flush() - -if __name__ == "__main__": - main() diff --git a/qpid/buildtools/buildCreator/qpid.build b/qpid/buildtools/buildCreator/qpid.build deleted file mode 100644 index f55025dc8d..0000000000 --- a/qpid/buildtools/buildCreator/qpid.build +++ /dev/null @@ -1,55 +0,0 @@ - - - - qpid-build - - - qpid - - - - - - - - - - - - - - diff --git a/qpid/cpp/docs/book/.gitignore b/qpid/cpp/docs/book/.gitignore new file mode 100644 index 0000000000..21f1f20096 --- /dev/null +++ b/qpid/cpp/docs/book/.gitignore @@ -0,0 +1,21 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +/build +/out diff --git a/qpid/cpp/docs/book/Makefile b/qpid/cpp/docs/book/Makefile new file mode 100644 index 0000000000..6e97a0c5cc --- /dev/null +++ b/qpid/cpp/docs/book/Makefile @@ -0,0 +1,38 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +DIRS = src/cpp-broker src/programming + + +.PHONY: all $(DIRS) + +all: $(DIRS) + +clean: + rm -rf build + +html: TARGET = html +html: all + +pdf: TARGET = pdf +pdf: all + +$(DIRS): + $(MAKE) -C $@ $(TARGET) OUTPUTDIR=../../build/ + diff --git a/qpid/cpp/docs/book/src/Makefile.inc b/qpid/cpp/docs/book/src/Makefile.inc new file mode 100644 index 0000000000..4de5733740 --- /dev/null +++ b/qpid/cpp/docs/book/src/Makefile.inc @@ -0,0 +1,63 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +BOOK=$(wildcard *Book.xml Programming-In-Apache-Qpid.xml ) +XML=$(wildcard *.xml) $(wildcard ../common/*.xml) +IMAGES=$(wildcard images/*.png) +CSS=$(wilcard ../common/css/*.css) + +OUTPUTDIR=output +OUTPUT= $(BOOK:%.xml=$(OUTPUTDIR)/%/) + +all: html pdf + +pdf: $(OUTPUT)/pdf $(BOOK:%.xml=$(OUTPUT)/pdf/%.pdf) + +html: $(OUTPUT)/html $(BOOK:%.xml=$(OUTPUT)/html/index.html) + +$(OUTPUT)/html/images: $(IMAGES) + -mkdir -p $(OUTPUT)/html/images + -cp images/*.png $(OUTPUT)/html/images/ + +$(OUTPUT)/html/css: $(CSS) + -mkdir -p $(OUTPUT)/html/css + -cp ../common/css/*.css $(OUTPUT)/html/css + +$(OUTPUT)/html: + -mkdir -p $(OUTPUT)/html + +$(OUTPUT)/pdf: + -mkdir -p $(OUTPUT)/pdf + +$(OUTPUT)/html/index.html: $(BOOK) $(OUTPUT)/html/css $(OUTPUT)/html/images $(XML) + xsltproc -o $(OUTPUT)/html/ --xinclude --stringparam chunk.section.depth 1 --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 --stringparam use.id.as.filename 1 --stringparam html.stylesheet css/style.css --stringparam section.autolabel.max.depth 3 --stringparam toc.section.depth 2 --stringparam chunker.output.encoding UTF-8 --stringparam css.decoration 0 ../../xsl/html-custom.xsl $< + +%.fo: %.xml + xsltproc --xinclude --stringparam section.autolabel 1 --stringparam callout.graphics 0 --stringparam callout.unicode 0 --stringparam section.label.includes.component.label 1 http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl $< > $@ + + +%.pdf: %.fo + fop $< $@ + +$(OUTPUT)/pdf/%.pdf: %.pdf + @mv $< $@ + +clean: + -rm -rf $(OUTPUT) *.fo + diff --git a/qpid/cpp/docs/book/src/common/css/style.css b/qpid/cpp/docs/book/src/common/css/style.css new file mode 100644 index 0000000000..c681596592 --- /dev/null +++ b/qpid/cpp/docs/book/src/common/css/style.css @@ -0,0 +1,279 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +ul { + list-style-type:square; +} + +th { + font-weight: bold; +} + +.navfooter td { + font-size:10pt; +} + +.navheader td { + font-size:10pt; +} + +body { + margin:0; + background:#FFFFFF; + font-family:"Verdana", sans-serif; + font-size:10pt; +} + +.container { + width:950px; + margin:0 auto; +} + +body a { + color:#000000; +} + + +div.book { + margin-left:10pt; + margin-right:10pt; +} + +div.preface { + margin-left:10pt; + margin-right:10pt; +} + +div.chapter { + margin-left:10pt; + margin-right:10pt; +} + +div.section { + margin-left:10pt; + margin-right:10pt; +} + +div.titlepage { + margin-left:-10pt; + margin-right:-10pt; +} + +.calloutlist td { + font-size:10pt; +} + +.table-contents table { + border-spacing: 0px; +} + +.table-contents td { + font-size:10pt; + padding-left:6px; + padding-right:6px; +} + +div.breadcrumbs { + font-size:9pt; + margin-right:10pt; + padding-bottom:16px; +} + +.chapter h2.title { + font-size:20pt; + color:#0c3b82; +} + +.chapter .section h2.title { + font-size:18pt; + color:#0c3b82; +} + +.section h2.title { + font-size:16pt; + color:#0c3b82; +} + +.section h3.title { + font-size:14pt; + color:#0c3b82; +} + +.section h4.title { + font-size:12pt; + color:#0c3b82; +} + +.section h5.title { + font-size:12pt; + color:#0c3b82; +} + +.section h6.title { + font-size:12pt; + color:#0c3b82; +} + +.toc a { + font-size:9pt; +} + +.header { + height:100px; + width:950px; + background:url(http://qpid.apache.org/images/header.png) +} + +.logo { + text-align:center; + font-weight:600; + padding:0 0 0 0; + font-size:14px; + font-family:"Verdana", cursive; +} + +.logo a { + color:#000000; + text-decoration:none; +} + +.main_text_area { + margin-left:200px; +} + +.main_text_area_top { + height:14px; + font-size:1px; +} + +.main_text_area_bottom { + display:none; +/* height:14px; + margin-bottom:4px;*/ +} + +.main_text_area_body { + padding:5px 24px; +} + +.main_text_area_body p { + text-align:justify; +} + +.main_text_area br { + line-height:10px; +} + +.main_text_area h1 { + font-size:28px; + font-weight:600; + margin:0 0 24px 0; + color:#0c3b82; + font-family:"Verdana", Times, serif; +} + +.main_text_area h2 { + font-size:24px; + font-weight:600; + margin:24px 0 8px 0; + color:#0c3b82; + font-family:"Verdana",Times, serif; +} + +.main_text_area ol, .main_text_area ul { + padding:0; + margin:10px 0; + margin-left:20px; +} + +.main_text_area li { +/* margin-left:40px; */ +} + +.main_text_area, .menu_box { + font-size:13px; + line-height:17px; + color:#000000; +} + +.main_text_area { + font-size:14px; +} + +.main_text_area a { + color:#000000; +} + +.main_text_area a:hover { + color:#000000; +} + +.menu_box { + width:196px; + float:left; + margin-left:4px; +} + +.menu_box_top { + background:url(http://qpid.apache.org/images/menu_top.png) no-repeat; + height:14px; + font-size:1px; +} + +.menu_box_body { + background:url(http://qpid.apache.org/images/menu_body.png) repeat-y; + padding:5px 24px 5px 24px; +} + +.menu_box_bottom { + background:url(http://qpid.apache.org/images/menu_bottom.png) no-repeat; + height:14px; + font-size:1px; + margin-bottom:1px; +} + +.menu_box h3 { + font-size:20px; + font-weight:500; + margin:0 0 8px 0; + color:#0c3b82; + font-family:"Verdana",Times, serif; +} + +.menu_box ul { + margin:12px; + padding:0px; +} + +.menu_box li { + list-style:square; +} + +.menu_box a { + color:#000000; + text-decoration:none; +} + +.menu_box a:hover { + color:#000000; + text-decoration:underline; +} + + diff --git a/qpid/cpp/docs/book/src/cpp-broker/.gitignore b/qpid/cpp/docs/book/src/cpp-broker/.gitignore new file mode 100644 index 0000000000..6d31bdba7f --- /dev/null +++ b/qpid/cpp/docs/book/src/cpp-broker/.gitignore @@ -0,0 +1,20 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +/output diff --git a/qpid/cpp/docs/book/src/cpp-broker/AMQP-Compatibility.xml b/qpid/cpp/docs/book/src/cpp-broker/AMQP-Compatibility.xml new file mode 100644 index 0000000000..e5aa98cf96 --- /dev/null +++ b/qpid/cpp/docs/book/src/cpp-broker/AMQP-Compatibility.xml @@ -0,0 +1,713 @@ + + + +
+ + AMQP compatibility + + + Qpid provides the most complete and compatible implementation + of AMQP. And is the most aggressive in implementing the latest + version of the specification. + + + There are two brokers: + + + + C++ with support for AMQP 0-10 + Java with support for AMQP 0-8 and 0-9 (0-10 planned) + + + There are client libraries for C++, Java (JMS), .Net (written in + C#), python and ruby. + + + All clients support 0-10 and interoperate with the C++ + broker. + + + + The JMS client supports 0-8, 0-9 and 0-10 and interoperates + with both brokers. + + + + The python and ruby clients will also support all versions, + but the API is dynamically driven by the specification used and + so differs between versions. To work with the Java broker you + must use 0-8 or 0-9, to work with the C++ broker you must use + 0-10. + + + + There are two separate C# clients, one for 0-8 that + interoperates with the Java broker, one for 0-10 that + inteoperates with the C++ broker. + + + + QMF Management is supported in Ruby, Python, C++, and via QMan + for Java JMX & WS-DM. + +
+ + AMQP + Compatibility of Qpid releases: + + + Qpid implements the AMQP Specification, and as the specification + has progressed Qpid is keeping up with the updates. This means + that different Qpid versions support different versions of AMQP. + Here is a simple guide on what use. + + + Here is a matrix that describes the different versions supported + by each release. The status symbols are interpreted as follows: + + + + + Y + supported + + + N + unsupported + + + IP + in progress + + + P + planned + + + + + AMQP Version Support by Qpid Release + + + + + Component + + + Spec + + +   + + +   + + +   + + +   + + + + +   + + +   + + + M2.1 + + + M3 + + + M4 + + + 0.5 + + + + + java client + + + 0-10 + + +   + + + Y + + + Y + + + Y + + + + +   + + + 0-9 + + + Y + + + Y + + + Y + + + Y + + + + +   + + + 0-8 + + + Y + + + Y + + + Y + + + Y + + + + + java broker + + + 0-10 + + +   + + +   + + +   + + + P + + + + +   + + + 0-9 + + + Y + + + Y + + + Y + + + Y + + + + +   + + + 0-8 + + + Y + + + Y + + + Y + + + Y + + + + + c++ client/broker + + + 0-10 + + +   + + + Y + + + Y + + + Y + + + + +   + + + 0-9 + + + Y + + +   + + +   + + +   + + + + + python client + + + 0-10 + + +   + + + Y + + + Y + + + Y + + + + +   + + + 0-9 + + + Y + + + Y + + + Y + + + Y + + + + +   + + + 0-8 + + + Y + + + Y + + + Y + + + Y + + + + + ruby client + + + 0-10 + + +   + + +   + + + Y + + + Y + + + + +   + + + 0-8 + + + Y + + + Y + + + Y + + + Y + + + + + C# client + + + 0-10 + + +   + + +   + + + Y + + + Y + + + + +   + + + 0-8 + + + Y + + + Y + + + Y + + + Y + + + + +
+ +
+ +
+ + Interop + table by AMQP specification version + + + Above table represented in another format. + + + AMQP Version Support - alternate format + + + + +   + + + release + + + 0-8 + + + 0-9 + + + 0-10 + + + + + java client + + + M3 M4 0.5 + + + Y + + + Y + + + Y + + + + + java client + + + M2.1 + + + Y + + + Y + + + N + + + + + java broker + + + M3 M4 0.5 + + + Y + + + Y + + + N + + + + + java broker + + + trunk + + + Y + + + Y + + + P + + + + + java broker + + + M2.1 + + + Y + + + Y + + + N + + + + + c++ client/broker + + + M3 M4 0.5 + + + N + + + N + + + Y + + + + + c++ client/broker + + + M2.1 + + + N + + + Y + + + N + + + + + python client + + + M3 M4 0.5 + + + Y + + + Y + + + Y + + + + + python client + + + M2.1 + + + Y + + + Y + + + N + + + + + ruby client + + + M3 M4 0.5 + + + Y + + + Y + + + N + + + + + ruby client + + + trunk + + + Y + + + Y + + + P + + + + + C# client + + + M3 M4 0.5 + + + Y + + + N + + + N + + + + + C# client + + + trunk + + + Y + + + N + + + Y + + + + +
+ +
+ +
diff --git a/qpid/cpp/docs/book/src/cpp-broker/AMQP-Messaging-Broker-CPP-Book.xml b/qpid/cpp/docs/book/src/cpp-broker/AMQP-Messaging-Broker-CPP-Book.xml new file mode 100644 index 0000000000..6122b12e18 --- /dev/null +++ b/qpid/cpp/docs/book/src/cpp-broker/AMQP-Messaging-Broker-CPP-Book.xml @@ -0,0 +1,74 @@ + + + + + AMQP Messaging Broker (Implemented in C++) + + Introduction + + Qpid provides two AMQP messaging brokers: + + + Implemented in C++ - high performance, low latency, and RDMA support. + Implemented in Java - Fully JMS compliant, runs on any Java platform. + + + Both AMQP messaging brokers support clients in multiple + languages, as long as the messaging client and the messaging + broker use the same version of AMQP. See AMQP Compatibility to see + which messaging clients work with each broker. + + This manual contains information specific to the broker that is implemented in C++. + + + + + Running the AMQP Messaging Broker + + + + + + + + + + + + + + + + + + + + + Managing the AMQP Messaging Broker + + + + + + + diff --git a/qpid/cpp/docs/book/src/cpp-broker/Active-Passive-Cluster.xml b/qpid/cpp/docs/book/src/cpp-broker/Active-Passive-Cluster.xml new file mode 100644 index 0000000000..461b75d320 --- /dev/null +++ b/qpid/cpp/docs/book/src/cpp-broker/Active-Passive-Cluster.xml @@ -0,0 +1,1229 @@ + + + +
+ Active-Passive Messaging Clusters + +
+ Overview + + + The High Availability (HA) module provides + active-passive, hot-standby + messaging clusters to provide fault tolerant message delivery. + + + In an active-passive cluster only one broker, known as the + primary, is active and serving clients at a time. The other + brokers are standing by as backups. Changes on the primary + are replicated to all the backups so they are always up-to-date or "hot". Backup + brokers reject client connection attempts, to enforce the requirement that clients + only connect to the primary. + + + If the primary fails, one of the backups is promoted to take over as the new + primary. Clients fail-over to the new primary automatically. If there are multiple + backups, the other backups also fail-over to become backups of the new primary. + + + This approach relies on an external cluster resource manager + to detect failures, choose the new primary and handle network partitions. rgmanager is supported + initially, but others may be supported in the future. + +
+ Avoiding message loss + + In order to avoid message loss, the primary broker delays + acknowledgement of messages received from clients until the + message has been replicated and acknowledged by all of the back-up + brokers, or has been consumed from the primary queue. + + + This ensures that all acknowledged messages are safe: they have either + been consumed or backed up to all backup brokers. Messages that are + consumed before they are replicated do not need to + be replicated. This reduces the work load when replicating a queue with + active consumers. + + + Clients keep unacknowledged messages in a buffer + + + You can control the maximum number of messages in the buffer by setting the + client's capacity. For details of how to set the capacity + in client code see "Using the Qpid Messaging API" in + Programming in Apache Qpid. + + + until they are acknowledged by the primary. If the primary fails, clients will + fail-over to the new primary and re-send all their + unacknowledged messages. + + + Clients must use "at-least-once" reliability to enable re-send of unacknowledged + messages. This is the default behaviour, no options need be set to enable it. For + details of client addressing options see "Using the Qpid Messaging API" + in Programming in Apache Qpid. + + + + + If the primary crashes, all the acknowledged + messages will be available on the backup that takes over as the new + primary. The unacknowledged messages will be + re-sent by the clients. Thus no messages are lost. + + + Note that this means it is possible for messages to be + duplicated. In the event of a failure it is possible for a + message to received by the backup that becomes the new primary + and re-sent by the client. The application must take steps + to identify and eliminate duplicates. + + + When a new primary is promoted after a fail-over it is initially in + "recovering" mode. In this mode, it delays acknowledgement of messages + on behalf of all the backups that were connected to the previous + primary. This protects those messages against a failure of the new + primary until the backups have a chance to connect and catch up. + + + Not all messages need to be replicated to the back-up brokers. If a + message is consumed and acknowledged by a regular client before it has + been replicated to a backup, then it doesn't need to be replicated. + + + HA Broker States + + Stand-alone + + + Broker is not part of a HA cluster. + + + + + Joining + + + Newly started broker, not yet connected to any existing primary. + + + + + Catch-up + + + A backup broker that is connected to the primary and downloading + existing state (queues, messages etc.) + + + + + Ready + + + A backup broker that is fully caught-up and ready to take over as + primary. + + + + + Recovering + + + Newly-promoted primary, waiting for backups to connect and catch up. + Clients can connect but they are stalled until the primary is active. + + + + + Active + + + The active primary broker with all backups connected and caught-up. + + + + +
+
+ Limitations + + There are a some known limitations in the current implementation. These + will be fixed in future versions. + + + + + Transactional changes to queue state are not replicated atomically. If + the primary crashes during a transaction, it is possible that the + backup could contain only part of the changes introduced by a + transaction. + + + + + Configuration changes (creating or deleting queues, exchanges and + bindings) are replicated asynchronously. Management tools used to + make changes will consider the change complete when it is complete + on the primary, it may not yet be replicated to all the backups. + + + + + Federation links to the primary will fail over + correctly. Federated links from the primary + will be lost in fail over, they will not be re-connected to the new + primary. It is possible to work around this by replacing the + qpidd-primary start up script with a script that + re-creates federation links when the primary is promoted. + + + +
+
+ +
+ Virtual IP Addresses + + Some resource managers (including rgmanager) support + virtual IP addresses. A virtual IP address is an IP + address that can be relocated to any of the nodes in a cluster. The + resource manager associates this address with the primary node in the + cluster, and relocates it to the new primary when there is a failure. This + simplifies configuration as you can publish a single IP address rather + than a list. + + + A virtual IP address can be used by clients to connect to the primary. The + following sections will explain how to configure virtual IP addresses for + clients or brokers. + +
+ +
+ Configuring the Brokers + + The broker must load the ha module, it is loaded by + default. The following broker options are available for the HA module. + + + + Broker management is required for HA to operate, it is enabled by + default. The option mgmt-enable must not be set to + "no" + + + + + Incorrect security settings are a common cause of problems when + getting started, see . + + + + Broker Options for High Availability Messaging Cluster + + + + + + + Options for High Availability Messaging Cluster + + + + + + + ha-cluster yes|no + + + Set to "yes" to have the broker join a cluster. + + + + + ha-queue-replication yes|no + + + Enable replication of specific queues without joining a cluster, see . + + + + + ha-brokers-url URL + + + + The URL + + + The full format of the URL is given by this grammar: + +url = ["amqp:"][ user ["/" password] "@" ] addr ("," addr)* +addr = tcp_addr / rmda_addr / ssl_addr / ... +tcp_addr = ["tcp:"] host [":" port] +rdma_addr = "rdma:" host [":" port] +ssl_addr = "ssl:" host [":" port]' + + + + used by cluster brokers to connect to each other. The URL should + contain a comma separated list of the broker addresses, rather than a + virtual IP address. + + + + + ha-public-url URL + + + This option is only needed for backwards compatibility if you + have been using the amq.failover exchange. + This exchange is now obsolete, it is recommended to use a + virtual IP address instead. + + + If set, this URL is advertised by the + amq.failover exchange and overrides the + broker option known-hosts-url + + + + + ha-replicate VALUE + + + Specifies whether queues and exchanges are replicated by default. + VALUE is one of: none, + configuration, all. + For details see . + + + + + + ha-username USER + ha-password PASS + ha-mechanism MECHANISM + + + Authentication settings used by HA brokers to connect to each other, + see + + + + ha-backup-timeoutSECONDS + + + Values specified as SECONDS can be a + fraction of a second, e.g. "0.1" for a tenth of a second. + They can also have an explicit unit, + e.g. 10s (seconds), 10ms (milliseconds), 10us (microseconds), 10ns (nanoseconds) + + + + + + Maximum time that a recovering primary will wait for an expected + backup to connect and become ready. + + + + + + link-maintenance-interval SECONDS + + + + + HA uses federation links to connect from backup to primary. + Backup brokers check the link to the primary on this interval + and re-connect if need be. Default 2 seconds. Set lower for + faster failover, e.g. 0.1 seconds. Setting too low will result + in excessive link-checking on the backups. + + + + + + link-heartbeat-interval SECONDS + + + + + HA uses federation links to connect from backup to primary. + If no heart-beat is received for twice this interval the primary will consider that + backup dead (e.g. if backup is hung or partitioned.) + This interval is also used to time-out for broker status checks, + it may take up to this interval for rgmanager to detect a hung or partitioned broker. + Clients sending messages may be held up during this time. + Default 120 seconds: you will probably want to set this to a lower value e.g. 10. + If set too low rgmanager may consider a slow broker to have failed and kill it. + + + + + +
+ + To configure a HA cluster you must set at least ha-cluster and + ha-brokers-url. + +
+ +
+ The Cluster Resource Manager + + Broker fail-over is managed by a cluster resource + manager. An integration with rgmanager is + provided, but it is possible to integrate with other resource managers. + + + The resource manager is responsible for starting the qpidd broker + on each node in the cluster. The resource manager then promotes + one of the brokers to be the primary. The other brokers connect to the primary as + backups, using the URL provided in the ha-brokers-url configuration + option. + + + Once connected, the backup brokers synchronize their state with the + primary. When a backup is synchronized, or "hot", it is ready to take + over if the primary fails. Backup brokers continually receive updates + from the primary in order to stay synchronized. + + + If the primary fails, backup brokers go into fail-over mode. The resource + manager must detect the failure and promote one of the backups to be the + new primary. The other backups connect to the new primary and synchronize + their state with it. + + + The resource manager is also responsible for protecting the cluster from + split-brain conditions resulting from a network partition. A + network partition divide a cluster into two sub-groups which cannot see each other. + Usually a quorum voting algorithm is used that disables nodes + in the inquorate sub-group. + +
+ +
+ Configuring with <command>rgmanager</command> as resource manager + + This section assumes that you are already familiar with setting up and configuring + clustered services using cman and + rgmanager. It will show you how to configure an active-passive, + hot-standby qpidd HA cluster with rgmanager. + + + + Once all components are installed it is important to take the following step: + +chkconfig rgmanager on +chkconfig cman on +chkconfig qpidd off + + + + The qpidd service must be off in + chkconfig because rgmanager will + start and stop qpidd. If the normal system init + process also attempts to start and stop qpidd it can cause rgmanager to + lose track of qpidd processes. The symptom when this happens is that + clustat shows a qpidd service to + be stopped when in fact there is a qpidd process + running. The qpidd log will show errors like this: + +critical Unexpected error: Daemon startup failed: Cannot lock /var/lib/qpidd/lock: Resource temporarily unavailable + + + + + You must provide a cluster.conf file to configure + cman and rgmanager. Here is + an example cluster.conf file for a cluster of 3 nodes named + node1, node2 and node3. We will go through the configuration step-by-step. + + + + + + + + + + + + + + + + status_poll_interval is the interval in seconds that the resource manager checks the status + of managed services. This affects how quickly the manager will detect failed services. + --> + + + + + + + + + + + + + + + + +