Download raw body.
amd64 build failures 2026-05-30
Björn Ketelaars:
> Diff below unbreaks building mail/hypermail with llvm22. While here
> change HOMEPAGE to https.
> +- status = TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL);
> ++ status = TrioFormat(stdout, 0, TrioOutStreamFile, format, (va_list *)args, NULL);
That can't be right. You are losing a level of indirection here.
When it still was a warning, the compiler effectively performed
(va_list *)&args.
You may notice that the other functions that allocate a variable
va_list args and take its address compile just fine. Apparently a
va_list parameter isn't exactly the same thing as a va_list variable,
but it must be possible to va_copy() a parameter to a variable, so
I propose the diff below.
(After I came up with that, I also found this
https://codeberg.org/OpenBSD/ports/commit/8ebf96e567248e85e4fe9eaba91ccc6f55809396
)
--- mail/hypermail/Makefile
+++ mail/hypermail/Makefile
@@ -3,8 +3,9 @@ COMMENT= generate a cross-referenced HTML mail archiv
VERSION= 2.3.0
DISTNAME= hypermail-${VERSION}
CATEGORIES= mail www
+REVISION= 0
-HOMEPAGE= http://www.hypermail-project.org/
+HOMEPAGE= https://www.hypermail-project.org/
SITES= ${HOMEPAGE}
WRKDIST= ${WRKDIR}/hypermail
commit - 6b40a864ff5cd7eb048177f2aa76c5686415ede4
blob - /dev/null
file + mail/hypermail/patches/patch-src_trio_c (mode 644)
--- /dev/null
+++ mail/hypermail/patches/patch-src_trio_c
@@ -0,0 +1,253 @@
+Index: src/trio.c
+--- src/trio.c.orig
++++ src/trio.c
+@@ -3571,10 +3571,13 @@ TRIO_PUBLIC int
+ trio_vprintf
+ TRIO_ARGS2((format, args),
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ return TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL);
+ }
+
+@@ -3640,11 +3643,14 @@ trio_vfprintf
+ TRIO_ARGS3((file, format, args),
+ FILE *file,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(file));
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ return TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL);
+ }
+
+@@ -3712,10 +3718,13 @@ trio_vdprintf
+ TRIO_ARGS3((fd, format, args),
+ int fd,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL);
+ }
+
+@@ -3771,15 +3780,17 @@ TRIO_ARGS4((stream, closure, format, args),
+ trio_outstream_t stream,
+ trio_pointer_t closure,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
+ trio_custom_t data;
++ va_list args;
+
+ assert(VALID(stream));
+ assert(VALID(format));
+
+ data.stream.out = stream;
+ data.closure = closure;
++ va_copy(args, arglist);
+ return TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL);
+ }
+
+@@ -3846,13 +3857,15 @@ trio_vsprintf
+ TRIO_ARGS3((buffer, format, args),
+ char *buffer,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
+ int status;
++ va_list args;
+
+ assert(VALID(buffer));
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL);
+ *buffer = NIL;
+ return status;
+@@ -3934,13 +3947,15 @@ TRIO_ARGS4((buffer, max, format, args),
+ char *buffer,
+ size_t max,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
+ int status;
++ va_list args;
+
+ assert(VALID(buffer));
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ status = TrioFormat(&buffer, max > 0 ? max - 1 : 0,
+ TrioOutStreamStringMax, format, &args, NULL);
+ if (max > 0)
+@@ -4015,16 +4030,18 @@ TRIO_ARGS4((buffer, max, format, args),
+ char *buffer,
+ size_t max,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
+ int status;
+ size_t buf_len;
++ va_list args;
+
+ assert(VALID(buffer));
+ assert(VALID(format));
+
+ buf_len = trio_length(buffer);
+ buffer = &buffer[buf_len];
++ va_copy(args, arglist);
+ status = TrioFormat(&buffer, max - 1 - buf_len,
+ TrioOutStreamStringMax, format, &args, NULL);
+ *buffer = NIL;
+@@ -4068,13 +4085,15 @@ TRIO_PUBLIC char *
+ trio_vaprintf
+ TRIO_ARGS2((format, args),
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
+ trio_string_t *info;
+ char *result = NULL;
++ va_list args;
+
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ info = trio_xstring_duplicate("");
+ if (info)
+ {
+@@ -4128,7 +4147,7 @@ trio_vasprintf
+ TRIO_ARGS3((result, format, args),
+ char **result,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
+ int status;
+ trio_string_t *info;
+@@ -4144,6 +4163,9 @@ TRIO_ARGS3((result, format, args),
+ }
+ else
+ {
++ va_list args;
++
++ va_copy(args, arglist);
+ status = TrioFormat(info, 0, TrioOutStreamStringDynamic,
+ format, &args, NULL);
+ if (status >= 0)
+@@ -4832,9 +4854,12 @@ TRIO_ARGS3((ref, format, arglist),
+ TRIO_CONST char *format,
+ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(format));
+
+- return TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL);
++ va_copy(args, arglist);
++ return TrioFormatRef((trio_reference_t *)ref, format, &args, NULL);
+ }
+
+ /*************************************************************************
+@@ -6483,10 +6508,13 @@ TRIO_PUBLIC int
+ trio_vscanf
+ TRIO_ARGS2((format, args),
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ return TrioScan((trio_pointer_t)stdin, 0,
+ TrioInStreamFile,
+ format, &args, NULL);
+@@ -6534,11 +6562,14 @@ trio_vfscanf
+ TRIO_ARGS3((file, format, args),
+ FILE *file,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(file));
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ return TrioScan((trio_pointer_t)file, 0,
+ TrioInStreamFile,
+ format, &args, NULL);
+@@ -6587,10 +6618,13 @@ trio_vdscanf
+ TRIO_ARGS3((fd, format, args),
+ int fd,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ return TrioScan((trio_pointer_t)&fd, 0,
+ TrioInStreamFileDescriptor,
+ format, &args, NULL);
+@@ -6642,15 +6676,17 @@ TRIO_ARGS4((stream, closure, format, args),
+ trio_instream_t stream,
+ trio_pointer_t closure,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
+ trio_custom_t data;
++ va_list args;
+
+ assert(VALID(stream));
+ assert(VALID(format));
+
+ data.stream.in = stream;
+ data.closure = closure;
++ va_copy(args, arglist);
+ return TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL);
+ }
+
+@@ -6701,11 +6737,14 @@ trio_vsscanf
+ TRIO_ARGS3((buffer, format, args),
+ TRIO_CONST char *buffer,
+ TRIO_CONST char *format,
+- va_list args)
++ va_list arglist)
+ {
++ va_list args;
++
+ assert(VALID(buffer));
+ assert(VALID(format));
+
++ va_copy(args, arglist);
+ return TrioScan((trio_pointer_t)&buffer, 0,
+ TrioInStreamString,
+ format, &args, NULL);
--
Christian "naddy" Weisgerber naddy@mips.inka.de
amd64 build failures 2026-05-30