[workspace] name = "blockly-ros2-controller" version = "0.1.0" channels = ["conda-forge", "robostack-jazzy"] platforms = ["linux-64", "linux-aarch64"] # Shared conda dependencies — available on both x86_64 and aarch64 [dependencies] python = ">=3.11" ros-jazzy-rclpy = "*" ros-jazzy-rosidl-default-runtime = "*" ros-jazzy-rosidl-default-generators = "*" ros-jazzy-action-msgs = "*" colcon-common-extensions = "*" pytest = "*" # Desktop-only conda dependencies (not available / not needed on aarch64) # pyqtwebengine provides the Qt backend that pywebview needs on Linux. [target.linux-64.dependencies] ros-jazzy-desktop = "*" nodejs = ">=18" pyqtwebengine = "*" qtpy = "*" [target.linux-aarch64.dependencies] ros-jazzy-ros-base = "*" ros-jazzy-rclcpp = "*" # C++ ROS2 client library for gpio_node libgpiod = "*" # C/C++ libgpiod (gpiodcxx) for GPIO hardware access # pywebview is only on PyPI, not conda-forge. # Desktop-only — Raspberry Pi only runs Executor Node. [target.linux-64.pypi-dependencies] pywebview = "*" [tasks] build-interfaces = "colcon build --symlink-install --packages-select blockly_interfaces" [target.linux-64.tasks] build-executor = { cmd = "colcon build --symlink-install --packages-select blockly_executor", depends-on = ["build-interfaces"] } build-app = { cmd = "colcon build --symlink-install --packages-select blockly_app", depends-on = ["build-interfaces"] } build = { cmd = "colcon build --symlink-install", depends-on = ["build-interfaces"] } executor = { cmd = "bash -c 'source install/setup.bash && ros2 run blockly_executor executor_node'", depends-on = ["build-executor"] } executor-hw = { cmd = "bash -c 'source install/setup.bash && ros2 run blockly_executor executor_node --ros-args -p use_real_hardware:=true'", depends-on = ["build-executor"] } app = { cmd = "bash -c 'source install/setup.bash && python -m blockly_app.app'", depends-on = ["build-app"] } test = { cmd = "bash -c 'source install/setup.bash && PYTHONPATH=$PYTHONPATH:src/blockly_executor pytest src/blockly_executor/test/ -v'", depends-on = ["build-interfaces"] } setup-ui = "npm install blockly && mkdir -p src/blockly_app/blockly_app/ui/vendor && cp node_modules/blockly/blockly.min.js src/blockly_app/blockly_app/ui/vendor/ && cp node_modules/blockly/javascript_compressed.js src/blockly_app/blockly_app/ui/vendor/ && cp node_modules/blockly/blocks_compressed.js src/blockly_app/blockly_app/ui/vendor/ && cp node_modules/blockly/msg/en.js src/blockly_app/blockly_app/ui/vendor/" [target.linux-aarch64.tasks] setup-dep = { cmd = "sudo apt update && sudo apt install -y liblttng-ust-dev lttng-tools libgpiod-dev gpiod i2c-tools"} build-gpio = { cmd = "colcon build --symlink-install --packages-select gpio_node", depends-on = ["setup-dep", "build-interfaces"] } gpio-node = { cmd = "bash -c 'source install/setup.bash && ros2 run gpio_node gpio_node'", depends-on = ["build-gpio"] } build-pca9685 = { cmd = "colcon build --symlink-install --packages-select pca9685_node", depends-on = ["setup-dep", "build-interfaces"] } pca9685-node = { cmd = "bash -c 'source install/setup.bash && ros2 run pca9685_node pca9685_node'", depends-on = ["build-pca9685"] } build-as5600 = { cmd = "colcon build --symlink-install --packages-select as5600_node", depends-on = ["setup-dep", "build-interfaces"] } as5600-node = { cmd = "bash -c 'source install/setup.bash && ros2 run as5600_node as5600_node'", depends-on = ["build-as5600"] }