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
|