Full Code of autowarefoundation/autoware for AI

main 181bab42929e cached
209 files
437.2 KB
127.0k tokens
1 requests
Download .txt
Showing preview only (486K chars total). Download the full file or copy to clipboard to get everything.
Repository: autowarefoundation/autoware
Branch: main
Commit: 181bab42929e
Files: 209
Total size: 437.2 KB

Directory structure:
gitextract_poq88meg/

├── .ansible-lint
├── .clang-format
├── .clang-tidy
├── .clang-tidy-ci
├── .devcontainer/
│   ├── Dockerfile
│   ├── core-devel/
│   │   └── devcontainer.json
│   ├── universe-devel/
│   │   └── devcontainer.json
│   └── universe-devel-cuda/
│       └── devcontainer.json
├── .dockerignore
├── .fdignore
├── .github/
│   ├── CODEOWNERS
│   ├── DISCUSSION_TEMPLATE/
│   │   └── general.yaml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yaml
│   │   ├── config.yml
│   │   ├── simple-issue.yaml
│   │   └── task.yaml
│   ├── actions/
│   │   ├── combine-multi-arch-images/
│   │   │   └── action.yaml
│   │   ├── docker-build/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push-base/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push-cuda/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push-tools/
│   │   │   └── action.yaml
│   │   └── free-disk-space/
│   │       └── action.yaml
│   ├── dependabot.yaml
│   ├── pull_request_template.md
│   ├── stale.yml
│   ├── sync-files.yaml
│   └── workflows/
│       ├── autoware-base.yaml
│       ├── backport.yaml
│       ├── bump-repo-versions-autoware.yaml
│       ├── bump-repo-versions-simulator.yaml
│       ├── bump-repo-versions-tools.yaml
│       ├── comment-on-pr.yaml
│       ├── dco.yaml
│       ├── docker-build-and-push.yaml
│       ├── github-release.yaml
│       ├── health-check.yaml
│       ├── keep-build-cache-small.yaml
│       ├── load-env.yaml
│       ├── mirror-main-branch.yaml
│       ├── pre-commit-ansible-autoupdate.yaml
│       ├── pre-commit-ansible.yaml
│       ├── pre-commit-optional.yaml
│       ├── pre-commit.yaml
│       ├── scenario-test-reusable.yaml
│       ├── scenario-test.yaml
│       ├── semantic-pull-request.yaml
│       ├── setup-docker.yaml
│       ├── setup-universe.yaml
│       ├── spell-check-daily.yaml
│       ├── spell-check-differential.yaml
│       └── sync-files.yaml
├── .gitignore
├── .hadolint.yaml
├── .markdown-link-check.json
├── .markdownlint.yaml
├── .pre-commit-config-ansible.yaml
├── .pre-commit-config-optional.yaml
├── .pre-commit-config.yaml
├── .prettierignore
├── .prettierrc.yaml
├── .rgignore
├── .shellcheckrc
├── .webauto-ci/
│   └── main/
│       ├── autoware-build/
│       │   └── run.sh
│       ├── autoware-setup/
│       │   └── run.sh
│       └── environment-setup/
│           └── run.sh
├── .webauto-ci.yaml
├── .yamllint.yaml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CPPLINT.cfg
├── DISCLAIMER.md
├── LICENSE
├── NOTICE
├── README.md
├── amd64.env
├── amd64_jazzy.env
├── ansible/
│   ├── .gitignore
│   ├── COLCON_IGNORE
│   ├── README.md
│   ├── galaxy.yml
│   ├── playbooks/
│   │   ├── docker.yaml
│   │   ├── download_artifacts.yaml
│   │   ├── install_rviz_theme.yaml
│   │   ├── install_spconv.yaml
│   │   ├── openadkit.yaml
│   │   ├── role_rmw_implementation.yaml
│   │   ├── setup_acados.yaml
│   │   ├── telegraf.yaml
│   │   └── universe.yaml
│   └── roles/
│       ├── acados/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── agnocast/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── artifacts/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── build_tools/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── cuda/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── dev_tools/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── docker_engine/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── gdown/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── geographiclib/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── kisak_mesa/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── nvidia_container_toolkit/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── qt5ct_setup/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yml
│       │   ├── files/
│       │   │   ├── autoware.qss
│       │   │   └── qt5ct.conf
│       │   ├── meta/
│       │   │   └── main.yml
│       │   └── tasks/
│       │       └── main.yml
│       ├── rmw_implementation/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── ros2/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── ros2_dev_tools/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── spconv/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── telegraf/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── files/
│       │   │   ├── get_telegraf_proccpu_json.sh
│       │   │   ├── get_telegraf_procmem_json.sh
│       │   │   └── telegraf.conf
│       │   ├── handlers/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       └── tensorrt/
│           ├── README.md
│           ├── defaults/
│           │   └── main.yaml
│           ├── meta/
│           │   └── main.yaml
│           └── tasks/
│               └── main.yaml
├── ansible-galaxy-requirements.yaml
├── arm64.env
├── docker/
│   ├── Dockerfile
│   ├── Dockerfile.base
│   ├── README.md
│   ├── build.sh
│   ├── docker-bake-base.hcl
│   ├── docker-bake-cuda.hcl
│   ├── docker-bake.hcl
│   ├── docker-compose.gpu.yaml
│   ├── docker-compose.yaml
│   ├── etc/
│   │   ├── .bash_aliases
│   │   └── ros_entrypoint.sh
│   ├── logging-simulation.env
│   ├── logging-simulation.gpu.env
│   ├── planning-simulation.env
│   ├── run.sh
│   ├── scripts/
│   │   ├── build_and_clean.sh
│   │   ├── cleanup_apt.sh
│   │   ├── cleanup_system.sh
│   │   └── resolve_rosdep_keys.sh
│   └── tools/
│       ├── README.md
│       ├── docker-bake.hcl
│       ├── scenario-simulator/
│       │   ├── Dockerfile
│       │   ├── README.md
│       │   └── entrypoint.sh
│       └── visualizer/
│           ├── Dockerfile
│           ├── README.md
│           ├── entrypoint.sh
│           └── xstartup
├── repositories/
│   ├── autoware-nightly.repos
│   ├── autoware.repos
│   ├── extra-packages.repos
│   ├── simulator-nightly.repos
│   ├── simulator.repos
│   ├── tools-nightly.repos
│   └── tools.repos
├── setup-dev-env.sh
├── setup.cfg
└── src/
    ├── .gitignore
    └── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .ansible-lint
================================================
skip_list:
  - galaxy # We don't publish to Ansible Galaxy.
  - package-latest # Since this is a development environment, we allow the latest versions.

warn_list: []


================================================
FILE: .clang-format
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

# Modified from https://github.com/ament/ament_lint/blob/master/ament_clang_format/ament_clang_format/configuration/.clang-format
Language: Cpp
BasedOnStyle: Google

AccessModifierOffset: -2
AlignAfterOpenBracket: AlwaysBreak
AllowShortFunctionsOnASingleLine: InlineOnly
BraceWrapping:
  AfterClass: true
  AfterFunction: true
  AfterNamespace: true
  AfterStruct: true
BreakBeforeBraces: Custom
ColumnLimit: 100
ConstructorInitializerIndentWidth: 0
ContinuationIndentWidth: 2
DerivePointerAlignment: false
PointerAlignment: Middle
ReflowComments: true
IncludeCategories:
  # C++ system headers
  - Regex: <[a-z_]*>
    Priority: 6
    CaseSensitive: true
  # C system headers
  - Regex: <.*\.h>
    Priority: 5
    CaseSensitive: true
  # Boost headers
  - Regex: boost/.*
    Priority: 4
    CaseSensitive: true
  # Message headers
  - Regex: .*_msgs/.*
    Priority: 3
    CaseSensitive: true
  - Regex: .*_srvs/.*
    Priority: 3
    CaseSensitive: true
  # Other Package headers
  - Regex: <.*>
    Priority: 2
    CaseSensitive: true
  # Local package headers
  - Regex: '".*"'
    Priority: 1
    CaseSensitive: true


================================================
FILE: .clang-tidy
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

Checks: "
  -*,
  boost-use-to-string,
  bugprone-argument-comment,
  bugprone-assert-side-effect,
  bugprone-bad-signal-to-kill-thread,
  bugprone-bool-pointer-implicit-conversion,
  bugprone-branch-clone,
  bugprone-copy-constructor-init,
  bugprone-dangling-handle,
  bugprone-dynamic-static-initializers,
  bugprone-exception-escape,
  bugprone-fold-init-type,
  bugprone-forward-declaration-namespace,
  bugprone-forwarding-reference-overload,
  bugprone-inaccurate-erase,
  bugprone-incorrect-roundings,
  bugprone-integer-division,
  bugprone-lambda-function-name,
  bugprone-macro-parentheses,
  bugprone-macro-repeated-side-effects,
  bugprone-misplaced-operator-in-strlen-in-alloc,
  bugprone-misplaced-widening-cast,
  bugprone-move-forwarding-reference,
  bugprone-multiple-statement-macro,
  bugprone-not-null-terminated-result,
  bugprone-parent-virtual-call,
  bugprone-posix-return,
  bugprone-signed-char-misuse,
  bugprone-sizeof-container,
  bugprone-sizeof-expression,
  bugprone-string-constructor,
  bugprone-string-integer-assignment,
  bugprone-string-literal-with-embedded-nul,
  bugprone-suspicious-enum-usage,
  bugprone-suspicious-memset-usage,
  bugprone-suspicious-missing-comma,
  bugprone-suspicious-semicolon,
  bugprone-suspicious-string-compare,
  bugprone-swapped-arguments,
  bugprone-terminating-continue,
  bugprone-throw-keyword-missing,
  bugprone-too-small-loop-variable,
  bugprone-unchecked-optional-access,
  bugprone-undefined-memory-manipulation,
  bugprone-undelegated-constructor,
  bugprone-unhandled-self-assignment,
  bugprone-unused-raii,
  bugprone-unused-return-value,
  bugprone-use-after-move,
  bugprone-virtual-near-miss,
  cppcoreguidelines-avoid-goto,
  cppcoreguidelines-init-variables,
  cppcoreguidelines-interfaces-global-init,
  cppcoreguidelines-macro-usage,
  cppcoreguidelines-narrowing-conversions,
  cppcoreguidelines-no-malloc,
  cppcoreguidelines-pro-bounds-pointer-arithmetic,
  cppcoreguidelines-pro-type-const-cast,
  cppcoreguidelines-pro-type-cstyle-cast,
  cppcoreguidelines-pro-type-member-init,
  cppcoreguidelines-pro-type-reinterpret-cast,
  cppcoreguidelines-pro-type-static-cast-downcast,
  cppcoreguidelines-pro-type-union-access,
  cppcoreguidelines-slicing,
  cppcoreguidelines-special-member-functions,
  google-build-explicit-make-pair,
  google-build-namespaces,
  google-build-using-namespace,
  google-explicit-constructor,
  google-global-names-in-headers,
  google-upgrade-googletest-case,
  hicpp-exception-baseclass,
  hicpp-multiway-paths-covered,
  hicpp-no-assembler,
  hicpp-signed-bitwise,
  llvm-namespace-comment,
  misc-definitions-in-headers,
  misc-misplaced-const,
  misc-new-delete-overloads,
  misc-non-copyable-objects,
  misc-redundant-expression,
  misc-static-assert,
  misc-throw-by-value-catch-by-reference,
  misc-unconventional-assign-operator,
  misc-uniqueptr-reset-release,
  misc-unused-alias-decls,
  misc-unused-parameters,
  misc-unused-using-decls,
  modernize-concat-nested-namespaces,
  modernize-deprecated-headers,
  modernize-deprecated-ios-base-aliases,
  modernize-loop-convert,
  modernize-make-shared,
  modernize-make-unique,
  modernize-pass-by-value,
  modernize-raw-string-literal,
  modernize-redundant-void-arg,
  modernize-replace-auto-ptr,
  modernize-replace-disallow-copy-and-assign-macro,
  modernize-replace-random-shuffle,
  modernize-return-braced-init-list,
  modernize-shrink-to-fit,
  modernize-unary-static-assert,
  modernize-use-auto,
  modernize-use-bool-literals,
  modernize-use-default-member-init,
  modernize-use-emplace,
  modernize-use-equals-default,
  modernize-use-equals-delete,
  modernize-use-nodiscard,
  modernize-use-noexcept,
  modernize-use-nullptr,
  modernize-use-override,
  modernize-use-transparent-functors,
  modernize-use-uncaught-exceptions,
  modernize-use-using,
  openmp-use-default-none,
  performance-faster-string-find,
  performance-for-range-copy,
  performance-implicit-conversion-in-loop,
  performance-inefficient-algorithm,
  performance-inefficient-string-concatenation,
  performance-inefficient-vector-operation,
  performance-move-const-arg,
  performance-move-constructor-init,
  performance-no-automatic-move,
  performance-no-int-to-ptr,
  performance-noexcept-move-constructor,
  performance-trivially-destructible,
  performance-type-promotion-in-math-fn,
  performance-unnecessary-copy-initialization,
  performance-unnecessary-value-param,
  portability-simd-intrinsics,
  readability-const-return-type,
  readability-container-size-empty,
  readability-convert-member-functions-to-static,
  readability-delete-null-pointer,
  readability-else-after-return,
  readability-function-cognitive-complexity,
  readability-identifier-naming,
  readability-inconsistent-declaration-parameter-name,
  readability-isolate-declaration,
  readability-make-member-function-const,
  readability-misleading-indentation,
  readability-misplaced-array-index,
  readability-non-const-parameter,
  readability-redundant-access-specifiers,
  readability-redundant-control-flow,
  readability-redundant-declaration,
  readability-redundant-function-ptr-dereference,
  readability-redundant-member-init,
  readability-redundant-smartptr-get,
  readability-redundant-string-cstr,
  readability-redundant-string-init,
  readability-simplify-boolean-expr,
  readability-simplify-subscript-expr,
  readability-static-accessed-through-instance,
  readability-static-definition-in-anonymous-namespace,
  readability-string-compare,
  readability-uniqueptr-delete-release"

WarningsAsErrors: "
  boost-use-to-string,
  bugprone-dangling-handle,
  bugprone-fold-init-type,
  bugprone-inaccurate-erase,
  bugprone-incorrect-roundings,
  bugprone-misplaced-widening-cast,
  bugprone-sizeof-container,
  bugprone-sizeof-expression,
  bugprone-string-constructor,
  bugprone-suspicious-enum-usage,
  bugprone-suspicious-memset-usage,
  bugprone-suspicious-missing-comma,
  bugprone-suspicious-semicolon,
  bugprone-swapped-arguments,
  bugprone-unused-raii,
  bugprone-use-after-move,
  llvm-namespace-comment,
  misc-non-copyable-objects,
  misc-redundant-expression,
  misc-throw-by-value-catch-by-reference,
  misc-unused-alias-decls,
  misc-unused-parameters,
  misc-unused-using-decls,
  modernize-deprecated-headers,
  modernize-redundant-void-arg,
  modernize-use-bool-literals,
  modernize-use-emplace,
  modernize-use-equals-default,
  modernize-use-equals-delete,
  modernize-use-nullptr,
  modernize-use-override,
  modernize-use-using,
  performance-faster-string-find,
  performance-inefficient-algorithm,
  readability-make-member-function-const,
  readability-misleading-indentation,
  readability-misplaced-array-index,
  readability-string-compare"

HeaderFilterRegex: ^(?!\/usr)(?!\/opt)

ExtraArgs:
  - -std=c++17

FormatStyle: none

CheckOptions:
  - key: bugprone-argument-comment.CommentBoolLiterals
    value: "0"
  - key: bugprone-argument-comment.CommentCharacterLiterals
    value: "0"
  - key: bugprone-argument-comment.CommentFloatLiterals
    value: "0"
  - key: bugprone-argument-comment.CommentIntegerLiterals
    value: "0"
  - key: bugprone-argument-comment.CommentNullPtrs
    value: "0"
  - key: bugprone-argument-comment.CommentStringLiterals
    value: "0"
  - key: bugprone-argument-comment.CommentUserDefinedLiterals
    value: "0"
  - key: bugprone-argument-comment.IgnoreSingleArgument
    value: "0"
  - key: bugprone-argument-comment.StrictMode
    value: "0"
  - key: bugprone-assert-side-effect.AssertMacros
    value: assert
  - key: bugprone-assert-side-effect.CheckFunctionCalls
    value: "0"
  - key: bugprone-dangling-handle.HandleClasses
    value: std::basic_string_view;std::experimental::basic_string_view
  - key: bugprone-dynamic-static-initializers.HeaderFileExtensions
    value: ",h,hh,hpp,hxx"
  - key: bugprone-exception-escape.FunctionsThatShouldNotThrow
    value: ""
  - key: bugprone-exception-escape.IgnoredExceptions
    value: ""
  - key: bugprone-misplaced-widening-cast.CheckImplicitCasts
    value: "0"
  - key: bugprone-not-null-terminated-result.WantToUseSafeFunctions
    value: "1"
  - key: bugprone-signed-char-misuse.CharTypdefsToIgnore
    value: ""
  - key: bugprone-sizeof-expression.WarnOnSizeOfCompareToConstant
    value: "1"
  - key: bugprone-sizeof-expression.WarnOnSizeOfConstant
    value: "1"
  - key: bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression
    value: "0"
  - key: bugprone-sizeof-expression.WarnOnSizeOfThis
    value: "1"
  - key: bugprone-string-constructor.LargeLengthThreshold
    value: "8388608"
  - key: bugprone-string-constructor.WarnOnLargeLength
    value: "1"
  - key: bugprone-suspicious-enum-usage.StrictMode
    value: "0"
  - key: bugprone-suspicious-missing-comma.MaxConcatenatedTokens
    value: "5"
  - key: bugprone-suspicious-missing-comma.RatioThreshold
    value: "0.200000"
  - key: bugprone-suspicious-missing-comma.SizeThreshold
    value: "5"
  - key: bugprone-suspicious-string-compare.StringCompareLikeFunctions
    value: ""
  - key: bugprone-suspicious-string-compare.WarnOnImplicitComparison
    value: "1"
  - key: bugprone-suspicious-string-compare.WarnOnLogicalNotComparison
    value: "0"
  - key: bugprone-too-small-loop-variable.MagnitudeBitsUpperLimit
    value: "16"
  - key: bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField
    value: "1"
  - key: bugprone-unused-return-value.CheckedFunctions
    value: ::std::async;::std::launder;::std::remove;::std::remove_if;::std::unique;::std::unique_ptr::release;::std::basic_string::empty;::std::vector::empty
  - key: cert-dcl16-c.NewSuffixes
    value: L;LL;LU;LLU
  - key: cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField
    value: "0"
  - key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors
    value: "1"
  - key: cppcoreguidelines-macro-usage.AllowedRegexp
    value: ^DEBUG_*
  - key: cppcoreguidelines-macro-usage.CheckCapsOnly
    value: "0"
  - key: cppcoreguidelines-macro-usage.IgnoreCommandLineMacros
    value: "1"
  - key: cppcoreguidelines-no-malloc.Allocations
    value: ::malloc;::calloc
  - key: cppcoreguidelines-no-malloc.Deallocations
    value: ::free
  - key: cppcoreguidelines-no-malloc.Reallocations
    value: ::realloc
  - key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
    value: "1"
  - key: cppcoreguidelines-pro-type-member-init.IgnoreArrays
    value: "0"
  - key: cppcoreguidelines-pro-type-member-init.UseAssignment
    value: "0"
  - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions
    value: "0"
  - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
    value: "0"
  - key: google-readability-braces-around-statements.ShortStatementLines
    value: "1"
  - key: google-readability-function-size.StatementThreshold
    value: "800"
  - key: google-readability-namespace-comments.ShortNamespaceLines
    value: "10"
  - key: google-readability-namespace-comments.SpacesBeforeComments
    value: "2"
  - key: hicpp-multiway-paths-covered.WarnOnMissingElse
    value: "0"
  - key: hicpp-signed-bitwise.IgnorePositiveIntegerLiterals
    value: "0"
  - key: misc-definitions-in-headers.HeaderFileExtensions
    value: ",h,hh,hpp,hxx"
  - key: misc-definitions-in-headers.UseHeaderFileExtension
    value: "1"
  - key: misc-throw-by-value-catch-by-reference.CheckThrowTemporaries
    value: "1"
  - key: misc-unused-parameters.StrictMode
    value: "0"
  - key: modernize-loop-convert.MaxCopySize
    value: "16"
  - key: modernize-loop-convert.MinConfidence
    value: reasonable
  - key: modernize-loop-convert.NamingStyle
    value: CamelCase
  - key: modernize-make-shared.IgnoreMacros
    value: "1"
  - key: modernize-make-shared.IncludeStyle
    value: google
  - key: modernize-make-shared.MakeSmartPtrFunction
    value: std::make_shared
  - key: modernize-make-shared.MakeSmartPtrFunctionHeader
    value: memory
  - key: modernize-make-unique.IgnoreMacros
    value: "1"
  - key: modernize-make-unique.IncludeStyle
    value: google
  - key: modernize-make-unique.MakeSmartPtrFunction
    value: std::make_unique
  - key: modernize-make-unique.MakeSmartPtrFunctionHeader
    value: memory
  - key: modernize-pass-by-value.IncludeStyle
    value: google
  - key: modernize-pass-by-value.ValuesOnly
    value: "0"
  - key: modernize-raw-string-literal.ReplaceShorterLiterals
    value: "0"
  - key: modernize-replace-auto-ptr.IncludeStyle
    value: google
  - key: modernize-replace-random-shuffle.IncludeStyle
    value: google
  - key: modernize-use-auto.MinTypeNameLength
    value: "5"
  - key: modernize-use-auto.RemoveStars
    value: "0"
  - key: modernize-use-default-member-init.IgnoreMacros
    value: "1"
  - key: modernize-use-default-member-init.UseAssignment
    value: "0"
  - key: modernize-use-emplace.ContainersWithPushBack
    value: ::std::vector;::std::list;::std::deque
  - key: modernize-use-emplace.SmartPointers
    value: ::std::shared_ptr;::std::unique_ptr;::std::auto_ptr;::std::weak_ptr
  - key: modernize-use-emplace.TupleMakeFunctions
    value: ::std::make_pair;::std::make_tuple
  - key: modernize-use-emplace.TupleTypes
    value: ::std::pair;::std::tuple
  - key: modernize-use-equals-default.IgnoreMacros
    value: "1"
  - key: modernize-use-equals-delete.IgnoreMacros
    value: "1"
  - key: modernize-use-nodiscard.ReplacementString
    value: "[[nodiscard]]"
  - key: modernize-use-noexcept.ReplacementString
    value: ""
  - key: modernize-use-noexcept.UseNoexceptFalse
    value: "1"
  - key: modernize-use-nullptr.NullMacros
    value: "NULL"
  - key: modernize-use-override.AllowOverrideAndFinal
    value: "0"
  - key: modernize-use-override.FinalSpelling
    value: final
  - key: modernize-use-override.IgnoreDestructors
    value: "0"
  - key: modernize-use-override.OverrideSpelling
    value: override
  - key: modernize-use-transparent-functors.SafeMode
    value: "0"
  - key: modernize-use-using.IgnoreMacros
    value: "1"
  - key: performance-faster-string-find.StringLikeClasses
    value: std::basic_string
  - key: performance-for-range-copy.AllowedTypes
    value: ""
  - key: performance-for-range-copy.WarnOnAllAutoCopies
    value: "0"
  - key: performance-inefficient-string-concatenation.StrictMode
    value: "0"
  - key: performance-inefficient-vector-operation.EnableProto
    value: "0"
  - key: performance-inefficient-vector-operation.VectorLikeClasses
    value: ::std::vector
  - key: performance-move-const-arg.CheckTriviallyCopyableMove
    value: "1"
  - key: performance-move-constructor-init.IncludeStyle
    value: google
  - key: performance-no-automatic-move.AllowedTypes
    value: ""
  - key: performance-type-promotion-in-math-fn.IncludeStyle
    value: google
  - key: performance-unnecessary-copy-initialization.AllowedTypes
    value: ""
  - key: performance-unnecessary-value-param.AllowedTypes
    value: .*Ptr;.*SharedFuture
  - key: performance-unnecessary-value-param.IncludeStyle
    value: google
  - key: portability-simd-intrinsics.Std
    value: ""
  - key: portability-simd-intrinsics.Suggest
    value: "0"
  - key: readability-function-cognitive-complexity.IgnoreMacros
    value: "1"
  - key: readability-else-after-return.WarnOnUnfixable
    value: "1"
  - key: readability-identifier-naming.NamespaceCase
    value: lower_case
  - key: readability-identifier-naming.ClassCase
    value: CamelCase
  - key: readability-identifier-naming.PrivateMemberSuffix
    value: _
  - key: readability-identifier-naming.StructCase
    value: CamelCase
  - key: readability-identifier-naming.FunctionCase
    value: lower_case
  - key: readability-identifier-naming.VariableCase
    value: lower_case
  - key: readability-identifier-naming.GlobalConstantCase
    value: lower_case
  - key: readability-identifier-naming.GlobalConstantPrefix
    value: g_
  - key: readability-identifier-naming.ConstexprVariableCase
    value: lower_case
  - key: readability-inconsistent-declaration-parameter-name.IgnoreMacros
    value: "1"
  - key: readability-inconsistent-declaration-parameter-name.Strict
    value: "0"
  - key: readability-redundant-smartptr-get.IgnoreMacros
    value: "1"
  - key: readability-redundant-string-init.StringNames
    value: ::std::basic_string
  - key: readability-simplify-subscript-expr.Types
    value: ::std::basic_string;::std::basic_string_view;::std::vector;::std::array
  - key: readability-static-accessed-through-instance.NameSpecifierNestingThreshold
    value: "3"


