[BUNDLE] libmvec.so.1
I need to add the libmvec.so.1 library to our bundle of x86 libraries.
Related: https://github.com/ptitSeb/box64/issues/2691
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
@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.
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 |
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)
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.