[ros-ros-comm] 06/16: Imported Upstream version 1.12.1

Leopold Palomo-Avellaneda leo at alaxarxa.net
Fri May 20 21:20:30 UTC 2016


This is an automated email from the git hooks/post-receive script.

lepalom-guest pushed a commit to branch master
in repository ros-ros-comm.

commit afdea78482f1e632cedc4a2cc746a78bb38f13a0
Author: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
Date:   Tue May 17 15:24:39 2016 +0200

    Imported Upstream version 1.12.1
---
 clients/roscpp/CHANGELOG.rst                       |   4 +
 clients/roscpp/CMakeLists.txt                      |   2 +-
 clients/roscpp/package.xml                         |   2 +-
 clients/rospy/CHANGELOG.rst                        |   3 +
 clients/rospy/package.xml                          |   2 +-
 ros_comm/CHANGELOG.rst                             |   3 +
 ros_comm/package.xml                               |   2 +-
 test/test_rosbag/CMakeLists.txt                    |   2 +-
 .../test_rosbag/bag_migration_tests/CMakeLists.txt |  10 +-
 test/test_rosbag/package.xml                       |   2 +-
 test/test_rosbag_storage/package.xml               |   2 +-
 test/test_roscpp/CMakeLists.txt                    |   2 +-
 test/test_roscpp/package.xml                       |   2 +-
 test/test_rosgraph/package.xml                     |   2 +-
 test/test_roslaunch/package.xml                    |   2 +-
 test/test_roslib_comm/package.xml                  |   2 +-
 test/test_rosmaster/package.xml                    |   2 +-
 test/test_rosparam/package.xml                     |   2 +-
 test/test_rospy/package.xml                        |   2 +-
 test/test_rosservice/package.xml                   |   2 +-
 test/test_rostopic/package.xml                     |   2 +-
 tools/rosbag/CHANGELOG.rst                         |   5 +
 tools/rosbag/CMakeLists.txt                        |   2 +-
 tools/rosbag/package.xml                           |   2 +-
 tools/rosbag/src/rosbag/bag.py                     |  10 +-
 tools/rosbag_storage/CHANGELOG.rst                 |   4 +
 tools/rosbag_storage/CMakeLists.txt                |   2 +-
 tools/rosbag_storage/package.xml                   |   2 +-
 tools/rosconsole/CHANGELOG.rst                     |   4 +
 tools/rosconsole/CMakeLists.txt                    |   2 +-
 tools/rosconsole/package.xml                       |   2 +-
 tools/rosgraph/CHANGELOG.rst                       |   4 +
 tools/rosgraph/package.xml                         |   2 +-
 tools/rosgraph/src/rosgraph/network.py             |  14 ++-
 tools/rosgraph/test/test_network.py                |  13 +++
 tools/roslaunch/CHANGELOG.rst                      |   4 +
 tools/roslaunch/package.xml                        |   2 +-
 tools/roslaunch/src/roslaunch/substitution_args.py | 110 +++++++++++++++------
 .../roslaunch/test/unit/test_substitution_args.py  |  28 +++++-
 tools/roslaunch/test/unit/test_xmlloader.py        |  14 +++
 tools/roslaunch/test/xml/test-arg.xml              |  25 ++++-
 tools/roslaunch/test/xml/test-if-unless.xml        |  33 +++++++
 tools/rosmaster/CHANGELOG.rst                      |   4 +
 tools/rosmaster/package.xml                        |   3 +-
 tools/rosmaster/src/rosmaster/util.py              |   4 +
 tools/rosmsg/CHANGELOG.rst                         |   3 +
 tools/rosmsg/package.xml                           |   2 +-
 tools/rosnode/CHANGELOG.rst                        |   3 +
 tools/rosnode/package.xml                          |   2 +-
 tools/rosout/CHANGELOG.rst                         |   4 +
 tools/rosout/CMakeLists.txt                        |   2 +-
 tools/rosout/package.xml                           |   2 +-
 tools/rosparam/CHANGELOG.rst                       |   3 +
 tools/rosparam/package.xml                         |   2 +-
 tools/rosservice/CHANGELOG.rst                     |   3 +
 tools/rosservice/package.xml                       |   2 +-
 tools/rostest/CHANGELOG.rst                        |   4 +
 tools/rostest/cmake/rostest-extras.cmake.em        |   1 +
 tools/rostest/package.xml                          |   2 +-
 tools/rostopic/CHANGELOG.rst                       |   3 +
 tools/rostopic/package.xml                         |   2 +-
 tools/topic_tools/CHANGELOG.rst                    |   4 +
 tools/topic_tools/CMakeLists.txt                   |   2 +-
 tools/topic_tools/package.xml                      |   2 +-
 tools/topic_tools/src/drop.cpp                     |   1 -
 utilities/message_filters/CHANGELOG.rst            |   4 +
 utilities/message_filters/CMakeLists.txt           |   2 +-
 utilities/message_filters/package.xml              |   2 +-
 utilities/roslz4/CHANGELOG.rst                     |   4 +
 utilities/roslz4/CMakeLists.txt                    |   8 +-
 utilities/roslz4/package.xml                       |   2 +-
 utilities/roslz4/src/_roslz4module.c               |   2 +
 utilities/roswtf/CHANGELOG.rst                     |   3 +
 utilities/roswtf/CMakeLists.txt                    |   4 +-
 utilities/roswtf/package.xml                       |   2 +-
 .../test/check_roswtf_command_line_online.py       |  22 ++++-
 .../test/test_roswtf_command_line_offline.py       |  23 ++++-
 utilities/xmlrpcpp/CHANGELOG.rst                   |   4 +
 utilities/xmlrpcpp/CMakeLists.txt                  |   2 +-
 utilities/xmlrpcpp/package.xml                     |   2 +-
 80 files changed, 383 insertions(+), 101 deletions(-)

diff --git a/clients/roscpp/CHANGELOG.rst b/clients/roscpp/CHANGELOG.rst
index ad4a20c..1550a5a 100644
--- a/clients/roscpp/CHANGELOG.rst
+++ b/clients/roscpp/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package roscpp
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 * improve TopicManager::instance (`#770 <https://github.com/ros/ros_comm/issues/770>`_)
diff --git a/clients/roscpp/CMakeLists.txt b/clients/roscpp/CMakeLists.txt
index c194a56..6331029 100644
--- a/clients/roscpp/CMakeLists.txt
+++ b/clients/roscpp/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(roscpp)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-std=c++11;-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS
diff --git a/clients/roscpp/package.xml b/clients/roscpp/package.xml
index f5d08a4..fdd947a 100644
--- a/clients/roscpp/package.xml
+++ b/clients/roscpp/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>roscpp</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     roscpp is a C++ implementation of ROS. It provides
     a <a href="http://www.ros.org/wiki/Client%20Libraries">client
diff --git a/clients/rospy/CHANGELOG.rst b/clients/rospy/CHANGELOG.rst
index 5dc38eb..4e5e35c 100644
--- a/clients/rospy/CHANGELOG.rst
+++ b/clients/rospy/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package rospy
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/clients/rospy/package.xml b/clients/rospy/package.xml
index 7b8c415..5e1ad90 100644
--- a/clients/rospy/package.xml
+++ b/clients/rospy/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rospy</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rospy is a pure Python client library for ROS. The rospy client
     API enables Python programmers to quickly interface with ROS <a
diff --git a/ros_comm/CHANGELOG.rst b/ros_comm/CHANGELOG.rst
index 0a35df3..2908dd9 100644
--- a/ros_comm/CHANGELOG.rst
+++ b/ros_comm/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package ros_comm
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/ros_comm/package.xml b/ros_comm/package.xml
index ee0e7b7..c4771cf 100644
--- a/ros_comm/package.xml
+++ b/ros_comm/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>ros_comm</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     ROS communications-related packages, including core client libraries (roscpp, rospy) and graph introspection tools (rostopic, rosnode, rosservice, rosparam).
   </description>
diff --git a/test/test_rosbag/CMakeLists.txt b/test/test_rosbag/CMakeLists.txt
index 5c8b3ef..41f60b4 100644
--- a/test/test_rosbag/CMakeLists.txt
+++ b/test/test_rosbag/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(test_rosbag)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS message_generation rosbag rosconsole roscpp rosgraph_msgs rostest rosunit topic_tools xmlrpcpp)
diff --git a/test/test_rosbag/bag_migration_tests/CMakeLists.txt b/test/test_rosbag/bag_migration_tests/CMakeLists.txt
index 419776e..687b080 100644
--- a/test/test_rosbag/bag_migration_tests/CMakeLists.txt
+++ b/test/test_rosbag/bag_migration_tests/CMakeLists.txt
@@ -55,9 +55,15 @@ catkin_add_nosetests(${PROJECT_BINARY_DIR}/test/migrate_test.py)
 configure_file(test/random_record.xml.in
   ${PROJECT_BINARY_DIR}/test/random_record.xml)
 add_rostest(${PROJECT_BINARY_DIR}/test/random_record.xml)
+# Make sure that the random_record test runs before either of the random_play
+# tests, both of which require a .bag file that the random_record test will
+# write into /tmp. We're making an assumption about the target names generated
+# by add_rostest(), but that naming scheme seems to be pretty stable.
 configure_file(test/random_play.xml.in
   ${PROJECT_BINARY_DIR}/test/random_play.xml)
-add_rostest(${PROJECT_BINARY_DIR}/test/random_play.xml)
+add_rostest(${PROJECT_BINARY_DIR}/test/random_play.xml
+  DEPENDENCIES run_tests_test_rosbag_rostest_test_random_record.xml)
 configure_file(test/random_play_sim.xml.in
   ${PROJECT_BINARY_DIR}/test/random_play_sim.xml)
-add_rostest(${PROJECT_BINARY_DIR}/test/random_play_sim.xml)
+add_rostest(${PROJECT_BINARY_DIR}/test/random_play_sim.xml
+  DEPENDENCIES run_tests_test_rosbag_rostest_test_random_record.xml)
diff --git a/test/test_rosbag/package.xml b/test/test_rosbag/package.xml
index 5752ce4..91bc8d9 100644
--- a/test/test_rosbag/package.xml
+++ b/test/test_rosbag/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rosbag</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     A package containing the unit tests for rosbag.
   </description>
diff --git a/test/test_rosbag_storage/package.xml b/test/test_rosbag_storage/package.xml
index 9f0c663..e140251 100644
--- a/test/test_rosbag_storage/package.xml
+++ b/test/test_rosbag_storage/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rosbag_storage</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     A package containing the unit tests for rosbag_storage.
   </description>
diff --git a/test/test_roscpp/CMakeLists.txt b/test/test_roscpp/CMakeLists.txt
index 508590e..7dd052a 100644
--- a/test/test_roscpp/CMakeLists.txt
+++ b/test/test_roscpp/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(test_roscpp)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS
diff --git a/test/test_roscpp/package.xml b/test/test_roscpp/package.xml
index b5352b0..fdfa45c 100644
--- a/test/test_roscpp/package.xml
+++ b/test/test_roscpp/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_roscpp</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Tests for roscpp which depend on rostest.
   </description>
diff --git a/test/test_rosgraph/package.xml b/test/test_rosgraph/package.xml
index 1155be3..fd98825 100644
--- a/test/test_rosgraph/package.xml
+++ b/test/test_rosgraph/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rosgraph</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Tests for rosgraph which depend on rostest.
   </description>
diff --git a/test/test_roslaunch/package.xml b/test/test_roslaunch/package.xml
index 12efcd0..a0ae0dc 100644
--- a/test/test_roslaunch/package.xml
+++ b/test/test_roslaunch/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_roslaunch</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Tests for roslaunch which depend on rostest.
   </description>
diff --git a/test/test_roslib_comm/package.xml b/test/test_roslib_comm/package.xml
index 5c5d01b..629225a 100644
--- a/test/test_roslib_comm/package.xml
+++ b/test/test_roslib_comm/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_roslib_comm</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Unit tests verifying that roslib is operating as expected.
   </description>
diff --git a/test/test_rosmaster/package.xml b/test/test_rosmaster/package.xml
index e55df88..c84d510 100644
--- a/test/test_rosmaster/package.xml
+++ b/test/test_rosmaster/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rosmaster</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Tests for rosmaster which depend on rostest.
   </description>
diff --git a/test/test_rosparam/package.xml b/test/test_rosparam/package.xml
index fcc7397..a35826e 100644
--- a/test/test_rosparam/package.xml
+++ b/test/test_rosparam/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rosparam</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     A package containing the unit tests for rosparam.
   </description>
diff --git a/test/test_rospy/package.xml b/test/test_rospy/package.xml
index 16b9f81..839ae75 100644
--- a/test/test_rospy/package.xml
+++ b/test/test_rospy/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rospy</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rospy unit and integration test framework.
   </description>
diff --git a/test/test_rosservice/package.xml b/test/test_rosservice/package.xml
index 694f9e8..98559ae 100644
--- a/test/test_rosservice/package.xml
+++ b/test/test_rosservice/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rosservice</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Tests for the rosservice tool.
   </description>
diff --git a/test/test_rostopic/package.xml b/test/test_rostopic/package.xml
index 736c1d9..8f30fb1 100644
--- a/test/test_rostopic/package.xml
+++ b/test/test_rostopic/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>test_rostopic</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Tests for rostopic.
   </description>
diff --git a/tools/rosbag/CHANGELOG.rst b/tools/rosbag/CHANGELOG.rst
index b1e8ab9..62588a6 100644
--- a/tools/rosbag/CHANGELOG.rst
+++ b/tools/rosbag/CHANGELOG.rst
@@ -2,6 +2,11 @@
 Changelog for package rosbag
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* promote the result of read_messages to a namedtuple (`#777 <https://github.com/ros/ros_comm/pull/777>`_)
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 * add missing parameter to AdvertiseOptions::createAdvertiseOptions (`#733 <https://github.com/ros/ros_comm/issues/733>`_)
diff --git a/tools/rosbag/CMakeLists.txt b/tools/rosbag/CMakeLists.txt
index e821090..8656ac3 100644
--- a/tools/rosbag/CMakeLists.txt
+++ b/tools/rosbag/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(rosbag)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS rosbag_storage rosconsole roscpp topic_tools xmlrpcpp)
diff --git a/tools/rosbag/package.xml b/tools/rosbag/package.xml
index 971bcd1..d5c0066 100644
--- a/tools/rosbag/package.xml
+++ b/tools/rosbag/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosbag</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     This is a set of tools for recording from and playing back to ROS
     topics.  It is intended to be high performance and avoids
diff --git a/tools/rosbag/src/rosbag/bag.py b/tools/rosbag/src/rosbag/bag.py
index 97620b2..f907b0a 100644
--- a/tools/rosbag/src/rosbag/bag.py
+++ b/tools/rosbag/src/rosbag/bag.py
@@ -103,6 +103,8 @@ class Compression:
     BZ2  = 'bz2'
     LZ4  = 'lz4'
 
+BagMessage = collections.namedtuple('BagMessage', 'topic message timestamp')
+
 class Bag(object):
     """
     Bag serialize messages to and from a single file on disk using the bag format.
@@ -261,7 +263,7 @@ class Bag(object):
         @type  connection_filter: function taking (topic, datatype, md5sum, msg_def, header) and returning bool
         @param raw: if True, then generate tuples of (datatype, (data, md5sum, position), pytype)
         @type  raw: bool
-        @return: generator of (topic, message, timestamp) tuples for each message in the bag file
+        @return: generator of BagMessage(topic, message, timestamp) namedtuples for each message in the bag file
         @rtype:  generator of tuples of (str, U{genpy.Message}, U{genpy.Time}) [not raw] or (str, (str, str, str, tuple, class), U{genpy.Time}) [raw]
         """
         self.flush()
@@ -1842,7 +1844,7 @@ class _BagReader102_Unindexed(_BagReader):
                 msg = msg_type()
                 msg.deserialize(data)
 
-            yield (topic, msg, t)
+            yield BagMessage(topic, msg, t)
 
         self.bag._connection_indexes_read = True
 
@@ -2061,7 +2063,7 @@ class _BagReader102_Indexed(_BagReader102_Unindexed):
             msg = msg_type()
             msg.deserialize(data)
         
-        return (topic, msg, t)
+        return BagMessage(topic, msg, t)
 
 class _BagReader200(_BagReader):
     """
@@ -2478,7 +2480,7 @@ class _BagReader200(_BagReader):
             msg = msg_type()
             msg.deserialize(data)
         
-        return (connection_info.topic, msg, t)
+        return BagMessage(connection_info.topic, msg, t)
 
 def _time_to_str(secs):
     secs_frac = secs - int(secs) 
diff --git a/tools/rosbag_storage/CHANGELOG.rst b/tools/rosbag_storage/CHANGELOG.rst
index bcae642..ce492e5 100644
--- a/tools/rosbag_storage/CHANGELOG.rst
+++ b/tools/rosbag_storage/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package rosbag_storage
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosbag_storage/CMakeLists.txt b/tools/rosbag_storage/CMakeLists.txt
index 5f64a1b..a951ddb 100644
--- a/tools/rosbag_storage/CMakeLists.txt
+++ b/tools/rosbag_storage/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(rosbag_storage)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(console_bridge REQUIRED)
diff --git a/tools/rosbag_storage/package.xml b/tools/rosbag_storage/package.xml
index c1a640e..1af1fb9 100644
--- a/tools/rosbag_storage/package.xml
+++ b/tools/rosbag_storage/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosbag_storage</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     This is a set of tools for recording from and playing back ROS
     message without relying on the ROS client library.
diff --git a/tools/rosconsole/CHANGELOG.rst b/tools/rosconsole/CHANGELOG.rst
index 01ab8f9..f5a6644 100644
--- a/tools/rosconsole/CHANGELOG.rst
+++ b/tools/rosconsole/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package rosconsole
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 * make LogAppender and Token destructor virtual (`#729 <https://github.com/ros/ros_comm/issues/729>`_)
diff --git a/tools/rosconsole/CMakeLists.txt b/tools/rosconsole/CMakeLists.txt
index b31a9d6..d2b34d2 100644
--- a/tools/rosconsole/CMakeLists.txt
+++ b/tools/rosconsole/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(rosconsole)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS cpp_common rostime rosunit)
diff --git a/tools/rosconsole/package.xml b/tools/rosconsole/package.xml
index a41eba7..4e0757a 100644
--- a/tools/rosconsole/package.xml
+++ b/tools/rosconsole/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosconsole</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>ROS console output library.</description>
   <maintainer email="dthomas at osrfoundation.org">Dirk Thomas</maintainer>
   <license>BSD</license>
diff --git a/tools/rosgraph/CHANGELOG.rst b/tools/rosgraph/CHANGELOG.rst
index a15164e..f2c5f09 100644
--- a/tools/rosgraph/CHANGELOG.rst
+++ b/tools/rosgraph/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package rosgraph
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* fix str conversion in encode_ros_handshake_header (`#792 <https://github.com/ros/ros_comm/pull/792>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosgraph/package.xml b/tools/rosgraph/package.xml
index cafd2f0..0f3b412 100644
--- a/tools/rosgraph/package.xml
+++ b/tools/rosgraph/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosgraph</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rosgraph contains the rosgraph command-line tool, which prints
     information about the ROS Computation Graph. It also provides an
diff --git a/tools/rosgraph/src/rosgraph/network.py b/tools/rosgraph/src/rosgraph/network.py
index 7e7cd57..35c35ed 100644
--- a/tools/rosgraph/src/rosgraph/network.py
+++ b/tools/rosgraph/src/rosgraph/network.py
@@ -398,11 +398,15 @@ def encode_ros_handshake_header(header):
     str_cls = str if python3 else unicode
     
     # encode all unicode keys in the header. Ideally, the type of these would be specified by the api
-    for k, v in sorted(header.items()):
-        if isinstance(k, str_cls): k = k.encode('utf-8')
-        if isinstance(v, str_cls): v = v.encode('utf-8')
-    
-    fields = [k + b"=" + v for k, v in sorted(header.items())]
+    encoded_header = {}
+    for k, v in header.items():
+        if isinstance(k, str_cls):
+            k = k.encode('utf-8')
+        if isinstance(v, str_cls):
+            v = v.encode('utf-8')
+        encoded_header[k] = v
+
+    fields = [k + b"=" + v for k, v in sorted(encoded_header.items())]
     s = b''.join([struct.pack('<I', len(f)) + f for f in fields])
     
     return struct.pack('<I', len(s)) + s
diff --git a/tools/rosgraph/test/test_network.py b/tools/rosgraph/test/test_network.py
index 482b04d..8511204 100644
--- a/tools/rosgraph/test/test_network.py
+++ b/tools/rosgraph/test/test_network.py
@@ -71,6 +71,19 @@ class NetworkTest(unittest.TestCase):
         encoded = encoded+struct.pack('<I', len(s))+s        
         assert struct.pack('<I', len(encoded))+encoded == \
             encode_ros_handshake_header(d)
+        if sys.version_info > (3, 0):
+            assert \
+                encode_ros_handshake_header(
+                    {'a': 'b', 'c': 'd', 'e': 'f'}) == \
+                encode_ros_handshake_header(
+                    {b'a': 'b', 'c': b'd', b'e': b'f'})
+        else:
+            assert \
+                encode_ros_handshake_header(
+                    {'a': 'b', 'c': 'd', 'e': 'f'}) == \
+                encode_ros_handshake_header(
+                    {u'a': 'b', 'c': u'd', u'e': u'f'})
+
       
     def test_decode_ros_handshake_header(self):
         from rosgraph.network import decode_ros_handshake_header, ROSHandshakeException
diff --git a/tools/roslaunch/CHANGELOG.rst b/tools/roslaunch/CHANGELOG.rst
index a716572..79c45eb 100644
--- a/tools/roslaunch/CHANGELOG.rst
+++ b/tools/roslaunch/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package roslaunch
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* add support for Python expressions (`#784 <https://github.com/ros/ros_comm/pull/784>`_, `#793 <https://github.com/ros/ros_comm/pull/793>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/roslaunch/package.xml b/tools/roslaunch/package.xml
index 9b0664c..58b4b9f 100644
--- a/tools/roslaunch/package.xml
+++ b/tools/roslaunch/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>roslaunch</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     roslaunch is a tool for easily launching multiple ROS <a
     href="http://ros.org/wiki/Nodes">nodes</a> locally and remotely
diff --git a/tools/roslaunch/src/roslaunch/substitution_args.py b/tools/roslaunch/src/roslaunch/substitution_args.py
index 1ad0185..6e06bef 100644
--- a/tools/roslaunch/src/roslaunch/substitution_args.py
+++ b/tools/roslaunch/src/roslaunch/substitution_args.py
@@ -46,6 +46,8 @@ except ImportError:
 
 import rosgraph.names
 import rospkg
+from roslaunch.loader import convert_value
+import math
 
 _rospack = None
 
@@ -60,6 +62,12 @@ class ArgException(SubstitutionException):
     """
     pass
 