================================================
FILE: .clang-tidy-ci
================================================
Checks: "
  -*,
  bugprone-*,
  -bugprone-branch-clone,
  -bugprone-easily-swappable-parameters,
  -bugprone-exception-escape,
  -bugprone-implicit-widening-of-multiplication-result,
  -bugprone-infinite-loop,
  -bugprone-integer-division,
  -bugprone-macro-parentheses,
  -bugprone-narrowing-conversions,
  -bugprone-parent-virtual-call,
  -bugprone-reserved-identifier,
  -bugprone-signed-char-misuse"

WarningsAsErrors: "*"

ExtraArgs:
  - -std=c++17
  - -Wno-c11-extensions
  - -Wno-unknown-warning-option


================================================
FILE: .devcontainer/Dockerfile
================================================
# hadolint global ignore=DL3006
ARG BASE_IMAGE
FROM $BASE_IMAGE

ENV SHELL /bin/bash

ARG USERNAME=autoware
ARG USER_UID=1000
ARG USER_GID=$USER_UID

RUN groupadd --gid $USER_GID $USERNAME \
  && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
  && apt-get update \
  && apt-get install -y sudo \
  && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
  && chmod 0440 /etc/sudoers.d/$USERNAME


================================================
FILE: .devcontainer/core-devel/devcontainer.json
================================================
{
  "name": "autoware:core-devel",
  "build": {
    "dockerfile": "../Dockerfile",
    "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:core-devel" }
  },
  "remoteUser": "autoware",
  "runArgs": [
    "--cap-add=SYS_PTRACE",
    "--security-opt",
    "seccomp=unconfined",
    "--net=host",
    "--volume=/etc/localtime:/etc/localtime:ro"
  ],
  "customizations": {
    "vscode": {
      "settings.json": {
        "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } }
      }
    }
  }
}


================================================
FILE: .devcontainer/universe-devel/devcontainer.json
================================================
{
  "name": "autoware:universe-devel",
  "build": {
    "dockerfile": "../Dockerfile",
    "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:universe-devel" }
  },
  "remoteUser": "autoware",
  "runArgs": [
    "--cap-add=SYS_PTRACE",
    "--security-opt",
    "seccomp=unconfined",
    "--net=host",
    "--volume=/etc/localtime:/etc/localtime:ro"
  ],
  "customizations": {
    "vscode": {
      "settings.json": {
        "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } }
      }
    }
  }
}


================================================
FILE: .devcontainer/universe-devel-cuda/devcontainer.json
================================================
{
  "name": "autoware:universe-devel-cuda",
  "build": {
    "dockerfile": "../Dockerfile",
    "args": { "BASE_IMAGE": "ghcr.io/autowarefoundation/autoware:universe-devel-cuda" }
  },
  "remoteUser": "autoware",
  "hostRequirements": {
    "gpu": true
  },
  "runArgs": [
    "--cap-add=SYS_PTRACE",
    "--security-opt",
    "seccomp=unconfined",
    "--net=host",
    "--volume=/etc/localtime:/etc/localtime:ro",
    "--gpus",
    "all"
  ],
  "customizations": {
    "vscode": {
      "settings.json": {
        "terminal.integrated.profiles.linux": { "bash": { "path": "/bin/bash" } }
      }
    }
  }
}


================================================
FILE: .dockerignore
================================================
# Ignore git and metadata directories
.git
.github
.vscode

# Ignore all markdown files
*.md

# Ignore Docker files
docker
!docker/etc
!docker/scripts
!docker/tools

# Ignore a part of files under src
src/**/.*
src/**/*.asc
src/**/*.gif
src/**/*.md
src/**/*.svg

# Ignore generated files by colcon
build
install
log


================================================
FILE: .fdignore
================================================
!/src/


================================================
FILE: .github/CODEOWNERS
================================================
* ryohsuke.mitsudome@tier4.jp mfc@autoware.org

.devcontainer/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp
.github/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp isamu.takagi@tier4.jp
ansible/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp isamu.takagi@tier4.jp
docker/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp isamu.takagi@tier4.jp


================================================
FILE: .github/DISCUSSION_TEMPLATE/general.yaml
================================================
body:
  - type: checkboxes
    attributes:
      label: Code of Conduct
      options:
        - label: I have read [CODE OF CONDUCT](https://github.com/autowarefoundation/autoware/blob/main/CODE_OF_CONDUCT.md) and [Support Guidelines](https://autowarefoundation.github.io/autoware-documentation/main/support/support-guidelines/#github-discussions) before creating this Discussion post.
          required: true
  - type: textarea
    attributes:
      label: Contents
      description: Write your contents here
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/bug.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: Bug
description: Report a bug
body:
  - type: checkboxes
    attributes:
      label: Checklist
      description: Confirm the following items before proceeding. If one cannot be satisfied, create a discussion thread instead.
      options:
        - label: I've read the [contribution guidelines](https://github.com/autowarefoundation/autoware/blob/main/CONTRIBUTING.md).
          required: true
        - label: I've searched other issues and no duplicate issues were found.
          required: true
        - label: I'm convinced that this is not my fault but a bug.
          required: true

  - type: textarea
    attributes:
      label: Description
      description: Write a brief description of the bug.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Expected behavior
      description: Describe the expected behavior.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Actual behavior
      description: Describe the actual behavior.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Steps to reproduce
      description: Write the steps to reproduce the bug.
      placeholder: |-
        1.
        2.
        3.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Versions
      description: Provide the version information. You can omit this if you believe it's irrelevant.
      placeholder: |-
        - OS:
        - ROS 2:
        - Autoware:
    validations:
      required: false

  - type: textarea
    attributes:
      label: Possible causes
      description: Write the possible causes if you have any ideas.
    validations:
      required: false

  - type: textarea
    attributes:
      label: Additional context
      description: Add any other additional context if it exists.
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

blank_issues_enabled: false
contact_links:
  - name: Question
    url: https://github.com/autowarefoundation/autoware/discussions/new?category=q-a
    about: Ask a question

  - name: Feature request
    url: https://github.com/autowarefoundation/autoware/discussions/new?category=feature-requests
    about: Send a feature request

  - name: Idea
    url: https://github.com/autowarefoundation/autoware/discussions/new?category=ideas
    about: Post an idea


================================================
FILE: .github/ISSUE_TEMPLATE/simple-issue.yaml
================================================
name: Simple Issue
description: Create a simple issue
body:
  - type: checkboxes
    attributes:
      label: Checklist
      description: Confirm the following items before proceeding. If one cannot be satisfied, create a discussion thread instead.
      options:
        - label: I've read the [contribution guidelines](https://github.com/autowarefoundation/autoware/blob/main/CONTRIBUTING.md).
          required: true
        - label: I've searched other issues and no duplicate issues were found.
          required: true

  - type: textarea
    attributes:
      label: Description
      description: Write a brief description of the issue.
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/task.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: Task
description: Plan a task
body:
  - type: checkboxes
    attributes:
      label: Checklist
      description: Confirm the following items before proceeding. If one cannot be satisfied, create a discussion thread instead.
      options:
        - label: I've read the [contribution guidelines](https://github.com/autowarefoundation/autoware/blob/main/CONTRIBUTING.md).
          required: true
        - label: I've searched other issues and no duplicate issues were found.
          required: true
        - label: I've agreed with the maintainers that I can plan this task.
          required: true

  - type: textarea
    attributes:
      label: Description
      description: Write a brief description of the task.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Purpose
      description: Describe the purpose of the task.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Possible approaches
      description: Describe possible approaches for the task.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Definition of done
      description: Write the definition of done for the task.
    validations:
      required: true


================================================
FILE: .github/actions/combine-multi-arch-images/action.yaml
================================================
name: combine-multi-arch-images
description: ""

inputs:
  package-name:
    description: ""
    required: true

runs:
  using: composite
  steps:
    - name: Login to GitHub Container Registry
      uses: docker/login-action@v2
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ github.token }}

    - name: Set image name
      id: set-image-name
      run: echo "image-name=ghcr.io/${{ github.repository_owner }}/${{ inputs.package-name }}" >> $GITHUB_OUTPUT
      shell: bash

    - name: Get all tags
      id: get-all-tags
      run: |
        base_url="https://api.github.com/orgs/${{ github.repository_owner }}/packages/container/${{ inputs.package-name }}/versions"
        echo "base_url: $base_url"

        all_tags=()
        for page in $(seq 1 10); do
          page_url="${base_url}?page=$page"
          echo -e "\npage_url: $page_url"

          page_tags=$(curl -fsSL "$page_url" -H "Authorization: token ${{ github.token }}" | jq ".[].metadata.container.tags[]" | cut -d '"' -f 2)
          echo -e "\n[page_tags]\n$page_tags"

          if [ "$page_tags" = "" ]; then
            echo "No tags found in the page $page."
            break
          fi

          for tag in $(IFS=$'\n'; echo "$page_tags"); do
            all_tags+=("$tag")
          done
        done

        all_tags=$(printf "%s\n" ${all_tags[@]})
        echo -e "\n[all_tags]\n$all_tags"

        echo "tags=$(printf "%s " $all_tags | sed 's/\s*$//')" >> $GITHUB_OUTPUT
      shell: bash

    - name: Get base tags
      id: get-base-tags
      run: |
        amd64_tags=$(printf "%s\n" $ALL_TAGS | grep "\-amd64" | sed "s/-amd64$//g")
        arm64_tags=$(printf "%s\n" $ALL_TAGS | grep "\-arm64" | sed "s/-arm64$//g")
        base_tags=$(printf "%s\n" "$amd64_tags" "$arm64_tags" | sort | uniq)

        echo -e "\n[amd64_tags]\n$amd64_tags"
        echo -e "\n[arm64_tags]\n$arm64_tags"
        echo -e "\n[base_tags]\n$base_tags"

        echo "tags=$(printf "%s " $base_tags | sed 's/\s*$//')" >> $GITHUB_OUTPUT
      env:
        ALL_TAGS: ${{ steps.get-all-tags.outputs.tags }}
      shell: bash

    - name: Create Docker manifest and delete -amd64 and -arm64 tags
      run: |
        for base_tag in $BASE_TAGS; do
          echo -e "\nbase_tag: $base_tag"

          amd64_tag=$(printf "%s\n" $ALL_TAGS | grep "^$base_tag\-amd64" || true)
          arm64_tag=$(printf "%s\n" $ALL_TAGS | grep "^$base_tag\-arm64" || true)

          echo "amd64_tag: $amd64_tag"
          echo "arm64_tag: $arm64_tag"

          if [ "$amd64_tag" != "" ]; then
            amd64_image="${{ steps.set-image-name.outputs.image-name }}:$amd64_tag"
          else
            echo "No amd64 tag found for '$base_tag'."
            continue
          fi

          if [ "$arm64_tag" != "" ]; then
            arm64_image="${{ steps.set-image-name.outputs.image-name }}:$arm64_tag"
          else
            echo "No arm64 tag found for '$base_tag'."
            continue
          fi

          echo "amd64_image: $amd64_image"
          echo "arm64_image: $arm64_image"

          if docker manifest create ${{ steps.set-image-name.outputs.image-name }}:$base_tag \
            $amd64_image \
            $arm64_image; then

            docker manifest push ${{ steps.set-image-name.outputs.image-name }}:$base_tag

            # Delete amd64_image and arm64_image
            curl -X DELETE \
              -H "Authorization: Bearer ${{ github.token }}" \
              -H "Accept: application/vnd.github.v3+json" \
              https://api.github.com/orgs/${{ github.repository_owner }}/packages/container/${{ inputs.package-name }}/versions/$amd64_tag
            curl -X DELETE \
              -H "Authorization: Bearer ${{ github.token }}" \
              -H "Accept: application/vnd.github.v3+json" \
              https://api.github.com/orgs/${{ github.repository_owner }}/packages/container/${{ inputs.package-name }}/versions/$arm64_tag
          fi
        done
      env:
        ALL_TAGS: ${{ steps.get-all-tags.outputs.tags }}
        BASE_TAGS: ${{ steps.get-base-tags.outputs.tags }}
      shell: bash


================================================
FILE: .github/actions/docker-build/action.yaml
================================================
name: docker-build
description: Composite action to build images only.

inputs:
  platform:
    description: Target platform.
    required: true
  cache-tag-suffix:
    description: Suffix of the target cache tag.
    required: true
  additional-repos:
    description: Additional target .repos file.
    default: ""
    required: false
  build-args:
    description: Additional build args.
    required: false
  image-artifact-name:
    description: Name of the exported docker image artifact.
    default: ""
    required: false
  image-tag:
    description: Tag for the saved docker image.
    default: autoware:health-check-${{ github.sha }}
    required: false

runs:
  using: composite
  steps:
    - name: Setup Docker Buildx
      uses: docker/setup-buildx-action@v3

    - name: Install vcs2l
      run: |
        sudo apt-get -y update
        sudo apt-get -y install python3-pip
        pipx install vcs2l
      shell: bash

    - name: Run vcs import
      run: |
        mkdir -p src
        vcs import --shallow src < repositories/autoware.repos
      shell: bash

    - name: Import additional repositories
      if: ${{ inputs.additional-repos != '' }}
      run: |
        vcs import --shallow --force src < ${{ inputs.additional-repos }}
      shell: bash

    - name: Cache ccache
      uses: actions/cache@v4
      if: ${{ github.ref == 'refs/heads/main'}}
      id: cache-ccache
      with:
        path: |
          root-ccache
        key: ccache-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-${{ hashFiles('src/**/*.cpp') }}
        restore-keys: |
          ccache-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-
          ccache-${{ inputs.platform }}-

    - name: Cache apt-get
      uses: actions/cache@v4
      if: ${{ github.ref == 'refs/heads/main'}}
      id: cache-apt-get
      with:
        path: |
          var-cache-apt
        key: apt-get-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-${{ hashFiles('src/**/package.xml') }}
        restore-keys: |
          apt-get-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-
          apt-get-${{ inputs.platform }}-

    - name: Restore ccache
      uses: actions/cache/restore@v4
      if: ${{ github.ref != 'refs/heads/main'}}
      with:
        path: |
          root-ccache
        key: ccache-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-${{ hashFiles('src/**/*.cpp') }}
        restore-keys: |
          ccache-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-
          ccache-${{ inputs.platform }}-

    - name: Restore apt-get
      uses: actions/cache/restore@v4
      if: ${{ github.ref != 'refs/heads/main'}}
      with:
        path: |
          var-cache-apt
        key: apt-get-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-${{ hashFiles('src/**/package.xml') }}
        restore-keys: |
          apt-get-${{ inputs.platform }}-${{ inputs.cache-tag-suffix }}-
          apt-get-${{ inputs.platform }}-

    - name: Inject cache into docker
      # TODO(youtalk): Use the release version again
      uses: reproducible-containers/buildkit-cache-dance@7c892679bab8ff382a8c88ab7f973d5e30a8f239
      with:
        utility-image: ghcr.io/containerd/busybox:latest
        cache-map: |
          {
            "root-ccache": "/root/.ccache",
            "var-cache-apt": "/var/cache/apt"
          }
        skip-extraction: ${{ steps.cache-ccache.outputs.cache-hit && steps.cache-apt-get.outputs.cache-hit }}

    - name: Login to GitHub Container Registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ github.token }}

    - name: Run docker build
      uses: docker/build-push-action@v6
      with:
        file: docker/Dockerfile
        context: .
        push: false
        load: true
        target: universe-devel
        build-args: ${{ inputs.build-args }}
        cache-from: type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ inputs.platform }}-main
        tags: ${{ inputs.image-tag }}

    - name: Save Docker image
      if: ${{ inputs.image-artifact-name != '' }}
      run: docker save ${{ inputs.image-tag }} | gzip > /tmp/autoware-image.tar.gz
      shell: bash
    - name: Upload Docker image artifact
      if: ${{ inputs.image-artifact-name != '' }}
      uses: actions/upload-artifact@v4
      with:
        name: ${{ inputs.image-artifact-name }}
        path: /tmp/autoware-image.tar.gz


================================================
FILE: .github/actions/docker-build-and-push/action.yaml
================================================
name: docker-build-and-push
description: Composite action to build and push non CUDA images to registry.

inputs:
  platform:
    description: Target platform.
    required: true
  target-image:
    description: Target docker image name in the registry.
    required: true
  build-args:
    description: Additional build args.
    required: false
  max-parallelism:
    default: 2
    description: Maximum parallelism for buildkitd.
    required: false
  suffix:
    description: Suffix for image tags.
    required: false
    default: ""
  set-latest:
    description: Whether to set the latest flavor for images.
    required: false
    default: true
  # TODO(mitsudome-r): Remove this input after Jazzy porting is complete
  core-only:
    description: Whether to build only the core images.
    required: false
    default: false

