Re: archivers/arj fails to build on jail

From: Jesper Schmitz Mouridsen <jsm_at_FreeBSD.org>
Date: Tue, 30 Aug 2022 16:45:49 UTC
On 30.08.2022 18.03, Renato Botelho wrote:
> On 30/08/22 12:39, Renato Botelho wrote:
>> On 30/08/22 11:35, Jesper Schmitz Mouridsen wrote:
>>>
>>> On 30.08.2022 13.17, Renato Botelho wrote:
>>>> On 29/08/22 20:32, Jesper Schmitz Mouridsen wrote:
>>>>>
>>>>>
>>>>> On 29.08.2022 17.29, Renato Botelho wrote:
>>>>>> There is a PR [1] opened for years reporting arj fails to build 
>>>>>> on a jail.  Recently I reproduced it on a system running CURRENT.
>>>>>>
>>>>>> I just launched a jail and tried to build it, and got the error 
>>>>>> as described:
>>>>> Did you use ezjail?
>>>>>
>>>>> I tried to replicate and I think the error is triggered by
>>>>> the nullfs usage of ezjail. I copied the settings of ezjail without
>>>>> nullfs usage (using the basejail as path adding etc from the 
>>>>> failing jail to it and removing the fstab from jail.conf) and arj 
>>>>> did get a working msgbind.
>>>>
>>>> Yes, I also use ezjail.  I'm cc'ing ezjail's maintainer to see if 
>>>> we can get some advice.
>>>>
>>>> Thanks!
>>>>
>>> Hi again.
>>>
>>>
>>> I narrowed this down to  symlinks ,wiithin the jail, to the nullfs 
>>> mountpoint.
>>>
>>> Replacing symlinks to the basejail mount point with dirs and setting 
>>> this in the fstab of the jail
>>>
>>> and msgbind is a valid executable
>>>
>>> /usr/jails/basejail/bin /usr/jails/test1/bin nullfs ro 0 0
>>> /usr/jails/basejail/boot /usr/jails/test1/boot nullfs ro 0 0
>>> /usr/jails/basejail/lib /usr/jails/test1/lib nullfs ro 0 0
>>> /usr/jails/basejail/libexec /usr/jails/test1/libexec nullfs ro 0 0
>>> /usr/jails/basejail/rescue /usr/jails/test1/rescue nullfs ro 0 0
>>> /usr/jails/basejail/sbin /usr/jails/test1/sbin nullfs ro 0 0
>>> /usr/jails/basejail/usr/bin /usr/jails/test1/usr/bin nullfs ro 0 0
>>> /usr/jails/basejail/usr/lib /usr/jails/test1/usr/lib nullfs ro 0 0
>>> /usr/jails/basejail/usr/include /usr/jails/test1/usr/include nullfs 
>>> ro 0 0
>>> /usr/jails/basejail/usr/lib32 /usr/jails/test1/usr/lib32 nullfs ro 0 0
>>> /usr/jails/basejail/usr/ports /usr/jails/test1/usr/ports nullfs ro 0 0
>>> /usr/jails/basejail/usr/libdata /usr/jails/test1/usr/libdata nullfs 
>>> ro 0 0
>>> /usr/jails/basejail/usr/sbin /usr/jails/test1/usr/sbin nullfs ro 0 0
>>> /usr/jails/basejail/usr/share /usr/jails/test1/usr/share nullfs ro 0 0
>>> /usr/jails/basejail/usr/libexec /usr/jails/test1/usr/libexec nullfs 
>>> ro 0 0
>>> /usr/jails/basejail/usr/src /usr/jails/test1/usr/src nullfs ro 0 0
>>>
>>> It should be further narrowed down but nullfs alone is not the issue.
>>
>> Interesting.  And just to add a note here, I copied msgbind from jail 
>> to host and tried to execute it to confirm binary was really bad and 
>> I got the same Abort trap message.
>>
>
> And one more interesting information is it builds fine with gcc. I 
> just added USE_GCC=yes to the port and it worked.
>
if you inspect the output of realpath /usr/bin/cc i think we are close 
to a cause.. it includes /basejail in my setup.. if you copy cc out of 
basejail e.g /usr/local/bin and make CC=/usr/local/bin it also works..

perhaps some linking  of msgbind fails because of "wrong" realpath...