+def _eval_env(name):
+    try:
+        return os.environ[name]
+    except KeyError as e:
+        raise SubstitutionException("environment variable %s is not set" % str(e))
+
 def _env(resolved, a, args, context):
     """
     process $(env) arg
@@ -69,10 +77,12 @@ def _env(resolved, a, args, context):
     """
     if len(args) != 1:
         raise SubstitutionException("$(env var) command only accepts one argument [%s]"%a)
-    try:
-        return resolved.replace("$(%s)"%a, os.environ[args[0]])
-    except KeyError as e:
-        raise SubstitutionException("environment variable %s is not set"%str(e))
+    return resolved.replace("$(%s)" % a, _eval_env(args[0]))
+
+def _eval_optenv(name, default=''):
+    if name in os.environ:
+        return os.environ[name]
+    return default
 
 def _optenv(resolved, a, args, context):
     """
@@ -83,13 +93,15 @@ def _optenv(resolved, a, args, context):
     """
     if len(args) == 0:
         raise SubstitutionException("$(optenv var) must specify an environment variable [%s]"%a)
-    if args[0] in os.environ:
-        return resolved.replace("$(%s)"%a, os.environ[args[0]])
-    elif len(args) > 1:
-        return resolved.replace("$(%s)"%a, ' '.join(args[1:]))
-    else:
-        return resolved.replace("$(%s)"%a, '')
-    
+    return resolved.replace("$(%s)" % a, _eval_optenv(args[0], default=' '.join(args[1:])))
+
+def _eval_anon(id, anons):
+    if id in anons:
+        return anons[id]
+    resolve_to = rosgraph.names.anonymous_name(id)
+    anons[id] = resolve_to
+    return resolve_to
+
 def _anon(resolved, a, args, context):
     """
     process $(anon) arg
@@ -102,17 +114,14 @@ def _anon(resolved, a, args, context):
         raise SubstitutionException("$(anon var) must specify a name [%s]"%a)
     elif len(args) > 1:
         raise SubstitutionException("$(anon var) may only specify one name [%s]"%a)
-    id = args[0]
     if 'anon' not in context:
         context['anon'] = {}
     anon_context = context['anon']
-    if id in anon_context:
-        return resolved.replace("$(%s)"%a, anon_context[id])
-    else:
-        resolve_to = rosgraph.names.anonymous_name(id)
-        anon_context[id] = resolve_to
-        return resolved.replace("$(%s)"%a, resolve_to)
+    return resolved.replace("$(%s)" % a, _eval_anon(id=args[0], anons=anon_context))
 
+def _eval_find(pkg):
+    rp = _get_rospack()
+    return rp.get_path(pkg)
 
 def _find(resolved, a, args, context):
     """
@@ -245,6 +254,12 @@ def _get_rospack():
     return _rospack
 
 
+def _eval_arg(name, args):
+    try:
+        return args[name]
+    except KeyError:
+        raise ArgException(name)
+
 def _arg(resolved, a, args, context):
     """
     process $(arg) arg
@@ -253,21 +268,58 @@ def _arg(resolved, a, args, context):
     :raises: :exc:`ArgException` If arg invalidly specified
     """
     if len(args) == 0:
-        raise SubstitutionException("$(arg var) must specify an environment variable [%s]"%(a))
+        raise SubstitutionException("$(arg var) must specify a variable name [%s]"%(a))
     elif len(args) > 1:
         raise SubstitutionException("$(arg var) may only specify one arg [%s]"%(a))
     
     if 'arg' not in context:
         context['arg'] = {}
-    arg_context = context['arg']
+    return resolved.replace("$(%s)" % a, _eval_arg(name=args[0], args=context['arg']))
+
+# Create a dictionary of global symbols that will be available in the eval
+# context.  We disable all the builtins, then add back True and False, and also
+# add true and false for convenience (because we accept those lower-case strings
+# as boolean values in XML).
+_eval_dict={
+    'true': True, 'false': False,
+    'True': True, 'False': False,
+    '__builtins__': {k: __builtins__[k] for k in ['list', 'dict', 'map', 'str', 'float', 'int']},
+    'env': _eval_env,
+    'optenv': _eval_optenv,
+    'find': _eval_find
+}
+# also define all math symbols and functions
+_eval_dict.update(math.__dict__)
+
+class _DictWrapper(object):
+    def __init__(self, args, functions):
+        self._args = args
+        self._functions = functions
+
+    def __getitem__(self, key):
+        try:
+            return self._functions[key]
+        except KeyError:
+            return convert_value(self._args[key], 'auto')
 
-    arg_name = args[0]
-    if arg_name in arg_context:
-        arg_value = arg_context[arg_name]
-        return resolved.replace("$(%s)"%a, arg_value)
-    else:
-        raise ArgException(arg_name)
+def _eval(s, context):
+    if 'anon' not in context:
+        context['anon'] = {}
+    if 'arg' not in context:
+        context['arg'] = {}
+
+    # inject correct anon context
+    def _eval_anon_context(id): return _eval_anon(id, anons=context['anon'])
+    # inject arg context
+    def _eval_arg_context(name): return convert_value(_eval_arg(name, args=context['arg']), 'auto')
+    functions = dict(anon=_eval_anon_context, arg=_eval_arg_context)
+    functions.update(_eval_dict)
 
+    # ignore values containing double underscores (for safety)
+    # http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
+    if s.find('__') >= 0:
+        raise SubstitutionException("$(eval ...) may not contain double underscore expressions")
+    return str(eval(s, {}, _DictWrapper(context['arg'], functions)))
 
 def resolve_args(arg_str, context=None, resolve_anon=True):
     """
@@ -294,9 +346,11 @@ def resolve_args(arg_str, context=None, resolve_anon=True):
     """
     if context is None:
         context = {}
-    #parse found substitution args
     if not arg_str:
         return arg_str
+    # special handling of $(eval ...)
+    if arg_str.startswith('$(eval ') and arg_str.endswith(')'):
+        return _eval(arg_str[7:-1], context)
     # first resolve variables like 'env' and 'arg'
     commands = {
         'env': _env,
@@ -305,7 +359,7 @@ def resolve_args(arg_str, context=None, resolve_anon=True):
         'arg': _arg,
     }
     resolved = _resolve_args(arg_str, context, resolve_anon, commands)
-    # than resolve 'find' as it requires the subsequent path to be expanded already
+    # then resolve 'find' as it requires the subsequent path to be expanded already
     commands = {
         'find': _find,
     }
diff --git a/tools/roslaunch/test/unit/test_substitution_args.py b/tools/roslaunch/test/unit/test_substitution_args.py
index adc3d72..630896c 100644
--- a/tools/roslaunch/test/unit/test_substitution_args.py
+++ b/tools/roslaunch/test/unit/test_substitution_args.py
@@ -95,7 +95,7 @@ def test_resolve_args():
     assert roslaunch_dir
 
     anon_context = {'foo': 'bar'}
-    arg_context = {'fuga': 'hoge', 'car': 'cdr'}
+    arg_context = {'fuga': 'hoge', 'car': 'cdr', 'arg': 'foo', 'True': 'False'}
     context = {'anon': anon_context, 'arg': arg_context }
         
     tests = [
@@ -130,9 +130,31 @@ def test_resolve_args():
         ('$(arg fuga)$(arg fuga)', 'hogehoge'),
         ('$(arg car)$(arg fuga)', 'cdrhoge'),
         ('$(arg fuga)hoge', 'hogehoge'),
-        ]
+
+        # $(eval ...) versions of those tests
+        ("$(eval find('roslaunch'))", roslaunch_dir),
+        ("$(eval env('ROS_ROOT'))", os.environ['ROS_ROOT']),
+        ("$(eval optenv('ROS_ROOT', 'alternate text'))", os.environ['ROS_ROOT']),
+        ("$(eval optenv('NOT_ROS_ROOT', 'alternate text'))", "alternate text"),
+        ("$(eval optenv('NOT_ROS_ROOT'))", ""),
+        ("$(eval anon('foo'))", 'bar'),
+        ("$(eval arg('fuga'))", 'hoge'),
+        ('$(eval arg("fuga"))', 'hoge'),
+        ('$(eval arg("arg"))', 'foo'),
+        ('$(eval arg("True"))', 'False'),
+        ('$(eval 1==1)', 'True'),
+        ('$(eval [0,1,2][1])', '1'),
+        # test implicit arg access
+        ('$(eval fuga)', 'hoge'),
+        ('$(eval True)', 'True'),
+        # math expressions
+        ('$(eval round(sin(pi),1))', '0.0'),
+        ('$(eval cos(0))', '1.0'),
+        # str, map
+        ("$(eval ''.join(map(str, [4,2])))", '42'),
+    ]
     for arg, val in tests:
-        assert val == resolve_args(arg, context=context)
+        assert val == resolve_args(arg, context=context), arg
 
     # more #1776
     r = resolve_args('$(anon foo)/bar')
diff --git a/tools/roslaunch/test/unit/test_xmlloader.py b/tools/roslaunch/test/unit/test_xmlloader.py
index 0ffab6c..a796de4 100644
--- a/tools/roslaunch/test/unit/test_xmlloader.py
+++ b/tools/roslaunch/test/unit/test_xmlloader.py
@@ -816,11 +816,17 @@ class TestXmlLoader(unittest.TestCase):
         for k in keys:
             self.assert_('/'+k+'_pass' in param_d, param_d)
             self.failIf('/'+k+'_fail' in param_d, k)
+            # Also check the result of Python-parsed expressions
+            self.assert_('/py_'+k+'_pass' in param_d, param_d)
+            self.failIf('/py_'+k+'_fail' in param_d, k)
 
         n = mock.nodes[0]
         for k in ['if', 'unless']:
             self.assert_(['from_%s_pass'%k, 'to_%s_pass'%k] in n.remap_args)
             self.failIf(['from_%s_fail'%k, 'to_%s_fail'%k] in n.remap_args)            
+            # Also check the result of Python-parsed expressions
+            self.assert_(['py_from_%s_pass'%k, 'py_to_%s_pass'%k] in n.remap_args)
+            self.failIf(['py_from_%s_fail'%k, 'py_to_%s_fail'%k] in n.remap_args)
         
     def test_if_unless_invalid(self):
         mock = RosLaunchMock()
@@ -877,11 +883,15 @@ class TestXmlLoader(unittest.TestCase):
         self.assertEquals(param_d['/p2_test'], 'not_set')
         self.assertEquals(param_d['/p3_test'], 'set')
         self.assertEquals(param_d['/succeed'], 'yes')                
+        self.assertEquals(param_d['/py_succeed'], 'yes')
         self.assertEquals(param_d['/if_test'], 'not_ran')                
+        self.assertEquals(param_d['/py_if_test'], 'not_ran')
         self.assertEquals(param_d['/if_param'], False)   
+        self.assertEquals(param_d['/py_if_param'], False)
         self.assertEquals(param_d['/int_param'], 1234)   
         self.assertAlmostEquals(param_d['/float_param'], 3.)   
         self.failIf('/fail' in param_d)
+        self.failIf('/py_fail' in param_d)
 
         # context tests
         #  - args are scoped to their context, and thus can be rebound in a sibling context
@@ -918,9 +928,13 @@ class TestXmlLoader(unittest.TestCase):
         self.assertEquals(param_d['/context1'], 'group1')
         self.assertEquals(param_d['/context2'], 'group2')                
         self.assertEquals(param_d['/succeed'], 'yes')                
+        self.assertEquals(param_d['/py_succeed'], 'yes')
         self.assertEquals(param_d['/if_test'], 'ran')   
+        self.assertEquals(param_d['/py_if_test'], 'ran')
         self.assertEquals(param_d['/if_param'], True)   
+        self.assertEquals(param_d['/py_if_param'], True)
         self.failIf('/fail' in param_d)
+        self.failIf('/py_fail' in param_d)
 
         # include tests
         self.assertEquals(param_d['/include_test/p1_test'], 'required1')
diff --git a/tools/roslaunch/test/xml/test-arg.xml b/tools/roslaunch/test/xml/test-arg.xml
index 44b8133..b951150 100644
--- a/tools/roslaunch/test/xml/test-arg.xml
+++ b/tools/roslaunch/test/xml/test-arg.xml
@@ -2,7 +2,7 @@
 
   <arg name="required" />
   <arg name="if_test" />
-  
+
   <arg name="optional" default="not_set" />
   <arg name="grounded" value="set" />
 
@@ -22,11 +22,15 @@
   <arg if="$(arg if_test)" name="if_param_value" value="true" />
   <arg unless="$(arg if_test)" name="if_param_value" value="false" />
 
+  <arg if="$(arg if_test)" name="py_if_param_value" value="$(eval 1 == 1)"/>
+  <arg unless="$(arg if_test)" name="py_if_param_value" value="$(eval 1 == 0)"/>
+
   <param name="$(arg param1_name)_test" value="$(arg param1_value)" />
   <param name="$(arg param2_name)_test" value="$(arg param2_value)" />
   <param name="$(arg param3_name)_test" value="$(arg param3_value)" />
 
   <param name="if_param" value="$(arg if_param_value)" />
+  <param name="py_if_param" value="$(arg py_if_param_value)" />
   <param name="int_param" value="$(arg int_value)" />
   <param name="float_param" value="$(arg float_value)" />  
   
@@ -57,6 +61,23 @@
     <param name="if_test" value="not_ran" />
   </group>
 
