diff -Nru ros-catkin-0.6.16/CHANGELOG.rst ros-catkin-0.7.1/CHANGELOG.rst --- ros-catkin-0.6.16/CHANGELOG.rst 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/CHANGELOG.rst 2016-03-18 21:21:15.000000000 +0000 @@ -2,6 +2,30 @@ Changelog for package catkin ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +0.7.1 (2016-03-18) +------------------ +* expose format 2 style dependencies as CMake variables (`#787 `_) + +0.7.0 (2016-03-04) +------------------ +* remove CPATH from setup files (`#783 `_) +* use NO_MODULE to find exported catkin dependencies (`#760 `_) + +0.6.17 (2016-03-03) +------------------- +* fix docs: nosetest target names use periods (`#781 `_) +* add custom message explaining CMake find_package error messages (`#780 `_) +* fix regression with DESTDIR introduced in 0.6.16 (`#755 `_) +* avoid adding nonexistent paths to environment variables (`#777 `_) +* ensure that Python install destination exists (`#775 `_, https://github.com/ros/catkin/issues/776) +* set commonly predefines attributes when interrogating setup.py files (`#770 `_) +* align Python script directory recommendations with REP-0008 (`#769 `_) +* fix default value for _workspaces in find_in_workspaces (`#768 `_) +* improve robustness of exec call interogating setup.py files (`#766 `) +* fix reinstalling Python files installed by catkin_install_python after modifying them (`#764 `_) +* fix project specific clean_test_results targets (`#762 `_) +* update generated CMake API + 0.6.16 (2015-11-09) ------------------- * remove -x in Python distutils shell script (`#755 `_) diff -Nru ros-catkin-0.6.16/cmake/catkinConfig.cmake.in ros-catkin-0.7.1/cmake/catkinConfig.cmake.in --- ros-catkin-0.6.16/cmake/catkinConfig.cmake.in 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/catkinConfig.cmake.in 2016-03-18 21:21:15.000000000 +0000 @@ -72,8 +72,17 @@ # find package component if(catkin_FIND_REQUIRED) - find_package(${component} REQUIRED NO_MODULE PATHS ${paths} + # try without REQUIRED first + find_package(${component} NO_MODULE PATHS ${paths} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + if(NOT ${component}_FOUND) + # show better message to help users with the CMake error message coming up + message(STATUS "Could not find the required component '${component}'. " + "The following CMake error indicates that you either need to install the package " + "with the same name or change your environment so that it can be found.") + find_package(${component} REQUIRED NO_MODULE PATHS ${paths} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + endif() elseif(catkin_FIND_QUIETLY) find_package(${component} QUIET NO_MODULE PATHS ${paths} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) diff -Nru ros-catkin-0.6.16/cmake/catkin_install_python.cmake ros-catkin-0.7.1/cmake/catkin_install_python.cmake --- ros-catkin-0.6.16/cmake/catkin_install_python.cmake 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/catkin_install_python.cmake 2016-03-18 21:21:15.000000000 +0000 @@ -4,9 +4,7 @@ # # The signature: # -# catkin_install_python(PROGRAMS files... DESTINATION -# [OPTIONAL] -# ) +# catkin_install_python(PROGRAMS files... DESTINATION [OPTIONAL]) # # See the documentation for CMake install() function for more information. # @@ -26,6 +24,7 @@ set(file "${CMAKE_CURRENT_SOURCE_DIR}/${file}") endif() if(EXISTS ${file}) + stamp(${file}) # read file and check shebang line file(READ ${file} data) set(regex "^#!/([^\r\n]+)/env python([\r\n])") diff -Nru ros-catkin-0.6.16/cmake/interrogate_setup_dot_py.py ros-catkin-0.7.1/cmake/interrogate_setup_dot_py.py --- ros-catkin-0.6.16/cmake/interrogate_setup_dot_py.py 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/interrogate_setup_dot_py.py 2016-03-18 21:21:15.000000000 +0000 @@ -241,7 +241,13 @@ pass with open(args.setupfile_path, 'r') as fh: - exec(fh.read()) + local_vars = { + '__doc__': None, + '__file__': os.path.abspath(args.setupfile_path), + '__name__': '__main__', + '__package__': None, + } + exec(fh.read(), {}, local_vars) finally: distutils.core.setup = distutils_backup try: diff -Nru ros-catkin-0.6.16/cmake/parse_package_xml.py ros-catkin-0.7.1/cmake/parse_package_xml.py --- ros-catkin-0.6.16/cmake/parse_package_xml.py 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/parse_package_xml.py 2016-03-18 21:21:15.000000000 +0000 @@ -33,6 +33,7 @@ # POSSIBILITY OF SUCH DAMAGE. from __future__ import print_function +from collections import OrderedDict import sys import argparse @@ -49,14 +50,22 @@ :param package: Package object :returns: list of str, lines to output """ - values = {} + values = OrderedDict() values['VERSION'] = '"%s"' % package.version values['MAINTAINER'] = '"%s"' % (', '.join([str(m) for m in package.maintainers])) + values['PACKAGE_FORMAT'] = '"%d"' % package.package_format values.update(_get_dependency_values('BUILD_DEPENDS', package.build_depends)) + values.update(_get_dependency_values('BUILD_EXPORT_DEPENDS', package.build_export_depends)) values.update(_get_dependency_values('BUILDTOOL_DEPENDS', package.buildtool_depends)) + values.update(_get_dependency_values('BUILDTOOL_EXPORT_DEPENDS', package.buildtool_export_depends)) + values.update(_get_dependency_values('EXEC_DEPENDS', package.exec_depends)) + # the run dependencies are a convenience property to mimick format one like dependencies + # it contains the build export and exec_dependendcies values.update(_get_dependency_values('RUN_DEPENDS', package.run_depends)) + values.update(_get_dependency_values('TEST_DEPENDS', package.test_depends)) + values.update(_get_dependency_values('DOC_DEPENDS', package.doc_depends)) deprecated = [e.content for e in package.exports if e.tagname == 'deprecated'] values['DEPRECATED'] = '"%s"' % ((deprecated[0] if deprecated[0] else 'TRUE') if deprecated else '') @@ -68,7 +77,7 @@ return output def _get_dependency_values(key, depends): - values = {} + values = OrderedDict() values[key] = ' '.join(['"%s"' % str(d) for d in depends]) for d in depends: comparisons = ['version_lt', 'version_lte', 'version_eq', 'version_gte', 'version_gt'] diff -Nru ros-catkin-0.6.16/cmake/templates/pkgConfig.cmake.in ros-catkin-0.7.1/cmake/templates/pkgConfig.cmake.in --- ros-catkin-0.6.16/cmake/templates/pkgConfig.cmake.in 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/templates/pkgConfig.cmake.in 2016-03-18 21:21:15.000000000 +0000 @@ -162,12 +162,12 @@ if(${count} EQUAL 1) # simple dependencies must only be find_package()-ed once if(NOT ${@PROJECT_NAME@_dep}_FOUND) - find_package(${@PROJECT_NAME@_dep} REQUIRED) + find_package(${@PROJECT_NAME@_dep} REQUIRED NO_MODULE) endif() else() # dependencies with components must be find_package()-ed again list(REMOVE_AT depend_list 0) - find_package(${@PROJECT_NAME@_dep} REQUIRED ${depend_list}) + find_package(${@PROJECT_NAME@_dep} REQUIRED NO_MODULE ${depend_list}) endif() _list_append_unique(@PROJECT_NAME@_INCLUDE_DIRS ${${@PROJECT_NAME@_dep}_INCLUDE_DIRS}) diff -Nru ros-catkin-0.6.16/cmake/templates/python_distutils_install.sh.in ros-catkin-0.7.1/cmake/templates/python_distutils_install.sh.in --- ros-catkin-0.6.16/cmake/templates/python_distutils_install.sh.in 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/templates/python_distutils_install.sh.in 2016-03-18 21:21:15.000000000 +0000 @@ -16,6 +16,9 @@ echo_and_run cd "@INSTALL_CMD_WORKING_DIRECTORY@" +# snsure that Python install destination exists +echo_and_run mkdir -p "$DESTDIR@CMAKE_INSTALL_PREFIX@/@PYTHON_INSTALL_DIR@" + # Note that PYTHONPATH is pulled from the environment to support installing # into one location when some dependencies were installed in another # location, #123. diff -Nru ros-catkin-0.6.16/cmake/templates/setup.sh.in ros-catkin-0.7.1/cmake/templates/setup.sh.in --- ros-catkin-0.6.16/cmake/templates/setup.sh.in 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/templates/setup.sh.in 2016-03-18 21:21:15.000000000 +0000 @@ -27,7 +27,6 @@ # make sure to export all environment variables export CMAKE_PREFIX_PATH -export CPATH if [ $_IS_DARWIN -eq 0 ]; then export LD_LIBRARY_PATH else diff -Nru ros-catkin-0.6.16/cmake/templates/_setup_util.py.in ros-catkin-0.7.1/cmake/templates/_setup_util.py.in --- ros-catkin-0.6.16/cmake/templates/_setup_util.py.in 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/templates/_setup_util.py.in 2016-03-18 21:21:15.000000000 +0000 @@ -52,7 +52,6 @@ # subfolder of workspace prepended to CMAKE_PREFIX_PATH ENV_VAR_SUBFOLDERS = { 'CMAKE_PREFIX_PATH': '', - 'CPATH': 'include', 'LD_LIBRARY_PATH' if not IS_DARWIN else 'DYLD_LIBRARY_PATH': @CATKIN_LIB_ENVIRONMENT_PATHS@, 'PATH': '@CATKIN_GLOBAL_BIN_DESTINATION@', 'PKG_CONFIG_PATH': @CATKIN_PKGCONFIG_ENVIRONMENT_PATHS@, @@ -161,6 +160,9 @@ path_tmp = path if subfolder: path_tmp = os.path.join(path_tmp, subfolder) + # skip nonexistent paths + if not os.path.exists(path_tmp): + continue # exclude any path already in env and any path we already added if path_tmp not in environ_paths and path_tmp not in checked_paths: checked_paths.append(path_tmp) @@ -278,7 +280,7 @@ # need to explicitly flush the output sys.stdout.flush() except IOError as e: - # and catch potantial "broken pipe" if stdout is not writable + # and catch potential "broken pipe" if stdout is not writable # which can happen when piping the output to a file but the disk is full if e.errno == errno.EPIPE: print(e, file=sys.stderr) diff -Nru ros-catkin-0.6.16/cmake/test/nosetests.cmake ros-catkin-0.7.1/cmake/test/nosetests.cmake --- ros-catkin-0.6.16/cmake/test/nosetests.cmake 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/test/nosetests.cmake 2016-03-18 21:21:15.000000000 +0000 @@ -8,7 +8,7 @@ # .. note:: The test can be executed by calling ``nosetests`` # directly or using: # `` make run_tests_${PROJECT_NAME}_nosetests_${dir}`` -# (where slashes in the ``dir`` are replaced with underscores) +# (where slashes in the ``dir`` are replaced with periods) # # :param path: a relative or absolute directory to search for # nosetests in or a relative or absolute file containing tests diff -Nru ros-catkin-0.6.16/cmake/test/tests.cmake ros-catkin-0.7.1/cmake/test/tests.cmake --- ros-catkin-0.6.16/cmake/test/tests.cmake 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/cmake/test/tests.cmake 2016-03-18 21:21:15.000000000 +0000 @@ -79,11 +79,6 @@ add_custom_target(clean_test_results COMMAND ${PYTHON_EXECUTABLE} "${catkin_EXTRAS_DIR}/test/remove_test_results.py" "${CATKIN_TEST_RESULTS_DIR}") endif() -# create target to clean project specific test results -if(NOT TARGET clean_test_results_${PROJECT_NAME}) - add_custom_target(clean_test_results_${PROJECT_NAME} - COMMAND ${PYTHON_EXECUTABLE} "${catkin_EXTRAS_DIR}/test/remove_test_results.py" "${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME}") -endif() # # Create a test target, integrate it with the run_tests infrastructure @@ -145,5 +140,11 @@ add_custom_target(_run_tests_${PROJECT_NAME}_${type}_${name} COMMAND ${cmd}) add_dependencies(_run_tests_${PROJECT_NAME}_${type} _run_tests_${PROJECT_NAME}_${type}_${name}) + + # create target to clean project specific test results + if(NOT TARGET clean_test_results_${PROJECT_NAME}) + add_custom_target(clean_test_results_${PROJECT_NAME} + COMMAND ${PYTHON_EXECUTABLE} "${catkin_EXTRAS_DIR}/test/remove_test_results.py" "${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME}") + endif() add_dependencies(_run_tests_${PROJECT_NAME}_${type}_${name} clean_test_results_${PROJECT_NAME} tests ${_testing_DEPENDENCIES}) endfunction() diff -Nru ros-catkin-0.6.16/debian/changelog ros-catkin-0.7.1/debian/changelog --- ros-catkin-0.6.16/debian/changelog 2015-12-22 14:53:08.000000000 +0000 +++ ros-catkin-0.7.1/debian/changelog 2016-07-21 07:53:18.000000000 +0000 @@ -1,4 +1,19 @@ -ros-catkin (0.6.16-3~20151222) trusty; urgency=medium +ros-catkin (0.7.1-1~20160721) trusty; urgency=medium + + * Imported Upstream version 0.7.1 + * Refresh patches + * Disable test suite for now + + -- Jochen Sprickerhof Sat, 18 Jun 2016 10:51:44 +0200 + +ros-catkin (0.6.16-4) unstable; urgency=medium + + * Fix installation of bash-completions + * Change location of libexec to lib (without triplet) + + -- Jochen Sprickerhof Mon, 15 Feb 2016 21:48:11 +0100 + +ros-catkin (0.6.16-3) unstable; urgency=medium * Add patch to install into multiarch dirs * Cleanup installation diff -Nru ros-catkin-0.6.16/debian/patches/0001-Remove-NO_DEFAULT_PATH-and-NO_CMAKE_FIND_ROOT_PATH-f.patch ros-catkin-0.7.1/debian/patches/0001-Remove-NO_DEFAULT_PATH-and-NO_CMAKE_FIND_ROOT_PATH-f.patch --- ros-catkin-0.6.16/debian/patches/0001-Remove-NO_DEFAULT_PATH-and-NO_CMAKE_FIND_ROOT_PATH-f.patch 2015-12-17 22:50:11.000000000 +0000 +++ ros-catkin-0.7.1/debian/patches/0001-Remove-NO_DEFAULT_PATH-and-NO_CMAKE_FIND_ROOT_PATH-f.patch 2016-07-07 08:09:55.000000000 +0000 @@ -3,21 +3,30 @@ Subject: Remove NO_DEFAULT_PATH and NO_CMAKE_FIND_ROOT_PATH from find_package --- - cmake/catkinConfig.cmake.in | 9 +++------ - cmake/toplevel.cmake | 3 +-- - 2 files changed, 4 insertions(+), 8 deletions(-) + cmake/catkinConfig.cmake.in | 12 ++++-------- + cmake/toplevel.cmake | 3 +-- + 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/cmake/catkinConfig.cmake.in b/cmake/catkinConfig.cmake.in -index 2183ce8..5193474 100644 +index 8afb6df..7f2ce48 100644 --- a/cmake/catkinConfig.cmake.in +++ b/cmake/catkinConfig.cmake.in -@@ -72,14 +72,11 @@ if(catkin_FIND_COMPONENTS) - +@@ -73,22 +73,18 @@ if(catkin_FIND_COMPONENTS) # find package component if(catkin_FIND_REQUIRED) -- find_package(${component} REQUIRED NO_MODULE PATHS ${paths} + # try without REQUIRED first +- find_package(${component} NO_MODULE PATHS ${paths} - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) -+ find_package(${component} REQUIRED NO_MODULE PATHS ${paths}) ++ find_package(${component} NO_MODULE PATHS ${paths}) + if(NOT ${component}_FOUND) + # show better message to help users with the CMake error message coming up + message(STATUS "Could not find the required component '${component}'. " + "The following CMake error indicates that you either need to install the package " + "with the same name or change your environment so that it can be found.") +- find_package(${component} REQUIRED NO_MODULE PATHS ${paths} +- NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) ++ find_package(${component} REQUIRED NO_MODULE PATHS ${paths}) + endif() elseif(catkin_FIND_QUIETLY) - find_package(${component} QUIET NO_MODULE PATHS ${paths} - NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) diff -Nru ros-catkin-0.6.16/debian/patches/0005-Fix-location-of-etc-for-catkin_find.patch ros-catkin-0.7.1/debian/patches/0005-Fix-location-of-etc-for-catkin_find.patch --- ros-catkin-0.6.16/debian/patches/0005-Fix-location-of-etc-for-catkin_find.patch 2015-12-17 22:50:11.000000000 +0000 +++ ros-catkin-0.7.1/debian/patches/0005-Fix-location-of-etc-for-catkin_find.patch 2016-07-07 08:09:55.000000000 +0000 @@ -7,10 +7,10 @@ 1 file changed, 2 insertions(+) diff --git a/python/catkin/find_in_workspaces.py b/python/catkin/find_in_workspaces.py -index 4d5623e..d7e0b80 100644 +index 83b5a0a..2e15f98 100644 --- a/python/catkin/find_in_workspaces.py +++ b/python/catkin/find_in_workspaces.py -@@ -123,6 +123,8 @@ def find_in_workspaces(search_dirs=None, project=None, path=None, _workspaces=ge +@@ -124,6 +124,8 @@ def find_in_workspaces(search_dirs=None, project=None, path=None, _workspaces=No for sub in search_dirs: # search in workspace p = os.path.join(workspace, sub) diff -Nru ros-catkin-0.6.16/debian/patches/0005-Use-profile.d-in-usr-in-_setup_util.py.patch ros-catkin-0.7.1/debian/patches/0005-Use-profile.d-in-usr-in-_setup_util.py.patch --- ros-catkin-0.6.16/debian/patches/0005-Use-profile.d-in-usr-in-_setup_util.py.patch 2015-12-17 22:50:11.000000000 +0000 +++ ros-catkin-0.7.1/debian/patches/0005-Use-profile.d-in-usr-in-_setup_util.py.patch 2016-07-07 08:09:55.000000000 +0000 @@ -7,10 +7,10 @@ 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/templates/_setup_util.py.in b/cmake/templates/_setup_util.py.in -index 47721ad..6a29452 100755 +index cace21c..89c85e2 100755 --- a/cmake/templates/_setup_util.py.in +++ b/cmake/templates/_setup_util.py.in -@@ -211,6 +211,7 @@ def find_env_hooks(environ, cmake_prefix_path): +@@ -213,6 +213,7 @@ def find_env_hooks(environ, cmake_prefix_path): specific_env_hook_ext = environ['CATKIN_SHELL'] if not IS_WINDOWS and 'CATKIN_SHELL' in environ and environ['CATKIN_SHELL'] else None # remove non-workspace paths workspaces = [path for path in cmake_prefix_path.split(os.pathsep) if path and os.path.isfile(os.path.join(path, CATKIN_MARKER_FILE))] @@ -18,7 +18,7 @@ for workspace in reversed(workspaces): env_hook_dir = os.path.join(workspace, 'etc', 'catkin', 'profile.d') if os.path.isdir(env_hook_dir): -@@ -241,7 +242,7 @@ def find_env_hooks(environ, cmake_prefix_path): +@@ -243,7 +244,7 @@ def find_env_hooks(environ, cmake_prefix_path): lines.append(assignment('_CATKIN_ENVIRONMENT_HOOKS_COUNT', count)) for i in range(count): lines.append(assignment('_CATKIN_ENVIRONMENT_HOOKS_%d' % i, env_hooks[i])) diff -Nru ros-catkin-0.6.16/debian/patches/0006-use-GNUInstallDirs-when-installing-into-usr.patch ros-catkin-0.7.1/debian/patches/0006-use-GNUInstallDirs-when-installing-into-usr.patch --- ros-catkin-0.6.16/debian/patches/0006-use-GNUInstallDirs-when-installing-into-usr.patch 2015-12-17 22:50:11.000000000 +0000 +++ ros-catkin-0.7.1/debian/patches/0006-use-GNUInstallDirs-when-installing-into-usr.patch 2016-07-07 08:09:55.000000000 +0000 @@ -2,14 +2,14 @@ Date: Thu, 19 Nov 2015 17:27:23 +0100 Subject: use GNUInstallDirs when installing into /usr -use libdir for libexec as per policy +use lib for libexec --- cmake/all.cmake | 12 ++++++++++++ cmake/catkin_package.cmake | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cmake/all.cmake b/cmake/all.cmake -index 6910906..8b0ca46 100644 +index 6910906..ce1918f 100644 --- a/cmake/all.cmake +++ b/cmake/all.cmake @@ -154,6 +154,17 @@ message(STATUS "catkin ${catkin_VERSION}") @@ -23,7 +23,7 @@ +set(CATKIN_GLOBAL_ETC_DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}") +set(CATKIN_GLOBAL_INCLUDE_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +set(CATKIN_GLOBAL_LIB_DESTINATION "${CMAKE_INSTALL_LIBDIR}") -+set(CATKIN_GLOBAL_LIBEXEC_DESTINATION "${CMAKE_INSTALL_LIBDIR}") ++set(CATKIN_GLOBAL_LIBEXEC_DESTINATION lib) +set(CATKIN_GLOBAL_PYTHON_DESTINATION ${PYTHON_INSTALL_DIR}) +set(CATKIN_GLOBAL_SHARE_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}") +else() diff -Nru ros-catkin-0.6.16/debian/rules ros-catkin-0.7.1/debian/rules --- ros-catkin-0.6.16/debian/rules 2015-12-17 22:50:11.000000000 +0000 +++ ros-catkin-0.7.1/debian/rules 2016-07-07 08:09:55.000000000 +0000 @@ -15,3 +15,6 @@ dh_auto_clean -- -find . -name '*.pyc' -print0 | xargs -0 rm -f -rm -f bin/catkin_findc bin/catkin_make_isolatedc + +# test suite is broken atm. +override_dh_auto_test: diff -Nru ros-catkin-0.6.16/doc/dev_guide/generated_cmake_api.rst ros-catkin-0.7.1/doc/dev_guide/generated_cmake_api.rst --- ros-catkin-0.6.16/doc/dev_guide/generated_cmake_api.rst 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/doc/dev_guide/generated_cmake_api.rst 2016-03-18 21:21:15.000000000 +0000 @@ -89,7 +89,7 @@ .. _`catkin_add_executable_with_gtest_ref`: `catkin_add_executable_with_gtest` ----------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. cmake:macro:: catkin_add_executable_with_gtest(target) @@ -172,7 +172,8 @@ (default: 60) :type TIMEOUT: integer :param WORKING_DIRECTORY: the working directory when executing the - tests + tests (this option can only be used when the ``path`` argument is a + file but not when it is a directory) :type WORKING_DIRECTORY: string @@ -276,9 +277,7 @@ The signature: - catkin_install_python(PROGRAMS files... DESTINATION - [OPTIONAL] - ) + catkin_install_python(PROGRAMS files... DESTINATION [OPTIONAL]) See the documentation for CMake install() function for more information. @@ -863,3 +862,21 @@ .. cmake:macro:: list_insert_in_workspace_order(listname) *[macro defined in list_insert_in_workspace_order.cmake]* + +.. _`safe_execute_process_ref`: + +`safe_execute_process` +~~~~~~~~~~~~~~~~~~~~~~ + +.. cmake:macro:: safe_execute_process(cmd_keyword, arg1) + + *[macro defined in safe_execute_process.cmake]* + +.. _`shell_ref`: + +`shell` +~~~~~~~ + +.. cmake:macro:: shell(arg1) + + *[function defined in shell.cmake]* diff -Nru ros-catkin-0.6.16/doc/howto/format1/installing_python.rst ros-catkin-0.7.1/doc/howto/format1/installing_python.rst --- ros-catkin-0.6.16/doc/howto/format1/installing_python.rst 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/doc/howto/format1/installing_python.rst 2016-03-18 21:21:15.000000000 +0000 @@ -18,15 +18,17 @@ only a few core ROS commands like ``rosrun`` and ``roslaunch`` that install in the global ``bin/`` directory. -Standard ROS practice is to place all your executable Python programs -in a ``scripts/`` subdirectory. To keep the user API clean, +Standard ROS practice is to place all executable Python programs in a +package subdirectory named ``nodes/`` or ``scripts/``. Their usage is +the same, the two names distinguish ROS nodes from other executable +Python scripts. To keep the user API clean, executable script names generally do not include a ``.py`` suffix. Your ``CMakeLists.txt`` should install all the scripts explictly using the special install function ``catkin_install_python``. This will make sure that shebang lines are updated to use the specific Python version used at configure time:: - catkin_install_python(PROGRAMS scripts/your_node1 scripts/your_node2 + catkin_install_python(PROGRAMS nodes/your_node scripts/another_script DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) Another good practice is to keep executable scripts very short, diff -Nru ros-catkin-0.6.16/doc/howto/format2/installing_python.rst ros-catkin-0.7.1/doc/howto/format2/installing_python.rst --- ros-catkin-0.6.16/doc/howto/format2/installing_python.rst 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/doc/howto/format2/installing_python.rst 2016-03-18 21:21:15.000000000 +0000 @@ -18,15 +18,17 @@ only a few core ROS commands like ``rosrun`` and ``roslaunch`` that install in the global ``bin/`` directory. -Standard ROS practice is to place all your executable Python programs -in a ``scripts/`` subdirectory. To keep the user API clean, +Standard ROS practice is to place all executable Python programs in a +package subdirectory named ``nodes/`` or ``scripts/``. Their usage is +the same, the two names distinguish ROS nodes from other executable +Python scripts. To keep the user API clean, executable script names generally do not include a ``.py`` suffix. Your ``CMakeLists.txt`` should install all the scripts explictly using the special install function ``catkin_install_python``. This will make sure that shebang lines are updated to use the specific Python version used at configure time:: - catkin_install_python(PROGRAMS scripts/your_node1 scripts/your_node2 + catkin_install_python(PROGRAMS nodes/your_node scripts/another_script DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) Another good practice is to keep executable scripts very short, diff -Nru ros-catkin-0.6.16/package.xml ros-catkin-0.7.1/package.xml --- ros-catkin-0.6.16/package.xml 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/package.xml 2016-03-18 21:21:15.000000000 +0000 @@ -1,7 +1,7 @@ catkin - 0.6.16 + 0.7.1 Low-level build system macros and infrastructure for ROS. Dirk Thomas BSD diff -Nru ros-catkin-0.6.16/python/catkin/find_in_workspaces.py ros-catkin-0.7.1/python/catkin/find_in_workspaces.py --- ros-catkin-0.6.16/python/catkin/find_in_workspaces.py 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/python/catkin/find_in_workspaces.py 2016-03-18 21:21:15.000000000 +0000 @@ -87,7 +87,7 @@ # except for s == 'share', cand is a list of two paths: ws[0] + s + project (+ path) and ws[1] + project (+ path) # add cand to result list if it exists # is not defined for s in ['bin', 'lib'], bailing out -def find_in_workspaces(search_dirs=None, project=None, path=None, _workspaces=get_workspaces(), considered_paths=None, first_matching_workspace_only=False, first_match_only=False, workspace_to_source_spaces=None, source_path_to_packages=None): +def find_in_workspaces(search_dirs=None, project=None, path=None, _workspaces=None, considered_paths=None, first_matching_workspace_only=False, first_match_only=False, workspace_to_source_spaces=None, source_path_to_packages=None): ''' Find all paths which match the search criteria. All workspaces are searched in order. @@ -110,7 +110,8 @@ search_dirs = _get_valid_search_dirs(search_dirs, project) if 'libexec' in search_dirs: search_dirs.insert(search_dirs.index('libexec'), 'lib') - + if _workspaces is None: + _workspaces = get_workspaces() if workspace_to_source_spaces is None: workspace_to_source_spaces = {} if source_path_to_packages is None: diff -Nru ros-catkin-0.6.16/test/unit_tests/test_find_in_workspace.py ros-catkin-0.7.1/test/unit_tests/test_find_in_workspace.py --- ros-catkin-0.6.16/test/unit_tests/test_find_in_workspace.py 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/test/unit_tests/test_find_in_workspace.py 2016-03-18 21:21:15.000000000 +0000 @@ -33,14 +33,14 @@ self.assertRaises(ValueError, _get_valid_search_dirs, ['libexec'], None) def test_find_in_workspaces(self): - existing = find_in_workspaces([], _workspaces=None) + existing = find_in_workspaces([], _workspaces=[]) self.assertEqual([], existing) - existing = find_in_workspaces([], 'foo', _workspaces=None) + existing = find_in_workspaces([], 'foo', _workspaces=[]) self.assertEqual([], existing) - existing = find_in_workspaces([], 'foo', 'foopath', _workspaces=None) + existing = find_in_workspaces([], 'foo', 'foopath', _workspaces=[]) self.assertEqual([], existing) - existing = find_in_workspaces(['include'], 'foo', 'foopath', _workspaces=None) + existing = find_in_workspaces(['include'], 'foo', 'foopath', _workspaces=[]) self.assertEqual([], existing) checked = [] diff -Nru ros-catkin-0.6.16/test/unit_tests/test_parse_package_xml.py ros-catkin-0.7.1/test/unit_tests/test_parse_package_xml.py --- ros-catkin-0.6.16/test/unit_tests/test_parse_package_xml.py 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/test/unit_tests/test_parse_package_xml.py 2016-03-18 21:21:15.000000000 +0000 @@ -16,21 +16,37 @@ def test_get_output(self): pack = Mock() + pack.package_format = 2 pack.name = 'foopack' pack.version = '0.1.2' pack.maintainers = ['m1', 'm2'] pack.build_depends = ['bd1', 'bd2'] pack.buildtool_depends = ['catkin'] + pack.build_export_depends = ['bed1', 'bed2'] + pack.buildtool_export_depends = ['bted1', 'bted2'] + pack.exec_depends = ['ed1', 'ed2'] pack.run_depends = ['rd1', 'rd2'] + pack.test_depends = ['td1', 'td2'] + pack.doc_depends = ['dd1', 'dd2'] pack.exports = [] result = _get_output(pack) - self.assertEqual(set(['set(_CATKIN_CURRENT_PACKAGE "foopack")', - 'set(foopack_MAINTAINER "m1, m2")', - 'set(foopack_DEPRECATED "")', - 'set(foopack_VERSION "0.1.2")', - 'set(foopack_BUILD_DEPENDS "bd1" "bd2")', - 'set(foopack_RUN_DEPENDS "rd1" "rd2")', - 'set(foopack_BUILDTOOL_DEPENDS "catkin")']), set(result)) + self.assertEqual( + set([ + 'set(_CATKIN_CURRENT_PACKAGE "foopack")', + 'set(foopack_MAINTAINER "m1, m2")', + 'set(foopack_PACKAGE_FORMAT "2")', + 'set(foopack_DEPRECATED "")', + 'set(foopack_VERSION "0.1.2")', + 'set(foopack_BUILD_DEPENDS "bd1" "bd2")', + 'set(foopack_BUILDTOOL_DEPENDS "catkin")', + 'set(foopack_BUILD_EXPORT_DEPENDS "bed1" "bed2")', + 'set(foopack_BUILDTOOL_EXPORT_DEPENDS "bted1" "bted2")', + 'set(foopack_EXEC_DEPENDS "ed1" "ed2")', + 'set(foopack_RUN_DEPENDS "rd1" "rd2")', + 'set(foopack_TEST_DEPENDS "td1" "td2")', + 'set(foopack_DOC_DEPENDS "dd1" "dd2")', + ]), + set(result)) def test_main(self): try: @@ -53,12 +69,22 @@ self.assertTrue(os.path.isfile(check_file)) with open(check_file, 'r') as fhand: contents = fhand.read() - self.assertEqual(set(['set(_CATKIN_CURRENT_PACKAGE "foopack")', - 'set(foopack_MAINTAINER "foo ")', - 'set(foopack_DEPRECATED "")', - 'set(foopack_VERSION "0.1.2")', - 'set(foopack_BUILD_DEPENDS "bd1" "bd2")', - 'set(foopack_RUN_DEPENDS "rd1" "rd2")', - 'set(foopack_BUILDTOOL_DEPENDS )']), set(contents.splitlines())) + self.assertEqual( + set([ + 'set(_CATKIN_CURRENT_PACKAGE "foopack")', + 'set(foopack_MAINTAINER "foo ")', + 'set(foopack_PACKAGE_FORMAT "1")', + 'set(foopack_DEPRECATED "")', + 'set(foopack_VERSION "0.1.2")', + 'set(foopack_BUILD_DEPENDS "bd1" "bd2")', + 'set(foopack_BUILDTOOL_DEPENDS )', + 'set(foopack_BUILD_EXPORT_DEPENDS "rd1" "rd2")', + 'set(foopack_BUILDTOOL_EXPORT_DEPENDS )', + 'set(foopack_EXEC_DEPENDS "rd1" "rd2")', + 'set(foopack_RUN_DEPENDS "rd1" "rd2")', + 'set(foopack_TEST_DEPENDS )', + 'set(foopack_DOC_DEPENDS )', + ]), + set(contents.splitlines())) finally: shutil.rmtree(rootdir) diff -Nru ros-catkin-0.6.16/test/unit_tests/test_setup_util.py ros-catkin-0.7.1/test/unit_tests/test_setup_util.py --- ros-catkin-0.6.16/test/unit_tests/test_setup_util.py 2015-11-09 23:34:05.000000000 +0000 +++ ros-catkin-0.7.1/test/unit_tests/test_setup_util.py 2016-03-18 21:21:15.000000000 +0000 @@ -52,18 +52,31 @@ shutil.rmtree(rootdir) def test_prefix_env(self): - mock_env = {} - self.assertEqual('', - _prefix_env_variable(mock_env, 'varname', [], '')) - self.assertEqual(os.pathsep.join(['foo', 'bar']), - _prefix_env_variable(mock_env, 'varname', ['foo', 'bar'], '')) - mock_env = {'varname': os.pathsep.join(['baz', 'bar', 'bam'])} - self.assertEqual('', - _prefix_env_variable(mock_env, 'varname', [], '')) - self.assertEqual('foo' + os.pathsep, - _prefix_env_variable(mock_env, 'varname', ['foo', 'bar'], '')) - self.assertEqual(os.pathsep.join(['foo', 'lim']) + os.pathsep, - _prefix_env_variable(mock_env, 'varname', ['foo', 'lim', 'foo', 'lim'], '')) + try: + rootdir = tempfile.mkdtemp() + foo_path = os.path.join(rootdir, 'foo') + os.makedirs(foo_path) + bar_path = os.path.join(rootdir, 'bar') + os.makedirs(bar_path) + baz_path = os.path.join(rootdir, 'baz') + bam_path = os.path.join(rootdir, 'bam') + lim_path = os.path.join(rootdir, 'lim') + os.makedirs(lim_path) + + mock_env = {} + self.assertEqual('', + _prefix_env_variable(mock_env, 'varname', [], '')) + self.assertEqual(os.pathsep.join([foo_path, bar_path]), + _prefix_env_variable(mock_env, 'varname', [foo_path, bar_path, baz_path], '')) + mock_env = {'varname': os.pathsep.join([baz_path, bar_path, bam_path])} + self.assertEqual('', + _prefix_env_variable(mock_env, 'varname', [], '')) + self.assertEqual(foo_path + os.pathsep, + _prefix_env_variable(mock_env, 'varname', [foo_path, bar_path], '')) + self.assertEqual(os.pathsep.join([foo_path, lim_path]) + os.pathsep, + _prefix_env_variable(mock_env, 'varname', [foo_path, lim_path, foo_path, lim_path], '')) + finally: + shutil.rmtree(rootdir) def test_remove_from_env(self): altsep = os.path.altsep