Re: arm64 stable/13 buildworld stops in bc

From: Stefan Esser <se_at_freebsd.org>
Date: Sat, 26 Jun 2021 12:20:25 +0200
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_at_build:/usr/src # git pull
> Already up to date.
> root_at_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_at_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.

Regards, STefan


Received on Sat Jun 26 2021 - 10:20:25 UTC

Original text of this message