Re: arm64 stable/13 buildworld stops in bc

From: Matthew Grooms <mgrooms_at_shrew.net>
Date: Sat, 26 Jun 2021 09:18:31 UTC
On 6/26/2021 12:20 AM, Stefan Esser wrote:

> 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.

Hi Stefan & Mark,

I appreciate the quick response.

That is strange. This build host didn't exist a few days ago and I 
started with a fresh git clone of stable/13.I could try to re-clone that 
but I'm not sure how it could have a mix of old and new sources. I also 
do a git pull before every build attempt ...

root@build:/usr/src # git pull
Already up to date.
root@build:/usr/src # git status
On branch stable/13
Your branch is up to date with 'origin/stable/13'.

However, I am cross compiling aarch64 from an amd64 host which is 
running the release branch ....

root@build:/usr/src # freebsd-version -u
13.0-RELEASE-p2

Do I need to update my amd64 build host to stable before cross compiling 
aarch64? I wouldn't think that compiling sources from /usr/src would be 
affected by release files installed on the build host.

Thanks,

-Matthew