Re: arm64 stable/13 buildworld stops in bc

From: Matthew Grooms <mgrooms_at_shrew.net>
Date: Sat, 26 Jun 2021 10:51:46 UTC
On 6/26/2021 5:20 AM, Stefan Esser wrote:

> Am 26.06.21 um 11:18 schrieb Matthew Grooms:
>> 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.
>   Hi Matthew,
>
> that might explain it ...
>
> But in fact, if it did, there would be an issue, since that would indicate
> that headers from the running system were used to build the new bc.
>
> BUT: The error messages clearly indicate a build failure caused by a mismatch
> between declarations in /usr/src/contrib/bc/include/ and calls in the c files.
>
> And since all files are within /usr/src/contrib/bc/, it is apparent that files
> in the base system do not play a role.
>
> Please compare your sources in /usr/src/contrib/bc/ with those in the
> repository (starting at the link I sent).
>
> You could also go to that directory and perform "git log ." to get a list
> of commits that you have on your system - compare that with the log in the
> repository.
>
> Anyway, I do not see that there is anything wrong in general, and I do assume
> it is an issue on your build system.
>
> Not much that I could do, I'm afraid.

Hi Stefan,

Thanks again for the assistance. I just did a fresh clone of stable/13 ...

root@build:~ # git clone -b stable/13 https://git.freebsd.org/src.git 
/usr/src
Cloning into '/usr/src'...
remote: Enumerating objects: 378566, done.
remote: Counting objects: 100% (378566/378566), done.
remote: Compressing objects: 100% (27086/27086), done.
remote: Total 3965834 (delta 372825), reused 351480 (delta 351480), 
pack-reused 3587268
Receiving objects: 100% (3965834/3965834), 1.31 GiB | 18.79 MiB/s, done.
Resolving deltas: 100% (3140074/3140074), done.
Updating files: 100% (85386/85386), done.

I will attempt to cross-compile world again and then report back here.

Thanks,

-Matthew