+  <arg name="py_fail" value="$(eval 0 > 1)"/>
+  <group if="$(eval py_fail == True)">
+    <param name="py_fail" value="fail" />
+  </group>
+
+  <group unless="$(eval arg('py_fail') == True)">
+    <param name="py_succeed" value="yes" />
+  </group>
+
+  <group if="$(eval if_test == True)">
+    <param name="py_if_test" value="ran" />
+  </group>
+
+  <group unless="$(eval arg('if_test') == True)">
+    <param name="py_if_test" value="not_ran" />
+  </group>
+
   <include file="$(find roslaunch)/test/xml/test-arg-include.xml">
     <arg name="required" value="required1" />
     <arg name="include_arg" value="$(arg include_arg)" />
@@ -74,6 +95,4 @@
     <arg name="include_arg" value="new3" />
   </include>
   
-
-
 </launch>
diff --git a/tools/roslaunch/test/xml/test-if-unless.xml b/tools/roslaunch/test/xml/test-if-unless.xml
index 5e29ca8..b450bde 100644
--- a/tools/roslaunch/test/xml/test-if-unless.xml
+++ b/tools/roslaunch/test/xml/test-if-unless.xml
@@ -25,6 +25,39 @@
   <remap from="from_unless_pass" to="to_unless_pass" unless="0" />
   <remap from="from_unless_fail" to="to_unless_fail" unless="1" />  
 
+  <!-- Test Python parsing -->
+  <group if="$(eval 1 == 1)">
+     <param name="py_group_if_pass" value="1" />
+  </group>
+  <group if="$(eval 0 == 1)">
+     <param name="py_group_if_fail" value="1" />
+  </group>
+  <group unless="$(eval 0 == 1)">
+     <param name="py_group_unless_pass" value="1" />
+  </group>
+  <group unless="$(eval 1 == 1)">
+     <param name="py_group_unless_fail" value="1" />
+  </group>
+
+  <arg name="true_lower" value="true"/>
+  <arg name="true_upper" value="True"/>
+  <arg name="false_lower" value="false"/>
+  <arg name="false_upper" value="False"/>
+
+  <param name="py_param_if_pass" value="1" if="$(eval arg('true_lower') and (40+2) == 42)"/>
+  <param name="py_param_if_fail" value="1" if="$(eval false_lower or (40-2) != 38)"/>
+
+  <param name="py_param_unless_pass" value="1" unless="$(eval arg('false_upper') or 1 < 1)"/>
+  <param name="py_param_unless_fail" value="1" unless="$(eval true_upper and 1 >= 1)"/>
+
+  <remap from="py_from_if_pass" to="py_to_if_pass" if="$(eval arg('true_upper') == True)"/>
+  <remap from="py_from_if_fail" to="py_to_if_fail" if="$(eval false_upper != False)"/>
+
+  <remap from="py_from_unless_pass" to="py_to_unless_pass"
+         unless="$(eval arg('false_lower') or false_upper or arg('false_upper') != False)"/>
+  <remap from="py_from_unless_fail" to="py_to_unless_fail"
+         unless="$(eval arg('true_lower') and true_upper and arg('true_upper') == True)"/>
+
   <node name="remap" pkg="rospy" type="talker.py" />
 
 </launch>
diff --git a/tools/rosmaster/CHANGELOG.rst b/tools/rosmaster/CHANGELOG.rst
index 2cbd710..93f1311 100644
--- a/tools/rosmaster/CHANGELOG.rst
+++ b/tools/rosmaster/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package rosmaster
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use defusedxml to prevent common xml issues (`#782 <https://github.com/ros/ros_comm/pull/782>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosmaster/package.xml b/tools/rosmaster/package.xml
index bbbd9f1..d322b65 100644
--- a/tools/rosmaster/package.xml
+++ b/tools/rosmaster/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosmaster</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     ROS <a href="http://ros.org/wiki/Master">Master</a> implementation.
   </description>
@@ -13,6 +13,7 @@
   <buildtool_depend version_gte="0.5.68">catkin</buildtool_depend>
 
   <run_depend>rosgraph</run_depend>
+  <run_depend>python-defusedxml</run_depend>
 
   <export>
     <rosdoc config="rosdoc.yaml"/>
diff --git a/tools/rosmaster/src/rosmaster/util.py b/tools/rosmaster/src/rosmaster/util.py
index e774629..5b9e3d1 100644
--- a/tools/rosmaster/src/rosmaster/util.py
+++ b/tools/rosmaster/src/rosmaster/util.py
@@ -45,6 +45,10 @@ try:
 except ImportError:
     from xmlrpclib import ServerProxy
 
+from defusedxml.xmlrpc import monkey_patch
+monkey_patch()
+del monkey_patch
+
 _proxies = {} #cache ServerProxys
 def xmlrpcapi(uri):
     """
diff --git a/tools/rosmsg/CHANGELOG.rst b/tools/rosmsg/CHANGELOG.rst
index 43f6050..e633098 100644
--- a/tools/rosmsg/CHANGELOG.rst
+++ b/tools/rosmsg/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package rosmsg
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosmsg/package.xml b/tools/rosmsg/package.xml
index 12fdd8b..b6bf964 100644
--- a/tools/rosmsg/package.xml
+++ b/tools/rosmsg/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosmsg</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rosmsg contains two command-line tools: <tt>rosmsg</tt> and
     <tt>rossrv</tt>. <tt>rosmsg</tt> is a command-line tool for
diff --git a/tools/rosnode/CHANGELOG.rst b/tools/rosnode/CHANGELOG.rst
index 5c613fe..b1bb3e5 100644
--- a/tools/rosnode/CHANGELOG.rst
+++ b/tools/rosnode/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package rosnode
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosnode/package.xml b/tools/rosnode/package.xml
index a3f1cab..2022ad3 100644
--- a/tools/rosnode/package.xml
+++ b/tools/rosnode/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosnode</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rosnode is a command-line tool for displaying debug information
     about ROS <a href="http://www.ros.org/wiki/Nodes">Nodes</a>,
diff --git a/tools/rosout/CHANGELOG.rst b/tools/rosout/CHANGELOG.rst
index 3ea36f8..c2e2544 100644
--- a/tools/rosout/CHANGELOG.rst
+++ b/tools/rosout/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package rosout
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosout/CMakeLists.txt b/tools/rosout/CMakeLists.txt
index 526cb62..eeed244 100644
--- a/tools/rosout/CMakeLists.txt
+++ b/tools/rosout/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(rosout)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS roscpp)
diff --git a/tools/rosout/package.xml b/tools/rosout/package.xml
index b40e309..fc99e11 100644
--- a/tools/rosout/package.xml
+++ b/tools/rosout/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosout</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
      System-wide logging mechanism for messages sent to the /rosout topic.
   </description>
diff --git a/tools/rosparam/CHANGELOG.rst b/tools/rosparam/CHANGELOG.rst
index c090b47..c6da53b 100644
--- a/tools/rosparam/CHANGELOG.rst
+++ b/tools/rosparam/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package rosparam
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosparam/package.xml b/tools/rosparam/package.xml
index ac07ed8..3a53fdd 100644
--- a/tools/rosparam/package.xml
+++ b/tools/rosparam/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosparam</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rosparam contains the rosparam command-line tool for getting and
     setting ROS Parameters on the <a
diff --git a/tools/rosservice/CHANGELOG.rst b/tools/rosservice/CHANGELOG.rst
index bdfb496..3fa7761 100644
--- a/tools/rosservice/CHANGELOG.rst
+++ b/tools/rosservice/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package rosservice
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rosservice/package.xml b/tools/rosservice/package.xml
index e9de2a1..501772e 100644
--- a/tools/rosservice/package.xml
+++ b/tools/rosservice/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rosservice</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rosservice contains the rosservice command-line tool for listing
     and querying ROS <a
diff --git a/tools/rostest/CHANGELOG.rst b/tools/rostest/CHANGELOG.rst
index 36be185..7edb9fe 100644
--- a/tools/rostest/CHANGELOG.rst
+++ b/tools/rostest/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package rostest
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* fix passing multiple args to add_rostest (fix `#790 <https://github.com/ros/ros_comm/issues/790>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rostest/cmake/rostest-extras.cmake.em b/tools/rostest/cmake/rostest-extras.cmake.em
index e2562aa..6c13124 100644
--- a/tools/rostest/cmake/rostest-extras.cmake.em
+++ b/tools/rostest/cmake/rostest-extras.cmake.em
@@ -52,6 +52,7 @@ function(add_rostest file)
 
   get_filename_component(_output_name ${_testname} NAME_WE)
   set(_output_name "${_output_name}.xml")
+  string(REPLACE ";" " " _rostest_ARGS "${_rostest_ARGS}")
   set(cmd "${ROSTEST_EXE} --pkgdir=${PROJECT_SOURCE_DIR} --package=${PROJECT_NAME} --results-filename ${_output_name} --results-base-dir \"${CATKIN_TEST_RESULTS_DIR}\" ${_file_name} ${_rostest_ARGS}")
   catkin_run_tests_target("rostest" ${_testname} "rostest-${_output_name}" COMMAND ${cmd} WORKING_DIRECTORY ${_rostest_WORKING_DIRECTORY} DEPENDENCIES ${_rostest_DEPENDENCIES})
 endfunction()
diff --git a/tools/rostest/package.xml b/tools/rostest/package.xml
index f020963..e45e8e9 100644
--- a/tools/rostest/package.xml
+++ b/tools/rostest/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rostest</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
      Integration test suite based on roslaunch that is compatible with xUnit frameworks.
   </description>
diff --git a/tools/rostopic/CHANGELOG.rst b/tools/rostopic/CHANGELOG.rst
index 6f90023..9e06c99 100644
--- a/tools/rostopic/CHANGELOG.rst
+++ b/tools/rostopic/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package rostopic
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/rostopic/package.xml b/tools/rostopic/package.xml
index 540245f..1e372fa 100644
--- a/tools/rostopic/package.xml
+++ b/tools/rostopic/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>rostopic</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     rostopic contains the rostopic command-line tool for displaying
     debug information about
diff --git a/tools/topic_tools/CHANGELOG.rst b/tools/topic_tools/CHANGELOG.rst
index 3dc5643..2eb7b11 100644
--- a/tools/topic_tools/CHANGELOG.rst
+++ b/tools/topic_tools/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package topic_tools
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/tools/topic_tools/CMakeLists.txt b/tools/topic_tools/CMakeLists.txt
index b76dc63..bea81dd 100644
--- a/tools/topic_tools/CMakeLists.txt
+++ b/tools/topic_tools/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(topic_tools)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin COMPONENTS cpp_common message_generation rosconsole roscpp rostime std_msgs xmlrpcpp)
diff --git a/tools/topic_tools/package.xml b/tools/topic_tools/package.xml
index 90cb33d..882eb8b 100644
--- a/tools/topic_tools/package.xml
+++ b/tools/topic_tools/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>topic_tools</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     Tools for directing, throttling, selecting, and otherwise messing with
     ROS topics at a meta level. None of the programs in this package actually
