boost.asio@1.89.0 (#5794)

boost.asio@1.89.0
diff --git a/modules/boost.asio/1.89.0/MODULE.bazel b/modules/boost.asio/1.89.0/MODULE.bazel
new file mode 100644
index 0000000..98ded55
--- /dev/null
+++ b/modules/boost.asio/1.89.0/MODULE.bazel
@@ -0,0 +1,19 @@
+module(
+    name = "boost.asio",
+    version = "1.89.0",
+    bazel_compatibility = [">=7.6.0"],
+    compatibility_level = 108900,
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+bazel_dep(name = "boost.align", version = "1.89.0")
+bazel_dep(name = "boost.assert", version = "1.89.0")
+bazel_dep(name = "boost.config", version = "1.89.0")
+bazel_dep(name = "boost.context", version = "1.89.0")
+bazel_dep(name = "boost.date_time", version = "1.89.0")
+bazel_dep(name = "boost.pin_version", version = "1.89.0")
+bazel_dep(name = "boost.system", version = "1.89.0")
+bazel_dep(name = "boost.throw_exception", version = "1.89.0")
+bazel_dep(name = "boringssl", version = "0.20250818.0")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.2")
diff --git a/modules/boost.asio/1.89.0/overlay/BUILD.bazel b/modules/boost.asio/1.89.0/overlay/BUILD.bazel
new file mode 100644
index 0000000..ed4f790
--- /dev/null
+++ b/modules/boost.asio/1.89.0/overlay/BUILD.bazel
@@ -0,0 +1,91 @@
+load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
+load("@bazel_skylib//rules:write_file.bzl", "write_file")
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+string_flag(
+    name = "ssl",
+    build_setting_default = "no_ssl",
+    values = [
+        "no_ssl",
+        "openssl",
+        "boringssl",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+config_setting(
+    name = "no_ssl",
+    flag_values = {":ssl": "no_ssl"},
+)
+
+config_setting(
+    name = "openssl",
+    flag_values = {":ssl": "openssl"},
+)
+
+config_setting(
+    name = "boringssl",
+    flag_values = {":ssl": "boringssl"},
+)
+
+write_file(
+    name = "src",
+    out = "boost.asio.src.cpp",
+    content = select({
+        ":no_ssl": [
+            "#include <boost/asio/impl/src.hpp>",
+        ],
+        "//conditions:default": [
+            "#include <boost/asio/impl/src.hpp>",
+            "#include <boost/asio/ssl/impl/src.hpp>",
+        ],
+    }),
+)
+
+cc_library(
+    name = "boost.asio",
+    srcs = [":src"] + select({
+        ":no_ssl": [
+            "include/boost/asio/impl/src.hpp",
+        ],
+        "//conditions:default": [
+            "include/boost/asio/impl/src.hpp",
+            "include/boost/asio/ssl/impl/src.hpp",
+        ],
+    }),
+    hdrs = glob(
+        [
+            "include/**/*.hpp",
+            "include/**/*.ipp",
+        ],
+        exclude = [
+            "include/boost/asio/impl/src.hpp",
+            "include/boost/asio/ssl/impl/src.hpp",
+        ],
+    ),
+    defines = ["BOOST_ASIO_SEPARATE_COMPILATION"],
+    includes = ["include"],
+    linkopts = select({
+        "@platforms//os:windows": [
+            "-DEFAULTLIB:ws2_32",
+            "-DEFAULTLIB:mswsock",
+        ],
+        "//conditions:default": [
+            "-lpthread",
+        ],
+    }),
+    visibility = ["//visibility:public"],
+    deps = [
+        "@boost.align",
+        "@boost.assert",
+        "@boost.config",
+        "@boost.context",
+        "@boost.date_time",
+        "@boost.system",
+        "@boost.throw_exception",
+    ] + select({
+        ":openssl": ["@openssl//:ssl"],
+        ":boringssl": ["@boringssl//:ssl"],
+        ":no_ssl": [],
+    }),
+)
diff --git a/modules/boost.asio/1.89.0/overlay/MODULE.bazel b/modules/boost.asio/1.89.0/overlay/MODULE.bazel
new file mode 120000
index 0000000..9b599e3
--- /dev/null
+++ b/modules/boost.asio/1.89.0/overlay/MODULE.bazel
@@ -0,0 +1 @@
+../MODULE.bazel
\ No newline at end of file
diff --git a/modules/boost.asio/1.89.0/overlay/test/BUILD.bazel b/modules/boost.asio/1.89.0/overlay/test/BUILD.bazel
new file mode 100644
index 0000000..2a5c62b
--- /dev/null
+++ b/modules/boost.asio/1.89.0/overlay/test/BUILD.bazel
@@ -0,0 +1,148 @@
+load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
+
+cc_library(
+    name = "unit_test",
+    hdrs = ["unit_test.hpp"],
+)
+
+_TESTS = {
+    "any_completion_executor": [],
+    "any_completion_handler": [],
+    "any_io_executor": [],
+    "append": [],
+    "as_tuple": [],
+    "associated_allocator": [],
+    "associated_cancellation_slot": [],
+    "associated_executor": [],
+    "associated_immediate_executor": [],
+    "associator": [],
+    "async_result": [],
+    "awaitable": [],
+    "basic_datagram_socket": [],
+    "basic_deadline_timer": [],
+    "basic_file": [],
+    "basic_random_access_file": [],
+    "basic_raw_socket": [],
+    "basic_readable_pipe": [],
+    "basic_seq_packet_socket": [],
+    "basic_serial_port": [],
+    "basic_signal_set": [],
+    "basic_socket": [],
+    "basic_socket_acceptor": [],
+    "basic_stream_file": [],
+    "basic_stream_socket": [],
+    "basic_streambuf": [],
+    "basic_waitable_timer": [],
+    "basic_writable_pipe": [],
+    "bind_allocator": [],
+    "bind_cancellation_slot": [],
+    "bind_executor": [],
+    "bind_immediate_executor": [],
+    "buffer": [],
+    "buffer_registration": [],
+    "buffered_read_stream": [
+        "//archetypes:async_result",
+    ],
+    "buffered_stream": [
+        "//archetypes:async_result",
+    ],
+    "buffered_write_stream": [
+        "//archetypes:async_result",
+    ],
+    "buffers_iterator": [],
+    "cancellation_signal": [],
+    "cancellation_state": [],
+    "cancellation_type": [],
+    "co_spawn": [],
+    "completion_condition": [],
+    "compose": [],
+    "connect": [],
+    "connect_pipe": [],
+    "consign": [],
+    "coroutine": [],
+    "deadline_timer": [
+        "//archetypes:async_result",
+    ],
+    "defer": [],
+    "deferred": [],
+    "detached": [],
+    "dispatch": [],
+    "error": [],
+    "execution_context": [],
+    "executor": [],
+    "executor_work_guard": [],
+    "file_base": [],
+    "high_resolution_timer": [],
+    "io_context": [],
+    "io_context_strand": [],
+    "is_read_buffered": [],
+    "is_write_buffered": [],
+    "packaged_task": [],
+    "placeholders": [],
+    "post": [],
+    "prepend": [],
+    "random_access_file": [
+        "//archetypes:async_result",
+    ],
+    "read": [
+        "//archetypes:async_result",
+    ],
+    "read_at": [
+        "//archetypes:async_result",
+    ],
+    "read_until": [
+        "//archetypes:async_result",
+    ],
+    "readable_pipe": [
+        "//archetypes:async_result",
+    ],
+    "recycling_allocator": [],
+    "redirect_error": [],
+    "registered_buffer": [],
+    "serial_port": [
+        "//archetypes:async_result",
+    ],
+    "serial_port_base": [],
+    "signal_set": [
+        "//archetypes:async_result",
+    ],
+    "signal_set_base": [],
+    "socket_base": [],
+    "static_thread_pool": [],
+    "steady_timer": [],
+    "strand": [],
+    "stream_file": [
+        "//archetypes:async_result",
+    ],
+    "streambuf": [],
+    "system_context": [],
+    "system_executor": [],
+    "system_timer": [],
+    "this_coro": [],
+    "thread_pool": [],
+    "time_traits": [],
+    "use_awaitable": [],
+    "use_future": [
+        "//archetypes:async_ops",
+    ],
+    "uses_executor": [],
+    "wait_traits": [],
+    "writable_pipe": [
+        "//archetypes:async_result",
+    ],
+    "write": [
+        "//archetypes:async_result",
+    ],
+    "write_at": [
+        "//archetypes:async_result",
+    ],
+}
+
+[cc_test(
+    name = test,
+    srcs = ["{}.cpp".format(test)],
+    deps = [
+        ":unit_test",
+        "@boost.asio",
+    ] + _TESTS[test],
+) for test in _TESTS]
diff --git a/modules/boost.asio/1.89.0/overlay/test/MODULE.bazel b/modules/boost.asio/1.89.0/overlay/test/MODULE.bazel
new file mode 100644
index 0000000..aa28a21
--- /dev/null
+++ b/modules/boost.asio/1.89.0/overlay/test/MODULE.bazel
@@ -0,0 +1,7 @@
+bazel_dep(name = "boost.asio")
+local_path_override(
+    module_name = "boost.asio",
+    path = "..",
+)
+
+bazel_dep(name = "rules_cc", version = "0.2.2")
diff --git a/modules/boost.asio/1.89.0/overlay/test/archetypes/BUILD.bazel b/modules/boost.asio/1.89.0/overlay/test/archetypes/BUILD.bazel
new file mode 100644
index 0000000..a61ffbd
--- /dev/null
+++ b/modules/boost.asio/1.89.0/overlay/test/archetypes/BUILD.bazel
@@ -0,0 +1,19 @@
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cc_library(
+    name = "async_result",
+    hdrs = ["async_result.hpp"],
+    deps = [
+        "@boost.asio",
+    ],
+)
+
+cc_library(
+    name = "async_ops",
+    hdrs = ["async_ops.hpp"],
+    deps = [
+        "@boost.asio",
+    ],
+)
diff --git a/modules/boost.asio/1.89.0/presubmit.yml b/modules/boost.asio/1.89.0/presubmit.yml
new file mode 100644
index 0000000..1353a92
--- /dev/null
+++ b/modules/boost.asio/1.89.0/presubmit.yml
@@ -0,0 +1,44 @@
+matrix:
+  platform:
+    - debian10
+    - debian11
+    - macos
+    - macos_arm64
+    - ubuntu2004
+    - ubuntu2204
+    - ubuntu2404
+    - windows
+  bazel: [7.x, 8.x]
+tasks:
+  verify_targets:
+    name: Verify build targets
+    platform: ${{ platform }}
+    bazel: ${{ bazel }}
+    build_flags:
+      - '--process_headers_in_dependencies'
+    build_targets:
+      - '@boost.asio//:boost.asio'
+bcr_test_module:
+  module_path: test
+  matrix:
+    platform:
+      - debian10
+      - debian11
+      - macos
+      - macos_arm64
+      - ubuntu2004
+      - ubuntu2204
+      - ubuntu2404
+      - windows
+    bazel: [7.x, 8.x]
+  tasks:
+    run_test_module:
+      name: Run test module
+      platform: ${{ platform }}
+      bazel: ${{ bazel }}
+      build_flags:
+        - '--process_headers_in_dependencies'
+      build_targets:
+        - //...
+      test_targets:
+        - //...
diff --git a/modules/boost.asio/1.89.0/source.json b/modules/boost.asio/1.89.0/source.json
new file mode 100644
index 0000000..9267cdf
--- /dev/null
+++ b/modules/boost.asio/1.89.0/source.json
@@ -0,0 +1,13 @@
+{
+    "integrity": "sha256-M/Wb27xX8vglztz5Oxd64nTlwctZ5ehQwDml5e7Okiw=",
+    "strip_prefix": "asio-boost-1.89.0",
+    "url": "https://github.com/boostorg/asio/archive/refs/tags/boost-1.89.0.tar.gz",
+    "patch_strip": 0,
+    "overlay": {
+        "BUILD.bazel": "sha256-t2ojzIKONAukJcS47yVCeoPxWIsutEk/8Ih7XIuJmoE=",
+        "MODULE.bazel": "sha256-gsIjLUhMPUYycKJz068HMWxtfkegdQBW/F7V0hNmiaA=",
+        "test/BUILD.bazel": "sha256-8fcIeYXVWHay4eYnKwdrvdtlPAEtVEqqBlUKdwZcCDY=",
+        "test/MODULE.bazel": "sha256-ZStDySX84jzOYqhmx/l3m5YDkP9iwUiVLwqR/lh1QNo=",
+        "test/archetypes/BUILD.bazel": "sha256-d5MKVHwxKqaRPwR2x7feBKD6ovoOFZW9jzJSKwIRgdg="
+    }
+}
diff --git a/modules/boost.asio/metadata.json b/modules/boost.asio/metadata.json
index b098b6e..d00278a 100644
--- a/modules/boost.asio/metadata.json
+++ b/modules/boost.asio/metadata.json
@@ -23,7 +23,8 @@
         "1.83.0.bcr.2",
         "1.87.0",
         "1.87.0.bcr.1",
-        "1.88.0.bcr.1"
+        "1.88.0.bcr.1",
+        "1.89.0"
     ],
     "yanked_versions": {}
 }