runs:
  using: composite
  steps:
    - name: Install jq and vcs2l
      run: |
        sudo apt-get -y update
        sudo apt-get -y install jq python3-pip
        pip install --no-cache-dir vcs2l
      shell: bash

    - name: Run vcs import
      run: |
        mkdir -p src
        vcs import --shallow src < repositories/autoware.repos
      shell: bash

    - name: Setup Docker Buildx
      uses: docker/setup-buildx-action@v3
      with:
        buildkitd-config-inline: |
          [worker.oci]
            max-parallelism = ${{ inputs.max-parallelism }}
        install: true

    - name: Restore ccache
      uses: actions/cache/restore@v4
      with:
        path: |
          root-ccache
        key: ccache-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}${{ hashFiles('src/**/*.cpp') }}
        restore-keys: |
          ccache-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}
          ccache-${{ inputs.platform }}-
    - name: Restore apt-get
      uses: actions/cache/restore@v4
      with:
        path: |
          var-cache-apt
        key: apt-get-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}${{ hashFiles('src/**/package.xml') }}
        restore-keys: |
          apt-get-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}
          apt-get-${{ inputs.platform }}-

    - name: Inject cache into docker
      # TODO(youtalk): Use the release version again
      uses: reproducible-containers/buildkit-cache-dance@7c892679bab8ff382a8c88ab7f973d5e30a8f239
      with:
        utility-image: ghcr.io/containerd/busybox:latest
        cache-map: |
          {
            "root-ccache": "/root/.ccache",
            "var-cache-apt": "/var/cache/apt"
          }
        skip-extraction: true

    - name: Get current date
      id: date
      run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
      shell: bash

    - name: Docker meta for autoware:core-common-devel
      id: meta-core-common-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=core-common-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=core-common-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=core-common-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-core-common-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:core
      id: meta-core
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=core${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=core-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=core-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-core
        flavor: |
          latest=false

    - name: Docker meta for autoware:core-devel
      id: meta-core-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=core-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=core-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=core-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-core-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-common-devel
      id: meta-universe-common-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-common-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-common-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-common-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-common-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-sensing-perception-devel
      id: meta-universe-sensing-perception-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-sensing-perception-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-sensing-perception-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-sensing-perception-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-sensing-perception-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-sensing-perception
      id: meta-universe-sensing-perception
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-sensing-perception${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-sensing-perception-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-sensing-perception-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-sensing-perception
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-localization-mapping-devel
      id: meta-universe-localization-mapping-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-localization-mapping-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-localization-mapping-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-localization-mapping-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-localization-mapping-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-localization-mapping
      id: meta-universe-localization-mapping
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-localization-mapping${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-localization-mapping-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-localization-mapping-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-localization-mapping
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-planning-control-devel
      id: meta-universe-planning-control-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-planning-control-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-planning-control-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-planning-control-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-planning-control-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-planning-control
      id: meta-universe-planning-control
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-planning-control${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-planning-control-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-planning-control-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-planning-control
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-vehicle-system-devel
      id: meta-universe-vehicle-system-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-vehicle-system-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-vehicle-system-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-vehicle-system-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-vehicle-system-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-vehicle-system
      id: meta-universe-vehicle-system
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-vehicle-system${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-vehicle-system-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-vehicle-system-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-vehicle-system
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-visualization-devel
      id: meta-universe-visualization-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-visualization-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-visualization-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-visualization-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-visualization-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-visualization
      id: meta-universe-visualization
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-visualization${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-visualization-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-visualization-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-visualization
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-api-devel
      id: meta-universe-api-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-api-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-api-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-api-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-api-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-api
      id: meta-universe-api
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-api${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-api-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-api-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-api
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-devel
      id: meta-universe-devel
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-devel${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-devel-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-devel-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-devel
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe
      id: meta-universe
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe${{ inputs.suffix }}-${{ inputs.platform }}
          type=raw,value=universe-${{ steps.date.outputs.date }}${{ inputs.suffix }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-,suffix=${{ inputs.suffix }}-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe
        flavor: |
          latest=${{ inputs.set-latest }}

    - name: Login to GitHub Container Registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ github.token }}

    - name: set build targets
      id: set-build-targets
      run: |
        echo "build_targets=${{ fromJSON(inputs['core-only']) && 'core-common-devel' || 'core-common-devel,core,core-devel,universe-common-devel,universe-sensing-perception-devel,universe-sensing-perception,universe-localization-mapping-devel,universe-localization-mapping,universe-planning-control-devel,universe-planning-control,universe-vehicle-system-devel,universe-vehicle-system,universe-visualization-devel,universe-visualization,universe-api-devel,universe-api,universe-devel,universe'}}" >> $GITHUB_OUTPUT
      shell: bash

    - name: Build and Push to GitHub Container Registry
      uses: docker/bake-action@v5
      with:
        push: true
        targets: |
          ${{ steps.set-build-targets.outputs.build_targets }}
        files: |
          docker/docker-bake.hcl
          ${{ steps.meta-core-common-devel.outputs.bake-file }}
          ${{ steps.meta-core.outputs.bake-file }}
          ${{ steps.meta-core-devel.outputs.bake-file }}
          ${{ steps.meta-universe-common-devel.outputs.bake-file }}
          ${{ steps.meta-universe-sensing-perception-devel.outputs.bake-file }}
          ${{ steps.meta-universe-sensing-perception.outputs.bake-file }}
          ${{ steps.meta-universe-localization-mapping-devel.outputs.bake-file }}
          ${{ steps.meta-universe-localization-mapping.outputs.bake-file }}
          ${{ steps.meta-universe-planning-control-devel.outputs.bake-file }}
          ${{ steps.meta-universe-planning-control.outputs.bake-file }}
          ${{ steps.meta-universe-vehicle-system-devel.outputs.bake-file }}
          ${{ steps.meta-universe-vehicle-system.outputs.bake-file }}
          ${{ steps.meta-universe-visualization-devel.outputs.bake-file }}
          ${{ steps.meta-universe-visualization.outputs.bake-file }}
          ${{ steps.meta-universe-api-devel.outputs.bake-file }}
          ${{ steps.meta-universe-api.outputs.bake-file }}
          ${{ steps.meta-universe-devel.outputs.bake-file }}
          ${{ steps.meta-universe.outputs.bake-file }}
        provenance: false
        set: |
          ${{ inputs.build-args }}


================================================
FILE: .github/actions/docker-build-and-push-base/action.yaml
================================================
name: docker-build-and-push-base
description: Composite action to build and push base images to registry.

inputs:
  target-image:
    description: Target docker image name in the registry.
    required: true
  build-args:
    description: Additional build args.
    required: false
  max-parallelism:
    default: 2
    description: Maximum parallelism for buildkitd.
    required: false
  set-latest:
    description: Whether to set the latest flavor for images.
    required: false
    default: true
  suffix:
    description: Suffix for image tags.
    required: false
    default: ""

runs:
  using: composite
  steps:
    - name: Setup Docker Buildx
      uses: docker/setup-buildx-action@v3
      with:
        buildkitd-config-inline: |
          [worker.oci]
            max-parallelism = ${{ inputs.max-parallelism }}
        install: true

    - name: Get current date
      id: date
      run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
      shell: bash

    - name: Docker meta for autoware-base:latest
      id: meta-base
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=${{ steps.date.outputs.date }}${{ inputs.suffix }}
          type=raw,value=latest${{ inputs.suffix }}
        bake-target: docker-metadata-action-base
        flavor: |
          latest=${{ inputs.set-latest }}

    - name: Docker meta for autoware-base:cuda-latest
      id: meta-base-cuda
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=cuda-latest${{ inputs.suffix }}
          type=raw,value=cuda-${{ steps.date.outputs.date }}${{ inputs.suffix }}
        bake-target: docker-metadata-action-base-cuda
        flavor: |
          latest=false

    - name: Login to GitHub Container Registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ github.token }}

    - name: Build and Push to GitHub Container Registry
      uses: docker/bake-action@v5
      with:
        push: true
        files: |
          docker/docker-bake-base.hcl
          ${{ steps.meta-base.outputs.bake-file }}
          ${{ steps.meta-base-cuda.outputs.bake-file }}
        provenance: false
        set: |
          ${{ inputs.build-args }}


================================================
FILE: .github/actions/docker-build-and-push-cuda/action.yaml
================================================
name: docker-build-and-push-cuda
description: Composite action to build and push CUDA images to registry.

inputs:
  platform:
    description: Target platform.
    required: true
  target-image:
    description: Target docker image name in the registry.
    required: true
  build-args:
    description: Additional build args.
    required: false
  max-parallelism:
    default: 2
    description: Maximum parallelism for buildkitd.
    required: false
  suffix:
    description: Suffix for image tags (e.g., -jazzy).
    required: false
    default: ""

runs:
  using: composite
  steps:
    - name: Install jq and vcs2l
      run: |
        sudo apt-get -y update
        sudo apt-get -y install curl gnupg lsb-release

        # Add the ROS 2 GPG key and repository
        sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
        echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | \
          sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

        sudo apt-get update
        sudo apt-get install -y jq python3-pip python3-vcs2l
      shell: bash

    - name: Run vcs import
      run: |
        mkdir -p src
        vcs import --shallow src < repositories/autoware.repos
      shell: bash

    - name: Setup Docker Buildx
      uses: docker/setup-buildx-action@v3
      with:
        buildkitd-config-inline: |
          [worker.oci]
            max-parallelism = ${{ inputs.max-parallelism }}
        install: true

    - name: Restore ccache
      uses: actions/cache/restore@v4
      with:
        path: |
          root-ccache
        key: ccache-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}${{ hashFiles('src/**/*.cpp') }}
        restore-keys: |
          ccache-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}
          ccache-${{ inputs.platform }}-

    - name: Restore apt-get
      uses: actions/cache/restore@v4
      with:
        path: |
          var-cache-apt
        key: apt-get-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}${{ hashFiles('src/**/package.xml') }}
        restore-keys: |
          apt-get-${{ inputs.platform }}-main-${{ inputs.platform == 'arm64' && 'arm64-' || '' }}
          apt-get-${{ inputs.platform }}-

    - name: Inject cache into docker
      # TODO(youtalk): Use the release version again
      uses: reproducible-containers/buildkit-cache-dance@7c892679bab8ff382a8c88ab7f973d5e30a8f239
      with:
        utility-image: ghcr.io/containerd/busybox:latest
        cache-map: |
          {
            "root-ccache": "/root/.ccache",
            "var-cache-apt": "/var/cache/apt"
          }
        skip-extraction: true

    - name: Get current date
      id: date
      run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
      shell: bash

    - name: Docker meta for autoware:universe-common-devel-cuda
      id: meta-universe-common-devel-cuda
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-common-devel${{ inputs.suffix }}-cuda-${{ inputs.platform }}
          type=raw,value=universe-common-devel${{ inputs.suffix }}-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-common-devel${{ inputs.suffix }}-cuda-,suffix=-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-common-devel-cuda
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-sensing-perception-devel-cuda
      id: meta-universe-sensing-perception-devel-cuda
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-sensing-perception-devel${{ inputs.suffix }}-cuda-${{ inputs.platform }}
          type=raw,value=universe-sensing-perception-devel${{ inputs.suffix }}-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-sensing-perception-devel${{ inputs.suffix }}-cuda-,suffix=-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-sensing-perception-devel-cuda
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-sensing-perception-cuda
      id: meta-universe-sensing-perception-cuda
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-sensing-perception${{ inputs.suffix }}-cuda-${{ inputs.platform }}
          type=raw,value=universe-sensing-perception${{ inputs.suffix }}-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-sensing-perception${{ inputs.suffix }}-cuda-,suffix=-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-sensing-perception-cuda
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-devel-cuda
      id: meta-universe-devel-cuda
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe-devel${{ inputs.suffix }}-cuda-${{ inputs.platform }}
          type=raw,value=universe-devel${{ inputs.suffix }}-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe-devel${{ inputs.suffix }}-cuda-,suffix=-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-devel-cuda
        flavor: |
          latest=false

    - name: Docker meta for autoware:universe-cuda
      id: meta-universe-cuda
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=universe${{ inputs.suffix }}-cuda-${{ inputs.platform }}
          type=raw,value=universe${{ inputs.suffix }}-cuda-${{ steps.date.outputs.date }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=universe${{ inputs.suffix }}-cuda-,suffix=-${{ inputs.platform }}
        bake-target: docker-metadata-action-universe-cuda
        flavor: |
          latest=false

    - name: Login to GitHub Container Registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ github.token }}

    - name: Build and Push to GitHub Container Registry
      uses: docker/bake-action@v5
      with:
        push: true
        files: |
          docker/docker-bake-cuda.hcl
          ${{ steps.meta-universe-common-devel-cuda.outputs.bake-file }}
          ${{ steps.meta-universe-sensing-perception-devel-cuda.outputs.bake-file }}
          ${{ steps.meta-universe-sensing-perception-cuda.outputs.bake-file }}
          ${{ steps.meta-universe-devel-cuda.outputs.bake-file }}
          ${{ steps.meta-universe-cuda.outputs.bake-file }}
        provenance: false
        set: |
          ${{ inputs.build-args }}


================================================
FILE: .github/actions/docker-build-and-push-tools/action.yaml
================================================
name: docker-build-and-push-tools
description: Composite action to build and push tools images to registry.

inputs:
  platform:
    description: Target platform.
    required: true
  target-image:
    description: Target docker image name in the registry.
    required: true
  build-args:
    description: Additional build args.
    required: false
  max-parallelism:
    default: 2
    description: Maximum parallelism for buildkitd.
    required: false

runs:
  using: composite
  steps:
    - name: Install jq and vcs2l
      run: |
        sudo apt-get -y update
        sudo apt-get -y install jq python3-pip
        pip install --no-cache-dir vcs2l
      shell: bash

    - name: Run vcs import
      run: |
        mkdir -p src
        vcs import --shallow src < repositories/simulator.repos
      shell: bash

    - name: Setup Docker Buildx
      uses: docker/setup-buildx-action@v3
      with:
        buildkitd-config-inline: |
          [worker.oci]
            max-parallelism = ${{ inputs.max-parallelism }}
        install: true

    - name: Cache ccache
      uses: actions/cache@v4
      with:
        path: |
          root-ccache
        key: ccache-tools-${{ inputs.platform }}-${{ hashFiles('src/**/*.cpp') }}
        restore-keys: |
          ccache-tools-${{ inputs.platform }}-

    - name: Cache apt-get
      uses: actions/cache@v4
      with:
        path: |
          var-cache-apt
        key: apt-get-tools-${{ inputs.platform }}-${{ hashFiles('src/**/package.xml') }}
        restore-keys: |
          apt-get-tools-${{ inputs.platform }}-

    - name: Inject cache into docker
      # TODO(youtalk): Use the release version again
      uses: reproducible-containers/buildkit-cache-dance@7c892679bab8ff382a8c88ab7f973d5e30a8f239
      with:
        utility-image: ghcr.io/containerd/busybox:latest
        cache-map: |
          {
            "root-ccache": "/root/.ccache",
            "var-cache-apt": "/var/cache/apt"
          }
        skip-extraction: ${{ steps.cache-ccache.outputs.cache-hit && steps.cache-apt-get.outputs.cache-hit }}

    - name: Get current date
      id: date
      run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
      shell: bash

    - name: Docker meta for autoware-tools:visualizer
      id: meta-visualizer
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=visualizer-${{ inputs.platform }}
          type=raw,value=visualizer-${{ steps.date.outputs.date }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=visualizer-,suffix=-${{ inputs.platform }}
        bake-target: docker-metadata-action-visualizer
        flavor: |
          latest=false

    - name: Docker meta for autoware-tools:scenario-simulator
      id: meta-scenario-simulator
      uses: docker/metadata-action@v5
      with:
        images: ghcr.io/${{ github.repository_owner }}/${{ inputs.target-image }}
        tags: |
          type=raw,value=scenario-simulator-${{ inputs.platform }}
          type=raw,value=scenario-simulator-${{ steps.date.outputs.date }}-${{ inputs.platform }}
          type=ref,event=tag,prefix=scenario-simulator-,suffix=-${{ inputs.platform }}
        bake-target: docker-metadata-action-scenario-simulator
        flavor: |
          latest=false

    - name: Login to GitHub Container Registry
      uses: docker/login-action@v3
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ github.token }}

    - name: Build and Push to GitHub Container Registry
      uses: docker/bake-action@v5
      with:
        push: true
        files: |
          docker/tools/docker-bake.hcl
          ${{ steps.meta-visualizer.outputs.bake-file }}
          ${{ steps.meta-scenario-simulator.outputs.bake-file }}
        provenance: false
        set: |
          ${{ inputs.build-args }}


================================================
FILE: .github/actions/free-disk-space/action.yaml
================================================
name: free-disk-space
description: ""

runs:
  using: composite
  steps:
    - name: Install sudo
      run: |
        if ! (command -v sudo >/dev/null 2>&1); then
            apt-get -y update
            apt-get -y install sudo
        fi
      shell: bash

    - name: Free Disk Space (Ubuntu)
      uses: jlumbroso/free-disk-space@main
      with:
        # this might remove tools that are actually needed,
        # if set to "true" but frees about 6 GB
        tool-cache: true

        # all of these default to true, but feel free to set to
        # "false" if necessary for your workflow
        android: true
        dotnet: true
        haskell: true
        large-packages: true
        docker-images: true
        swap-storage: false


================================================
FILE: .github/dependabot.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

version: 2
updates:
  - package-ecosystem: github-actions
    directory: /
    # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#scheduleinterval
    schedule:
      interval: monthly
    open-pull-requests-limit: 1
    labels:
      - tag:bot
      - type:github-actions


================================================
FILE: .github/pull_request_template.md
================================================
## Description

## How was this PR tested?


================================================
FILE: .github/stale.yml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

# Modified from https://github.com/probot/stale#usage

# Number of days of inactivity before an Issue or Pull Request with the stale label is closed
daysUntilClose: false

# Label to use when marking as stale
staleLabel: status:stale

# Comment to post when marking as stale
markComment: >
  This pull request has been automatically marked as stale because it has not had
  recent activity.


================================================
FILE: .github/sync-files.yaml
================================================
- repository: autowarefoundation/sync-file-templates
  source-dir: sources
  files:
    - source: .github/ISSUE_TEMPLATE/bug.yaml
    - source: .github/ISSUE_TEMPLATE/config.yml
    - source: .github/ISSUE_TEMPLATE/task.yaml
    - source: .github/dependabot.yaml
    - source: .github/stale.yml
    - source: .github/workflows/backport.yaml
    - source: .github/workflows/comment-on-pr.yaml
    - source: .github/workflows/github-release.yaml
    - source: .github/workflows/pre-commit-optional.yaml
    - source: .github/workflows/pre-commit.yaml
    - source: .github/workflows/semantic-pull-request.yaml
    - source: .github/workflows/spell-check-differential.yaml
    - source: .github/workflows/spell-check-daily.yaml
    - source: .github/workflows/sync-files.yaml
    - source: .clang-format
    - source: .clang-tidy
    - source: .markdown-link-check.json
    - source: .markdownlint.yaml
    - source: .pre-commit-config-optional.yaml
    - source: .pre-commit-config.yaml
    - source: .prettierignore
    - source: .prettierrc.yaml
    - source: .yamllint.yaml
    - source: CODE_OF_CONDUCT.md
    - source: CONTRIBUTING.md
    - source: CPPLINT.cfg
    - source: DISCLAIMER.md
    - source: LICENSE
    - source: setup.cfg


================================================
FILE: .github/workflows/autoware-base.yaml
================================================
name: autoware-base

