[PATCH] build: support building static library

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



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
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