Re: [nfs-utils PATCH] tools: rpcgen: use host instead of cross compiler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Giulio,

On 10/21/20 1:42 PM, Giulio Benetti wrote:
> On 10/21/20 1:18 PM, Bastian Krause wrote:
>>
>> Hi Giulio,
>>
>> On 10/21/20 12:46 PM, Giulio Benetti wrote:
>>> On 10/21/20 12:28 PM, Bastian Krause wrote:
>>>> When cross compiling rpcgen is compiled with the cross compiler
>>>> although
>>>> it is executed during compile time only. This leads to errors like:
>>>>
>>>>     ../../tools/rpcgen/rpcgen -l -o mount_clnt.c mount.x
>>>>     ../../tools/rpcgen/rpcgen -c -i 0 -o mount_xdr.c mount.x
>>>>     ../../tools/rpcgen/rpcgen -h -o mount.h mount.x
>>>>     /lib/ld-linux-armhf.so.3: No such file or directory
>>>>     /lib/ld-linux-armhf.so.3: No such file or directory
>>>>     /lib/ld-linux-armhf.so.3: No such file or directory
>>>
>>> Can you please provide how you reach this situation?
>>
>> Sure, see below [1].
> 
> Very difficult to me to reproduce, anyway I've got the point now.
> 
>>>
>>>> Since e61775d1 ("rpcgen: bump to latest version") rpcgen is compiled
>>>> with the target compiler, prior to that it was correctly compiled with
>>>> the host compiler. Fix that by using $(CC_FOR_BUILD) as CC
>>>> explicitly as
>>>> it was before.
>>>>
>>>> buildroot works around this by compiling a host version first, then a
>>>> target version --with-rpcgen=$(HOST_DIR)/bin/rpcgen [1]. That does not
>>>> look like it is intended by nfs-utils.
>>>
>>> I find it correct since rpcgen is also a utility to be installed to
>>> target, so it should not be explictly built only for target and
>>
>> I was not aware of this. Having a host package does not sound so bad
>> now :)
> 
> yes :-)
> 
>>>
>>>> [1]
>>>> https://git.busybox.net/buildroot/tree/package/nfs-utils/nfs-utils.mk#n25
>>>>
>>>>
>>>> Signed-off-by: Bastian Krause <bst@xxxxxxxxxxxxxx>
>>>> ---
>>>>    tools/rpcgen/Makefile.am | 2 ++
>>>>    1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/tools/rpcgen/Makefile.am b/tools/rpcgen/Makefile.am
>>>> index 457cd507..f122cd9d 100644
>>>> --- a/tools/rpcgen/Makefile.am
>>>> +++ b/tools/rpcgen/Makefile.am
>>>> @@ -1,5 +1,7 @@
>>>>    CLEANFILES = *~
>>>>    +CC=$(CC_FOR_BUILD)
>>>> +
>>>
>>> this is what you're forcing to. To cross compile it we need both rpcgen
>>> for host and target, this way it will be built for target only.
>>
>> This is obviously wrong then.
>>
>>> Another option I can suggest is to assign CC_FOR_BUILD to CC on caller
>>> Makefile only during target building and not during host building and
>>> this should be automatically deduced by Makefile itself and also
>>> Makefile then, when calls rpcgen should know which rpcgen to use(the
>>> host one). That would be one solution IMHO.
>>>
>>> What do you think about it?
>>
>> I am not sure I understand this. Would this mean rpcgen is compiled
>> twice, once with the host compiler and once with the target compiler?
> 
> Yes, that I think should happen when cross-compiling because:
> - we need host rpcgen for building for target
> - we need target rpcgen to be installed to target

Agreed.

>> Without the need of a dedicated host package? That would be ideal, but I
>> have currently no idea how to achieve this.
> 
> It would be a not so little effort at the moment, so maybe can we keep
> it as is and you use the same work around I've used in Buildroot?

Yes, I'll use that.

> But in the meanwhile feel free to find a solution like this, that way
> when cross-compiling we can remove "--with-rpcgen=" that should be
> implicit.

In case I have some spare time, I'll look into this.

Thanks!

Regards,
Bastian

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux