diff --git a/recipes-ros/genmsg/genmsg/0001-modify-msg-file-handling-to-reference-them-relatively.patch b/recipes-ros/genmsg/genmsg/0001-modify-msg-file-handling-to-reference-them-relatively.patch
deleted file mode 100644
index e32f6d2ec0d351fa1ade95c3636ef85da616a1b8..0000000000000000000000000000000000000000
--- a/recipes-ros/genmsg/genmsg/0001-modify-msg-file-handling-to-reference-them-relatively.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -Naur a/cmake/genmsg-extras.cmake.em b/cmake/genmsg-extras.cmake.em
---- a/cmake/genmsg-extras.cmake.em	2013-07-12 09:10:43.810555389 +0200
-+++ b/cmake/genmsg-extras.cmake.em	2013-07-12 09:14:17.122564232 +0200
-@@ -202,8 +202,7 @@
-     ${CATKIN_DEVEL_PREFIX}/share/${PROJECT_NAME}/cmake/${PROJECT_NAME}-msg-paths.cmake
-     @@ONLY)
-   # generate and install config of message include dirs for project
--  _prepend_path(${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME} "${${PROJECT_NAME}_MSG_INCLUDE_DIRS_INSTALLSPACE}" INCLUDE_DIRS_W_PATH UNIQUE)
--  set(PKG_MSG_INCLUDE_DIRS "${INCLUDE_DIRS_W_PATH}")
-+  set(PKG_MSG_INCLUDE_DIRS "${${PROJECT_NAME}_MSG_INCLUDE_DIRS_INSTALLSPACE}")
-   configure_file(
-     ${genmsg_CMAKE_DIR}/pkg-msg-paths.cmake.in
-     ${CMAKE_CURRENT_BINARY_DIR}/catkin_generated/installspace/${PROJECT_NAME}-msg-paths.cmake
-diff -Naur a/cmake/pkg-msg-paths.cmake.in b/cmake/pkg-msg-paths.cmake.in
---- a/cmake/pkg-msg-paths.cmake.in	2013-07-12 09:10:43.814555390 +0200
-+++ b/cmake/pkg-msg-paths.cmake.in	2013-07-12 09:15:35.818567495 +0200
-@@ -1,2 +1,7 @@
--set(@PROJECT_NAME@_MSG_INCLUDE_DIRS "@PKG_MSG_INCLUDE_DIRS@")
-+if(@DEVELSPACE@)
-+  set(@PROJECT_NAME@_MSG_INCLUDE_DIRS @PKG_MSG_INCLUDE_DIRS@)
-+else()
-+  _prepend_path(${@PROJECT_NAME@_DIR}/.. "@PKG_MSG_INCLUDE_DIRS@" INCLUDE_DIRS_W_PATH)
-+  set(@PROJECT_NAME@_MSG_INCLUDE_DIRS "${INCLUDE_DIRS_W_PATH}")
-+endif()
- set(@PROJECT_NAME@_MSG_DEPENDENCIES @ARG_DEPENDENCIES@)
diff --git a/recipes-ros/genmsg/genmsg/0001-resolve-path-of-message-file-and-include-dirs-in-ins.patch b/recipes-ros/genmsg/genmsg/0001-resolve-path-of-message-file-and-include-dirs-in-ins.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7b1858b8c6206cbc427285d6bf6d351c219e875a
--- /dev/null
+++ b/recipes-ros/genmsg/genmsg/0001-resolve-path-of-message-file-and-include-dirs-in-ins.patch
@@ -0,0 +1,128 @@
+From cb45b131576a898ced69e3e5e9758173365dc5cf Mon Sep 17 00:00:00 2001
+From: Dirk Thomas <dthomas@osrfoundation.org>
+Date: Fri, 26 Jul 2013 13:35:17 -0700
+Subject: [PATCH] resolve path of message file and include dirs in installspace
+ at runtime (ros/catkin#490)
+
+---
+ CMakeLists.txt                 |  3 ++-
+ cmake/genmsg-extras.cmake.em   | 29 ++++++++++++++++++-----------
+ cmake/pkg-msg-paths.cmake.em   | 10 ++++++++++
+ cmake/pkg-msg-paths.cmake.in   |  2 --
+ cmake/pkg-msg-paths.context.in |  8 ++++++++
+ 5 files changed, 38 insertions(+), 14 deletions(-)
+ create mode 100644 cmake/pkg-msg-paths.cmake.em
+ delete mode 100644 cmake/pkg-msg-paths.cmake.in
+ create mode 100644 cmake/pkg-msg-paths.context.in
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5e8fcf0..aa66f86 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -9,7 +9,8 @@ install(
+   cmake/pkg-genmsg.cmake.em
+   cmake/pkg-genmsg.context.in
+   cmake/pkg-msg-extras.cmake.in
+-  cmake/pkg-msg-paths.cmake.in
++  cmake/pkg-msg-paths.cmake.em
++  cmake/pkg-msg-paths.context.in
+   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/cmake)
+ 
+ catkin_python_setup()
+diff --git a/cmake/genmsg-extras.cmake.em b/cmake/genmsg-extras.cmake.em
+index 3ba4b37..b57af38 100644
+--- a/cmake/genmsg-extras.cmake.em
++++ b/cmake/genmsg-extras.cmake.em
+@@ -106,7 +106,7 @@ macro(add_message_files)
+     install(FILES ${FILES_W_PATH}
+       DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${ARG_DIRECTORY})
+ 
+-    _prepend_path("${CMAKE_INSTALL_PREFIX}/${CATKIN_PACKAGE_SHARE_DESTINATION}/${ARG_DIRECTORY}" "${ARG_FILES}" FILES_W_PATH)
++    _prepend_path("${ARG_DIRECTORY}" "${ARG_FILES}" FILES_W_PATH)
+     list(APPEND ${PROJECT_NAME}_INSTALLED_MESSAGE_FILES ${FILES_W_PATH})
+   endif()
+ endmacro()
+@@ -196,18 +196,21 @@ macro(generate_messages)
+   catkin_destinations()
+ 
+   # generate devel space config of message include dirs for project
++  set(DEVELSPACE TRUE)
++  set(INSTALLSPACE FALSE)
+   set(PKG_MSG_INCLUDE_DIRS "${${PROJECT_NAME}_MSG_INCLUDE_DIRS_DEVELSPACE}")
+-  configure_file(
+-    ${genmsg_CMAKE_DIR}/pkg-msg-paths.cmake.in
+-    ${CATKIN_DEVEL_PREFIX}/share/${PROJECT_NAME}/cmake/${PROJECT_NAME}-msg-paths.cmake
+-    @@ONLY)
++  em_expand(${genmsg_CMAKE_DIR}/pkg-msg-paths.context.in
++    ${CMAKE_CURRENT_BINARY_DIR}/catkin_generated/${PROJECT_NAME}-msg-paths-context.py
++    ${genmsg_CMAKE_DIR}/pkg-msg-paths.cmake.em
++    ${CATKIN_DEVEL_PREFIX}/share/${PROJECT_NAME}/cmake/${PROJECT_NAME}-msg-paths.cmake)
+   # generate and install config of message include dirs for project
+-  _prepend_path(${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME} "${${PROJECT_NAME}_MSG_INCLUDE_DIRS_INSTALLSPACE}" INCLUDE_DIRS_W_PATH UNIQUE)
+-  set(PKG_MSG_INCLUDE_DIRS "${INCLUDE_DIRS_W_PATH}")
+-  configure_file(
+-    ${genmsg_CMAKE_DIR}/pkg-msg-paths.cmake.in
+-    ${CMAKE_CURRENT_BINARY_DIR}/catkin_generated/installspace/${PROJECT_NAME}-msg-paths.cmake
+-    @@ONLY)
++  set(DEVELSPACE FALSE)
++  set(INSTALLSPACE TRUE)
++  set(PKG_MSG_INCLUDE_DIRS "${${PROJECT_NAME}_MSG_INCLUDE_DIRS_INSTALLSPACE}")
++  em_expand(${genmsg_CMAKE_DIR}/pkg-msg-paths.context.in
++    ${CMAKE_CURRENT_BINARY_DIR}/catkin_generated/installspace/${PROJECT_NAME}-msg-paths-context.py
++    ${genmsg_CMAKE_DIR}/pkg-msg-paths.cmake.em
++    ${CMAKE_CURRENT_BINARY_DIR}/catkin_generated/installspace/${PROJECT_NAME}-msg-paths.cmake)
+   install(FILES ${CMAKE_CURRENT_BINARY_DIR}/catkin_generated/installspace/${PROJECT_NAME}-msg-paths.cmake
+     DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/cmake)
+ 
+@@ -256,6 +259,10 @@ macro(generate_messages)
+     include(${config})
+     unset(config CACHE)
+ 
++    # explicitly set message include dirs for current project since information from pkg-msg-paths.cmake is not yet available
++    if(${dep} STREQUAL ${PROJECT_NAME})
++      set(${dep}_MSG_INCLUDE_DIRS ${${PROJECT_NAME}_MSG_INCLUDE_DIRS_DEVELSPACE})
++    endif()
+     foreach(path ${${dep}_MSG_INCLUDE_DIRS})
+       list(APPEND MSG_INCLUDE_DIRS "${dep}")
+       list(APPEND MSG_INCLUDE_DIRS "${path}")
+diff --git a/cmake/pkg-msg-paths.cmake.em b/cmake/pkg-msg-paths.cmake.em
+new file mode 100644
+index 0000000..eb6f88a
+--- /dev/null
++++ b/cmake/pkg-msg-paths.cmake.em
+@@ -0,0 +1,10 @@
++# generated from genmsg/cmake/pkg-msg-paths.cmake.em
++
++@[if DEVELSPACE]@
++# message include dirs in develspace
++set(@(PROJECT_NAME)_MSG_INCLUDE_DIRS "@(PKG_MSG_INCLUDE_DIRS)")
++@[else]@
++# message include dirs in installspace
++_prepend_path("${@(PROJECT_NAME)_DIR}/.." "@(PKG_MSG_INCLUDE_DIRS)" @(PROJECT_NAME)_MSG_INCLUDE_DIRS UNIQUE)
++@[end if]@
++set(@(PROJECT_NAME)_MSG_DEPENDENCIES @(ARG_DEPENDENCIES))
+diff --git a/cmake/pkg-msg-paths.cmake.in b/cmake/pkg-msg-paths.cmake.in
+deleted file mode 100644
+index c40966c..0000000
+--- a/cmake/pkg-msg-paths.cmake.in
++++ /dev/null
+@@ -1,2 +0,0 @@
+-set(@PROJECT_NAME@_MSG_INCLUDE_DIRS "@PKG_MSG_INCLUDE_DIRS@")
+-set(@PROJECT_NAME@_MSG_DEPENDENCIES @ARG_DEPENDENCIES@)
+diff --git a/cmake/pkg-msg-paths.context.in b/cmake/pkg-msg-paths.context.in
+new file mode 100644
+index 0000000..499e2f9
+--- /dev/null
++++ b/cmake/pkg-msg-paths.context.in
+@@ -0,0 +1,8 @@
++# generated from genmsg/cmake/pkg-msg-paths.context.in
++
++DEVELSPACE = '@DEVELSPACE@' == 'TRUE'
++INSTALLSPACE = '@INSTALLSPACE@' == 'TRUE'
++
++PROJECT_NAME = '@PROJECT_NAME@'
++PKG_MSG_INCLUDE_DIRS = '@PKG_MSG_INCLUDE_DIRS@'
++ARG_DEPENDENCIES = '@ARG_DEPENDENCIES@'
+-- 
+1.8.1.6
+
diff --git a/recipes-ros/genmsg/genmsg_0.4.21.bb b/recipes-ros/genmsg/genmsg_0.4.21.bb
index c434adbb2b0d4834180ba3663259a07f2a8a7e71..d3b6188c1632cc1cc318b00113150713dbb63757 100644
--- a/recipes-ros/genmsg/genmsg_0.4.21.bb
+++ b/recipes-ros/genmsg/genmsg_0.4.21.bb
@@ -3,13 +3,13 @@ SECTION = "devel"
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://package.xml;beginline=9;endline=9;md5=d566ef916e9dedc494f5f793a6690ba5"
 
-PR = "r1"
+PR = "r2"
 
 SRC_URI = "https://github.com/ros/${ROS_SPN}/archive/${PV}.tar.gz;downloadfilename=${ROS_SP}.tar.gz"
 SRC_URI[md5sum] = "03ff82b1efa75552d4a5a000e0576cc4"
 SRC_URI[sha256sum] = "e7e4b23eadb97b0deca53874532c0b42f10f406a9db2affd7d6f04101a4a2901"
 
-SRC_URI += "file://0001-modify-msg-file-handling-to-reference-them-relatively.patch"
+SRC_URI += "file://0001-resolve-path-of-message-file-and-include-dirs-in-ins.patch"
 
 inherit catkin