on:
  push:
    branches:
      - main
    paths:
      - .github/actions/docker-build-and-push-base
      - .github/workflows/autoware-base.yaml
      - amd64.env
      - ansible-galaxy-requirements.yaml
      - ansible/playbooks/openadkit.yaml
      - ansible/roles/**
      - arm64.env
      - docker/Dockerfile.base
      - docker/etc
      - docker/scripts/cleanup_*.sh
      - setup-dev-env.sh
  schedule:
    - cron: 0 0 15 * * # every 15th of the month
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  autoware-base:
    strategy:
      matrix:
        platform: [humble, jazzy]
        include:
          - platform: humble
            runner: ubuntu-22.04
            env-file: amd64.env
            suffix: "" # no suffix for humble since it is default
            set-latest: true
          - platform: jazzy
            runner: ubuntu-24.04
            env-file: amd64_jazzy.env
            suffix: -jazzy
            set-latest: false
    runs-on: ${{ matrix.runner }}
    steps:
      - name: Check out this repository
        uses: actions/checkout@v4

      - name: Free disk space
        uses: ./.github/actions/free-disk-space

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
        with: # cSpell:ignore tonistiigi, binfmt
          image: tonistiigi/binfmt:qemu-v7.0.0

      - name: Load env file
        id: load-env
        uses: falti/dotenv-action@v1
        with:
          path: ${{ matrix.env-file }}
          export-variables: true
          log-variables: true

      - name: Build Autoware's base images
        uses: ./.github/actions/docker-build-and-push-base
        with:
          target-image: autoware-base
          build-args: |
            *.platform=linux/amd64,linux/arm64
            *.args.ROS_DISTRO=${{ steps.load-env.outputs.rosdistro }}
            *.args.BASE_IMAGE=${{ steps.load-env.outputs.base_image }}
          suffix: ${{ matrix.suffix }}
          set-latest: ${{ matrix.set-latest }}


================================================
FILE: .github/workflows/backport.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: backport
on:
  pull_request_target:
    types:
      - closed
      - labeled

jobs:
  backport:
    runs-on: ubuntu-22.04
    # Only react to merged PRs for security reasons.
    # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target.
    if: >
      github.event.pull_request.merged
      && (
        github.event.action == 'closed'
        || (
          github.event.action == 'labeled'
          && contains(github.event.label.name, 'backport')
        )
      )
    steps:
      - name: Generate token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.PRIVATE_KEY }}

      - uses: tibdex/backport@v2
        id: backport
        with:
          github_token: ${{ steps.generate-token.outputs.token }}
          title_template: "<%= title %> (backport #<%= number %>)"

      - name: Request review from original author
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
          PR_JSON: ${{ steps.backport.outputs.created_pull_requests }}
          ORIGINAL_AUTHOR: ${{ github.event.pull_request.user.login }}
        run: |
          set -e
          echo "Created PRs JSON: $PR_JSON"
          echo "Original PR Author: $ORIGINAL_AUTHOR"

          # Use 'jq' to parse the JSON and extract all PR numbers
          pr_numbers=($(echo "$PR_JSON" | jq -r 'to_entries | .[] | .value'))

          # Loop through the array of PR numbers
          for pr_num in "${pr_numbers[@]}"; do
            if [ -n "$pr_num" ]; then
              echo "Requesting review for PR #$pr_num from $ORIGINAL_AUTHOR..."
              gh pr edit "$pr_num" --add-reviewer "$ORIGINAL_AUTHOR" --repo "${{ github.repository }}"
            fi
          done


================================================
FILE: .github/workflows/bump-repo-versions-autoware.yaml
================================================
name: bump-repo-versions-autoware

on:
  schedule:
    - cron: 0 0,6,12,18 * * *
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  create-version-update-pr:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4

      - name: Generate GitHub App token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.PRIVATE_KEY }}

      - name: Create PRs to update VCS repositories for autoware.repos
        uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1
        with:
          token: ${{ steps.generate-token.outputs.token }}
          repo_name: autowarefoundation/autoware
          parent_dir: .
          targets: major minor patch
          base_branch: main
          new_branch_prefix: feat/update-
          autoware_repos_file_name: repositories/autoware.repos
          verbosity: 0


================================================
FILE: .github/workflows/bump-repo-versions-simulator.yaml
================================================
name: bump-repo-versions-simulator

on:
  schedule:
    - cron: 0 0,6,12,18 * * *
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  create-version-update-pr:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4

      - name: Generate GitHub App token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.PRIVATE_KEY }}

      - name: Create PRs to update VCS repositories for simulator.repos
        uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1
        with:
          token: ${{ steps.generate-token.outputs.token }}
          repo_name: autowarefoundation/autoware
          parent_dir: .
          targets: major minor
          base_branch: main
          new_branch_prefix: feat/update-
          autoware_repos_file_name: repositories/simulator.repos
          verbosity: 0


================================================
FILE: .github/workflows/bump-repo-versions-tools.yaml
================================================
name: bump-repo-versions-tools

on:
  schedule:
    - cron: 0 0,6,12,18 * * *
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  create-version-update-pr:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4

      - name: Generate GitHub App token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.PRIVATE_KEY }}

      - name: Create PRs to update VCS repositories for tools.repos
        uses: autowarefoundation/autoware-github-actions/create-prs-to-update-vcs-repositories@v1
        with:
          token: ${{ steps.generate-token.outputs.token }}
          repo_name: autowarefoundation/autoware
          parent_dir: .
          targets: major minor patch
          base_branch: main
          new_branch_prefix: feat/update-
          autoware_repos_file_name: repositories/tools.repos
          verbosity: 0


================================================
FILE: .github/workflows/comment-on-pr.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: comment-on-pr
on:
  pull_request_target:

jobs:
  comment-on-pr:
    runs-on: ubuntu-22.04
    permissions:
      pull-requests: write
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Initial PR comment
        uses: marocchino/sticky-pull-request-comment@v2
        with:
          message: |
            Thank you for contributing to the Autoware project!

            🚧 If your pull request is in progress, [switch it to draft mode](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft).

            Please ensure:
            - You've checked our [contribution guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/).
            - Your PR follows our [pull request guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/).
            - All required CI checks pass before [marking the PR ready for review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review).


================================================
FILE: .github/workflows/dco.yaml
================================================
name: DCO
# ref: https://github.com/anchore/syft/pull/2926/files
on:
  pull_request:
jobs:
  dco:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4

      - name: Setup Python 3.x
        uses: actions/setup-python@v5
        with:
          python-version: 3.x

      - name: Check DCO
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          pip3 install -U dco-check
          dco-check --verbose --exclude-pattern 'pre-commit-ci\[bot\]@users\.noreply\.github\.com'


================================================
FILE: .github/workflows/docker-build-and-push.yaml
================================================
name: docker-build-and-push

on:
  push:
    branches:
      - main
    tags:
      - "*.*.*"
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  load-env:
    uses: ./.github/workflows/load-env.yaml
    with:
      env_file: amd64.env

  docker-build-and-push:
    needs: load-env
    strategy:
      matrix:
        platform: [amd64, arm64]
        include:
          - platform: amd64
            runner: ubuntu-22.04
            arch-platform: linux/amd64
            lib-dir: x86_64
          - platform: arm64
            runner: ubuntu-22.04-arm
            arch-platform: linux/arm64
            lib-dir: aarch64
    runs-on: ${{ matrix.runner }}
    steps:
      # https://github.com/actions/checkout/issues/211
      - name: Change permission of workspace
        run: |
          sudo chown -R $USER:$USER ${{ github.workspace }}

      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Get changed files
        id: changed-files
        uses: step-security/changed-files@v46
        with:
          files: |
            *.env
            repositories/*.repos
            .github/actions/combine-multi-arch-images/action.yaml
            .github/actions/docker-build-and-push*/action.yaml
            .github/workflows/docker-build-and-push.yaml
            ansible-galaxy-requirements.yaml
            ansible/**
            docker/**

      - name: Free disk space
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/free-disk-space

      - name: Build 'Autoware' without CUDA
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/docker-build-and-push
        with:
          platform: ${{ matrix.platform }}
          target-image: autoware
          build-args: |
            *.platform=${{ matrix.arch-platform }}
            *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }}
            *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }}
            *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }}
            *.args.LIB_DIR=${{ matrix.lib-dir }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-${{ github.ref_name }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-main
            *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-${{ github.ref_name }},mode=max

      - name: Show disk space
        if: always()
        run: |
          df -h

  docker-build-and-push-tools:
    needs: [load-env, docker-build-and-push]
    strategy:
      matrix:
        platform: [amd64, arm64]
        include:
          - platform: amd64
            runner: ubuntu-22.04
            arch-platform: linux/amd64
            lib-dir: x86_64
          - platform: arm64
            runner: ubuntu-22.04-arm
            arch-platform: linux/arm64
            lib-dir: aarch64
    runs-on: ${{ matrix.runner }}
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Get changed files
        id: changed-files
        uses: step-security/changed-files@v46
        with:
          files: |
            *.env
            repositories/*.repos
            .github/actions/combine-multi-arch-images/action.yaml
            .github/actions/docker-build-and-push*/action.yaml
            .github/workflows/docker-build-and-push.yaml
            ansible-galaxy-requirements.yaml
            ansible/**
            docker/**

      - name: Free disk space
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/free-disk-space

      - name: Build 'autoware-tools'
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/docker-build-and-push-tools
        with:
          platform: ${{ matrix.platform }}
          target-image: autoware-tools
          build-args: |
            *.platform=${{ matrix.arch-platform }}
            *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }}
            *.args.LIB_DIR=${{ matrix.lib-dir }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-${{ github.ref_name }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-main
            *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-${{ github.ref_name }},mode=max

      - name: Show disk space
        if: always()
        run: |
          df -h

  docker-build-and-push-cuda:
    needs: [load-env, docker-build-and-push]
    strategy:
      matrix:
        platform: [amd64, arm64]
        include:
          - platform: amd64
            runner: [self-hosted, Linux, X64]
            arch-platform: linux/amd64
            lib-dir: x86_64
          - platform: arm64
            runner: [self-hosted, Linux, ARM64]
            arch-platform: linux/arm64
            lib-dir: aarch64
    runs-on: ${{ matrix.runner }}
    steps:
      # https://github.com/actions/checkout/issues/211
      - name: Change permission of workspace
        run: |
          sudo chown -R $USER:$USER ${{ github.workspace }}

      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Get changed files
        id: changed-files
        uses: step-security/changed-files@v46
        with:
          files: |
            *.env
            repositories/*.repos
            .github/actions/combine-multi-arch-images/action.yaml
            .github/actions/docker-build-and-push*/action.yaml
            .github/workflows/docker-build-and-push.yaml
            ansible-galaxy-requirements.yaml
            ansible/**
            docker/**

      - name: Free disk space
        if: ${{ runner.environment == 'github-hosted' &&
          (steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag')) }}
        uses: ./.github/actions/free-disk-space

      - name: Build 'Autoware' with CUDA
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/docker-build-and-push-cuda
        with:
          platform: ${{ matrix.platform }}
          target-image: autoware
          build-args: |
            *.platform=${{ matrix.arch-platform }}
            *.args.ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }}
            *.args.BASE_IMAGE=${{ needs.load-env.outputs.base_image }}
            *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }}
            *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }}
            *.args.LIB_DIR=${{ matrix.lib-dir }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-${{ github.ref_name }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-main
            *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-${{ github.ref_name }},mode=max

      - name: Show disk space
        if: always()
        run: |
          df -h

  update-docker-manifest:
    needs: docker-build-and-push
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Combine multi arch images for 'autoware' without CUDA
        uses: ./.github/actions/combine-multi-arch-images
        with:
          package-name: autoware

  update-docker-manifest-cuda:
    needs: docker-build-and-push-cuda
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Combine multi arch images for 'autoware' with CUDA
        uses: ./.github/actions/combine-multi-arch-images
        with:
          package-name: autoware

  update-docker-manifest-tools:
    needs: docker-build-and-push-tools
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Combine multi arch images for 'autoware-tools'
        uses: ./.github/actions/combine-multi-arch-images
        with:
          package-name: autoware-tools

  load-env-jazzy:
    uses: ./.github/workflows/load-env.yaml
    with:
      env_file: amd64_jazzy.env

  docker-build-and-push-jazzy:
    needs: [load-env-jazzy]
    strategy:
      matrix:
        platform: [amd64, arm64]
        include:
          - platform: amd64
            runner: ubuntu-24.04
            arch-platform: linux/amd64
            lib-dir: x86_64
          - platform: arm64
            runner: ubuntu-24.04-arm
            arch-platform: linux/arm64
            lib-dir: aarch64
    runs-on: ${{ matrix.runner }}
    steps:
      # https://github.com/actions/checkout/issues/211
      - name: Change permission of workspace
        run: |
          sudo chown -R $USER:$USER ${{ github.workspace }}

      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Get changed files
        id: changed-files
        uses: step-security/changed-files@v46
        with:
          files: |
            *.env
            repositories/*.repos
            .github/actions/combine-multi-arch-images/action.yaml
            .github/actions/docker-build-and-push*/action.yaml
            .github/workflows/docker-build-and-push.yaml
            ansible-galaxy-requirements.yaml
            ansible/**
            docker/**

      - name: Free disk space
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/free-disk-space

      - name: Build 'Autoware Jazzy Universe' without CUDA
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/docker-build-and-push
        with:
          platform: ${{ matrix.platform }}
          target-image: autoware
          build-args: |
            *.platform=${{ matrix.arch-platform }}
            *.args.ROS_DISTRO=${{ needs.load-env-jazzy.outputs.rosdistro }}
            *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env-jazzy.outputs.autoware_base_image }}
            *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env-jazzy.outputs.autoware_base_cuda_image }}
            *.args.LIB_DIR=${{ matrix.lib-dir }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-jazzy-${{ github.ref_name }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-jazzy-main
            *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-jazzy-${{ github.ref_name }},mode=max
          set-latest: false
          suffix: -jazzy

      - name: Show disk space
        if: always()
        run: |
          df -h

  docker-build-and-push-jazzy-cuda:
    needs: [load-env-jazzy, docker-build-and-push-jazzy]
    strategy:
      matrix:
        platform: [amd64, arm64]
        include:
          - platform: amd64
            runner: [self-hosted, Linux, X64]
            arch-platform: linux/amd64
            lib-dir: x86_64
          - platform: arm64
            runner: [self-hosted, Linux, ARM64]
            arch-platform: linux/arm64
            lib-dir: aarch64
    runs-on: ${{ matrix.runner }}
    steps:
      # https://github.com/actions/checkout/issues/211
      - name: Change permission of workspace
        run: |
          sudo chown -R $USER:$USER ${{ github.workspace }}

      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Get changed files
        id: changed-files
        uses: step-security/changed-files@v46
        with:
          files: |
            *.env
            *.repos
            .github/actions/combine-multi-arch-images/action.yaml
            .github/actions/docker-build-and-push*/action.yaml
            .github/workflows/docker-build-and-push.yaml
            ansible-galaxy-requirements.yaml
            ansible/**
            docker/**

      - name: Free disk space
        if: ${{ runner.environment == 'github-hosted' &&
          (steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag')) }}
        uses: ./.github/actions/free-disk-space

      - name: Build 'Autoware Jazzy Universe' with CUDA
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'workflow_dispatch' ||
          (github.event_name == 'push' && github.ref_type == 'tag') }}
        uses: ./.github/actions/docker-build-and-push-cuda
        with:
          platform: ${{ matrix.platform }}
          target-image: autoware
          build-args: |
            *.platform=${{ matrix.arch-platform }}
            *.args.ROS_DISTRO=${{ needs.load-env-jazzy.outputs.rosdistro }}
            *.args.BASE_IMAGE=${{ needs.load-env-jazzy.outputs.base_image }}
            *.args.AUTOWARE_BASE_IMAGE=${{ needs.load-env-jazzy.outputs.autoware_base_image }}
            *.args.AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env-jazzy.outputs.autoware_base_cuda_image }}
            *.args.LIB_DIR=${{ matrix.lib-dir }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-jazzy-cuda-${{ github.ref_name }}
            *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-jazzy-cuda-main
            *.cache-to=type=registry,ref=ghcr.io/${{ github.repository }}-buildcache:${{ matrix.platform }}-jazzy-cuda-${{ github.ref_name }},mode=max
          suffix: -jazzy

      - name: Show disk space
        if: always()
        run: |
          df -h

  update-docker-manifest-jazzy:
    needs: [docker-build-and-push-jazzy]
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Combine multi arch images for 'autoware' Jazzy
        uses: ./.github/actions/combine-multi-arch-images
        with:
          package-name: autoware

  update-docker-manifest-jazzy-cuda:
    needs: [docker-build-and-push-jazzy-cuda]
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Combine multi arch images for 'autoware' Jazzy with CUDA
        uses: ./.github/actions/combine-multi-arch-images
        with:
          package-name: autoware


================================================
FILE: .github/workflows/github-release.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: github-release

on:
  push:
    tags:
      - "[0-9]+.[0-9]+.[0-9]+"
  workflow_dispatch:
    inputs:
      tag-name:
        description: The name of the tag to release
        type: string
        required: true

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  github-release:
    runs-on: ubuntu-22.04
    steps:
      - name: Set tag name
        id: set-tag-name
        run: |
          if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
            REF_NAME="${{ github.event.inputs.tag-name }}"
          else
            REF_NAME="${{ github.ref_name }}"
          fi

          echo "tag-name=$REF_NAME" >> $GITHUB_OUTPUT

      - name: Check out repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ steps.set-tag-name.outputs.tag-name }}

      - name: Run generate-changelog
        id: generate-changelog
        uses: autowarefoundation/autoware-github-actions/generate-changelog@v1
        with:
          git-cliff-args: --tag-pattern "^(\d+)\.(\d+)\.(\d+)$" --latest

      - name: Select verb
        id: select-verb
        run: |
          has_previous_draft=$(gh release view --json isDraft -q ".isDraft" "${{ steps.set-tag-name.outputs.tag-name }}") || true

          verb=create
          if [ "$has_previous_draft" = "true" ]; then
            verb=edit
          fi

          echo "verb=$verb" >> $GITHUB_OUTPUT
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Release to GitHub
        run: |
          gh release ${{ steps.select-verb.outputs.verb }} "${{ steps.set-tag-name.outputs.tag-name }}" \
            --draft \
            --title "${{ steps.set-tag-name.outputs.tag-name }}" \
            --notes "$NOTES"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NOTES: ${{ steps.generate-changelog.outputs.changelog }}


================================================
FILE: .github/workflows/health-check.yaml
================================================
name: health-check

on:
  pull_request:
    types:
      - opened
      - synchronize
      - reopened
      - labeled
  schedule:
    - cron: 0 12 * * *
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  label-check:
    uses: autowarefoundation/autoware-github-actions/.github/workflows/make-sure-label-is-present.yaml@v1
    with:
      label: run:health-check

  load-env:
    needs: label-check
    if: ${{ needs.label-check.outputs.result == 'true' ||
      github.event_name == 'schedule' ||
      github.event_name == 'workflow_dispatch' }}
    uses: ./.github/workflows/load-env.yaml

  docker-build:
    needs: load-env
    strategy:
      fail-fast: false
      matrix:
        build-type: [main, nightly, main-arm64]
        include:
          - build-type: main
            platform: amd64
            runner: "['self-hosted','Linux','X64']"
            lib-dir: x86_64
            container: ubuntu:22.04
          - build-type: nightly
            platform: amd64
            runner: "['ubuntu-24.04']"
            lib-dir: x86_64
          - build-type: main-arm64
            platform: arm64
            runner: "['ubuntu-24.04-arm']"
            lib-dir: aarch64
    runs-on: ${{ fromJson(matrix.runner) }}
    steps:
      - name: Clean up previous run artifacts
        run: sudo rm -rf ${{ github.workspace }}/scenario_out
      # https://github.com/actions/checkout/issues/211
      - name: Change permission of workspace
        run: |
          sudo chown -R $USER:$USER ${{ github.workspace }}

      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Get changed files
        id: changed-files
        uses: step-security/changed-files@v46
        with:
          files: |
            *.env
            repositories/*.repos
            .github/actions/docker-build/action.yaml
            .github/workflows/health-check.yaml
            ansible-galaxy-requirements.yaml
            ansible/**
            docker/**
            setup-dev-env.sh

      - name: Show disk space
        if: always()
        run: |
          df -h

      - name: Free disk space
        if: ${{ steps.changed-files.outputs.any_changed == 'true' &&
          matrix.build-type != 'main' }}
        uses: ./.github/actions/free-disk-space

      - name: Build 'Autoware'
        if: ${{ steps.changed-files.outputs.any_changed == 'true' ||
          github.event_name == 'schedule' ||
          github.event_name == 'workflow_dispatch' }}
        uses: ./.github/actions/docker-build
        with:
          platform: ${{ matrix.platform }}
          cache-tag-suffix: ${{ matrix.build-type }}
          image-artifact-name: ${{ matrix.build-type == 'main' && 'autoware-image' || '' }}
          additional-repos: ${{ matrix.build-type == 'nightly' && 'repositories/autoware-nightly.repos' || '' }}
          build-args: |
            ROS_DISTRO=${{ needs.load-env.outputs.rosdistro }}
            AUTOWARE_BASE_IMAGE=${{ needs.load-env.outputs.autoware_base_image }}
            AUTOWARE_BASE_CUDA_IMAGE=${{ needs.load-env.outputs.autoware_base_cuda_image }}
            LIB_DIR=${{ matrix.lib-dir }}

      - name: Show disk space
        if: always()
        run: |
          df -h
  scenario-test:
    needs: docker-build
    uses: ./.github/workflows/scenario-test-reusable.yaml
    with:
      autoware_container_image: autoware:health-check-${{ github.sha }}


================================================
FILE: .github/workflows/keep-build-cache-small.yaml
================================================
name: keep-build-cache-small

on:
  workflow_dispatch:
  schedule:
    - cron: 0 6 * * *

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  keep-build-cache-small:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - image_tag: amd64-main
            cache_threshold_gb: 7.0
          - image_tag: arm64-main
            cache_threshold_gb: 9.0

    env:
      IMAGE_NAME: autoware-buildcache

    steps:
      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y skopeo jq bc

      - name: Set up environment variables
        run: |
          echo "CACHE_THRESHOLD_GB=${{ matrix.cache_threshold_gb }}" >> "$GITHUB_ENV"
          echo "IMAGE_TAG=${{ matrix.image_tag }}" >> "$GITHUB_ENV"
          echo "BUILD_CACHE_IMAGE=ghcr.io/autowarefoundation/${{ env.IMAGE_NAME }}:${{ matrix.image_tag }}" >> "$GITHUB_ENV"

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Check if build cache image exists
        id: check_image
        run: |
          echo "🔍 Checking if build cache image exists..."
          if skopeo inspect --raw docker://${{ env.BUILD_CACHE_IMAGE }} > /dev/null 2>&1; then
            echo "✅ Build cache image found. Proceeding..."
            echo "exists=true" >> "$GITHUB_OUTPUT"
          else
            echo "⚠️ Build cache image does not exist. Skipping remaining steps."
            echo "exists=false" >> "$GITHUB_OUTPUT"
          fi

      - name: Calculate cache size
        id: calc_size
        if: steps.check_image.outputs.exists == 'true'
        run: |
          echo "🔍 Inspecting build cache size for image: ${{ env.BUILD_CACHE_IMAGE }}..."
          SIZE_BYTES=$(skopeo inspect --raw docker://${{ env.BUILD_CACHE_IMAGE }} | jq '.layers | map(.size) | add')
          SIZE_GB=$(echo "scale=2; $SIZE_BYTES / (1024 * 1024 * 1024)" | bc)
          echo "Cache size: ${SIZE_GB} GB"
          echo "size_gb=${SIZE_GB}" >> "$GITHUB_OUTPUT"

      - name: Compare cache size with threshold
        id: check_threshold
        if: steps.check_image.outputs.exists == 'true'
        run: |
          echo "📊 Checking cache size against threshold..."
          THRESHOLD_GB=${{ env.CACHE_THRESHOLD_GB }}
          CACHE_SIZE_GB=${{ steps.calc_size.outputs.size_gb }}

          if (( $(echo "$CACHE_SIZE_GB > $THRESHOLD_GB" | bc -l) )); then
            echo "❌ Cache size exceeds threshold. Action needed."
            echo "status=exceeded" >> "$GITHUB_OUTPUT"
          else
            echo "✅ Cache size is within threshold. No action needed."
            echo "status=ok" >> "$GITHUB_OUTPUT"
          fi

      - name: Delete build cache if exceeded
        uses: bots-house/ghcr-delete-image-action@v1.1.0
        if: steps.check_threshold.outputs.status == 'exceeded'
        with:
          name: ${{ env.IMAGE_NAME }}
          tag: ${{ matrix.image_tag }}
          owner: ${{ github.repository_owner }}
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Verify cache deletion
        if: steps.check_threshold.outputs.status == 'exceeded'
        id: verify_deletion
        run: |
          echo "🔍 Verifying if build cache image has been deleted..."

          if skopeo inspect --raw docker://${{ env.BUILD_CACHE_IMAGE }} > /dev/null 2>&1; then
            echo "❌ Build cache image still exists!"
            echo "status=failed" >> "$GITHUB_OUTPUT"
            exit 1
          else
            echo "✅ Build cache image successfully deleted."
            echo "status=success" >> "$GITHUB_OUTPUT"
          fi

      - name: Generate workflow summary
        if: always()
        run: |
          SUMMARY="# 📦 Build Cache Size Check\n"
          SUMMARY+="- **Image**: \`${{ env.BUILD_CACHE_IMAGE }}\`\n"

          if [[ "${{ steps.check_image.outputs.exists }}" == "false" ]]; then
            SUMMARY+="⚠️ **Build cache image does not exist. Skipping checks.**\n"
          else
            SUMMARY+="- **Cache Size**: ${{ steps.calc_size.outputs.size_gb }} GB\n"
            SUMMARY+="- **Threshold**: ${{ env.CACHE_THRESHOLD_GB }} GB\n"

            if [[ "${{ steps.check_threshold.outputs.status }}" == "exceeded" ]]; then
              if [[ "${{ steps.verify_deletion.outputs.status }}" != "success" ]]; then
                SUMMARY+="❌ **Cache size exceeded, but deletion failed!**\n"
              else
                SUMMARY+="🗑️✅ **Cache size exceeded. Image deleted successfully!**\n"
              fi
            else
              SUMMARY+="👌✅ **Cache size is within acceptable limits.**\n"
            fi
          fi

          echo -e "$SUMMARY"
          echo -e "$SUMMARY" >> $GITHUB_STEP_SUMMARY


================================================
FILE: .github/workflows/load-env.yaml
================================================
name: load-env

on:
  workflow_call:
    inputs:
      env_file:
        description: Specify the env file to load (e.g., amd64.env, amd64_jazzy.env)
        required: false
        type: string
        default: ""
    outputs:
      rosdistro:
        value: ${{ jobs.load-env.outputs.rosdistro }}
      base_image:
        value: ${{ jobs.load-env.outputs.base_image }}
      autoware_base_image:
        value: ${{ jobs.load-env.outputs.autoware_base_image }}
      autoware_base_cuda_image:
        value: ${{ jobs.load-env.outputs.autoware_base_cuda_image }}

jobs:
  load-env:
    runs-on: ubuntu-22.04
    outputs:
      rosdistro: ${{ steps.set-env.outputs.rosdistro }}
      base_image: ${{ steps.set-env.outputs.base_image }}
      autoware_base_image: ${{ steps.set-env.outputs.autoware_base_image }}
      autoware_base_cuda_image: ${{ steps.set-env.outputs.autoware_base_cuda_image }}
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Load env
        run: |
          # Check if env_file is specified
          if [ -n "${{ inputs.env_file }}" ]; then
            # Use specified env file
            echo "Loading specified env file: ${{ inputs.env_file }}"
            cat ${{ inputs.env_file }} | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV
          else
            # Auto-detect based on ROS_DISTRO
            rosdistro=${ROS_DISTRO:-humble}
            echo "rosdistro=$rosdistro" >> $GITHUB_ENV

            # Determine which env file to use based on rosdistro
            if [ "$rosdistro" = "humble" ]; then
              echo "Loading amd64.env for Humble"
              cat amd64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV
            else
              echo "Loading amd64_jazzy.env for Jazzy"
              cat amd64_jazzy.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV
            fi
          fi

          # Load ARM64 specific env if on ARM64 architecture
          if [ "$(uname -m)" = "aarch64" ]; then
            echo "Loading arm64.env for ARM64 architecture"
            cat arm64.env | sed -e "s/^\s*//" -e "/^#/d" >> $GITHUB_ENV
          fi

      - name: Set env
        id: set-env
        run: |
          echo "rosdistro=${{ env.rosdistro }}" >> $GITHUB_OUTPUT
          echo "base_image=${{ env.base_image }}" >> $GITHUB_OUTPUT
          echo "autoware_base_image=${{ env.autoware_base_image }}" >> $GITHUB_OUTPUT
          echo "autoware_base_cuda_image=${{ env.autoware_base_cuda_image }}" >> $GITHUB_OUTPUT


================================================
FILE: .github/workflows/mirror-main-branch.yaml
================================================
name: mirror-main-branch

on:
  push:
    branches:
      - main
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  mirror-main-branch:
    runs-on: ubuntu-22.04
    steps:
      - uses: zofrex/mirror-branch@v1
        with:
          target-branch: humble


================================================
FILE: .github/workflows/pre-commit-ansible-autoupdate.yaml
================================================
name: pre-commit-ansible-autoupdate

on:
  schedule:
    - cron: 0 0 * * *
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  check-secret:
    uses: autowarefoundation/autoware-github-actions/.github/workflows/check-secret.yaml@v1
    secrets:
      secret: ${{ secrets.APP_ID }}

  pre-commit-ansible-autoupdate:
    needs: check-secret
    if: ${{ needs.check-secret.outputs.set == 'true' }}
    runs-on: ubuntu-22.04
    steps:
      - name: Generate token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.PRIVATE_KEY }}

      - name: Run pre-commit-autoupdate
        uses: autowarefoundation/autoware-github-actions/pre-commit-autoupdate@v1
        with:
          token: ${{ steps.generate-token.outputs.token }}
          pre-commit-config: .pre-commit-config-ansible.yaml
          pr-labels: |
            tag:bot
            tag:pre-commit-autoupdate
          pr-branch: pre-commit-ansible-autoupdate
          pr-title: "ci(pre-commit-ansible): autoupdate"
          pr-commit-message: "ci(pre-commit-ansible): autoupdate"
          auto-merge-method: squash


================================================
FILE: .github/workflows/pre-commit-ansible.yaml
================================================
name: pre-commit-ansible

on:
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  pre-commit-ansible:
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Install Ansible Galaxy depends for ansible-lint
        run: |
          ansible-galaxy collection install -f -r ansible-galaxy-requirements.yaml

      - name: Run pre-commit
        uses: autowarefoundation/autoware-github-actions/pre-commit@v1
        with:
          pre-commit-config: .pre-commit-config-ansible.yaml


================================================
FILE: .github/workflows/pre-commit-optional.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: pre-commit-optional

on:
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  pre-commit-optional:
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Run pre-commit
        uses: autowarefoundation/autoware-github-actions/pre-commit@v1
        with:
          pre-commit-config: .pre-commit-config-optional.yaml
          base-branch: origin/${{ github.base_ref }}


================================================
FILE: .github/workflows/pre-commit.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: pre-commit

on:
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  pre-commit:
    if: ${{ github.event.repository.private }} # Use pre-commit.ci for public repositories
    runs-on: ubuntu-22.04
    steps:
      - name: Generate token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.PRIVATE_KEY }}

      - name: Check out repository
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.ref }}

      - name: Run pre-commit
        uses: autowarefoundation/autoware-github-actions/pre-commit@v1
        with:
          pre-commit-config: .pre-commit-config.yaml
          token: ${{ steps.generate-token.outputs.token }}


================================================
FILE: .github/workflows/scenario-test-reusable.yaml
================================================
name: scenario-test-reusable

on:
  workflow_call:
    inputs:
      autoware_container_image:
        type: string
        required: true
        description: Autoware docker image tag to use for the scenario test
      runner:
        type: string
        default: "['self-hosted', 'Linux', 'X64']"
        required: false
      architecture-type:
        type: string
        default: awf/universe/20250130
        required: false
      sensor-model:
        type: string
        default: sample_sensor_kit
        required: false
      vehicle-model:
        type: string
        default: sample_vehicle
        required: false

