[PATCH] build: support building static library

Gao Xiang hsiangkao at linux.alibaba.com
Thu Jun 6 13:22:15 AEST 2024



On 2024/6/6 11:17, Chen Linxuan wrote:
> On 2024/6/6 11:13, Gao Xiang wrote:
>>
>>
>> On 2024/6/6 11:06, Chen Linxuan wrote:
>>> On 2024/6/6 10:45, Gao Xiang wrote:
>>>>
>>>>
>>>> On 2024/6/6 10:25, Chen Linxuan wrote:
>>>>> Hi,
>>>>>
>>>>> On 2024/6/6 10:22, Gao Xiang wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On 2024/6/6 10:13, Chen Linxuan wrote:
>>>>>>> Hi Xiang!
>>>>>>>
>>>>>>> On 2024/5/23 16:05, Gao Xiang wrote:
>>>>>>>> Hi Comix!
>>>>>>>>
>>>>>>>> On 2024/5/23 15:31, ComixHe wrote:
>>>>>>>>> In some cases, developer may need to integrate erofs-utils into their
>>>>>>>>> proejct as a static library to reduce package dependencies and
>>>>>>>>> have more finer control over the feature used by the project.
>>>>>>>>
>>>>>>>> Thanks for sharing this.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> For exapmle, squashfuse provides a static library `libsquashfuse.a` and
>>>>>>>
>>>>>>> We want a static library for running fuse-erofs, maybe liberofsfuse or something like that, to make a appimage like bundle with erofs.
>>>>>>>
>>>>>>> For quite a long time, Appimage guys patch the fuse program of squashfs to get such a static library, and this patch is accepted by Debian.
>>>>>>>
>>>>>>> https://github.com/AppImageCommunity/libappimage/blob/master/src/patches/squashfuse.patch
>>>>>>>
>>>>>>> https://salsa.debian.org/sgmoore/squashfuse/-/commit/489b04eb7f5e45478f2ba5cd8d7173bb96
>>>>>>>
>>>>>>> The patch just make a binary to be a static library by changing `main` to `fusefs_main`.
>>>>>>>
>>>>>>
>>>>>> Since squashfs don't have any offical libsquashfs, so I guess they tried
>>>>>> export the squashfuse project as a library.
>>>>>>
>>>>>> But erofs-utils is quite another story since we already have an offical
>>>>>> `liberofs` concept.   If you'd like to export some FUSE interface, would
>>>>>> you mind moving some logic in fuse/ to lib/?  Does this way also work
>>>>>> for you?
>>>>>
>>>>> Sure.
>>>>>
>>>>> We will send other patches later.
>>>>
>>>> Err, sorry, a second thought.. If you just would like
>>>> to move all code from fuse/main.c to lib/,  I also think
>>>> it's somewhat strange.
>>>>
>>>> So just address your requirement (erofsfuse_main), would
>>>> you mind just export liberofsfuse static library instead?
>>>> Since it's a bit tangled with libfuse version, so I'm now
>>>> hesitated to move into lib/...
>>>
>>> So you mean that I should export a static library call "liberofsfuse".
>>> And the only function it has is erofsfuse_main. Am I right?
>>
>> You could export any function in the fuse/main.c, also you
>> could rename main() as erofsfuse_main() for the liberofsfuse
>> library.
>>
>>>
>>> But where should I place the source code of this new library? "liberofsfuse/", "lib/fuse" or somewhere else?
>>
>> Just like the current patch, fuse/main.c is okay for me (since
> 
> Maybe you want to check the original patch again?
> 
> We build liberofsfuse with -Dmain=erofsfuse_main at that patch, which sounds like what you suggest here.

That is also fine with me, anyway, liberofsfuse is a very special
case for us, I'd like to just build a static library for
erofsfuse only (because liberofs will be exported as a dynamic
library in later versions, I don't want to rely on random libfuse
interface).

For other usage, I'd suggest form some formal APIs in liberofs
instead.

Thanks,
Gao Xiang

> 
> Thanks,
> Chen Linxuan
> 
>> it's tangled with libfuse internals), but I guess we'd better
>> to avoid self-contained libmkerofs and more.  `liberofs` is
>> much better to be directy used for mkfs, fsck usage.
>>
>> Thanks,
>> Gao Xiang
>>
>>
>>>
>>> Thanks,
>>> Chen Linxuan
>>>
>>>>
>>>> For mkfs, I guess we will have offical API interfaces for
>>>> users to build images later, so libmkerofs is not worthwhile.
>>>>
>>>> I'm not sure dump.erofs is useful too since low-level APIs
>>>> are provided. As for fsck, it's similar to mkfs in the future.
>>>>
>>>>
>>>> Thanks,
>>>> Gao Xiang
>>>>
>>>>>
>>>>> Thanks,
>>>>> Chen Linxuan
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Gao Xiang
>>>>>>
>>>>>>
>>


More information about the Linux-erofs mailing list