diff --git a/.github/workflows/osx_arm64.yml b/.github/workflows/osx_arm64.yml
new file mode 100644
index 000000000..7a5a49a2f
--- /dev/null
+++ b/.github/workflows/osx_arm64.yml
@@ -0,0 +1,2948 @@
+jobs:
+ stage_0_job_0:
+ name: mutex urdfdom-py octomap ament-package
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs: []
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros2-distro-mutex ros-humble-urdfdom-py ros-humble-octomap ros-humble-ament-package
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros2-distro-mutex ros-humble-urdfdom-py ros-humble-octomap
+ ros-humble-ament-package
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_1_job_1:
+ name: ament-cmake-core ros-workspace ros-environment
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_0_job_0
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-cmake-core ros-humble-ros-workspace ros-humble-ros-environment
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-cmake-core ros-humble-ros-workspace ros-humble-ros-environment
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_2_job_2:
+ name: ament-lint ament-cmake-python gtest-vendor ament-cmake-libraries ament-cmake-include-directories
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_1_job_1
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-lint ros-humble-ament-cmake-python ros-humble-gtest-vendor
+ ros-humble-ament-cmake-libraries ros-humble-ament-cmake-include-directories
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-lint ros-humble-ament-cmake-python ros-humble-gtest-vendor
+ ros-humble-ament-cmake-libraries ros-humble-ament-cmake-include-directories
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_2_job_3:
+ name: ament-cmake-export-libraries ament-cmake-version ament-cmake-export-link-flags
+ ament-cmake-export-include-directories ament-cmake-export-definitions
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_1_job_1
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-cmake-export-libraries ros-humble-ament-cmake-version
+ ros-humble-ament-cmake-export-link-flags ros-humble-ament-cmake-export-include-directories
+ ros-humble-ament-cmake-export-definitions
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-cmake-export-libraries ros-humble-ament-cmake-version
+ ros-humble-ament-cmake-export-link-flags ros-humble-ament-cmake-export-include-directories
+ ros-humble-ament-cmake-export-definitions
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_2_job_4:
+ name: ament-pycodestyle ament-cppcheck osrf-pycommon google-benchmark-vendor osrf-testing-tools-cpp
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_1_job_1
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-pycodestyle ros-humble-ament-cppcheck ros-humble-osrf-pycommon
+ ros-humble-google-benchmark-vendor ros-humble-osrf-testing-tools-cpp
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-pycodestyle ros-humble-ament-cppcheck ros-humble-osrf-pycommon
+ ros-humble-google-benchmark-vendor ros-humble-osrf-testing-tools-cpp
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_2_job_5:
+ name: test-interface-files fastcdr iceoryx-hoofs urdfdom-headers ruckig
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_1_job_1
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-test-interface-files ros-humble-fastcdr ros-humble-iceoryx-hoofs
+ ros-humble-urdfdom-headers ros-humble-ruckig
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-test-interface-files ros-humble-fastcdr ros-humble-iceoryx-hoofs
+ ros-humble-urdfdom-headers ros-humble-ruckig
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_2_job_6:
+ name: ompl gtsam sdformat-test-files apriltag
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_1_job_1
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ompl ros-humble-gtsam ros-humble-sdformat-test-files
+ ros-humble-apriltag
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ompl ros-humble-gtsam ros-humble-sdformat-test-files
+ ros-humble-apriltag
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_3_job_7:
+ name: ament-flake8 ament-cmake-test ament-cmake-target-dependencies ament-cmake-export-targets
+ ament-cmake-export-interfaces
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_2_job_2
+ - stage_2_job_3
+ - stage_2_job_4
+ - stage_2_job_5
+ - stage_2_job_6
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-flake8 ros-humble-ament-cmake-test ros-humble-ament-cmake-target-dependencies
+ ros-humble-ament-cmake-export-targets ros-humble-ament-cmake-export-interfaces
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-flake8 ros-humble-ament-cmake-test ros-humble-ament-cmake-target-dependencies
+ ros-humble-ament-cmake-export-targets ros-humble-ament-cmake-export-interfaces
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_3_job_8:
+ name: ament-cmake-export-dependencies gmock-vendor iceoryx-posh backward-ros
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_2_job_2
+ - stage_2_job_3
+ - stage_2_job_4
+ - stage_2_job_5
+ - stage_2_job_6
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-cmake-export-dependencies ros-humble-gmock-vendor
+ ros-humble-iceoryx-posh ros-humble-backward-ros
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-cmake-export-dependencies ros-humble-gmock-vendor
+ ros-humble-iceoryx-posh ros-humble-backward-ros
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_4_job_9:
+ name: ament-pep257 ament-cmake-gtest ament-lint-auto ament-cmake-google-benchmark
+ ament-cmake-pytest
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_3_job_7
+ - stage_3_job_8
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-pep257 ros-humble-ament-cmake-gtest ros-humble-ament-lint-auto
+ ros-humble-ament-cmake-google-benchmark ros-humble-ament-cmake-pytest
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-pep257 ros-humble-ament-cmake-gtest ros-humble-ament-lint-auto
+ ros-humble-ament-cmake-google-benchmark ros-humble-ament-cmake-pytest
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_4_job_10:
+ name: iceoryx-binding-c ament-cmake-catch2 ament-mypy ament-cmake-vendor-package
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_3_job_7
+ - stage_3_job_8
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-iceoryx-binding-c ros-humble-ament-cmake-catch2 ros-humble-ament-mypy
+ ros-humble-ament-cmake-vendor-package
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-iceoryx-binding-c ros-humble-ament-cmake-catch2
+ ros-humble-ament-mypy ros-humble-ament-cmake-vendor-package
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_5_job_11:
+ name: ament-copyright ament-cmake-gen-version-h ament-cmake-gmock cyclonedds
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_4_job_9
+ - stage_4_job_10
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-copyright ros-humble-ament-cmake-gen-version-h
+ ros-humble-ament-cmake-gmock ros-humble-cyclonedds
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-copyright ros-humble-ament-cmake-gen-version-h
+ ros-humble-ament-cmake-gmock ros-humble-cyclonedds
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_6_job_12:
+ name: ament-lint-cmake ament-cmake ament-xmllint ament-cpplint ament-index-python
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_5_job_11
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-lint-cmake ros-humble-ament-cmake ros-humble-ament-xmllint
+ ros-humble-ament-cpplint ros-humble-ament-index-python
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-lint-cmake ros-humble-ament-cmake ros-humble-ament-xmllint
+ ros-humble-ament-cpplint ros-humble-ament-index-python
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_6_job_13:
+ name: domain-coordinator generate-parameter-library-py ament-clang-format
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_5_job_11
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-domain-coordinator ros-humble-generate-parameter-library-py
+ ros-humble-ament-clang-format
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-domain-coordinator ros-humble-generate-parameter-library-py
+ ros-humble-ament-clang-format
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_7_job_14:
+ name: ament-cmake-lint-cmake uncrustify-vendor launch rosidl-cli rpyutils
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_6_job_12
+ - stage_6_job_13
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-cmake-lint-cmake ros-humble-uncrustify-vendor ros-humble-launch
+ ros-humble-rosidl-cli ros-humble-rpyutils
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-cmake-lint-cmake ros-humble-uncrustify-vendor
+ ros-humble-launch ros-humble-rosidl-cli ros-humble-rpyutils
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_7_job_15:
+ name: pybind11-vendor tinyxml-vendor tinyxml2-vendor tl-expected tcb-span
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_6_job_12
+ - stage_6_job_13
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-pybind11-vendor ros-humble-tinyxml-vendor ros-humble-tinyxml2-vendor
+ ros-humble-tl-expected ros-humble-tcb-span
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-pybind11-vendor ros-humble-tinyxml-vendor ros-humble-tinyxml2-vendor
+ ros-humble-tl-expected ros-humble-tcb-span
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_7_job_16:
+ name: libcurl-vendor xacro moveit-resources-panda-description random-numbers eigen-stl-containers
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_6_job_12
+ - stage_6_job_13
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-libcurl-vendor ros-humble-xacro ros-humble-moveit-resources-panda-description
+ ros-humble-random-numbers ros-humble-eigen-stl-containers
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-libcurl-vendor ros-humble-xacro ros-humble-moveit-resources-panda-description
+ ros-humble-random-numbers ros-humble-eigen-stl-containers
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_7_job_17:
+ name: moveit-resources-pr2-description angles yaml-cpp-vendor zstd-vendor moveit-resources-fanuc-description
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_6_job_12
+ - stage_6_job_13
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-resources-pr2-description ros-humble-angles ros-humble-yaml-cpp-vendor
+ ros-humble-zstd-vendor ros-humble-moveit-resources-fanuc-description
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-resources-pr2-description ros-humble-angles
+ ros-humble-yaml-cpp-vendor ros-humble-zstd-vendor ros-humble-moveit-resources-fanuc-description
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_7_job_18:
+ name: sqlite3-vendor shared-queues-vendor ament-cmake-auto ros2-control-test-assets
+ gazebo-dev
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_6_job_12
+ - stage_6_job_13
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-sqlite3-vendor ros-humble-shared-queues-vendor ros-humble-ament-cmake-auto
+ ros-humble-ros2-control-test-assets ros-humble-gazebo-dev
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-sqlite3-vendor ros-humble-shared-queues-vendor
+ ros-humble-ament-cmake-auto ros-humble-ros2-control-test-assets ros-humble-gazebo-dev
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_7_job_19:
+ name: sdl2-vendor dynamixel-sdk
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_6_job_12
+ - stage_6_job_13
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-sdl2-vendor ros-humble-dynamixel-sdk
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-sdl2-vendor ros-humble-dynamixel-sdk
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_8_job_20:
+ name: ament-cmake-copyright ament-uncrustify launch-yaml launch-xml mcap-vendor
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_7_job_14
+ - stage_7_job_15
+ - stage_7_job_16
+ - stage_7_job_17
+ - stage_7_job_18
+ - stage_7_job_19
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-cmake-copyright ros-humble-ament-uncrustify ros-humble-launch-yaml
+ ros-humble-launch-xml ros-humble-mcap-vendor
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-cmake-copyright ros-humble-ament-uncrustify
+ ros-humble-launch-yaml ros-humble-launch-xml ros-humble-mcap-vendor
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_8_job_21:
+ name: moveit-resources-prbt-support
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_7_job_14
+ - stage_7_job_15
+ - stage_7_job_16
+ - stage_7_job_17
+ - stage_7_job_18
+ - stage_7_job_19
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-resources-prbt-support
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-resources-prbt-support
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_9_job_22:
+ name: ament-cmake-xmllint ament-cmake-uncrustify ament-cmake-pep257 ament-cmake-flake8
+ ament-cmake-cpplint
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_8_job_20
+ - stage_8_job_21
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-cmake-xmllint ros-humble-ament-cmake-uncrustify
+ ros-humble-ament-cmake-pep257 ros-humble-ament-cmake-flake8 ros-humble-ament-cmake-cpplint
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-cmake-xmllint ros-humble-ament-cmake-uncrustify
+ ros-humble-ament-cmake-pep257 ros-humble-ament-cmake-flake8 ros-humble-ament-cmake-cpplint
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_9_job_23:
+ name: ament-cmake-cppcheck launch-testing eigen3-cmake-module ament-cmake-clang-format
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_8_job_20
+ - stage_8_job_21
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-cmake-cppcheck ros-humble-launch-testing ros-humble-eigen3-cmake-module
+ ros-humble-ament-cmake-clang-format
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-cmake-cppcheck ros-humble-launch-testing
+ ros-humble-eigen3-cmake-module ros-humble-ament-cmake-clang-format
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_10_job_24:
+ name: ament-lint-common foonathan-memory-vendor rviz-ogre-vendor rviz-assimp-vendor
+ ignition-cmake2-vendor
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_9_job_22
+ - stage_9_job_23
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-lint-common ros-humble-foonathan-memory-vendor
+ ros-humble-rviz-ogre-vendor ros-humble-rviz-assimp-vendor ros-humble-ignition-cmake2-vendor
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-lint-common ros-humble-foonathan-memory-vendor
+ ros-humble-rviz-ogre-vendor ros-humble-rviz-assimp-vendor ros-humble-ignition-cmake2-vendor
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_11_job_25:
+ name: python-cmake-module performance-test-fixture mimick-vendor ament-cmake-ros
+ rosidl-adapter
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_10_job_24
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-python-cmake-module ros-humble-performance-test-fixture
+ ros-humble-mimick-vendor ros-humble-ament-cmake-ros ros-humble-rosidl-adapter
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-python-cmake-module ros-humble-performance-test-fixture
+ ros-humble-mimick-vendor ros-humble-ament-cmake-ros ros-humble-rosidl-adapter
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_11_job_26:
+ name: rosidl-typesupport-interface fastrtps-cmake-module fastrtps rti-connext-dds-cmake-module
+ rmw-implementation-cmake
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_10_job_24
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-typesupport-interface ros-humble-fastrtps-cmake-module
+ ros-humble-fastrtps ros-humble-rti-connext-dds-cmake-module ros-humble-rmw-implementation-cmake
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-typesupport-interface ros-humble-fastrtps-cmake-module
+ ros-humble-fastrtps ros-humble-rti-connext-dds-cmake-module ros-humble-rmw-implementation-cmake
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_11_job_27:
+ name: ament-index-cpp spdlog-vendor orocos-kdl-vendor python-qt-binding moveit-common
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_10_job_24
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ament-index-cpp ros-humble-spdlog-vendor ros-humble-orocos-kdl-vendor
+ ros-humble-python-qt-binding ros-humble-moveit-common
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ament-index-cpp ros-humble-spdlog-vendor ros-humble-orocos-kdl-vendor
+ ros-humble-python-qt-binding ros-humble-moveit-common
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_11_job_28:
+ name: smclib ignition-math6-vendor tango-icons-vendor keyboard-handler
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_10_job_24
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-smclib ros-humble-ignition-math6-vendor ros-humble-tango-icons-vendor
+ ros-humble-keyboard-handler
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-smclib ros-humble-ignition-math6-vendor ros-humble-tango-icons-vendor
+ ros-humble-keyboard-handler
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_12_job_29:
+ name: launch-testing-ament-cmake rosidl-parser tracetools console-bridge-vendor
+ urdf-parser-plugin
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_11_job_25
+ - stage_11_job_26
+ - stage_11_job_27
+ - stage_11_job_28
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-launch-testing-ament-cmake ros-humble-rosidl-parser ros-humble-tracetools
+ ros-humble-console-bridge-vendor ros-humble-urdf-parser-plugin
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-launch-testing-ament-cmake ros-humble-rosidl-parser
+ ros-humble-tracetools ros-humble-console-bridge-vendor ros-humble-urdf-parser-plugin
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_12_job_30:
+ name: resource-retriever qt-gui tracetools-image-pipeline qt-gui-py-common qt-dotgraph
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_11_job_25
+ - stage_11_job_26
+ - stage_11_job_27
+ - stage_11_job_28
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-resource-retriever ros-humble-qt-gui ros-humble-tracetools-image-pipeline
+ ros-humble-qt-gui-py-common ros-humble-qt-dotgraph
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-resource-retriever ros-humble-qt-gui ros-humble-tracetools-image-pipeline
+ ros-humble-qt-gui-py-common ros-humble-qt-dotgraph
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_13_job_31:
+ name: rcutils rosidl-cmake urdfdom rviz-rendering
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_12_job_29
+ - stage_12_job_30
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rcutils ros-humble-rosidl-cmake ros-humble-urdfdom ros-humble-rviz-rendering
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rcutils ros-humble-rosidl-cmake ros-humble-urdfdom
+ ros-humble-rviz-rendering
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_14_job_32:
+ name: rosidl-runtime-c rcpputils rviz-rendering-tests
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_13_job_31
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-runtime-c ros-humble-rcpputils ros-humble-rviz-rendering-tests
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-runtime-c ros-humble-rcpputils ros-humble-rviz-rendering-tests
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_15_job_33:
+ name: rosidl-runtime-cpp rosidl-generator-c rmw rosidl-typesupport-introspection-c
+ libyaml-vendor
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_14_job_32
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-runtime-cpp ros-humble-rosidl-generator-c ros-humble-rmw
+ ros-humble-rosidl-typesupport-introspection-c ros-humble-libyaml-vendor
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-runtime-cpp ros-humble-rosidl-generator-c
+ ros-humble-rmw ros-humble-rosidl-typesupport-introspection-c ros-humble-libyaml-vendor
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_15_job_34:
+ name: rcl-logging-interface class-loader
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_14_job_32
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rcl-logging-interface ros-humble-class-loader
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rcl-logging-interface ros-humble-class-loader
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_16_job_35:
+ name: rosidl-generator-cpp rosidl-typesupport-introspection-cpp rcl-yaml-param-parser
+ rcl-logging-spdlog pluginlib
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_15_job_33
+ - stage_15_job_34
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-generator-cpp ros-humble-rosidl-typesupport-introspection-cpp
+ ros-humble-rcl-yaml-param-parser ros-humble-rcl-logging-spdlog ros-humble-pluginlib
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-generator-cpp ros-humble-rosidl-typesupport-introspection-cpp
+ ros-humble-rcl-yaml-param-parser ros-humble-rcl-logging-spdlog ros-humble-pluginlib
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_17_job_36:
+ name: rosidl-typesupport-fastrtps-cpp urdf qt-gui-cpp
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_16_job_35
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-typesupport-fastrtps-cpp ros-humble-urdf ros-humble-qt-gui-cpp
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-typesupport-fastrtps-cpp ros-humble-urdf
+ ros-humble-qt-gui-cpp
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_18_job_37:
+ name: rosidl-typesupport-fastrtps-c kdl-parser srdfdom sdformat-urdf turtlebot3-description
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_17_job_36
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-typesupport-fastrtps-c ros-humble-kdl-parser ros-humble-srdfdom
+ ros-humble-sdformat-urdf ros-humble-turtlebot3-description
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-typesupport-fastrtps-c ros-humble-kdl-parser
+ ros-humble-srdfdom ros-humble-sdformat-urdf ros-humble-turtlebot3-description
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_19_job_38:
+ name: rosidl-typesupport-c rosidl-typesupport-cpp rosidl-generator-py
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_18_job_37
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-typesupport-c ros-humble-rosidl-typesupport-cpp
+ ros-humble-rosidl-generator-py
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-typesupport-c ros-humble-rosidl-typesupport-cpp
+ ros-humble-rosidl-generator-py
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_20_job_39:
+ name: rosidl-default-runtime rosidl-default-generators
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_19_job_38
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosidl-default-runtime ros-humble-rosidl-default-generators
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosidl-default-runtime ros-humble-rosidl-default-generators
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_21_job_40:
+ name: unique-identifier-msgs builtin-interfaces rmw-dds-common lifecycle-msgs
+ std-srvs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_20_job_39
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-unique-identifier-msgs ros-humble-builtin-interfaces
+ ros-humble-rmw-dds-common ros-humble-lifecycle-msgs ros-humble-std-srvs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-unique-identifier-msgs ros-humble-builtin-interfaces
+ ros-humble-rmw-dds-common ros-humble-lifecycle-msgs ros-humble-std-srvs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_22_job_41:
+ name: action-msgs rmw-fastrtps-shared-cpp rmw-connextdds-common rmw-cyclonedds-cpp
+ rcl-interfaces
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_21_job_40
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-action-msgs ros-humble-rmw-fastrtps-shared-cpp ros-humble-rmw-connextdds-common
+ ros-humble-rmw-cyclonedds-cpp ros-humble-rcl-interfaces
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-action-msgs ros-humble-rmw-fastrtps-shared-cpp
+ ros-humble-rmw-connextdds-common ros-humble-rmw-cyclonedds-cpp ros-humble-rcl-interfaces
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_22_job_42:
+ name: std-msgs statistics-msgs rosgraph-msgs controller-manager-msgs rosbag2-interfaces
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_21_job_40
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-std-msgs ros-humble-statistics-msgs ros-humble-rosgraph-msgs
+ ros-humble-controller-manager-msgs ros-humble-rosbag2-interfaces
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-std-msgs ros-humble-statistics-msgs ros-humble-rosgraph-msgs
+ ros-humble-controller-manager-msgs ros-humble-rosbag2-interfaces
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_22_job_43:
+ name: rosbridge-msgs pendulum-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_21_job_40
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rosbridge-msgs ros-humble-pendulum-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rosbridge-msgs ros-humble-pendulum-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_23_job_44:
+ name: test-msgs rmw-connextdds composition-interfaces geometry-msgs actionlib-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_22_job_41
+ - stage_22_job_42
+ - stage_22_job_43
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-test-msgs ros-humble-rmw-connextdds ros-humble-composition-interfaces
+ ros-humble-geometry-msgs ros-humble-actionlib-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-test-msgs ros-humble-rmw-connextdds ros-humble-composition-interfaces
+ ros-humble-geometry-msgs ros-humble-actionlib-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_23_job_45:
+ name: bond rosbag2-storage-mcap-testdata ackermann-msgs example-interfaces gps-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_22_job_41
+ - stage_22_job_42
+ - stage_22_job_43
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-bond ros-humble-rosbag2-storage-mcap-testdata ros-humble-ackermann-msgs
+ ros-humble-example-interfaces ros-humble-gps-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-bond ros-humble-rosbag2-storage-mcap-testdata
+ ros-humble-ackermann-msgs ros-humble-example-interfaces ros-humble-gps-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_23_job_46:
+ name: actuator-msgs ros2cli-test-interfaces velodyne-msgs rosapi-msgs turtlebot3-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_22_job_41
+ - stage_22_job_42
+ - stage_22_job_43
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-actuator-msgs ros-humble-ros2cli-test-interfaces ros-humble-velodyne-msgs
+ ros-humble-rosapi-msgs ros-humble-turtlebot3-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-actuator-msgs ros-humble-ros2cli-test-interfaces
+ ros-humble-velodyne-msgs ros-humble-rosapi-msgs ros-humble-turtlebot3-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_23_job_47:
+ name: action-tutorials-interfaces rtcm-msgs nmea-msgs apriltag-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_22_job_41
+ - stage_22_job_42
+ - stage_22_job_43
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-action-tutorials-interfaces ros-humble-rtcm-msgs ros-humble-nmea-msgs
+ ros-humble-apriltag-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-action-tutorials-interfaces ros-humble-rtcm-msgs
+ ros-humble-nmea-msgs ros-humble-apriltag-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_24_job_48:
+ name: rmw-fastrtps-dynamic-cpp rmw-fastrtps-cpp sensor-msgs rosidl-runtime-py
+ tf2
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_23_job_44
+ - stage_23_job_45
+ - stage_23_job_46
+ - stage_23_job_47
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rmw-fastrtps-dynamic-cpp ros-humble-rmw-fastrtps-cpp
+ ros-humble-sensor-msgs ros-humble-rosidl-runtime-py ros-humble-tf2
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rmw-fastrtps-dynamic-cpp ros-humble-rmw-fastrtps-cpp
+ ros-humble-sensor-msgs ros-humble-rosidl-runtime-py ros-humble-tf2
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_24_job_49:
+ name: tf2-msgs shape-msgs trajectory-msgs octomap-msgs nav-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_23_job_44
+ - stage_23_job_45
+ - stage_23_job_46
+ - stage_23_job_47
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-tf2-msgs ros-humble-shape-msgs ros-humble-trajectory-msgs
+ ros-humble-octomap-msgs ros-humble-nav-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-tf2-msgs ros-humble-shape-msgs ros-humble-trajectory-msgs
+ ros-humble-octomap-msgs ros-humble-nav-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_24_job_50:
+ name: diagnostic-msgs nav-2d-msgs vision-msgs ros-gz-interfaces geographic-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_23_job_44
+ - stage_23_job_45
+ - stage_23_job_46
+ - stage_23_job_47
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-diagnostic-msgs ros-humble-nav-2d-msgs ros-humble-vision-msgs
+ ros-humble-ros-gz-interfaces ros-humble-geographic-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-diagnostic-msgs ros-humble-nav-2d-msgs ros-humble-vision-msgs
+ ros-humble-ros-gz-interfaces ros-humble-geographic-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_24_job_51:
+ name: cartographer-ros-msgs graph-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_23_job_44
+ - stage_23_job_45
+ - stage_23_job_46
+ - stage_23_job_47
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-cartographer-ros-msgs ros-humble-graph-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-cartographer-ros-msgs ros-humble-graph-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_25_job_52:
+ name: rmw-implementation object-recognition-msgs visualization-msgs stereo-msgs
+ sensor-msgs-py
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_24_job_48
+ - stage_24_job_49
+ - stage_24_job_50
+ - stage_24_job_51
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rmw-implementation ros-humble-object-recognition-msgs
+ ros-humble-visualization-msgs ros-humble-stereo-msgs ros-humble-sensor-msgs-py
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rmw-implementation ros-humble-object-recognition-msgs
+ ros-humble-visualization-msgs ros-humble-stereo-msgs ros-humble-sensor-msgs-py
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_25_job_53:
+ name: map-msgs control-msgs cv-bridge tf2-eigen-kdl dwb-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_24_job_48
+ - stage_24_job_49
+ - stage_24_job_50
+ - stage_24_job_51
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-map-msgs ros-humble-control-msgs ros-humble-cv-bridge
+ ros-humble-tf2-eigen-kdl ros-humble-dwb-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-map-msgs ros-humble-control-msgs ros-humble-cv-bridge
+ ros-humble-tf2-eigen-kdl ros-humble-dwb-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_25_job_54:
+ name: gazebo-msgs image-geometry pcl-msgs ros-ign-interfaces
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_24_job_48
+ - stage_24_job_49
+ - stage_24_job_50
+ - stage_24_job_51
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-gazebo-msgs ros-humble-image-geometry ros-humble-pcl-msgs
+ ros-humble-ros-ign-interfaces
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-gazebo-msgs ros-humble-image-geometry ros-humble-pcl-msgs
+ ros-humble-ros-ign-interfaces
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_26_job_55:
+ name: rcl moveit-msgs common-interfaces vision-opencv
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_25_job_52
+ - stage_25_job_53
+ - stage_25_job_54
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rcl ros-humble-moveit-msgs ros-humble-common-interfaces
+ ros-humble-vision-opencv
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rcl ros-humble-moveit-msgs ros-humble-common-interfaces
+ ros-humble-vision-opencv
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_27_job_56:
+ name: rcl-lifecycle rcl-action libstatistics-collector
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_26_job_55
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rcl-lifecycle ros-humble-rcl-action ros-humble-libstatistics-collector
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rcl-lifecycle ros-humble-rcl-action ros-humble-libstatistics-collector
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_28_job_57:
+ name: rclpy rclcpp
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_27_job_56
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rclpy ros-humble-rclcpp
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rclpy ros-humble-rclcpp
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_58:
+ name: launch-ros rclcpp-lifecycle ros2cli rclcpp-components rclcpp-action
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-launch-ros ros-humble-rclcpp-lifecycle ros-humble-ros2cli
+ ros-humble-rclcpp-components ros-humble-rclcpp-action
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-launch-ros ros-humble-rclcpp-lifecycle ros-humble-ros2cli
+ ros-humble-rclcpp-components ros-humble-rclcpp-action
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_59:
+ name: tf2-py rsl geometric-shapes launch-param-builder rosbag2-test-common
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-tf2-py ros-humble-rsl ros-humble-geometric-shapes ros-humble-launch-param-builder
+ ros-humble-rosbag2-test-common
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-tf2-py ros-humble-rsl ros-humble-geometric-shapes
+ ros-humble-launch-param-builder ros-humble-rosbag2-test-common
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_60:
+ name: laser-geometry filters behaviortree-cpp-v3 rqt-gui camera-calibration-parsers
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-laser-geometry ros-humble-filters ros-humble-behaviortree-cpp-v3
+ ros-humble-rqt-gui ros-humble-camera-calibration-parsers
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-laser-geometry ros-humble-filters ros-humble-behaviortree-cpp-v3
+ ros-humble-rqt-gui ros-humble-camera-calibration-parsers
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_61:
+ name: rqt-py-common rqt-gui-cpp rosbridge-test-msgs ros-gz-sim hls-lfcd-lds-driver
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rqt-py-common ros-humble-rqt-gui-cpp ros-humble-rosbridge-test-msgs
+ ros-humble-ros-gz-sim ros-humble-hls-lfcd-lds-driver
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rqt-py-common ros-humble-rqt-gui-cpp ros-humble-rosbridge-test-msgs
+ ros-humble-ros-gz-sim ros-humble-hls-lfcd-lds-driver
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_62:
+ name: teleop-twist-keyboard dummy-sensors dummy-map-server demo-nodes-py quality-of-service-demo-py
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-teleop-twist-keyboard ros-humble-dummy-sensors ros-humble-dummy-map-server
+ ros-humble-demo-nodes-py ros-humble-quality-of-service-demo-py
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-teleop-twist-keyboard ros-humble-dummy-sensors
+ ros-humble-dummy-map-server ros-humble-demo-nodes-py ros-humble-quality-of-service-demo-py
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_63:
+ name: intra-process-demo examples-rclpy-minimal-subscriber examples-rclpy-minimal-service
+ examples-rclpy-minimal-publisher examples-rclpy-minimal-client
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-intra-process-demo ros-humble-examples-rclpy-minimal-subscriber
+ ros-humble-examples-rclpy-minimal-service ros-humble-examples-rclpy-minimal-publisher
+ ros-humble-examples-rclpy-minimal-client
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-intra-process-demo ros-humble-examples-rclpy-minimal-subscriber
+ ros-humble-examples-rclpy-minimal-service ros-humble-examples-rclpy-minimal-publisher
+ ros-humble-examples-rclpy-minimal-client
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_64:
+ name: examples-rclpy-minimal-action-server examples-rclpy-minimal-action-client
+ examples-rclpy-executors examples-rclcpp-multithreaded-executor examples-rclcpp-minimal-timer
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-examples-rclpy-minimal-action-server ros-humble-examples-rclpy-minimal-action-client
+ ros-humble-examples-rclpy-executors ros-humble-examples-rclcpp-multithreaded-executor
+ ros-humble-examples-rclcpp-minimal-timer
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-examples-rclpy-minimal-action-server ros-humble-examples-rclpy-minimal-action-client
+ ros-humble-examples-rclpy-executors ros-humble-examples-rclcpp-multithreaded-executor
+ ros-humble-examples-rclcpp-minimal-timer
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_65:
+ name: examples-rclcpp-minimal-service examples-rclcpp-minimal-publisher examples-rclcpp-minimal-client
+ action-tutorials-py turtlebot3-teleop
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-examples-rclcpp-minimal-service ros-humble-examples-rclcpp-minimal-publisher
+ ros-humble-examples-rclcpp-minimal-client ros-humble-action-tutorials-py ros-humble-turtlebot3-teleop
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-examples-rclcpp-minimal-service ros-humble-examples-rclcpp-minimal-publisher
+ ros-humble-examples-rclcpp-minimal-client ros-humble-action-tutorials-py
+ ros-humble-turtlebot3-teleop
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_29_job_66:
+ name: turtlebot3-example plotjuggler
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_28_job_57
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-turtlebot3-example ros-humble-plotjuggler
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-turtlebot3-example ros-humble-plotjuggler
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_30_job_67:
+ name: launch-testing-ros message-filters tf2-ros-py parameter-traits nav2-common
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_29_job_58
+ - stage_29_job_59
+ - stage_29_job_60
+ - stage_29_job_61
+ - stage_29_job_62
+ - stage_29_job_63
+ - stage_29_job_64
+ - stage_29_job_65
+ - stage_29_job_66
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-launch-testing-ros ros-humble-message-filters ros-humble-tf2-ros-py
+ ros-humble-parameter-traits ros-humble-nav2-common
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-launch-testing-ros ros-humble-message-filters
+ ros-humble-tf2-ros-py ros-humble-parameter-traits ros-humble-nav2-common
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_30_job_68:
+ name: moveit-configs-utils rosbag2-storage bondcpp hardware-interface realtime-tools
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_29_job_58
+ - stage_29_job_59
+ - stage_29_job_60
+ - stage_29_job_61
+ - stage_29_job_62
+ - stage_29_job_63
+ - stage_29_job_64
+ - stage_29_job_65
+ - stage_29_job_66
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-configs-utils ros-humble-rosbag2-storage ros-humble-bondcpp
+ ros-humble-hardware-interface ros-humble-realtime-tools
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-configs-utils ros-humble-rosbag2-storage
+ ros-humble-bondcpp ros-humble-hardware-interface ros-humble-realtime-tools
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_30_job_69:
+ name: kinematics-interface ros2lifecycle-test-fixtures rqt-gui-py joy camera-info-manager
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_29_job_58
+ - stage_29_job_59
+ - stage_29_job_60
+ - stage_29_job_61
+ - stage_29_job_62
+ - stage_29_job_63
+ - stage_29_job_64
+ - stage_29_job_65
+ - stage_29_job_66
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-kinematics-interface ros-humble-ros2lifecycle-test-fixtures
+ ros-humble-rqt-gui-py ros-humble-joy ros-humble-camera-info-manager
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-kinematics-interface ros-humble-ros2lifecycle-test-fixtures
+ ros-humble-rqt-gui-py ros-humble-joy ros-humble-camera-info-manager
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_30_job_70:
+ name: ros-gz-bridge ros2multicast joint-limits rosbridge-library ros-ign-gazebo
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_29_job_58
+ - stage_29_job_59
+ - stage_29_job_60
+ - stage_29_job_61
+ - stage_29_job_62
+ - stage_29_job_63
+ - stage_29_job_64
+ - stage_29_job_65
+ - stage_29_job_66
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ros-gz-bridge ros-humble-ros2multicast ros-humble-joint-limits
+ ros-humble-rosbridge-library ros-humble-ros-ign-gazebo
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ros-gz-bridge ros-humble-ros2multicast ros-humble-joint-limits
+ ros-humble-rosbridge-library ros-humble-ros-ign-gazebo
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_30_job_71:
+ name: velodyne-laserscan turtlesim topic-monitor quality-of-service-demo-cpp examples-rclcpp-minimal-subscriber
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_29_job_58
+ - stage_29_job_59
+ - stage_29_job_60
+ - stage_29_job_61
+ - stage_29_job_62
+ - stage_29_job_63
+ - stage_29_job_64
+ - stage_29_job_65
+ - stage_29_job_66
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-velodyne-laserscan ros-humble-turtlesim ros-humble-topic-monitor
+ ros-humble-quality-of-service-demo-cpp ros-humble-examples-rclcpp-minimal-subscriber
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-velodyne-laserscan ros-humble-turtlesim ros-humble-topic-monitor
+ ros-humble-quality-of-service-demo-cpp ros-humble-examples-rclcpp-minimal-subscriber
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_30_job_72:
+ name: examples-rclcpp-minimal-composition examples-rclcpp-minimal-action-server
+ examples-rclcpp-minimal-action-client depthimage-to-laserscan action-tutorials-cpp
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_29_job_58
+ - stage_29_job_59
+ - stage_29_job_60
+ - stage_29_job_61
+ - stage_29_job_62
+ - stage_29_job_63
+ - stage_29_job_64
+ - stage_29_job_65
+ - stage_29_job_66
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-examples-rclcpp-minimal-composition ros-humble-examples-rclcpp-minimal-action-server
+ ros-humble-examples-rclcpp-minimal-action-client ros-humble-depthimage-to-laserscan
+ ros-humble-action-tutorials-cpp
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-examples-rclcpp-minimal-composition ros-humble-examples-rclcpp-minimal-action-server
+ ros-humble-examples-rclcpp-minimal-action-client ros-humble-depthimage-to-laserscan
+ ros-humble-action-tutorials-cpp
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_73:
+ name: ros2topic tf2-ros generate-parameter-library ros2test nav2-msgs
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ros2topic ros-humble-tf2-ros ros-humble-generate-parameter-library
+ ros-humble-ros2test ros-humble-nav2-msgs
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ros2topic ros-humble-tf2-ros ros-humble-generate-parameter-library
+ ros-humble-ros2test ros-humble-nav2-msgs
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_74:
+ name: image-transport rosbag2-storage-mcap rosbag2-storage-default-plugins diagnostic-updater
+ nav2-voxel-grid
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-image-transport ros-humble-rosbag2-storage-mcap ros-humble-rosbag2-storage-default-plugins
+ ros-humble-diagnostic-updater ros-humble-nav2-voxel-grid
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-image-transport ros-humble-rosbag2-storage-mcap
+ ros-humble-rosbag2-storage-default-plugins ros-humble-diagnostic-updater
+ ros-humble-nav2-voxel-grid
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_75:
+ name: ros2pkg ros2service ros2node hardware-interface-testing controller-interface
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ros2pkg ros-humble-ros2service ros-humble-ros2node ros-humble-hardware-interface-testing
+ ros-humble-controller-interface
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ros2pkg ros-humble-ros2service ros-humble-ros2node
+ ros-humble-hardware-interface-testing ros-humble-controller-interface
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_76:
+ name: kinematics-interface-kdl pcl-conversions ros2interface ros2doctor ros2action
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-kinematics-interface-kdl ros-humble-pcl-conversions ros-humble-ros2interface
+ ros-humble-ros2doctor ros-humble-ros2action
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-kinematics-interface-kdl ros-humble-pcl-conversions
+ ros-humble-ros2interface ros-humble-ros2doctor ros-humble-ros2action
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_77:
+ name: rqt-console teleop-twist-joy camera-calibration transmission-interface rqt-topic
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rqt-console ros-humble-teleop-twist-joy ros-humble-camera-calibration
+ ros-humble-transmission-interface ros-humble-rqt-topic
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rqt-console ros-humble-teleop-twist-joy ros-humble-camera-calibration
+ ros-humble-transmission-interface ros-humble-rqt-topic
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_78:
+ name: rqt-plot tf2-tools ros-ign-bridge rqt-shell rqt-service-caller
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rqt-plot ros-humble-tf2-tools ros-humble-ros-ign-bridge
+ ros-humble-rqt-shell ros-humble-rqt-service-caller
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rqt-plot ros-humble-tf2-tools ros-humble-ros-ign-bridge
+ ros-humble-rqt-shell ros-humble-rqt-service-caller
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_79:
+ name: rqt-py-console rqt-publisher rqt-graph logging-demo image-tools
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rqt-py-console ros-humble-rqt-publisher ros-humble-rqt-graph
+ ros-humble-logging-demo ros-humble-image-tools
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rqt-py-console ros-humble-rqt-publisher ros-humble-rqt-graph
+ ros-humble-logging-demo ros-humble-image-tools
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_31_job_80:
+ name: demo-nodes-cpp-native demo-nodes-cpp composition
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_30_job_67
+ - stage_30_job_68
+ - stage_30_job_69
+ - stage_30_job_70
+ - stage_30_job_71
+ - stage_30_job_72
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-demo-nodes-cpp-native ros-humble-demo-nodes-cpp ros-humble-composition
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-demo-nodes-cpp-native ros-humble-demo-nodes-cpp
+ ros-humble-composition
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_32_job_81:
+ name: joint-state-publisher robot-state-publisher tf2-kdl tf2-geometry-msgs tf2-eigen
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_31_job_73
+ - stage_31_job_74
+ - stage_31_job_75
+ - stage_31_job_76
+ - stage_31_job_77
+ - stage_31_job_78
+ - stage_31_job_79
+ - stage_31_job_80
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-joint-state-publisher ros-humble-robot-state-publisher
+ ros-humble-tf2-kdl ros-humble-tf2-geometry-msgs ros-humble-tf2-eigen
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-joint-state-publisher ros-humble-robot-state-publisher
+ ros-humble-tf2-kdl ros-humble-tf2-geometry-msgs ros-humble-tf2-eigen
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_32_job_82:
+ name: ros-testing rosbag2-cpp tf2-sensor-msgs ros2run ros2param
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_31_job_73
+ - stage_31_job_74
+ - stage_31_job_75
+ - stage_31_job_76
+ - stage_31_job_77
+ - stage_31_job_78
+ - stage_31_job_79
+ - stage_31_job_80
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ros-testing ros-humble-rosbag2-cpp ros-humble-tf2-sensor-msgs
+ ros-humble-ros2run ros-humble-ros2param
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ros-testing ros-humble-rosbag2-cpp ros-humble-tf2-sensor-msgs
+ ros-humble-ros2run ros-humble-ros2param
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_32_job_83:
+ name: control-toolbox ros2launch theora-image-transport compressed-image-transport
+ compressed-depth-image-transport
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_31_job_73
+ - stage_31_job_74
+ - stage_31_job_75
+ - stage_31_job_76
+ - stage_31_job_77
+ - stage_31_job_78
+ - stage_31_job_79
+ - stage_31_job_80
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-control-toolbox ros-humble-ros2launch ros-humble-theora-image-transport
+ ros-humble-compressed-image-transport ros-humble-compressed-depth-image-transport
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-control-toolbox ros-humble-ros2launch ros-humble-theora-image-transport
+ ros-humble-compressed-image-transport ros-humble-compressed-depth-image-transport
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_32_job_84:
+ name: nav2-simple-commander image-proc ros2lifecycle image-view image-publisher
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_31_job_73
+ - stage_31_job_74
+ - stage_31_job_75
+ - stage_31_job_76
+ - stage_31_job_77
+ - stage_31_job_78
+ - stage_31_job_79
+ - stage_31_job_80
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-nav2-simple-commander ros-humble-image-proc ros-humble-ros2lifecycle
+ ros-humble-image-view ros-humble-image-publisher
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-nav2-simple-commander ros-humble-image-proc ros-humble-ros2lifecycle
+ ros-humble-image-view ros-humble-image-publisher
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_32_job_85:
+ name: rqt-image-view ros-gz-image tf2-bullet rqt-msg velodyne-pointcloud
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_31_job_73
+ - stage_31_job_74
+ - stage_31_job_75
+ - stage_31_job_76
+ - stage_31_job_77
+ - stage_31_job_78
+ - stage_31_job_79
+ - stage_31_job_80
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rqt-image-view ros-humble-ros-gz-image ros-humble-tf2-bullet
+ ros-humble-rqt-msg ros-humble-velodyne-pointcloud
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rqt-image-view ros-humble-ros-gz-image ros-humble-tf2-bullet
+ ros-humble-rqt-msg ros-humble-velodyne-pointcloud
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_32_job_86:
+ name: velodyne-driver rqt-reconfigure turtlebot3-node laser-filters image-common
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_31_job_73
+ - stage_31_job_74
+ - stage_31_job_75
+ - stage_31_job_76
+ - stage_31_job_77
+ - stage_31_job_78
+ - stage_31_job_79
+ - stage_31_job_80
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-velodyne-driver ros-humble-rqt-reconfigure ros-humble-turtlebot3-node
+ ros-humble-laser-filters ros-humble-image-common
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-velodyne-driver ros-humble-rqt-reconfigure ros-humble-turtlebot3-node
+ ros-humble-laser-filters ros-humble-image-common
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_32_job_87:
+ name: apriltag-ros
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_31_job_73
+ - stage_31_job_74
+ - stage_31_job_75
+ - stage_31_job_76
+ - stage_31_job_77
+ - stage_31_job_78
+ - stage_31_job_79
+ - stage_31_job_80
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-apriltag-ros
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-apriltag-ros
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_33_job_88:
+ name: joint-state-publisher-gui rviz-common interactive-markers moveit-resources-fanuc-moveit-config
+ nav2-util
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_32_job_81
+ - stage_32_job_82
+ - stage_32_job_83
+ - stage_32_job_84
+ - stage_32_job_85
+ - stage_32_job_86
+ - stage_32_job_87
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-joint-state-publisher-gui ros-humble-rviz-common ros-humble-interactive-markers
+ ros-humble-moveit-resources-fanuc-moveit-config ros-humble-nav2-util
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-joint-state-publisher-gui ros-humble-rviz-common
+ ros-humble-interactive-markers ros-humble-moveit-resources-fanuc-moveit-config
+ ros-humble-nav2-util
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_33_job_89:
+ name: warehouse-ros rosbag2-compression controller-manager gazebo-ros image-transport-plugins
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_32_job_81
+ - stage_32_job_82
+ - stage_32_job_83
+ - stage_32_job_84
+ - stage_32_job_85
+ - stage_32_job_86
+ - stage_32_job_87
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-warehouse-ros ros-humble-rosbag2-compression ros-humble-controller-manager
+ ros-humble-gazebo-ros ros-humble-image-transport-plugins
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-warehouse-ros ros-humble-rosbag2-compression ros-humble-controller-manager
+ ros-humble-gazebo-ros ros-humble-image-transport-plugins
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_33_job_90:
+ name: sros2 ros2component robot-localization stereo-image-proc image-rotate
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_32_job_81
+ - stage_32_job_82
+ - stage_32_job_83
+ - stage_32_job_84
+ - stage_32_job_85
+ - stage_32_job_86
+ - stage_32_job_87
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-sros2 ros-humble-ros2component ros-humble-robot-localization
+ ros-humble-stereo-image-proc ros-humble-image-rotate
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-sros2 ros-humble-ros2component ros-humble-robot-localization
+ ros-humble-stereo-image-proc ros-humble-image-rotate
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_33_job_91:
+ name: depth-image-proc pcl-ros rosapi geometry2 rqt-srv
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_32_job_81
+ - stage_32_job_82
+ - stage_32_job_83
+ - stage_32_job_84
+ - stage_32_job_85
+ - stage_32_job_86
+ - stage_32_job_87
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-depth-image-proc ros-humble-pcl-ros ros-humble-rosapi
+ ros-humble-geometry2 ros-humble-rqt-srv
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-depth-image-proc ros-humble-pcl-ros ros-humble-rosapi
+ ros-humble-geometry2 ros-humble-rqt-srv
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_33_job_92:
+ name: rqt-action cartographer-ros velodyne ros-ign-image lifecycle
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_32_job_81
+ - stage_32_job_82
+ - stage_32_job_83
+ - stage_32_job_84
+ - stage_32_job_85
+ - stage_32_job_86
+ - stage_32_job_87
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-rqt-action ros-humble-cartographer-ros ros-humble-velodyne
+ ros-humble-ros-ign-image ros-humble-lifecycle
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-rqt-action ros-humble-cartographer-ros ros-humble-velodyne
+ ros-humble-ros-ign-image ros-humble-lifecycle
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_33_job_93:
+ name: dummy-robot-bringup rosx-introspection sbg-driver
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_32_job_81
+ - stage_32_job_82
+ - stage_32_job_83
+ - stage_32_job_84
+ - stage_32_job_85
+ - stage_32_job_86
+ - stage_32_job_87
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-dummy-robot-bringup ros-humble-rosx-introspection ros-humble-sbg-driver
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-dummy-robot-bringup ros-humble-rosx-introspection
+ ros-humble-sbg-driver
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_34_job_94:
+ name: moveit-resources-panda-moveit-config rviz-visual-testing-framework nav2-map-server
+ nav2-lifecycle-manager rosbag2-compression-zstd
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_33_job_88
+ - stage_33_job_89
+ - stage_33_job_90
+ - stage_33_job_91
+ - stage_33_job_92
+ - stage_33_job_93
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-resources-panda-moveit-config ros-humble-rviz-visual-testing-framework
+ ros-humble-nav2-map-server ros-humble-nav2-lifecycle-manager ros-humble-rosbag2-compression-zstd
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-resources-panda-moveit-config ros-humble-rviz-visual-testing-framework
+ ros-humble-nav2-map-server ros-humble-nav2-lifecycle-manager ros-humble-rosbag2-compression-zstd
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_34_job_95:
+ name: nav-2d-utils forward-command-controller steering-controllers-library joint-trajectory-controller
+ nav2-behavior-tree
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_33_job_88
+ - stage_33_job_89
+ - stage_33_job_90
+ - stage_33_job_91
+ - stage_33_job_92
+ - stage_33_job_93
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-nav-2d-utils ros-humble-forward-command-controller ros-humble-steering-controllers-library
+ ros-humble-joint-trajectory-controller ros-humble-nav2-behavior-tree
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-nav-2d-utils ros-humble-forward-command-controller
+ ros-humble-steering-controllers-library ros-humble-joint-trajectory-controller
+ ros-humble-nav2-behavior-tree
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_34_job_96:
+ name: tricycle-controller range-sensor-broadcaster pose-broadcaster pid-controller
+ joint-state-broadcaster
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_33_job_88
+ - stage_33_job_89
+ - stage_33_job_90
+ - stage_33_job_91
+ - stage_33_job_92
+ - stage_33_job_93
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-tricycle-controller ros-humble-range-sensor-broadcaster
+ ros-humble-pose-broadcaster ros-humble-pid-controller ros-humble-joint-state-broadcaster
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-tricycle-controller ros-humble-range-sensor-broadcaster
+ ros-humble-pose-broadcaster ros-humble-pid-controller ros-humble-joint-state-broadcaster
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_34_job_97:
+ name: imu-sensor-broadcaster gpio-controllers force-torque-sensor-broadcaster
+ diff-drive-controller nav2-velocity-smoother
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_33_job_88
+ - stage_33_job_89
+ - stage_33_job_90
+ - stage_33_job_91
+ - stage_33_job_92
+ - stage_33_job_93
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-imu-sensor-broadcaster ros-humble-gpio-controllers ros-humble-force-torque-sensor-broadcaster
+ ros-humble-diff-drive-controller ros-humble-nav2-velocity-smoother
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-imu-sensor-broadcaster ros-humble-gpio-controllers
+ ros-humble-force-torque-sensor-broadcaster ros-humble-diff-drive-controller
+ ros-humble-nav2-velocity-smoother
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_34_job_98:
+ name: nav2-amcl ros2controlcli sros2-cmake ros2cli-common-extensions gazebo-ros2-control
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_33_job_88
+ - stage_33_job_89
+ - stage_33_job_90
+ - stage_33_job_91
+ - stage_33_job_92
+ - stage_33_job_93
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-nav2-amcl ros-humble-ros2controlcli ros-humble-sros2-cmake
+ ros-humble-ros2cli-common-extensions ros-humble-gazebo-ros2-control
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-nav2-amcl ros-humble-ros2controlcli ros-humble-sros2-cmake
+ ros-humble-ros2cli-common-extensions ros-humble-gazebo-ros2-control
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_34_job_99:
+ name: image-pipeline gazebo-plugins rosbridge-server perception-pcl turtlebot3-cartographer
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_33_job_88
+ - stage_33_job_89
+ - stage_33_job_90
+ - stage_33_job_91
+ - stage_33_job_92
+ - stage_33_job_93
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-image-pipeline ros-humble-gazebo-plugins ros-humble-rosbridge-server
+ ros-humble-perception-pcl ros-humble-turtlebot3-cartographer
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-image-pipeline ros-humble-gazebo-plugins ros-humble-rosbridge-server
+ ros-humble-perception-pcl ros-humble-turtlebot3-cartographer
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_34_job_100:
+ name: foxglove-bridge
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_33_job_88
+ - stage_33_job_89
+ - stage_33_job_90
+ - stage_33_job_91
+ - stage_33_job_92
+ - stage_33_job_93
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-foxglove-bridge
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-foxglove-bridge
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_35_job_101:
+ name: moveit-core rviz-default-plugins nav2-costmap-2d rosbag2-transport velocity-controllers
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_34_job_94
+ - stage_34_job_95
+ - stage_34_job_96
+ - stage_34_job_97
+ - stage_34_job_98
+ - stage_34_job_99
+ - stage_34_job_100
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-core ros-humble-rviz-default-plugins ros-humble-nav2-costmap-2d
+ ros-humble-rosbag2-transport ros-humble-velocity-controllers
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-core ros-humble-rviz-default-plugins ros-humble-nav2-costmap-2d
+ ros-humble-rosbag2-transport ros-humble-velocity-controllers
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_35_job_102:
+ name: tricycle-steering-controller position-controllers effort-controllers bicycle-steering-controller
+ admittance-controller
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_34_job_94
+ - stage_34_job_95
+ - stage_34_job_96
+ - stage_34_job_97
+ - stage_34_job_98
+ - stage_34_job_99
+ - stage_34_job_100
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-tricycle-steering-controller ros-humble-position-controllers
+ ros-humble-effort-controllers ros-humble-bicycle-steering-controller ros-humble-admittance-controller
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-tricycle-steering-controller ros-humble-position-controllers
+ ros-humble-effort-controllers ros-humble-bicycle-steering-controller ros-humble-admittance-controller
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_35_job_103:
+ name: ackermann-steering-controller ros2-control ros-core gazebo-ros-pkgs rosbridge-suite
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_34_job_94
+ - stage_34_job_95
+ - stage_34_job_96
+ - stage_34_job_97
+ - stage_34_job_98
+ - stage_34_job_99
+ - stage_34_job_100
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ackermann-steering-controller ros-humble-ros2-control
+ ros-humble-ros-core ros-humble-gazebo-ros-pkgs ros-humble-rosbridge-suite
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ackermann-steering-controller ros-humble-ros2-control
+ ros-humble-ros-core ros-humble-gazebo-ros-pkgs ros-humble-rosbridge-suite
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_36_job_104:
+ name: moveit-ros-occupancy-map-monitor rviz2 moveit-simple-controller-manager
+ moveit-resources-prbt-ikfast-manipulator-plugin nav2-core
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_35_job_101
+ - stage_35_job_102
+ - stage_35_job_103
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-ros-occupancy-map-monitor ros-humble-rviz2 ros-humble-moveit-simple-controller-manager
+ ros-humble-moveit-resources-prbt-ikfast-manipulator-plugin ros-humble-nav2-core
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-ros-occupancy-map-monitor ros-humble-rviz2
+ ros-humble-moveit-simple-controller-manager ros-humble-moveit-resources-prbt-ikfast-manipulator-plugin
+ ros-humble-nav2-core
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_36_job_105:
+ name: costmap-queue pilz-industrial-motion-planner-testutils rosbag2-py chomp-motion-planner
+ nav2-rviz-plugins
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_35_job_101
+ - stage_35_job_102
+ - stage_35_job_103
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-costmap-queue ros-humble-pilz-industrial-motion-planner-testutils
+ ros-humble-rosbag2-py ros-humble-chomp-motion-planner ros-humble-nav2-rviz-plugins
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-costmap-queue ros-humble-pilz-industrial-motion-planner-testutils
+ ros-humble-rosbag2-py ros-humble-chomp-motion-planner ros-humble-nav2-rviz-plugins
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_36_job_106:
+ name: nav2-collision-monitor ros2-controllers slam-toolbox turtlebot3-gazebo
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_35_job_101
+ - stage_35_job_102
+ - stage_35_job_103
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-nav2-collision-monitor ros-humble-ros2-controllers ros-humble-slam-toolbox
+ ros-humble-turtlebot3-gazebo
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-nav2-collision-monitor ros-humble-ros2-controllers
+ ros-humble-slam-toolbox ros-humble-turtlebot3-gazebo
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_37_job_107:
+ name: moveit-ros-planning dwb-core nav2-regulated-pure-pursuit-controller nav2-controller
+ ros2bag
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_36_job_104
+ - stage_36_job_105
+ - stage_36_job_106
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-ros-planning ros-humble-dwb-core ros-humble-nav2-regulated-pure-pursuit-controller
+ ros-humble-nav2-controller ros-humble-ros2bag
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-ros-planning ros-humble-dwb-core ros-humble-nav2-regulated-pure-pursuit-controller
+ ros-humble-nav2-controller ros-humble-ros2bag
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_37_job_108:
+ name: nav2-waypoint-follower nav2-theta-star-planner nav2-smoother nav2-smac-planner
+ nav2-planner
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_36_job_104
+ - stage_36_job_105
+ - stage_36_job_106
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-nav2-waypoint-follower ros-humble-nav2-theta-star-planner
+ ros-humble-nav2-smoother ros-humble-nav2-smac-planner ros-humble-nav2-planner
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-nav2-waypoint-follower ros-humble-nav2-theta-star-planner
+ ros-humble-nav2-smoother ros-humble-nav2-smac-planner ros-humble-nav2-planner
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_37_job_109:
+ name: nav2-navfn-planner nav2-mppi-controller nav2-constrained-smoother nav2-bt-navigator
+ nav2-behaviors
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_36_job_104
+ - stage_36_job_105
+ - stage_36_job_106
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-nav2-navfn-planner ros-humble-nav2-mppi-controller ros-humble-nav2-constrained-smoother
+ ros-humble-nav2-bt-navigator ros-humble-nav2-behaviors
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-nav2-navfn-planner ros-humble-nav2-mppi-controller
+ ros-humble-nav2-constrained-smoother ros-humble-nav2-bt-navigator ros-humble-nav2-behaviors
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_37_job_110:
+ name: moveit-plugins moveit-planners-chomp rqt-bag ros-gz-sim-demos rviz-visual-tools
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_36_job_104
+ - stage_36_job_105
+ - stage_36_job_106
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-plugins ros-humble-moveit-planners-chomp ros-humble-rqt-bag
+ ros-humble-ros-gz-sim-demos ros-humble-rviz-visual-tools
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-plugins ros-humble-moveit-planners-chomp
+ ros-humble-rqt-bag ros-humble-ros-gz-sim-demos ros-humble-rviz-visual-tools
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_37_job_111:
+ name: turtlebot3-bringup
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_36_job_104
+ - stage_36_job_105
+ - stage_36_job_106
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-turtlebot3-bringup
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-turtlebot3-bringup
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_38_job_112:
+ name: moveit-kinematics moveit-ros-warehouse moveit-planners-ompl moveit-ros-robot-interaction
+ dwb-plugins
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_37_job_107
+ - stage_37_job_108
+ - stage_37_job_109
+ - stage_37_job_110
+ - stage_37_job_111
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-kinematics ros-humble-moveit-ros-warehouse ros-humble-moveit-planners-ompl
+ ros-humble-moveit-ros-robot-interaction ros-humble-dwb-plugins
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-kinematics ros-humble-moveit-ros-warehouse
+ ros-humble-moveit-planners-ompl ros-humble-moveit-ros-robot-interaction
+ ros-humble-dwb-plugins
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_38_job_113:
+ name: dwb-critics nav2-rotation-shim-controller rosbag2-tests ros-gz moveit-visual-tools
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_37_job_107
+ - stage_37_job_108
+ - stage_37_job_109
+ - stage_37_job_110
+ - stage_37_job_111
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-dwb-critics ros-humble-nav2-rotation-shim-controller
+ ros-humble-rosbag2-tests ros-humble-ros-gz ros-humble-moveit-visual-tools
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-dwb-critics ros-humble-nav2-rotation-shim-controller
+ ros-humble-rosbag2-tests ros-humble-ros-gz ros-humble-moveit-visual-tools
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_38_job_114:
+ name: ros-ign-gazebo-demos
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_37_job_107
+ - stage_37_job_108
+ - stage_37_job_109
+ - stage_37_job_110
+ - stage_37_job_111
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-ros-ign-gazebo-demos
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-ros-ign-gazebo-demos
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_39_job_115:
+ name: moveit-ros-move-group moveit-ros-benchmarks nav2-dwb-controller rosbag2
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_38_job_112
+ - stage_38_job_113
+ - stage_38_job_114
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-ros-move-group ros-humble-moveit-ros-benchmarks
+ ros-humble-nav2-dwb-controller ros-humble-rosbag2
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-ros-move-group ros-humble-moveit-ros-benchmarks
+ ros-humble-nav2-dwb-controller ros-humble-rosbag2
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_40_job_116:
+ name: moveit-ros-planning-interface moveit-resources-prbt-moveit-config navigation2
+ rqt-bag-plugins ros-base
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_39_job_115
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-ros-planning-interface ros-humble-moveit-resources-prbt-moveit-config
+ ros-humble-navigation2 ros-humble-rqt-bag-plugins ros-humble-ros-base
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-ros-planning-interface ros-humble-moveit-resources-prbt-moveit-config
+ ros-humble-navigation2 ros-humble-rqt-bag-plugins ros-humble-ros-base
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_40_job_117:
+ name: plotjuggler-ros
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_39_job_115
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-plotjuggler-ros
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-plotjuggler-ros
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_41_job_118:
+ name: moveit-ros-visualization moveit-resources-prbt-pg70-support nav2-bringup
+ rqt-common-plugins simulation
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_40_job_116
+ - stage_40_job_117
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-ros-visualization ros-humble-moveit-resources-prbt-pg70-support
+ ros-humble-nav2-bringup ros-humble-rqt-common-plugins ros-humble-simulation
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-ros-visualization ros-humble-moveit-resources-prbt-pg70-support
+ ros-humble-nav2-bringup ros-humble-rqt-common-plugins ros-humble-simulation
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_41_job_119:
+ name: perception
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_40_job_116
+ - stage_40_job_117
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-perception
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-perception
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_42_job_120:
+ name: moveit-setup-framework pilz-industrial-motion-planner moveit-ros turtlebot3-navigation2
+ desktop
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_41_job_118
+ - stage_41_job_119
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-setup-framework ros-humble-pilz-industrial-motion-planner
+ ros-humble-moveit-ros ros-humble-turtlebot3-navigation2 ros-humble-desktop
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-setup-framework ros-humble-pilz-industrial-motion-planner
+ ros-humble-moveit-ros ros-humble-turtlebot3-navigation2 ros-humble-desktop
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_43_job_121:
+ name: moveit-setup-core-plugins moveit-setup-controllers moveit-setup-app-plugins
+ moveit-setup-srdf-plugins moveit-planners
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_42_job_120
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-setup-core-plugins ros-humble-moveit-setup-controllers
+ ros-humble-moveit-setup-app-plugins ros-humble-moveit-setup-srdf-plugins ros-humble-moveit-planners
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-setup-core-plugins ros-humble-moveit-setup-controllers
+ ros-humble-moveit-setup-app-plugins ros-humble-moveit-setup-srdf-plugins
+ ros-humble-moveit-planners
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_43_job_122:
+ name: turtlebot3 desktop-full
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_42_job_120
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-turtlebot3 ros-humble-desktop-full
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-turtlebot3 ros-humble-desktop-full
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+ stage_44_job_123:
+ name: moveit-setup-assistant moveit
+ runs-on: macos-14
+ strategy:
+ fail-fast: false
+ needs:
+ - stage_43_job_121
+ - stage_43_job_122
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ - name: Build ros-humble-moveit-setup-assistant ros-humble-moveit
+ env:
+ ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
+ CURRENT_RECIPES: ros-humble-moveit-setup-assistant ros-humble-moveit
+ run: |
+ export CI=azure
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ .scripts/build_osx_arm64.sh
+name: build_osx
+on:
+ push:
+ branches:
+ - buildbranch_osx_arm64
diff --git a/activate.bat b/activate.bat
new file mode 100755
index 000000000..48ff1d713
--- /dev/null
+++ b/activate.bat
@@ -0,0 +1,15 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+@if not defined CONDA_PREFIX goto:eof
+
+@REM Don't do anything when we are in conda build.
+@if defined SYS_PREFIX exit /b 0
+
+@set "QT_PLUGIN_PATH=%CONDA_PREFIX%\Library\plugins"
+
+@call "%CONDA_PREFIX%\Library\local_setup.bat"
+@set PYTHONHOME=
+@set "ROS_OS_OVERRIDE=conda:win64"
+@set "ROS_ETC_DIR=%CONDA_PREFIX%\Library\etc\ros"
+@set "AMENT_PREFIX_PATH=%CONDA_PREFIX%\Library"
+@set "AMENT_PYTHON_EXECUTABLE=%CONDA_PREFIX%\python.exe"
diff --git a/activate.ps1 b/activate.ps1
new file mode 100755
index 000000000..137e67aef
--- /dev/null
+++ b/activate.ps1
@@ -0,0 +1,16 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+if ($null -eq ${env:CONDA_PREFIX}) { Exit }
+
+# Don't do anything when we are in conda build.
+if ($null -ne ${env:SYS_PREFIX}) { Exit 0 }
+
+$Env:QT_PLUGIN_PATH="${env:CONDA_PREFIX}\Library\plugins"
+
+& "${env:CONDA_PREFIX}\Library\local_setup.ps1"
+
+$Env:PYTHONHOME=''
+$Env:ROS_OS_OVERRIDE='conda:win64'
+$Env:ROS_ETC_DIR="${env:CONDA_PREFIX}\Library\etc\ros"
+$Env:AMENT_PREFIX_PATH="${env:CONDA_PREFIX}\Library"
+$Env:AMENT_PYTHON_EXECUTABLE="${env:CONDA_PREFIX}\python.exe"
diff --git a/activate.sh b/activate.sh
new file mode 100755
index 000000000..aece97080
--- /dev/null
+++ b/activate.sh
@@ -0,0 +1,26 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+# if [ -z "${CONDA_PREFIX}" ]; then
+# exit 0;
+# fi
+
+# Not sure if this is necessary on UNIX?
+# export QT_PLUGIN_PATH=$CONDA_PREFIX\plugins
+
+if [ "$CONDA_BUILD" = "1" -a "$target_platform" != "$build_platform" ]; then
+ # ignore sourcing
+ echo "Not activating ROS when cross-compiling";
+else
+ source $CONDA_PREFIX/setup.sh
+fi
+
+case "$OSTYPE" in
+ darwin*) export ROS_OS_OVERRIDE="conda:osx"; export RMW_IMPLEMENTATION="rmw_cyclonedds_cpp";;
+ linux*) export ROS_OS_OVERRIDE="conda:linux";;
+esac
+
+export ROS_ETC_DIR=$CONDA_PREFIX/etc/ros
+export AMENT_PREFIX_PATH=$CONDA_PREFIX
+
+# Looks unnecessary for UNIX
+# unset PYTHONHOME=
diff --git a/bld_ament_cmake.bat b/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/bld_ament_python.bat b/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/bld_catkin.bat b/bld_catkin.bat
new file mode 100755
index 000000000..efd58be22
--- /dev/null
+++ b/bld_catkin.bat
@@ -0,0 +1,81 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+:: ROS_BUILD_SHARED_LIBS is always defined in CMake by catkin
+:: if ROS (1) is build as shared library . However, some packages are not
+:: passing compilation flags from CMake to other build systems (such as qmake),
+:: so we enable it explicitly via the CL environment variable, see
+:: https://learn.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=msvc-170
+set CL=/DROS_BUILD_SHARED_LIBS=1 /DNOGDI=1
+
+set "CATKIN_BUILD_BINARY_PACKAGE_ARGS=-DCATKIN_BUILD_BINARY_PACKAGE=1"
+if "%PKG_NAME%" == "ros-humble-catkin" (
+ :: create catkin cookie to make it is a catkin workspace
+ type NUL > %LIBRARY_PREFIX%\.catkin
+ :: keep the workspace activation scripts (e.g., local_setup.bat)
+ set CATKIN_BUILD_BINARY_PACKAGE_ARGS=
+)
+
+rd /s /q build
+mkdir build
+pushd build
+
+set SKIP_TESTING=ON
+
+cmake ^
+ -G "Ninja" ^
+ --compile-no-warning-as-error ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=ON ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBoost_USE_STATIC_LIBS=OFF ^
+ %CATKIN_BUILD_BINARY_PACKAGE_ARGS% ^
+ -DCATKIN_SKIP_TESTING=%SKIP_TESTING% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+if "%PKG_NAME%" == "ros-humble-eigenpy" (
+ cmake --build . --config Release --target all --parallel 1
+ if errorlevel 1 exit 1
+) else (
+ cmake --build . --config Release --target all
+ if errorlevel 1 exit 1
+)
+
+if "%SKIP_TESTING%" == "OFF" (
+ cmake --build . --config Release --target run_tests
+ if errorlevel 1 exit 1
+)
+
+cmake --build . --config Release --target install
+if errorlevel 1 exit 1
+
+if "%PKG_NAME%" == "ros-humble-catkin" (
+ :: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+ :: This will allow them to be run on environment activation.
+ for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+ )
+)
+
+if "%PKG_NAME%" == "ros-humble-ros-workspace" (
+ :: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+ :: This will allow them to be run on environment activation.
+ for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+ copy %RECIPE_DIR%\%%F.ps1 %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.ps1
+ )
+)
diff --git a/bld_catkin_merge.bat b/bld_catkin_merge.bat
new file mode 100755
index 000000000..bdff573b7
--- /dev/null
+++ b/bld_catkin_merge.bat
@@ -0,0 +1,34 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+:: ROS_BUILD_SHARED_LIBS is always defined in CMake by catkin
+:: if ROS (1) is build as shared library . However, some packages are not
+:: passing compilation flags from CMake to other build systems (such as qmake),
+:: so we enable it explicitly via the CL environment variable, see
+:: https://learn.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=msvc-170
+set CL=/DROS_BUILD_SHARED_LIBS=1 /DNOGDI=1
+
+set CATKIN_MAKE_ISOLATED=src\ros-humble-catkin\bin\catkin_make_isolated
+set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH:\=/%
+
+%PYTHON% %CATKIN_MAKE_ISOLATED% ^
+ --install-space %LIBRARY_PREFIX% ^
+ --use-ninja ^
+ --install ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DCATKIN_SKIP_TESTING=ON
+if errorlevel 1 exit 1
+
+:: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+:: This will allow them to be run on environment activation.
+for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+)
diff --git a/bld_colcon_merge.bat b/bld_colcon_merge.bat
new file mode 100755
index 000000000..b795d97dc
--- /dev/null
+++ b/bld_colcon_merge.bat
@@ -0,0 +1,38 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+colcon build ^
+ --event-handlers console_cohesion+ ^
+ --merge-install ^
+ --install-base %LIBRARY_PREFIX% ^
+ --cmake-args ^
+ --compile-no-warning-as-error ^
+ -G Ninja ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DBUILD_TESTING=OFF ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ -DPYTHON_EXECUTABLE=%PYTHON%
+if errorlevel 1 exit 1
+
+:: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+:: This will allow them to be run on environment activation.
+for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+)
diff --git a/build_ament_cmake.sh b/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/build_ament_python.sh b/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/build_catkin.sh b/build_catkin.sh
new file mode 100755
index 000000000..61235f6fa
--- /dev/null
+++ b/build_catkin.sh
@@ -0,0 +1,134 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+CATKIN_BUILD_BINARY_PACKAGE="ON"
+
+if [ "${PKG_NAME}" == "ros-humble-catkin" ]; then
+ # create catkin cookie to make it is a catkin workspace
+ touch $PREFIX/.catkin
+ # keep the workspace activation scripts (e.g., local_setup.bat)
+ CATKIN_BUILD_BINARY_PACKAGE="OFF"
+fi
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+ export CMAKE_AUTOMOC_EXECUTABLE="$BUILD_PREFIX/bin/moc"
+else
+ export QT_HOST_PATH="$PREFIX"
+ export CMAKE_AUTOMOC_EXECUTABLE="$PREFIX/bin/moc"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python $ROS_PYTHON_VERSION"
+# Fix up SP_DIR which for some reason might contain a path to a wrong Python version
+FIXED_SP_DIR=$(echo $SP_DIR | sed -E "s/python[0-9]+\.[0-9]+/python$ROS_PYTHON_VERSION/")
+echo "Using site-package dir ${FIXED_SP_DIR}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+ # way around bad CPU type issues
+ # rm $PREFIX/bin/doxygen || echo "doxygen not found"
+ # rm $PREFIX/bin/dia || echo "dia not found"
+ # rm $PREFIX/bin/dot || echo "dot not found"
+fi
+
+# NOTE: there might be undefined references occurring
+# in the Boost.system library, depending on the C++ versions
+# used to compile Boost. We can avoid them by forcing the use of
+# the header-only version of the library.
+export CXXFLAGS="$CXXFLAGS -DBOOST_ERROR_CODE_HEADER_ONLY"
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="$CFLAGS -D__STDC_FORMAT_MACROS=1";
+ export CXXFLAGS="$CXXFLAGS -D__STDC_FORMAT_MACROS=1";
+ # I am too scared to turn this on for now ...
+ # export LDFLAGS="$LDFLAGS -lrt";
+ # Some qt stuff uses g++ directly - fix these use cases
+ ln -s $GXX $BUILD_PREFIX/bin/g++
+fi
+
+export SKIP_TESTING=ON
+
+cmake ${CMAKE_ARGS} --compile-no-warning-as-error \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON \
+ -DCMAKE_FIND_FRAMEWORK=LAST \
+ -DCMAKE_AUTOMOC_EXECUTABLE=$CMAKE_AUTOMOC_EXECUTABLE \
+ -DBUILD_SHARED_LIBS=ON \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPYTHON_INSTALL_DIR=$FIXED_SP_DIR \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCATKIN_BUILD_BINARY_PACKAGE=$CATKIN_BUILD_BINARY_PACKAGE \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ -G "Ninja" \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target all
+
+if [[ "$SKIP_TESTING" == "OFF" ]]; then
+ cmake --build . --config Release --target run_tests
+fi
+
+cmake --build . --config Release --target install
+
+if [ "${PKG_NAME}" == "ros-humble-catkin" ]; then
+ # Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
+ # This will allow them to be run on environment activation.
+ for CHANGE in "activate" "deactivate"
+ do
+ mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
+ cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
+ done
+fi
+
+if [ "${PKG_NAME}" == "ros-humble-environment" ]; then
+ for SCRIPT in "1.ros_distro.sh" "1.ros_etc_dir.sh" "1.ros_package_path.sh" "1.ros_python_version.sh" "1.ros_version.sh"
+ do
+ mkdir -p "${PREFIX}/etc/conda/activate.d"
+ cp "${PREFIX}/etc/catkin/profile.d/${SCRIPT}" "${PREFIX}/etc/conda/activate.d/${SCRIPT}"
+ done
+fi
+
+if [ "${PKG_NAME}" == "ros-humble-ros-workspace" ]; then
+ # Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
+ # This will allow them to be run on environment activation.
+ for CHANGE in "activate" "deactivate"
+ do
+ mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
+ cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
+ done
+fi
diff --git a/buildorder.txt b/buildorder.txt
new file mode 100644
index 000000000..902ed209b
--- /dev/null
+++ b/buildorder.txt
@@ -0,0 +1,536 @@
+ros2-distro-mutex
+ros-humble-urdfdom-py
+ros-humble-octomap
+ros-humble-ament-package
+ros-humble-ament-cmake-core
+ros-humble-ros-workspace
+ros-humble-ros-environment
+ros-humble-ament-lint
+ros-humble-ament-cmake-python
+ros-humble-gtest-vendor
+ros-humble-ament-cmake-libraries
+ros-humble-ament-cmake-include-directories
+ros-humble-ament-cmake-export-libraries
+ros-humble-ament-cmake-version
+ros-humble-ament-cmake-export-link-flags
+ros-humble-ament-cmake-export-include-directories
+ros-humble-ament-cmake-export-definitions
+ros-humble-ament-pycodestyle
+ros-humble-ament-cppcheck
+ros-humble-osrf-pycommon
+ros-humble-google-benchmark-vendor
+ros-humble-osrf-testing-tools-cpp
+ros-humble-test-interface-files
+ros-humble-fastcdr
+ros-humble-iceoryx-hoofs
+ros-humble-urdfdom-headers
+ros-humble-ruckig
+ros-humble-ompl
+ros-humble-gtsam
+ros-humble-sdformat-test-files
+ros-humble-apriltag
+ros-humble-ament-flake8
+ros-humble-ament-cmake-test
+ros-humble-ament-cmake-target-dependencies
+ros-humble-ament-cmake-export-targets
+ros-humble-ament-cmake-export-interfaces
+ros-humble-ament-cmake-export-dependencies
+ros-humble-gmock-vendor
+ros-humble-iceoryx-posh
+ros-humble-backward-ros
+ros-humble-ament-pep257
+ros-humble-ament-cmake-gtest
+ros-humble-ament-lint-auto
+ros-humble-ament-cmake-google-benchmark
+ros-humble-ament-cmake-pytest
+ros-humble-iceoryx-binding-c
+ros-humble-ament-cmake-catch2
+ros-humble-ament-mypy
+ros-humble-ament-cmake-vendor-package
+ros-humble-ament-copyright
+ros-humble-ament-cmake-gen-version-h
+ros-humble-ament-cmake-gmock
+ros-humble-cyclonedds
+ros-humble-ament-lint-cmake
+ros-humble-ament-cmake
+ros-humble-ament-xmllint
+ros-humble-ament-cpplint
+ros-humble-ament-index-python
+ros-humble-domain-coordinator
+ros-humble-generate-parameter-library-py
+ros-humble-ament-clang-format
+ros-humble-ament-cmake-lint-cmake
+ros-humble-uncrustify-vendor
+ros-humble-launch
+ros-humble-rosidl-cli
+ros-humble-rpyutils
+ros-humble-pybind11-vendor
+ros-humble-tinyxml-vendor
+ros-humble-tinyxml2-vendor
+ros-humble-tl-expected
+ros-humble-tcb-span
+ros-humble-libcurl-vendor
+ros-humble-xacro
+ros-humble-moveit-resources-panda-description
+ros-humble-random-numbers
+ros-humble-eigen-stl-containers
+ros-humble-moveit-resources-pr2-description
+ros-humble-angles
+ros-humble-yaml-cpp-vendor
+ros-humble-zstd-vendor
+ros-humble-moveit-resources-fanuc-description
+ros-humble-sqlite3-vendor
+ros-humble-shared-queues-vendor
+ros-humble-ament-cmake-auto
+ros-humble-ros2-control-test-assets
+ros-humble-gazebo-dev
+ros-humble-sdl2-vendor
+ros-humble-dynamixel-sdk
+ros-humble-ament-cmake-copyright
+ros-humble-ament-uncrustify
+ros-humble-launch-yaml
+ros-humble-launch-xml
+ros-humble-mcap-vendor
+ros-humble-moveit-resources-prbt-support
+ros-humble-ament-cmake-xmllint
+ros-humble-ament-cmake-uncrustify
+ros-humble-ament-cmake-pep257
+ros-humble-ament-cmake-flake8
+ros-humble-ament-cmake-cpplint
+ros-humble-ament-cmake-cppcheck
+ros-humble-launch-testing
+ros-humble-eigen3-cmake-module
+ros-humble-ament-cmake-clang-format
+ros-humble-ament-lint-common
+ros-humble-foonathan-memory-vendor
+ros-humble-rviz-ogre-vendor
+ros-humble-rviz-assimp-vendor
+ros-humble-ignition-cmake2-vendor
+ros-humble-python-cmake-module
+ros-humble-performance-test-fixture
+ros-humble-mimick-vendor
+ros-humble-ament-cmake-ros
+ros-humble-rosidl-adapter
+ros-humble-rosidl-typesupport-interface
+ros-humble-fastrtps-cmake-module
+ros-humble-fastrtps
+ros-humble-rti-connext-dds-cmake-module
+ros-humble-rmw-implementation-cmake
+ros-humble-ament-index-cpp
+ros-humble-spdlog-vendor
+ros-humble-orocos-kdl-vendor
+ros-humble-python-qt-binding
+ros-humble-moveit-common
+ros-humble-smclib
+ros-humble-ignition-math6-vendor
+ros-humble-tango-icons-vendor
+ros-humble-keyboard-handler
+ros-humble-launch-testing-ament-cmake
+ros-humble-rosidl-parser
+ros-humble-tracetools
+ros-humble-console-bridge-vendor
+ros-humble-urdf-parser-plugin
+ros-humble-resource-retriever
+ros-humble-qt-gui
+ros-humble-tracetools-image-pipeline
+ros-humble-qt-gui-py-common
+ros-humble-qt-dotgraph
+ros-humble-rcutils
+ros-humble-rosidl-cmake
+ros-humble-urdfdom
+ros-humble-rviz-rendering
+ros-humble-rosidl-runtime-c
+ros-humble-rcpputils
+ros-humble-rviz-rendering-tests
+ros-humble-rosidl-runtime-cpp
+ros-humble-rosidl-generator-c
+ros-humble-rmw
+ros-humble-rosidl-typesupport-introspection-c
+ros-humble-libyaml-vendor
+ros-humble-rcl-logging-interface
+ros-humble-class-loader
+ros-humble-rosidl-generator-cpp
+ros-humble-rosidl-typesupport-introspection-cpp
+ros-humble-rcl-yaml-param-parser
+ros-humble-rcl-logging-spdlog
+ros-humble-pluginlib
+ros-humble-rosidl-typesupport-fastrtps-cpp
+ros-humble-urdf
+ros-humble-qt-gui-cpp
+ros-humble-rosidl-typesupport-fastrtps-c
+ros-humble-kdl-parser
+ros-humble-srdfdom
+ros-humble-sdformat-urdf
+ros-humble-turtlebot3-description
+ros-humble-rosidl-typesupport-c
+ros-humble-rosidl-typesupport-cpp
+ros-humble-rosidl-generator-py
+ros-humble-rosidl-default-runtime
+ros-humble-rosidl-default-generators
+ros-humble-unique-identifier-msgs
+ros-humble-builtin-interfaces
+ros-humble-rmw-dds-common
+ros-humble-lifecycle-msgs
+ros-humble-std-srvs
+ros-humble-action-msgs
+ros-humble-rmw-fastrtps-shared-cpp
+ros-humble-rmw-connextdds-common
+ros-humble-rmw-cyclonedds-cpp
+ros-humble-rcl-interfaces
+ros-humble-std-msgs
+ros-humble-statistics-msgs
+ros-humble-rosgraph-msgs
+ros-humble-controller-manager-msgs
+ros-humble-rosbag2-interfaces
+ros-humble-rosbridge-msgs
+ros-humble-pendulum-msgs
+ros-humble-test-msgs
+ros-humble-rmw-connextdds
+ros-humble-composition-interfaces
+ros-humble-geometry-msgs
+ros-humble-actionlib-msgs
+ros-humble-bond
+ros-humble-rosbag2-storage-mcap-testdata
+ros-humble-ackermann-msgs
+ros-humble-example-interfaces
+ros-humble-gps-msgs
+ros-humble-actuator-msgs
+ros-humble-ros2cli-test-interfaces
+ros-humble-velodyne-msgs
+ros-humble-rosapi-msgs
+ros-humble-turtlebot3-msgs
+ros-humble-action-tutorials-interfaces
+ros-humble-rtcm-msgs
+ros-humble-nmea-msgs
+ros-humble-apriltag-msgs
+ros-humble-rmw-fastrtps-dynamic-cpp
+ros-humble-rmw-fastrtps-cpp
+ros-humble-sensor-msgs
+ros-humble-rosidl-runtime-py
+ros-humble-tf2
+ros-humble-tf2-msgs
+ros-humble-shape-msgs
+ros-humble-trajectory-msgs
+ros-humble-octomap-msgs
+ros-humble-nav-msgs
+ros-humble-diagnostic-msgs
+ros-humble-nav-2d-msgs
+ros-humble-vision-msgs
+ros-humble-ros-gz-interfaces
+ros-humble-geographic-msgs
+ros-humble-cartographer-ros-msgs
+ros-humble-graph-msgs
+ros-humble-rmw-implementation
+ros-humble-object-recognition-msgs
+ros-humble-visualization-msgs
+ros-humble-stereo-msgs
+ros-humble-sensor-msgs-py
+ros-humble-map-msgs
+ros-humble-control-msgs
+ros-humble-cv-bridge
+ros-humble-tf2-eigen-kdl
+ros-humble-dwb-msgs
+ros-humble-gazebo-msgs
+ros-humble-image-geometry
+ros-humble-pcl-msgs
+ros-humble-ros-ign-interfaces
+ros-humble-rcl
+ros-humble-moveit-msgs
+ros-humble-common-interfaces
+ros-humble-vision-opencv
+ros-humble-rcl-lifecycle
+ros-humble-rcl-action
+ros-humble-libstatistics-collector
+ros-humble-rclpy
+ros-humble-rclcpp
+ros-humble-launch-ros
+ros-humble-rclcpp-lifecycle
+ros-humble-ros2cli
+ros-humble-rclcpp-components
+ros-humble-rclcpp-action
+ros-humble-tf2-py
+ros-humble-rsl
+ros-humble-geometric-shapes
+ros-humble-launch-param-builder
+ros-humble-rosbag2-test-common
+ros-humble-laser-geometry
+ros-humble-filters
+ros-humble-behaviortree-cpp-v3
+ros-humble-rqt-gui
+ros-humble-camera-calibration-parsers
+ros-humble-rqt-py-common
+ros-humble-rqt-gui-cpp
+ros-humble-rosbridge-test-msgs
+ros-humble-ros-gz-sim
+ros-humble-hls-lfcd-lds-driver
+ros-humble-teleop-twist-keyboard
+ros-humble-dummy-sensors
+ros-humble-dummy-map-server
+ros-humble-demo-nodes-py
+ros-humble-quality-of-service-demo-py
+ros-humble-intra-process-demo
+ros-humble-examples-rclpy-minimal-subscriber
+ros-humble-examples-rclpy-minimal-service
+ros-humble-examples-rclpy-minimal-publisher
+ros-humble-examples-rclpy-minimal-client
+ros-humble-examples-rclpy-minimal-action-server
+ros-humble-examples-rclpy-minimal-action-client
+ros-humble-examples-rclpy-executors
+ros-humble-examples-rclcpp-multithreaded-executor
+ros-humble-examples-rclcpp-minimal-timer
+ros-humble-examples-rclcpp-minimal-service
+ros-humble-examples-rclcpp-minimal-publisher
+ros-humble-examples-rclcpp-minimal-client
+ros-humble-action-tutorials-py
+ros-humble-turtlebot3-teleop
+ros-humble-turtlebot3-example
+ros-humble-plotjuggler
+ros-humble-launch-testing-ros
+ros-humble-message-filters
+ros-humble-tf2-ros-py
+ros-humble-parameter-traits
+ros-humble-nav2-common
+ros-humble-moveit-configs-utils
+ros-humble-rosbag2-storage
+ros-humble-bondcpp
+ros-humble-hardware-interface
+ros-humble-realtime-tools
+ros-humble-kinematics-interface
+ros-humble-ros2lifecycle-test-fixtures
+ros-humble-rqt-gui-py
+ros-humble-joy
+ros-humble-camera-info-manager
+ros-humble-ros-gz-bridge
+ros-humble-ros2multicast
+ros-humble-joint-limits
+ros-humble-rosbridge-library
+ros-humble-ros-ign-gazebo
+ros-humble-velodyne-laserscan
+ros-humble-turtlesim
+ros-humble-topic-monitor
+ros-humble-quality-of-service-demo-cpp
+ros-humble-examples-rclcpp-minimal-subscriber
+ros-humble-examples-rclcpp-minimal-composition
+ros-humble-examples-rclcpp-minimal-action-server
+ros-humble-examples-rclcpp-minimal-action-client
+ros-humble-depthimage-to-laserscan
+ros-humble-action-tutorials-cpp
+ros-humble-ros2topic
+ros-humble-tf2-ros
+ros-humble-generate-parameter-library
+ros-humble-ros2test
+ros-humble-nav2-msgs
+ros-humble-image-transport
+ros-humble-rosbag2-storage-mcap
+ros-humble-rosbag2-storage-default-plugins
+ros-humble-diagnostic-updater
+ros-humble-nav2-voxel-grid
+ros-humble-ros2pkg
+ros-humble-ros2service
+ros-humble-ros2node
+ros-humble-hardware-interface-testing
+ros-humble-controller-interface
+ros-humble-kinematics-interface-kdl
+ros-humble-pcl-conversions
+ros-humble-ros2interface
+ros-humble-ros2doctor
+ros-humble-ros2action
+ros-humble-rqt-console
+ros-humble-teleop-twist-joy
+ros-humble-camera-calibration
+ros-humble-transmission-interface
+ros-humble-rqt-topic
+ros-humble-rqt-plot
+ros-humble-tf2-tools
+ros-humble-ros-ign-bridge
+ros-humble-rqt-shell
+ros-humble-rqt-service-caller
+ros-humble-rqt-py-console
+ros-humble-rqt-publisher
+ros-humble-rqt-graph
+ros-humble-logging-demo
+ros-humble-image-tools
+ros-humble-demo-nodes-cpp-native
+ros-humble-demo-nodes-cpp
+ros-humble-composition
+ros-humble-joint-state-publisher
+ros-humble-robot-state-publisher
+ros-humble-tf2-kdl
+ros-humble-tf2-geometry-msgs
+ros-humble-tf2-eigen
+ros-humble-ros-testing
+ros-humble-rosbag2-cpp
+ros-humble-tf2-sensor-msgs
+ros-humble-ros2run
+ros-humble-ros2param
+ros-humble-control-toolbox
+ros-humble-ros2launch
+ros-humble-theora-image-transport
+ros-humble-compressed-image-transport
+ros-humble-compressed-depth-image-transport
+ros-humble-nav2-simple-commander
+ros-humble-image-proc
+ros-humble-ros2lifecycle
+ros-humble-image-view
+ros-humble-image-publisher
+ros-humble-rqt-image-view
+ros-humble-ros-gz-image
+ros-humble-tf2-bullet
+ros-humble-rqt-msg
+ros-humble-velodyne-pointcloud
+ros-humble-velodyne-driver
+ros-humble-rqt-reconfigure
+ros-humble-turtlebot3-node
+ros-humble-laser-filters
+ros-humble-image-common
+ros-humble-apriltag-ros
+ros-humble-joint-state-publisher-gui
+ros-humble-rviz-common
+ros-humble-interactive-markers
+ros-humble-moveit-resources-fanuc-moveit-config
+ros-humble-nav2-util
+ros-humble-warehouse-ros
+ros-humble-rosbag2-compression
+ros-humble-controller-manager
+ros-humble-gazebo-ros
+ros-humble-image-transport-plugins
+ros-humble-sros2
+ros-humble-ros2component
+ros-humble-robot-localization
+ros-humble-stereo-image-proc
+ros-humble-image-rotate
+ros-humble-depth-image-proc
+ros-humble-pcl-ros
+ros-humble-rosapi
+ros-humble-geometry2
+ros-humble-rqt-srv
+ros-humble-rqt-action
+ros-humble-cartographer-ros
+ros-humble-velodyne
+ros-humble-ros-ign-image
+ros-humble-lifecycle
+ros-humble-dummy-robot-bringup
+ros-humble-rosx-introspection
+ros-humble-sbg-driver
+ros-humble-moveit-resources-panda-moveit-config
+ros-humble-rviz-visual-testing-framework
+ros-humble-nav2-map-server
+ros-humble-nav2-lifecycle-manager
+ros-humble-rosbag2-compression-zstd
+ros-humble-nav-2d-utils
+ros-humble-forward-command-controller
+ros-humble-steering-controllers-library
+ros-humble-joint-trajectory-controller
+ros-humble-nav2-behavior-tree
+ros-humble-tricycle-controller
+ros-humble-range-sensor-broadcaster
+ros-humble-pose-broadcaster
+ros-humble-pid-controller
+ros-humble-joint-state-broadcaster
+ros-humble-imu-sensor-broadcaster
+ros-humble-gpio-controllers
+ros-humble-force-torque-sensor-broadcaster
+ros-humble-diff-drive-controller
+ros-humble-nav2-velocity-smoother
+ros-humble-nav2-amcl
+ros-humble-ros2controlcli
+ros-humble-sros2-cmake
+ros-humble-ros2cli-common-extensions
+ros-humble-gazebo-ros2-control
+ros-humble-image-pipeline
+ros-humble-gazebo-plugins
+ros-humble-rosbridge-server
+ros-humble-perception-pcl
+ros-humble-turtlebot3-cartographer
+ros-humble-foxglove-bridge
+ros-humble-moveit-core
+ros-humble-rviz-default-plugins
+ros-humble-nav2-costmap-2d
+ros-humble-rosbag2-transport
+ros-humble-velocity-controllers
+ros-humble-tricycle-steering-controller
+ros-humble-position-controllers
+ros-humble-effort-controllers
+ros-humble-bicycle-steering-controller
+ros-humble-admittance-controller
+ros-humble-ackermann-steering-controller
+ros-humble-ros2-control
+ros-humble-ros-core
+ros-humble-gazebo-ros-pkgs
+ros-humble-rosbridge-suite
+ros-humble-moveit-ros-occupancy-map-monitor
+ros-humble-rviz2
+ros-humble-moveit-simple-controller-manager
+ros-humble-moveit-resources-prbt-ikfast-manipulator-plugin
+ros-humble-nav2-core
+ros-humble-costmap-queue
+ros-humble-pilz-industrial-motion-planner-testutils
+ros-humble-rosbag2-py
+ros-humble-chomp-motion-planner
+ros-humble-nav2-rviz-plugins
+ros-humble-nav2-collision-monitor
+ros-humble-ros2-controllers
+ros-humble-slam-toolbox
+ros-humble-turtlebot3-gazebo
+ros-humble-moveit-ros-planning
+ros-humble-dwb-core
+ros-humble-nav2-regulated-pure-pursuit-controller
+ros-humble-nav2-controller
+ros-humble-ros2bag
+ros-humble-nav2-waypoint-follower
+ros-humble-nav2-theta-star-planner
+ros-humble-nav2-smoother
+ros-humble-nav2-smac-planner
+ros-humble-nav2-planner
+ros-humble-nav2-navfn-planner
+ros-humble-nav2-mppi-controller
+ros-humble-nav2-constrained-smoother
+ros-humble-nav2-bt-navigator
+ros-humble-nav2-behaviors
+ros-humble-moveit-plugins
+ros-humble-moveit-planners-chomp
+ros-humble-rqt-bag
+ros-humble-ros-gz-sim-demos
+ros-humble-rviz-visual-tools
+ros-humble-turtlebot3-bringup
+ros-humble-moveit-kinematics
+ros-humble-moveit-ros-warehouse
+ros-humble-moveit-planners-ompl
+ros-humble-moveit-ros-robot-interaction
+ros-humble-dwb-plugins
+ros-humble-dwb-critics
+ros-humble-nav2-rotation-shim-controller
+ros-humble-rosbag2-tests
+ros-humble-ros-gz
+ros-humble-moveit-visual-tools
+ros-humble-ros-ign-gazebo-demos
+ros-humble-moveit-ros-move-group
+ros-humble-moveit-ros-benchmarks
+ros-humble-nav2-dwb-controller
+ros-humble-rosbag2
+ros-humble-moveit-ros-planning-interface
+ros-humble-moveit-resources-prbt-moveit-config
+ros-humble-navigation2
+ros-humble-rqt-bag-plugins
+ros-humble-ros-base
+ros-humble-plotjuggler-ros
+ros-humble-moveit-ros-visualization
+ros-humble-moveit-resources-prbt-pg70-support
+ros-humble-nav2-bringup
+ros-humble-rqt-common-plugins
+ros-humble-simulation
+ros-humble-perception
+ros-humble-moveit-setup-framework
+ros-humble-pilz-industrial-motion-planner
+ros-humble-moveit-ros
+ros-humble-turtlebot3-navigation2
+ros-humble-desktop
+ros-humble-moveit-setup-core-plugins
+ros-humble-moveit-setup-controllers
+ros-humble-moveit-setup-app-plugins
+ros-humble-moveit-setup-srdf-plugins
+ros-humble-moveit-planners
+ros-humble-turtlebot3
+ros-humble-desktop-full
+ros-humble-moveit-setup-assistant
+ros-humble-moveit
\ No newline at end of file
diff --git a/deactivate.bat b/deactivate.bat
new file mode 100755
index 000000000..6de79ccaf
--- /dev/null
+++ b/deactivate.bat
@@ -0,0 +1,18 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+@if not defined CONDA_PREFIX goto:eof
+
+@set ROS_OS_OVERRIDE=
+@set ROS_DISTRO=
+@set ROS_ETC_DIR=
+@set ROS_PACKAGE_PATH=
+@set ROS_PYTHON_VERSION=
+@set ROS_VERSION=
+@set PYTHONHOME=
+@set PYTHONPATH=
+@set CMAKE_PREFIX_PATH=
+@set AMENT_PREFIX_PATH=
+@set COLCON_PREFIX_PATH=
+@set QT_PLUGIN_PATH=
+@set ROS_LOCALHOST_ONLY=
+@set ament_python_executable=
diff --git a/deactivate.ps1 b/deactivate.ps1
new file mode 100755
index 000000000..9db51e1c2
--- /dev/null
+++ b/deactivate.ps1
@@ -0,0 +1,18 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+if ($null -eq ${env:CONDA_PREFIX}) { Exit }
+
+$Env:ROS_OS_OVERRIDE=''
+$Env:ROS_DISTRO=''
+$Env:ROS_ETC_DIR=''
+$Env:ROS_PACKAGE_PATH=''
+$Env:ROS_PYTHON_VERSION=''
+$Env:ROS_VERSION=''
+$Env:PYTHONHOME=''
+$Env:PYTHONPATH=''
+$Env:CMAKE_PREFIX_PATH=''
+$Env:AMENT_PREFIX_PATH=''
+$Env:COLCON_PREFIX_PATH=''
+$Env:QT_PLUGIN_PATH=''
+$Env:ROS_LOCALHOST_ONLY=''
+$Env:ament_python_executable=''
diff --git a/deactivate.sh b/deactivate.sh
new file mode 100755
index 000000000..87d4d8359
--- /dev/null
+++ b/deactivate.sh
@@ -0,0 +1,21 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+if [ -z "${CONDA_PREFIX}" ]; then
+ exit 0
+fi
+
+unset ROS_DISTRO
+unset ROS_ETC_DIR
+unset ROS_PACKAGE_PATH
+unset ROS_PYTHON_VERSION
+unset CMAKE_PREFIX_PATH
+unset AMENT_PREFIX_PATH
+unset COLCON_PREFIX_PATH
+unset ROS_VERSION
+unset ROS_OS_OVERRIDE
+# unset PYTHONPATH
+# unset PYTHONHOME
+# unset QT_PLUGIN_PATH
+unset ROS_LOCALHOST_ONLY
+unset ament_python_executable
+unset RMW_IMPLEMENTATION
diff --git a/recipes/ros-humble-ackermann-msgs/bld_ament_cmake.bat b/recipes/ros-humble-ackermann-msgs/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ackermann-msgs/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ackermann-msgs/build_ament_cmake.sh b/recipes/ros-humble-ackermann-msgs/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ackermann-msgs/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ackermann-msgs/recipe.yaml b/recipes/ros-humble-ackermann-msgs/recipe.yaml
new file mode 100644
index 000000000..f22fc4df1
--- /dev/null
+++ b/recipes/ros-humble-ackermann-msgs/recipe.yaml
@@ -0,0 +1,89 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ackermann-msgs
+ version: 2.0.2
+source:
+ git: https://github.com/ros2-gbp/ackermann_msgs-release.git
+ tag: release/humble/ackermann_msgs/2.0.2-3
+ target_directory: ros-humble-ackermann-msgs/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-common
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ackermann-steering-controller/bld_ament_cmake.bat b/recipes/ros-humble-ackermann-steering-controller/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ackermann-steering-controller/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ackermann-steering-controller/build_ament_cmake.sh b/recipes/ros-humble-ackermann-steering-controller/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ackermann-steering-controller/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ackermann-steering-controller/recipe.yaml b/recipes/ros-humble-ackermann-steering-controller/recipe.yaml
new file mode 100644
index 000000000..cd214e2b4
--- /dev/null
+++ b/recipes/ros-humble-ackermann-steering-controller/recipe.yaml
@@ -0,0 +1,107 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ackermann-steering-controller
+ version: 2.40.0
+source:
+ git: https://github.com/ros2-gbp/ros2_controllers-release.git
+ tag: release/humble/ackermann_steering_controller/2.40.0-1
+ target_directory: ros-humble-ackermann-steering-controller/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gmock
+ - ros-humble-backward-ros
+ - ros-humble-control-msgs
+ - ros-humble-controller-interface
+ - ros-humble-controller-manager
+ - ros-humble-generate-parameter-library
+ - ros-humble-hardware-interface
+ - ros-humble-hardware-interface-testing
+ - ros-humble-pluginlib
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-ros2-control-test-assets
+ - ros-humble-std-srvs
+ - ros-humble-steering-controllers-library
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-backward-ros
+ - ros-humble-control-msgs
+ - ros-humble-controller-interface
+ - ros-humble-hardware-interface
+ - ros-humble-pluginlib
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-ros-workspace
+ - ros-humble-std-srvs
+ - ros-humble-steering-controllers-library
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-action-msgs/bld_ament_cmake.bat b/recipes/ros-humble-action-msgs/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-action-msgs/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-action-msgs/build_ament_cmake.sh b/recipes/ros-humble-action-msgs/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-action-msgs/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-action-msgs/recipe.yaml b/recipes/ros-humble-action-msgs/recipe.yaml
new file mode 100644
index 000000000..195980c27
--- /dev/null
+++ b/recipes/ros-humble-action-msgs/recipe.yaml
@@ -0,0 +1,92 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-action-msgs
+ version: 1.2.1
+source:
+ git: https://github.com/ros2-gbp/rcl_interfaces-release.git
+ tag: release/humble/action_msgs/1.2.1-1
+ target_directory: ros-humble-action-msgs/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-builtin-interfaces
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros-humble-unique-identifier-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-builtin-interfaces
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros-humble-unique-identifier-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-action-tutorials-cpp/bld_ament_cmake.bat b/recipes/ros-humble-action-tutorials-cpp/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-cpp/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-action-tutorials-cpp/build_ament_cmake.sh b/recipes/ros-humble-action-tutorials-cpp/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-cpp/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-action-tutorials-cpp/recipe.yaml b/recipes/ros-humble-action-tutorials-cpp/recipe.yaml
new file mode 100644
index 000000000..7f46155eb
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-cpp/recipe.yaml
@@ -0,0 +1,94 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-action-tutorials-cpp
+ version: 0.20.5
+source:
+ git: https://github.com/ros2-gbp/demos-release.git
+ tag: release/humble/action_tutorials_cpp/0.20.5-1
+ target_directory: ros-humble-action-tutorials-cpp/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-action-tutorials-interfaces
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-action
+ - ros-humble-rclcpp-components
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-action-tutorials-interfaces
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-action
+ - ros-humble-rclcpp-components
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-action-tutorials-interfaces/bld_ament_cmake.bat b/recipes/ros-humble-action-tutorials-interfaces/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-interfaces/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-action-tutorials-interfaces/build_ament_cmake.sh b/recipes/ros-humble-action-tutorials-interfaces/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-interfaces/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-action-tutorials-interfaces/recipe.yaml b/recipes/ros-humble-action-tutorials-interfaces/recipe.yaml
new file mode 100644
index 000000000..769d2ee35
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-interfaces/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-action-tutorials-interfaces
+ version: 0.20.5
+source:
+ git: https://github.com/ros2-gbp/demos-release.git
+ tag: release/humble/action_tutorials_interfaces/0.20.5-1
+ target_directory: ros-humble-action-tutorials-interfaces/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-action-msgs
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-action-msgs
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-action-tutorials-py/bld_ament_python.bat b/recipes/ros-humble-action-tutorials-py/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-py/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-action-tutorials-py/build_ament_python.sh b/recipes/ros-humble-action-tutorials-py/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-py/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-action-tutorials-py/recipe.yaml b/recipes/ros-humble-action-tutorials-py/recipe.yaml
new file mode 100644
index 000000000..ae1321d19
--- /dev/null
+++ b/recipes/ros-humble-action-tutorials-py/recipe.yaml
@@ -0,0 +1,89 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-action-tutorials-py
+ version: 0.20.5
+source:
+ git: https://github.com/ros2-gbp/demos-release.git
+ tag: release/humble/action_tutorials_py/0.20.5-1
+ target_directory: ros-humble-action-tutorials-py/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-action-tutorials-interfaces
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-action-tutorials-interfaces
+ - ros-humble-rclpy
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-actionlib-msgs/bld_ament_cmake.bat b/recipes/ros-humble-actionlib-msgs/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-actionlib-msgs/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-actionlib-msgs/build_ament_cmake.sh b/recipes/ros-humble-actionlib-msgs/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-actionlib-msgs/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-actionlib-msgs/recipe.yaml b/recipes/ros-humble-actionlib-msgs/recipe.yaml
new file mode 100644
index 000000000..8cf1d3ba8
--- /dev/null
+++ b/recipes/ros-humble-actionlib-msgs/recipe.yaml
@@ -0,0 +1,91 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-actionlib-msgs
+ version: 4.2.4
+source:
+ git: https://github.com/ros2-gbp/common_interfaces-release.git
+ tag: release/humble/actionlib_msgs/4.2.4-1
+ target_directory: ros-humble-actionlib-msgs/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-common
+ - ros-humble-builtin-interfaces
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-builtin-interfaces
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-actuator-msgs/bld_ament_cmake.bat b/recipes/ros-humble-actuator-msgs/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-actuator-msgs/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-actuator-msgs/build_ament_cmake.sh b/recipes/ros-humble-actuator-msgs/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-actuator-msgs/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-actuator-msgs/recipe.yaml b/recipes/ros-humble-actuator-msgs/recipe.yaml
new file mode 100644
index 000000000..fb0efdc6c
--- /dev/null
+++ b/recipes/ros-humble-actuator-msgs/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-actuator-msgs
+ version: 0.0.1
+source:
+ git: https://github.com/ros2-gbp/actuator_msgs-release.git
+ tag: release/humble/actuator_msgs/0.0.1-1
+ target_directory: ros-humble-actuator-msgs/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-admittance-controller/bld_ament_cmake.bat b/recipes/ros-humble-admittance-controller/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-admittance-controller/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-admittance-controller/build_ament_cmake.sh b/recipes/ros-humble-admittance-controller/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-admittance-controller/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-admittance-controller/recipe.yaml b/recipes/ros-humble-admittance-controller/recipe.yaml
new file mode 100644
index 000000000..2f84237ea
--- /dev/null
+++ b/recipes/ros-humble-admittance-controller/recipe.yaml
@@ -0,0 +1,129 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-admittance-controller
+ version: 2.40.0
+source:
+ git: https://github.com/ros2-gbp/ros2_controllers-release.git
+ tag: release/humble/admittance_controller/2.40.0-1
+ target_directory: ros-humble-admittance-controller/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gmock
+ - ros-humble-backward-ros
+ - ros-humble-control-msgs
+ - ros-humble-control-toolbox
+ - ros-humble-controller-interface
+ - ros-humble-controller-manager
+ - ros-humble-filters
+ - ros-humble-generate-parameter-library
+ - ros-humble-geometry-msgs
+ - ros-humble-hardware-interface
+ - ros-humble-hardware-interface-testing
+ - ros-humble-joint-trajectory-controller
+ - ros-humble-kinematics-interface
+ - ros-humble-kinematics-interface-kdl
+ - ros-humble-pluginlib
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-realtime-tools
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-ros2-control-test-assets
+ - ros-humble-tf2
+ - ros-humble-tf2-eigen
+ - ros-humble-tf2-geometry-msgs
+ - ros-humble-tf2-kdl
+ - ros-humble-tf2-ros
+ - ros-humble-trajectory-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-backward-ros
+ - ros-humble-control-msgs
+ - ros-humble-control-toolbox
+ - ros-humble-controller-interface
+ - ros-humble-filters
+ - ros-humble-generate-parameter-library
+ - ros-humble-geometry-msgs
+ - ros-humble-hardware-interface
+ - ros-humble-joint-trajectory-controller
+ - ros-humble-kinematics-interface
+ - ros-humble-pluginlib
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-realtime-tools
+ - ros-humble-ros-workspace
+ - ros-humble-tf2
+ - ros-humble-tf2-eigen
+ - ros-humble-tf2-geometry-msgs
+ - ros-humble-tf2-kdl
+ - ros-humble-tf2-ros
+ - ros-humble-trajectory-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-clang-format/bld_ament_python.bat b/recipes/ros-humble-ament-clang-format/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-clang-format/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-clang-format/build_ament_python.sh b/recipes/ros-humble-ament-clang-format/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-clang-format/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-clang-format/recipe.yaml b/recipes/ros-humble-ament-clang-format/recipe.yaml
new file mode 100644
index 000000000..f9ecbc0db
--- /dev/null
+++ b/recipes/ros-humble-ament-clang-format/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-clang-format
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_clang_format/0.12.11-1
+ target_directory: ros-humble-ament-clang-format/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-copyright
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - clang-format
+ - python
+ - pyyaml
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-auto/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-auto/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-auto/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-auto/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-auto/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-auto/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-auto/recipe.yaml b/recipes/ros-humble-ament-cmake-auto/recipe.yaml
new file mode 100644
index 000000000..62898318c
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-auto/recipe.yaml
@@ -0,0 +1,89 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-auto
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_auto/1.3.11-1
+ target_directory: ros-humble-ament-cmake-auto/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gmock
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gmock
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-catch2/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-catch2/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-catch2/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-catch2/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-catch2/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-catch2/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-catch2/recipe.yaml b/recipes/ros-humble-ament-cmake-catch2/recipe.yaml
new file mode 100644
index 000000000..2fb23f53e
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-catch2/recipe.yaml
@@ -0,0 +1,86 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-catch2
+ version: 1.2.1
+source:
+ git: https://github.com/ros2-gbp/ament_cmake_catch2-release.git
+ tag: release/humble/ament_cmake_catch2/1.2.1-1
+ target_directory: ros-humble-ament-cmake-catch2/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-clang-format/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-clang-format/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-clang-format/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-clang-format/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-clang-format/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-clang-format/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-clang-format/recipe.yaml b/recipes/ros-humble-ament-cmake-clang-format/recipe.yaml
new file mode 100644
index 000000000..16d6602ee
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-clang-format/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-clang-format
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_clang_format/0.12.11-1
+ target_directory: ros-humble-ament-cmake-clang-format/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-clang-format
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-clang-format
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-copyright/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-copyright/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-copyright/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-copyright/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-copyright/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-copyright/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-copyright/recipe.yaml b/recipes/ros-humble-ament-cmake-copyright/recipe.yaml
new file mode 100644
index 000000000..bbdbca89b
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-copyright/recipe.yaml
@@ -0,0 +1,89 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-copyright
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_copyright/0.12.11-1
+ target_directory: ros-humble-ament-cmake-copyright/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-copyright
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-copyright
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-core/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-core/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-core/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-core/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-core/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-core/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-core/patch/ros-humble-ament-cmake-core.patch b/recipes/ros-humble-ament-cmake-core/patch/ros-humble-ament-cmake-core.patch
new file mode 100644
index 000000000..555f3fc9a
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-core/patch/ros-humble-ament-cmake-core.patch
@@ -0,0 +1,18 @@
+diff --git a/cmake/package_templates/templates_2_cmake.py b/cmake/package_templates/templates_2_cmake.py
+index b7c0faf..328cc38 100644
+--- a/cmake/package_templates/templates_2_cmake.py
++++ b/cmake/package_templates/templates_2_cmake.py
+@@ -68,12 +68,7 @@ def generate_cmake_code():
+ """
+ variables = []
+
+- if not IS_WINDOWS:
+- variables.append((
+- 'ENVIRONMENT_HOOK_LIBRARY_PATH',
+- '"%s"' % get_environment_hook_template_path('library_path.sh')))
+- else:
+- variables.append(('ENVIRONMENT_HOOK_LIBRARY_PATH', ''))
++ variables.append(('ENVIRONMENT_HOOK_LIBRARY_PATH', ''))
+
+ ext = '.bat.in' if IS_WINDOWS else '.sh.in'
+ variables.append((
diff --git a/recipes/ros-humble-ament-cmake-core/recipe.yaml b/recipes/ros-humble-ament-cmake-core/recipe.yaml
new file mode 100644
index 000000000..135571d1a
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-core/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-core
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_core/1.3.11-1
+ target_directory: ros-humble-ament-cmake-core/src/work
+ patches:
+ - patch/ros-humble-ament-cmake-core.patch
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - catkin_pkg
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-package
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - catkin_pkg
+ - cmake
+ - python
+ - ros-humble-ament-package
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-cppcheck/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-cppcheck/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-cppcheck/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-cppcheck/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-cppcheck/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-cppcheck/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-cppcheck/recipe.yaml b/recipes/ros-humble-ament-cmake-cppcheck/recipe.yaml
new file mode 100644
index 000000000..90d4cd758
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-cppcheck/recipe.yaml
@@ -0,0 +1,91 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-cppcheck
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_cppcheck/0.12.11-1
+ target_directory: ros-humble-ament-cmake-cppcheck/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-cppcheck
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-cppcheck
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-cpplint/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-cpplint/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-cpplint/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-cpplint/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-cpplint/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-cpplint/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-cpplint/recipe.yaml b/recipes/ros-humble-ament-cmake-cpplint/recipe.yaml
new file mode 100644
index 000000000..2211cc0e4
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-cpplint/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-cpplint
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_cpplint/0.12.11-1
+ target_directory: ros-humble-ament-cmake-cpplint/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-cpplint
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-cpplint
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-export-definitions/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-export-definitions/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-definitions/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-export-definitions/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-export-definitions/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-definitions/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-export-definitions/recipe.yaml b/recipes/ros-humble-ament-cmake-export-definitions/recipe.yaml
new file mode 100644
index 000000000..b3fc7b9b3
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-definitions/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-export-definitions
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_export_definitions/1.3.11-1
+ target_directory: ros-humble-ament-cmake-export-definitions/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-export-dependencies/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-export-dependencies/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-dependencies/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-export-dependencies/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-export-dependencies/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-dependencies/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-export-dependencies/recipe.yaml b/recipes/ros-humble-ament-cmake-export-dependencies/recipe.yaml
new file mode 100644
index 000000000..d0b76ad36
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-dependencies/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-export-dependencies
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_export_dependencies/1.3.11-1
+ target_directory: ros-humble-ament-cmake-export-dependencies/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-libraries
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-libraries
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-export-include-directories/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-export-include-directories/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-include-directories/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-export-include-directories/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-export-include-directories/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-include-directories/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-export-include-directories/recipe.yaml b/recipes/ros-humble-ament-cmake-export-include-directories/recipe.yaml
new file mode 100644
index 000000000..b5b82f9aa
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-include-directories/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-export-include-directories
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_export_include_directories/1.3.11-1
+ target_directory: ros-humble-ament-cmake-export-include-directories/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-export-interfaces/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-export-interfaces/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-interfaces/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-export-interfaces/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-export-interfaces/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-interfaces/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-export-interfaces/recipe.yaml b/recipes/ros-humble-ament-cmake-export-interfaces/recipe.yaml
new file mode 100644
index 000000000..f3b91ecf9
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-interfaces/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-export-interfaces
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_export_interfaces/1.3.11-1
+ target_directory: ros-humble-ament-cmake-export-interfaces/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-libraries
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-libraries
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-export-libraries/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-export-libraries/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-libraries/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-export-libraries/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-export-libraries/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-libraries/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-export-libraries/recipe.yaml b/recipes/ros-humble-ament-cmake-export-libraries/recipe.yaml
new file mode 100644
index 000000000..01c1063f3
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-libraries/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-export-libraries
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_export_libraries/1.3.11-1
+ target_directory: ros-humble-ament-cmake-export-libraries/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-export-link-flags/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-export-link-flags/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-link-flags/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-export-link-flags/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-export-link-flags/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-link-flags/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-export-link-flags/recipe.yaml b/recipes/ros-humble-ament-cmake-export-link-flags/recipe.yaml
new file mode 100644
index 000000000..0740e50b6
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-link-flags/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-export-link-flags
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_export_link_flags/1.3.11-1
+ target_directory: ros-humble-ament-cmake-export-link-flags/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-export-targets/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-export-targets/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-targets/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-export-targets/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-export-targets/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-targets/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-export-targets/recipe.yaml b/recipes/ros-humble-ament-cmake-export-targets/recipe.yaml
new file mode 100644
index 000000000..72e049821
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-export-targets/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-export-targets
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_export_targets/1.3.11-1
+ target_directory: ros-humble-ament-cmake-export-targets/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-libraries
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-libraries
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-flake8/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-flake8/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-flake8/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-flake8/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-flake8/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-flake8/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-flake8/recipe.yaml b/recipes/ros-humble-ament-cmake-flake8/recipe.yaml
new file mode 100644
index 000000000..c6d3ef5db
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-flake8/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-flake8
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_flake8/0.12.11-1
+ target_directory: ros-humble-ament-cmake-flake8/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-flake8
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-flake8
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-gen-version-h/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-gen-version-h/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gen-version-h/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-gen-version-h/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-gen-version-h/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gen-version-h/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-gen-version-h/recipe.yaml b/recipes/ros-humble-ament-cmake-gen-version-h/recipe.yaml
new file mode 100644
index 000000000..4ccb2d29a
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gen-version-h/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-gen-version-h
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_gen_version_h/1.3.11-1
+ target_directory: ros-humble-ament-cmake-gen-version-h/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-package
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-gmock/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-gmock/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gmock/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-gmock/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-gmock/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gmock/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-gmock/recipe.yaml b/recipes/ros-humble-ament-cmake-gmock/recipe.yaml
new file mode 100644
index 000000000..a49e3c081
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gmock/recipe.yaml
@@ -0,0 +1,92 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-gmock
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_gmock/1.3.11-1
+ target_directory: ros-humble-ament-cmake-gmock/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - gmock
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-cmake-test
+ - ros-humble-gmock-vendor
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - gmock
+ - python
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-cmake-test
+ - ros-humble-gmock-vendor
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-google-benchmark/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-google-benchmark/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-google-benchmark/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-google-benchmark/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-google-benchmark/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-google-benchmark/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-google-benchmark/recipe.yaml b/recipes/ros-humble-ament-cmake-google-benchmark/recipe.yaml
new file mode 100644
index 000000000..2ec326978
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-google-benchmark/recipe.yaml
@@ -0,0 +1,88 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-google-benchmark
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_google_benchmark/1.3.11-1
+ target_directory: ros-humble-ament-cmake-google-benchmark/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-dependencies
+ - ros-humble-ament-cmake-python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-google-benchmark-vendor
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-gtest/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-gtest/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gtest/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-gtest/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-gtest/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gtest/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-gtest/recipe.yaml b/recipes/ros-humble-ament-cmake-gtest/recipe.yaml
new file mode 100644
index 000000000..7039b92b7
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-gtest/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-gtest
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_gtest/1.3.11-1
+ target_directory: ros-humble-ament-cmake-gtest/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - gtest
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-gtest-vendor
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - gtest
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-gtest-vendor
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-include-directories/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-include-directories/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-include-directories/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-include-directories/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-include-directories/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-include-directories/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-include-directories/recipe.yaml b/recipes/ros-humble-ament-cmake-include-directories/recipe.yaml
new file mode 100644
index 000000000..20b052ea9
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-include-directories/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-include-directories
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_include_directories/1.3.11-1
+ target_directory: ros-humble-ament-cmake-include-directories/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-libraries/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-libraries/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-libraries/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-libraries/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-libraries/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-libraries/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-libraries/recipe.yaml b/recipes/ros-humble-ament-cmake-libraries/recipe.yaml
new file mode 100644
index 000000000..65f3b4bd8
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-libraries/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-libraries
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_libraries/1.3.11-1
+ target_directory: ros-humble-ament-cmake-libraries/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-lint-cmake/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-lint-cmake/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-lint-cmake/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-lint-cmake/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-lint-cmake/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-lint-cmake/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-lint-cmake/recipe.yaml b/recipes/ros-humble-ament-cmake-lint-cmake/recipe.yaml
new file mode 100644
index 000000000..373418278
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-lint-cmake/recipe.yaml
@@ -0,0 +1,88 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-lint-cmake
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_lint_cmake/0.12.11-1
+ target_directory: ros-humble-ament-cmake-lint-cmake/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-lint-cmake
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-lint-cmake
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-pep257/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-pep257/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-pep257/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-pep257/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-pep257/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-pep257/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-pep257/recipe.yaml b/recipes/ros-humble-ament-cmake-pep257/recipe.yaml
new file mode 100644
index 000000000..66d8d404a
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-pep257/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-pep257
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_pep257/0.12.11-1
+ target_directory: ros-humble-ament-cmake-pep257/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-pep257
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-pep257
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-pytest/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-pytest/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-pytest/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-pytest/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-pytest/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-pytest/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-pytest/recipe.yaml b/recipes/ros-humble-ament-cmake-pytest/recipe.yaml
new file mode 100644
index 000000000..555625d73
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-pytest/recipe.yaml
@@ -0,0 +1,89 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-pytest
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_pytest/1.3.11-1
+ target_directory: ros-humble-ament-cmake-pytest/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - pytest
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-python/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-python/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-python/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-python/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-python/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-python/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-python/patch/ros-humble-ament-cmake-python.patch b/recipes/ros-humble-ament-cmake-python/patch/ros-humble-ament-cmake-python.patch
new file mode 100644
index 000000000..65bc4d938
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-python/patch/ros-humble-ament-cmake-python.patch
@@ -0,0 +1,26 @@
+diff --git a/cmake/ament_python_install_module.cmake b/cmake/ament_python_install_module.cmake
+index 6d61edcc9..eb8c203ed 100644
+--- a/cmake/ament_python_install_module.cmake
++++ b/cmake/ament_python_install_module.cmake
+@@ -65,7 +65,7 @@ function(_ament_cmake_python_install_module module_file)
+ "execute_process(
+ COMMAND
+ \"${python_interpreter}\" \"-m\" \"compileall\"
+- \"${CMAKE_INSTALL_PREFIX}/${destination}/${module_file}\"
++ \"${destination}/${module_file}\"
+ )"
+ )
+ endif()
+diff --git a/cmake/ament_python_install_package.cmake b/cmake/ament_python_install_package.cmake
+index d035ff9ab..72cc18ca4 100644
+--- a/cmake/ament_python_install_package.cmake
++++ b/cmake/ament_python_install_package.cmake
+@@ -192,7 +192,7 @@ setup(
+ "execute_process(
+ COMMAND
+ \"${python_interpreter_config}\" \"-m\" \"compileall\"
+- \"${CMAKE_INSTALL_PREFIX}/${ARG_DESTINATION}/${package_name}\"
++ \"${ARG_DESTINATION}/${package_name}\"
+ )"
+ )
+ endif()
diff --git a/recipes/ros-humble-ament-cmake-python/recipe.yaml b/recipes/ros-humble-ament-cmake-python/recipe.yaml
new file mode 100644
index 000000000..67c0f6509
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-python/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-python
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_python/1.3.11-1
+ target_directory: ros-humble-ament-cmake-python/src/work
+ patches:
+ - patch/ros-humble-ament-cmake-python.patch
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-ros/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-ros/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-ros/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-ros/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-ros/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-ros/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-ros/recipe.yaml b/recipes/ros-humble-ament-cmake-ros/recipe.yaml
new file mode 100644
index 000000000..0204e988c
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-ros/recipe.yaml
@@ -0,0 +1,95 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-ros
+ version: 0.10.0
+source:
+ git: https://github.com/ros2-gbp/ament_cmake_ros-release.git
+ tag: release/humble/ament_cmake_ros/0.10.0-3
+ target_directory: ros-humble-ament-cmake-ros/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gmock
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-cmake-pytest
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-domain-coordinator
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gmock
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-cmake-pytest
+ - ros-humble-domain-coordinator
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-target-dependencies/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-target-dependencies/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-target-dependencies/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-target-dependencies/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-target-dependencies/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-target-dependencies/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-target-dependencies/recipe.yaml b/recipes/ros-humble-ament-cmake-target-dependencies/recipe.yaml
new file mode 100644
index 000000000..2a0a8208c
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-target-dependencies/recipe.yaml
@@ -0,0 +1,89 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-target-dependencies
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_target_dependencies/1.3.11-1
+ target_directory: ros-humble-ament-cmake-target-dependencies/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-include-directories
+ - ros-humble-ament-cmake-libraries
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-include-directories
+ - ros-humble-ament-cmake-libraries
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-test/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-test/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-test/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-test/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-test/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-test/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-test/recipe.yaml b/recipes/ros-humble-ament-cmake-test/recipe.yaml
new file mode 100644
index 000000000..6779488db
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-test/recipe.yaml
@@ -0,0 +1,86 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-test
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_test/1.3.11-1
+ target_directory: ros-humble-ament-cmake-test/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-uncrustify/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-uncrustify/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-uncrustify/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-uncrustify/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-uncrustify/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-uncrustify/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-uncrustify/recipe.yaml b/recipes/ros-humble-ament-cmake-uncrustify/recipe.yaml
new file mode 100644
index 000000000..56326fe8e
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-uncrustify/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-uncrustify
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_uncrustify/0.12.11-1
+ target_directory: ros-humble-ament-cmake-uncrustify/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-uncrustify
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-uncrustify
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-vendor-package/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-vendor-package/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-vendor-package/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-vendor-package/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-vendor-package/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-vendor-package/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-vendor-package/recipe.yaml b/recipes/ros-humble-ament-cmake-vendor-package/recipe.yaml
new file mode 100644
index 000000000..e501cdb0d
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-vendor-package/recipe.yaml
@@ -0,0 +1,91 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-vendor-package
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_vendor_package/1.3.11-1
+ target_directory: ros-humble-ament-cmake-vendor-package/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-dependencies
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - vcstool
+ run:
+ - git
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-dependencies
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - vcstool
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-version/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-version/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-version/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-version/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-version/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-version/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-version/recipe.yaml b/recipes/ros-humble-ament-cmake-version/recipe.yaml
new file mode 100644
index 000000000..31de35511
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-version/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-version
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake_version/1.3.11-1
+ target_directory: ros-humble-ament-cmake-version/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake-xmllint/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake-xmllint/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-xmllint/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake-xmllint/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake-xmllint/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-xmllint/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake-xmllint/recipe.yaml b/recipes/ros-humble-ament-cmake-xmllint/recipe.yaml
new file mode 100644
index 000000000..c13c61fb8
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake-xmllint/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake-xmllint
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cmake_xmllint/0.12.11-1
+ target_directory: ros-humble-ament-cmake-xmllint/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-xmllint
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-xmllint
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cmake/bld_ament_cmake.bat b/recipes/ros-humble-ament-cmake/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cmake/build_ament_cmake.sh b/recipes/ros-humble-ament-cmake/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-cmake/recipe.yaml b/recipes/ros-humble-ament-cmake/recipe.yaml
new file mode 100644
index 000000000..4009b9ae5
--- /dev/null
+++ b/recipes/ros-humble-ament-cmake/recipe.yaml
@@ -0,0 +1,112 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cmake
+ version: 1.3.11
+source:
+ git: https://github.com/ros2-gbp/ament_cmake-release.git
+ tag: release/humble/ament_cmake/1.3.11-1
+ target_directory: ros-humble-ament-cmake/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-definitions
+ - ros-humble-ament-cmake-export-dependencies
+ - ros-humble-ament-cmake-export-include-directories
+ - ros-humble-ament-cmake-export-interfaces
+ - ros-humble-ament-cmake-export-libraries
+ - ros-humble-ament-cmake-export-link-flags
+ - ros-humble-ament-cmake-export-targets
+ - ros-humble-ament-cmake-gen-version-h
+ - ros-humble-ament-cmake-libraries
+ - ros-humble-ament-cmake-python
+ - ros-humble-ament-cmake-target-dependencies
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-cmake-version
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - cmake
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-definitions
+ - ros-humble-ament-cmake-export-dependencies
+ - ros-humble-ament-cmake-export-include-directories
+ - ros-humble-ament-cmake-export-interfaces
+ - ros-humble-ament-cmake-export-libraries
+ - ros-humble-ament-cmake-export-link-flags
+ - ros-humble-ament-cmake-export-targets
+ - ros-humble-ament-cmake-gen-version-h
+ - ros-humble-ament-cmake-libraries
+ - ros-humble-ament-cmake-python
+ - ros-humble-ament-cmake-target-dependencies
+ - ros-humble-ament-cmake-test
+ - ros-humble-ament-cmake-version
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-copyright/bld_ament_python.bat b/recipes/ros-humble-ament-copyright/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-copyright/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-copyright/build_ament_python.sh b/recipes/ros-humble-ament-copyright/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-copyright/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-copyright/recipe.yaml b/recipes/ros-humble-ament-copyright/recipe.yaml
new file mode 100644
index 000000000..1a933cfff
--- /dev/null
+++ b/recipes/ros-humble-ament-copyright/recipe.yaml
@@ -0,0 +1,89 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-copyright
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_copyright/0.12.11-1
+ target_directory: ros-humble-ament-copyright/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - importlib-metadata
+ - python
+ - ros-humble-ament-lint
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cppcheck/bld_ament_python.bat b/recipes/ros-humble-ament-cppcheck/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-cppcheck/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cppcheck/build_ament_python.sh b/recipes/ros-humble-ament-cppcheck/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-cppcheck/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-cppcheck/recipe.yaml b/recipes/ros-humble-ament-cppcheck/recipe.yaml
new file mode 100644
index 000000000..66ead9245
--- /dev/null
+++ b/recipes/ros-humble-ament-cppcheck/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cppcheck
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cppcheck/0.12.11-1
+ target_directory: ros-humble-ament-cppcheck/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - cppcheck
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-cpplint/bld_ament_python.bat b/recipes/ros-humble-ament-cpplint/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-cpplint/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-cpplint/build_ament_python.sh b/recipes/ros-humble-ament-cpplint/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-cpplint/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-cpplint/recipe.yaml b/recipes/ros-humble-ament-cpplint/recipe.yaml
new file mode 100644
index 000000000..e696e90f4
--- /dev/null
+++ b/recipes/ros-humble-ament-cpplint/recipe.yaml
@@ -0,0 +1,91 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-cpplint
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_cpplint/0.12.11-1
+ target_directory: ros-humble-ament-cpplint/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-copyright
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
+tests:
+ - script:
+ - ament_cpplint --help
diff --git a/recipes/ros-humble-ament-flake8/bld_ament_python.bat b/recipes/ros-humble-ament-flake8/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-flake8/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-flake8/build_ament_python.sh b/recipes/ros-humble-ament-flake8/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-flake8/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-flake8/recipe.yaml b/recipes/ros-humble-ament-flake8/recipe.yaml
new file mode 100644
index 000000000..b7eed8c2b
--- /dev/null
+++ b/recipes/ros-humble-ament-flake8/recipe.yaml
@@ -0,0 +1,86 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-flake8
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_flake8/0.12.11-1
+ target_directory: ros-humble-ament-flake8/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - flake8
+ - python
+ - ros-humble-ament-lint
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-index-cpp/bld_ament_cmake.bat b/recipes/ros-humble-ament-index-cpp/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-index-cpp/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-index-cpp/build_ament_cmake.sh b/recipes/ros-humble-ament-index-cpp/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-index-cpp/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-index-cpp/recipe.yaml b/recipes/ros-humble-ament-index-cpp/recipe.yaml
new file mode 100644
index 000000000..49d27aef8
--- /dev/null
+++ b/recipes/ros-humble-ament-index-cpp/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-index-cpp
+ version: 1.4.0
+source:
+ git: https://github.com/ros2-gbp/ament_index-release.git
+ tag: release/humble/ament_index_cpp/1.4.0-2
+ target_directory: ros-humble-ament-index-cpp/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-index-python/bld_ament_python.bat b/recipes/ros-humble-ament-index-python/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-index-python/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-index-python/build_ament_python.sh b/recipes/ros-humble-ament-index-python/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-index-python/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-index-python/recipe.yaml b/recipes/ros-humble-ament-index-python/recipe.yaml
new file mode 100644
index 000000000..127bdd19f
--- /dev/null
+++ b/recipes/ros-humble-ament-index-python/recipe.yaml
@@ -0,0 +1,88 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-index-python
+ version: 1.4.0
+source:
+ git: https://github.com/ros2-gbp/ament_index-release.git
+ tag: release/humble/ament_index_python/1.4.0-2
+ target_directory: ros-humble-ament-index-python/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-copyright
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-lint-auto/bld_ament_cmake.bat b/recipes/ros-humble-ament-lint-auto/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-auto/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-lint-auto/build_ament_cmake.sh b/recipes/ros-humble-ament-lint-auto/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-auto/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-lint-auto/recipe.yaml b/recipes/ros-humble-ament-lint-auto/recipe.yaml
new file mode 100644
index 000000000..10b7ef414
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-auto/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-lint-auto
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_lint_auto/0.12.11-1
+ target_directory: ros-humble-ament-lint-auto/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-test
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-lint-cmake/bld_ament_python.bat b/recipes/ros-humble-ament-lint-cmake/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-cmake/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-lint-cmake/build_ament_python.sh b/recipes/ros-humble-ament-lint-cmake/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-cmake/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-lint-cmake/recipe.yaml b/recipes/ros-humble-ament-lint-cmake/recipe.yaml
new file mode 100644
index 000000000..587bb2e57
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-cmake/recipe.yaml
@@ -0,0 +1,91 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-lint-cmake
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_lint_cmake/0.12.11-1
+ target_directory: ros-humble-ament-lint-cmake/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-copyright
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
+tests:
+ - script:
+ - ament_lint_cmake --help
diff --git a/recipes/ros-humble-ament-lint-common/bld_ament_cmake.bat b/recipes/ros-humble-ament-lint-common/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-common/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-lint-common/build_ament_cmake.sh b/recipes/ros-humble-ament-lint-common/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-common/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-ament-lint-common/recipe.yaml b/recipes/ros-humble-ament-lint-common/recipe.yaml
new file mode 100644
index 000000000..ff27e810e
--- /dev/null
+++ b/recipes/ros-humble-ament-lint-common/recipe.yaml
@@ -0,0 +1,94 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-lint-common
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_lint_common/0.12.11-1
+ target_directory: ros-humble-ament-lint-common/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-export-dependencies
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-cmake-copyright
+ - ros-humble-ament-cmake-core
+ - ros-humble-ament-cmake-cppcheck
+ - ros-humble-ament-cmake-cpplint
+ - ros-humble-ament-cmake-flake8
+ - ros-humble-ament-cmake-lint-cmake
+ - ros-humble-ament-cmake-pep257
+ - ros-humble-ament-cmake-uncrustify
+ - ros-humble-ament-cmake-xmllint
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-lint/bld_ament_python.bat b/recipes/ros-humble-ament-lint/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-lint/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-lint/build_ament_python.sh b/recipes/ros-humble-ament-lint/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-lint/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-lint/recipe.yaml b/recipes/ros-humble-ament-lint/recipe.yaml
new file mode 100644
index 000000000..27396cc33
--- /dev/null
+++ b/recipes/ros-humble-ament-lint/recipe.yaml
@@ -0,0 +1,84 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-lint
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_lint/0.12.11-1
+ target_directory: ros-humble-ament-lint/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-mypy/bld_ament_python.bat b/recipes/ros-humble-ament-mypy/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-mypy/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-mypy/build_ament_python.sh b/recipes/ros-humble-ament-mypy/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-mypy/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-mypy/recipe.yaml b/recipes/ros-humble-ament-mypy/recipe.yaml
new file mode 100644
index 000000000..2cf1ddb21
--- /dev/null
+++ b/recipes/ros-humble-ament-mypy/recipe.yaml
@@ -0,0 +1,88 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-mypy
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_mypy/0.12.11-1
+ target_directory: ros-humble-ament-mypy/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - pytest-mock
+ - python
+ - ros-humble-ament-flake8
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - mypy
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-package/bld_ament_python.bat b/recipes/ros-humble-ament-package/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-package/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-package/build_ament_python.sh b/recipes/ros-humble-ament-package/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-package/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-package/patch/ros-humble-ament-package.patch b/recipes/ros-humble-ament-package/patch/ros-humble-ament-package.patch
new file mode 100644
index 000000000..7f74ca146
--- /dev/null
+++ b/recipes/ros-humble-ament-package/patch/ros-humble-ament-package.patch
@@ -0,0 +1,87 @@
+diff --git a/ament_package/template/environment_hook/library_path.sh b/ament_package/template/environment_hook/library_path.sh
+deleted file mode 100644
+index 292e518..0000000
+--- a/ament_package/template/environment_hook/library_path.sh
++++ /dev/null
+@@ -1,16 +0,0 @@
+-# copied from ament_package/template/environment_hook/library_path.sh
+-
+-# detect if running on Darwin platform
+-_UNAME=`uname -s`
+-_IS_DARWIN=0
+-if [ "$_UNAME" = "Darwin" ]; then
+- _IS_DARWIN=1
+-fi
+-unset _UNAME
+-
+-if [ $_IS_DARWIN -eq 0 ]; then
+- ament_prepend_unique_value LD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib"
+-else
+- ament_prepend_unique_value DYLD_LIBRARY_PATH "$AMENT_CURRENT_PREFIX/lib"
+-fi
+-unset _IS_DARWIN
+diff --git a/ament_package/templates.py b/ament_package/templates.py
+index 885b972..463453c 100644
+--- a/ament_package/templates.py
++++ b/ament_package/templates.py
+@@ -17,15 +17,21 @@ import re
+
+ try:
+ import importlib.resources as importlib_resources
+-except ModuleNotFoundError:
++ assert importlib_resources.files, "importlib reousrces too old to support files, please install importlib_resources"
++except (ModuleNotFoundError, AttributeError):
+ import importlib_resources
+
+ IS_WINDOWS = os.name == 'nt'
+
++# importlib
++# DeprecationWarning: path is deprecated. Use files() instead.
++# Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy
++# for migration advice.
+
+ def get_environment_hook_template_path(name):
+- with importlib_resources.path('ament_package.template.environment_hook', name) as path:
+- return str(path)
++ # with importlib_resources.path('ament_package.template.environment_hook', name) as path:
++ path = importlib_resources.files('ament_package.template.environment_hook').joinpath(name)
++ return str(path)
+
+
+ def get_package_level_template_names(all_platforms=False):
+@@ -41,8 +47,9 @@ def get_package_level_template_names(all_platforms=False):
+
+
+ def get_package_level_template_path(name):
+- with importlib_resources.path('ament_package.template.package_level', name) as path:
+- return str(path)
++ # with importlib_resources.path('ament_package.template.package_level', name) as path:
++ path = importlib_resources.files('ament_package.template.package_level').joinpath(name)
++ return str(path)
+
+
+ def get_prefix_level_template_names(*, all_platforms=False):
+@@ -61,8 +68,9 @@ def get_prefix_level_template_names(*, all_platforms=False):
+
+
+ def get_prefix_level_template_path(name):
+- with importlib_resources.path('ament_package.template.prefix_level', name) as path:
+- return str(path)
++ # with importlib_resources.path('ament_package.template.prefix_level', name) as path:
++ path = importlib_resources.files('ament_package.template.prefix_level').joinpath(name)
++ return str(path)
+
+
+ def get_isolated_prefix_level_template_names(*, all_platforms=False):
+@@ -81,8 +89,9 @@ def get_isolated_prefix_level_template_names(*, all_platforms=False):
+
+
+ def get_isolated_prefix_level_template_path(name):
+- with importlib_resources.path('ament_package.template.isolated_prefix_level', name) as path:
+- return str(path)
++ #with importlib_resources.path('ament_package.template.isolated_prefix_level', name) as path:
++ path = importlib_resources.files('ament_package.template.isolated_prefix_level').joinpath(name)
++ return str(path)
+
+
+ def configure_file(template_file, environment):
diff --git a/recipes/ros-humble-ament-package/recipe.yaml b/recipes/ros-humble-ament-package/recipe.yaml
new file mode 100644
index 000000000..748d29dc7
--- /dev/null
+++ b/recipes/ros-humble-ament-package/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-package
+ version: 0.14.0
+source:
+ git: https://github.com/ros2-gbp/ament_package-release.git
+ tag: release/humble/ament_package/0.14.0-4
+ target_directory: ros-humble-ament-package/src/work
+ patches:
+ - patch/ros-humble-ament-package.patch
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - flake8
+ - importlib-metadata
+ - importlib_resources
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - importlib-metadata
+ - importlib_resources
+ - python
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-pep257/bld_ament_python.bat b/recipes/ros-humble-ament-pep257/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-pep257/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-pep257/build_ament_python.sh b/recipes/ros-humble-ament-pep257/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-pep257/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-pep257/recipe.yaml b/recipes/ros-humble-ament-pep257/recipe.yaml
new file mode 100644
index 000000000..f392ae643
--- /dev/null
+++ b/recipes/ros-humble-ament-pep257/recipe.yaml
@@ -0,0 +1,88 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-pep257
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_pep257/0.12.11-1
+ target_directory: ros-humble-ament-pep257/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-flake8
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - pydocstyle
+ - python
+ - ros-humble-ament-lint
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-pycodestyle/bld_ament_python.bat b/recipes/ros-humble-ament-pycodestyle/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-pycodestyle/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-pycodestyle/build_ament_python.sh b/recipes/ros-humble-ament-pycodestyle/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-pycodestyle/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-pycodestyle/recipe.yaml b/recipes/ros-humble-ament-pycodestyle/recipe.yaml
new file mode 100644
index 000000000..e969f1197
--- /dev/null
+++ b/recipes/ros-humble-ament-pycodestyle/recipe.yaml
@@ -0,0 +1,85 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-pycodestyle
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_pycodestyle/0.12.11-1
+ target_directory: ros-humble-ament-pycodestyle/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - pycodestyle
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-uncrustify/bld_ament_python.bat b/recipes/ros-humble-ament-uncrustify/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-uncrustify/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-uncrustify/build_ament_python.sh b/recipes/ros-humble-ament-uncrustify/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-uncrustify/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-uncrustify/recipe.yaml b/recipes/ros-humble-ament-uncrustify/recipe.yaml
new file mode 100644
index 000000000..a24b0feae
--- /dev/null
+++ b/recipes/ros-humble-ament-uncrustify/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-uncrustify
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_uncrustify/0.12.11-1
+ target_directory: ros-humble-ament-uncrustify/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-copyright
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-ament-pycodestyle
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros-humble-uncrustify-vendor
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-ament-xmllint/bld_ament_python.bat b/recipes/ros-humble-ament-xmllint/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-ament-xmllint/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-ament-xmllint/build_ament_python.sh b/recipes/ros-humble-ament-xmllint/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-ament-xmllint/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-ament-xmllint/recipe.yaml b/recipes/ros-humble-ament-xmllint/recipe.yaml
new file mode 100644
index 000000000..073eeb861
--- /dev/null
+++ b/recipes/ros-humble-ament-xmllint/recipe.yaml
@@ -0,0 +1,93 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-ament-xmllint
+ version: 0.12.11
+source:
+ git: https://github.com/ros2-gbp/ament_lint-release.git
+ tag: release/humble/ament_xmllint/0.12.11-1
+ target_directory: ros-humble-ament-xmllint/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - ros-humble-ament-copyright
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - libxml2
+ - python
+ - ros-humble-ament-lint
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
+tests:
+ - script:
+ - ament_xmllint --help
diff --git a/recipes/ros-humble-angles/bld_ament_cmake.bat b/recipes/ros-humble-angles/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-angles/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-angles/build_ament_cmake.sh b/recipes/ros-humble-angles/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-angles/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-angles/recipe.yaml b/recipes/ros-humble-angles/recipe.yaml
new file mode 100644
index 000000000..d922bcf71
--- /dev/null
+++ b/recipes/ros-humble-angles/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-angles
+ version: 1.15.0
+source:
+ git: https://github.com/ros2-gbp/angles-release.git
+ tag: release/humble/angles/1.15.0-1
+ target_directory: ros-humble-angles/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-apriltag-msgs/bld_ament_cmake.bat b/recipes/ros-humble-apriltag-msgs/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-apriltag-msgs/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-apriltag-msgs/build_ament_cmake.sh b/recipes/ros-humble-apriltag-msgs/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-apriltag-msgs/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-apriltag-msgs/recipe.yaml b/recipes/ros-humble-apriltag-msgs/recipe.yaml
new file mode 100644
index 000000000..fd8d8b811
--- /dev/null
+++ b/recipes/ros-humble-apriltag-msgs/recipe.yaml
@@ -0,0 +1,90 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-apriltag-msgs
+ version: 2.0.1
+source:
+ git: https://github.com/ros2-gbp/apriltag_msgs-release.git
+ tag: release/humble/apriltag_msgs/2.0.1-2
+ target_directory: ros-humble-apriltag-msgs/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-apriltag-ros/bld_ament_cmake.bat b/recipes/ros-humble-apriltag-ros/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-apriltag-ros/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-apriltag-ros/build_ament_cmake.sh b/recipes/ros-humble-apriltag-ros/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-apriltag-ros/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-apriltag-ros/patch/ros-humble-apriltag-ros.patch b/recipes/ros-humble-apriltag-ros/patch/ros-humble-apriltag-ros.patch
new file mode 100644
index 000000000..35aac4cee
--- /dev/null
+++ b/recipes/ros-humble-apriltag-ros/patch/ros-humble-apriltag-ros.patch
@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c906851..b48600f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -5,8 +5,10 @@ project(apriltag_ros)
+ set(CMAKE_CXX_STANDARD 14)
+
+ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+- add_compile_options(-Werror -Wall -Wextra -Wpedantic)
+- add_link_options("-Wl,-z,relro,-z,now,-z,defs")
++ if(NOT APPLE)
++ add_compile_options(-Werror -Wall -Wextra -Wpedantic)
++ add_link_options("-Wl,-z,relro,-z,now,-z,defs")
++ endif()
+ endif()
+
+ option(ASAN "use AddressSanitizer to detect memory issues" OFF)
diff --git a/recipes/ros-humble-apriltag-ros/recipe.yaml b/recipes/ros-humble-apriltag-ros/recipe.yaml
new file mode 100644
index 000000000..604f7e57e
--- /dev/null
+++ b/recipes/ros-humble-apriltag-ros/recipe.yaml
@@ -0,0 +1,106 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-apriltag-ros
+ version: 3.2.2
+source:
+ git: https://github.com/ros2-gbp/apriltag_ros-release.git
+ tag: release/humble/apriltag_ros/3.2.2-3
+ target_directory: ros-humble-apriltag-ros/src/work
+ patches:
+ - patch/ros-humble-apriltag-ros.patch
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - eigen
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-clang-format
+ - ros-humble-ament-cmake-cppcheck
+ - ros-humble-ament-lint-auto
+ - ros-humble-apriltag
+ - ros-humble-apriltag-msgs
+ - ros-humble-cv-bridge
+ - ros-humble-image-transport
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-components
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros-humble-tf2-ros
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-apriltag
+ - ros-humble-apriltag-msgs
+ - ros-humble-cv-bridge
+ - ros-humble-image-transport
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-components
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros-humble-tf2-ros
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-apriltag/bld_catkin.bat b/recipes/ros-humble-apriltag/bld_catkin.bat
new file mode 100755
index 000000000..efd58be22
--- /dev/null
+++ b/recipes/ros-humble-apriltag/bld_catkin.bat
@@ -0,0 +1,81 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+:: ROS_BUILD_SHARED_LIBS is always defined in CMake by catkin
+:: if ROS (1) is build as shared library . However, some packages are not
+:: passing compilation flags from CMake to other build systems (such as qmake),
+:: so we enable it explicitly via the CL environment variable, see
+:: https://learn.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=msvc-170
+set CL=/DROS_BUILD_SHARED_LIBS=1 /DNOGDI=1
+
+set "CATKIN_BUILD_BINARY_PACKAGE_ARGS=-DCATKIN_BUILD_BINARY_PACKAGE=1"
+if "%PKG_NAME%" == "ros-humble-catkin" (
+ :: create catkin cookie to make it is a catkin workspace
+ type NUL > %LIBRARY_PREFIX%\.catkin
+ :: keep the workspace activation scripts (e.g., local_setup.bat)
+ set CATKIN_BUILD_BINARY_PACKAGE_ARGS=
+)
+
+rd /s /q build
+mkdir build
+pushd build
+
+set SKIP_TESTING=ON
+
+cmake ^
+ -G "Ninja" ^
+ --compile-no-warning-as-error ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=ON ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBoost_USE_STATIC_LIBS=OFF ^
+ %CATKIN_BUILD_BINARY_PACKAGE_ARGS% ^
+ -DCATKIN_SKIP_TESTING=%SKIP_TESTING% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+if "%PKG_NAME%" == "ros-humble-eigenpy" (
+ cmake --build . --config Release --target all --parallel 1
+ if errorlevel 1 exit 1
+) else (
+ cmake --build . --config Release --target all
+ if errorlevel 1 exit 1
+)
+
+if "%SKIP_TESTING%" == "OFF" (
+ cmake --build . --config Release --target run_tests
+ if errorlevel 1 exit 1
+)
+
+cmake --build . --config Release --target install
+if errorlevel 1 exit 1
+
+if "%PKG_NAME%" == "ros-humble-catkin" (
+ :: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+ :: This will allow them to be run on environment activation.
+ for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+ )
+)
+
+if "%PKG_NAME%" == "ros-humble-ros-workspace" (
+ :: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+ :: This will allow them to be run on environment activation.
+ for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+ copy %RECIPE_DIR%\%%F.ps1 %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.ps1
+ )
+)
diff --git a/recipes/ros-humble-apriltag/build_catkin.sh b/recipes/ros-humble-apriltag/build_catkin.sh
new file mode 100755
index 000000000..61235f6fa
--- /dev/null
+++ b/recipes/ros-humble-apriltag/build_catkin.sh
@@ -0,0 +1,134 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+CATKIN_BUILD_BINARY_PACKAGE="ON"
+
+if [ "${PKG_NAME}" == "ros-humble-catkin" ]; then
+ # create catkin cookie to make it is a catkin workspace
+ touch $PREFIX/.catkin
+ # keep the workspace activation scripts (e.g., local_setup.bat)
+ CATKIN_BUILD_BINARY_PACKAGE="OFF"
+fi
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+ export CMAKE_AUTOMOC_EXECUTABLE="$BUILD_PREFIX/bin/moc"
+else
+ export QT_HOST_PATH="$PREFIX"
+ export CMAKE_AUTOMOC_EXECUTABLE="$PREFIX/bin/moc"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python $ROS_PYTHON_VERSION"
+# Fix up SP_DIR which for some reason might contain a path to a wrong Python version
+FIXED_SP_DIR=$(echo $SP_DIR | sed -E "s/python[0-9]+\.[0-9]+/python$ROS_PYTHON_VERSION/")
+echo "Using site-package dir ${FIXED_SP_DIR}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+ # way around bad CPU type issues
+ # rm $PREFIX/bin/doxygen || echo "doxygen not found"
+ # rm $PREFIX/bin/dia || echo "dia not found"
+ # rm $PREFIX/bin/dot || echo "dot not found"
+fi
+
+# NOTE: there might be undefined references occurring
+# in the Boost.system library, depending on the C++ versions
+# used to compile Boost. We can avoid them by forcing the use of
+# the header-only version of the library.
+export CXXFLAGS="$CXXFLAGS -DBOOST_ERROR_CODE_HEADER_ONLY"
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="$CFLAGS -D__STDC_FORMAT_MACROS=1";
+ export CXXFLAGS="$CXXFLAGS -D__STDC_FORMAT_MACROS=1";
+ # I am too scared to turn this on for now ...
+ # export LDFLAGS="$LDFLAGS -lrt";
+ # Some qt stuff uses g++ directly - fix these use cases
+ ln -s $GXX $BUILD_PREFIX/bin/g++
+fi
+
+export SKIP_TESTING=ON
+
+cmake ${CMAKE_ARGS} --compile-no-warning-as-error \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON \
+ -DCMAKE_FIND_FRAMEWORK=LAST \
+ -DCMAKE_AUTOMOC_EXECUTABLE=$CMAKE_AUTOMOC_EXECUTABLE \
+ -DBUILD_SHARED_LIBS=ON \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPYTHON_INSTALL_DIR=$FIXED_SP_DIR \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCATKIN_BUILD_BINARY_PACKAGE=$CATKIN_BUILD_BINARY_PACKAGE \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ -G "Ninja" \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target all
+
+if [[ "$SKIP_TESTING" == "OFF" ]]; then
+ cmake --build . --config Release --target run_tests
+fi
+
+cmake --build . --config Release --target install
+
+if [ "${PKG_NAME}" == "ros-humble-catkin" ]; then
+ # Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
+ # This will allow them to be run on environment activation.
+ for CHANGE in "activate" "deactivate"
+ do
+ mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
+ cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
+ done
+fi
+
+if [ "${PKG_NAME}" == "ros-humble-environment" ]; then
+ for SCRIPT in "1.ros_distro.sh" "1.ros_etc_dir.sh" "1.ros_package_path.sh" "1.ros_python_version.sh" "1.ros_version.sh"
+ do
+ mkdir -p "${PREFIX}/etc/conda/activate.d"
+ cp "${PREFIX}/etc/catkin/profile.d/${SCRIPT}" "${PREFIX}/etc/conda/activate.d/${SCRIPT}"
+ done
+fi
+
+if [ "${PKG_NAME}" == "ros-humble-ros-workspace" ]; then
+ # Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
+ # This will allow them to be run on environment activation.
+ for CHANGE in "activate" "deactivate"
+ do
+ mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
+ cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
+ done
+fi
diff --git a/recipes/ros-humble-apriltag/recipe.yaml b/recipes/ros-humble-apriltag/recipe.yaml
new file mode 100644
index 000000000..860bba5c3
--- /dev/null
+++ b/recipes/ros-humble-apriltag/recipe.yaml
@@ -0,0 +1,97 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-apriltag
+ version: 3.4.2
+source:
+ git: https://github.com/ros2-gbp/apriltag-release.git
+ tag: release/humble/apriltag/3.4.2-1
+ target_directory: ros-humble-apriltag/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_catkin.sh' if unix else '%RECIPE_DIR%\\bld_catkin.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - libopencv
+ - numpy
+ - pip
+ - py-opencv
+ - python
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: linux
+ then:
+ - libgl-devel
+ - libopengl-devel
+ - if: unix
+ then:
+ - xorg-libx11
+ - xorg-libxext
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
+ - if: unix
+ then:
+ - xorg-libx11
+ - xorg-libxext
diff --git a/recipes/ros-humble-backward-ros/bld_catkin.bat b/recipes/ros-humble-backward-ros/bld_catkin.bat
new file mode 100755
index 000000000..efd58be22
--- /dev/null
+++ b/recipes/ros-humble-backward-ros/bld_catkin.bat
@@ -0,0 +1,81 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+:: ROS_BUILD_SHARED_LIBS is always defined in CMake by catkin
+:: if ROS (1) is build as shared library . However, some packages are not
+:: passing compilation flags from CMake to other build systems (such as qmake),
+:: so we enable it explicitly via the CL environment variable, see
+:: https://learn.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=msvc-170
+set CL=/DROS_BUILD_SHARED_LIBS=1 /DNOGDI=1
+
+set "CATKIN_BUILD_BINARY_PACKAGE_ARGS=-DCATKIN_BUILD_BINARY_PACKAGE=1"
+if "%PKG_NAME%" == "ros-humble-catkin" (
+ :: create catkin cookie to make it is a catkin workspace
+ type NUL > %LIBRARY_PREFIX%\.catkin
+ :: keep the workspace activation scripts (e.g., local_setup.bat)
+ set CATKIN_BUILD_BINARY_PACKAGE_ARGS=
+)
+
+rd /s /q build
+mkdir build
+pushd build
+
+set SKIP_TESTING=ON
+
+cmake ^
+ -G "Ninja" ^
+ --compile-no-warning-as-error ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=ON ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBoost_USE_STATIC_LIBS=OFF ^
+ %CATKIN_BUILD_BINARY_PACKAGE_ARGS% ^
+ -DCATKIN_SKIP_TESTING=%SKIP_TESTING% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+if "%PKG_NAME%" == "ros-humble-eigenpy" (
+ cmake --build . --config Release --target all --parallel 1
+ if errorlevel 1 exit 1
+) else (
+ cmake --build . --config Release --target all
+ if errorlevel 1 exit 1
+)
+
+if "%SKIP_TESTING%" == "OFF" (
+ cmake --build . --config Release --target run_tests
+ if errorlevel 1 exit 1
+)
+
+cmake --build . --config Release --target install
+if errorlevel 1 exit 1
+
+if "%PKG_NAME%" == "ros-humble-catkin" (
+ :: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+ :: This will allow them to be run on environment activation.
+ for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+ )
+)
+
+if "%PKG_NAME%" == "ros-humble-ros-workspace" (
+ :: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
+ :: This will allow them to be run on environment activation.
+ for %%F in (activate deactivate) DO (
+ if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
+ copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
+ copy %RECIPE_DIR%\%%F.ps1 %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.ps1
+ )
+)
diff --git a/recipes/ros-humble-backward-ros/build_catkin.sh b/recipes/ros-humble-backward-ros/build_catkin.sh
new file mode 100755
index 000000000..61235f6fa
--- /dev/null
+++ b/recipes/ros-humble-backward-ros/build_catkin.sh
@@ -0,0 +1,134 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+CATKIN_BUILD_BINARY_PACKAGE="ON"
+
+if [ "${PKG_NAME}" == "ros-humble-catkin" ]; then
+ # create catkin cookie to make it is a catkin workspace
+ touch $PREFIX/.catkin
+ # keep the workspace activation scripts (e.g., local_setup.bat)
+ CATKIN_BUILD_BINARY_PACKAGE="OFF"
+fi
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+ export CMAKE_AUTOMOC_EXECUTABLE="$BUILD_PREFIX/bin/moc"
+else
+ export QT_HOST_PATH="$PREFIX"
+ export CMAKE_AUTOMOC_EXECUTABLE="$PREFIX/bin/moc"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python $ROS_PYTHON_VERSION"
+# Fix up SP_DIR which for some reason might contain a path to a wrong Python version
+FIXED_SP_DIR=$(echo $SP_DIR | sed -E "s/python[0-9]+\.[0-9]+/python$ROS_PYTHON_VERSION/")
+echo "Using site-package dir ${FIXED_SP_DIR}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python$ROS_PYTHON_VERSION/site-packages~$BUILD_PREFIX/lib/python$ROS_PYTHON_VERSION/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+ # way around bad CPU type issues
+ # rm $PREFIX/bin/doxygen || echo "doxygen not found"
+ # rm $PREFIX/bin/dia || echo "dia not found"
+ # rm $PREFIX/bin/dot || echo "dot not found"
+fi
+
+# NOTE: there might be undefined references occurring
+# in the Boost.system library, depending on the C++ versions
+# used to compile Boost. We can avoid them by forcing the use of
+# the header-only version of the library.
+export CXXFLAGS="$CXXFLAGS -DBOOST_ERROR_CODE_HEADER_ONLY"
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="$CFLAGS -D__STDC_FORMAT_MACROS=1";
+ export CXXFLAGS="$CXXFLAGS -D__STDC_FORMAT_MACROS=1";
+ # I am too scared to turn this on for now ...
+ # export LDFLAGS="$LDFLAGS -lrt";
+ # Some qt stuff uses g++ directly - fix these use cases
+ ln -s $GXX $BUILD_PREFIX/bin/g++
+fi
+
+export SKIP_TESTING=ON
+
+cmake ${CMAKE_ARGS} --compile-no-warning-as-error \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON \
+ -DCMAKE_FIND_FRAMEWORK=LAST \
+ -DCMAKE_AUTOMOC_EXECUTABLE=$CMAKE_AUTOMOC_EXECUTABLE \
+ -DBUILD_SHARED_LIBS=ON \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPYTHON_INSTALL_DIR=$FIXED_SP_DIR \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCATKIN_BUILD_BINARY_PACKAGE=$CATKIN_BUILD_BINARY_PACKAGE \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ -G "Ninja" \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target all
+
+if [[ "$SKIP_TESTING" == "OFF" ]]; then
+ cmake --build . --config Release --target run_tests
+fi
+
+cmake --build . --config Release --target install
+
+if [ "${PKG_NAME}" == "ros-humble-catkin" ]; then
+ # Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
+ # This will allow them to be run on environment activation.
+ for CHANGE in "activate" "deactivate"
+ do
+ mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
+ cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
+ done
+fi
+
+if [ "${PKG_NAME}" == "ros-humble-environment" ]; then
+ for SCRIPT in "1.ros_distro.sh" "1.ros_etc_dir.sh" "1.ros_package_path.sh" "1.ros_python_version.sh" "1.ros_version.sh"
+ do
+ mkdir -p "${PREFIX}/etc/conda/activate.d"
+ cp "${PREFIX}/etc/catkin/profile.d/${SCRIPT}" "${PREFIX}/etc/conda/activate.d/${SCRIPT}"
+ done
+fi
+
+if [ "${PKG_NAME}" == "ros-humble-ros-workspace" ]; then
+ # Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
+ # This will allow them to be run on environment activation.
+ for CHANGE in "activate" "deactivate"
+ do
+ mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
+ cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
+ done
+fi
diff --git a/recipes/ros-humble-backward-ros/patch/ros-humble-backward-ros.patch b/recipes/ros-humble-backward-ros/patch/ros-humble-backward-ros.patch
new file mode 100644
index 000000000..96f528a72
--- /dev/null
+++ b/recipes/ros-humble-backward-ros/patch/ros-humble-backward-ros.patch
@@ -0,0 +1,86 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 64af86c..9be355d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -27,6 +27,7 @@ include(cmake/BackwardConfig.cmake)
+
+ set(CMAKE_CXX_STANDARD_REQUIRED True)
+ set(CMAKE_CXX_STANDARD 14)
++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+
+ ###############################################################################
+ # COMPILER FLAGS
+diff --git a/cmake/BackwardConfig.cmake b/cmake/BackwardConfig.cmake
+index 77d22d2..8e95287 100644
+--- a/cmake/BackwardConfig.cmake
++++ b/cmake/BackwardConfig.cmake
+@@ -125,11 +125,14 @@ endforeach()
+
+ set(BACKWARD_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
++set(FIND_PACKAGE_REQUIRED_VARS BACKWARD_INCLUDE_DIR)
++if(DEFINED BACKWARD_LIBRARIES)
++ list(APPEND FIND_PACKAGE_REQUIRED_VARS BACKWARD_LIBRARIES)
++endif()
++
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Backward
+- REQUIRED_VARS
+- BACKWARD_INCLUDE_DIR
+- BACKWARD_LIBRARIES
++ REQUIRED_VARS ${FIND_PACKAGE_REQUIRED_VARS}
+ )
+ list(APPEND _BACKWARD_INCLUDE_DIRS ${BACKWARD_INCLUDE_DIR})
+
+diff --git a/cmake/BackwardConfigAment.cmake b/cmake/BackwardConfigAment.cmake
+index 273a51a..d981cbb 100644
+--- a/cmake/BackwardConfigAment.cmake
++++ b/cmake/BackwardConfigAment.cmake
+@@ -24,5 +24,13 @@ foreach(lib ${backward_ros_forced_LIBRARIES})
+ set(backward_ros_full_path_LIBRARIES "${backward_ros_full_path_LIBRARIES} ${lib}")
+ endif()
+ endforeach()
+-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed ${backward_ros_full_path_LIBRARIES} -Wl,--as-needed ${CMAKE_EXE_LINKER_FLAGS}")
++set(no_as_needed)
++set(as_needed)
+
++if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
++ set(no_as_needed "-Wl,--no-as-needed")
++ set(as_needed "-Wl,--as-needed")
++endif()
++
++SET(CMAKE_EXE_LINKER_FLAGS "${no_as_needed} ${backward_ros_full_path_LIBRARIES} ${as_needed} ${CMAKE_EXE_LINKER_FLAGS}")
++
+diff --git a/backward_rosConfig.cmake.in b/backward_rosConfig.cmake.in
+index 6713e91..bd9397a 100644
+--- a/backward_rosConfig.cmake.in
++++ b/backward_rosConfig.cmake.in
+@@ -1,9 +1,11 @@
+ @PACKAGE_INIT@
+-set_and_check(backward_ros_INCLUDE_DIRS "@BACKWARD_ROS_INSTALL_PREFIX@/include")
++set_and_check(backward_ros_INCLUDE_DIRS "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/include")
+ if(WIN32)
+-set_and_check(backward_ros_LIBRARIES "@BACKWARD_ROS_INSTALL_PREFIX@/lib/backward.lib")
++set_and_check(backward_ros_LIBRARIES "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/lib/backward.lib")
++elseif(APPLE)
++set_and_check(backward_ros_LIBRARIES "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/lib/libbackward.dylib")
+ else()
+-set_and_check(backward_ros_LIBRARIES "@BACKWARD_ROS_INSTALL_PREFIX@/lib/libbackward.so")
++set_and_check(backward_ros_LIBRARIES "@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/lib/libbackward.so")
+ endif()
+ check_required_components(backward_ros)
+-include(@BACKWARD_ROS_INSTALL_PREFIX@/share/@PROJECT_NAME@/cmake/BackwardConfigAment.cmake)
+\ No newline at end of file
++include(@PACKAGE_BACKWARD_ROS_INSTALL_PREFIX@/share/@PROJECT_NAME@/cmake/BackwardConfigAment.cmake)
+diff --git a/package.xml b/package.xml
+index e8bc10a..d39e613 100644
+--- a/package.xml
++++ b/package.xml
+@@ -11,6 +11,7 @@
+ https://github.com/pal-robotics/backward_ros
+
+ cmake
++ ament_cmake_libraries
+
+ libdw-dev
+
diff --git a/recipes/ros-humble-backward-ros/recipe.yaml b/recipes/ros-humble-backward-ros/recipe.yaml
new file mode 100644
index 000000000..06c7719e9
--- /dev/null
+++ b/recipes/ros-humble-backward-ros/recipe.yaml
@@ -0,0 +1,96 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-backward-ros
+ version: 1.0.6
+source:
+ git: https://github.com/ros2-gbp/backward_ros-release.git
+ tag: release/humble/backward_ros/1.0.6-1
+ target_directory: ros-humble-backward-ros/src/work
+ patches:
+ - patch/ros-humble-backward-ros.patch
+
+build:
+ script: ${{ '$RECIPE_DIR/build_catkin.sh' if unix else '%RECIPE_DIR%\\bld_catkin.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - ${{ 'binutils' if linux or (osx and x86_64) }}
+ - ${{ 'elfutils' if linux }}
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-libraries
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
+tests:
+ - script:
+ - cmake-package-check backward_ros
+ requirements:
+ run:
+ - cmake-package-check
+ - ${{ compiler('c') }}
+ - ${{ compiler('cxx') }}
diff --git a/recipes/ros-humble-behaviortree-cpp-v3/bld_ament_cmake.bat b/recipes/ros-humble-behaviortree-cpp-v3/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-behaviortree-cpp-v3/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-behaviortree-cpp-v3/build_ament_cmake.sh b/recipes/ros-humble-behaviortree-cpp-v3/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-behaviortree-cpp-v3/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-behaviortree-cpp-v3/patch/ros-humble-behaviortree-cpp-v3.patch b/recipes/ros-humble-behaviortree-cpp-v3/patch/ros-humble-behaviortree-cpp-v3.patch
new file mode 100644
index 000000000..beb071a36
--- /dev/null
+++ b/recipes/ros-humble-behaviortree-cpp-v3/patch/ros-humble-behaviortree-cpp-v3.patch
@@ -0,0 +1,2746 @@
+diff --git a/3rdparty/cppzmq/zmq.hpp b/3rdparty/cppzmq/zmq.hpp
+deleted file mode 100644
+index d59eb55..0000000
+--- a/3rdparty/cppzmq/zmq.hpp
++++ /dev/null
+@@ -1,2688 +0,0 @@
+-/*
+- Copyright (c) 2016-2017 ZeroMQ community
+- Copyright (c) 2009-2011 250bpm s.r.o.
+- Copyright (c) 2011 Botond Ballo
+- Copyright (c) 2007-2009 iMatix Corporation
+-
+- Permission is hereby granted, free of charge, to any person obtaining a copy
+- of this software and associated documentation files (the "Software"), to
+- deal in the Software without restriction, including without limitation the
+- rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+- sell copies of the Software, and to permit persons to whom the Software is
+- furnished to do so, subject to the following conditions:
+-
+- The above copyright notice and this permission notice shall be included in
+- all copies or substantial portions of the Software.
+-
+- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+- IN THE SOFTWARE.
+-*/
+-
+-#ifndef __ZMQ_HPP_INCLUDED__
+-#define __ZMQ_HPP_INCLUDED__
+-
+-#ifdef _WIN32
+-#ifndef NOMINMAX
+-#define NOMINMAX
+-#endif
+-#endif
+-
+-// included here for _HAS_CXX* macros
+-#include
+-
+-#if defined(_MSVC_LANG)
+-#define CPPZMQ_LANG _MSVC_LANG
+-#else
+-#define CPPZMQ_LANG __cplusplus
+-#endif
+-// overwrite if specific language macros indicate higher version
+-#if defined(_HAS_CXX14) && _HAS_CXX14 && CPPZMQ_LANG < 201402L
+-#undef CPPZMQ_LANG
+-#define CPPZMQ_LANG 201402L
+-#endif
+-#if defined(_HAS_CXX17) && _HAS_CXX17 && CPPZMQ_LANG < 201703L
+-#undef CPPZMQ_LANG
+-#define CPPZMQ_LANG 201703L
+-#endif
+-
+-// macros defined if has a specific standard or greater
+-#if CPPZMQ_LANG >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900)
+-#define ZMQ_CPP11
+-#endif
+-#if CPPZMQ_LANG >= 201402L
+-#define ZMQ_CPP14
+-#endif
+-#if CPPZMQ_LANG >= 201703L
+-#define ZMQ_CPP17
+-#endif
+-
+-#if defined(ZMQ_CPP14) && !defined(_MSC_VER)
+-#define ZMQ_DEPRECATED(msg) [[deprecated(msg)]]
+-#elif defined(_MSC_VER)
+-#define ZMQ_DEPRECATED(msg) __declspec(deprecated(msg))
+-#elif defined(__GNUC__)
+-#define ZMQ_DEPRECATED(msg) __attribute__((deprecated(msg)))
+-#endif
+-
+-#if defined(ZMQ_CPP17)
+-#define ZMQ_NODISCARD [[nodiscard]]
+-#else
+-#define ZMQ_NODISCARD
+-#endif
+-
+-#if defined(ZMQ_CPP11)
+-#define ZMQ_NOTHROW noexcept
+-#define ZMQ_EXPLICIT explicit
+-#define ZMQ_OVERRIDE override
+-#define ZMQ_NULLPTR nullptr
+-#define ZMQ_CONSTEXPR_FN constexpr
+-#define ZMQ_CONSTEXPR_VAR constexpr
+-#define ZMQ_CPP11_DEPRECATED(msg) ZMQ_DEPRECATED(msg)
+-#else
+-#define ZMQ_NOTHROW throw()
+-#define ZMQ_EXPLICIT
+-#define ZMQ_OVERRIDE
+-#define ZMQ_NULLPTR 0
+-#define ZMQ_CONSTEXPR_FN
+-#define ZMQ_CONSTEXPR_VAR const
+-#define ZMQ_CPP11_DEPRECATED(msg)
+-#endif
+-#if defined(ZMQ_CPP14) && (!defined(_MSC_VER) || _MSC_VER > 1900)
+-#define ZMQ_EXTENDED_CONSTEXPR
+-#endif
+-#if defined(ZMQ_CPP17)
+-#define ZMQ_INLINE_VAR inline
+-#define ZMQ_CONSTEXPR_IF constexpr
+-#else
+-#define ZMQ_INLINE_VAR
+-#define ZMQ_CONSTEXPR_IF
+-#endif
+-
+-#include
+-#include
+-
+-#include
+-#include
+-#include
+-#include
+-#include
+-#include
+-#ifdef ZMQ_CPP11
+-#include
+-#include
+-#include
+-#include
+-#endif
+-
+-#if defined(__has_include) && defined(ZMQ_CPP17)
+-#define CPPZMQ_HAS_INCLUDE_CPP17(X) __has_include(X)
+-#else
+-#define CPPZMQ_HAS_INCLUDE_CPP17(X) 0
+-#endif
+-
+-#if CPPZMQ_HAS_INCLUDE_CPP17() && !defined(CPPZMQ_HAS_OPTIONAL)
+-#define CPPZMQ_HAS_OPTIONAL 1
+-#endif
+-#ifndef CPPZMQ_HAS_OPTIONAL
+-#define CPPZMQ_HAS_OPTIONAL 0
+-#elif CPPZMQ_HAS_OPTIONAL
+-#include
+-#endif
+-
+-#if CPPZMQ_HAS_INCLUDE_CPP17() && !defined(CPPZMQ_HAS_STRING_VIEW)
+-#define CPPZMQ_HAS_STRING_VIEW 1
+-#endif
+-#ifndef CPPZMQ_HAS_STRING_VIEW
+-#define CPPZMQ_HAS_STRING_VIEW 0
+-#elif CPPZMQ_HAS_STRING_VIEW
+-#include
+-#endif
+-
+-/* Version macros for compile-time API version detection */
+-#define CPPZMQ_VERSION_MAJOR 4
+-#define CPPZMQ_VERSION_MINOR 8
+-#define CPPZMQ_VERSION_PATCH 0
+-
+-#define CPPZMQ_VERSION \
+- ZMQ_MAKE_VERSION(CPPZMQ_VERSION_MAJOR, CPPZMQ_VERSION_MINOR, \
+- CPPZMQ_VERSION_PATCH)
+-
+-// Detect whether the compiler supports C++11 rvalue references.
+-#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) \
+- && defined(__GXX_EXPERIMENTAL_CXX0X__))
+-#define ZMQ_HAS_RVALUE_REFS
+-#define ZMQ_DELETED_FUNCTION = delete
+-#elif defined(__clang__)
+-#if __has_feature(cxx_rvalue_references)
+-#define ZMQ_HAS_RVALUE_REFS
+-#endif
+-
+-#if __has_feature(cxx_deleted_functions)
+-#define ZMQ_DELETED_FUNCTION = delete
+-#else
+-#define ZMQ_DELETED_FUNCTION
+-#endif
+-#elif defined(_MSC_VER) && (_MSC_VER >= 1900)
+-#define ZMQ_HAS_RVALUE_REFS
+-#define ZMQ_DELETED_FUNCTION = delete
+-#elif defined(_MSC_VER) && (_MSC_VER >= 1600)
+-#define ZMQ_HAS_RVALUE_REFS
+-#define ZMQ_DELETED_FUNCTION
+-#else
+-#define ZMQ_DELETED_FUNCTION
+-#endif
+-
+-#if defined(ZMQ_CPP11) && !defined(__llvm__) && !defined(__INTEL_COMPILER) \
+- && defined(__GNUC__) && __GNUC__ < 5
+-#define ZMQ_CPP11_PARTIAL
+-#elif defined(__GLIBCXX__) && __GLIBCXX__ < 20160805
+-//the date here is the last date of gcc 4.9.4, which
+-// effectively means libstdc++ from gcc 5.5 and higher won't trigger this branch
+-#define ZMQ_CPP11_PARTIAL
+-#endif
+-
+-#ifdef ZMQ_CPP11
+-#ifdef ZMQ_CPP11_PARTIAL
+-#define ZMQ_IS_TRIVIALLY_COPYABLE(T) __has_trivial_copy(T)
+-#else
+-#include
+-#define ZMQ_IS_TRIVIALLY_COPYABLE(T) std::is_trivially_copyable::value
+-#endif
+-#endif
+-
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(3, 3, 0)
+-#define ZMQ_NEW_MONITOR_EVENT_LAYOUT
+-#endif
+-
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 1, 0)
+-#define ZMQ_HAS_PROXY_STEERABLE
+-/* Socket event data */
+-typedef struct
+-{
+- uint16_t event; // id of the event as bitfield
+- int32_t value; // value is either error code, fd or reconnect interval
+-} zmq_event_t;
+-#endif
+-
+-// Avoid using deprecated message receive function when possible
+-#if ZMQ_VERSION < ZMQ_MAKE_VERSION(3, 2, 0)
+-#define zmq_msg_recv(msg, socket, flags) zmq_recvmsg(socket, msg, flags)
+-#endif
+-
+-
+-// In order to prevent unused variable warnings when building in non-debug
+-// mode use this macro to make assertions.
+-#ifndef NDEBUG
+-#define ZMQ_ASSERT(expression) assert(expression)
+-#else
+-#define ZMQ_ASSERT(expression) (void) (expression)
+-#endif
+-
+-namespace zmq
+-{
+-#ifdef ZMQ_CPP11
+-namespace detail
+-{
+-namespace ranges
+-{
+-using std::begin;
+-using std::end;
+-template auto begin(T &&r) -> decltype(begin(std::forward(r)))
+-{
+- return begin(std::forward(r));
+-}
+-template auto end(T &&r) -> decltype(end(std::forward(r)))
+-{
+- return end(std::forward(r));
+-}
+-} // namespace ranges
+-
+-template using void_t = void;
+-
+-template
+-using iter_value_t = typename std::iterator_traits::value_type;
+-
+-template
+-using range_iter_t = decltype(
+- ranges::begin(std::declval::type &>()));
+-
+-template using range_value_t = iter_value_t>;
+-
+-template struct is_range : std::false_type
+-{
+-};
+-
+-template
+-struct is_range<
+- T,
+- void_t::type &>())
+- == ranges::end(std::declval::type &>()))>>
+- : std::true_type
+-{
+-};
+-
+-} // namespace detail
+-#endif
+-
+-typedef zmq_free_fn free_fn;
+-typedef zmq_pollitem_t pollitem_t;
+-
+-// duplicate definition from libzmq 4.3.3
+-#if defined _WIN32
+-#if defined _WIN64
+-typedef unsigned __int64 fd_t;
+-#else
+-typedef unsigned int fd_t;
+-#endif
+-#else
+-typedef int fd_t;
+-#endif
+-
+-class error_t : public std::exception
+-{
+- public:
+- error_t() ZMQ_NOTHROW : errnum(zmq_errno()) {}
+- explicit error_t(int err) ZMQ_NOTHROW : errnum(err) {}
+- virtual const char *what() const ZMQ_NOTHROW ZMQ_OVERRIDE
+- {
+- return zmq_strerror(errnum);
+- }
+- int num() const ZMQ_NOTHROW { return errnum; }
+-
+- private:
+- int errnum;
+-};
+-
+-inline int poll(zmq_pollitem_t *items_, size_t nitems_, long timeout_ = -1)
+-{
+- int rc = zmq_poll(items_, static_cast(nitems_), timeout_);
+- if (rc < 0)
+- throw error_t();
+- return rc;
+-}
+-
+-ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
+-inline int poll(zmq_pollitem_t const *items_, size_t nitems_, long timeout_ = -1)
+-{
+- return poll(const_cast(items_), nitems_, timeout_);
+-}
+-
+-#ifdef ZMQ_CPP11
+-ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
+-inline int
+-poll(zmq_pollitem_t const *items, size_t nitems, std::chrono::milliseconds timeout)
+-{
+- return poll(const_cast(items), nitems,
+- static_cast(timeout.count()));
+-}
+-
+-ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
+-inline int poll(std::vector const &items,
+- std::chrono::milliseconds timeout)
+-{
+- return poll(const_cast(items.data()), items.size(),
+- static_cast(timeout.count()));
+-}
+-
+-ZMQ_DEPRECATED("from 4.3.1, use poll taking non-const items")
+-inline int poll(std::vector const &items, long timeout_ = -1)
+-{
+- return poll(const_cast(items.data()), items.size(), timeout_);
+-}
+-
+-inline int
+-poll(zmq_pollitem_t *items, size_t nitems, std::chrono::milliseconds timeout)
+-{
+- return poll(items, nitems, static_cast(timeout.count()));
+-}
+-
+-inline int poll(std::vector &items,
+- std::chrono::milliseconds timeout)
+-{
+- return poll(items.data(), items.size(), static_cast(timeout.count()));
+-}
+-
+-ZMQ_DEPRECATED("from 4.3.1, use poll taking std::chrono instead of long")
+-inline int poll(std::vector &items, long timeout_ = -1)
+-{
+- return poll(items.data(), items.size(), timeout_);
+-}
+-
+-template
+-inline int poll(std::array &items,
+- std::chrono::milliseconds timeout)
+-{
+- return poll(items.data(), items.size(), static_cast(timeout.count()));
+-}
+-#endif
+-
+-
+-inline void version(int *major_, int *minor_, int *patch_)
+-{
+- zmq_version(major_, minor_, patch_);
+-}
+-
+-#ifdef ZMQ_CPP11
+-inline std::tuple version()
+-{
+- std::tuple v;
+- zmq_version(&std::get<0>(v), &std::get<1>(v), &std::get<2>(v));
+- return v;
+-}
+-
+-#if !defined(ZMQ_CPP11_PARTIAL)
+-namespace detail
+-{
+-template struct is_char_type
+-{
+- // true if character type for string literals in C++11
+- static constexpr bool value =
+- std::is_same::value || std::is_same::value
+- || std::is_same::value || std::is_same::value;
+-};
+-}
+-#endif
+-
+-#endif
+-
+-class message_t
+-{
+- public:
+- message_t() ZMQ_NOTHROW
+- {
+- int rc = zmq_msg_init(&msg);
+- ZMQ_ASSERT(rc == 0);
+- }
+-
+- explicit message_t(size_t size_)
+- {
+- int rc = zmq_msg_init_size(&msg, size_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- template message_t(ForwardIter first, ForwardIter last)
+- {
+- typedef typename std::iterator_traits::value_type value_t;
+-
+- assert(std::distance(first, last) >= 0);
+- size_t const size_ =
+- static_cast(std::distance(first, last)) * sizeof(value_t);
+- int const rc = zmq_msg_init_size(&msg, size_);
+- if (rc != 0)
+- throw error_t();
+- std::copy(first, last, data());
+- }
+-
+- message_t(const void *data_, size_t size_)
+- {
+- int rc = zmq_msg_init_size(&msg, size_);
+- if (rc != 0)
+- throw error_t();
+- if (size_) {
+- // this constructor allows (nullptr, 0),
+- // memcpy with a null pointer is UB
+- memcpy(data(), data_, size_);
+- }
+- }
+-
+- message_t(void *data_, size_t size_, free_fn *ffn_, void *hint_ = ZMQ_NULLPTR)
+- {
+- int rc = zmq_msg_init_data(&msg, data_, size_, ffn_, hint_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- // overload set of string-like types and generic containers
+-#if defined(ZMQ_CPP11) && !defined(ZMQ_CPP11_PARTIAL)
+- // NOTE this constructor will include the null terminator
+- // when called with a string literal.
+- // An overload taking const char* can not be added because
+- // it would be preferred over this function and break compatiblity.
+- template<
+- class Char,
+- size_t N,
+- typename = typename std::enable_if::value>::type>
+- ZMQ_DEPRECATED("from 4.7.0, use constructors taking iterators, (pointer, size) "
+- "or strings instead")
+- explicit message_t(const Char (&data)[N]) :
+- message_t(detail::ranges::begin(data), detail::ranges::end(data))
+- {
+- }
+-
+- template::value
+- && ZMQ_IS_TRIVIALLY_COPYABLE(detail::range_value_t)
+- && !detail::is_char_type>::value
+- && !std::is_same::value>::type>
+- explicit message_t(const Range &rng) :
+- message_t(detail::ranges::begin(rng), detail::ranges::end(rng))
+- {
+- }
+-
+- explicit message_t(const std::string &str) : message_t(str.data(), str.size()) {}
+-
+-#if CPPZMQ_HAS_STRING_VIEW
+- explicit message_t(std::string_view str) : message_t(str.data(), str.size()) {}
+-#endif
+-
+-#endif
+-
+-#ifdef ZMQ_HAS_RVALUE_REFS
+- message_t(message_t &&rhs) ZMQ_NOTHROW : msg(rhs.msg)
+- {
+- int rc = zmq_msg_init(&rhs.msg);
+- ZMQ_ASSERT(rc == 0);
+- }
+-
+- message_t &operator=(message_t &&rhs) ZMQ_NOTHROW
+- {
+- std::swap(msg, rhs.msg);
+- return *this;
+- }
+-#endif
+-
+- ~message_t() ZMQ_NOTHROW
+- {
+- int rc = zmq_msg_close(&msg);
+- ZMQ_ASSERT(rc == 0);
+- }
+-
+- void rebuild()
+- {
+- int rc = zmq_msg_close(&msg);
+- if (rc != 0)
+- throw error_t();
+- rc = zmq_msg_init(&msg);
+- ZMQ_ASSERT(rc == 0);
+- }
+-
+- void rebuild(size_t size_)
+- {
+- int rc = zmq_msg_close(&msg);
+- if (rc != 0)
+- throw error_t();
+- rc = zmq_msg_init_size(&msg, size_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void rebuild(const void *data_, size_t size_)
+- {
+- int rc = zmq_msg_close(&msg);
+- if (rc != 0)
+- throw error_t();
+- rc = zmq_msg_init_size(&msg, size_);
+- if (rc != 0)
+- throw error_t();
+- memcpy(data(), data_, size_);
+- }
+-
+- void rebuild(void *data_, size_t size_, free_fn *ffn_, void *hint_ = ZMQ_NULLPTR)
+- {
+- int rc = zmq_msg_close(&msg);
+- if (rc != 0)
+- throw error_t();
+- rc = zmq_msg_init_data(&msg, data_, size_, ffn_, hint_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- ZMQ_DEPRECATED("from 4.3.1, use move taking non-const reference instead")
+- void move(message_t const *msg_)
+- {
+- int rc = zmq_msg_move(&msg, const_cast(msg_->handle()));
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void move(message_t &msg_)
+- {
+- int rc = zmq_msg_move(&msg, msg_.handle());
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- ZMQ_DEPRECATED("from 4.3.1, use copy taking non-const reference instead")
+- void copy(message_t const *msg_)
+- {
+- int rc = zmq_msg_copy(&msg, const_cast(msg_->handle()));
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void copy(message_t &msg_)
+- {
+- int rc = zmq_msg_copy(&msg, msg_.handle());
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- bool more() const ZMQ_NOTHROW
+- {
+- int rc = zmq_msg_more(const_cast(&msg));
+- return rc != 0;
+- }
+-
+- void *data() ZMQ_NOTHROW { return zmq_msg_data(&msg); }
+-
+- const void *data() const ZMQ_NOTHROW
+- {
+- return zmq_msg_data(const_cast(&msg));
+- }
+-
+- size_t size() const ZMQ_NOTHROW
+- {
+- return zmq_msg_size(const_cast(&msg));
+- }
+-
+- ZMQ_NODISCARD bool empty() const ZMQ_NOTHROW { return size() == 0u; }
+-
+- template T *data() ZMQ_NOTHROW { return static_cast(data()); }
+-
+- template T const *data() const ZMQ_NOTHROW
+- {
+- return static_cast(data());
+- }
+-
+- ZMQ_DEPRECATED("from 4.3.0, use operator== instead")
+- bool equal(const message_t *other) const ZMQ_NOTHROW { return *this == *other; }
+-
+- bool operator==(const message_t &other) const ZMQ_NOTHROW
+- {
+- const size_t my_size = size();
+- return my_size == other.size() && 0 == memcmp(data(), other.data(), my_size);
+- }
+-
+- bool operator!=(const message_t &other) const ZMQ_NOTHROW
+- {
+- return !(*this == other);
+- }
+-
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(3, 2, 0)
+- int get(int property_)
+- {
+- int value = zmq_msg_get(&msg, property_);
+- if (value == -1)
+- throw error_t();
+- return value;
+- }
+-#endif
+-
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 1, 0)
+- const char *gets(const char *property_)
+- {
+- const char *value = zmq_msg_gets(&msg, property_);
+- if (value == ZMQ_NULLPTR)
+- throw error_t();
+- return value;
+- }
+-#endif
+-
+-#if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 0)
+- uint32_t routing_id() const
+- {
+- return zmq_msg_routing_id(const_cast(&msg));
+- }
+-
+- void set_routing_id(uint32_t routing_id)
+- {
+- int rc = zmq_msg_set_routing_id(&msg, routing_id);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- const char *group() const
+- {
+- return zmq_msg_group(const_cast(&msg));
+- }
+-
+- void set_group(const char *group)
+- {
+- int rc = zmq_msg_set_group(&msg, group);
+- if (rc != 0)
+- throw error_t();
+- }
+-#endif
+-
+- // interpret message content as a string
+- std::string to_string() const
+- {
+- return std::string(static_cast(data()), size());
+- }
+-#if CPPZMQ_HAS_STRING_VIEW
+- // interpret message content as a string
+- std::string_view to_string_view() const noexcept
+- {
+- return std::string_view(static_cast(data()), size());
+- }
+-#endif
+-
+- /** Dump content to string for debugging.
+- * Ascii chars are readable, the rest is printed as hex.
+- * Probably ridiculously slow.
+- * Use to_string() or to_string_view() for
+- * interpreting the message as a string.
+- */
+- std::string str() const
+- {
+- // Partly mutuated from the same method in zmq::multipart_t
+- std::stringstream os;
+-
+- const unsigned char *msg_data = this->data();
+- unsigned char byte;
+- size_t size = this->size();
+- int is_ascii[2] = {0, 0};
+-
+- os << "zmq::message_t [size " << std::dec << std::setw(3)
+- << std::setfill('0') << size << "] (";
+- // Totally arbitrary
+- if (size >= 1000) {
+- os << "... too big to print)";
+- } else {
+- while (size--) {
+- byte = *msg_data++;
+-
+- is_ascii[1] = (byte >= 32 && byte < 127);
+- if (is_ascii[1] != is_ascii[0])
+- os << " "; // Separate text/non text
+-
+- if (is_ascii[1]) {
+- os << byte;
+- } else {
+- os << std::hex << std::uppercase << std::setw(2)
+- << std::setfill('0') << static_cast(byte);
+- }
+- is_ascii[0] = is_ascii[1];
+- }
+- os << ")";
+- }
+- return os.str();
+- }
+-
+- void swap(message_t &other) ZMQ_NOTHROW
+- {
+- // this assumes zmq::msg_t from libzmq is trivially relocatable
+- std::swap(msg, other.msg);
+- }
+-
+- ZMQ_NODISCARD zmq_msg_t *handle() ZMQ_NOTHROW { return &msg; }
+- ZMQ_NODISCARD const zmq_msg_t *handle() const ZMQ_NOTHROW { return &msg; }
+-
+- private:
+- // The underlying message
+- zmq_msg_t msg;
+-
+- // Disable implicit message copying, so that users won't use shared
+- // messages (less efficient) without being aware of the fact.
+- message_t(const message_t &) ZMQ_DELETED_FUNCTION;
+- void operator=(const message_t &) ZMQ_DELETED_FUNCTION;
+-};
+-
+-inline void swap(message_t &a, message_t &b) ZMQ_NOTHROW
+-{
+- a.swap(b);
+-}
+-
+-#ifdef ZMQ_CPP11
+-enum class ctxopt
+-{
+-#ifdef ZMQ_BLOCKY
+- blocky = ZMQ_BLOCKY,
+-#endif
+-#ifdef ZMQ_IO_THREADS
+- io_threads = ZMQ_IO_THREADS,
+-#endif
+-#ifdef ZMQ_THREAD_SCHED_POLICY
+- thread_sched_policy = ZMQ_THREAD_SCHED_POLICY,
+-#endif
+-#ifdef ZMQ_THREAD_PRIORITY
+- thread_priority = ZMQ_THREAD_PRIORITY,
+-#endif
+-#ifdef ZMQ_THREAD_AFFINITY_CPU_ADD
+- thread_affinity_cpu_add = ZMQ_THREAD_AFFINITY_CPU_ADD,
+-#endif
+-#ifdef ZMQ_THREAD_AFFINITY_CPU_REMOVE
+- thread_affinity_cpu_remove = ZMQ_THREAD_AFFINITY_CPU_REMOVE,
+-#endif
+-#ifdef ZMQ_THREAD_NAME_PREFIX
+- thread_name_prefix = ZMQ_THREAD_NAME_PREFIX,
+-#endif
+-#ifdef ZMQ_MAX_MSGSZ
+- max_msgsz = ZMQ_MAX_MSGSZ,
+-#endif
+-#ifdef ZMQ_ZERO_COPY_RECV
+- zero_copy_recv = ZMQ_ZERO_COPY_RECV,
+-#endif
+-#ifdef ZMQ_MAX_SOCKETS
+- max_sockets = ZMQ_MAX_SOCKETS,
+-#endif
+-#ifdef ZMQ_SOCKET_LIMIT
+- socket_limit = ZMQ_SOCKET_LIMIT,
+-#endif
+-#ifdef ZMQ_IPV6
+- ipv6 = ZMQ_IPV6,
+-#endif
+-#ifdef ZMQ_MSG_T_SIZE
+- msg_t_size = ZMQ_MSG_T_SIZE
+-#endif
+-};
+-#endif
+-
+-class context_t
+-{
+- public:
+- context_t()
+- {
+- ptr = zmq_ctx_new();
+- if (ptr == ZMQ_NULLPTR)
+- throw error_t();
+- }
+-
+-
+- explicit context_t(int io_threads_, int max_sockets_ = ZMQ_MAX_SOCKETS_DFLT)
+- {
+- ptr = zmq_ctx_new();
+- if (ptr == ZMQ_NULLPTR)
+- throw error_t();
+-
+- int rc = zmq_ctx_set(ptr, ZMQ_IO_THREADS, io_threads_);
+- ZMQ_ASSERT(rc == 0);
+-
+- rc = zmq_ctx_set(ptr, ZMQ_MAX_SOCKETS, max_sockets_);
+- ZMQ_ASSERT(rc == 0);
+- }
+-
+-#ifdef ZMQ_HAS_RVALUE_REFS
+- context_t(context_t &&rhs) ZMQ_NOTHROW : ptr(rhs.ptr) { rhs.ptr = ZMQ_NULLPTR; }
+- context_t &operator=(context_t &&rhs) ZMQ_NOTHROW
+- {
+- close();
+- std::swap(ptr, rhs.ptr);
+- return *this;
+- }
+-#endif
+-
+- ~context_t() ZMQ_NOTHROW { close(); }
+-
+- ZMQ_CPP11_DEPRECATED("from 4.7.0, use set taking zmq::ctxopt instead")
+- int setctxopt(int option_, int optval_)
+- {
+- int rc = zmq_ctx_set(ptr, option_, optval_);
+- ZMQ_ASSERT(rc == 0);
+- return rc;
+- }
+-
+- ZMQ_CPP11_DEPRECATED("from 4.7.0, use get taking zmq::ctxopt instead")
+- int getctxopt(int option_) { return zmq_ctx_get(ptr, option_); }
+-
+-#ifdef ZMQ_CPP11
+- void set(ctxopt option, int optval)
+- {
+- int rc = zmq_ctx_set(ptr, static_cast(option), optval);
+- if (rc == -1)
+- throw error_t();
+- }
+-
+- ZMQ_NODISCARD int get(ctxopt option)
+- {
+- int rc = zmq_ctx_get(ptr, static_cast(option));
+- // some options have a default value of -1
+- // which is unfortunate, and may result in errors
+- // that don't make sense
+- if (rc == -1)
+- throw error_t();
+- return rc;
+- }
+-#endif
+-
+- // Terminates context (see also shutdown()).
+- void close() ZMQ_NOTHROW
+- {
+- if (ptr == ZMQ_NULLPTR)
+- return;
+-
+- int rc;
+- do {
+- rc = zmq_ctx_destroy(ptr);
+- } while (rc == -1 && errno == EINTR);
+-
+- ZMQ_ASSERT(rc == 0);
+- ptr = ZMQ_NULLPTR;
+- }
+-
+- // Shutdown context in preparation for termination (close()).
+- // Causes all blocking socket operations and any further
+- // socket operations to return with ETERM.
+- void shutdown() ZMQ_NOTHROW
+- {
+- if (ptr == ZMQ_NULLPTR)
+- return;
+- int rc = zmq_ctx_shutdown(ptr);
+- ZMQ_ASSERT(rc == 0);
+- }
+-
+- // Be careful with this, it's probably only useful for
+- // using the C api together with an existing C++ api.
+- // Normally you should never need to use this.
+- ZMQ_EXPLICIT operator void *() ZMQ_NOTHROW { return ptr; }
+-
+- ZMQ_EXPLICIT operator void const *() const ZMQ_NOTHROW { return ptr; }
+-
+- ZMQ_NODISCARD void *handle() ZMQ_NOTHROW { return ptr; }
+-
+- ZMQ_DEPRECATED("from 4.7.0, use handle() != nullptr instead")
+- operator bool() const ZMQ_NOTHROW { return ptr != ZMQ_NULLPTR; }
+-
+- void swap(context_t &other) ZMQ_NOTHROW { std::swap(ptr, other.ptr); }
+-
+- private:
+- void *ptr;
+-
+- context_t(const context_t &) ZMQ_DELETED_FUNCTION;
+- void operator=(const context_t &) ZMQ_DELETED_FUNCTION;
+-};
+-
+-inline void swap(context_t &a, context_t &b) ZMQ_NOTHROW
+-{
+- a.swap(b);
+-}
+-
+-#ifdef ZMQ_CPP11
+-
+-struct recv_buffer_size
+-{
+- size_t size; // number of bytes written to buffer
+- size_t untruncated_size; // untruncated message size in bytes
+-
+- ZMQ_NODISCARD bool truncated() const noexcept
+- {
+- return size != untruncated_size;
+- }
+-};
+-
+-#if CPPZMQ_HAS_OPTIONAL
+-
+-using send_result_t = std::optional;
+-using recv_result_t = std::optional;
+-using recv_buffer_result_t = std::optional;
+-
+-#else
+-
+-namespace detail
+-{
+-// A C++11 type emulating the most basic
+-// operations of std::optional for trivial types
+-template class trivial_optional
+-{
+- public:
+- static_assert(std::is_trivial::value, "T must be trivial");
+- using value_type = T;
+-
+- trivial_optional() = default;
+- trivial_optional(T value) noexcept : _value(value), _has_value(true) {}
+-
+- const T *operator->() const noexcept
+- {
+- assert(_has_value);
+- return &_value;
+- }
+- T *operator->() noexcept
+- {
+- assert(_has_value);
+- return &_value;
+- }
+-
+- const T &operator*() const noexcept
+- {
+- assert(_has_value);
+- return _value;
+- }
+- T &operator*() noexcept
+- {
+- assert(_has_value);
+- return _value;
+- }
+-
+- T &value()
+- {
+- if (!_has_value)
+- throw std::exception();
+- return _value;
+- }
+- const T &value() const
+- {
+- if (!_has_value)
+- throw std::exception();
+- return _value;
+- }
+-
+- explicit operator bool() const noexcept { return _has_value; }
+- bool has_value() const noexcept { return _has_value; }
+-
+- private:
+- T _value{};
+- bool _has_value{false};
+-};
+-} // namespace detail
+-
+-using send_result_t = detail::trivial_optional;
+-using recv_result_t = detail::trivial_optional;
+-using recv_buffer_result_t = detail::trivial_optional;
+-
+-#endif
+-
+-namespace detail
+-{
+-template constexpr T enum_bit_or(T a, T b) noexcept
+-{
+- static_assert(std::is_enum::value, "must be enum");
+- using U = typename std::underlying_type::type;
+- return static_cast(static_cast(a) | static_cast(b));
+-}
+-template constexpr T enum_bit_and(T a, T b) noexcept
+-{
+- static_assert(std::is_enum::value, "must be enum");
+- using U = typename std::underlying_type::type;
+- return static_cast(static_cast(a) & static_cast(b));
+-}
+-template constexpr T enum_bit_xor(T a, T b) noexcept
+-{
+- static_assert(std::is_enum::value, "must be enum");
+- using U = typename std::underlying_type::type;
+- return static_cast(static_cast(a) ^ static_cast(b));
+-}
+-template constexpr T enum_bit_not(T a) noexcept
+-{
+- static_assert(std::is_enum::value, "must be enum");
+- using U = typename std::underlying_type::type;
+- return static_cast(~static_cast(a));
+-}
+-} // namespace detail
+-
+-// partially satisfies named requirement BitmaskType
+-enum class send_flags : int
+-{
+- none = 0,
+- dontwait = ZMQ_DONTWAIT,
+- sndmore = ZMQ_SNDMORE
+-};
+-
+-constexpr send_flags operator|(send_flags a, send_flags b) noexcept
+-{
+- return detail::enum_bit_or(a, b);
+-}
+-constexpr send_flags operator&(send_flags a, send_flags b) noexcept
+-{
+- return detail::enum_bit_and(a, b);
+-}
+-constexpr send_flags operator^(send_flags a, send_flags b) noexcept
+-{
+- return detail::enum_bit_xor(a, b);
+-}
+-constexpr send_flags operator~(send_flags a) noexcept
+-{
+- return detail::enum_bit_not(a);
+-}
+-
+-// partially satisfies named requirement BitmaskType
+-enum class recv_flags : int
+-{
+- none = 0,
+- dontwait = ZMQ_DONTWAIT
+-};
+-
+-constexpr recv_flags operator|(recv_flags a, recv_flags b) noexcept
+-{
+- return detail::enum_bit_or(a, b);
+-}
+-constexpr recv_flags operator&(recv_flags a, recv_flags b) noexcept
+-{
+- return detail::enum_bit_and(a, b);
+-}
+-constexpr recv_flags operator^(recv_flags a, recv_flags b) noexcept
+-{
+- return detail::enum_bit_xor(a, b);
+-}
+-constexpr recv_flags operator~(recv_flags a) noexcept
+-{
+- return detail::enum_bit_not(a);
+-}
+-
+-
+-// mutable_buffer, const_buffer and buffer are based on
+-// the Networking TS specification, draft:
+-// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4771.pdf
+-
+-class mutable_buffer
+-{
+- public:
+- constexpr mutable_buffer() noexcept : _data(nullptr), _size(0) {}
+- constexpr mutable_buffer(void *p, size_t n) noexcept : _data(p), _size(n)
+- {
+-#ifdef ZMQ_EXTENDED_CONSTEXPR
+- assert(p != nullptr || n == 0);
+-#endif
+- }
+-
+- constexpr void *data() const noexcept { return _data; }
+- constexpr size_t size() const noexcept { return _size; }
+- mutable_buffer &operator+=(size_t n) noexcept
+- {
+- // (std::min) is a workaround for when a min macro is defined
+- const auto shift = (std::min)(n, _size);
+- _data = static_cast(_data) + shift;
+- _size -= shift;
+- return *this;
+- }
+-
+- private:
+- void *_data;
+- size_t _size;
+-};
+-
+-inline mutable_buffer operator+(const mutable_buffer &mb, size_t n) noexcept
+-{
+- return mutable_buffer(static_cast(mb.data()) + (std::min)(n, mb.size()),
+- mb.size() - (std::min)(n, mb.size()));
+-}
+-inline mutable_buffer operator+(size_t n, const mutable_buffer &mb) noexcept
+-{
+- return mb + n;
+-}
+-
+-class const_buffer
+-{
+- public:
+- constexpr const_buffer() noexcept : _data(nullptr), _size(0) {}
+- constexpr const_buffer(const void *p, size_t n) noexcept : _data(p), _size(n)
+- {
+-#ifdef ZMQ_EXTENDED_CONSTEXPR
+- assert(p != nullptr || n == 0);
+-#endif
+- }
+- constexpr const_buffer(const mutable_buffer &mb) noexcept :
+- _data(mb.data()), _size(mb.size())
+- {
+- }
+-
+- constexpr const void *data() const noexcept { return _data; }
+- constexpr size_t size() const noexcept { return _size; }
+- const_buffer &operator+=(size_t n) noexcept
+- {
+- const auto shift = (std::min)(n, _size);
+- _data = static_cast(_data) + shift;
+- _size -= shift;
+- return *this;
+- }
+-
+- private:
+- const void *_data;
+- size_t _size;
+-};
+-
+-inline const_buffer operator+(const const_buffer &cb, size_t n) noexcept
+-{
+- return const_buffer(static_cast(cb.data())
+- + (std::min)(n, cb.size()),
+- cb.size() - (std::min)(n, cb.size()));
+-}
+-inline const_buffer operator+(size_t n, const const_buffer &cb) noexcept
+-{
+- return cb + n;
+-}
+-
+-// buffer creation
+-
+-constexpr mutable_buffer buffer(void *p, size_t n) noexcept
+-{
+- return mutable_buffer(p, n);
+-}
+-constexpr const_buffer buffer(const void *p, size_t n) noexcept
+-{
+- return const_buffer(p, n);
+-}
+-constexpr mutable_buffer buffer(const mutable_buffer &mb) noexcept
+-{
+- return mb;
+-}
+-inline mutable_buffer buffer(const mutable_buffer &mb, size_t n) noexcept
+-{
+- return mutable_buffer(mb.data(), (std::min)(mb.size(), n));
+-}
+-constexpr const_buffer buffer(const const_buffer &cb) noexcept
+-{
+- return cb;
+-}
+-inline const_buffer buffer(const const_buffer &cb, size_t n) noexcept
+-{
+- return const_buffer(cb.data(), (std::min)(cb.size(), n));
+-}
+-
+-namespace detail
+-{
+-template struct is_buffer
+-{
+- static constexpr bool value =
+- std::is_same::value || std::is_same::value;
+-};
+-
+-template struct is_pod_like
+-{
+- // NOTE: The networking draft N4771 section 16.11 requires
+- // T in the buffer functions below to be
+- // trivially copyable OR standard layout.
+- // Here we decide to be conservative and require both.
+- static constexpr bool value =
+- ZMQ_IS_TRIVIALLY_COPYABLE(T) && std::is_standard_layout::value;
+-};
+-
+-template constexpr auto seq_size(const C &c) noexcept -> decltype(c.size())
+-{
+- return c.size();
+-}
+-template
+-constexpr size_t seq_size(const T (&/*array*/)[N]) noexcept
+-{
+- return N;
+-}
+-
+-template
+-auto buffer_contiguous_sequence(Seq &&seq) noexcept
+- -> decltype(buffer(std::addressof(*std::begin(seq)), size_t{}))
+-{
+- using T = typename std::remove_cv<
+- typename std::remove_reference::type>::type;
+- static_assert(detail::is_pod_like::value, "T must be POD");
+-
+- const auto size = seq_size(seq);
+- return buffer(size != 0u ? std::addressof(*std::begin(seq)) : nullptr,
+- size * sizeof(T));
+-}
+-template
+-auto buffer_contiguous_sequence(Seq &&seq, size_t n_bytes) noexcept
+- -> decltype(buffer_contiguous_sequence(seq))
+-{
+- using T = typename std::remove_cv<
+- typename std::remove_reference::type>::type;
+- static_assert(detail::is_pod_like::value, "T must be POD");
+-
+- const auto size = seq_size(seq);
+- return buffer(size != 0u ? std::addressof(*std::begin(seq)) : nullptr,
+- (std::min)(size * sizeof(T), n_bytes));
+-}
+-
+-} // namespace detail
+-
+-// C array
+-template mutable_buffer buffer(T (&data)[N]) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-mutable_buffer buffer(T (&data)[N], size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-template const_buffer buffer(const T (&data)[N]) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-const_buffer buffer(const T (&data)[N], size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-// std::array
+-template mutable_buffer buffer(std::array &data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-mutable_buffer buffer(std::array &data, size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-template
+-const_buffer buffer(std::array &data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-const_buffer buffer(std::array &data, size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-template
+-const_buffer buffer(const std::array &data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-const_buffer buffer(const std::array &data, size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-// std::vector
+-template
+-mutable_buffer buffer(std::vector &data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-mutable_buffer buffer(std::vector &data, size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-template
+-const_buffer buffer(const std::vector &data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-const_buffer buffer(const std::vector &data, size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-// std::basic_string
+-template
+-mutable_buffer buffer(std::basic_string &data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-mutable_buffer buffer(std::basic_string &data,
+- size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-template
+-const_buffer buffer(const std::basic_string &data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-const_buffer buffer(const std::basic_string &data,
+- size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-
+-#if CPPZMQ_HAS_STRING_VIEW
+-// std::basic_string_view
+-template
+-const_buffer buffer(std::basic_string_view data) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data);
+-}
+-template
+-const_buffer buffer(std::basic_string_view data, size_t n_bytes) noexcept
+-{
+- return detail::buffer_contiguous_sequence(data, n_bytes);
+-}
+-#endif
+-
+-// Buffer for a string literal (null terminated)
+-// where the buffer size excludes the terminating character.
+-// Equivalent to zmq::buffer(std::string_view("...")).
+-template
+-constexpr const_buffer str_buffer(const Char (&data)[N]) noexcept
+-{
+- static_assert(detail::is_pod_like::value, "Char must be POD");
+-#ifdef ZMQ_EXTENDED_CONSTEXPR
+- assert(data[N - 1] == Char{0});
+-#endif
+- return const_buffer(static_cast(data), (N - 1) * sizeof(Char));
+-}
+-
+-namespace literals
+-{
+-constexpr const_buffer operator"" _zbuf(const char *str, size_t len) noexcept
+-{
+- return const_buffer(str, len * sizeof(char));
+-}
+-constexpr const_buffer operator"" _zbuf(const wchar_t *str, size_t len) noexcept
+-{
+- return const_buffer(str, len * sizeof(wchar_t));
+-}
+-constexpr const_buffer operator"" _zbuf(const char16_t *str, size_t len) noexcept
+-{
+- return const_buffer(str, len * sizeof(char16_t));
+-}
+-constexpr const_buffer operator"" _zbuf(const char32_t *str, size_t len) noexcept
+-{
+- return const_buffer(str, len * sizeof(char32_t));
+-}
+-}
+-
+-namespace sockopt
+-{
+-// There are two types of options,
+-// integral type with known compiler time size (int, bool, int64_t, uint64_t)
+-// and arrays with dynamic size (strings, binary data).
+-
+-// BoolUnit: if true accepts values of type bool (but passed as T into libzmq)
+-template struct integral_option
+-{
+-};
+-
+-// NullTerm:
+-// 0: binary data
+-// 1: null-terminated string (`getsockopt` size includes null)
+-// 2: binary (size 32) or Z85 encoder string of size 41 (null included)
+-template struct array_option
+-{
+-};
+-
+-#define ZMQ_DEFINE_INTEGRAL_OPT(OPT, NAME, TYPE) \
+- using NAME##_t = integral_option; \
+- ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
+-#define ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(OPT, NAME, TYPE) \
+- using NAME##_t = integral_option; \
+- ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
+-#define ZMQ_DEFINE_ARRAY_OPT(OPT, NAME) \
+- using NAME##_t = array_option; \
+- ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
+-#define ZMQ_DEFINE_ARRAY_OPT_BINARY(OPT, NAME) \
+- using NAME##_t = array_option; \
+- ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
+-#define ZMQ_DEFINE_ARRAY_OPT_BIN_OR_Z85(OPT, NAME) \
+- using NAME##_t = array_option; \
+- ZMQ_INLINE_VAR ZMQ_CONSTEXPR_VAR NAME##_t NAME {}
+-
+-// deprecated, use zmq::fd_t
+-using cppzmq_fd_t = ::zmq::fd_t;
+-
+-#ifdef ZMQ_AFFINITY
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_AFFINITY, affinity, uint64_t);
+-#endif
+-#ifdef ZMQ_BACKLOG
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_BACKLOG, backlog, int);
+-#endif
+-#ifdef ZMQ_BINDTODEVICE
+-ZMQ_DEFINE_ARRAY_OPT_BINARY(ZMQ_BINDTODEVICE, bindtodevice);
+-#endif
+-#ifdef ZMQ_CONFLATE
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_CONFLATE, conflate, int);
+-#endif
+-#ifdef ZMQ_CONNECT_ROUTING_ID
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_CONNECT_ROUTING_ID, connect_routing_id);
+-#endif
+-#ifdef ZMQ_CONNECT_TIMEOUT
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_CONNECT_TIMEOUT, connect_timeout, int);
+-#endif
+-#ifdef ZMQ_CURVE_PUBLICKEY
+-ZMQ_DEFINE_ARRAY_OPT_BIN_OR_Z85(ZMQ_CURVE_PUBLICKEY, curve_publickey);
+-#endif
+-#ifdef ZMQ_CURVE_SECRETKEY
+-ZMQ_DEFINE_ARRAY_OPT_BIN_OR_Z85(ZMQ_CURVE_SECRETKEY, curve_secretkey);
+-#endif
+-#ifdef ZMQ_CURVE_SERVER
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_CURVE_SERVER, curve_server, int);
+-#endif
+-#ifdef ZMQ_CURVE_SERVERKEY
+-ZMQ_DEFINE_ARRAY_OPT_BIN_OR_Z85(ZMQ_CURVE_SERVERKEY, curve_serverkey);
+-#endif
+-#ifdef ZMQ_EVENTS
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_EVENTS, events, int);
+-#endif
+-#ifdef ZMQ_FD
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_FD, fd, ::zmq::fd_t);
+-#endif
+-#ifdef ZMQ_GSSAPI_PLAINTEXT
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_GSSAPI_PLAINTEXT, gssapi_plaintext, int);
+-#endif
+-#ifdef ZMQ_GSSAPI_SERVER
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_GSSAPI_SERVER, gssapi_server, int);
+-#endif
+-#ifdef ZMQ_GSSAPI_SERVICE_PRINCIPAL
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_GSSAPI_SERVICE_PRINCIPAL, gssapi_service_principal);
+-#endif
+-#ifdef ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_GSSAPI_SERVICE_PRINCIPAL_NAMETYPE,
+- gssapi_service_principal_nametype,
+- int);
+-#endif
+-#ifdef ZMQ_GSSAPI_PRINCIPAL
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_GSSAPI_PRINCIPAL, gssapi_principal);
+-#endif
+-#ifdef ZMQ_GSSAPI_PRINCIPAL_NAMETYPE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_GSSAPI_PRINCIPAL_NAMETYPE,
+- gssapi_principal_nametype,
+- int);
+-#endif
+-#ifdef ZMQ_HANDSHAKE_IVL
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_HANDSHAKE_IVL, handshake_ivl, int);
+-#endif
+-#ifdef ZMQ_HEARTBEAT_IVL
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_HEARTBEAT_IVL, heartbeat_ivl, int);
+-#endif
+-#ifdef ZMQ_HEARTBEAT_TIMEOUT
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_HEARTBEAT_TIMEOUT, heartbeat_timeout, int);
+-#endif
+-#ifdef ZMQ_HEARTBEAT_TTL
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_HEARTBEAT_TTL, heartbeat_ttl, int);
+-#endif
+-#ifdef ZMQ_IMMEDIATE
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_IMMEDIATE, immediate, int);
+-#endif
+-#ifdef ZMQ_INVERT_MATCHING
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_INVERT_MATCHING, invert_matching, int);
+-#endif
+-#ifdef ZMQ_IPV6
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_IPV6, ipv6, int);
+-#endif
+-#ifdef ZMQ_LAST_ENDPOINT
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_LAST_ENDPOINT, last_endpoint);
+-#endif
+-#ifdef ZMQ_LINGER
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_LINGER, linger, int);
+-#endif
+-#ifdef ZMQ_MAXMSGSIZE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_MAXMSGSIZE, maxmsgsize, int64_t);
+-#endif
+-#ifdef ZMQ_MECHANISM
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_MECHANISM, mechanism, int);
+-#endif
+-#ifdef ZMQ_METADATA
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_METADATA, metadata);
+-#endif
+-#ifdef ZMQ_MULTICAST_HOPS
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_MULTICAST_HOPS, multicast_hops, int);
+-#endif
+-#ifdef ZMQ_MULTICAST_LOOP
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_MULTICAST_LOOP, multicast_loop, int);
+-#endif
+-#ifdef ZMQ_MULTICAST_MAXTPDU
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_MULTICAST_MAXTPDU, multicast_maxtpdu, int);
+-#endif
+-#ifdef ZMQ_PLAIN_SERVER
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_PLAIN_SERVER, plain_server, int);
+-#endif
+-#ifdef ZMQ_PLAIN_PASSWORD
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_PLAIN_PASSWORD, plain_password);
+-#endif
+-#ifdef ZMQ_PLAIN_USERNAME
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_PLAIN_USERNAME, plain_username);
+-#endif
+-#ifdef ZMQ_USE_FD
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_USE_FD, use_fd, int);
+-#endif
+-#ifdef ZMQ_PROBE_ROUTER
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_PROBE_ROUTER, probe_router, int);
+-#endif
+-#ifdef ZMQ_RATE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_RATE, rate, int);
+-#endif
+-#ifdef ZMQ_RCVBUF
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_RCVBUF, rcvbuf, int);
+-#endif
+-#ifdef ZMQ_RCVHWM
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_RCVHWM, rcvhwm, int);
+-#endif
+-#ifdef ZMQ_RCVMORE
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_RCVMORE, rcvmore, int);
+-#endif
+-#ifdef ZMQ_RCVTIMEO
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_RCVTIMEO, rcvtimeo, int);
+-#endif
+-#ifdef ZMQ_RECONNECT_IVL
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_RECONNECT_IVL, reconnect_ivl, int);
+-#endif
+-#ifdef ZMQ_RECONNECT_IVL_MAX
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_RECONNECT_IVL_MAX, reconnect_ivl_max, int);
+-#endif
+-#ifdef ZMQ_RECOVERY_IVL
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_RECOVERY_IVL, recovery_ivl, int);
+-#endif
+-#ifdef ZMQ_REQ_CORRELATE
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_REQ_CORRELATE, req_correlate, int);
+-#endif
+-#ifdef ZMQ_REQ_RELAXED
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_REQ_RELAXED, req_relaxed, int);
+-#endif
+-#ifdef ZMQ_ROUTER_HANDOVER
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_ROUTER_HANDOVER, router_handover, int);
+-#endif
+-#ifdef ZMQ_ROUTER_MANDATORY
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_ROUTER_MANDATORY, router_mandatory, int);
+-#endif
+-#ifdef ZMQ_ROUTER_NOTIFY
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_ROUTER_NOTIFY, router_notify, int);
+-#endif
+-#ifdef ZMQ_ROUTING_ID
+-ZMQ_DEFINE_ARRAY_OPT_BINARY(ZMQ_ROUTING_ID, routing_id);
+-#endif
+-#ifdef ZMQ_SNDBUF
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_SNDBUF, sndbuf, int);
+-#endif
+-#ifdef ZMQ_SNDHWM
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_SNDHWM, sndhwm, int);
+-#endif
+-#ifdef ZMQ_SNDTIMEO
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_SNDTIMEO, sndtimeo, int);
+-#endif
+-#ifdef ZMQ_SOCKS_PROXY
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_SOCKS_PROXY, socks_proxy);
+-#endif
+-#ifdef ZMQ_STREAM_NOTIFY
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_STREAM_NOTIFY, stream_notify, int);
+-#endif
+-#ifdef ZMQ_SUBSCRIBE
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_SUBSCRIBE, subscribe);
+-#endif
+-#ifdef ZMQ_TCP_KEEPALIVE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_TCP_KEEPALIVE, tcp_keepalive, int);
+-#endif
+-#ifdef ZMQ_TCP_KEEPALIVE_CNT
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_TCP_KEEPALIVE_CNT, tcp_keepalive_cnt, int);
+-#endif
+-#ifdef ZMQ_TCP_KEEPALIVE_IDLE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_TCP_KEEPALIVE_IDLE, tcp_keepalive_idle, int);
+-#endif
+-#ifdef ZMQ_TCP_KEEPALIVE_INTVL
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_TCP_KEEPALIVE_INTVL, tcp_keepalive_intvl, int);
+-#endif
+-#ifdef ZMQ_TCP_MAXRT
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_TCP_MAXRT, tcp_maxrt, int);
+-#endif
+-#ifdef ZMQ_THREAD_SAFE
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_THREAD_SAFE, thread_safe, int);
+-#endif
+-#ifdef ZMQ_TOS
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_TOS, tos, int);
+-#endif
+-#ifdef ZMQ_TYPE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_TYPE, type, int);
+-#endif
+-#ifdef ZMQ_UNSUBSCRIBE
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_UNSUBSCRIBE, unsubscribe);
+-#endif
+-#ifdef ZMQ_VMCI_BUFFER_SIZE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_VMCI_BUFFER_SIZE, vmci_buffer_size, uint64_t);
+-#endif
+-#ifdef ZMQ_VMCI_BUFFER_MIN_SIZE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_VMCI_BUFFER_MIN_SIZE, vmci_buffer_min_size, uint64_t);
+-#endif
+-#ifdef ZMQ_VMCI_BUFFER_MAX_SIZE
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_VMCI_BUFFER_MAX_SIZE, vmci_buffer_max_size, uint64_t);
+-#endif
+-#ifdef ZMQ_VMCI_CONNECT_TIMEOUT
+-ZMQ_DEFINE_INTEGRAL_OPT(ZMQ_VMCI_CONNECT_TIMEOUT, vmci_connect_timeout, int);
+-#endif
+-#ifdef ZMQ_XPUB_VERBOSE
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_XPUB_VERBOSE, xpub_verbose, int);
+-#endif
+-#ifdef ZMQ_XPUB_VERBOSER
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_XPUB_VERBOSER, xpub_verboser, int);
+-#endif
+-#ifdef ZMQ_XPUB_MANUAL
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_XPUB_MANUAL, xpub_manual, int);
+-#endif
+-#ifdef ZMQ_XPUB_NODROP
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_XPUB_NODROP, xpub_nodrop, int);
+-#endif
+-#ifdef ZMQ_XPUB_WELCOME_MSG
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_XPUB_WELCOME_MSG, xpub_welcome_msg);
+-#endif
+-#ifdef ZMQ_ZAP_ENFORCE_DOMAIN
+-ZMQ_DEFINE_INTEGRAL_BOOL_UNIT_OPT(ZMQ_ZAP_ENFORCE_DOMAIN, zap_enforce_domain, int);
+-#endif
+-#ifdef ZMQ_ZAP_DOMAIN
+-ZMQ_DEFINE_ARRAY_OPT(ZMQ_ZAP_DOMAIN, zap_domain);
+-#endif
+-
+-} // namespace sockopt
+-#endif // ZMQ_CPP11
+-
+-
+-namespace detail
+-{
+-class socket_base
+-{
+- public:
+- socket_base() ZMQ_NOTHROW : _handle(ZMQ_NULLPTR) {}
+- ZMQ_EXPLICIT socket_base(void *handle) ZMQ_NOTHROW : _handle(handle) {}
+-
+- template
+- ZMQ_CPP11_DEPRECATED("from 4.7.0, use `set` taking option from zmq::sockopt")
+- void setsockopt(int option_, T const &optval)
+- {
+- setsockopt(option_, &optval, sizeof(T));
+- }
+-
+- ZMQ_CPP11_DEPRECATED("from 4.7.0, use `set` taking option from zmq::sockopt")
+- void setsockopt(int option_, const void *optval_, size_t optvallen_)
+- {
+- int rc = zmq_setsockopt(_handle, option_, optval_, optvallen_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- ZMQ_CPP11_DEPRECATED("from 4.7.0, use `get` taking option from zmq::sockopt")
+- void getsockopt(int option_, void *optval_, size_t *optvallen_) const
+- {
+- int rc = zmq_getsockopt(_handle, option_, optval_, optvallen_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- template
+- ZMQ_CPP11_DEPRECATED("from 4.7.0, use `get` taking option from zmq::sockopt")
+- T getsockopt(int option_) const
+- {
+- T optval;
+- size_t optlen = sizeof(T);
+- getsockopt(option_, &optval, &optlen);
+- return optval;
+- }
+-
+-#ifdef ZMQ_CPP11
+- // Set integral socket option, e.g.
+- // `socket.set(zmq::sockopt::linger, 0)`
+- template
+- void set(sockopt::integral_option, const T &val)
+- {
+- static_assert(std::is_integral::value, "T must be integral");
+- set_option(Opt, &val, sizeof val);
+- }
+-
+- // Set integral socket option from boolean, e.g.
+- // `socket.set(zmq::sockopt::immediate, false)`
+- template
+- void set(sockopt::integral_option, bool val)
+- {
+- static_assert(std::is_integral::value, "T must be integral");
+- T rep_val = val;
+- set_option(Opt, &rep_val, sizeof rep_val);
+- }
+-
+- // Set array socket option, e.g.
+- // `socket.set(zmq::sockopt::plain_username, "foo123")`
+- template
+- void set(sockopt::array_option, const char *buf)
+- {
+- set_option(Opt, buf, std::strlen(buf));
+- }
+-
+- // Set array socket option, e.g.
+- // `socket.set(zmq::sockopt::routing_id, zmq::buffer(id))`
+- template
+- void set(sockopt::array_option, const_buffer buf)
+- {
+- set_option(Opt, buf.data(), buf.size());
+- }
+-
+- // Set array socket option, e.g.
+- // `socket.set(zmq::sockopt::routing_id, id_str)`
+- template
+- void set(sockopt::array_option, const std::string &buf)
+- {
+- set_option(Opt, buf.data(), buf.size());
+- }
+-
+-#if CPPZMQ_HAS_STRING_VIEW
+- // Set array socket option, e.g.
+- // `socket.set(zmq::sockopt::routing_id, id_str)`
+- template
+- void set(sockopt::array_option, std::string_view buf)
+- {
+- set_option(Opt, buf.data(), buf.size());
+- }
+-#endif
+-
+- // Get scalar socket option, e.g.
+- // `auto opt = socket.get(zmq::sockopt::linger)`
+- template
+- ZMQ_NODISCARD T get(sockopt::integral_option) const
+- {
+- static_assert(std::is_integral::value, "T must be integral");
+- T val;
+- size_t size = sizeof val;
+- get_option(Opt, &val, &size);
+- assert(size == sizeof val);
+- return val;
+- }
+-
+- // Get array socket option, writes to buf, returns option size in bytes, e.g.
+- // `size_t optsize = socket.get(zmq::sockopt::routing_id, zmq::buffer(id))`
+- template
+- ZMQ_NODISCARD size_t get(sockopt::array_option,
+- mutable_buffer buf) const
+- {
+- size_t size = buf.size();
+- get_option(Opt, buf.data(), &size);
+- return size;
+- }
+-
+- // Get array socket option as string (initializes the string buffer size to init_size) e.g.
+- // `auto s = socket.get(zmq::sockopt::routing_id)`
+- // Note: removes the null character from null-terminated string options,
+- // i.e. the string size excludes the null character.
+- template
+- ZMQ_NODISCARD std::string get(sockopt::array_option,
+- size_t init_size = 1024) const
+- {
+- if ZMQ_CONSTEXPR_IF (NullTerm == 2) {
+- if (init_size == 1024) {
+- init_size = 41; // get as Z85 string
+- }
+- }
+- std::string str(init_size, '\0');
+- size_t size = get(sockopt::array_option{}, buffer(str));
+- if ZMQ_CONSTEXPR_IF (NullTerm == 1) {
+- if (size > 0) {
+- assert(str[size - 1] == '\0');
+- --size;
+- }
+- } else if ZMQ_CONSTEXPR_IF (NullTerm == 2) {
+- assert(size == 32 || size == 41);
+- if (size == 41) {
+- assert(str[size - 1] == '\0');
+- --size;
+- }
+- }
+- str.resize(size);
+- return str;
+- }
+-#endif
+-
+- void bind(std::string const &addr) { bind(addr.c_str()); }
+-
+- void bind(const char *addr_)
+- {
+- int rc = zmq_bind(_handle, addr_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void unbind(std::string const &addr) { unbind(addr.c_str()); }
+-
+- void unbind(const char *addr_)
+- {
+- int rc = zmq_unbind(_handle, addr_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void connect(std::string const &addr) { connect(addr.c_str()); }
+-
+- void connect(const char *addr_)
+- {
+- int rc = zmq_connect(_handle, addr_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void disconnect(std::string const &addr) { disconnect(addr.c_str()); }
+-
+- void disconnect(const char *addr_)
+- {
+- int rc = zmq_disconnect(_handle, addr_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- ZMQ_DEPRECATED("from 4.7.1, use handle() != nullptr or operator bool")
+- bool connected() const ZMQ_NOTHROW { return (_handle != ZMQ_NULLPTR); }
+-
+- ZMQ_CPP11_DEPRECATED("from 4.3.1, use send taking a const_buffer and send_flags")
+- size_t send(const void *buf_, size_t len_, int flags_ = 0)
+- {
+- int nbytes = zmq_send(_handle, buf_, len_, flags_);
+- if (nbytes >= 0)
+- return static_cast(nbytes);
+- if (zmq_errno() == EAGAIN)
+- return 0;
+- throw error_t();
+- }
+-
+- ZMQ_CPP11_DEPRECATED("from 4.3.1, use send taking message_t and send_flags")
+- bool send(message_t &msg_,
+- int flags_ = 0) // default until removed
+- {
+- int nbytes = zmq_msg_send(msg_.handle(), _handle, flags_);
+- if (nbytes >= 0)
+- return true;
+- if (zmq_errno() == EAGAIN)
+- return false;
+- throw error_t();
+- }
+-
+- template
+- ZMQ_CPP11_DEPRECATED(
+- "from 4.4.1, use send taking message_t or buffer (for contiguous "
+- "ranges), and send_flags")
+- bool send(T first, T last, int flags_ = 0)
+- {
+- zmq::message_t msg(first, last);
+- int nbytes = zmq_msg_send(msg.handle(), _handle, flags_);
+- if (nbytes >= 0)
+- return true;
+- if (zmq_errno() == EAGAIN)
+- return false;
+- throw error_t();
+- }
+-
+-#ifdef ZMQ_HAS_RVALUE_REFS
+- ZMQ_CPP11_DEPRECATED("from 4.3.1, use send taking message_t and send_flags")
+- bool send(message_t &&msg_,
+- int flags_ = 0) // default until removed
+- {
+-#ifdef ZMQ_CPP11
+- return send(msg_, static_cast(flags_)).has_value();
+-#else
+- return send(msg_, flags_);
+-#endif
+- }
+-#endif
+-
+-#ifdef ZMQ_CPP11
+- send_result_t send(const_buffer buf, send_flags flags = send_flags::none)
+- {
+- const int nbytes =
+- zmq_send(_handle, buf.data(), buf.size(), static_cast(flags));
+- if (nbytes >= 0)
+- return static_cast(nbytes);
+- if (zmq_errno() == EAGAIN)
+- return {};
+- throw error_t();
+- }
+-
+- send_result_t send(message_t &msg, send_flags flags)
+- {
+- int nbytes = zmq_msg_send(msg.handle(), _handle, static_cast(flags));
+- if (nbytes >= 0)
+- return static_cast(nbytes);
+- if (zmq_errno() == EAGAIN)
+- return {};
+- throw error_t();
+- }
+-
+- send_result_t send(message_t &&msg, send_flags flags)
+- {
+- return send(msg, flags);
+- }
+-#endif
+-
+- ZMQ_CPP11_DEPRECATED(
+- "from 4.3.1, use recv taking a mutable_buffer and recv_flags")
+- size_t recv(void *buf_, size_t len_, int flags_ = 0)
+- {
+- int nbytes = zmq_recv(_handle, buf_, len_, flags_);
+- if (nbytes >= 0)
+- return static_cast(nbytes);
+- if (zmq_errno() == EAGAIN)
+- return 0;
+- throw error_t();
+- }
+-
+- ZMQ_CPP11_DEPRECATED(
+- "from 4.3.1, use recv taking a reference to message_t and recv_flags")
+- bool recv(message_t *msg_, int flags_ = 0)
+- {
+- int nbytes = zmq_msg_recv(msg_->handle(), _handle, flags_);
+- if (nbytes >= 0)
+- return true;
+- if (zmq_errno() == EAGAIN)
+- return false;
+- throw error_t();
+- }
+-
+-#ifdef ZMQ_CPP11
+- ZMQ_NODISCARD
+- recv_buffer_result_t recv(mutable_buffer buf,
+- recv_flags flags = recv_flags::none)
+- {
+- const int nbytes =
+- zmq_recv(_handle, buf.data(), buf.size(), static_cast(flags));
+- if (nbytes >= 0) {
+- return recv_buffer_size{
+- (std::min)(static_cast(nbytes), buf.size()),
+- static_cast(nbytes)};
+- }
+- if (zmq_errno() == EAGAIN)
+- return {};
+- throw error_t();
+- }
+-
+- ZMQ_NODISCARD
+- recv_result_t recv(message_t &msg, recv_flags flags = recv_flags::none)
+- {
+- const int nbytes =
+- zmq_msg_recv(msg.handle(), _handle, static_cast(flags));
+- if (nbytes >= 0) {
+- assert(msg.size() == static_cast(nbytes));
+- return static_cast(nbytes);
+- }
+- if (zmq_errno() == EAGAIN)
+- return {};
+- throw error_t();
+- }
+-#endif
+-
+-#if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 0)
+- void join(const char *group)
+- {
+- int rc = zmq_join(_handle, group);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void leave(const char *group)
+- {
+- int rc = zmq_leave(_handle, group);
+- if (rc != 0)
+- throw error_t();
+- }
+-#endif
+-
+- ZMQ_NODISCARD void *handle() ZMQ_NOTHROW { return _handle; }
+- ZMQ_NODISCARD const void *handle() const ZMQ_NOTHROW { return _handle; }
+-
+- ZMQ_EXPLICIT operator bool() const ZMQ_NOTHROW { return _handle != ZMQ_NULLPTR; }
+- // note: non-const operator bool can be removed once
+- // operator void* is removed from socket_t
+- ZMQ_EXPLICIT operator bool() ZMQ_NOTHROW { return _handle != ZMQ_NULLPTR; }
+-
+- protected:
+- void *_handle;
+-
+- private:
+- void set_option(int option_, const void *optval_, size_t optvallen_)
+- {
+- int rc = zmq_setsockopt(_handle, option_, optval_, optvallen_);
+- if (rc != 0)
+- throw error_t();
+- }
+-
+- void get_option(int option_, void *optval_, size_t *optvallen_) const
+- {
+- int rc = zmq_getsockopt(_handle, option_, optval_, optvallen_);
+- if (rc != 0)
+- throw error_t();
+- }
+-};
+-} // namespace detail
+-
+-#ifdef ZMQ_CPP11
+-enum class socket_type : int
+-{
+- req = ZMQ_REQ,
+- rep = ZMQ_REP,
+- dealer = ZMQ_DEALER,
+- router = ZMQ_ROUTER,
+- pub = ZMQ_PUB,
+- sub = ZMQ_SUB,
+- xpub = ZMQ_XPUB,
+- xsub = ZMQ_XSUB,
+- push = ZMQ_PUSH,
+- pull = ZMQ_PULL,
+-#if defined(ZMQ_BUILD_DRAFT_API) && ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 0)
+- server = ZMQ_SERVER,
+- client = ZMQ_CLIENT,
+- radio = ZMQ_RADIO,
+- dish = ZMQ_DISH,
+-#endif
+-#if ZMQ_VERSION_MAJOR >= 4
+- stream = ZMQ_STREAM,
+-#endif
+- pair = ZMQ_PAIR
+-};
+-#endif
+-
+-struct from_handle_t
+-{
+- struct _private
+- {
+- }; // disabling use other than with from_handle
+- ZMQ_CONSTEXPR_FN ZMQ_EXPLICIT from_handle_t(_private /*p*/) ZMQ_NOTHROW {}
+-};
+-
+-ZMQ_CONSTEXPR_VAR from_handle_t from_handle =
+- from_handle_t(from_handle_t::_private());
+-
+-// A non-owning nullable reference to a socket.
+-// The reference is invalidated on socket close or destruction.
+-class socket_ref : public detail::socket_base
+-{
+- public:
+- socket_ref() ZMQ_NOTHROW : detail::socket_base() {}
+-#ifdef ZMQ_CPP11
+- socket_ref(std::nullptr_t) ZMQ_NOTHROW : detail::socket_base() {}
+-#endif
+- socket_ref(from_handle_t /*fh*/, void *handle) ZMQ_NOTHROW
+- : detail::socket_base(handle)
+- {
+- }
+-};
+-
+-#ifdef ZMQ_CPP11
+-inline bool operator==(socket_ref sr, std::nullptr_t /*p*/) ZMQ_NOTHROW
+-{
+- return sr.handle() == nullptr;
+-}
+-inline bool operator==(std::nullptr_t /*p*/, socket_ref sr) ZMQ_NOTHROW
+-{
+- return sr.handle() == nullptr;
+-}
+-inline bool operator!=(socket_ref sr, std::nullptr_t /*p*/) ZMQ_NOTHROW
+-{
+- return !(sr == nullptr);
+-}
+-inline bool operator!=(std::nullptr_t /*p*/, socket_ref sr) ZMQ_NOTHROW
+-{
+- return !(sr == nullptr);
+-}
+-#endif
+-
+-inline bool operator==(const detail::socket_base& a, const detail::socket_base& b) ZMQ_NOTHROW
+-{
+- return std::equal_to()(a.handle(), b.handle());
+-}
+-inline bool operator!=(const detail::socket_base& a, const detail::socket_base& b) ZMQ_NOTHROW
+-{
+- return !(a == b);
+-}
+-inline bool operator<(const detail::socket_base& a, const detail::socket_base& b) ZMQ_NOTHROW
+-{
+- return std::less()(a.handle(), b.handle());
+-}
+-inline bool operator>(const detail::socket_base& a, const detail::socket_base& b) ZMQ_NOTHROW
+-{
+- return b < a;
+-}
+-inline bool operator<=(const detail::socket_base& a, const detail::socket_base& b) ZMQ_NOTHROW
+-{
+- return !(a > b);
+-}
+-inline bool operator>=(const detail::socket_base& a, const detail::socket_base& b) ZMQ_NOTHROW
+-{
+- return !(a < b);
+-}
+-
+-} // namespace zmq
+-
+-#ifdef ZMQ_CPP11
+-namespace std
+-{
+-template<> struct hash
+-{
+- size_t operator()(zmq::socket_ref sr) const ZMQ_NOTHROW
+- {
+- return hash()(sr.handle());
+- }
+-};
+-} // namespace std
+-#endif
+-
+-namespace zmq
+-{
+-class socket_t : public detail::socket_base
+-{
+- friend class monitor_t;
+-
+- public:
+- socket_t() ZMQ_NOTHROW : detail::socket_base(ZMQ_NULLPTR), ctxptr(ZMQ_NULLPTR) {}
+-
+- socket_t(context_t &context_, int type_) :
+- detail::socket_base(zmq_socket(context_.handle(), type_)),
+- ctxptr(context_.handle())
+- {
+- if (_handle == ZMQ_NULLPTR)
+- throw error_t();
+- }
+-
+-#ifdef ZMQ_CPP11
+- socket_t(context_t &context_, socket_type type_) :
+- socket_t(context_, static_cast(type_))
+- {
+- }
+-#endif
+-
+-#ifdef ZMQ_HAS_RVALUE_REFS
+- socket_t(socket_t &&rhs) ZMQ_NOTHROW : detail::socket_base(rhs._handle),
+- ctxptr(rhs.ctxptr)
+- {
+- rhs._handle = ZMQ_NULLPTR;
+- rhs.ctxptr = ZMQ_NULLPTR;
+- }
+- socket_t &operator=(socket_t &&rhs) ZMQ_NOTHROW
+- {
+- close();
+- std::swap(_handle, rhs._handle);
+- std::swap(ctxptr, rhs.ctxptr);
+- return *this;
+- }
+-#endif
+-
+- ~socket_t() ZMQ_NOTHROW { close(); }
+-
+- operator void *() ZMQ_NOTHROW { return _handle; }
+-
+- operator void const *() const ZMQ_NOTHROW { return _handle; }
+-
+- void close() ZMQ_NOTHROW
+- {
+- if (_handle == ZMQ_NULLPTR)
+- // already closed
+- return;
+- int rc = zmq_close(_handle);
+- ZMQ_ASSERT(rc == 0);
+- _handle = ZMQ_NULLPTR;
+- ctxptr = ZMQ_NULLPTR;
+- }
+-
+- void swap(socket_t &other) ZMQ_NOTHROW
+- {
+- std::swap(_handle, other._handle);
+- std::swap(ctxptr, other.ctxptr);
+- }
+-
+- operator socket_ref() ZMQ_NOTHROW { return socket_ref(from_handle, _handle); }
+-
+- private:
+- void *ctxptr;
+-
+- socket_t(const socket_t &) ZMQ_DELETED_FUNCTION;
+- void operator=(const socket_t &) ZMQ_DELETED_FUNCTION;
+-
+- // used by monitor_t
+- socket_t(void *context_, int type_) :
+- detail::socket_base(zmq_socket(context_, type_)), ctxptr(context_)
+- {
+- if (_handle == ZMQ_NULLPTR)
+- throw error_t();
+- if (ctxptr == ZMQ_NULLPTR)
+- throw error_t();
+- }
+-};
+-
+-inline void swap(socket_t &a, socket_t &b) ZMQ_NOTHROW
+-{
+- a.swap(b);
+-}
+-
+-ZMQ_DEPRECATED("from 4.3.1, use proxy taking socket_t objects")
+-inline void proxy(void *frontend, void *backend, void *capture)
+-{
+- int rc = zmq_proxy(frontend, backend, capture);
+- if (rc != 0)
+- throw error_t();
+-}
+-
+-inline void
+-proxy(socket_ref frontend, socket_ref backend, socket_ref capture = socket_ref())
+-{
+- int rc = zmq_proxy(frontend.handle(), backend.handle(), capture.handle());
+- if (rc != 0)
+- throw error_t();
+-}
+-
+-#ifdef ZMQ_HAS_PROXY_STEERABLE
+-ZMQ_DEPRECATED("from 4.3.1, use proxy_steerable taking socket_t objects")
+-inline void
+-proxy_steerable(void *frontend, void *backend, void *capture, void *control)
+-{
+- int rc = zmq_proxy_steerable(frontend, backend, capture, control);
+- if (rc != 0)
+- throw error_t();
+-}
+-
+-inline void proxy_steerable(socket_ref frontend,
+- socket_ref backend,
+- socket_ref capture,
+- socket_ref control)
+-{
+- int rc = zmq_proxy_steerable(frontend.handle(), backend.handle(),
+- capture.handle(), control.handle());
+- if (rc != 0)
+- throw error_t();
+-}
+-#endif
+-
+-class monitor_t
+-{
+- public:
+- monitor_t() : _socket(), _monitor_socket() {}
+-
+- virtual ~monitor_t() { close(); }
+-
+-#ifdef ZMQ_HAS_RVALUE_REFS
+- monitor_t(monitor_t &&rhs) ZMQ_NOTHROW : _socket(), _monitor_socket()
+- {
+- std::swap(_socket, rhs._socket);
+- std::swap(_monitor_socket, rhs._monitor_socket);
+- }
+-
+- monitor_t &operator=(monitor_t &&rhs) ZMQ_NOTHROW
+- {
+- close();
+- _socket = socket_ref();
+- std::swap(_socket, rhs._socket);
+- std::swap(_monitor_socket, rhs._monitor_socket);
+- return *this;
+- }
+-#endif
+-
+-
+- void
+- monitor(socket_t &socket, std::string const &addr, int events = ZMQ_EVENT_ALL)
+- {
+- monitor(socket, addr.c_str(), events);
+- }
+-
+- void monitor(socket_t &socket, const char *addr_, int events = ZMQ_EVENT_ALL)
+- {
+- init(socket, addr_, events);
+- while (true) {
+- check_event(-1);
+- }
+- }
+-
+- void init(socket_t &socket, std::string const &addr, int events = ZMQ_EVENT_ALL)
+- {
+- init(socket, addr.c_str(), events);
+- }
+-
+- void init(socket_t &socket, const char *addr_, int events = ZMQ_EVENT_ALL)
+- {
+- int rc = zmq_socket_monitor(socket.handle(), addr_, events);
+- if (rc != 0)
+- throw error_t();
+-
+- _socket = socket;
+- _monitor_socket = socket_t(socket.ctxptr, ZMQ_PAIR);
+- _monitor_socket.connect(addr_);
+-
+- on_monitor_started();
+- }
+-
+- bool check_event(int timeout = 0)
+- {
+- assert(_monitor_socket);
+-
+- zmq::message_t eventMsg;
+-
+- zmq::pollitem_t items[] = {
+- {_monitor_socket.handle(), 0, ZMQ_POLLIN, 0},
+- };
+-
+- zmq::poll(&items[0], 1, timeout);
+-
+- if (items[0].revents & ZMQ_POLLIN) {
+- int rc = zmq_msg_recv(eventMsg.handle(), _monitor_socket.handle(), 0);
+- if (rc == -1 && zmq_errno() == ETERM)
+- return false;
+- assert(rc != -1);
+-
+- } else {
+- return false;
+- }
+-
+-#if ZMQ_VERSION_MAJOR >= 4
+- const char *data = static_cast(eventMsg.data());
+- zmq_event_t msgEvent;
+- memcpy(&msgEvent.event, data, sizeof(uint16_t));
+- data += sizeof(uint16_t);
+- memcpy(&msgEvent.value, data, sizeof(int32_t));
+- zmq_event_t *event = &msgEvent;
+-#else
+- zmq_event_t *event = static_cast(eventMsg.data());
+-#endif
+-
+-#ifdef ZMQ_NEW_MONITOR_EVENT_LAYOUT
+- zmq::message_t addrMsg;
+- int rc = zmq_msg_recv(addrMsg.handle(), _monitor_socket.handle(), 0);
+- if (rc == -1 && zmq_errno() == ETERM) {
+- return false;
+- }
+-
+- assert(rc != -1);
+- std::string address = addrMsg.to_string();
+-#else
+- // Bit of a hack, but all events in the zmq_event_t union have the same layout so this will work for all event types.
+- std::string address = event->data.connected.addr;
+-#endif
+-
+-#ifdef ZMQ_EVENT_MONITOR_STOPPED
+- if (event->event == ZMQ_EVENT_MONITOR_STOPPED) {
+- return false;
+- }
+-
+-#endif
+-
+- switch (event->event) {
+- case ZMQ_EVENT_CONNECTED:
+- on_event_connected(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_CONNECT_DELAYED:
+- on_event_connect_delayed(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_CONNECT_RETRIED:
+- on_event_connect_retried(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_LISTENING:
+- on_event_listening(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_BIND_FAILED:
+- on_event_bind_failed(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_ACCEPTED:
+- on_event_accepted(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_ACCEPT_FAILED:
+- on_event_accept_failed(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_CLOSED:
+- on_event_closed(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_CLOSE_FAILED:
+- on_event_close_failed(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_DISCONNECTED:
+- on_event_disconnected(*event, address.c_str());
+- break;
+-#ifdef ZMQ_BUILD_DRAFT_API
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3)
+- case ZMQ_EVENT_HANDSHAKE_FAILED_NO_DETAIL:
+- on_event_handshake_failed_no_detail(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_HANDSHAKE_FAILED_PROTOCOL:
+- on_event_handshake_failed_protocol(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_HANDSHAKE_FAILED_AUTH:
+- on_event_handshake_failed_auth(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_HANDSHAKE_SUCCEEDED:
+- on_event_handshake_succeeded(*event, address.c_str());
+- break;
+-#elif ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 1)
+- case ZMQ_EVENT_HANDSHAKE_FAILED:
+- on_event_handshake_failed(*event, address.c_str());
+- break;
+- case ZMQ_EVENT_HANDSHAKE_SUCCEED:
+- on_event_handshake_succeed(*event, address.c_str());
+- break;
+-#endif
+-#endif
+- default:
+- on_event_unknown(*event, address.c_str());
+- break;
+- }
+-
+- return true;
+- }
+-
+-#ifdef ZMQ_EVENT_MONITOR_STOPPED
+- void abort()
+- {
+- if (_socket)
+- zmq_socket_monitor(_socket.handle(), ZMQ_NULLPTR, 0);
+-
+- _socket = socket_ref();
+- }
+-#endif
+- virtual void on_monitor_started() {}
+- virtual void on_event_connected(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_connect_delayed(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_connect_retried(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_listening(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_bind_failed(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_accepted(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_accept_failed(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_closed(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_close_failed(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_disconnected(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3)
+- virtual void on_event_handshake_failed_no_detail(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_handshake_failed_protocol(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_handshake_failed_auth(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_handshake_succeeded(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+-#elif ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 1)
+- virtual void on_event_handshake_failed(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+- virtual void on_event_handshake_succeed(const zmq_event_t &event_,
+- const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+-#endif
+- virtual void on_event_unknown(const zmq_event_t &event_, const char *addr_)
+- {
+- (void) event_;
+- (void) addr_;
+- }
+-
+- private:
+- monitor_t(const monitor_t &) ZMQ_DELETED_FUNCTION;
+- void operator=(const monitor_t &) ZMQ_DELETED_FUNCTION;
+-
+- socket_ref _socket;
+- socket_t _monitor_socket;
+-
+- void close() ZMQ_NOTHROW
+- {
+- if (_socket)
+- zmq_socket_monitor(_socket.handle(), ZMQ_NULLPTR, 0);
+- _monitor_socket.close();
+- }
+-};
+-
+-#if defined(ZMQ_BUILD_DRAFT_API) && defined(ZMQ_CPP11) && defined(ZMQ_HAVE_POLLER)
+-
+-// polling events
+-enum class event_flags : short
+-{
+- none = 0,
+- pollin = ZMQ_POLLIN,
+- pollout = ZMQ_POLLOUT,
+- pollerr = ZMQ_POLLERR,
+- pollpri = ZMQ_POLLPRI
+-};
+-
+-constexpr event_flags operator|(event_flags a, event_flags b) noexcept
+-{
+- return detail::enum_bit_or(a, b);
+-}
+-constexpr event_flags operator&(event_flags a, event_flags b) noexcept
+-{
+- return detail::enum_bit_and(a, b);
+-}
+-constexpr event_flags operator^(event_flags a, event_flags b) noexcept
+-{
+- return detail::enum_bit_xor(a, b);
+-}
+-constexpr event_flags operator~(event_flags a) noexcept
+-{
+- return detail::enum_bit_not(a);
+-}
+-
+-struct no_user_data;
+-
+-// layout compatible with zmq_poller_event_t
+-template struct poller_event
+-{
+- socket_ref socket;
+- ::zmq::fd_t fd;
+- T *user_data;
+- event_flags events;
+-};
+-
+-template class poller_t
+-{
+- public:
+- using event_type = poller_event;
+-
+- poller_t() : poller_ptr(zmq_poller_new())
+- {
+- if (!poller_ptr)
+- throw error_t();
+- }
+-
+- template<
+- typename Dummy = void,
+- typename =
+- typename std::enable_if::value, Dummy>::type>
+- void add(zmq::socket_ref socket, event_flags events, T *user_data)
+- {
+- add_impl(socket, events, user_data);
+- }
+-
+- void add(zmq::socket_ref socket, event_flags events)
+- {
+- add_impl(socket, events, nullptr);
+- }
+-
+- void remove(zmq::socket_ref socket)
+- {
+- if (0 != zmq_poller_remove(poller_ptr.get(), socket.handle())) {
+- throw error_t();
+- }
+- }
+-
+- void modify(zmq::socket_ref socket, event_flags events)
+- {
+- if (0
+- != zmq_poller_modify(poller_ptr.get(), socket.handle(),
+- static_cast(events))) {
+- throw error_t();
+- }
+- }
+-
+- size_t wait_all(std::vector &poller_events,
+- const std::chrono::milliseconds timeout)
+- {
+- int rc = zmq_poller_wait_all(
+- poller_ptr.get(),
+- reinterpret_cast(poller_events.data()),
+- static_cast(poller_events.size()),
+- static_cast(timeout.count()));
+- if (rc > 0)
+- return static_cast(rc);
+-
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 2, 3)
+- if (zmq_errno() == EAGAIN)
+-#else
+- if (zmq_errno() == ETIMEDOUT)
+-#endif
+- return 0;
+-
+- throw error_t();
+- }
+-
+-#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 3)
+- size_t size() const noexcept
+- {
+- int rc = zmq_poller_size(const_cast(poller_ptr.get()));
+- ZMQ_ASSERT(rc >= 0);
+- return static_cast(std::max(rc, 0));
+- }
+-#endif
+-
+- private:
+- struct destroy_poller_t
+- {
+- void operator()(void *ptr) noexcept
+- {
+- int rc = zmq_poller_destroy(&ptr);
+- ZMQ_ASSERT(rc == 0);
+- }
+- };
+-
+- std::unique_ptr poller_ptr;
+-
+- void add_impl(zmq::socket_ref socket, event_flags events, T *user_data)
+- {
+- if (0
+- != zmq_poller_add(poller_ptr.get(), socket.handle(), user_data,
+- static_cast(events))) {
+- throw error_t();
+- }
+- }
+-};
+-#endif // defined(ZMQ_BUILD_DRAFT_API) && defined(ZMQ_CPP11) && defined(ZMQ_HAVE_POLLER)
+-
+-inline std::ostream &operator<<(std::ostream &os, const message_t &msg)
+-{
+- return os << msg.str();
+-}
+-
+-} // namespace zmq
+-
+-#endif // __ZMQ_HPP_INCLUDED__
+-
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 95b2663..350e7ad 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -19,7 +19,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+ #---- project configuration ----
+ option(BUILD_EXAMPLES "Build tutorials and examples" ON)
+-option(BUILD_UNIT_TESTS "Build the unit tests" ON)
++option(BUILD_UNIT_TESTS "Build the unit tests" OFF)
+ option(BUILD_TOOLS "Build commandline tools" ON)
+ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+ option(BUILD_MANUAL_SELECTOR "Build manual selector node" ON)
+diff --git a/src/loggers/bt_zmq_publisher.cpp b/src/loggers/bt_zmq_publisher.cpp
+index b2215a8..a850bf4 100644
+--- a/src/loggers/bt_zmq_publisher.cpp
++++ b/src/loggers/bt_zmq_publisher.cpp
+@@ -1,7 +1,7 @@
+ #include
+ #include "behaviortree_cpp_v3/loggers/bt_zmq_publisher.h"
+ #include "behaviortree_cpp_v3/flatbuffers/bt_flatbuffer_helper.h"
+-#include "cppzmq/zmq.hpp"
++#include
+
+ namespace BT
+ {
+diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
+index c73ee37..f4140b8 100644
+--- a/tools/CMakeLists.txt
++++ b/tools/CMakeLists.txt
+@@ -10,6 +10,8 @@ install(TARGETS bt3_log_cat
+ if( ZMQ_FOUND )
+ add_executable(bt3_recorder bt_recorder.cpp )
+ target_link_libraries(bt3_recorder ${BEHAVIOR_TREE_LIBRARY} ${ZMQ_LIBRARIES})
++ target_include_directories(bt3_recorder PRIVATE
++ ${ZMQ_INCLUDE_DIRS} )
+ install(TARGETS bt3_recorder
+ DESTINATION ${BEHAVIOR_TREE_BIN_DESTINATION} )
+ endif()
+diff --git a/tools/bt_recorder.cpp b/tools/bt_recorder.cpp
+index e501528..2f7dad0 100644
+--- a/tools/bt_recorder.cpp
++++ b/tools/bt_recorder.cpp
+@@ -3,7 +3,7 @@
+ #include
+ #include
+ #include
+-#include "cppzmq/zmq.hpp"
++#include
+ #include "behaviortree_cpp_v3/flatbuffers/BT_logger_generated.h"
+
+ // http://zguide.zeromq.org/cpp:interrupt
diff --git a/recipes/ros-humble-behaviortree-cpp-v3/recipe.yaml b/recipes/ros-humble-behaviortree-cpp-v3/recipe.yaml
new file mode 100644
index 000000000..24646e7d1
--- /dev/null
+++ b/recipes/ros-humble-behaviortree-cpp-v3/recipe.yaml
@@ -0,0 +1,99 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-behaviortree-cpp-v3
+ version: 3.8.7
+source:
+ git: https://github.com/BehaviorTree/behaviortree_cpp_v3-release.git
+ tag: release/humble/behaviortree_cpp_v3/3.8.7-1
+ target_directory: ros-humble-behaviortree-cpp-v3/src/work
+ patches:
+ - patch/ros-humble-behaviortree-cpp-v3.patch
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - cppzmq
+ - libboost-devel
+ - ncurses
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-index-cpp
+ - ros-humble-rclcpp
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - zeromq
+ run:
+ - cppzmq
+ - libboost
+ - ncurses
+ - python
+ - ros-humble-ament-index-cpp
+ - ros-humble-rclcpp
+ - ros-humble-ros-workspace
+ - ros2-distro-mutex 0.6.* humble_*
+ - zeromq
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-bicycle-steering-controller/bld_ament_cmake.bat b/recipes/ros-humble-bicycle-steering-controller/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-bicycle-steering-controller/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-bicycle-steering-controller/build_ament_cmake.sh b/recipes/ros-humble-bicycle-steering-controller/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-bicycle-steering-controller/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-bicycle-steering-controller/recipe.yaml b/recipes/ros-humble-bicycle-steering-controller/recipe.yaml
new file mode 100644
index 000000000..7b2b073d4
--- /dev/null
+++ b/recipes/ros-humble-bicycle-steering-controller/recipe.yaml
@@ -0,0 +1,107 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-bicycle-steering-controller
+ version: 2.40.0
+source:
+ git: https://github.com/ros2-gbp/ros2_controllers-release.git
+ tag: release/humble/bicycle_steering_controller/2.40.0-1
+ target_directory: ros-humble-bicycle-steering-controller/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-cmake-gmock
+ - ros-humble-backward-ros
+ - ros-humble-control-msgs
+ - ros-humble-controller-interface
+ - ros-humble-controller-manager
+ - ros-humble-generate-parameter-library
+ - ros-humble-hardware-interface
+ - ros-humble-hardware-interface-testing
+ - ros-humble-pluginlib
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-ros2-control-test-assets
+ - ros-humble-std-srvs
+ - ros-humble-steering-controllers-library
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-backward-ros
+ - ros-humble-control-msgs
+ - ros-humble-controller-interface
+ - ros-humble-hardware-interface
+ - ros-humble-pluginlib
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-ros-workspace
+ - ros-humble-std-srvs
+ - ros-humble-steering-controllers-library
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-bond/bld_ament_cmake.bat b/recipes/ros-humble-bond/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-bond/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-bond/build_ament_cmake.sh b/recipes/ros-humble-bond/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-bond/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-bond/recipe.yaml b/recipes/ros-humble-bond/recipe.yaml
new file mode 100644
index 000000000..438e5ff66
--- /dev/null
+++ b/recipes/ros-humble-bond/recipe.yaml
@@ -0,0 +1,92 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-bond
+ version: 3.0.2
+source:
+ git: https://github.com/ros2-gbp/bond_core-release.git
+ tag: release/humble/bond/3.0.2-3
+ target_directory: ros-humble-bond/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-builtin-interfaces
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-builtin-interfaces
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-bondcpp/bld_ament_cmake.bat b/recipes/ros-humble-bondcpp/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-bondcpp/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-bondcpp/build_ament_cmake.sh b/recipes/ros-humble-bondcpp/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-bondcpp/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-bondcpp/patch/ros-humble-bondcpp.osx.patch b/recipes/ros-humble-bondcpp/patch/ros-humble-bondcpp.osx.patch
new file mode 100644
index 000000000..82bde64fe
--- /dev/null
+++ b/recipes/ros-humble-bondcpp/patch/ros-humble-bondcpp.osx.patch
@@ -0,0 +1,32 @@
+diff --git a/bondcpp/CMakeLists.txt b/bondcpp/CMakeLists.txt
+index f84c947..c4d2b15 100644
+--- a/bondcpp/CMakeLists.txt
++++ b/bondcpp/CMakeLists.txt
+@@ -16,25 +16,19 @@ find_package(rclcpp_lifecycle REQUIRED)
+ find_package(smclib REQUIRED)
+ find_package(Threads REQUIRED)
+
+-find_package(PkgConfig REQUIRED)
+-pkg_check_modules(UUID REQUIRED uuid)
+-# we have to find the absolute path to uuid as target_link_directories is not available before cmake 3.13
+-find_library(uuid_ABS_PATH ${UUID_LIBRARIES} PATHS ${UUID_LIBRARY_DIRS})
+-
+ add_library(${PROJECT_NAME}
+ SHARED
+ src/bond.cpp
+ src/BondSM_sm.cpp)
+ target_include_directories(${PROJECT_NAME} PUBLIC
+ $
+- $
+- ${UUID_INCLUDE_DIRS})
++ $)
+ ament_target_dependencies(${PROJECT_NAME}
+ bond
+ rclcpp
+ rclcpp_lifecycle
+ smclib)
+-target_link_libraries(${PROJECT_NAME} ${uuid_ABS_PATH})
++target_link_libraries(${PROJECT_NAME})
+
+ install(
+ TARGETS ${PROJECT_NAME}
diff --git a/recipes/ros-humble-bondcpp/recipe.yaml b/recipes/ros-humble-bondcpp/recipe.yaml
new file mode 100644
index 000000000..b34f0ef31
--- /dev/null
+++ b/recipes/ros-humble-bondcpp/recipe.yaml
@@ -0,0 +1,97 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-bondcpp
+ version: 3.0.2
+source:
+ git: https://github.com/ros2-gbp/bond_core-release.git
+ tag: release/humble/bondcpp/3.0.2-3
+ target_directory: ros-humble-bondcpp/src/work
+ patches:
+ - patch/ros-humble-bondcpp.osx.patch
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pkg-config
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-bond
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-smclib
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-bond
+ - ros-humble-rclcpp
+ - ros-humble-rclcpp-lifecycle
+ - ros-humble-ros-workspace
+ - ros-humble-smclib
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-builtin-interfaces/bld_ament_cmake.bat b/recipes/ros-humble-builtin-interfaces/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-builtin-interfaces/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-builtin-interfaces/build_ament_cmake.sh b/recipes/ros-humble-builtin-interfaces/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-builtin-interfaces/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-builtin-interfaces/recipe.yaml b/recipes/ros-humble-builtin-interfaces/recipe.yaml
new file mode 100644
index 000000000..1e6eb0939
--- /dev/null
+++ b/recipes/ros-humble-builtin-interfaces/recipe.yaml
@@ -0,0 +1,87 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-builtin-interfaces
+ version: 1.2.1
+source:
+ git: https://github.com/ros2-gbp/rcl_interfaces-release.git
+ tag: release/humble/builtin_interfaces/1.2.1-1
+ target_directory: ros-humble-builtin-interfaces/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-common
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-camera-calibration-parsers/bld_ament_cmake.bat b/recipes/ros-humble-camera-calibration-parsers/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-camera-calibration-parsers/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-camera-calibration-parsers/build_ament_cmake.sh b/recipes/ros-humble-camera-calibration-parsers/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-camera-calibration-parsers/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-camera-calibration-parsers/recipe.yaml b/recipes/ros-humble-camera-calibration-parsers/recipe.yaml
new file mode 100644
index 000000000..dcb7033be
--- /dev/null
+++ b/recipes/ros-humble-camera-calibration-parsers/recipe.yaml
@@ -0,0 +1,95 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-camera-calibration-parsers
+ version: 3.1.10
+source:
+ git: https://github.com/ros2-gbp/image_common-release.git
+ tag: release/humble/camera_calibration_parsers/3.1.10-1
+ target_directory: ros-humble-camera-calibration-parsers/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-cmake-ros
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-rclcpp
+ - ros-humble-rcpputils
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros-humble-yaml-cpp-vendor
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-rclcpp
+ - ros-humble-rcpputils
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros-humble-yaml-cpp-vendor
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-camera-calibration/bld_ament_python.bat b/recipes/ros-humble-camera-calibration/bld_ament_python.bat
new file mode 100755
index 000000000..45dc369d6
--- /dev/null
+++ b/recipes/ros-humble-camera-calibration/bld_ament_python.bat
@@ -0,0 +1,25 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+pushd %SRC_DIR%\%PKG_NAME%\src\work
+set "PKG_NAME_SHORT=%PKG_NAME:*ros-humble-=%"
+set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"
+
+:: If there is a setup.cfg that contains install-scripts then use pip to install
+findstr install[-_]scripts setup.cfg
+if "%errorlevel%" == "0" (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
+) else (
+ %PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
+ --prefix=%LIBRARY_PREFIX% ^
+ --install-lib=%SP_DIR% ^
+ --install-scripts=%LIBRARY_PREFIX%\bin
+)
+
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-camera-calibration/build_ament_python.sh b/recipes/ros-humble-camera-calibration/build_ament_python.sh
new file mode 100755
index 000000000..c4440612f
--- /dev/null
+++ b/recipes/ros-humble-camera-calibration/build_ament_python.sh
@@ -0,0 +1,19 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+pushd $SRC_DIR/$PKG_NAME/src/work
+
+# If there is a setup.cfg that contains install-scripts then we should not set it here
+if [ -f setup.cfg ] && grep -q "install[-_]scripts" setup.cfg; then
+ # Remove e.g. ros-humble- from PKG_NAME
+ PKG_NAME_SHORT=${PKG_NAME#*ros-humble-}
+ # Substitute "-" with "_"
+ PKG_NAME_SHORT=${PKG_NAME_SHORT//-/_}
+ INSTALL_SCRIPTS_ARG="--install-scripts=$PREFIX/lib/$PKG_NAME_SHORT"
+ echo "WARNING: setup.cfg not set, will set INSTALL_SCRIPTS_ARG to: $INSTALL_SCRIPTS_ARG"
+ $PYTHON setup.py install --prefix="$PREFIX" --install-lib="$SP_DIR" $INSTALL_SCRIPTS_ARG --single-version-externally-managed --record=files.txt
+else
+ $PYTHON -m pip install . --no-deps -vvv
+fi
diff --git a/recipes/ros-humble-camera-calibration/recipe.yaml b/recipes/ros-humble-camera-calibration/recipe.yaml
new file mode 100644
index 000000000..d8b669854
--- /dev/null
+++ b/recipes/ros-humble-camera-calibration/recipe.yaml
@@ -0,0 +1,101 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-camera-calibration
+ version: 3.0.6
+source:
+ git: https://github.com/ros2-gbp/image_pipeline-release.git
+ tag: release/humble/camera_calibration/3.0.6-1
+ target_directory: ros-humble-camera-calibration/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_python.sh' if unix else '%RECIPE_DIR%\\bld_ament_python.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - pytest
+ - python
+ - requests
+ - ros-humble-ament-copyright
+ - ros-humble-ament-flake8
+ - ros-humble-ament-pep257
+ - ros-humble-cv-bridge
+ - ros-humble-image-geometry
+ - ros-humble-message-filters
+ - ros-humble-rclpy
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros-humble-std-srvs
+ - ros2-distro-mutex 0.6.* humble_*
+ - setuptools
+ run:
+ - python
+ - ros-humble-cv-bridge
+ - ros-humble-image-geometry
+ - ros-humble-message-filters
+ - ros-humble-rclpy
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros-humble-std-srvs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-camera-info-manager/bld_ament_cmake.bat b/recipes/ros-humble-camera-info-manager/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-camera-info-manager/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-camera-info-manager/build_ament_cmake.sh b/recipes/ros-humble-camera-info-manager/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-camera-info-manager/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-camera-info-manager/recipe.yaml b/recipes/ros-humble-camera-info-manager/recipe.yaml
new file mode 100644
index 000000000..d76b83667
--- /dev/null
+++ b/recipes/ros-humble-camera-info-manager/recipe.yaml
@@ -0,0 +1,97 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-camera-info-manager
+ version: 3.1.10
+source:
+ git: https://github.com/ros2-gbp/image_common-release.git
+ tag: release/humble/camera_info_manager/3.1.10-1
+ target_directory: ros-humble-camera-info-manager/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake-gtest
+ - ros-humble-ament-cmake-ros
+ - ros-humble-ament-index-cpp
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-camera-calibration-parsers
+ - ros-humble-rclcpp
+ - ros-humble-rcpputils
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-ament-index-cpp
+ - ros-humble-camera-calibration-parsers
+ - ros-humble-rclcpp
+ - ros-humble-rcpputils
+ - ros-humble-ros-workspace
+ - ros-humble-sensor-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-cartographer-ros-msgs/bld_ament_cmake.bat b/recipes/ros-humble-cartographer-ros-msgs/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-cartographer-ros-msgs/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-cartographer-ros-msgs/build_ament_cmake.sh b/recipes/ros-humble-cartographer-ros-msgs/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-cartographer-ros-msgs/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-cartographer-ros-msgs/recipe.yaml b/recipes/ros-humble-cartographer-ros-msgs/recipe.yaml
new file mode 100644
index 000000000..767b42ab3
--- /dev/null
+++ b/recipes/ros-humble-cartographer-ros-msgs/recipe.yaml
@@ -0,0 +1,94 @@
+# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json
+
+package:
+ name: ros-humble-cartographer-ros-msgs
+ version: 2.0.9002
+source:
+ git: https://github.com/ros2-gbp/cartographer_ros-release.git
+ tag: release/humble/cartographer_ros_msgs/2.0.9002-1
+ target_directory: ros-humble-cartographer-ros-msgs/src/work
+
+build:
+ script: ${{ '$RECIPE_DIR/build_ament_cmake.sh' if unix else '%RECIPE_DIR%\\bld_ament_cmake.bat' }}
+ number: 6
+ post_process:
+ - files:
+ - '*.pc'
+ regex: (?:-L|-I)?"?([^;\s]+/sysroot/)
+ replacement: $$(CONDA_BUILD_SYSROOT_S)
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/sysroot)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+ - files:
+ - '*.cmake'
+ regex: ([^;\s"]+/MacOSX\d*\.?\d*\.sdk)
+ replacement: $$ENV{CONDA_BUILD_SYSROOT}
+about:
+ homepage: https://www.ros.org/
+ license: BSD-3-Clause
+ summary: |
+ Robot Operating System
+
+extra:
+ recipe-maintainers:
+ - ros-forge
+
+requirements:
+ build:
+ - ${{ compiler('cxx') }}
+ - ${{ compiler('c') }}
+ - ${{ stdlib('c') }}
+ - ninja
+ - python
+ - setuptools
+ - git
+ - if: unix
+ then:
+ - patch
+ - make
+ - coreutils
+ - if: win
+ then:
+ - m2-patch
+ - if: osx
+ then:
+ - tapi
+ - if: build_platform != target_platform
+ then:
+ - pkg-config
+ - cmake
+ - cython
+ - if: build_platform != target_platform
+ then:
+ - python
+ - cross-python_${{ target_platform }}
+ - numpy
+ host:
+ - if: build_platform == target_platform
+ then:
+ - pkg-config
+ - numpy
+ - pip
+ - python
+ - ros-humble-ament-cmake
+ - ros-humble-ament-lint-auto
+ - ros-humble-ament-lint-common
+ - ros-humble-builtin-interfaces
+ - ros-humble-geometry-msgs
+ - ros-humble-ros-environment
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-generators
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ run:
+ - python
+ - ros-humble-builtin-interfaces
+ - ros-humble-geometry-msgs
+ - ros-humble-ros-workspace
+ - ros-humble-rosidl-default-runtime
+ - ros-humble-std-msgs
+ - ros2-distro-mutex 0.6.* humble_*
+ - if: osx and x86_64
+ then:
+ - __osx >=${{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
diff --git a/recipes/ros-humble-cartographer-ros/bld_ament_cmake.bat b/recipes/ros-humble-cartographer-ros/bld_ament_cmake.bat
new file mode 100755
index 000000000..823afff17
--- /dev/null
+++ b/recipes/ros-humble-cartographer-ros/bld_ament_cmake.bat
@@ -0,0 +1,52 @@
+:: Generated by vinca http://github.com/RoboStack/vinca.
+:: DO NOT EDIT!
+setlocal EnableDelayedExpansion
+
+set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
+
+:: MSVC is preferred.
+set CC=cl.exe
+set CXX=cl.exe
+
+rd /s /q build
+mkdir build
+pushd build
+
+:: set "CMAKE_GENERATOR=Ninja"
+:: We use the Visual Studio generator as a workaround for
+:: problems in Ninja when using long paths, see https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2564856467
+:: Once those are solved, we can switch back to use Ninja
+set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"
+
+:: PYTHON_INSTALL_DIR should be a relative path, see
+:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
+:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
+:: python
+
+:: This line is scary, but it basically assigns the output of the command inside (` and `)
+:: to the variable specified after DO SET
+:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
+FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']).replace('\\','/'))"`) DO SET PYTHON_INSTALL_DIR=%%i
+
+cmake ^
+ -G "%CMAKE_GENERATOR%" ^
+ -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
+ -DCMAKE_BUILD_TYPE=Release ^
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
+ -DPYTHON_EXECUTABLE=%PYTHON% ^
+ -DPython_EXECUTABLE=%PYTHON% ^
+ -DPython3_EXECUTABLE=%PYTHON% ^
+ -DSETUPTOOLS_DEB_LAYOUT=OFF ^
+ -DBUILD_SHARED_LIBS=ON ^
+ -DBUILD_TESTING=OFF ^
+ -DCMAKE_OBJECT_PATH_MAX=255 ^
+ --compile-no-warning-as-error ^
+ -DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
+ %SRC_DIR%\%PKG_NAME%\src\work
+if errorlevel 1 exit 1
+
+:: We explicitly pass %CPU_COUNT% to cmake --build as we are not using Ninja,
+:: see the comment before setting the CMAKE_GENERATOR env variable
+cmake --build . --config Release --parallel %CPU_COUNT% --target install
+if errorlevel 1 exit 1
diff --git a/recipes/ros-humble-cartographer-ros/build_ament_cmake.sh b/recipes/ros-humble-cartographer-ros/build_ament_cmake.sh
new file mode 100755
index 000000000..34df1a726
--- /dev/null
+++ b/recipes/ros-humble-cartographer-ros/build_ament_cmake.sh
@@ -0,0 +1,84 @@
+# Generated by vinca http://github.com/RoboStack/vinca.
+# DO NOT EDIT!
+
+set -eo pipefail
+
+rm -rf build
+mkdir build
+cd build
+
+# necessary for correctly linking SIP files (from python_qt_bindings)
+export LINK=$CXX
+
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
+ PYTHON_EXECUTABLE=$PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="10.15"
+else
+ PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
+ PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
+ OSX_DEPLOYMENT_TARGET="11.0"
+fi
+
+if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
+ export QT_HOST_PATH="$BUILD_PREFIX"
+else
+ export QT_HOST_PATH="$PREFIX"
+fi
+
+echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
+echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
+
+export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
+echo "Using Python ${ROS_PYTHON_VERSION}"
+
+# see https://github.com/conda-forge/cross-python-feedstock/issues/24
+if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
+ find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
+fi
+
+if [[ $target_platform =~ linux.* ]]; then
+ export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
+ export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
+fi;
+
+# Needed for qt-gui-cpp ..
+if [[ $target_platform =~ linux.* ]]; then
+ ln -s $GCC ${BUILD_PREFIX}/bin/gcc
+ ln -s $GXX ${BUILD_PREFIX}/bin/g++
+fi;
+
+# PYTHON_INSTALL_DIR should be a relative path, see
+# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
+# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
+# but it is not trivial to do this in bash scripting, so let's do it via python
+export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
+echo "Using site_packages: $PYTHON_INSTALL_DIR"
+
+cmake \
+ -G "Ninja" \
+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
+ -DCMAKE_PREFIX_PATH=$PREFIX \
+ -DAMENT_PREFIX_PATH=$PREFIX \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
+ -DPython3_FIND_STRATEGY=LOCATION \
+ -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
+ -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+ -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
+ --compile-no-warning-as-error \
+ $SRC_DIR/$PKG_NAME/src/work
+
+cmake --build . --config Release --target install
diff --git a/recipes/ros-humble-cartographer-ros/patch/ros-humble-cartographer-ros.patch b/recipes/ros-humble-cartographer-ros/patch/ros-humble-cartographer-ros.patch
new file mode 100644
index 000000000..d34684b4a
--- /dev/null
+++ b/recipes/ros-humble-cartographer-ros/patch/ros-humble-cartographer-ros.patch
@@ -0,0 +1,152 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f7f476296..0725a05d5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -50,6 +50,16 @@ find_package(urdf REQUIRED)
+ find_package(urdfdom_headers REQUIRED)
+ find_package(visualization_msgs REQUIRED)
+
++find_package(Protobuf REQUIRED CONFIG)
++# glog is not linked, however we look for it to detect the glog version
++# and use a different code path if glog >= 0.7.0 is detected
++find_package(glog CONFIG QUIET)
++if(DEFINED glog_VERSION)
++ if(NOT glog_VERSION VERSION_LESS 0.7.0)
++ add_definitions(-DROS_CARTOGRAPHER_GLOG_GE_070)
++ endif()
++endif()
++
+ include_directories(
+ include
+ ${PCL_INCLUDE_DIRS}
+diff --git a/src/ros_log_sink.cpp b/src/ros_log_sink.cpp
+index 1396381d4..9e189c690 100644
+--- a/src/ros_log_sink.cpp
++++ b/src/ros_log_sink.cpp
+@@ -33,6 +33,11 @@ const char* GetBasename(const char* filepath) {
+ return base ? (base + 1) : filepath;
+ }
+
++std::chrono::system_clock::time_point ConvertTmToTimePoint(const std::tm& tm) {
++ std::time_t timeT = std::mktime(const_cast(&tm)); // Convert std::tm to time_t
++ return std::chrono::system_clock::from_time_t(timeT); // Convert time_t to time_point
++}
++
+ } // namespace
+
+ ScopedRosLogSink::ScopedRosLogSink() : will_die_(false) { AddLogSink(this); }
+@@ -46,10 +51,13 @@ void ScopedRosLogSink::send(const ::google::LogSeverity severity,
+ const size_t message_len) {
+ (void) base_filename; // TODO: remove unused arg ?
+
++#if defined(ROS_CARTOGRAPHER_GLOG_GE_070)
++ const std::string message_string = ::google::LogSink::ToString(
++ severity, GetBasename(filename), line, ::google::LogMessageTime(ConvertTmToTimePoint(*tm_time)), message, message_len);
+ // Google glog broke the ToString API, but has no way to tell what version it is using.
+ // To support both newer and older glog versions, use a nasty hack were we infer the
+ // version based on whether GOOGLE_GLOG_DLL_DECL is defined
+-#if defined(GOOGLE_GLOG_DLL_DECL)
++#elif defined(GOOGLE_GLOG_DLL_DECL)
+ const std::string message_string = ::google::LogSink::ToString(
+ severity, GetBasename(filename), line, tm_time, message, message_len);
+ #else
+
+diff --git a/include/cartographer_ros/map_builder_bridge.h b/include/cartographer_ros/map_builder_bridge.h
+index b2c00b7..9c1befd 100644
+--- a/include/cartographer_ros/map_builder_bridge.h
++++ b/include/cartographer_ros/map_builder_bridge.h
+@@ -95,7 +95,7 @@ class MapBuilderBridge {
+ GetTrajectoryStates();
+ cartographer_ros_msgs::msg::SubmapList GetSubmapList(rclcpp::Time node_time);
+ std::unordered_map GetLocalTrajectoryData()
+- LOCKS_EXCLUDED(mutex_);
++ ABSL_LOCKS_EXCLUDED(mutex_);
+ visualization_msgs::msg::MarkerArray GetTrajectoryNodeList(rclcpp::Time node_time);
+ visualization_msgs::msg::MarkerArray GetLandmarkPosesList(rclcpp::Time node_time);
+ visualization_msgs::msg::MarkerArray GetConstraintList(rclcpp::Time node_time);
+@@ -107,13 +107,13 @@ class MapBuilderBridge {
+ const ::cartographer::common::Time time,
+ const ::cartographer::transform::Rigid3d local_pose,
+ ::cartographer::sensor::RangeData range_data_in_local)
+- LOCKS_EXCLUDED(mutex_);
++ ABSL_LOCKS_EXCLUDED(mutex_);
+
+ absl::Mutex mutex_;
+ const NodeOptions node_options_;
+ std::unordered_map>
+- local_slam_data_ GUARDED_BY(mutex_);
++ local_slam_data_ ABSL_GUARDED_BY(mutex_);
+ std::unique_ptr map_builder_;
+ tf2_ros::Buffer* const tf_buffer_;
+
+diff --git a/include/cartographer_ros/metrics/internal/gauge.h b/include/cartographer_ros/metrics/internal/gauge.h
+index f311ab1..26d0caf 100644
+--- a/include/cartographer_ros/metrics/internal/gauge.h
++++ b/include/cartographer_ros/metrics/internal/gauge.h
+@@ -71,7 +71,7 @@ class Gauge : public ::cartographer::metrics::Gauge {
+
+ absl::Mutex mutex_;
+ const std::map labels_;
+- double value_ GUARDED_BY(mutex_);
++ double value_ ABSL_GUARDED_BY(mutex_);
+ };
+
+ } // namespace metrics
+diff --git a/include/cartographer_ros/metrics/internal/histogram.h b/include/cartographer_ros/metrics/internal/histogram.h
+index b5d8404..e47f99b 100644
+--- a/include/cartographer_ros/metrics/internal/histogram.h
++++ b/include/cartographer_ros/metrics/internal/histogram.h
+@@ -50,8 +50,8 @@ class Histogram : public ::cartographer::metrics::Histogram {
+ absl::Mutex mutex_;
+ const std::map labels_;
+ const BucketBoundaries bucket_boundaries_;
+- std::vector bucket_counts_ GUARDED_BY(mutex_);
+- double sum_ GUARDED_BY(mutex_);
++ std::vector bucket_counts_ ABSL_GUARDED_BY(mutex_);
++ double sum_ ABSL_GUARDED_BY(mutex_);
+ };
+
+ } // namespace metrics
+diff --git a/include/cartographer_ros/node.h b/include/cartographer_ros/node.h
+index f3527ca..f9fb9fb 100644
+--- a/include/cartographer_ros/node.h
++++ b/include/cartographer_ros/node.h
+@@ -168,7 +168,7 @@ class Node {
+ bool ValidateTrajectoryOptions(const TrajectoryOptions& options);
+ bool ValidateTopicNames(const TrajectoryOptions& options);
+ cartographer_ros_msgs::msg::StatusResponse FinishTrajectoryUnderLock(
+- int trajectory_id) EXCLUSIVE_LOCKS_REQUIRED(mutex_);
++ int trajectory_id) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_);
+ void MaybeWarnAboutTopicMismatch();
+
+ // Helper function for service handlers that need to check trajectory states.
+@@ -183,7 +183,7 @@ class Node {
+
+ absl::Mutex mutex_;
+ std::unique_ptr