jobs:
  scenario-test:
    runs-on: ${{ fromJson(inputs.runner) }}
    steps:
      - name: Clean up previous run artifacts
        run: |
          sudo rm -rf ${{ github.workspace }}/scenario_out
          sudo chown -R $USER:$USER ${{ github.workspace }}

      - name: Check out repository
        uses: actions/checkout@v4

      - name: Download Docker image artifact
        uses: actions/download-artifact@v4
        with:
          name: autoware-image
          path: /tmp
      - name: Load Docker image
        run: docker load < /tmp/autoware-image.tar.gz
      - name: Verify Docker image exists
        env:
          IMAGE_TAG: ${{ inputs.autoware_container_image }}
        run: |
          echo "Checking for image in local Docker daemon..."
          if ! docker inspect "$IMAGE_TAG" > /dev/null 2>&1; then
            echo "::error::Image $IMAGE_TAG not found!"
            exit 1
          fi
          docker images "$IMAGE_TAG"
          df -h

      - name: Run scenario test in built Docker image
        env:
          IMAGE_TAG: ${{ inputs.autoware_container_image }}
          SENSOR_MODEL: ${{ inputs.sensor-model }}
          VEHICLE_MODEL: ${{ inputs.vehicle-model }}
          ARCHITECTURE_TYPE: ${{ inputs.architecture-type }}
        run: |
          mkdir -p ${{ github.workspace }}/scenario_out

          docker run --rm \
            -e SENSOR_MODEL \
            -e VEHICLE_MODEL \
            -e ARCHITECTURE_TYPE \
            -v "${{ github.workspace }}:/workspace" \
            -v "${{ github.workspace }}/scenario_out:/out" \
            "$IMAGE_TAG" \
            bash -c '
              set -e

              echo "Installing test dependencies..."
              apt-get update && apt-get install -y python3-pip git unzip wget curl
              pip3 install --upgrade gdown vcstool

              echo "Setting up simulator workspace..."
              cd /workspace
              mkdir -p /autoware_ws/src
              cd /autoware_ws
              vcs import src < /workspace/repositories/simulator.repos

              echo "Sourcing Autoware environment..."
              source /opt/ros/humble/setup.bash
              source /opt/autoware/setup.bash

              echo "Installing simulator dependencies..."
              rosdep update
              rosdep install --from-paths src --ignore-src -r -y || true

              echo "Downgrading xmlschema for compatibility..."
              pip3 install --user xmlschema==3.4.5

              echo "Building scenario_test_runner..."
              export CMAKE_DISABLE_PRECOMPILE_HEADERS=ON
              colcon build --symlink-install \
                --cmake-args -DCMAKE_BUILD_TYPE=Release \
                --executor sequential

              echo "Sourcing the built workspace..."
              source /autoware_ws/install/setup.bash

              echo "Downloading test data..."
              cd /out
              # cspell: ignore Uownh Ietur
              gdown --id 1Tq7snfDPsuPHPtl50aL5fJY6paiC-HxV -O sample-scenario.yaml
              mkdir -p /out/autoware_map
              gdown --id 1499_nsbUbIeturZaDj7jhUownh5fvXHd -O sample-map-planning.zip

              if [ -f sample-map-planning.zip ]; then
                unzip -q sample-map-planning.zip -d /out/autoware_map
              fi

              echo "Fixing paths in scenario file..."
              sed -i "s@/home/user/@/out/@g" sample-scenario.yaml

              echo "Running scenario test..."
              export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
              mkdir -p /out/results

              ros2 launch scenario_test_runner scenario_test_runner.launch.py \
                architecture_type:=$ARCHITECTURE_TYPE \
                record:=true \
                scenario:="/out/sample-scenario.yaml" \
                sensor_model:=$SENSOR_MODEL \
                vehicle_model:=$VEHICLE_MODEL \
                initialize_duration:=300 \
                output_directory:=/out/results \
                simulate_localization:=true \
                initial_pose:="[0.0, 0.0, 0.0]" \
                launch_rviz:=false \
                frame_rate:=1 \
                disable_lanelet_pose_validation:=true 2>&1 | tee /out/scenario_output.log || true

              echo "Cleaning up processes..."
              pkill -9 -f ros2 || true
              pkill -9 -f scenario_test_runner || true
              pkill -9 -f openscenario_interpreter_node || true
            '

      - name: Check for test failures
        run: |
          RESULT_FILE="${{ github.workspace }}/scenario_out/results/scenario_test_runner/result.junit.xml"

          if [ ! -f "$RESULT_FILE" ]; then
            echo "::error::Result file not found! Simulation likely crashed."
            exit 1
          fi

          echo "Checking for failures in $RESULT_FILE..."

          if grep -q -E '<failure|<error' "$RESULT_FILE"; then
            echo "::error::Test failures or errors detected."
            cat "$RESULT_FILE"
            exit 1
          else
            echo "Test successfully passed."
          fi

      - name: Upload scenario test results
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: scenario-test-results
          path: |
            ${{ github.workspace }}/scenario_out/results/
            ${{ github.workspace }}/scenario_out/scenario_output.log

      - name: Show final disk space
        if: always()
        run: df -h
      - name: Clean up Docker images
        if: always()
        env:
          IMAGE_TAG: ${{ inputs.autoware_container_image }}
        run: |
          rm -f /tmp/autoware-image.tar.gz
          docker rmi "$IMAGE_TAG" || true


================================================
FILE: .github/workflows/scenario-test.yaml
================================================
name: scenario-test
on:
  schedule:
    - cron: 0 12 * * *
  workflow_dispatch:
  push:
    branches:
      - main
concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  scenario-test:
    runs-on: ubuntu-24.04
    container:
      image: ghcr.io/autowarefoundation/autoware:universe-devel
    steps:
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Install required packages
        shell: bash
        run: |
          apt-get update
          apt-get install -y \
            unzip \
            zip \
            curl \
            gnupg2 \
            lsb-release \
            python3-pip \
            git
          pip install --upgrade gdown vcs2l
      - name: Show memory info
        shell: bash
        run: free -h
      - name: Clone Autoware and Import simulator.repos
        shell: bash
        run: |
          git clone https://github.com/autowarefoundation/autoware.git ~/autoware_ws
          cd ~/autoware_ws
          mkdir -p src
          vcs import src < repositories/simulator.repos
      - name: Install ROS dependencies
        shell: bash
        run: |
          cd ~/autoware_ws
          source /opt/ros/humble/setup.bash
          source /opt/autoware/setup.bash
          rosdep update
          rosdep install --from-paths src --ignore-src -r -y
      - name: Downgrade xmlschema
        shell: bash
        run: |
          pip3 install --user xmlschema==3.4.5
      - name: Build Autoware Workspace
        shell: bash
        run: |
          cd ~/autoware_ws
          # Clean the workspace before building to prevent errors from old files
          rm -rf build install log
          source /opt/ros/humble/setup.bash
          source /opt/autoware/setup.bash
          # For Disable precompiled headers to reduce memory
          export CMAKE_DISABLE_PRECOMPILE_HEADERS=ON
          # Build all with sequential executor to reduce RAM spikes
          colcon build --symlink-install \
            --cmake-args -DCMAKE_BUILD_TYPE=Release \
            --executor sequential
      - name: Check Autoware installation
        shell: bash
        run: |
          source ~/autoware_ws/install/setup.bash
          ros2 pkg list | grep autoware
      - name: Download scenario file
        shell: bash
        run: |
          gdown --id 1Tq7snfDPsuPHPtl50aL5fJY6paiC-HxV -O sample-scenario.yaml
      - name: Download sample-map-planning maps
        shell: bash
        # cspell: ignore 1499_nsbUbIeturZaDj7jhUownh5fvXHd
        run: |
          mkdir -p $HOME/autoware_map
          gdown --id 1499_nsbUbIeturZaDj7jhUownh5fvXHd -O sample-map-planning.zip
          unzip sample-map-planning.zip -d $HOME/autoware_map
      - name: Fix paths in sample-scenario.yaml
        shell: bash
        run: |
          # I Replace hardcoded user paths with the dynamic $HOME variable
          sed -i "s@/home/user/@$HOME/@g" sample-scenario.yaml
      - name: Launch scenario_test_runner with diagnostics
        shell: bash
        run: |
          # a stable DDS implementation for CI to prevent crashes that happen before
          export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
          SCENARIO_FILE="./sample-scenario.yaml"
          source ~/autoware_ws/install/setup.bash
          if [ -f "$SCENARIO_FILE" ]; then
            echo "Launching scenario_test_runner..."
            mkdir -p ./results
            ros2 launch scenario_test_runner scenario_test_runner.launch.py \
              architecture_type:=awf/universe/20250130 \
              record:=true \
              scenario:="$SCENARIO_FILE" \
              sensor_model:=sample_sensor_kit \
              vehicle_model:=sample_vehicle \
              initialize_duration:=300 \
              output_directory:=./results \
              simulate_localization:=true \
              initial_pose:="[0.0, 0.0, 0.0]" \
              launch_rviz:=false \
              frame_rate:=1 \
              disable_lanelet_pose_validation:=true 2>&1 | tee scenario_output.log || true
          else
            echo "ERROR: sample-scenario.yaml is missing!"
            exit 1
          fi
      - name: Check for Test Failures
        shell: bash
        run: |
          RESULT_FILE="./results/scenario_test_runner/result.junit.xml"
          if [ ! -f "$RESULT_FILE" ]; then
            echo "::error::Result file not found! Simulation likely crashed."
            exit 1
          fi
          echo "Checking for failures in $RESULT_FILE..."
          # Check for failure or error tags in the JUnit XML
          if grep -q -E '<failure|<error' "$RESULT_FILE"; then
            echo "::error::Test failures or errors detected."
            # Print the contents of the result file for easier debugging in the Actions UI
            cat "$RESULT_FILE"
            exit 1
          else
            echo "Test successfully passed."
          fi
      - name: Upload Artifacts
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: scenario-test-results-and-logs
          path: |
            ./results/
            ./scenario_output.log
            ~/.ros/log/
      - name: Kill lingering ROS nodes (cleanup)
        if: always()
        shell: bash
        run: |
          echo "Killing lingering ROS processes..."
          pkill -9 -f ros2 || true
          pkill -9 -f scenario_test_runner || true
          pkill -9 -f openscenario_interpreter_node || true
          pkill -9 -f python || true


================================================
FILE: .github/workflows/semantic-pull-request.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: semantic-pull-request

on:
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize

jobs:
  semantic-pull-request:
    uses: autowarefoundation/autoware-github-actions/.github/workflows/semantic-pull-request.yaml@v1


================================================
FILE: .github/workflows/setup-docker.yaml
================================================
name: setup-docker

on:
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  setup-docker:
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Run setup script
        run: |
          ./setup-dev-env.sh -y -v docker


================================================
FILE: .github/workflows/setup-universe.yaml
================================================
name: setup-universe

on:
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  setup-universe:
    runs-on: [self-hosted, Linux, X64]
    strategy:
      fail-fast: false
      matrix:
        include:
          - image: ubuntu:22.04
            ros_distro: humble
          - image: ubuntu:24.04
            ros_distro: jazzy
    container:
      image: ${{ matrix.image }}
    steps:
      - name: Check out repository
        uses: actions/checkout@v6

      - name: Show disk space
        if: always()
        run: |
          df -h

      - name: Install dependencies
        run: |
          apt-get update
          apt-get install -y git sudo curl ca-certificates apt-utils

      - name: Install tzdata non-interactively
        run: |
          DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata

      - name: Set git config
        uses: autowarefoundation/autoware-github-actions/set-git-config@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Run setup script
        run: |
          ./setup-dev-env.sh --ros-distro ${{ matrix.ros_distro }} -y -v universe


================================================
FILE: .github/workflows/spell-check-daily.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: spell-check-daily

on:
  schedule:
    - cron: 0 0 * * *
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  spell-check-daily:
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Run spell-check
        uses: autowarefoundation/autoware-github-actions/spell-check@v1
        with:
          incremental-files-only: false
          cspell-json-url: https://raw.githubusercontent.com/autowarefoundation/autoware-spell-check-dict/main/.cspell.json
          dict-packages: |
            https://github.com/autowarefoundation/autoware-spell-check-dict
            https://github.com/tier4/cspell-dicts


================================================
FILE: .github/workflows/spell-check-differential.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: spell-check-differential

on:
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  spell-check-differential:
    runs-on: ubuntu-22.04
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Run spell-check
        uses: autowarefoundation/autoware-github-actions/spell-check@v1
        with:
          cspell-json-url: https://raw.githubusercontent.com/autowarefoundation/autoware-spell-check-dict/main/.cspell.json
          dict-packages: |
            https://github.com/autowarefoundation/autoware-spell-check-dict
            https://github.com/tier4/cspell-dicts


================================================
FILE: .github/workflows/sync-files.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

name: sync-files

on:
  schedule:
    - cron: 0 0 * * *
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  sync-files:
    runs-on: ubuntu-22.04
    steps:
      - name: Generate token
        id: generate-token
        uses: tibdex/github-app-token@v2
        with:
          app_id: ${{ secrets.APP_ID }}
          private_key: ${{ secrets.PRIVATE_KEY }}

      - name: Run sync-files
        uses: autowarefoundation/autoware-github-actions/sync-files@v1
        with:
          token: ${{ steps.generate-token.outputs.token }}
          pr-labels: |
            tag:bot
            tag:sync-files
          auto-merge-method: squash


================================================
FILE: .gitignore
================================================
# Vim
*.swp
*.swo

# Visual Studio Code
.vscode/
*.code-workspace

# colcon
build/
install/
log/

# Python
*.pyc

# Jetbrains
.idea/

# rviz Screen Capture
capture/

# CodeChecker
.codechecker/

# Node.js
node_modules/


================================================
FILE: .hadolint.yaml
================================================
ignored:
  - DL3008 # Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
  - DL3013 # Pin versions in pip. Instead of `pip install <package>`, use `pip install <package>==<version>`
  - DL3015 # Avoid additional packages by specifying `--no-install-recommends`
  - DL3009 # Delete the apt-get lists after installing something


================================================
FILE: .markdown-link-check.json
================================================
{
  "aliveStatusCodes": [200, 206, 403],
  "ignorePatterns": [
    {
      "pattern": "^http://localhost"
    },
    {
      "pattern": "^http://127\\.0\\.0\\.1"
    },
    {
      "pattern": "^https://github.com/.*/discussions/new"
    }
  ],
  "retryOn429": true,
  "retryCount": 10
}


================================================
FILE: .markdownlint.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

# See https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md for all rules.
default: true
MD013: false
MD024:
  siblings_only: true
MD029:
  style: ordered
MD033: false
MD041: false
MD045: false
MD046: false
MD049: false
MD059: false


================================================
FILE: .pre-commit-config-ansible.yaml
================================================
repos:
  - repo: https://github.com/ansible/ansible-lint.git
    rev: v25.8.2
    hooks:
      - id: ansible-lint
        args:
          - ansible/
        additional_dependencies:
          - ansible


================================================
FILE: .pre-commit-config-optional.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

# https://pre-commit.ci/#configuration
ci:
  autofix_commit_msg: "style(pre-commit-optional): autofix"
  autoupdate_schedule: quarterly
  autoupdate_commit_msg: "ci(pre-commit-optional): quarterly autoupdate"

repos:
  - repo: https://github.com/tcort/markdown-link-check
    rev: v3.14.2
    hooks:
      - id: markdown-link-check
        args: [--quiet, --config=.markdown-link-check.json]


================================================
FILE: .pre-commit-config.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

# https://pre-commit.ci/#configuration
ci:
  autofix_commit_msg: "style(pre-commit): autofix"
  autoupdate_schedule: quarterly
  autoupdate_commit_msg: "ci(pre-commit): quarterly autoupdate"

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: check-json
      - id: check-merge-conflict
      - id: check-toml
      - id: check-xml
      - id: check-yaml
        args: [--unsafe]
      - id: detect-private-key
      - id: end-of-file-fixer
      - id: mixed-line-ending
      - id: trailing-whitespace
        args: [--markdown-linebreak-ext=md]

  - repo: https://github.com/igorshubovych/markdownlint-cli
    rev: v0.47.0
    hooks:
      - id: markdownlint
        args: [-c, .markdownlint.yaml, --fix]

  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: v4.0.0-alpha.8
    hooks:
      - id: prettier
        args: [--no-error-on-unmatched-pattern]

  - repo: https://github.com/adrienverge/yamllint
    rev: v1.37.1
    hooks:
      - id: yamllint

  - repo: https://github.com/autowarefoundation/autoware-guideline-check
    rev: 0.2.0
    hooks:
      - id: check-package-depends

  - repo: https://github.com/tier4/pre-commit-hooks-ros
    rev: v0.10.0
    hooks:
      - id: flake8-ros
      - id: prettier-xacro
      - id: prettier-launch-xml
      - id: prettier-package-xml
      - id: ros-include-guard
      - id: sort-package-xml

  - repo: https://github.com/shellcheck-py/shellcheck-py
    rev: v0.11.0.1
    hooks:
      - id: shellcheck

  - repo: https://github.com/scop/pre-commit-shfmt
    rev: v3.12.0-2
    hooks:
      - id: shfmt
        args: [-w, -s, -i=4]

  - repo: https://github.com/pycqa/isort
    rev: 7.0.0
    hooks:
      - id: isort
        args: [--profile=black, --line-length=100]

  - repo: https://github.com/psf/black-pre-commit-mirror
    rev: 25.12.0
    hooks:
      - id: black
        args: [--line-length=100]

  - repo: https://github.com/pre-commit/mirrors-clang-format
    rev: v21.1.8
    hooks:
      - id: clang-format
        types_or: [c++, c, cuda]

  - repo: https://github.com/cpplint/cpplint
    rev: 2.0.2
    hooks:
      - id: cpplint
        args: [--quiet]
        exclude: .cu

  - repo: https://github.com/python-jsonschema/check-jsonschema
    rev: 0.36.0
    hooks:
      - id: check-metaschema
        files: ^.+/schema/.*schema\.json$

  - repo: local
    hooks:
      - id: prettier-svg
        name: prettier svg
        description: Apply Prettier with plugin-xml to svg.
        entry: prettier --write --list-different --ignore-unknown --print-width 200 --xml-self-closing-space false --xml-whitespace-sensitivity ignore
        language: node
        files: .svg$
        additional_dependencies: [prettier@2.7.1, "@prettier/plugin-xml@2.2.0"]

  - repo: https://github.com/AleksaC/hadolint-py
    rev: v2.14.0
    hooks:
      - id: hadolint
        exclude: .svg$


================================================
FILE: .prettierignore
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

*.param.yaml
*.rviz


================================================
FILE: .prettierrc.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

printWidth: 100
tabWidth: 2
overrides:
  - files: package.xml
    options:
      printWidth: 1000
      xmlSelfClosingSpace: false
      xmlWhitespaceSensitivity: ignore

  - files: "*.launch.xml"
    options:
      printWidth: 200
      xmlSelfClosingSpace: false
      xmlWhitespaceSensitivity: ignore

  - files: "*.xacro"
    options:
      printWidth: 200
      xmlSelfClosingSpace: false
      xmlWhitespaceSensitivity: ignore


================================================
FILE: .rgignore
================================================
!/src/


================================================
FILE: .shellcheckrc
================================================
external-sources=true


================================================
FILE: .webauto-ci/main/autoware-build/run.sh
================================================
#!/bin/bash -e

: "${WEBAUTO_CI_SOURCE_PATH:?is not set}"
: "${WEBAUTO_CI_DEBUG_BUILD:?is not set}"

: "${AUTOWARE_PATH:?is not set}"
: "${CCACHE_DIR:=}"
: "${CCACHE_SIZE:=1G}"
: "${PARALLEL_WORKERS:=4}"

sudo mkdir "$AUTOWARE_PATH"
sudo chown "$(whoami)": "$AUTOWARE_PATH"
cd "$WEBAUTO_CI_SOURCE_PATH"
cp -r src .webauto-ci.* "$AUTOWARE_PATH"
cd "$AUTOWARE_PATH"

if [ -n "$CCACHE_DIR" ]; then
    mkdir -p "$CCACHE_DIR"
    export USE_CCACHE=1
    export CCACHE_DIR="$CCACHE_DIR"
    export CC="/usr/lib/ccache/gcc"
    export CXX="/usr/lib/ccache/g++"
    ccache -M "$CCACHE_SIZE"
fi

# install xmlschema<4.0.0 before rosdep install as workaround for scenario_simulator_v2
sudo pip3 install xmlschema==3.4.5

sudo -E apt-get -y update

# shellcheck disable=SC2012
ROS_DISTRO=$(ls -1 /opt/ros | head -1)
# shellcheck disable=SC1090
source "/opt/ros/$ROS_DISTRO/setup.bash"
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro "$ROS_DISTRO"

[[ $WEBAUTO_CI_DEBUG_BUILD == "true" ]] && build_type="RelWithDebInfo" || build_type="Release"

colcon build \
    --cmake-args -DCMAKE_BUILD_TYPE="$build_type" -DBUILD_TESTING=off -Wno-dev --no-warn-unused-cli \
    --symlink-install \
    --catkin-skip-building-tests \
    --executor parallel \
    --parallel-workers "$PARALLEL_WORKERS"

sudo -E apt-get -y autoremove


================================================
FILE: .webauto-ci/main/autoware-setup/run.sh
================================================
#!/bin/bash -e

ansible_args=()
ansible_args+=("--extra-vars" "prompt_install_nvidia=y")
ansible_args+=("--extra-vars" "prompt_download_artifacts=y")
ansible_args+=("--extra-vars" "data_dir=$HOME/autoware_data")
ansible_args+=("--extra-vars" "ros2_installation_type=ros-base")
ansible_args+=("--extra-vars" "install_devel=false")

# read amd64 env file and expand ansible arguments
source 'amd64.env'
while read -r env_name; do
    ansible_args+=("--extra-vars" "${env_name}=${!env_name}")
done < <(
    grep -v '^\s*#' amd64.env |
        grep -v '^\s*$' |
        sed 's/#.*//' | # remove trailing comments
        sed 's/=.*//'   # extract variable name
)

ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml"
ansible-playbook "ansible/playbooks/universe.yaml" \
    "${ansible_args[@]}" \
    -e WORKSPACE_ROOT="$(pwd)" \
    --skip-tags vcs


================================================
FILE: .webauto-ci/main/environment-setup/run.sh
================================================
#!/bin/bash -e

apt-get update

apt-get -y install sudo curl wget unzip gnupg lsb-release ccache python3-apt python3-pip apt-utils software-properties-common jq
add-apt-repository universe

pip install --no-cache-dir 'ansible==10.*'

user=autoware
useradd -m "$user" -s /bin/bash
echo "$user:$user" | chpasswd
echo "$user ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers
gpasswd -a "$user" sudo


================================================
FILE: .webauto-ci.yaml
================================================
# The configuration file for Web.Auto CI/CD tool.
# https://docs.web.auto/user-manuals/evaluator/configuration/reference/introduction

version: 2

artifacts:
  - name: main
    metadata:
      play-ondemand.ci.web.auto/buildspec: Autoware-Humble_v0.29.0
    build:
      type: custom
      runtime:
        type: standard1/amd64/large
      source:
        vcstool:
          repositories_files:
            - repositories/autoware.repos
            - repositories/simulator.repos
          import_path: src
      environment_variables:
        AUTOWARE_PATH: /opt/autoware
        DEBIAN_FRONTEND: noninteractive
        LANG: C.UTF-8
      linux_parameters:
        kernel_version: 5.19.0-50-generic
      phases:
        - name: environment-setup
          user: root
          exec: ./.webauto-ci/main/environment-setup/run.sh
          caches:
            - name: apt-lists
              mountpoint: /var/lib/apt/lists
            - name: apt-archives
              mountpoint: /var/cache/apt/archives
          build_result_reuse:
            key_files:
              - .webauto-ci/main/environment-setup/**/*
        - name: autoware-setup
          user: autoware
          exec: ./.webauto-ci/main/autoware-setup/run.sh
          caches:
            - name: apt-lists
              mountpoint: /var/lib/apt/lists
            - name: apt-archives
              mountpoint: /var/cache/apt/archives
          build_result_reuse:
            key_files:
              - .webauto-ci/main/autoware-setup/**/*
              - ansible/**/*
              - ansible-galaxy-requirements.yaml
              - amd64.env
          incremental_build:
            enabled: true
        - name: autoware-build
          user: autoware
          exec: ./.webauto-ci/main/autoware-build/run.sh
          environment_variables:
            PARALLEL_WORKERS: "32"
            CCACHE_DIR: /tmp/build/cache/ccache
          caches:
            - name: apt-lists
              mountpoint: /var/lib/apt/lists
            - name: apt-archives
              mountpoint: /var/cache/apt/archives
            - name: ccache
              mountpoint: /tmp/build/cache/ccache
          build_result_reuse:
            key_files:
              - .webauto-ci/main/autoware-build/**/*
              - src/**/*
      base_container_image:
        from: ubuntu:22.04
      output_container_image:
        from: autoware-build
        workdir: /opt/autoware
        user: autoware

simulations:
  - name: lexus_planning_sim
    type: planning_sim_v2
    simulator:
      deployment:
        type: container
        artifact: main
      runtime:
        type: standard1/amd64/medium
      parameters:
        launch_autoware: "true"
        autoware_launch_package: autoware_launch
        autoware_launch_file: planning_simulator.launch.xml
        architecture_type: awf/universe/20250130
        vehicle_model: sample_vehicle
        sensor_model: sample_sensor_kit
        initialize_duration: "90"
        launch_visualization: "false"

release:
  components:
    - name: planning
      deployment:
        type: container
        artifact: main
    - name: perception
      deployment:
        type: container
        artifact: main


================================================
FILE: .yamllint.yaml
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

extends: default

ignore: |
  *.param.yaml

rules:
  braces:
    level: error
    max-spaces-inside: 1 # To format with Prettier
  comments:
    level: error
    min-spaces-from-content: 1 # To be compatible with C++ and Python
  document-start:
    level: error
    present: false # Don't need document start markers
  line-length: disable # Delegate to Prettier
  truthy:
    level: error
    check-keys: false # To allow 'on' of GitHub Actions
  quoted-strings:
    level: error
    required: only-when-needed # To keep consistent style


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
  community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or advances of
  any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
  without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
