[PATCH] build: support building static library
Chen Linxuan
me at black-desk.cn
Thu Jun 6 13:17:34 AEST 2024
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.
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