diff --git a/tools/topic_tools/src/drop.cpp b/tools/topic_tools/src/drop.cpp
index 7139b63..1261f75 100644
--- a/tools/topic_tools/src/drop.cpp
+++ b/tools/topic_tools/src/drop.cpp
@@ -91,4 +91,3 @@ int main(int argc, char **argv)
   ros::spin();
   return 0;
 }
-
diff --git a/utilities/message_filters/CHANGELOG.rst b/utilities/message_filters/CHANGELOG.rst
index bbe9934..1778874 100644
--- a/utilities/message_filters/CHANGELOG.rst
+++ b/utilities/message_filters/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package message_filters
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/utilities/message_filters/CMakeLists.txt b/utilities/message_filters/CMakeLists.txt
index 67cb359..03e906a 100644
--- a/utilities/message_filters/CMakeLists.txt
+++ b/utilities/message_filters/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(message_filters)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS roscpp xmlrpcpp rosconsole)
diff --git a/utilities/message_filters/package.xml b/utilities/message_filters/package.xml
index f734151..c734f14 100644
--- a/utilities/message_filters/package.xml
+++ b/utilities/message_filters/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>message_filters</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     A set of message filters which take in messages and may output those messages at a later time, based on the conditions that filter needs met.
   </description>
diff --git a/utilities/roslz4/CHANGELOG.rst b/utilities/roslz4/CHANGELOG.rst
index b14f2f6..19243a7 100644
--- a/utilities/roslz4/CHANGELOG.rst
+++ b/utilities/roslz4/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package roslz4
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/utilities/roslz4/CMakeLists.txt b/utilities/roslz4/CMakeLists.txt
index 85dbe0a..ab1e99f 100644
--- a/utilities/roslz4/CMakeLists.txt
+++ b/utilities/roslz4/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(roslz4)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED)
@@ -27,6 +27,9 @@ catkin_package(
 
 include_directories(include ${lz4_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})
 add_library(roslz4 src/lz4s.c src/xxhash.c)
+set_source_files_properties(
+  src/lz4s.c
+PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
 target_link_libraries(roslz4 ${lz4_LIBRARIES} ${catkin_LIBRARIES})
 
 if(NOT ANDROID)
@@ -36,6 +39,9 @@ find_package(PythonLibs "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}" REQUIR
 include_directories(${PYTHON_INCLUDE_PATH})
 
 add_library(roslz4_py src/_roslz4module.c)
+set_source_files_properties(
+  src/_roslz4module.c
+PROPERTIES COMPILE_FLAGS "-Wno-missing-field-initializers -Wno-unused-variable")
 set_target_properties(
   roslz4_py PROPERTIES OUTPUT_NAME roslz4 PREFIX "_" SUFFIX ".so"
   LIBRARY_OUTPUT_DIRECTORY ${CATKIN_DEVEL_PREFIX}/${PYTHON_INSTALL_DIR}/roslz4)
diff --git a/utilities/roslz4/package.xml b/utilities/roslz4/package.xml
index fb59d06..c293240 100644
--- a/utilities/roslz4/package.xml
+++ b/utilities/roslz4/package.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <package>
   <name>roslz4</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     A Python and C++ implementation of the LZ4 streaming format.  Large data
     streams are split into blocks which are compressed using the very fast LZ4
diff --git a/utilities/roslz4/src/_roslz4module.c b/utilities/roslz4/src/_roslz4module.c
index 4d75c72..6be1ae9 100644
--- a/utilities/roslz4/src/_roslz4module.c
+++ b/utilities/roslz4/src/_roslz4module.c
@@ -82,6 +82,7 @@ LZ4Compressor_dealloc(LZ4Compressor *self)
 static int
 LZ4Compressor_init(LZ4Compressor *self, PyObject *args, PyObject *kwds)
 {
+  (void)kwds;
   if (!PyArg_ParseTuple(args, ":__init__")) {
     return -1;
   }
@@ -252,6 +253,7 @@ LZ4Decompressor_dealloc(LZ4Decompressor *self)
 static int
 LZ4Decompressor_init(LZ4Decompressor *self, PyObject *args, PyObject *kwds)
 {
+  (void)kwds;
   if (!PyArg_ParseTuple(args, ":__init__")) {
     return -1;
   }
diff --git a/utilities/roswtf/CHANGELOG.rst b/utilities/roswtf/CHANGELOG.rst
index 6d490dd..cf9f565 100644
--- a/utilities/roswtf/CHANGELOG.rst
+++ b/utilities/roswtf/CHANGELOG.rst
@@ -2,6 +2,9 @@
 Changelog for package roswtf
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/utilities/roswtf/CMakeLists.txt b/utilities/roswtf/CMakeLists.txt
index ff7ffa9..97a34ff 100644
--- a/utilities/roswtf/CMakeLists.txt
+++ b/utilities/roswtf/CMakeLists.txt
@@ -6,6 +6,6 @@ catkin_python_setup()
 
 if(CATKIN_ENABLE_TESTING)
   find_package(rostest)
-  # add_rostest(test/roswtf.test)
-  # catkin_add_nosetests(test)
+  add_rostest(test/roswtf.test)
+  catkin_add_nosetests(test)
 endif()
diff --git a/utilities/roswtf/package.xml b/utilities/roswtf/package.xml
index 7e3782e..04dcb6c 100644
--- a/utilities/roswtf/package.xml
+++ b/utilities/roswtf/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>roswtf</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
      roswtf is a tool for diagnosing issues with a running ROS system. Think of it as a FAQ implemented in code.
   </description>
diff --git a/utilities/roswtf/test/check_roswtf_command_line_online.py b/utilities/roswtf/test/check_roswtf_command_line_online.py
index 4200d85..f4a9fe2 100755
--- a/utilities/roswtf/test/check_roswtf_command_line_online.py
+++ b/utilities/roswtf/test/check_roswtf_command_line_online.py
@@ -107,15 +107,27 @@ class TestRostopicOnline(unittest.TestCase):
         # every package in the ROS stack, which doesn't work.
 
         output, err = Popen([cmd], **kwds).communicate()
-        self.assert_('No errors or warnings' in output, "OUTPUT[%s]\nstderr[%s}"%(output, err))
-        self.assert_('ERROR' not in output, "CMD [%s] KWDS[%s] OUTPUT[%s]"%(cmd, kwds, output))
+        self._check_output([cmd], output, err)
 
         # run roswtf on a simple launch file online
         rospack = rospkg.RosPack()
         p = os.path.join(rospack.get_path('roswtf'), 'test', 'min.launch')
         output = Popen([cmd, p], **kwds).communicate()[0]
-        self.assert_('No errors or warnings' in output, "CMD[%s] OUTPUT[%s]"%([cmd, p], output))
-        self.assert_('ERROR' not in output, "OUTPUT[%s]"%output)        
-        
+        self._check_output([cmd, p], output)
+
+    def _check_output(self, cmd, output, error=None):
+        # do both a positive and negative test
+        self.assert_(
+            'No errors or warnings' in output or 'Found 1 error' in output,
+            'CMD[%s] OUTPUT[%s]%s' %
+            (' '.join(cmd), output, '\nstderr[%s]' % error if error else ''))
+        if 'No errors or warnings' in output:
+            self.assert_('ERROR' not in output, 'OUTPUT[%s]' % output)
+        if 'Found 1 error' in output:
+            self.assert_(output.count('ERROR') == 1, 'OUTPUT[%s]' % output)
+            self.assert_(
+                'Error: the rosdep view is empty' not in output,
+                'OUTPUT[%s]' % output)
+
 if __name__ == '__main__':
     rostest.run(PKG, NAME, TestRostopicOnline, sys.argv)
diff --git a/utilities/roswtf/test/test_roswtf_command_line_offline.py b/utilities/roswtf/test/test_roswtf_command_line_offline.py
index 5a7aec0..e91b055 100644
--- a/utilities/roswtf/test/test_roswtf_command_line_offline.py
+++ b/utilities/roswtf/test/test_roswtf_command_line_offline.py
@@ -94,13 +94,26 @@ class TestRoswtfOffline(unittest.TestCase):
         # run roswtf nakedly
         output = Popen([cmd], **kwds).communicate()
         output = [o.decode() for o in output]
-        # - due both a positive and negative test
-        self.assert_('No errors or warnings' in output[0], "OUTPUT[%s]"%str(output))
-        self.assert_('ERROR' not in output[0], "OUTPUT[%s]"%str(output))
+
+        # there should either be no errors or warnings or
+        # there should be exactly one error about rosdep not being initialized
+        self._check_output(output[0])
 
         # run roswtf on a simple launch file offline
         p = os.path.join(get_test_path(), 'min.launch')
         output = Popen([cmd, p], **kwds).communicate()[0]
         output = output.decode()
-        self.assert_('No errors or warnings' in output, "OUTPUT[%s]"%output)
-        self.assert_('ERROR' not in output, "OUTPUT[%s]"%output)        
+        self._check_output(output)
+
+    def _check_output(self, output):
+        # do both a positive and negative test
+        self.assert_(
+            'No errors or warnings' in output or 'Found 1 error' in output,
+            'OUTPUT[%s]' % output)
+        if 'No errors or warnings' in output:
+            self.assert_('ERROR' not in output, 'OUTPUT[%s]' % output)
+        if 'Found 1 error' in output:
+            self.assert_(output.count('ERROR') == 1, 'OUTPUT[%s]' % output)
+            self.assert_(
+                'Error: the rosdep view is empty' not in output,
+                'OUTPUT[%s]' % output)
diff --git a/utilities/xmlrpcpp/CHANGELOG.rst b/utilities/xmlrpcpp/CHANGELOG.rst
index 3474466..955f4f7 100644
--- a/utilities/xmlrpcpp/CHANGELOG.rst
+++ b/utilities/xmlrpcpp/CHANGELOG.rst
@@ -2,6 +2,10 @@
 Changelog for package xmlrpcpp
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+1.12.1 (2016-04-18)
+-------------------
+* use directory specific compiler flags (`#785 <https://github.com/ros/ros_comm/pull/785>`_)
+
 1.12.0 (2016-03-18)
 -------------------
 
diff --git a/utilities/xmlrpcpp/CMakeLists.txt b/utilities/xmlrpcpp/CMakeLists.txt
index a4f6bec..dfcd0a5 100644
--- a/utilities/xmlrpcpp/CMakeLists.txt
+++ b/utilities/xmlrpcpp/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.8.3)
 project(xmlrpcpp)
 
 if(NOT WIN32)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
+  set_directory_properties(PROPERTIES COMPILE_OPTIONS "-Wall;-Wextra")
 endif()
 
 find_package(catkin REQUIRED COMPONENTS cpp_common)
diff --git a/utilities/xmlrpcpp/package.xml b/utilities/xmlrpcpp/package.xml
index a9703b7..8ffe384 100644
--- a/utilities/xmlrpcpp/package.xml
+++ b/utilities/xmlrpcpp/package.xml
@@ -1,6 +1,6 @@
 <package>
   <name>xmlrpcpp</name>
-  <version>1.12.0</version>
+  <version>1.12.1</version>
   <description>
     XmlRpc++ is a C++ implementation of the XML-RPC protocol. This version is
     heavily modified from the package available on SourceForge in order to

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ros/ros-ros-comm.git



More information about the debian-science-commits mailing list