<conduct@autoware.org>.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][mozilla coc].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][faq]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[mozilla coc]: https://github.com/mozilla/diversity
[faq]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

See <https://autowarefoundation.github.io/autoware-documentation/main/contributing/>.


================================================
FILE: CPPLINT.cfg
================================================
# This file is automatically synced from:
# https://github.com/autowarefoundation/sync-file-templates
# To make changes, update the source repository and follow the guidelines in its README.

# Modified from https://github.com/ament/ament_lint/blob/ebd524bb9973d5ec1dc48a670ce54f958a5a0243/ament_cpplint/ament_cpplint/main.py#L64-L120
set noparent
linelength=100
includeorder=standardcfirst
filter=-build/c++11               # we do allow C++11
filter=-build/c++17               # we allow <filesystem>
filter=-build/namespaces_literals # we allow using namespace for literals
filter=-runtime/references        # we consider passing non-const references to be ok
filter=-whitespace/braces         # we wrap open curly braces for namespaces, classes and functions
filter=-whitespace/indent         # we don't indent keywords like public, protected and private with one space
filter=-whitespace/newline        # we allow the developer to decide about newline at the end of file (it's clashing with clang-format)
filter=-whitespace/parens         # we allow closing parenthesis to be on the next line
filter=-whitespace/semicolon      # we allow the developer to decide about whitespace after a semicolon
filter=-build/header_guard        # we automatically fix the names of header guards using pre-commit
filter=-build/include_order       # we use the custom include order
filter=-build/include_subdir      # we allow the style of "foo.hpp"


================================================
FILE: DISCLAIMER.md
================================================
DISCLAIMER

“Autoware” will be provided by The Autoware Foundation under the Apache License 2.0.
This “DISCLAIMER” will be applied to all users of Autoware (a “User” or “Users”) with
the Apache License 2.0 and Users shall hereby approve and acknowledge all the contents
specified in this disclaimer below and will be deemed to consent to this
disclaimer without any objection upon utilizing or downloading Autoware.

Disclaimer and Waiver of Warranties

1. AUTOWARE FOUNDATION MAKES NO REPRESENTATION OR WARRANTY OF ANY KIND,
   EXPRESS OR IMPLIED, WITH RESPECT TO PROVIDING AUTOWARE (the “Service”)
   including but not limited to any representation or warranty (i) of fitness or
   suitability for a particular purpose contemplated by the Users, (ii) of the
   expected functions, commercial value, accuracy, or usefulness of the Service,
   (iii) that the use by the Users of the Service complies with the laws and
   regulations applicable to the Users or any internal rules established by
   industrial organizations, (iv) that the Service will be free of interruption or
   defects, (v) of the non-infringement of any third party's right and (vi) the
   accuracy of the content of the Services and the software itself.

2. The Autoware Foundation shall not be liable for any damage incurred by the
   User that are attributable to the Autoware Foundation for any reasons
   whatsoever. UNDER NO CIRCUMSTANCES SHALL THE AUTOWARE FOUNDATION BE LIABLE FOR
   INCIDENTAL, INDIRECT, SPECIAL OR FUTURE DAMAGES OR LOSS OF PROFITS.

3. A User shall be entirely responsible for the content posted by the User and
   its use of any content of the Service or the Website. If the User is held
   responsible in a civil action such as a claim for damages or even in a criminal
   case, the Autoware Foundation and member companies, governments and academic &
   non-profit organizations and their directors, officers, employees and agents
   (collectively, the “Indemnified Parties”) shall be completely discharged from
   any rights or assertions the User may have against the Indemnified Parties, or
   from any legal action, litigation or similar procedures.

Indemnity

A User shall indemnify and hold the Indemnified Parties harmless from any of
their damages, losses, liabilities, costs or expenses (including attorneys'
fees or criminal compensation), or any claims or demands made against the
Indemnified Parties by any third party, due to or arising out of, or in
connection with utilizing Autoware (including the representations and
warranties), the violation of applicable Product Liability Law of each country
(including criminal case) or violation of any applicable laws by the Users, or
the content posted by the User or its use of any content of the Service or the
Website.


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: NOTICE
================================================
autowarefoundation/autoware
Copyright 2021 The Autoware Foundation

