box64 icon indicating copy to clipboard operation
box64 copied to clipboard

[BUNDLE] libmvec.so.1

Open LukeShortCloud opened this issue 7 months ago • 1 comments

I need to add the libmvec.so.1 library to our bundle of x86 libraries.

Related: https://github.com/ptitSeb/box64/issues/2691

LukeShortCloud avatar Jun 03 '25 17:06 LukeShortCloud

This appears to be a library provided by the glibc package of many Linux distributions.

I'll need to add support for extracting very specific libraries since using all of GLIBC would lead to lots of Box issues. That's also required for: https://github.com/ptitSeb/box64/issues/2391

LukeShortCloud avatar Jun 12 '25 23:06 LukeShortCloud

@ptitSeb I'm looking at the GLIBC package to try and figure out which libraries we need. We want at least libmvec.so.1 here but I also know others like libc.so.6 will cause issues.

At a glance, do you know which ones are safe to bundle (or not safe to bundle) for the purposes of Box64 and Box86/Box32?

./lib64/ld-linux-x86-64.so.2
./lib64/libBrokenLocale.so.1
./lib64/libSegFault.so
./lib64/libanl.so.1
./lib64/libc.so.6
./lib64/libc_malloc_debug.so.0
./lib64/libdl.so.2
./lib64/libm.so.6
./lib64/libmvec.so.1
./lib64/libnss_compat.so.2
./lib64/libnss_dns.so.2
./lib64/libnss_files.so.2
./lib64/libpthread.so.0
./lib64/libresolv.so.2
./lib64/librt.so.1
./lib64/libthread_db.so.1
./lib64/libutil.so.1
./usr/lib64/audit/sotruss-lib.so
./usr/lib64/gconv/ANSI_X3.110.so
./usr/lib64/gconv/CP1252.so
./usr/lib64/gconv/ISO8859-1.so
./usr/lib64/gconv/ISO8859-15.so
./usr/lib64/gconv/UNICODE.so
./usr/lib64/gconv/UTF-16.so
./usr/lib64/gconv/UTF-32.so
./usr/lib64/gconv/UTF-7.so
./usr/lib64/libmemusage.so
./usr/lib64/libpcprofile.so

From the bundle perspective, it would be easiest for me to define what libraries to exclude from a specific package.

LukeShortCloud avatar Jul 16 '25 04:07 LukeShortCloud

I guess I can use this for hints: https://github.com/ptitSeb/box64/blob/v0.3.6/src/librarian/library.c#L433

Library File Include in Bundle
./lib64/ld-linux-x86-64.so.2 No
./lib64/libBrokenLocale.so.1 Yes
./lib64/libSegFault.so Yes
./lib64/libanl.so.1 No
./lib64/libc.so.6 No
./lib64/libc_malloc_debug.so.0 Yes
./lib64/libdl.so.2 No
./lib64/libm.so.6 No
./lib64/libmvec.so.1 Yes
./lib64/libnss_compat.so.2 Yes
./lib64/libnss_dns.so.2 Yes
./lib64/libnss_files.so.2 Yes
./lib64/libpthread.so.0 No
./lib64/libresolv.so.2 No
./lib64/librt.so.1 No
./lib64/libthread_db.so.1 Yes
./lib64/libutil.so.1 No
./usr/lib64/audit/sotruss-lib.so Yes
./usr/lib64/libmemusage.so Yes
./usr/lib64/libpcprofile.so Yes

LukeShortCloud avatar Jul 16 '25 17:07 LukeShortCloud

Yeah, that looks good to me. (I'm unsure about libthread_db.so.1, but I guess it's fine for now, as I have never seen it actually needed)

ptitSeb avatar Jul 16 '25 17:07 ptitSeb

Thanks for the confirmation! I can leave out libthread_db.so.1 to be safe. I'll work on that whenever I have some free time then.

I'm also thinking now that I should just bundle the GLIB package as-is. At the end of the bundle creation, before creating a tarball, I can just loop through these known problematic libraries (ignoring versions, too) and delete them if they exist.

Something like:

for f in libc.so libpthread.so
    do rm -f usr/lib*/${f}*
done

Then the CSV file can stay simple by users only needing to define (1) the URL to download the package from and (2) the SHA256 checksum of the package.

LukeShortCloud avatar Jul 16 '25 17:07 LukeShortCloud