[PATCH] build: support building static library

Gao Xiang hsiangkao at linux.alibaba.com
Thu Jun 6 12:22:06 AEST 2024


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?

Thanks,
Gao Xiang


> We just want to do the same thing appimage guys do to squashfs.
> 
>>> exposes some useful functions, Appimage uses this static library to build
>>> image. It could ensure that the executable image can be executed directly
>>> on most linux platforms and the user doesn't need to install squashfuse
>>> in order to execute the image.
>>>
>>> Signed-off-by: ComixHe <heyuming at deepin.org>
>>> ---
>>>   configure.ac     | 28 ++++++++++++++++++++++++++++
>>>   dump/Makefile.am | 10 ++++++++++
>>>   fsck/Makefile.am | 10 ++++++++++
>>>   fuse/Makefile.am | 10 ++++++++++
>>>   mkfs/Makefile.am | 10 ++++++++++
>>>   5 files changed, 68 insertions(+)
>>>
>>> diff --git a/configure.ac b/configure.ac
>>> index 1989bca..16ddb7c 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -147,6 +147,30 @@ AC_ARG_ENABLE(fuse,
>>>      [AS_HELP_STRING([--enable-fuse], [enable erofsfuse @<:@default=no@:>@])],
>>>      [enable_fuse="$enableval"], [enable_fuse="no"])
>>> +AC_ARG_ENABLE([static-fuse],
>>> +    [AS_HELP_STRING([--enable-static-fuse],
>>> +                    [build erofsfuse as a static library @<:@default=no@:>@])],
>>> +    [enable_static_fuse="$enableval"],
>>> +    [enable_static_fuse="no"])
>>> +
>>> +AC_ARG_ENABLE([static-dump],
>>> +    [AS_HELP_STRING([--enable-static-dump],
>>> +                    [build dump.erofs as a static library @<:@default=no@:>@])],
>>> +    [enable_static_dump="$enableval"],
>>> +    [enable_static_dump="no"])
>>> +
>>> +AC_ARG_ENABLE([static-mkfs],
>>> +    [AS_HELP_STRING([--enable-static-mkfs],
>>> +                    [build mkfs.erofs as a static library @<:@default=no@:>@])],
>>> +    [enable_static_mkfs="$enableval"],
>>> +    [enable_static_mkfs="no"])
>>> +
>>> +AC_ARG_ENABLE([static-fsck],
>>> +    [AS_HELP_STRING([--enable-static-fsck],
>>> +                    [build fsck.erofs as a static library @<:@default=no@:>@])],
>>> +    [enable_static_fsck="$enableval"],
>>> +    [enable_static_fsck="no"])
>>
>> But how could we support static libraries from binaries?
>>
>> I guess you need static liberofs instead?
>>
>> Thanks,
>> Gao Xiang
>>


More information about the Linux-erofs mailing list