This product includes software developed at
The Autoware Foundation (https://www.autoware.org/).

This product includes code developed by TIER IV.
Copyright 2021 TIER IV, Inc.


================================================
FILE: README.md
================================================
# Autoware - the world's leading open-source software project for autonomous driving

![Autoware_RViz](https://user-images.githubusercontent.com/63835446/158918717-58d6deaf-93fb-47f9-891d-e242b02cba7b.png)

<!--- Contributors -->
<p align="center">
    <a href="https://github.com/autowarefoundation/autoware_universe/graphs/contributors">
        <img src="https://img.shields.io/github/contributors/autowarefoundation/autoware_universe?style=flat&label=Autoware%20Universe%20Contributors"
            alt="Autoware Universe Contributors" /></a>
    <a href="https://github.com/autowarefoundation/autoware/graphs/contributors">
        <img src="https://img.shields.io/github/contributors/autowarefoundation/autoware?style=flat&label=Autoware%20Contributors"
            alt="Autoware Contributors" /></a>
</p>

<!--- Commit Activity -->
<p align="center">
    <a href="https://github.com/autowarefoundation/autoware_universe/pulse">
        <img src="https://img.shields.io/github/commit-activity/m/autowarefoundation/autoware_universe?style=flat&label=Autoware%20Universe%20Commit%20Activity"
            alt="Autoware Universe Activity" /></a>
    <a href="https://github.com/autowarefoundation/autoware/pulse">
        <img src="https://img.shields.io/github/commit-activity/m/autowarefoundation/autoware?style=flat&label=Autoware%20Commit%20Activity"
            alt="Autoware Activity" /></a>
</p>

<!--- License -->
<p align="center">
    <a href="https://github.com/autowarefoundation/autoware/blob/main/LICENSE">
        <img src="https://img.shields.io/github/license/autowarefoundation/autoware?style=flat&label=License"
            alt="License" /></a>
</p>

<!--- CI Reports -->
<p align="center">
    <a href="https://github.com/autowarefoundation/autoware/actions/workflows/health-check.yaml?query=branch%3Amain">
        <img src="https://img.shields.io/github/actions/workflow/status/autowarefoundation/autoware/health-check.yaml?style=flat&label=health-check"
            alt="health-check CI" /></a>
    <a href="https://app.codecov.io/gh/autowarefoundation/autoware_universe">
        <img src="https://img.shields.io/codecov/c/gh/autowarefoundation/autoware_universe?style=flat&label=Coverage&logo=codecov&logoColor=white"
            alt="Code Coverage" /></a>
</p>

<!--- Social Media -->
<p align="center">
    <a href="https://discord.gg/Q94UsPvReQ">
        <img src="https://img.shields.io/discord/953808765935816715?logo=discord&logoColor=white&style=flat&label=Autoware%20Discord"
            alt="Autoware Discord"></a>
    <a href="https://twitter.com/intent/follow?screen_name=AutowareFdn">
        <img src="https://img.shields.io/twitter/follow/AutowareFdn?logo=x&logoColor=white&style=flat"
            alt="Autoware Twitter / X"></a>
    <a href="https://www.linkedin.com/company/the-autoware-foundation/">
        <img src="https://img.shields.io/badge/Linkedin-Autoware%20Foundation-0a66c2?logo=linkedin&logoColor=white&style=flat"
            alt="Autoware Linkedin"></a>
</p>

Autoware is an open-source software stack for self-driving vehicles, built on the [Robot Operating System (ROS)](https://www.ros.org/). It includes all of the necessary functions to drive an autonomous vehicles from localization and object detection to route planning and control, and was created with the aim of enabling as many individuals and organizations as possible to contribute to open innovations in autonomous driving technology.

![Autoware architecture](https://static.wixstatic.com/media/984e93_552e338be28543c7949717053cc3f11f~mv2.png/v1/crop/x_0,y_1,w_1500,h_879/fill/w_863,h_506,al_c,usm_0.66_1.00_0.01,enc_auto/Autoware-GFX_edited.png)

## Documentation

To learn more about using or developing Autoware, refer to the [Autoware documentation site](https://autowarefoundation.github.io/autoware-documentation/main/). You can find the source for the documentation in [autowarefoundation/autoware-documentation](https://github.com/autowarefoundation/autoware-documentation).

## Repository overview

- [autowarefoundation/autoware](https://github.com/autowarefoundation/autoware)
  - Meta-repository containing `.repos` files to construct an Autoware workspace.
  - It is anticipated that this repository will be frequently forked by users, and so it contains minimal information to avoid unnecessary differences.
- [autowarefoundation/autoware_core](https://github.com/autowarefoundation/autoware_core)
  - Main repository for high-quality, stable ROS packages for Autonomous Driving.
  - Based on [Autoware.Auto](https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto) and [Autoware.Universe](https://github.com/autowarefoundation/autoware_universe).
- [autowarefoundation/autoware_universe](https://github.com/autowarefoundation/autoware_universe)
  - Repository for experimental, cutting-edge ROS packages for Autonomous Driving.
  - Autoware Universe was created to make it easier for researchers and developers to extend the functionality of Autoware Core
- [autowarefoundation/autoware_launch](https://github.com/autowarefoundation/autoware_launch)
  - Launch configuration repository containing node configurations and their parameters.
- [autowarefoundation/autoware-github-actions](https://github.com/autowarefoundation/autoware-github-actions)
  - Contains [reusable GitHub Actions workflows](https://docs.github.com/ja/actions/learn-github-actions/reusing-workflows) used by multiple repositories for CI.
  - Utilizes the [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) concept.
- [autowarefoundation/autoware-documentation](https://github.com/autowarefoundation/autoware-documentation)
  - Documentation repository for Autoware users and developers.
  - Since Autoware Core/Universe has multiple repositories, a central documentation repository is important to make information accessible from a single place.

## Using Autoware.AI

If you wish to use Autoware.AI, the previous version of Autoware based on ROS 1, switch to [autoware-ai](https://github.com/autowarefoundation/autoware_ai) repository. However, be aware that Autoware.AI has reached the end-of-life as of 2022, and we strongly recommend transitioning to Autoware Core/Universe for future use.

## Contributing

- [There is no formal process to become a contributor](https://github.com/autowarefoundation/autoware-projects/wiki#contributors) - you can comment on any [existing issues](https://github.com/autowarefoundation/autoware_universe/issues) or make a pull request on any Autoware repository!
  - Make sure to follow the [Contribution Guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/).
  - Take a look at Autoware's [various working groups](https://github.com/autowarefoundation/autoware-projects/wiki#working-group-list) to gain an understanding of any work in progress and to see how projects are managed.
- If you have any technical questions, you can start a discussion in the [Q&A category](https://github.com/autowarefoundation/autoware/discussions/categories/q-a) to request help and confirm if a potential issue is a bug or not.

## Useful resources

- [Autoware Foundation homepage](https://www.autoware.org/)
- [Support guidelines](https://autowarefoundation.github.io/autoware-documentation/main/support/support-guidelines/)
- [CI metrics](https://autowarefoundation.github.io/autoware-ci-metrics/)


================================================
FILE: amd64.env
================================================
# ROS distribution (humble)
rosdistro=humble
rmw_implementation=rmw_cyclonedds_cpp

# Base image selection for Humble
base_image=ros:humble-ros-base-jammy
autoware_base_image=ghcr.io/autowarefoundation/autoware-base:latest
autoware_base_cuda_image=ghcr.io/autowarefoundation/autoware-base:cuda-latest

cuda_version=12.8
tensorrt_version=10.8.0.43-1+cuda12.8
cumm_version=0.5.3
spconv_version=2.3.8


================================================
FILE: amd64_jazzy.env
================================================
# ROS distribution (jazzy)
rosdistro=jazzy
rmw_implementation=rmw_cyclonedds_cpp

# Jazzy-specific overrides (will be set by build.sh)
base_image=ros:jazzy-ros-base-noble
autoware_base_image=ghcr.io/autowarefoundation/autoware-base:latest-jazzy
autoware_base_cuda_image=ghcr.io/autowarefoundation/autoware-base:cuda-latest-jazzy

cuda_version=12.8
tensorrt_version=10.8.0.43-1+cuda12.8
cumm_version=0.5.3
spconv_version=2.3.8


================================================
FILE: ansible/.gitignore
================================================
*.retry


================================================
FILE: ansible/COLCON_IGNORE
================================================


================================================
FILE: ansible/README.md
================================================
# Ansible Collection - autoware.dev_env

This collection contains the playbooks to set up the development environment for Autoware.

## Set up a development environment

### Ansible installation

```bash
# Remove apt installed ansible (In Ubuntu 22.04, ansible the version is old)
sudo apt-get purge ansible

# Install pipx
sudo apt-get -y update
sudo apt-get -y install pipx

# Add pipx to the system PATH
python3 -m pipx ensurepath

# Install ansible
pipx install --include-deps --force "ansible==10.*"
```

### Install ansible collections

This step should be repeated when a new playbook is added.

```bash
cd ~/autoware # The root directory of the cloned repository
ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml"
```


================================================
FILE: ansible/galaxy.yml
================================================
# Required
namespace: autoware
name: dev_env
version: 0.1.0
readme: README.md
authors:
  - Kenji Miyake <kenji.miyake@tier4.jp>

# Optional
description: Set up development environment for Autoware
license:
  - Apache-2.0
tags:
  - autoware
dependencies: {}
repository: https://github.com/autowarefoundation/autoware
documentation: https://autowarefoundation.github.io/autoware-documentation
homepage: https://www.autoware.org/
issues: https://github.com/autowarefoundation/autoware/issues
build_ignore: []


================================================
FILE: ansible/playbooks/docker.yaml
================================================
- name: Set up Docker development environments for Autoware
  hosts: localhost
  connection: local
  vars_prompt:
    - name: prompt_install_nvidia
      prompt: |-
        [Warning] Some Autoware components depend on the CUDA, and TensorRT NVIDIA libraries which have end-user license agreements that should be reviewed before installation.
        Install NVIDIA libraries? [y/N]
      private: false
  pre_tasks:
    - name: Print args
      ansible.builtin.debug:
        msg:
          - cuda_version: "{{ cuda_version }}"
    - name: Show a warning if the NVIDIA libraries will not be installed
      ansible.builtin.pause:
        seconds: 10
        prompt: |
          [Warning] Skipping installation of NVIDIA libraries. Please manually install them if you plan to use any dependent components.
      when: prompt_install_nvidia != 'y'
  roles:
    - role: autoware.dev_env.cuda
      when: prompt_install_nvidia == 'y'
    - role: autoware.dev_env.docker_engine
    - role: autoware.dev_env.nvidia_container_toolkit


================================================
FILE: ansible/playbooks/download_artifacts.yaml
================================================
- name: Download Autoware artifacts
  hosts: localhost
  roles:
    - autoware.dev_env.artifacts


================================================
FILE: ansible/playbooks/install_rviz_theme.yaml
================================================
- name: Install RViz theme
  hosts: localhost
  roles:
    - autoware.dev_env.qt5ct_setup


================================================
FILE: ansible/playbooks/install_spconv.yaml
================================================
- name: Download and install the cumm and spconv packages
  hosts: localhost
  roles:
    - autoware.dev_env.spconv


================================================
FILE: ansible/playbooks/openadkit.yaml
================================================
- name: Set up source development environments for Autoware Universe
  hosts: localhost
  connection: local
  pre_tasks:
    - name: Verify OS
      ansible.builtin.fail:
        msg: Only Ubuntu 22.04 and 24.04 are supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/.
      when: ansible_distribution != 'Ubuntu' or (ansible_distribution_version != '22.04' and ansible_distribution_version != '24.04')

    - name: Print args
      ansible.builtin.debug:
        msg:
          - module: "{{ module }}"
          - rosdistro: "{{ rosdistro }}"
          - rmw_implementation: "{{ rmw_implementation }}"
          - cuda_version: "{{ cuda_version }}"
          - tensorrt_version: "{{ tensorrt_version }}"
  roles:
    # Autoware base dependencies
    - role: autoware.dev_env.rmw_implementation
      when: module == 'base'
      vars:
        rmw_implementation__rosdistro: "{{ rosdistro }}"
        rmw_implementation__name: "{{ rmw_implementation }}"
    - role: autoware.dev_env.gdown
      when: module == 'base'
    - role: autoware.dev_env.kisak_mesa
      when: module == 'base' and rosdistro != 'jazzy'
    - role: autoware.dev_env.build_tools
      when: module == 'all' and install_devel=='y'

    # Module specific dependencies
    - role: autoware.dev_env.acados
      when: module == 'all'
    - role: autoware.dev_env.geographiclib
      when: module == 'perception-localization' or module == 'all'
    - role: autoware.dev_env.cuda
      when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y'
    - role: autoware.dev_env.tensorrt
      when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y'
    - role: autoware.dev_env.spconv
      when: (module == 'base' or module == 'perception-localization' or module == 'all') and prompt_install_nvidia=='y'

    # Development environment
    - role: autoware.dev_env.dev_tools
      when: module == 'dev-tools'
    - role: autoware.dev_env.ros2_dev_tools
      when: module == 'dev-tools'

    # ONNX files and other artifacts
    - role: autoware.dev_env.artifacts
      when: prompt_download_artifacts == 'y'


================================================
FILE: ansible/playbooks/role_rmw_implementation.yaml
================================================
- name: Install RMW implementation
  hosts: localhost
  roles:
    - role: autoware.dev_env.rmw_implementation
      vars:
        rmw_implementation__rosdistro: "{{ rosdistro }}"
        rmw_implementation__name: "{{ rmw_implementation }}"


================================================
FILE: ansible/playbooks/setup_acados.yaml
================================================
- name: Setup acados
  hosts: localhost
  connection: local
  roles:
    - role: autoware.dev_env.acados


================================================
FILE: ansible/playbooks/telegraf.yaml
================================================
- name: Set up Telegraf and InfluxDB v2
  hosts: localhost
  roles:
    - autoware.dev_env.telegraf


================================================
FILE: ansible/playbooks/universe.yaml
================================================
- name: Set up source development environments for Autoware Universe
  hosts: localhost
  connection: local
  vars_prompt:
    - name: prompt_install_nvidia
      prompt: |-
        [Warning] Some Autoware components depend on the CUDA, and TensorRT NVIDIA libraries which have end-user license agreements that should be reviewed before installation.
        Install NVIDIA libraries? [y/N]
      private: false
    - name: prompt_download_artifacts
      prompt: |-
        [Warning] Should the ONNX model files and other artifacts be downloaded alongside setting up the development environment.
        Download artifacts? [y/N]
      private: false
    - name: install_devel
      prompt: |-
        [Warning] Do you want to install recommended development tools for Autoware? [y/N]
      private: false
      default: y
  pre_tasks:
    - name: Verify OS
      ansible.builtin.fail:
        msg: Only Ubuntu 22.04 and 24.04 are supported for this branch. Please refer to https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/.
      when: ansible_distribution_version not in ['22.04', '24.04']

    - name: Print args
      ansible.builtin.debug:
        msg:
          - rosdistro: "{{ rosdistro }}"
          - rmw_implementation: "{{ rmw_implementation }}"
          - cuda_version: "{{ cuda_version }}"
          - tensorrt_version: "{{ tensorrt_version }}"

    - name: Show a warning if the NVIDIA libraries will not be installed
      ansible.builtin.pause:
        seconds: 10
        prompt: |
          [Warning] Skipping installation of NVIDIA libraries. Please manually install them if you plan to use any dependent components.
      when: prompt_install_nvidia != 'y'
  roles:
    # Autoware base dependencies
    - role: autoware.dev_env.ros2
    - role: autoware.dev_env.ros2_dev_tools
    - role: autoware.dev_env.rmw_implementation
      vars:
        rmw_implementation__rosdistro: "{{ rosdistro }}"
        rmw_implementation__name: "{{ rmw_implementation }}"
    - role: autoware.dev_env.gdown
    - role: autoware.dev_env.build_tools
    - role: autoware.dev_env.agnocast
      when: rosdistro == 'humble'

    # Autoware module dependencies
    - role: autoware.dev_env.acados
    - role: autoware.dev_env.geographiclib
    - role: autoware.dev_env.cuda
      when: prompt_install_nvidia == 'y'
    - role: autoware.dev_env.tensorrt
      when: prompt_install_nvidia == 'y'
    - role: autoware.dev_env.spconv
      when: prompt_install_nvidia == 'y'

    # Autoware devel dependencies
    - role: autoware.dev_env.dev_tools
      when: install_devel == 'y'

    # ONNX files and other artifacts
    - role: autoware.dev_env.artifacts
      when: prompt_download_artifacts == 'y'

    # Qt5ct setup (RViz theme)
    - role: autoware.dev_env.qt5ct_setup


================================================
FILE: ansible/roles/acados/README.md
================================================
# Setup acados

Installs [acados](https://github.com/acados/acados), a fast and embedded solver for nonlinear optimal control, from source.

## What it does

1. Clones the acados repository (shallow) to `/opt/acados`
2. Initializes submodules (shallow)
3. Builds and installs acados in-tree with `QPOASES` and position-independent code enabled
4. Downloads the [tera renderer](https://github.com/acados/tera_renderer) binary to `/opt/acados/bin/t_renderer` (supports `x86_64` and `aarch64`)
5. Creates a Python virtual environment at `/opt/acados/.venv`
6. Installs `casadi`, `sympy`, and `acados_template` (editable) in the venv
7. Adds `CMAKE_PREFIX_PATH`, `ACADOS_SOURCE_DIR`, and `LD_LIBRARY_PATH` to the user's `.bashrc`

## Installation ⭐

Install ansible following the instructions in the [ansible installation guide](../../README.md#ansible-installation).

```bash
cd ~/autoware # The root directory of the cloned repository
ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml"
```

This step should be repeated when the ansible directory is updated.

```bash
ansible-playbook autoware.dev_env.setup_acados --ask-become-pass
```

## Directory layout

After running, `/opt/acados` contains both the source tree and installed artifacts:

```text
/opt/acados/
├── .venv/            # Python virtual environment
├── bin/t_renderer    # tera renderer binary
├── build/            # cmake build directory
├── cmake/            # acadosConfig.cmake (used by find_package)
├── lib/              # built shared libraries
├── include/          # headers
├── interfaces/       # acados_template Python package (installed to .venv)
├── external/         # submodules (qpoases, etc.)
└── ...               # remaining source tree
```

## Usage in CMake

After provisioning, any CMake project can use acados with:

```cmake
find_package(acados REQUIRED)
target_link_libraries(your_target PRIVATE acados)
```

No additional path configuration is needed, `CMAKE_PREFIX_PATH` is set via `.bashrc`.

## Using the Python interface during `colcon build`

If your ROS 2 package generates acados C code at build time (e.g. via a Python script that uses `acados_template` and `casadi`), you need to source the venv so the code-generation script can find the installed packages.

The Ansible role already exports `ACADOS_SOURCE_DIR` and `LD_LIBRARY_PATH` in `.bashrc`, so those are available to `colcon build` as long as you've sourced your shell. The only extra step is pointing CMake at the venv Python so `casadi`, `sympy`, and `acados_template` are importable:

```cmake
find_program(ACADOS_PYTHON NAMES python3 PATHS $ENV{ACADOS_SOURCE_DIR}/.venv/bin NO_DEFAULT_PATH)

add_custom_command(
  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/generated/acados_solver.c
  COMMAND ${ACADOS_PYTHON} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_solver.py
    --output-dir ${CMAKE_CURRENT_BINARY_DIR}/generated
  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_solver.py
  COMMENT "Generating acados solver C code"
)
```

The generated C code is then compiled as part of your normal CMake target, no Python dependency at runtime.

## Requirements

- CMake
- A C compiler (gcc/clang)
- `make`
- `git`
- `python3` with `venv` module (`python3-venv` on Ubuntu)

## Idempotency

The role is safe to run multiple times. The git clone resets any local modifications, and the build steps re-run on each invocation to ensure correctness when the version is changed. The `.bashrc` entries use `lineinfile` with regex matching to avoid duplication. The venv creation is skipped if it already exists (`creates` guard).


================================================
FILE: ansible/roles/acados/defaults/main.yaml
================================================
acados_version: v0.5.3
acados_tera_renderer_version: v0.2.0
acados_pip_packages:
  - casadi
  - sympy


================================================
FILE: ansible/roles/acados/meta/main.yaml
================================================


================================================
FILE: ansible/roles/acados/tasks/main.yaml
================================================
- name: Clone acados repository (shallow) with submodules
  become: true
  ansible.builtin.git:
    repo: https://github.com/acados/acados.git
    dest: /opt/acados
    version: "{{ acados_version }}"
    depth: 1
    force: true
    recursive: true

- name: Create build directory
  become: true
  ansible.builtin.file:
    path: /opt/acados/build
    state: directory
    mode: "0755"

# cspell:ignore DACADOS
- name: Configure acados with CMake
  become: true
  ansible.builtin.command:
    cmd: >
      cmake
      -DACADOS_WITH_QPOASES=ON
      -DCMAKE_POSITION_INDEPENDENT_CODE=ON
      ..
    chdir: /opt/acados/build
  changed_when: false

- name: Build and install acados
  become: true
  ansible.builtin.command:
    cmd: make install -j{{ ansible_processor_vcpus }}
    chdir: /opt/acados/build
  changed_when: false

- name: Create acados bin directory
  become: true
  ansible.builtin.file:
    path: /opt/acados/bin
    state: directory
    mode: "0755"

- name: Set tera renderer architecture
  ansible.builtin.set_fact:
    acados_tera_arch: "{{ {'x86_64': 'amd64', 'aarch64': 'arm64'}[ansible_architecture] }}"

- name: Download tera renderer
  become: true
  ansible.builtin.get_url:
    url: https://github.com/acados/tera_renderer/releases/download/{{ acados_tera_renderer_version }}/t_renderer-{{ acados_tera_renderer_version }}-linux-{{ acados_tera_arch }}
    dest: /opt/acados/bin/t_renderer
    mode: "0755"

# ---------- Python virtual environment ----------

- name: Create acados Python virtual environment
  become: true
  ansible.builtin.command:
    cmd: python3 -m venv /opt/acados/.venv
    creates: /opt/acados/.venv/bin/activate

- name: Upgrade pip inside the virtual environment
  become: true
  ansible.builtin.command:
    cmd: /opt/acados/.venv/bin/pip install --upgrade pip
  changed_when: false

- name: Install Python packages in acados venv
  become: true
  ansible.builtin.command:
    cmd: /opt/acados/.venv/bin/pip install {{ acados_pip_packages | join(' ') }}
  changed_when: false

- name: Install acados_template (editable) in acados venv
  become: true
  ansible.builtin.command:
    cmd: /opt/acados/.venv/bin/pip install -e /opt/acados/interfaces/acados_template
  changed_when: false

# ---------- Environment (.bashrc) ----------

- name: Add acados CMAKE_PREFIX_PATH to .bashrc
  become: true
  ansible.builtin.lineinfile:
    path: "{{ item }}"
    line: export CMAKE_PREFIX_PATH="/opt/acados:${CMAKE_PREFIX_PATH}"
    regexp: CMAKE_PREFIX_PATH.*acados
    state: present
  loop:
    - "{{ ansible_env.HOME }}/.bashrc"
    - /etc/skel/.bashrc

- name: Add ACADOS_SOURCE_DIR to .bashrc
  become: true
  ansible.builtin.lineinfile:
    path: "{{ item }}"
    line: export ACADOS_SOURCE_DIR="/opt/acados"
    regexp: ACADOS_SOURCE_DIR
    state: present
  loop:
    - "{{ ansible_env.HOME }}/.bashrc"
    - /etc/skel/.bashrc

- name: Add acados LD_LIBRARY_PATH to .bashrc
  become: true
  ansible.builtin.lineinfile:
    path: "{{ item }}"
    line: export LD_LIBRARY_PATH="/opt/acados/lib:${LD_LIBRARY_PATH}"
    regexp: LD_LIBRARY_PATH.*acados
    state: present
  loop:
    - "{{ ansible_env.HOME }}/.bashrc"
    - /etc/skel/.bashrc


================================================
FILE: ansible/roles/agnocast/README.md
==========
Download .txt
gitextract_poq88meg/

├── .ansible-lint
├── .clang-format
├── .clang-tidy
├── .clang-tidy-ci
├── .devcontainer/
│   ├── Dockerfile
│   ├── core-devel/
│   │   └── devcontainer.json
│   ├── universe-devel/
│   │   └── devcontainer.json
│   └── universe-devel-cuda/
│       └── devcontainer.json
├── .dockerignore
├── .fdignore
├── .github/
│   ├── CODEOWNERS
│   ├── DISCUSSION_TEMPLATE/
│   │   └── general.yaml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yaml
│   │   ├── config.yml
│   │   ├── simple-issue.yaml
│   │   └── task.yaml
│   ├── actions/
│   │   ├── combine-multi-arch-images/
│   │   │   └── action.yaml
│   │   ├── docker-build/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push-base/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push-cuda/
│   │   │   └── action.yaml
│   │   ├── docker-build-and-push-tools/
│   │   │   └── action.yaml
│   │   └── free-disk-space/
│   │       └── action.yaml
│   ├── dependabot.yaml
│   ├── pull_request_template.md
│   ├── stale.yml
│   ├── sync-files.yaml
│   └── workflows/
│       ├── autoware-base.yaml
│       ├── backport.yaml
│       ├── bump-repo-versions-autoware.yaml
│       ├── bump-repo-versions-simulator.yaml
│       ├── bump-repo-versions-tools.yaml
│       ├── comment-on-pr.yaml
│       ├── dco.yaml
│       ├── docker-build-and-push.yaml
│       ├── github-release.yaml
│       ├── health-check.yaml
│       ├── keep-build-cache-small.yaml
│       ├── load-env.yaml
│       ├── mirror-main-branch.yaml
│       ├── pre-commit-ansible-autoupdate.yaml
│       ├── pre-commit-ansible.yaml
│       ├── pre-commit-optional.yaml
│       ├── pre-commit.yaml
│       ├── scenario-test-reusable.yaml
│       ├── scenario-test.yaml
│       ├── semantic-pull-request.yaml
│       ├── setup-docker.yaml
│       ├── setup-universe.yaml
│       ├── spell-check-daily.yaml
│       ├── spell-check-differential.yaml
│       └── sync-files.yaml
├── .gitignore
├── .hadolint.yaml
├── .markdown-link-check.json
├── .markdownlint.yaml
├── .pre-commit-config-ansible.yaml
├── .pre-commit-config-optional.yaml
├── .pre-commit-config.yaml
├── .prettierignore
├── .prettierrc.yaml
├── .rgignore
├── .shellcheckrc
├── .webauto-ci/
│   └── main/
│       ├── autoware-build/
│       │   └── run.sh
│       ├── autoware-setup/
│       │   └── run.sh
│       └── environment-setup/
│           └── run.sh
├── .webauto-ci.yaml
├── .yamllint.yaml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CPPLINT.cfg
├── DISCLAIMER.md
├── LICENSE
├── NOTICE
├── README.md
├── amd64.env
├── amd64_jazzy.env
├── ansible/
│   ├── .gitignore
│   ├── COLCON_IGNORE
│   ├── README.md
│   ├── galaxy.yml
│   ├── playbooks/
│   │   ├── docker.yaml
│   │   ├── download_artifacts.yaml
│   │   ├── install_rviz_theme.yaml
│   │   ├── install_spconv.yaml
│   │   ├── openadkit.yaml
│   │   ├── role_rmw_implementation.yaml
│   │   ├── setup_acados.yaml
│   │   ├── telegraf.yaml
│   │   └── universe.yaml
│   └── roles/
│       ├── acados/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── agnocast/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── artifacts/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── build_tools/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── cuda/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── dev_tools/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── docker_engine/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── gdown/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── geographiclib/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── kisak_mesa/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── nvidia_container_toolkit/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── qt5ct_setup/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yml
│       │   ├── files/
│       │   │   ├── autoware.qss
│       │   │   └── qt5ct.conf
│       │   ├── meta/
│       │   │   └── main.yml
│       │   └── tasks/
│       │       └── main.yml
│       ├── rmw_implementation/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── ros2/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── ros2_dev_tools/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── spconv/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       ├── telegraf/
│       │   ├── README.md
│       │   ├── defaults/
│       │   │   └── main.yaml
│       │   ├── files/
│       │   │   ├── get_telegraf_proccpu_json.sh
│       │   │   ├── get_telegraf_procmem_json.sh
│       │   │   └── telegraf.conf
│       │   ├── handlers/
│       │   │   └── main.yaml
│       │   ├── meta/
│       │   │   └── main.yaml
│       │   └── tasks/
│       │       └── main.yaml
│       └── tensorrt/
│           ├── README.md
│           ├── defaults/
│           │   └── main.yaml
│           ├── meta/
│           │   └── main.yaml
│           └── tasks/
│               └── main.yaml
├── ansible-galaxy-requirements.yaml
├── arm64.env
├── docker/
│   ├── Dockerfile
│   ├── Dockerfile.base
│   ├── README.md
│   ├── build.sh
│   ├── docker-bake-base.hcl
│   ├── docker-bake-cuda.hcl
│   ├── docker-bake.hcl
│   ├── docker-compose.gpu.yaml
│   ├── docker-compose.yaml
│   ├── etc/
│   │   ├── .bash_aliases
│   │   └── ros_entrypoint.sh
│   ├── logging-simulation.env
│   ├── logging-simulation.gpu.env
│   ├── planning-simulation.env
│   ├── run.sh
│   ├── scripts/
│   │   ├── build_and_clean.sh
│   │   ├── cleanup_apt.sh
│   │   ├── cleanup_system.sh
│   │   └── resolve_rosdep_keys.sh
│   └── tools/
│       ├── README.md
│       ├── docker-bake.hcl
│       ├── scenario-simulator/
│       │   ├── Dockerfile
│       │   ├── README.md
│       │   └── entrypoint.sh
│       └── visualizer/
│           ├── Dockerfile
│           ├── README.md
│           ├── entrypoint.sh
│           └── xstartup
├── repositories/
│   ├── autoware-nightly.repos
│   ├── autoware.repos
│   ├── extra-packages.repos
│   ├── simulator-nightly.repos
│   ├── simulator.repos
│   ├── tools-nightly.repos
│   └── tools.repos
├── setup-dev-env.sh
├── setup.cfg
└── src/
    ├── .gitignore
    └── README.md
Condensed preview — 209 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (478K chars).
[
  {
    "path": ".ansible-lint",
    "chars": 167,
    "preview": "skip_list:\n  - galaxy # We don't publish to Ansible Galaxy.\n  - package-latest # Since this is a development environment"
  },
  {
    "path": ".clang-format",
    "chars": 1316,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".clang-tidy",
    "chars": 16732,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".clang-tidy-ci",
    "chars": 510,
    "preview": "Checks: \"\n  -*,\n  bugprone-*,\n  -bugprone-branch-clone,\n  -bugprone-easily-swappable-parameters,\n  -bugprone-exception-e"
  },
  {
    "path": ".devcontainer/Dockerfile",
    "chars": 420,
    "preview": "# hadolint global ignore=DL3006\nARG BASE_IMAGE\nFROM $BASE_IMAGE\n\nENV SHELL /bin/bash\n\nARG USERNAME=autoware\nARG USER_UID"
  },
  {
    "path": ".devcontainer/core-devel/devcontainer.json",
    "chars": 522,
    "preview": "{\n  \"name\": \"autoware:core-devel\",\n  \"build\": {\n    \"dockerfile\": \"../Dockerfile\",\n    \"args\": { \"BASE_IMAGE\": \"ghcr.io/"
  },
  {
    "path": ".devcontainer/universe-devel/devcontainer.json",
    "chars": 530,
    "preview": "{\n  \"name\": \"autoware:universe-devel\",\n  \"build\": {\n    \"dockerfile\": \"../Dockerfile\",\n    \"args\": { \"BASE_IMAGE\": \"ghcr"
  },
  {
    "path": ".devcontainer/universe-devel-cuda/devcontainer.json",
    "chars": 610,
    "preview": "{\n  \"name\": \"autoware:universe-devel-cuda\",\n  \"build\": {\n    \"dockerfile\": \"../Dockerfile\",\n    \"args\": { \"BASE_IMAGE\": "
  },
  {
    "path": ".dockerignore",
    "chars": 316,
    "preview": "# Ignore git and metadata directories\n.git\n.github\n.vscode\n\n# Ignore all markdown files\n*.md\n\n# Ignore Docker files\ndock"
  },
  {
    "path": ".fdignore",
    "chars": 7,
    "preview": "!/src/\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 343,
    "preview": "* ryohsuke.mitsudome@tier4.jp mfc@autoware.org\n\n.devcontainer/** oguzkaganozt@gmail.com yutaka.kondo@tier4.jp\n.github/**"
  },
  {
    "path": ".github/DISCUSSION_TEMPLATE/general.yaml",
    "chars": 551,
    "preview": "body:\n  - type: checkboxes\n    attributes:\n      label: Code of Conduct\n      options:\n        - label: I have read [COD"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.yaml",
    "chars": 2093,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 651,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/simple-issue.yaml",
    "chars": 685,
    "preview": "name: Simple Issue\ndescription: Create a simple issue\nbody:\n  - type: checkboxes\n    attributes:\n      label: Checklist\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/task.yaml",
    "chars": 1445,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/actions/combine-multi-arch-images/action.yaml",
    "chars": 4159,
    "preview": "name: combine-multi-arch-images\ndescription: \"\"\n\ninputs:\n  package-name:\n    description: \"\"\n    required: true\n\nruns:\n "
  },
  {
    "path": ".github/actions/docker-build/action.yaml",
    "chars": 4473,
    "preview": "name: docker-build\ndescription: Composite action to build images only.\n\ninputs:\n  platform:\n    description: Target plat"
  },
  {
    "path": ".github/actions/docker-build-and-push/action.yaml",
    "chars": 17352,
    "preview": "name: docker-build-and-push\ndescription: Composite action to build and push non CUDA images to registry.\n\ninputs:\n  plat"
  },
  {
    "path": ".github/actions/docker-build-and-push-base/action.yaml",
    "chars": 2456,
    "preview": "name: docker-build-and-push-base\ndescription: Composite action to build and push base images to registry.\n\ninputs:\n  tar"
  },
  {
    "path": ".github/actions/docker-build-and-push-cuda/action.yaml",
    "chars": 7348,
    "preview": "name: docker-build-and-push-cuda\ndescription: Composite action to build and push CUDA images to registry.\n\ninputs:\n  pla"
  },
  {
    "path": ".github/actions/docker-build-and-push-tools/action.yaml",
    "chars": 3935,
    "preview": "name: docker-build-and-push-tools\ndescription: Composite action to build and push tools images to registry.\n\ninputs:\n  p"
  },
  {
    "path": ".github/actions/free-disk-space/action.yaml",
    "chars": 749,
    "preview": "name: free-disk-space\ndescription: \"\"\n\nruns:\n  using: composite\n  steps:\n    - name: Install sudo\n      run: |\n        i"
  },
  {
    "path": ".github/dependabot.yaml",
    "chars": 545,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 43,
    "preview": "## Description\n\n## How was this PR tested?\n"
  },
  {
    "path": ".github/stale.yml",
    "chars": 583,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/sync-files.yaml",
    "chars": 1238,
    "preview": "- repository: autowarefoundation/sync-file-templates\n  source-dir: sources\n  files:\n    - source: .github/ISSUE_TEMPLATE"
  },
  {
    "path": ".github/workflows/autoware-base.yaml",
    "chars": 2086,
    "preview": "name: autoware-base\n\non:\n  push:\n    branches:\n      - main\n    paths:\n      - .github/actions/docker-build-and-push-bas"
  },
  {
    "path": ".github/workflows/backport.yaml",
    "chars": 2024,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/bump-repo-versions-autoware.yaml",
    "chars": 1047,
    "preview": "name: bump-repo-versions-autoware\n\non:\n  schedule:\n    - cron: 0 0,6,12,18 * * *\n  workflow_dispatch:\n\nconcurrency:\n  gr"
  },
  {
    "path": ".github/workflows/bump-repo-versions-simulator.yaml",
    "chars": 1044,
    "preview": "name: bump-repo-versions-simulator\n\non:\n  schedule:\n    - cron: 0 0,6,12,18 * * *\n  workflow_dispatch:\n\nconcurrency:\n  g"
  },
  {
    "path": ".github/workflows/bump-repo-versions-tools.yaml",
    "chars": 1038,
    "preview": "name: bump-repo-versions-tools\n\non:\n  schedule:\n    - cron: 0 0,6,12,18 * * *\n  workflow_dispatch:\n\nconcurrency:\n  group"
  },
  {
    "path": ".github/workflows/comment-on-pr.yaml",
    "chars": 1502,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/dco.yaml",
    "chars": 523,
    "preview": "name: DCO\n# ref: https://github.com/anchore/syft/pull/2926/files\non:\n  pull_request:\njobs:\n  dco:\n    runs-on: ubuntu-22"
  },
  {
    "path": ".github/workflows/docker-build-and-push.yaml",
    "chars": 16504,
    "preview": "name: docker-build-and-push\n\non:\n  push:\n    branches:\n      - main\n    tags:\n      - \"*.*.*\"\n  workflow_dispatch:\n\nconc"
  },
  {
    "path": ".github/workflows/github-release.yaml",
    "chars": 2143,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/health-check.yaml",
    "chars": 3656,
    "preview": "name: health-check\n\non:\n  pull_request:\n    types:\n      - opened\n      - synchronize\n      - reopened\n      - labeled\n "
  },
  {
    "path": ".github/workflows/keep-build-cache-small.yaml",
    "chars": 4932,
    "preview": "name: keep-build-cache-small\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: 0 6 * * *\n\nconcurrency:\n  group: ${{ gith"
  },
  {
    "path": ".github/workflows/load-env.yaml",
    "chars": 2512,
    "preview": "name: load-env\n\non:\n  workflow_call:\n    inputs:\n      env_file:\n        description: Specify the env file to load (e.g."
  },
  {
    "path": ".github/workflows/mirror-main-branch.yaml",
    "chars": 352,
    "preview": "name: mirror-main-branch\n\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\nconcurrency:\n  group: ${{ github."
  },
  {
    "path": ".github/workflows/pre-commit-ansible-autoupdate.yaml",
    "chars": 1276,
    "preview": "name: pre-commit-ansible-autoupdate\n\non:\n  schedule:\n    - cron: 0 0 * * *\n  workflow_dispatch:\n\nconcurrency:\n  group: $"
  },
  {
    "path": ".github/workflows/pre-commit-ansible.yaml",
    "chars": 798,
    "preview": "name: pre-commit-ansible\n\non:\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event_name }}-${{"
  },
  {
    "path": ".github/workflows/pre-commit-optional.yaml",
    "chars": 760,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/pre-commit.yaml",
    "chars": 1064,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/scenario-test-reusable.yaml",
    "chars": 6327,
    "preview": "name: scenario-test-reusable\n\non:\n  workflow_call:\n    inputs:\n      autoware_container_image:\n        type: string\n    "
  },
  {
    "path": ".github/workflows/scenario-test.yaml",
    "chars": 5530,
    "preview": "name: scenario-test\non:\n  schedule:\n    - cron: 0 12 * * *\n  workflow_dispatch:\n  push:\n    branches:\n      - main\nconcu"
  },
  {
    "path": ".github/workflows/semantic-pull-request.yaml",
    "chars": 442,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/setup-docker.yaml",
    "chars": 374,
    "preview": "name: setup-docker\n\non:\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event_name }}-${{ githu"
  },
  {
    "path": ".github/workflows/setup-universe.yaml",
    "chars": 1194,
    "preview": "name: setup-universe\n\non:\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event_name }}-${{ git"
  },
  {
    "path": ".github/workflows/spell-check-daily.yaml",
    "chars": 960,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/spell-check-differential.yaml",
    "chars": 895,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".github/workflows/sync-files.yaml",
    "chars": 924,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".gitignore",
    "chars": 219,
    "preview": "# Vim\n*.swp\n*.swo\n\n# Visual Studio Code\n.vscode/\n*.code-workspace\n\n# colcon\nbuild/\ninstall/\nlog/\n\n# Python\n*.pyc\n\n# Jetb"
  },
  {
    "path": ".hadolint.yaml",
    "chars": 389,
    "preview": "ignored:\n  - DL3008 # Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <pack"
  },
  {
    "path": ".markdown-link-check.json",
    "chars": 287,
    "preview": "{\n  \"aliveStatusCodes\": [200, 206, 403],\n  \"ignorePatterns\": [\n    {\n      \"pattern\": \"^http://localhost\"\n    },\n    {\n "
  },
  {
    "path": ".markdownlint.yaml",
    "chars": 437,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".pre-commit-config-ansible.yaml",
    "chars": 202,
    "preview": "repos:\n  - repo: https://github.com/ansible/ansible-lint.git\n    rev: v25.8.2\n    hooks:\n      - id: ansible-lint\n      "
  },
  {
    "path": ".pre-commit-config-optional.yaml",
    "chars": 584,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 3106,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".prettierignore",
    "chars": 212,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".prettierrc.yaml",
    "chars": 625,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": ".rgignore",
    "chars": 7,
    "preview": "!/src/\n"
  },
  {
    "path": ".shellcheckrc",
    "chars": 22,
    "preview": "external-sources=true\n"
  },
  {
    "path": ".webauto-ci/main/autoware-build/run.sh",
    "chars": 1336,
    "preview": "#!/bin/bash -e\n\n: \"${WEBAUTO_CI_SOURCE_PATH:?is not set}\"\n: \"${WEBAUTO_CI_DEBUG_BUILD:?is not set}\"\n\n: \"${AUTOWARE_PATH:"
  },
  {
    "path": ".webauto-ci/main/autoware-setup/run.sh",
    "chars": 868,
    "preview": "#!/bin/bash -e\n\nansible_args=()\nansible_args+=(\"--extra-vars\" \"prompt_install_nvidia=y\")\nansible_args+=(\"--extra-vars\" \""
  },
  {
    "path": ".webauto-ci/main/environment-setup/run.sh",
    "chars": 385,
    "preview": "#!/bin/bash -e\n\napt-get update\n\napt-get -y install sudo curl wget unzip gnupg lsb-release ccache python3-apt python3-pip"
  },
  {
    "path": ".webauto-ci.yaml",
    "chars": 3208,
    "preview": "# The configuration file for Web.Auto CI/CD tool.\n# https://docs.web.auto/user-manuals/evaluator/configuration/reference"
  },
  {
    "path": ".yamllint.yaml",
    "chars": 732,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5487,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 102,
    "preview": "# Contributing\n\nSee <https://autowarefoundation.github.io/autoware-documentation/main/contributing/>.\n"
  },
  {
    "path": "CPPLINT.cfg",
    "chars": 1439,
    "preview": "# This file is automatically synced from:\n# https://github.com/autowarefoundation/sync-file-templates\n# To make changes,"
  },
  {
    "path": "DISCLAIMER.md",
    "chars": 2782,
    "preview": "DISCLAIMER\n\n“Autoware” will be provided by The Autoware Foundation under the Apache License 2.0.\nThis “DISCLAIMER” will "
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "NOTICE",
    "chars": 244,
    "preview": "autowarefoundation/autoware\nCopyright 2021 The Autoware Foundation\n\nThis product includes software developed at\nThe Auto"
  },
  {
    "path": "README.md",
    "chars": 7391,
    "preview": "# Autoware - the world's leading open-source software project for autonomous driving\n\n![Autoware_RViz](https://user-imag"
  },
  {
    "path": "amd64.env",
    "chars": 398,
    "preview": "# ROS distribution (humble)\nrosdistro=humble\nrmw_implementation=rmw_cyclonedds_cpp\n\n# Base image selection for Humble\nba"
  },
  {
    "path": "amd64_jazzy.env",
    "chars": 426,
    "preview": "# ROS distribution (jazzy)\nrosdistro=jazzy\nrmw_implementation=rmw_cyclonedds_cpp\n\n# Jazzy-specific overrides (will be se"
  },
  {
    "path": "ansible/.gitignore",
    "chars": 8,
    "preview": "*.retry\n"
  },
  {
    "path": "ansible/COLCON_IGNORE",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/README.md",
    "chars": 750,
    "preview": "# Ansible Collection - autoware.dev_env\n\nThis collection contains the playbooks to set up the development environment fo"
  },
  {
    "path": "ansible/galaxy.yml",
    "chars": 506,
    "preview": "# Required\nnamespace: autoware\nname: dev_env\nversion: 0.1.0\nreadme: README.md\nauthors:\n  - Kenji Miyake <kenji.miyake@ti"
  },
  {
    "path": "ansible/playbooks/docker.yaml",
    "chars": 1027,
    "preview": "- name: Set up Docker development environments for Autoware\n  hosts: localhost\n  connection: local\n  vars_prompt:\n    - "
  },
  {
    "path": "ansible/playbooks/download_artifacts.yaml",
    "chars": 97,
    "preview": "- name: Download Autoware artifacts\n  hosts: localhost\n  roles:\n    - autoware.dev_env.artifacts\n"
  },
  {
    "path": "ansible/playbooks/install_rviz_theme.yaml",
    "chars": 90,
    "preview": "- name: Install RViz theme\n  hosts: localhost\n  roles:\n    - autoware.dev_env.qt5ct_setup\n"
  },
  {
    "path": "ansible/playbooks/install_spconv.yaml",
    "chars": 116,
    "preview": "- name: Download and install the cumm and spconv packages\n  hosts: localhost\n  roles:\n    - autoware.dev_env.spconv\n"
  },
  {
    "path": "ansible/playbooks/openadkit.yaml",
    "chars": 2286,
    "preview": "- name: Set up source development environments for Autoware Universe\n  hosts: localhost\n  connection: local\n  pre_tasks:"
  },
  {
    "path": "ansible/playbooks/role_rmw_implementation.yaml",
    "chars": 241,
    "preview": "- name: Install RMW implementation\n  hosts: localhost\n  roles:\n    - role: autoware.dev_env.rmw_implementation\n      var"
  },
  {
    "path": "ansible/playbooks/setup_acados.yaml",
    "chars": 105,
    "preview": "- name: Setup acados\n  hosts: localhost\n  connection: local\n  roles:\n    - role: autoware.dev_env.acados\n"
  },
  {
    "path": "ansible/playbooks/telegraf.yaml",
    "chars": 100,
    "preview": "- name: Set up Telegraf and InfluxDB v2\n  hosts: localhost\n  roles:\n    - autoware.dev_env.telegraf\n"
  },
  {
    "path": "ansible/playbooks/universe.yaml",
    "chars": 2832,
    "preview": "- name: Set up source development environments for Autoware Universe\n  hosts: localhost\n  connection: local\n  vars_promp"
  },
  {
    "path": "ansible/roles/acados/README.md",
    "chars": 3602,
    "preview": "# Setup acados\n\nInstalls [acados](https://github.com/acados/acados), a fast and embedded solver for nonlinear optimal co"
  },
  {
    "path": "ansible/roles/acados/defaults/main.yaml",
    "chars": 102,
    "preview": "acados_version: v0.5.3\nacados_tera_renderer_version: v0.2.0\nacados_pip_packages:\n  - casadi\n  - sympy\n"
  },
  {
    "path": "ansible/roles/acados/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/acados/tasks/main.yaml",
    "chars": 3190,
    "preview": "- name: Clone acados repository (shallow) with submodules\n  become: true\n  ansible.builtin.git:\n    repo: https://github"
  },
  {
    "path": "ansible/roles/agnocast/README.md",
    "chars": 763,
    "preview": "# agnocast\n\nThis role installs [Agnocast](https://github.com/tier4/agnocast), true zero-copy communication middleware fo"
  },
  {
    "path": "ansible/roles/agnocast/defaults/main.yaml",
    "chars": 154,
    "preview": "agnocast_version: 2.3.1\nagnocast_heaphook_package: agnocast-heaphook-v{{ agnocast_version }}\nagnocast_kmod_package: agno"
  },
  {
    "path": "ansible/roles/agnocast/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/agnocast/tasks/main.yaml",
    "chars": 7339,
    "preview": "# Remove legacy agnocast PPA configuration (if exists)\n- name: Remove legacy agnocast PPA via add-apt-repository\n  ansib"
  },
  {
    "path": "ansible/roles/artifacts/README.md",
    "chars": 2531,
    "preview": "# Autoware artifacts\n\nThe Autoware perception stack uses models for inference. These models are automatically downloaded"
  },
  {
    "path": "ansible/roles/artifacts/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/artifacts/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/artifacts/tasks/main.yaml",
    "chars": 35813,
    "preview": "# yabloc_pose_initializer\n- name: Create yabloc_pose_initializer directory inside {{ data_dir }}\n  ansible.builtin.file:"
  },
  {
    "path": "ansible/roles/build_tools/README.md",
    "chars": 1086,
    "preview": "# Build Tools\n\nThis role installs build tools for building Autoware.\n\n## Tools\n\n- ccache\n\n## Inputs\n\n## Manual Installat"
  },
  {
    "path": "ansible/roles/build_tools/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/build_tools/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/build_tools/tasks/main.yaml",
    "chars": 984,
    "preview": "- name: Install ccache\n  become: true\n  ansible.builtin.apt:\n    name: ccache\n    state: latest\n    update_cache: true\n\n"
  },
  {
    "path": "ansible/roles/cuda/README.md",
    "chars": 4000,
    "preview": "# cuda\n\nThis role installs [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) following [this page](https://devel"
  },
  {
    "path": "ansible/roles/cuda/defaults/main.yaml",
    "chars": 27,
    "preview": "cuda_install_drivers: true\n"
  },
  {
    "path": "ansible/roles/cuda/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/cuda/tasks/main.yaml",
    "chars": 4607,
    "preview": "# cspell:ignore libnvjpeg\n- name: Get CUDA architecture name\n  ansible.builtin.shell: |\n    if [ \"$(uname -m)\" = \"x86_64"
  },
  {
    "path": "ansible/roles/dev_tools/README.md",
    "chars": 1024,
    "preview": "# devel\n\nThis role installs optional development tools for Autoware.\n\n## Tools\n\n- pipx\n- Go\n- PlotJuggler\n- Git LFS\n- pr"
  },
  {
    "path": "ansible/roles/dev_tools/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/dev_tools/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/dev_tools/tasks/main.yaml",
    "chars": 1443,
    "preview": "# https://github.com/git-lfs/git-lfs/wiki/Installation#debian-and-ubuntu\n- name: Install Git LFS\n  become: true\n  ansibl"
  },
  {
    "path": "ansible/roles/docker_engine/README.md",
    "chars": 2330,
    "preview": "# docker_engine\n\nThis role installs [Docker Engine](https://docs.docker.com/engine/) following the [Official Installatio"
  },
  {
    "path": "ansible/roles/docker_engine/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/docker_engine/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/docker_engine/tasks/main.yaml",
    "chars": 2489,
    "preview": "- name: Uninstall old versions\n  become: true\n  ansible.builtin.apt:\n    name:\n      - docker\n      - docker-engine\n    "
  },
  {
    "path": "ansible/roles/gdown/README.md",
    "chars": 153,
    "preview": "# Role: gdown\n\nThis role installs gdown to download files from CMakeLists.txt.\n\n## Inputs\n\nNone.\n\n## Manual Installation"
  },
  {
    "path": "ansible/roles/gdown/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/gdown/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/gdown/tasks/main.yaml",
    "chars": 248,
    "preview": "- name: Install pipx\n  become: true\n  ansible.builtin.apt:\n    name: pipx\n    state: latest\n    update_cache: true\n\n- na"
  },
  {
    "path": "ansible/roles/geographiclib/README.md",
    "chars": 210,
    "preview": "# geographiclib\n\n## Inputs\n\nNone.\n\n## Manual Installation\n\n```bash\nsudo apt update\nsudo apt install -y geographiclib-too"
  },
  {
    "path": "ansible/roles/geographiclib/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/geographiclib/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/geographiclib/tasks/main.yaml",
    "chars": 317,
    "preview": "- name: Install geographiclib-tools\n  become: true\n  ansible.builtin.apt:\n    name: geographiclib-tools\n    state: lates"
  },
  {
    "path": "ansible/roles/kisak_mesa/README.md",
    "chars": 824,
    "preview": "# Kisak Mesa Fix for Ubuntu 22.04 for Rviz2 (Not mandatory)\n\nIf you are using Ubuntu 22.04 and Rviz2 (especially inside "
  },
  {
    "path": "ansible/roles/kisak_mesa/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/kisak_mesa/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/kisak_mesa/tasks/main.yaml",
    "chars": 513,
    "preview": "- name: Install additional dependencies\n  become: true\n  ansible.builtin.apt:\n    name: software-properties-common\n    s"
  },
  {
    "path": "ansible/roles/nvidia_container_toolkit/README.md",
    "chars": 3937,
    "preview": "# nvidia_container_toolkit\n\nThis role installs [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-container-too"
  },
  {
    "path": "ansible/roles/nvidia_container_toolkit/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/nvidia_container_toolkit/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/nvidia_container_toolkit/tasks/main.yaml",
    "chars": 1009,
    "preview": "- name: Add NVIDIA container toolkit GPG key\n  become: true\n  ansible.builtin.apt_key:\n    url: https://nvidia.github.io"
  },
  {
    "path": "ansible/roles/qt5ct_setup/README.md",
    "chars": 2107,
    "preview": "# qt5ct_setup Ansible role\n\n## Overview\n\nThe `qt5ct_setup` Ansible role automates the configuration of the `qt5ct` envir"
  },
  {
    "path": "ansible/roles/qt5ct_setup/defaults/main.yml",
    "chars": 32,
    "preview": "# defaults file for qt5ct_setup\n"
  },
  {
    "path": "ansible/roles/qt5ct_setup/files/autoware.qss",
    "chars": 30017,
    "preview": "/*  ------------------------------------------------------------------------  */\n/* QtMaterial - https://github.com/UN-G"
  },
  {
    "path": "ansible/roles/qt5ct_setup/files/qt5ct.conf",
    "chars": 1157,
    "preview": "[Appearance]\ncolor_scheme_path=/usr/share/qt5ct/colors/darker.conf\ncustom_palette=true\nicon_theme=ubuntu-mono-dark\nstand"
  },
  {
    "path": "ansible/roles/qt5ct_setup/meta/main.yml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/qt5ct_setup/tasks/main.yml",
    "chars": 2293,
    "preview": "- name: Install qt5ct\n  ansible.builtin.apt:\n    name: qt5ct\n    state: present\n  become: true\n\n- name: Install rsync\n  "
  },
  {
    "path": "ansible/roles/rmw_implementation/README.md",
    "chars": 1268,
    "preview": "# rmw_implementation\n\nThis role sets up ROS 2 RMW implementation following [this page](https://docs.ros.org/en/humble/Ho"
  },
  {
    "path": "ansible/roles/rmw_implementation/defaults/main.yaml",
    "chars": 67,
    "preview": "rmw_implementation__rosdistro: null\nrmw_implementation__name: null\n"
  },
  {
    "path": "ansible/roles/rmw_implementation/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/rmw_implementation/tasks/main.yaml",
    "chars": 1296,
    "preview": "- name: Validate inputs\n  ansible.builtin.assert:\n    that:\n      - rmw_implementation__rosdistro | length > 0\n      - r"
  },
  {
    "path": "ansible/roles/ros2/README.md",
    "chars": 3105,
    "preview": "# ros2\n\nThis role installs [ROS 2](http://www.ros2.org/) following [this page](https://docs.ros.org/en/humble/Installati"
  },
  {
    "path": "ansible/roles/ros2/defaults/main.yaml",
    "chars": 32,
    "preview": "ros2_installation_type: desktop\n"
  },
  {
    "path": "ansible/roles/ros2/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/ros2/tasks/main.yaml",
    "chars": 2236,
    "preview": "- name: Get latest release information of ros-apt-source package\n  ansible.builtin.uri:\n    url: https://api.github.com/"
  },
  {
    "path": "ansible/roles/ros2_dev_tools/README.md",
    "chars": 910,
    "preview": "# ros2_dev_tools\n\nThis role installs ROS 2 development tools following [this page](https://docs.ros.org/en/humble/Instal"
  },
  {
    "path": "ansible/roles/ros2_dev_tools/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/ros2_dev_tools/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/ros2_dev_tools/tasks/main.yaml",
    "chars": 1024,
    "preview": "- name: Install apt packages\n  become: true\n  ansible.builtin.apt:\n    name:\n      - python3-colcon-mixin\n      - python"
  },
  {
    "path": "ansible/roles/spconv/README.md",
    "chars": 1498,
    "preview": "# spconv\n\nThis role install the `cumm` and `spconv` libraries needed to perform sparse convolutions.\nThe [original imple"
  },
  {
    "path": "ansible/roles/spconv/defaults/main.yaml",
    "chars": 24,
    "preview": "spconv_is_jetson: false\n"
  },
  {
    "path": "ansible/roles/spconv/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/spconv/tasks/main.yaml",
    "chars": 1332,
    "preview": "# cspell:ignore Bcumm\n- name: Normalize dpkg architecture\n  ansible.builtin.set_fact:\n    spconv_normalized_arch: \"{{ an"
  },
  {
    "path": "ansible/roles/telegraf/README.md",
    "chars": 1050,
    "preview": "# telegraf\n\nThis role install [InfluxDB v2](https://docs.influxdata.com/influxdb/v2/get-started/) and [Telegraf](https:/"
  },
  {
    "path": "ansible/roles/telegraf/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/telegraf/files/get_telegraf_proccpu_json.sh",
    "chars": 421,
    "preview": "#!/bin/bash\n\nSAMPLING_SEC=5\n\necho \"{\"\npidstat -u -h -l \"${SAMPLING_SEC}\" 1 |\n    tail -n +4 |\n    awk '{ cpu=$8; $1=$2=$"
  },
  {
    "path": "ansible/roles/telegraf/files/get_telegraf_procmem_json.sh",
    "chars": 297,
    "preview": "#!/bin/bash\n\necho \"{\"\nps -ax --format \"rss command\" |\n    while read -r rss cmd; do\n        if [[ $rss -lt 30000 ]]; the"
  },
  {
    "path": "ansible/roles/telegraf/files/telegraf.conf",
    "chars": 1246,
    "preview": "[global_tags]\n\n[agent]\n  interval = \"10s\"\n  round_interval = true\n  metric_batch_size = 1000\n  metric_buffer_limit = 100"
  },
  {
    "path": "ansible/roles/telegraf/handlers/main.yaml",
    "chars": 92,
    "preview": "- name: Restart telegraf\n  ansible.builtin.systemd:\n    name: telegraf\n    state: restarted\n"
  },
  {
    "path": "ansible/roles/telegraf/meta/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/telegraf/tasks/main.yaml",
    "chars": 3799,
    "preview": "- name: Download influxdata-archive_compat.key\n  become: true\n  ansible.builtin.get_url:\n    url: https://repos.influxda"
  },
  {
    "path": "ansible/roles/tensorrt/README.md",
    "chars": 1423,
    "preview": "# tensorrt\n\nThis role installs TensorRT following [the official NVIDIA TensorRT Installation Guide](https://docs.nvidia."
  },
  {
    "path": "ansible/roles/tensorrt/defaults/main.yaml",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "ansible/roles/tensorrt/meta/main.yaml",
    "chars": 46,
    "preview": "dependencies:\n  - role: autoware.dev_env.cuda\n"
  },
  {
    "path": "ansible/roles/tensorrt/tasks/main.yaml",
    "chars": 1345,
    "preview": "- name: Install TensorRT\n  become: true\n  ansible.builtin.apt:\n    name:\n      - libnvinfer10={{ tensorrt_version }}\n   "
  },
  {
    "path": "ansible-galaxy-requirements.yaml",
    "chars": 49,
    "preview": "collections:\n  - source: ./ansible\n    type: dir\n"
  },
  {
    "path": "arm64.env",
    "chars": 66,
    "preview": "# Override amd64's settings\ntensorrt_version=10.3.0.26-1+cuda12.5\n"
  },
  {
    "path": "docker/Dockerfile",
    "chars": 45161,
    "preview": "ARG AUTOWARE_BASE_IMAGE=ghcr.io/autowarefoundation/autoware-base:latest\nARG AUTOWARE_BASE_CUDA_IMAGE=ghcr.io/autowarefou"
  },
  {
    "path": "docker/Dockerfile.base",
    "chars": 2199,
    "preview": "ARG BASE_IMAGE\n\n# hadolint ignore=DL3006\nFROM $BASE_IMAGE AS base\nSHELL [\"/bin/bash\", \"-o\", \"pipefail\", \"-c\"]\nARG ROS_DI"
  },
  {
    "path": "docker/README.md",
    "chars": 11083,
    "preview": "# Open AD Kit: containerized workloads for Autoware\n\n[Open AD Kit](https://autoware.org/open-ad-kit/) offers containers "
  },
  {
    "path": "docker/build.sh",
    "chars": 7016,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\n# Function to print help message\nprint_help() {\n    echo \"Usage: build.sh [OPTIONS]\"\n    ec"
  },
  {
    "path": "docker/docker-bake-base.hcl",
    "chars": 441,
    "preview": "group \"default\" {\n  targets = [\n    \"base\",\n    \"base-cuda\"\n  ]\n}\n\n// For docker/metadata-action\ntarget \"docker-metadata"
  },
  {
    "path": "docker/docker-bake-cuda.hcl",
    "chars": 1453,
    "preview": "group \"default\" {\n  targets = [\n    \"universe-common-devel-cuda\",\n    \"universe-sensing-perception-devel-cuda\",\n    \"uni"
  },
  {
    "path": "docker/docker-bake.hcl",
    "chars": 4680,
    "preview": "group \"default\" {\n  targets = [\n    \"core-common-devel\",\n    \"core\",\n    \"core-devel\",\n    \"universe-common-devel\",\n    "
  },
  {
    "path": "docker/docker-compose.gpu.yaml",
    "chars": 190,
    "preview": "services:\n  sensing-perception:\n    deploy:\n      resources:\n        reservations:\n          devices:\n            - driv"
  },
  {
    "path": "docker/docker-compose.yaml",
    "chars": 8955,
    "preview": "services:\n  map:\n    image: ghcr.io/autowarefoundation/autoware:universe-localization-mapping\n    container_name: autowa"
  },
  {
    "path": "docker/etc/.bash_aliases",
    "chars": 1542,
    "preview": "#!/bin/bash\n\n# planning simulation\nfunction download_planning_map() {\n    if [ ! -f ~/autoware_map/sample-map-planning.z"
  },
  {
    "path": "docker/etc/ros_entrypoint.sh",
    "chars": 1214,
    "preview": "#!/usr/bin/env bash\n# shellcheck disable=SC1090,SC1091\n\n# Get the user ID and group ID of the local user\nUSER_ID=${LOCAL"
  },
  {
    "path": "docker/logging-simulation.env",
    "chars": 1788,
    "preview": "# ROS settings\nROS_DOMAIN_ID=1\nUSE_SIM_TIME=true\n\n# Common settings\nPOINTCLOUD_CONTAINER_NAME=pointcloud_container\nSCENA"
  },
  {
    "path": "docker/logging-simulation.gpu.env",
    "chars": 327,
    "preview": "# Perception settings\nSENSING_PERCEPTION_IMAGE=ghcr.io/autowarefoundation/autoware:universe-sensing-perception-cuda\nLIDA"
  },
  {
    "path": "docker/planning-simulation.env",
    "chars": 1655,
    "preview": "# ROS settings\nROS_DOMAIN_ID=1\nUSE_SIM_TIME=false\n\n# Common settings\nPOINTCLOUD_CONTAINER_NAME=pointcloud_container\nSCEN"
  },
  {
    "path": "docker/run.sh",
    "chars": 6783,
    "preview": "#!/usr/bin/env bash\n# shellcheck disable=SC2086,SC2124\n\nset -e\n\n# Define terminal colors\nRED='\\033[0;31m'\nGREEN='\\033[0;"
  },
  {
    "path": "docker/scripts/build_and_clean.sh",
    "chars": 591,
    "preview": "#!/bin/bash\nset -eo pipefail\n\nfunction build_and_clean() {\n    local ccache_dir=$1\n    local install_base=$2\n    local c"
  },
  {
    "path": "docker/scripts/cleanup_apt.sh",
    "chars": 237,
    "preview": "#!/bin/bash\nset -eo pipefail\n\nfunction cleanup_apt() {\n    local apt_clean=$1\n    apt-get autoremove -y && rm -rf /var/l"
  },
  {
    "path": "docker/scripts/cleanup_system.sh",
    "chars": 769,
    "preview": "#!/bin/bash\nset -eo pipefail\n\nfunction cleanup_system() {\n    local lib_dir=$1\n    local ros_distro=$2\n\n    find /usr/li"
  },
  {
    "path": "docker/scripts/resolve_rosdep_keys.sh",
    "chars": 394,
    "preview": "#!/bin/bash\nset -eo pipefail\n\nfunction resolve_rosdep_keys() {\n    local src_path=$1\n    local ros_distro=$2\n    local r"
  },
  {
    "path": "docker/tools/README.md",
    "chars": 316,
    "preview": "# Autoware Tools\n\nThis directory offers container-based tools for Autoware to make development and deployment easier.\n\n-"
  },
  {
    "path": "docker/tools/docker-bake.hcl",
    "chars": 549,
    "preview": "group \"default\" {\n  targets = [\n    \"visualizer\",\n    \"scenario-simulator\",\n  ]\n}\n\n// For docker/metadata-action\ntarget "
  },
  {
    "path": "docker/tools/scenario-simulator/Dockerfile",
    "chars": 2307,
    "preview": "### Builder\nFROM ghcr.io/autowarefoundation/autoware:universe-devel AS builder\nSHELL [\"/bin/bash\", \"-o\", \"pipefail\", \"-c"
  },
  {
    "path": "docker/tools/scenario-simulator/README.md",
    "chars": 5260,
    "preview": "# Autoware Tools - Scenario Simulator\n\nRuns Scenario Simulator in a container.\n\n## Standalone Run\n\n```bash\ndocker run --"
  },
  {
    "path": "docker/tools/scenario-simulator/entrypoint.sh",
    "chars": 2389,
    "preview": "#!/usr/bin/env bash\n# cspell:ignore\n# shellcheck disable=SC1090,SC1091\n\nrun_scenario_simulator() {\n    echo -e \"\\e[32mRu"
  },
  {
    "path": "docker/tools/visualizer/Dockerfile",
    "chars": 1746,
    "preview": "# cspell:ignore openbox, VNC, tigervnc, novnc, websockify, newkey, xstartup, keyout\nFROM ghcr.io/autowarefoundation/auto"
  },
  {
    "path": "docker/tools/visualizer/README.md",
    "chars": 1526,
    "preview": "# Autoware Tools - Visualizer\n\nOpens a remote RViz display for Autoware.\n\n## Standalone Run\n\n```bash\ndocker run --rm --n"
  },
  {
    "path": "docker/tools/visualizer/entrypoint.sh",
    "chars": 3669,
    "preview": "#!/usr/bin/env bash\n# cspell:ignore openbox, VNC, tigervnc, novnc, websockify, newkey, xstartup, pixelformat, AUTHTOKEN,"
  },
  {
    "path": "docker/tools/visualizer/xstartup",
    "chars": 386,
    "preview": "#!/bin/sh\n# cspell:ignore openbox, VNC, xstartup, DBUS, Xresources, xrdb\n\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_A"
  },
  {
    "path": "repositories/autoware-nightly.repos",
    "chars": 1333,
    "preview": "repositories:\n  core/autoware_adapi_msgs:\n    type: git\n    url: https://github.com/autowarefoundation/autoware_adapi_ms"
  },
  {
    "path": "repositories/autoware.repos",
    "chars": 5017,
    "preview": "repositories:\n  # core\n  core/autoware_msgs:\n    type: git\n    url: https://github.com/autowarefoundation/autoware_msgs."
  }
]

// ... and 9 more files (download for full content)

About this extraction

This page contains the full source code of the autowarefoundation/autoware GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 209 files (437.2 KB), approximately 127.0k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!