build: remove macos-13

The macos-13 image will be removed by december 4th, 2025

Refs:
* https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/
* https://github.com/actions/runner-images/issues/10924
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
This commit is contained in:
Juan José Arboleda 2025-10-02 13:09:40 -05:00
parent f3ce527ea9
commit 0c67e40929
8 changed files with 53 additions and 15 deletions

View File

@ -80,7 +80,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-13, macos-14]
os: [macos-14, macos-15]
steps:
- uses: actions/checkout@v5
- name: Envinfo
@ -122,7 +122,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-13, macos-14]
os: [macos-14, macos-15]
steps:
- uses: actions/checkout@v5
- name: Configure

View File

@ -55,7 +55,7 @@ jobs:
fi
sanitizers-macos:
runs-on: macos-13
runs-on: macos-14
strategy:
matrix:
config:

View File

@ -358,7 +358,9 @@ static void uv__udp_recvmsg(uv_udp_t* handle, int flag) {
#endif
handle->recv_cb(handle, nread, &buf, (const struct sockaddr*) &peer, flags);
}
#if defined(__linux__)
out:
#endif
count--;
}
/* recv_cb callback may decide to pause or close the handle */

View File

@ -116,10 +116,15 @@ TEST_IMPL(tcp_connect6_link_local) {
* connection attempt to the address above, i.e., we don't expect the
* connect() system call to fail synchronously.
*/
ASSERT_OK(uv_tcp_connect(&req,
&server,
(struct sockaddr*) &addr,
connect_cb));
ok = uv_tcp_connect(&req,
&server,
(struct sockaddr*) &addr,
connect_cb);
#ifdef __APPLE__
if (ok == UV_EHOSTUNREACH)
RETURN_SKIP("macos-15 does not grant permission to local network access");
#endif
ASSERT_OK(ok);
uv_close((uv_handle_t*) &server, NULL);
ASSERT_OK(uv_run(uv_default_loop(), UV_RUN_DEFAULT));

View File

@ -44,7 +44,11 @@ static void close_cb(uv_handle_t* handle) {
static void sv_send_cb(uv_udp_send_t* req, int status) {
ASSERT_NOT_NULL(req);
ASSERT(status == 0 || status == UV_ENETUNREACH || status == UV_EPERM);
ASSERT(status == 0 ||
status == UV_ENETUNREACH ||
status == UV_EPERM ||
/* macos-15 does not grant permission to local network access */
status == UV_EHOSTUNREACH);
CHECK_HANDLE(req->handle);
sv_send_cb_called++;

View File

@ -37,6 +37,7 @@ static uv_udp_send_t req;
static uv_udp_send_t req_ss;
static int darwin_ebusy_errors;
static int darwin_ehostunreach_errors;
static int cl_recv_cb_called;
static int sv_send_cb_called;
static int close_cb_called;
@ -60,11 +61,18 @@ static void close_cb(uv_handle_t* handle) {
static void sv_send_cb(uv_udp_send_t* req, int status) {
ASSERT_NOT_NULL(req);
ASSERT_OK(status);
/* macos-15 does not grant permission to local network access */
ASSERT(status == 0 || status == UV_EHOSTUNREACH);
CHECK_HANDLE(req->handle);
sv_send_cb_called++;
if (status == UV_EHOSTUNREACH) {
darwin_ehostunreach_errors++;
uv_close((uv_handle_t*)&server, close_cb);
return;
}
if (sv_send_cb_called == 2)
uv_close((uv_handle_t*) req->handle, close_cb);
}
@ -73,7 +81,7 @@ static void sv_send_cb(uv_udp_send_t* req, int status) {
static int do_send(uv_udp_send_t* send_req) {
uv_buf_t buf;
struct sockaddr_in addr;
buf = uv_buf_init("PING", 4);
ASSERT_OK(uv_ip4_addr(MULTICAST_ADDR, TEST_PORT, &addr));
@ -189,6 +197,9 @@ TEST_IMPL(udp_multicast_join) {
/* run the loop till all events are processed */
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
if (darwin_ehostunreach_errors > 0)
RETURN_SKIP("macos-15 does not grant permission to local network access");
if (darwin_ebusy_errors > 0)
RETURN_SKIP("Unexplained macOS IP_ADD_SOURCE_MEMBERSHIP EBUSY bug");

View File

@ -26,7 +26,6 @@
#include <stdlib.h>
#include <string.h>
#define CHECK_HANDLE(handle) \
ASSERT_NE((uv_udp_t*)(handle) == &server || (uv_udp_t*)(handle) == &client, 0)
@ -55,6 +54,8 @@ static int sv_send_cb_called;
static int close_cb_called;
static int darwin_ehostunreach_errors;
static void alloc_cb(uv_handle_t* handle,
size_t suggested_size,
uv_buf_t* buf) {
@ -74,11 +75,19 @@ static void close_cb(uv_handle_t* handle) {
static void sv_send_cb(uv_udp_send_t* req, int status) {
ASSERT_NOT_NULL(req);
ASSERT_OK(status);
/* macos-15 does not grant permission to local network access */
ASSERT(status == 0 || status == UV_EHOSTUNREACH);
CHECK_HANDLE(req->handle);
sv_send_cb_called++;
if (status == UV_EHOSTUNREACH) {
darwin_ehostunreach_errors++;
uv_close((uv_handle_t*)&server, close_cb);
return;
}
if (sv_send_cb_called == 2)
uv_close((uv_handle_t*) req->handle, close_cb);
}
@ -87,7 +96,7 @@ static void sv_send_cb(uv_udp_send_t* req, int status) {
static int do_send(uv_udp_send_t* send_req) {
uv_buf_t buf;
struct sockaddr_in6 addr;
buf = uv_buf_init("PING", 4);
ASSERT_OK(uv_ip6_addr(MULTICAST_ADDR, TEST_PORT, &addr));
@ -208,7 +217,7 @@ TEST_IMPL(udp_multicast_join6) {
#endif
r = uv_udp_recv_start(&server, alloc_cb, cl_recv_cb);
ASSERT_OK(r);
r = do_send(&req);
ASSERT_OK(r);
@ -219,6 +228,9 @@ TEST_IMPL(udp_multicast_join6) {
/* run the loop till all events are processed */
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
if (darwin_ehostunreach_errors > 0)
RETURN_SKIP("macos-15 does not grant permission to local network access");
ASSERT_EQ(2, cl_recv_cb_called);
ASSERT_EQ(2, sv_send_cb_called);
ASSERT_EQ(2, close_cb_called);

View File

@ -44,7 +44,11 @@ static void close_cb(uv_handle_t* handle) {
static void sv_send_cb(uv_udp_send_t* req, int status) {
ASSERT_NOT_NULL(req);
ASSERT(status == 0 || status == UV_ENETUNREACH || status == UV_EPERM);
ASSERT(status == 0 ||
status == UV_ENETUNREACH ||
status == UV_EPERM ||
/* macos-15 does not grant permission to local network access */
status == UV_EHOSTUNREACH);
CHECK_HANDLE(req->handle);
sv_send_cb_called++;