svn commit: r1367084 - in /qpid/trunk/qpid/java/broker-plugins/management-jmx/src: main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTes
Author: robbie Date: Mon Jul 30 13:36:00 2012 New Revision: 1367084 URL: http://svn.apache.org/viewvc?rev=1367084view=rev Log: QPID-4170: prevent JMX threads from spinning in the Queue MBean if the content retrieval fails, log an error if it does. Add unit tests to expose issue and verify fix. Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java?rev=1367084r1=1367083r2=1367084view=diff == --- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java (original) +++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java Mon Jul 30 13:36:00 2012 @@ -43,6 +43,7 @@ import javax.management.openmbean.Tabula import javax.management.openmbean.TabularDataSupport; import javax.management.openmbean.TabularType; import org.apache.commons.lang.time.FastDateFormat; +import org.apache.log4j.Logger; import org.apache.qpid.management.common.mbeans.ManagedQueue; import org.apache.qpid.server.jmx.AMQManagedObject; import org.apache.qpid.server.jmx.ManagedObject; @@ -59,6 +60,8 @@ import org.apache.qpid.server.queue.Queu public class QueueMBean extends AMQManagedObject implements ManagedQueue, QueueNotificationListener { +private static final Logger LOGGER = Logger.getLogger(QueueMBean.class); + private static final String[] VIEW_MSGS_COMPOSITE_ITEM_NAMES_DESC_ARRAY = VIEW_MSGS_COMPOSITE_ITEM_NAMES_DESC.toArray(new String[VIEW_MSGS_COMPOSITE_ITEM_NAMES_DESC.size()]); @@ -370,12 +373,14 @@ public class QueueMBean extends AMQManag byte[] msgContent = new byte[bodySize]; ByteBuffer buf = ByteBuffer.wrap(msgContent); -int position = 0; +int stored = serverMsg.getContent(buf, 0); -while(position bodySize) +if(bodySize != stored) { -position += serverMsg.getContent(buf, position); - +LOGGER.error(String.format(An unexpected amount of content was retrieved + +(expected %d, got %d bytes) when viewing content for message with ID %d + +on queue '%s' in virtual host '%s', +bodySize, stored, messageId, _queue.getName(), _vhostMBean.getName())); } AMQMessageHeader header = serverMsg.getMessageHeader(); @@ -591,7 +596,7 @@ public class QueueMBean extends AMQManag } -private static class GetMessageVisitor implements QueueEntryVisitor +protected static class GetMessageVisitor implements QueueEntryVisitor { private final long _messageNumber; Modified: qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java?rev=1367084r1=1367083r2=1367084view=diff == --- qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java (original) +++ qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java Mon Jul 30 13:36:00 2012 @@ -18,12 +18,14 @@ */ package org.apache.qpid.server.jmx.mbeans; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.mockito.Mockito.verify; import static org.mockito.Matchers.isNull; import static org.mockito.Matchers.argThat; +import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Collections; @@ -31,19 +33,26 @@ import javax.management.ListenerNotFound import javax.management.Notification; import javax.management.NotificationListener; import javax.management.OperationsException; +import javax.management.openmbean.CompositeDataSupport; +import org.apache.qpid.management.common.mbeans.ManagedQueue; import org.apache.qpid.server.jmx.ManagedObjectRegistry; +import org.apache.qpid.server.jmx.mbeans.QueueMBean.GetMessageVisitor; +import org.apache.qpid.server.message.ServerMessage; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.model.Statistics; import
svn commit: r1367095 - in /qpid/trunk/qpid/java: systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java test-profiles/JavaTransientExcludes
Author: kwall Date: Mon Jul 30 13:59:07 2012 New Revision: 1367095 URL: http://svn.apache.org/viewvc?rev=1367095view=rev Log: QPID-4164: Patch to extend MaxDeliveryCountTest to check for this bug Applied patch from Philip Harvey p...@philharveyonline.com Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes Modified: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java?rev=1367095r1=1367094r2=1367095view=diff == --- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java (original) +++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java Mon Jul 30 13:59:07 2012 @@ -41,6 +41,7 @@ import javax.jms.Session; import javax.jms.TextMessage; import javax.jms.Topic; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -67,6 +68,9 @@ public class MaxDeliveryCountTest extend private static final int MAX_DELIVERY_COUNT = 2; private CountDownLatch _awaitCompletion; +/** index numbers of messages to be redelivered */ +private final ListInteger _redeliverMsgs = Arrays.asList(1, 2, 5, 14); + public void setUp() throws Exception { //enable DLQ/maximumDeliveryCount support for all queues at the vhost level @@ -144,13 +148,7 @@ public class MaxDeliveryCountTest extend */ public void testAsynchronousClientAckSession() throws Exception { -final ArrayListInteger redeliverMsgs = new ArrayListInteger(); -redeliverMsgs.add(1); -redeliverMsgs.add(2); -redeliverMsgs.add(5); -redeliverMsgs.add(14); - -doTest(Session.CLIENT_ACKNOWLEDGE, redeliverMsgs, false, false); +doTest(Session.CLIENT_ACKNOWLEDGE, _redeliverMsgs, false, false); } /** @@ -159,13 +157,7 @@ public class MaxDeliveryCountTest extend */ public void testAsynchronousTransactedSession() throws Exception { -final ArrayListInteger redeliverMsgs = new ArrayListInteger(); -redeliverMsgs.add(1); -redeliverMsgs.add(2); -redeliverMsgs.add(5); -redeliverMsgs.add(14); - -doTest(Session.SESSION_TRANSACTED, redeliverMsgs, false, false); +doTest(Session.SESSION_TRANSACTED, _redeliverMsgs, false, false); } /** @@ -174,13 +166,7 @@ public class MaxDeliveryCountTest extend */ public void testAsynchronousAutoAckSession() throws Exception { -final ArrayListInteger redeliverMsgs = new ArrayListInteger(); -redeliverMsgs.add(1); -redeliverMsgs.add(2); -redeliverMsgs.add(5); -redeliverMsgs.add(14); - -doTest(Session.AUTO_ACKNOWLEDGE, redeliverMsgs, false, false); +doTest(Session.AUTO_ACKNOWLEDGE, _redeliverMsgs, false, false); } /** @@ -189,13 +175,7 @@ public class MaxDeliveryCountTest extend */ public void testAsynchronousDupsOkSession() throws Exception { -final ArrayListInteger redeliverMsgs = new ArrayListInteger(); -redeliverMsgs.add(1); -redeliverMsgs.add(2); -redeliverMsgs.add(5); -redeliverMsgs.add(14); - -doTest(Session.DUPS_OK_ACKNOWLEDGE, redeliverMsgs, false, false); +doTest(Session.DUPS_OK_ACKNOWLEDGE, _redeliverMsgs, false, false); } /** @@ -204,13 +184,7 @@ public class MaxDeliveryCountTest extend */ public void testSynchronousClientAckSession() throws Exception { -final ArrayListInteger redeliverMsgs = new ArrayListInteger(); -redeliverMsgs.add(1); -redeliverMsgs.add(2); -redeliverMsgs.add(3); -redeliverMsgs.add(14); - -doTest(Session.CLIENT_ACKNOWLEDGE, redeliverMsgs, true, false); +doTest(Session.CLIENT_ACKNOWLEDGE, _redeliverMsgs, true, false); } /** @@ -219,27 +193,22 @@ public class MaxDeliveryCountTest extend */ public void testSynchronousTransactedSession() throws Exception { -final ArrayListInteger redeliverMsgs = new ArrayListInteger(); -redeliverMsgs.add(1); -redeliverMsgs.add(2); -redeliverMsgs.add(5); -redeliverMsgs.add(14); - -doTest(Session.SESSION_TRANSACTED, redeliverMsgs, true, false); +doTest(Session.SESSION_TRANSACTED, _redeliverMsgs, true, false); } public void testDurableSubscription() throws Exception { -final ArrayListInteger redeliverMsgs = new ArrayListInteger(); -redeliverMsgs.add(1); -
svn commit: r1367307 - in /qpid/branches/0.18/qpid/java: client/src/main/java/org/apache/qpid/client/AMQSession.java client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java common/src/main/ja
Author: rajith Date: Mon Jul 30 21:18:07 2012 New Revision: 1367307 URL: http://svn.apache.org/viewvc?rev=1367307view=rev Log: Porting to 0.18 branch. QPID-3575 SessionExceptions (0-10 code path) are now marked as soft errors. When a Session receives an exception it is closed and the exception is notified via the ConnectionListener as well. However the exception is marked as a soft-error, therefore the connection will not be closed. Modified: qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java Modified: qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=1367307r1=1367306r2=1367307view=diff == --- qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java (original) +++ qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java Mon Jul 30 21:18:07 2012 @@ -801,11 +801,8 @@ public abstract class AMQSessionC exten if (e instanceof AMQDisconnectedException) { -if (_dispatcherThread != null) -{ -// Failover failed and ain't coming back. Knife the dispatcher. -_dispatcherThread.interrupt(); -} +// Failover failed and ain't coming back. Knife the dispatcher. +stopDispatcherThread(); } @@ -834,6 +831,13 @@ public abstract class AMQSessionC exten } } +protected void stopDispatcherThread() +{ +if (_dispatcherThread != null) +{ +_dispatcherThread.interrupt(); +} +} /** * Commits all messages done in this transaction and releases any locks currently held. * Modified: qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=1367307r1=1367306r2=1367307view=diff == --- qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java (original) +++ qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java Mon Jul 30 21:18:07 2012 @@ -390,11 +390,7 @@ public class AMQSession_0_10 extends AMQ */ public void sendClose(long timeout) throws AMQException, FailoverException { -if (flushTask != null) -{ -flushTask.cancel(); -flushTask = null; -} +cancelTimerTask(); flushAcknowledgments(); try { @@ -1051,9 +1047,19 @@ public class AMQSession_0_10 extends AMQ { code = ee.getErrorCode().getValue(); } -AMQException amqe = new AMQException(AMQConstant.getConstant(code), se.getMessage(), se.getCause()); +AMQException amqe = new AMQException(AMQConstant.getConstant(code), false, se.getMessage(), se.getCause()); _currentException = amqe; } +cancelTimerTask(); +stopDispatcherThread(); +try +{ +closed(_currentException); +} +catch(Exception e) +{ +_logger.warn(Error closing session, e); +} getAMQConnection().exceptionReceived(_currentException); } @@ -1414,5 +1420,13 @@ public class AMQSession_0_10 extends AMQ return _qpidSession.isFlowBlocked(); } +private void cancelTimerTask() +{ +if (flushTask != null) +{ +flushTask.cancel(); +flushTask = null; +} +} } Modified: qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java?rev=1367307r1=1367306r2=1367307view=diff == --- qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java (original) +++ qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java Mon Jul 30 21:18:07 2012 @@ -40,6 +40,8 @@ public class AMQException extends Except /** Holds the AMQ error code constant associated with this exception. */ private AMQConstant _errorCode; +private boolean _isHardError; + /** * Creates an exception with an optional error code, optional message and optional underlying cause. *
svn commit: r1367308 - in /qpid/branches/0.18/qpid/java: client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
Author: rajith Date: Mon Jul 30 21:18:12 2012 New Revision: 1367308 URL: http://svn.apache.org/viewvc?rev=1367308view=rev Log: Porting to 0.18 branch. QPID-3575 The added a system prop to revert to the previous behavior if need be. Modified the SelectorTest#testRuntimeSelectorError test case to suit the new behavior. (cherry picked from commit 1b11ea556b73c4374a1c93d8707dc9aa57b209e1) Modified: qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java Modified: qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=1367308r1=1367307r2=1367308view=diff == --- qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java (original) +++ qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java Mon Jul 30 21:18:12 2012 @@ -128,7 +128,8 @@ public class AMQSession_0_10 extends AMQ * Used to store the range of in tx messages */ private final RangeSet _txRangeSet = RangeSetFactory.createRangeSet(); -private int _txSize = 0; +private int _txSize = 0; +private boolean _isHardError = Boolean.getBoolean(qpid.session.is_hard_error); //--- constructors /** @@ -1047,7 +1048,7 @@ public class AMQSession_0_10 extends AMQ { code = ee.getErrorCode().getValue(); } -AMQException amqe = new AMQException(AMQConstant.getConstant(code), false, se.getMessage(), se.getCause()); +AMQException amqe = new AMQException(AMQConstant.getConstant(code), _isHardError, se.getMessage(), se.getCause()); _currentException = amqe; } cancelTimerTask(); Modified: qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java?rev=1367308r1=1367307r2=1367308view=diff == --- qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java (original) +++ qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java Mon Jul 30 21:18:12 2012 @@ -233,7 +233,7 @@ public class SelectorTest extends QpidBr { } -assertTrue(Connection should be closed, _connection.isClosed()); +assertFalse(Connection should not be closed, _connection.isClosed()); } public void testSelectorWithJMSMessageID() throws Exception - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
svn commit: r1367309 - /qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
Author: rajith Date: Mon Jul 30 21:18:16 2012 New Revision: 1367309 URL: http://svn.apache.org/viewvc?rev=1367309view=rev Log: Porting to 0.18 branch. QPID-3575 Changed the name of the system prop to qpid.session.legacy_exception_behaviour. The system prop will now restore the old behavior. (cherry picked from commit 3f3d5165649e78bba094dce6443ff9eeeb56af0c) Modified: qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java Modified: qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java URL: http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=1367309r1=1367308r2=1367309view=diff == --- qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java (original) +++ qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java Mon Jul 30 21:18:16 2012 @@ -129,7 +129,7 @@ public class AMQSession_0_10 extends AMQ */ private final RangeSet _txRangeSet = RangeSetFactory.createRangeSet(); private int _txSize = 0; -private boolean _isHardError = Boolean.getBoolean(qpid.session.is_hard_error); +private boolean _isHardError = Boolean.getBoolean(qpid.session.legacy_exception_behaviour); //--- constructors /** @@ -1051,15 +1051,18 @@ public class AMQSession_0_10 extends AMQ AMQException amqe = new AMQException(AMQConstant.getConstant(code), _isHardError, se.getMessage(), se.getCause()); _currentException = amqe; } -cancelTimerTask(); -stopDispatcherThread(); -try -{ -closed(_currentException); -} -catch(Exception e) +if (!_isHardError) { -_logger.warn(Error closing session, e); +cancelTimerTask(); +stopDispatcherThread(); +try +{ +closed(_currentException); +} +catch(Exception e) +{ +_logger.warn(Error closing session, e); +} } getAMQConnection().exceptionReceived(_currentException); } - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
svn commit: r1367354 - in /qpid/trunk/qpid/python/qpid: selector.py tests/messaging/endpoints.py
Author: rhs Date: Mon Jul 30 23:03:46 2012 New Revision: 1367354 URL: http://svn.apache.org/viewvc?rev=1367354view=rev Log: QPID-4147: made selector handle interrupt based on patch from siddesh Modified: qpid/trunk/qpid/python/qpid/selector.py qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py Modified: qpid/trunk/qpid/python/qpid/selector.py URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/selector.py?rev=1367354r1=1367353r2=1367354view=diff == --- qpid/trunk/qpid/python/qpid/selector.py (original) +++ qpid/trunk/qpid/python/qpid/selector.py Mon Jul 30 23:03:46 2012 @@ -16,7 +16,7 @@ # specific language governing permissions and limitations # under the License. # -import atexit, time +import atexit, time, errno from compat import select, set, selectable_waiter from threading import Thread, Lock @@ -111,12 +111,24 @@ class Selector: else: wakeup = min(wakeup, t) - if wakeup is None: -timeout = None - else: -timeout = max(0, wakeup - time.time()) + rd = [] + wr = [] + ex = [] - rd, wr, ex = select(self.reading, self.writing, (), timeout) + while True: +try: + if wakeup is None: +timeout = None + else: +timeout = max(0, wakeup - time.time()) + rd, wr, ex = select(self.reading, self.writing, (), timeout) + break +except Exception, (err, strerror): + # Repeat the select call if we were interrupted. + if err == errno.EINTR: +continue + else: +raise for sel in wr: if sel.writing(): Modified: qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py?rev=1367354r1=1367353r2=1367354view=diff == --- qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py (original) +++ qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py Mon Jul 30 23:03:46 2012 @@ -1333,3 +1333,15 @@ class SenderTests(Base): self.drain(self.rcv, expected=msgs) self.ssn.acknowledge() assert caught, did not exceed capacity + + def testEINTR(self): +m1 = self.content(testEINTR, 0) +m2 = self.content(testEINTR, 1) + +self.snd.send(m1, timeout=self.timeout()) +try: + os.setuid(500) + assert False, setuid should fail +except: + pass +self.snd.send(m2, timeout=self.timeout()) - To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org
svn commit: r1367355 - in /qpid/proton/trunk/proton-c: CMakeLists.txt bindings/CMakeLists.txt bindings/python/CMakeLists.txt bindings/ruby/CMakeLists.txt docs/api/CMakeLists.txt
Author: rhs Date: Mon Jul 30 23:04:17 2012 New Revision: 1367355 URL: http://svn.apache.org/viewvc?rev=1367355view=rev Log: updated build to install python and ruby bindings Modified: qpid/proton/trunk/proton-c/CMakeLists.txt qpid/proton/trunk/proton-c/bindings/CMakeLists.txt qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt Modified: qpid/proton/trunk/proton-c/CMakeLists.txt URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff == --- qpid/proton/trunk/proton-c/CMakeLists.txt (original) +++ qpid/proton/trunk/proton-c/CMakeLists.txt Mon Jul 30 23:04:17 2012 @@ -56,7 +56,7 @@ add_library ( src/messenger.c ) -include(FindSWIG) +find_package(SWIG) if (SWIG_FOUND) add_subdirectory(bindings) endif (SWIG_FOUND) Modified: qpid/proton/trunk/proton-c/bindings/CMakeLists.txt URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff == --- qpid/proton/trunk/proton-c/bindings/CMakeLists.txt (original) +++ qpid/proton/trunk/proton-c/bindings/CMakeLists.txt Mon Jul 30 23:04:17 2012 @@ -28,7 +28,7 @@ if (PYTHONLIBS_FOUND) endif (PYTHONLIBS_FOUND) # Build wrapper for Ruby: -include(FindRuby) +find_package(Ruby) if (RUBY_FOUND) add_subdirectory(ruby) endif (RUBY_FOUND) Modified: qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff == --- qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt (original) +++ qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt Mon Jul 30 23:04:17 2012 @@ -3,3 +3,24 @@ set(CMAKE_SWIG_FLAGS -threads) swig_add_module(cproton python python.i) include_directories (${PYTHON_INCLUDE_PATH}) swig_link_libraries(cproton ${BINDING_DEPS} ${PYTHON_LIBRARIES}) + +find_package(PythonInterp REQUIRED) + +execute_process(COMMAND ${PYTHON_EXECUTABLE} +-c from distutils.sysconfig import get_python_lib; print get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}') +OUTPUT_VARIABLE PYTHON_SITEARCH_PACKAGES +OUTPUT_STRIP_TRAILING_WHITESPACE) + +install(CODE execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile cproton.py + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})) +install(CODE execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile cproton.py + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cproton.py + ${CMAKE_CURRENT_BINARY_DIR}/cproton.pyc + ${CMAKE_CURRENT_BINARY_DIR}/cproton.pyo +DESTINATION ${PYTHON_SITEARCH_PACKAGES} +COMPONENT Python) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/_cproton.so +RENAME _cproton.so +DESTINATION ${PYTHON_SITEARCH_PACKAGES} +COMPONENT Python) Modified: qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff == --- qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt (original) +++ qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt Mon Jul 30 23:04:17 2012 @@ -24,3 +24,14 @@ set_target_properties(cproton-ruby PROPE add_custom_command(TARGET cproton-ruby POST_BUILD COMMAND cmake -E rename cproton-ruby.so cproton.so) + +execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e puts RbConfig::CONFIG['prefix'] +OUTPUT_VARIABLE RUBY_PREFIX +OUTPUT_STRIP_TRAILING_WHITESPACE) + +string(REPLACE ${RUBY_PREFIX} ${CMAKE_INSTALL_PREFIX} RUBY_PFX_ARCH_DIR ${RUBY_ARCH_DIR}) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cproton.so +RENAME cproton.so +DESTINATION ${RUBY_PFX_ARCH_DIR} +COMPONENT Ruby) Modified: qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff == --- qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt (original) +++ qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt Mon Jul 30 23:04:17 2012 @@ -17,19 +17,20 @@ # under the License. # -include(FindDoxygen) +find_package(Doxygen) if (DOXYGEN_FOUND) -configure_file (${CMAKE_CURRENT_SOURCE_DIR}/user.doxygen.in -