Files
conan2-ros2-video-to-rosbag/Taskfile.ros2.yml

137 lines
4.3 KiB
YAML
Raw Normal View History

2026-02-17 00:13:26 +01:00
# [https://taskfile.dev](https://taskfile.dev)
2026-02-16 19:55:01 +01:00
version: "3"
vars:
BUILD_TYPE: '{{.BUILD_TYPE | default "Release"}}'
VERSION: '{{.CONAN_BUILD_VERSION | default .ENV_CONAN_BUILD_VERSION | default "0.0.0-dev"}}'
# Detect System Architecture (x86_64 or aarch64)
SYSTEM_ARCH:
sh: arch
2026-02-17 00:13:26 +01:00
2026-02-16 19:55:01 +01:00
tasks:
# ============================================================================
# Core Logic (Internal)
# ============================================================================
_validate_arch:
internal: true
silent: true
desc: "Checks if the current system architecture supports the requested build"
requires:
vars: [EXPECTED_ARCH]
cmds:
- |
if [ "{{.SYSTEM_ARCH}}" != "{{.EXPECTED_ARCH}}" ]; then
echo "❌ ARCHITECTURE MISMATCH ERROR:"
echo " - System Arch: {{.SYSTEM_ARCH}}"
echo " - Expected Arch: {{.EXPECTED_ARCH}}"
echo " - Task Type: Native Build"
echo ""
echo " You are trying to run a 'native' build for {{.EXPECTED_ARCH}} on a {{.SYSTEM_ARCH}} machine."
echo " Please use the 'cross-...' task instead."
exit 1
else
echo "✅ Architecture match: System={{.SYSTEM_ARCH}} matches Target={{.EXPECTED_ARCH}}"
fi
_create:
internal: true
desc: "Core wrapper for conan create"
requires:
vars: [PROFILE_HOST, PROFILE_BUILD]
cmds:
- >-
conan create .
--profile:build {{.PROFILE_BUILD}}
--profile:host {{.PROFILE_HOST}}
--build=missing
--version {{.VERSION}}
-s build_type={{.BUILD_TYPE}}
# ============================================================================
# GCC 13 (Modern)
# ============================================================================
native-x64:gcc13:
desc: "Build: Native x64 (GCC 13)"
cmds:
- task: _validate_arch
vars: { EXPECTED_ARCH: "x86_64" }
- task: _create
vars:
PROFILE_BUILD: x64_linux_gcc_13
PROFILE_HOST: x64_linux_gcc_13
native-armv8:gcc13:
desc: "Build: Native ARMv8 (GCC 13)"
cmds:
- task: _validate_arch
vars: { EXPECTED_ARCH: "aarch64" }
- task: _create
vars:
PROFILE_BUILD: armv8_linux_gcc_13
PROFILE_HOST: armv8_linux_gcc_13
cross-armv8:gcc13:
desc: "Build: Cross-Compile x64 -> ARMv8 (GCC 13)"
cmds:
- echo "⚠️ Cross-compiling for ARMv8 on {{.SYSTEM_ARCH}} (No arch check enforced)"
- task: _create
vars:
PROFILE_BUILD: x64_linux_gcc_13
PROFILE_HOST: armv8_linux_gcc_13_croco
# ============================================================================
# GCC 9 (Legacy)
# ============================================================================
native-x64:gcc9:
desc: "Build: Native x64 (GCC 9)"
cmds:
- task: _validate_arch
vars: { EXPECTED_ARCH: "x86_64" }
- task: _create
vars:
PROFILE_BUILD: x64_linux_gcc_9
PROFILE_HOST: x64_linux_gcc_9
native-armv8:gcc9:
desc: "Build: Native ARMv8 (GCC 9)"
cmds:
- task: _validate_arch
vars: { EXPECTED_ARCH: "aarch64" }
- task: _create
vars:
PROFILE_BUILD: armv8_linux_gcc_9
PROFILE_HOST: armv8_linux_gcc_9
cross-armv8:gcc9:
desc: "Build: Cross-Compile x64 -> ARMv8 (GCC 9)"
cmds:
- echo "⚠️ Cross-compiling for ARMv8 on {{.SYSTEM_ARCH}} (No arch check enforced)"
- task: _create
vars:
PROFILE_BUILD: x64_linux_gcc_9
PROFILE_HOST: armv8_linux_gcc_9_croco
2026-02-17 00:13:26 +01:00
# ============================================================================
# Utility Tasks
# ============================================================================
clean:
desc: "Clean build artifacts and conan cache for this package"
cmds:
- rm -rf build install colcon_build
- conan remove video-to-rosbag/* -c
test:
desc: "Run the converter test with sample video"
cmds:
- >-
conan install --requires=video-to-rosbag/{{.VERSION}} -g VirtualRunEnv
--profile:host x64_linux_gcc_13 --profile:build x64_linux_gcc_13
-s build_type={{.BUILD_TYPE}}
- source conanrun.sh && ros2 run video_to_rosbag video_to_rosbag --ros-args -p input_video:=/tmp/test.mp4 -p output_bag:=/tmp/test_bag