diff --git a/.gitignore b/.gitignore index 9e37669..4ae898f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ *_ws +.DS_Store +/tango-icon-theme-0.8.90 +/tango-icon-theme-0.8.90.tar.gz diff --git a/README.md b/README.md index be94aee..5b4b051 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,67 @@ -ros-install-osx [![Build Status](https://travis-ci.org/mikepurvis/ros-install-osx.svg?branch=master)](https://travis-ci.org/mikepurvis/ros-install-osx) +ros-install-osx =============== -This repo aims to maintain a usable, scripted, up-to-date installation procedure for -[ROS](http://ros.org), currently Lunar. The intent is that the `install` script may -be executed on a El Capitan or newer machine and produce a working desktop_full -installation, including RQT, rviz, and Gazebo. +* This commonly breaks depending on what gets pushed over brew and whether the corresponding packages update deprecated code. Efforts have been made to pick out working versions of specific packages, but nothing is guaranteed. -This is the successor to my [popular gist on the same topic][1]. +This repo aims to maintain a usable, scripted, up-to-date installation procedure for [ROS](http://ros.org), currently melodic. The intent is that the `install` script may be executed on a Catalina or newer machine and produce a working desktop_full installation, including RQT, rviz, and Gazebo. -[1]: https://gist.github.com/mikepurvis/9837958 +This is the successor to the [popular gist on the same topic][1]. Also thanks to [Boris Gromov](https://gist.github.com/bgromov) for [his helpful gist](https://gist.github.com/bgromov/23a74bbe846d965964b150080cb2d574). +## Current Status + +**Note: This should work as of March 1, 2020 on Catalina 10.15.3** + +Required software versions (installed via script): + +* **boost**: 1.72 +* **opencv3** +* **python2** Usage ----- -```shell -git clone https://github.com/mikepurvis/ros-install-osx.git -cd ros-install-osx -./install -``` +The `install` script should just work for most users, although you may need to run it multiple times. Run these steps first to have a better chance of success: + +1. [Disable system integrity protection](https://www.imore.com/how-turn-system-integrity-protection-macos). + +2. If on Catalina, set your terminal back to bash. This is very helpful for building software via brew, and roslaunch will not autocomplete using zsh. + + ```bash + chsh -s /bin/bash + ``` + +3. Attempting to clone this repo onto your machine should trigger the xcode command line tools to download. + + ```bash + xcode-select --install + git clone https://github.com/smnogar/ros-install-osx.git + cd ros-install-osx + ``` + +4. Install brew + + ```bash + ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile + source ~/.bash_profile + brew doctor + ``` + +5. Install xquartz + + ```bash + brew cask install xquartz + ``` + +6. Run: `./install` + +7. After it completes successfully, add the following to your bash_profile: + + ```bash + cat bash_profile_recommendations.sh >> ~/.bash_profile + ``` + + Note that if you do not yet have XQuartz installed, you will be forced to log out and in after that installation, and re-run this script. @@ -36,23 +79,6 @@ installed, rosdep is already installed and initialized, and you set the `ROS_INS environment variable to a path which already exists and you have write access to. -Step by Step ------------- - -The `install` script should just work for most users. However, if you run into trouble, -it's a pretty big pain to rebuild everything. Note that in this scenario, it may make -sense to treat the script as a list of instructions, and execute them one by one, -manually. - -If you have a build fail, for example with rviz, note that you can modify the `catkin build` -line to start at a particular package. Inside your `indigo_desktop_full_ws` dir, run: - - catkin build --start-with rviz - -If you've resolved whatever issue stopped the build previously, this will pick up where -it left off. - - ## Troubleshooting ### Python and pip packages @@ -89,7 +115,7 @@ If you are getting permission errors when you `sudo uninstall` pip packages, see [Issue #11](https://github.com/mikepurvis/ros-install-osx/issues/11) and [this StackOverflow Q&A](http://stackoverflow.com/a/35051066/2653356). -### El Capitan support +### El Capitan (and newer) support The `install` script may not work as smoothly in OS X El Capitan. Here are some pointers, tips, and hacks to help you complete the installation. @@ -128,3 +154,133 @@ have [System Integrity Protection](https://support.apple.com/en-us/HT204899) ena The installation script should have detected that and *suggested* a quick fix. Please refer to the very last section of [`install`](https://github.com/mikepurvis/ros-install-osx/blob/master/install) + +**It is strongly recommended to disable SIP** + +#### Assorted notes + +Below are assorted tips that I have compiled for fixing any issues that can crop up. + +* It is basically impossible to get indigo to work on macOS sierra + + * This has to do with home-brew dropping qt4 support: https://github.com/mikepurvis/ros-install-osx/issues/63 + +* rosdep —skip-keys command is useful for resolving dependencies + + * rosdep check --from-paths src --ignore-src --rosdistro kinetic --skip-keys geographiclib --skip-keys geographiclib-tools + +* Indigo still doesn’t work using qt@4 + + * Can’t detect correct qt installation + +* Important steps to get kinetic to work (all of these are critical): + * Make sure using brew python/pip + * Rviz needs ogre1.9 + +* Gazebo8 + + * Uses Ogre1.9 + +* High Sierra + * Make sure to set `ROS_MASTER_URI` to the actual machine name + * Otherwise significant delays exist in running especially python based commands + +* If having QT errors compiling look at the end of this thread: + * https://github.com/Homebrew/legacy-homebrew/issues/29938 + * Basically add path + +* Command for updating pip if getting weird python errors + + * pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U + +* If you start getting weird errors with accessing too many files, try: + * `ulimit -n 4096` + * See [here](https://superuser.com/questions/433746/is-there-a-fix-for-the-too-many-open-files-in-system-error-on-os-x-10-7-1) for details + * or + * `sudo sysctl -w kern.maxfiles=99999` + * `sudo sysctl -w kern.maxfilesperproc=99999` + * `ulimit -n 65536` + +* [If running out of pty devices](https://codybonney.com/increase-the-max-number-of-ptys-on-os-x-10-8-3/) + + * `sudo sysctl -w kern.tty.ptmx_max=999` + +* image_publisher currently fails. [See this fix](https://github.com/ros-perception/image_pipeline/pull/304) + +* For Gazebo plugins, don't forget to setup `/opt/ros/kinetic/lib` in `GAZEBO_PLUGIN_PATH` and to export it into env + +* mavros/mavlink + + * [workaround to get mavros to compile (endian.h) errors] (https://github.com/mavlink/mavros/issues/851) + +* If errors are encountered such as: + + ``` + Errors << qt_gui_cpp:cmake /Users/steve/Documents_local/temp/kinetic/logs/qt_gui_cpp/build.cmake.000.log + CMake Error at /Users/steve/Documents/ARL/Snapdragon/ros-install-osx/kinetic_desktop_full_ws/src/qt_gui_core/qt_gui_cpp/src/qt_gui_cpp/CMakeLists.txt:3 (find_package): + By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project + has asked CMake to find a package configuration file provided by + "Qt5Widgets", but CMake did not find one. + + Could not find a package configuration file provided by "Qt5Widgets" with + any of the following names: + + Qt5WidgetsConfig.cmake + qt5widgets-config.cmake + + Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set + "Qt5Widgets_DIR" to a directory containing one of the above files. If + "Qt5Widgets" provides a separate development package or SDK, be sure it has + been installed. + ``` + + * It means qt or pyqt are not correctly installed or in the path. Try the various relevant lines in the installation script such as: + + * + + ``` + pushd /usr/local/share/sip + if [ ! -e PyQt5 ]; then + ln -s Qt5 PyQt5 + fi + popd + ``` + + * `export PATH=$(pwd)/shim:$PATH` + + * `brew link qt --force ` + + * `export PATH="/usr/local/opt/qt/bin:$PATH" ` + +* Python Crypto errors + + * ``` + pip uninstall Crypto + pip uninstall pycrypto + pip install pycrypto + ``` + +* If having issues with packages not finding terminal_color, you need to up catkin_pkg_modules + + ```bash + sudo pip install --upgrade catkin_pkg_modules + ``` + +* If the standard library is missing: such as + + ```bash + error: no member named 'isfinite' in namespace 'std'; did you mean 'finite'? + ``` + + Run the following command (from [here](https://github.com/PointCloudLibrary/pcl/issues/2601)) + + ```bash + #Check the current sdk + xcrun --show-sdk-path + + #Change sdk + sudo xcode-select -s /Library/Developer/CommandLineTools #Using CommandLineTools SDK + sudo xcode-select -s /Applications/Xcode.app/Contents/Developer #Using XCode.app SDK + ``` + + \ No newline at end of file diff --git a/bash_profile_recommendations.sh b/bash_profile_recommendations.sh new file mode 100644 index 0000000..adfbb78 --- /dev/null +++ b/bash_profile_recommendations.sh @@ -0,0 +1,6 @@ + +# recommended bash_profile lines for ROS +export PYTHONPATH=/usr/local/lib/python3.7/site-packages +export PYTHONWARNINGS=ignore::yaml.YAMLLoadWarning +export ROS_PYTHON_VERSION=3 +export PATH="/usr/local/opt/python/libexec/bin:$PATH" diff --git a/install b/install index 051e380..b988aeb 100755 --- a/install +++ b/install @@ -22,7 +22,7 @@ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -ROS_DISTRO=${ROS_DISTRO:-lunar} +ROS_DISTRO=${ROS_DISTRO:-melodic} ROS_CONFIGURATION=${ROS_CONFIGURATION:-desktop_full} ROS_EXTRA_PACKAGES=${ROS_EXTRA_PACKAGES:-} ROS_INSTALL_DIR=${ROS_INSTALL_DIR:-/opt/ros/${ROS_DISTRO}} @@ -42,7 +42,6 @@ do_install() # XQuartz if ! hash xquartz 2>/dev/null; then - brew install caskroom/cask/brew-cask brew cask install xquartz echo "Log out and in to finalize XQuartz setup." exit 0 @@ -79,37 +78,52 @@ do_install() # Brewed Python if [ ! "$(which python2)" = "/usr/local/bin/python2" ]; then brew install python + brew unlink python + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f1f4a0a60e801ff92faf8d0ac81ad9ce5910c295/Formula/python@2.rb + brew link python@2 + mkdir -p ~/Library/Python/2.7/lib/python/site-packages echo "$(brew --prefix)/lib/python2.7/site-packages" >> ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth fi - # Gives us console_bridge, urdfdom, and gtest. - brew tap ros/deps - # This tap gives us formulae for Gazebo and its dependencies, including SDF. brew tap osrf/simulation - # Homebrew science gives us vtk and PCL, among other things. - brew tap homebrew/science - # ROS infrastructure tools - brew install libyaml || true - pip2 install -U setuptools rosdep rosinstall_generator wstool rosinstall catkin_tools bloom empy sphinx pycurl + brew install libyaml git || true + + # install tango-icon-theme so icons show up correctly in rqt + brew install wget intltool gettext icon-naming-utils imagemagick automake + brew link --force gettext + wget http://pkgs.fedoraproject.org/repo/pkgs/tango-icon-theme/tango-icon-theme-0.8.90.tar.gz/0795895d2f20eddcbd2bffe94ed431a6/tango-icon-theme-0.8.90.tar.gz + rm -rf tango-icon-theme-0.8.90 + tar -xvf tango-icon-theme-0.8.90.tar.gz + cd tango-icon-theme-0.8.90 + ./configure + make install + cd .. + + pip install -U setuptools rosdep rosinstall_generator wstool rosinstall catkin_tools bloom empy sphinx pycurl osrf_pycommon termcolor # Rosdep has an issue detecting that qt5 is correctly installed, so preinstall it. This is a keg-only formula, # so add its location to the prefix path in order for workspace packages to be able to find it. - brew install qt5 pyqt5 sip + brew install qt5 pyqt5 sip || true export CMAKE_PREFIX_PATH=$(brew --prefix qt5) # This hack is required to make qt_gui_cpp compile correctly. See https://github.com/mikepurvis/ros-install-osx/pull/84#issuecomment-338209466 + export PATH="/usr/local/opt/qt5/bin:$PATH" pushd /usr/local/share/sip if [ ! -e PyQt5 ]; then - ln -s Qt5 PyQt5 + ln -fvs Qt5 PyQt5 fi popd - # Get homebrew's opencv3 from a bottle so that we don't have to build it. - brew install opencv3 + # get openssl and gpgme working for rosbag_storage + brew install openssl + export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig" + + # missing depdendencies that rosdep doesn't seem to catch + brew install fltk poco lz4 gpgme yaml-cpp opencv pcl # Mock out python and pip so that we get the brewed versions when rosdep and other programs call them. # Mock out pip so that we get the brewed pip2 when rosdep calls it to make an installation. @@ -134,37 +148,87 @@ do_install() mkdir $WS cd $WS + if brew ls --versions numpy@1.16 > /dev/null; then + brew uninstall --ignore-dependencies numpy@1.16 + brew install numpy + brew link --overwrite numpy + fi + + # Standard source install rosinstall_generator ${ROS_CONFIGURATION} ${ROS_EXTRA_PACKAGES} --rosdistro ${ROS_DISTRO} --deps --tar > ${WS}.rosinstall wstool init src pushd src # Avoid downloading opencv3; we already installed it from homebrew. wstool merge file://$(pwd)/../${WS}.rosinstall - wstool remove opencv3 + + # swap out rospy for kinetic version 1.12.6. This fixes "RuntimeError: + # concurrent poll() invocation" errors. + # wstool merge -r ../../patches/rospy_patch.rosinstall -y wstool update -j8 - # See: https://github.com/ros/catkin/pull/784 - if [ -d catkin ]; then - curl https://raw.githubusercontent.com/ros/catkin/8a47f4eceb4954beb4a5b38b50793d0bbe2c96cf/cmake/catkinConfig.cmake.in > catkin/cmake/catkinConfig.cmake.in - fi + # Package dependencies. + rosdep install --from-paths . --ignore-src --rosdistro ${ROS_DISTRO} -y -r --as-root pip:no + popd - # Pending release: https://github.com/ros-visualization/rviz/pull/1165 - if [ -d rviz ]; then - curl https://raw.githubusercontent.com/mikepurvis/rviz/21eac2bcc061bb623fd17aa449f6215c493b27f2/CMakeLists.txt > rviz/CMakeLists.txt - fi + # install specific versions of certain brew packages - if [ -d image_pipeline ]; then - # Pending merge and release: https://github.com/ros-perception/image_pipeline/pull/303 - curl https://raw.githubusercontent.com/mikepurvis/image_pipeline/d308d00aed5b66961f9e13ab7a50660a24be7c7f/image_proc/CMakeLists.txt > image_pipeline/image_proc/CMakeLists.txt - curl https://raw.githubusercontent.com/mikepurvis/image_pipeline/d308d00aed5b66961f9e13ab7a50660a24be7c7f/stereo_image_proc/CMakeLists.txt > image_pipeline/stereo_image_proc/CMakeLists.txt + # sip 4.19.8_12 - still supports python2 + brew unlink sip + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/6d2b011fa8f28ef5a0b52f24eb687276823a22fa/Formula/sip.rb + brew link sip - # Pending merge and release: https://github.com/ros-perception/image_pipeline/pull/304 - curl https://raw.githubusercontent.com/mbreyer/image_pipeline/4bf67d3c861cb157e8174f67250680263b18d2b7/image_publisher/CMakeLists.txt > image_pipeline/image_publisher/CMakeLists.txt - fi + # pyqt 5.10.1_1 - still supports python2 + brew unlink pyqt + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/1f389d65e21ad067be6811900f5361301b44839f/Formula/pyqt.rb + brew link pyqt - # Package dependencies. - rosdep install --from-paths . --ignore-src --rosdistro ${ROS_DISTRO} -y --as-root pip:no - popd + # cmake 3.17 seems to break things, this is 3.16.15 + brew unlink cmake + brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/ce67f01dd2586e36b84eba1c0a7d13fb0cde0302/Formula/cmake.rb + brew link cmake + + # opencv3 + brew unlink opencv + brew install opencv@3 + brew link --force opencv@3 + + # # old version of numpy + if ! brew ls --versions numpy@1.16 > /dev/null; then + brew unlink numpy + brew install numpy@1.16 + brew link numpy@1.16 --force + fi + + # patches + + # fix tf and tf2 trying to link against unused? boost component + patch -N -d src/geometry2/tf2/ < ../patches/tf2.diff + + # rosbag_strorage encryption + patch -N -d src/ros_comm/rosbag_storage/ < ../patches/rosbag_storage.diff + if [ ! -d /usr/local/include/openssl ]; then + ln -s /usr/local/opt/openssl/include/* /usr/local/include/ + fi + + # fix boost components in camera_calibration_parsers + patch -N -d src/image_common/camera_calibration_parsers/ < ../patches/camera_calibration_parsers.diff + + # remove testing from diagnostic aggregator + patch -N -d src/diagnostics/diagnostic_aggregator/ < ../patches/diagnostic_aggregator.diff + + # fix boost components in camera_calibration_parsers + patch -N -d src/vision_opencv/cv_bridge/ < ../patches/cv_bridge.diff + + # add pango to image_view + patch -N -d src/image_pipeline/image_view/ < ../patches/image_view.diff + + # fix find flann library in pcl so pcl_ros can build + # (https://stackoverflow.com/questions/53776238/building-point-cloud-library-pcl-on-macos-x-mojave-error-ld-library-not-foun) + patch -N -d /usr/local/share/pcl-1.9/Modules/ < ../patches/FindFLANN.diff + + # fix rqt_launch not showing up in rqt_gui + patch -N -d src/rqt_launch/ < ../patches/rqt_launch.diff # Clean out or create the install directory. if [ -d ${ROS_INSTALL_DIR} ]; then @@ -173,19 +237,22 @@ do_install() echo "This sudo prompt is to create and chown ${ROS_INSTALL_DIR}." sudo mkdir -p ${ROS_INSTALL_DIR} sudo chown $USER ${ROS_INSTALL_DIR} + sudo chown $USER ${ROS_INSTALL_DIR}/../ fi # Parallel build. catkin config --install \ --install-space ${ROS_INSTALL_DIR} \ --cmake-args \ - -DCATKIN_ENABLE_TESTING=1 \ + -DCMAKE_CXX_STANDARD=14 \ + -DCATKIN_ENABLE_TESTING=0 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_FIND_FRAMEWORK=LAST \ -DPYTHON_EXECUTABLE=$(which python2) \ -DPYTHON_LIBRARY=$(python2 -c "import sys; print sys.prefix")/lib/libpython2.7.dylib \ - -DPYTHON_INCLUDE_DIR=$(python2 -c "import sys; print sys.prefix")/include/python2.7 - catkin build --limit-status-rate 1 + -DPYTHON_INCLUDE_DIR=$(python2 -c "import sys; print sys.prefix")/include/python2.7 \ + -DBoost_NO_BOOST_CMAKE=ON + catkin build echo "Installation successful, please source the ROS workspace:" echo diff --git a/patches/FindFLANN.diff b/patches/FindFLANN.diff new file mode 100644 index 0000000..f9e82ae --- /dev/null +++ b/patches/FindFLANN.diff @@ -0,0 +1,13 @@ +--- FindFLANN.cmake 2019-10-20 20:48:33.000000000 -0400 ++++ FindFLANN.cmake 2019-10-20 20:45:53.000000000 -0400 +@@ -9,6 +9,10 @@ + # If FLANN_USE_STATIC is specified and then look for static libraries ONLY else + # look for shared ones + ++# find flann libraries ++set(FLANN_LIBRARIES /usr/local/lib/libflann.dylib /usr/local/lib/libflann_cpp.dylib) ++set(FLANN_FOUND TRUE) ++ + if(FLANN_USE_STATIC) + set(FLANN_RELEASE_NAME flann_cpp_s) + set(FLANN_DEBUG_NAME flann_cpp_s-gd) diff --git a/patches/camera_calibration_parsers.diff b/patches/camera_calibration_parsers.diff new file mode 100644 index 0000000..57f7215 --- /dev/null +++ b/patches/camera_calibration_parsers.diff @@ -0,0 +1,29 @@ +--- CMakeLists.txt 2020-02-29 15:56:45.000000000 -0500 ++++ CMakeLists.txt 2020-02-29 15:55:41.000000000 -0500 +@@ -5,9 +5,17 @@ + + find_package(PythonLibs REQUIRED) + if(PYTHONLIBS_VERSION_STRING VERSION_LESS 3) +- find_package(Boost REQUIRED COMPONENTS filesystem python) ++ if(APPLE) ++ find_package(Boost REQUIRED COMPONENTS filesystem python27) ++ else() ++ find_package(Boost REQUIRED COMPONENTS filesystem python) ++ endif() + else() +- find_package(Boost REQUIRED COMPONENTS filesystem python3) ++ if(APPLE) ++ find_package(Boost REQUIRED COMPONENTS filesystem python) ++ else() ++ find_package(Boost REQUIRED COMPONENTS filesystem python3) ++ endif() + endif() + include_directories(include ${catkin_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}) + +@@ -80,4 +88,4 @@ + + if(CATKIN_ENABLE_TESTING) + add_subdirectory(test) +-endif() +\ No newline at end of file ++endif() diff --git a/patches/cv_bridge.diff b/patches/cv_bridge.diff new file mode 100644 index 0000000..7680645 --- /dev/null +++ b/patches/cv_bridge.diff @@ -0,0 +1,22 @@ +--- CMakeLists.txt 2020-02-29 16:04:16.000000000 -0500 ++++ CMakeLists.txt 2020-02-29 16:03:36.000000000 -0500 +@@ -6,9 +6,17 @@ + if(NOT ANDROID) + find_package(PythonLibs) + if(PYTHONLIBS_VERSION_STRING VERSION_LESS 3) +- find_package(Boost REQUIRED python) ++ if(APPLE) ++ find_package(Boost REQUIRED COMPONENTS filesystem python27) ++ else() ++ find_package(Boost REQUIRED COMPONENTS filesystem python) ++ endif() + else() +- find_package(Boost REQUIRED python3) ++ if(APPLE) ++ find_package(Boost REQUIRED COMPONENTS filesystem python) ++ else() ++ find_package(Boost REQUIRED COMPONENTS filesystem python3) ++ endif() + endif() + else() + find_package(Boost REQUIRED) diff --git a/patches/diagnostic_aggregator.diff b/patches/diagnostic_aggregator.diff new file mode 100644 index 0000000..b16b673 --- /dev/null +++ b/patches/diagnostic_aggregator.diff @@ -0,0 +1,21 @@ +--- CMakeLists.txt 2020-06-02 13:56:00.000000000 -0400 ++++ CMakeLists.txt 2020-06-02 13:56:53.000000000 -0400 +@@ -40,11 +40,6 @@ + ${PROJECT_NAME} + ) + +-# Analyzer loader allows other users to test that Analyzers load +-add_executable(analyzer_loader test/analyzer_loader.cpp +- gtest-1.7.0/gtest-all.cc) +-target_link_libraries(analyzer_loader diagnostic_aggregator) +- + if(CATKIN_ENABLE_TESTING) + find_package(rostest REQUIRED) + add_rostest(test/launch/test_agg.launch) +@@ -69,6 +64,3 @@ + install(TARGETS ${PROJECT_NAME} + DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + ) +-install(TARGETS aggregator_node analyzer_loader +- DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +-) diff --git a/patches/image_view.diff b/patches/image_view.diff new file mode 100644 index 0000000..6d227b5 --- /dev/null +++ b/patches/image_view.diff @@ -0,0 +1,71 @@ +--- CMakeLists.txt 2019-10-06 15:59:03.000000000 -0400 ++++ CMakeLists.txt 2019-10-06 15:58:20.000000000 -0400 +@@ -1,6 +1,11 @@ + cmake_minimum_required(VERSION 2.8) + project(image_view) + ++find_package(PkgConfig REQUIRED) ++pkg_check_modules(Pango REQUIRED pango) ++ ++link_directories(${Pango_LIBRARY_DIRS}) ++ + find_package(catkin REQUIRED COMPONENTS camera_calibration_parsers cv_bridge dynamic_reconfigure image_transport message_filters message_generation nodelet rosconsole roscpp std_srvs stereo_msgs) + generate_dynamic_reconfigure_options(cfg/ImageView.cfg) + +@@ -11,22 +16,26 @@ + include_directories(${Boost_INCLUDE_DIRS} + ${catkin_INCLUDE_DIRS} + ${OpenCV_INCLUDE_DIRS} ++ ${Pango_INCLUDE_DIRS} + ) + + # Extra tools + add_executable(extract_images src/nodes/extract_images.cpp) + target_link_libraries(extract_images ${catkin_LIBRARIES} + ${OpenCV_LIBRARIES} ++ ${Pango_LIBRARIES} + ) + + add_executable(image_saver src/nodes/image_saver.cpp) + target_link_libraries(image_saver ${catkin_LIBRARIES} + ${OpenCV_LIBRARIES} ++ ${Pango_LIBRARIES} + ) + + add_executable(video_recorder src/nodes/video_recorder.cpp) + target_link_libraries(video_recorder ${catkin_LIBRARIES} + ${OpenCV_LIBRARIES} ++ ${Pango_LIBRARIES} + ) + + install(TARGETS extract_images image_saver video_recorder +@@ -49,6 +58,7 @@ + ${GTK2_LIBRARIES} + ${OpenCV_LIBRARIES} + ${Boost_LIBRARIES} ++ ${Pango_LIBRARIES} + ) + install(TARGETS image_view + DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} +@@ -61,11 +71,13 @@ + target_link_libraries(image_view_exe ${catkin_LIBRARIES} + ${OpenCV_LIBRARIES} + ${Boost_LIBRARIES} ++ ${Pango_LIBRARIES} + ) + + add_executable(disparity_view src/nodes/disparity_view.cpp) + target_link_libraries(disparity_view ${catkin_LIBRARIES} + ${OpenCV_LIBRARIES} ++ ${Pango_LIBRARIES} + ) + + add_executable(stereo_view src/nodes/stereo_view.cpp) +@@ -74,6 +86,7 @@ + ${GTK_LIBRARIES} + ${GTK2_LIBRARIES} + ${OpenCV_LIBRARIES} ++ ${Pango_LIBRARIES} + ) + + install(TARGETS disparity_view image_view_exe stereo_view diff --git a/patches/rosbag_storage.diff b/patches/rosbag_storage.diff new file mode 100644 index 0000000..afce435 --- /dev/null +++ b/patches/rosbag_storage.diff @@ -0,0 +1,18 @@ +--- CMakeLists.txt 2020-03-27 22:19:28.000000000 -0400 ++++ CMakeLists.txt 2020-03-27 22:21:34.000000000 -0400 +@@ -22,12 +22,13 @@ + # Support large bags (>2GB) on 32-bit systems + add_definitions(-D_FILE_OFFSET_BITS=64) + +-include_directories(include ${catkin_INCLUDE_DIRS} ${console_bridge_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${BZIP2_INCLUDE_DIR}) ++include_directories(include ${catkin_INCLUDE_DIRS} ${console_bridge_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${BZIP2_INCLUDE_DIR} ${OpenSSL_INCLUDE_DIRS}) + add_definitions(${BZIP2_DEFINITIONS}) + + set(AES_ENCRYPT_SOURCE "") + set(AES_ENCRYPT_LIBRARIES "") +-if(NOT WIN32) ++if(APPLE) ++elseif(NOT WIN32) + set(AES_ENCRYPT_SOURCE "src/aes_encryptor.cpp" "src/gpgme_utils.cpp") + find_library(GPGME_LIBRARY + NAMES "gpgme" diff --git a/patches/rqt_launch.diff b/patches/rqt_launch.diff new file mode 100644 index 0000000..05a58dd --- /dev/null +++ b/patches/rqt_launch.diff @@ -0,0 +1,11 @@ +--- plugin.xml 2020-03-07 18:17:42.000000000 -0500 ++++ plugin.xml 2020-03-07 18:17:41.000000000 -0500 +@@ -6,7 +6,7 @@ + + + +- ++ + folder + Plugins related to configuration. + diff --git a/patches/rqt_reconfigure.diff b/patches/rqt_reconfigure.diff new file mode 100644 index 0000000..3b435e7 --- /dev/null +++ b/patches/rqt_reconfigure.diff @@ -0,0 +1,11 @@ +--- plugin.xml 2020-02-29 16:52:44.000000000 -0500 ++++ plugin.xml 2020-02-29 16:52:42.000000000 -0500 +@@ -6,7 +6,7 @@ + + + +- ++ + folder + Plugins related to configuration. + diff --git a/patches/smach_ros.patch b/patches/smach_ros.patch new file mode 100644 index 0000000..90bb308 --- /dev/null +++ b/patches/smach_ros.patch @@ -0,0 +1,39 @@ +From cc7eaf7a145430b8293cb66680cb9d45206dd6e7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marcus=20Mee=C3=9Fen?= +Date: Fri, 15 Mar 2019 14:11:37 +0100 +Subject: [PATCH] missing module name in smach_ros/__init__.py import + statements + +--- + smach_ros/src/smach_ros/__init__.py | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git smach_ros/src/smach_ros/__init__.py smach_ros/src/smach_ros/__init__.py +index af249b2..688e9f0 100644 +--- smach_ros/src/smach_ros/__init__.py ++++ smach_ros/src/smach_ros/__init__.py +@@ -49,14 +49,14 @@ smach.set_loggers( + smach.set_shutdown_check(rospy.is_shutdown) + + ### Core classes +-from util import set_preempt_handler ++from smach_ros.util import set_preempt_handler + + ### Top-level Containers / Wrappers +-from action_server_wrapper import ActionServerWrapper +-from introspection import IntrospectionClient, IntrospectionServer ++from smach_ros.action_server_wrapper import ActionServerWrapper ++from smach_ros.introspection import IntrospectionClient, IntrospectionServer + + ### State Classes +-from simple_action_state import SimpleActionState +-from service_state import ServiceState +-from monitor_state import MonitorState +-from condition_state import ConditionState ++from smach_ros.simple_action_state import SimpleActionState ++from smach_ros.service_state import ServiceState ++from smach_ros.monitor_state import MonitorState ++from smach_ros.condition_state import ConditionState +-- +2.25.0 + diff --git a/patches/tf2.diff b/patches/tf2.diff new file mode 100644 index 0000000..49a2aee --- /dev/null +++ b/patches/tf2.diff @@ -0,0 +1,11 @@ +--- CMakeLists.txt 2018-11-16 18:47:39.000000000 -0500 ++++ CMakeLists.txt 2019-10-06 14:35:37.000000000 -0400 +@@ -3,7 +3,7 @@ + + find_package(console_bridge REQUIRED) + find_package(catkin REQUIRED COMPONENTS geometry_msgs rostime tf2_msgs) +-find_package(Boost REQUIRED COMPONENTS signals system thread) ++find_package(Boost REQUIRED COMPONENTS system thread) + + catkin_package( + INCLUDE_DIRS include diff --git a/rosdeps.yaml b/rosdeps.yaml index 576ee79..2bd6bc4 100644 --- a/rosdeps.yaml +++ b/rosdeps.yaml @@ -5,6 +5,10 @@ libogre-dev: packages: [ogre1.9] # Use Gazebo 8 instead of 7. +gazebo: + osx: + homebrew: + packages: [gazebo8] gazebo7: osx: homebrew: @@ -14,15 +18,40 @@ libgazebo7-dev: homebrew: packages: [gazebo8] +gazebo9: + osx: + homebrew: + packages: [gazebo9] +libgazebo9-dev: + osx: + homebrew: + packages: [gazebo9] + # Don't try to install opencv3 opencv3: osx: homebrew: packages: [] +geographiclib: + osx: + homebrew: + packages: [geographiclib] +geographiclib-tools: + osx: + homebrew: + packages: [] + +# ignore joystick drivers +joy: + osx: + homebrew: + packages: [] + # Installing all this Python stuff from homebrew instead of pip # means we get pre-built bottles and don't have to build it all # each time. + python: osx: homebrew: @@ -31,8 +60,8 @@ python: packages: [pip, setuptools, nose] python-matplotlib: osx: - homebrew: - packages: [homebrew/science/matplotlib] + pip: + packages: [matplotlib] python-numpy: osx: homebrew: @@ -87,3 +116,30 @@ python-qt5-bindings: osx: homebrew: packages: [] +google-mock: + osx: + homebrew: + pacakges: [] +gtest: + osx: + homebrew: + packages: [] + +python: + osx: + homebrew: + packages: [python@2] + +python-gnupg: + osx: + pip: + packages: [python-gnupg] + +libgpgme-dev: + osx: + homebrew: + packages: [gpgme] +tango-icon-theme: + osx: + homebrew: + packages: [] \ No newline at end of file