Re: arm64 stable/13 buildworld stops in bc

From: Stefan Esser <se_at_freebsd.org>
Date: Sat, 26 Jun 2021 05:20:21 UTC
Am 26.06.21 um 04:30 schrieb Matthew Grooms:
> Hi All,
> 
> I've been trying to build stable/13 kernel & world periodically for arm64 and
> either I'm not having very much luck or it's broken more times than it
> compiles. Is there an automated process that's checking builds for that platform?

Hi Matthew,

there automated CI tests for all supported platforms, and if bc had failed
to build there, I'd have been informed.

> Most recently, world stops building with bc ( see below ). However, that looks
> like that was last touched on June 1st. Has the build really been broken since
> then? :/

Not for me ...

> --- all_subdir_usr.bin ---
> /usr/src/contrib/bc/src/program.c:515:28: error: too few arguments to function
> call, expected 3, have 2
>         bc_file_puts(&vm.fout, str);
>         ~~~~~~~~~~~~              ^
> /usr/src/contrib/bc/include/file.h:81:6: note: 'bc_file_puts' declared here
> void bc_file_puts(BcFile *restrict f, BcFlushType type, const char *str);
>      ^
This looks to me like the result of an incomplete update of the sources.

History editing has been added a few releases back and the function signature
of bc_files_puts has been changed to take 3 instead  of 2 arguments.

It looks like you got a mismatch between this header and the callers of this
function. Specifically, line 515 mentioned in the error message above is line
517 in up-to.date sources and reads:

	bc_file_puts(&vm.fout, bc_flush_save, str);

Definitely 3 parameters there ...

See https://cgit.freebsd.org/src/tree/contrib/bc/src/program.c?h=stable/13#n512
line 517 - that's what your program.c should look like ...

> /usr/src/contrib/bc/src/program.c:529:21: error: too few arguments to function
> call, expected 2, have 1
>                 bc_vm_putchar('\0');
>                 ~~~~~~~~~~~~~     ^
> /usr/src/contrib/bc/include/vm.h:437:6: note: 'bc_vm_putchar' declared here
> void bc_vm_putchar(int c, BcFlushType type);
>      ^
> /usr/src/contrib/bc/src/program.c:552:23: error: too few arguments to function
> call, expected 2, have 1
>                                 bc_vm_putchar('\\');
>                                 ~~~~~~~~~~~~~     ^
> /usr/src/contrib/bc/include/vm.h:437:6: note: 'bc_vm_putchar' declared here
> void bc_vm_putchar(int c, BcFlushType type);
>      ^
> /usr/src/contrib/bc/src/program.c:556:18: error: too few arguments to function
> call, expected 2, have 1
>                 bc_vm_putchar(c);
>                 ~~~~~~~~~~~~~  ^
> /usr/src/contrib/bc/include/vm.h:437:6: note: 'bc_vm_putchar' declared here
> void bc_vm_putchar(int c, BcFlushType type);
>      ^
> /usr/src/contrib/bc/src/program.c:601:25: error: too few arguments to function
> call, expected 2, have 1
>                 bc_file_flush(&vm.fout);
>                 ~~~~~~~~~~~~~         ^
> /usr/src/contrib/bc/include/file.h:76:6: note: 'bc_file_flush' declared here
> void bc_file_flush(BcFile *restrict f, BcFlushType type);
>      ^
> /usr/src/contrib/bc/src/program.c:607:49: error: too few arguments to function
> call, expected 2, have 1
>                         if (inst == BC_INST_PRINT) bc_vm_putchar('\n');
> ~~~~~~~~~~~~~     ^
> /usr/src/contrib/bc/include/vm.h:437:6: note: 'bc_vm_putchar' declared here
> void bc_vm_putchar(int c, BcFlushType type);

All the other error messages do point at a mix of source files from before
and after introduction of the history feature, too ...

The line numbers in your version of program.c seem to be off, compared to
the current sources, e.g. check out lines 609 and 610 on the above given URL
for the correct sources that correspond to that last error message.

Update your sources to a consistent state and your issue should be resolved.

Let me know if there are any further problems with this program.

Regards, STefan