about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorFathi Boudra <fathi.boudra@linaro.org>2025-07-30 20:20:41 +0200
committerGitHub <noreply@github.com>2025-07-30 20:20:41 +0200
commitec0e1077c93a13e96ea4e7556102dacd5b1cb6f1 (patch)
tree5ef0b4220c276e7c13ee45c1a7a78a9838f182c9
parent127d72da17a076beb564d0f21f14bbad5b27d755 (diff)
downloadbox64-ec0e1077c93a13e96ea4e7556102dacd5b1cb6f1.tar.gz
box64-ec0e1077c93a13e96ea4e7556102dacd5b1cb6f1.zip
Box64 bundle x86 libs improvements (#2839)
* box64-bundle-x86-libs.csv: fix glibc i686 checksum

glibc i686 checksum is the same as the x86_64 version.
It's a copy paste error. Fix the correct checksum.
Also sort the file content so it's easier to figure out the package
source and read potential mistakes.

Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>

* box64-bundle-x86-libs.sh: rewrite the bundle libraries script

Heavily based on Luke's original work, the main improvements:
* portable:
  - it's a POSIX shell script, doesn't rely on bash anymore
  - reduce tool dependencies (use only awk, instead of awk and cut)
* more robust:
  - clean up on exit/errors
  - retry logic with curl
  - check tools availability
  - fails on checksums errors
* more readable
* fixed duplicated removal libraries that can't be emulated
* passed shellcheck analysis tool

Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>

---------

Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
-rw-r--r--box64-bundle-x86-libs.csv62
-rw-r--r--box64-bundle-x86-libs.sh213
2 files changed, 141 insertions, 134 deletions
diff --git a/box64-bundle-x86-libs.csv b/box64-bundle-x86-libs.csv
index 915246cc..3fcfb911 100644
--- a/box64-bundle-x86-libs.csv
+++ b/box64-bundle-x86-libs.csv
@@ -1,8 +1,32 @@
-https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/bluez-libs-5.72-2.el9.i686.rpm,af1aba8e6fa5ccf33032d58a3acc59368c07d532293396db205fb9a4bc1241ae
-https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/bluez-libs-5.72-2.el9.x86_64.rpm,49c273813b4616240acdae8dae893192658c7541482f9bbb2c46dfe19b61877d
+https://archive.debian.org/debian/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+deb11u7~bpo11+1_amd64.deb,d5ae55e3a9838d12358530cd03218cc0d18127a84e9cfc73bdf79dacd40b25e4
+https://archive.debian.org/debian/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+deb11u7~bpo11+1_i386.deb,625e5189304d4d3bfb27cb821e257816c5ce761b1696b5da5ca4fa1035c48463
+https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/Packages/l/libunwind-1.4.0-5.fc34.i686.rpm,eb518e9d073c36fd29862c7afd00a8a7cb186074a0e162983f18fb6c9dc71d2c
+https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/Packages/l/libunwind-1.4.0-5.fc34.x86_64.rpm,0f44e37e4eb472508e0dba8505ebbb04c2c1390c6a43970a6af80aad886037e3
+https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/40/Everything/x86_64/Packages/s/SDL3-3.2.12-1.fc40.i686.rpm,4a3bce6e6358ddd05ed2941e7b8fcc4c8cc02df20741d3f0f9295facbc687769
+https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/40/Everything/x86_64/Packages/s/SDL3-3.2.12-1.fc40.x86_64.rpm,9524803ef42d80dc1b15190d5bb5925200995d5a6152eca04471383ff891af17
+https://cdn.getsol.us/repo/shannon/libj/libjpeg-turbo/libjpeg-turbo-3.0.3-21-1-x86_64.eopkg,c92f19d446b4c2450306f13b1a908f2552400da09301996fe349fee243d964d2
+https://cdn.getsol.us/repo/shannon/libj/libjpeg-turbo/libjpeg-turbo-32bit-3.0.3-21-1-x86_64.eopkg,5624990281f6520026aa2252c711f02d4916099aeac63accc83bd2135b9d3220
+https://repo.almalinux.org/almalinux/8.10/BaseOS/x86_64/os/Packages/nettle-3.4.1-7.el8.i686.rpm,13bc8758355c3ec885f414e0e86efad29a7fe82c0999cdb3754d666949c06cc5
+https://repo.almalinux.org/almalinux/8.10/BaseOS/x86_64/os/Packages/nettle-3.4.1-7.el8.x86_64.rpm,fb4aaa22b2e2f2fc0c451b87ac464e8746d240397d64e79f6bfd38f4e9128a5a
 https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/fribidi-1.0.10-6.el9.2.i686.rpm,75f808f0f5f93aceb4e477aa5f302edbed07a605a0644f0ea929d4ea609e36a0
 https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/fribidi-1.0.10-6.el9.2.x86_64.rpm,b4763ca410f8479b2775efb55ba09e6722948af7526180a56309e3e090c27010
-https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/glibc-2.34-125.el9_5.8.alma.1.i686.rpm,1848b9ced2dfec6c206791b23a5a8a6356939c5ed0492fc91c86bf1d3a255c1d
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libICE-1.0.10-8.el9.i686.rpm,d9c44bb34c990fdcc6987feefacfc9e1e7997ca25f1e0a59c9adc9c16f2266d1
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libICE-1.0.10-8.el9.x86_64.rpm,d0b867203384942985c3c4ad6fc9ec0000fcc9965408451a6cdef8df06a3833c
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libSM-1.2.3-10.el9.i686.rpm,ec68b3def828ba442248f3cff495f42c4af3dd58f38c8daad07dfddc109d999a
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libSM-1.2.3-10.el9.x86_64.rpm,d00318843a50138829b470a97b8db1a00723b10bca23c16a8386d9ab670e4c64
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libepoxy-1.5.5-4.el9.i686.rpm,fe35e8de9b68c8d7e7b6b525580fc36cf9c86412cdb2b022dc01f95801771981
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libepoxy-1.5.5-4.el9.x86_64.rpm,b6d1e7f1c832882ceb05187cbc2d8fe1f459bcd88c7160487ee6f734e1a5d017
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libogg-1.3.4-6.el9.i686.rpm,9e4ff6fa0251c5357ae8f648b3e396d0043d5b3f2fb28d23325f5bd592c67aee
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libogg-1.3.4-6.el9.x86_64.rpm,83b4b333e335654674032d1cda4d7deb328b5a409f95e3952c3dc482b684fd8f
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libsigc%2B%2B20-2.10.7-2.el9.i686.rpm,7c33f4c18cbd51dc0a7c9ae0190b1a27d0540ce2fd92ced4776dde66162d1a88
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libsigc%2B%2B20-2.10.7-2.el9.x86_64.rpm,8600132b9e4efadfe23d3125e90287f5a7114165fd9ecb064d9930fcca446ef2
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libtheora-1.1.1-31.el9.i686.rpm,2155c688b516ab359d0c47be6d73e51d3c65f199ed5591f7bb7ce6d5d9799977
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libtheora-1.1.1-31.el9.x86_64.rpm,25ab4a8ad997b450b4a34a777f5a0678eea72ca1665944a7a461ac63de4b25bf
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libvorbis-1.3.7-5.el9.i686.rpm,e38c5185fea611330ea253db020315dd564507bf95c48a81dbe7db186ce4214b
+https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libvorbis-1.3.7-5.el9.x86_64.rpm,3c340337a073975636d198a282503f32a54bf85fb5345522a2c22e530b8d6c9e
+https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/bluez-libs-5.72-2.el9.i686.rpm,af1aba8e6fa5ccf33032d58a3acc59368c07d532293396db205fb9a4bc1241ae
+https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/bluez-libs-5.72-2.el9.x86_64.rpm,49c273813b4616240acdae8dae893192658c7541482f9bbb2c46dfe19b61877d
+https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/glibc-2.34-125.el9_5.8.alma.1.i686.rpm,28bc1088e39483d145849e8804c5a0f2524faeb4f76631ae46c41100f40e08b9
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/glibc-2.34-125.el9_5.8.alma.1.x86_64.rpm,1848b9ced2dfec6c206791b23a5a8a6356939c5ed0492fc91c86bf1d3a255c1d
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/gmp-6.2.0-13.el9.i686.rpm,fe352f7d197ebdf2c92bbd6e548f9f6b7ac9e69e7a9d6c9861a6274482e79d73
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/gmp-6.2.0-13.el9.x86_64.rpm,babe0b1385e723476a216d5f4b72453e031c3d683b19344786c2bddf7203cb04
@@ -14,56 +38,32 @@ https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/34/Everythin
 https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/34/Everything/x86_64/Packages/h/hidapi-0.11.2-2.fc34.x86_64.rpm,2a13461c7d5fcf72ffd682b3eb04833aea8306d61c3b8bdeb42a5081d96d5478
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libblkid-2.37.4-20.el9.i686.rpm,f9e62d2768c31948b53268b7de51bd1c7342cdf39a328a0d89d933b4aa0c5dd1
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libblkid-2.37.4-20.el9.x86_64.rpm,ed02d978a36488b38bad62af21d4045367c1f0b00d00c90ded01e2fc8e190536
-https://archive.debian.org/debian/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+deb11u7~bpo11+1_amd64.deb,d5ae55e3a9838d12358530cd03218cc0d18127a84e9cfc73bdf79dacd40b25e4
-https://archive.debian.org/debian/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+deb11u7~bpo11+1_i386.deb,625e5189304d4d3bfb27cb821e257816c5ce761b1696b5da5ca4fa1035c48463
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libepoxy-1.5.5-4.el9.i686.rpm,fe35e8de9b68c8d7e7b6b525580fc36cf9c86412cdb2b022dc01f95801771981
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libepoxy-1.5.5-4.el9.x86_64.rpm,b6d1e7f1c832882ceb05187cbc2d8fe1f459bcd88c7160487ee6f734e1a5d017
+https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libbrotli-1.0.9-7.el9_5.i686.rpm,d18c20fccbb9497222059d475161a55c0c6279344f214fe551b8b0f87d3c054a
+https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libbrotli-1.0.9-7.el9_5.x86_64.rpm,77906ae44bcd42a9f6646d814874768e8befaabf413133d44f71a95ac6c6d68c
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libffi-3.4.2-8.el9.i686.rpm,70daa216ed2a6540e41c455efc95d2b5671db164137f854bceae07e348f58645
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libffi-3.4.2-8.el9.x86_64.rpm,1cf2d122e5c423681394c1bc599ee2281d2eafff5a3749842bc93c37db4bed5e
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libgomp-11.5.0-2.el9.alma.1.i686.rpm,686ac26afe2073a3607f26fd1592a8ccd9b78f6eec6e872528634b43c4e04dd7
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libgomp-11.5.0-2.el9.alma.1.x86_64.rpm,9a2bdc6807b22ffb6294b30dcc13e20198abe5facaeefcf1bfacec3e1013e3c2
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libgpg-error-1.42-5.el9.i686.rpm,23f828674bc30752687452dacf4a25ca8c25ef0d25e3e6953d0714b5b33cef08
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libgpg-error-1.42-5.el9.x86_64.rpm,f28fabeb02add41b8156c394427da9dbf99882d8c42055367f872130ee424c97
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libICE-1.0.10-8.el9.i686.rpm,d9c44bb34c990fdcc6987feefacfc9e1e7997ca25f1e0a59c9adc9c16f2266d1
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libICE-1.0.10-8.el9.x86_64.rpm,d0b867203384942985c3c4ad6fc9ec0000fcc9965408451a6cdef8df06a3833c
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libidn2-2.3.0-7.el9.i686.rpm,4458e2d416b5e6714ec664c4f88791eee7d1e707026a5854d948a6159911465b
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libidn2-2.3.0-7.el9.x86_64.rpm,c3ff43237c05258ee0dd77c28540fc8d0d824f1567b115ddfd555b78d2ee0e7a
-https://cdn.getsol.us/repo/shannon/libj/libjpeg-turbo/libjpeg-turbo-32bit-3.0.3-21-1-x86_64.eopkg,5624990281f6520026aa2252c711f02d4916099aeac63accc83bd2135b9d3220
-https://cdn.getsol.us/repo/shannon/libj/libjpeg-turbo/libjpeg-turbo-3.0.3-21-1-x86_64.eopkg,c92f19d446b4c2450306f13b1a908f2552400da09301996fe349fee243d964d2
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libnsl-2.34-125.el9_5.8.alma.1.i686.rpm,7f4d1552b6036c49028db959f82fc0bc30773cd7ed0a62c3906da0e2388f4dc5
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libnsl-2.34-125.el9_5.8.alma.1.x86_64.rpm,7d0e521ab087807ee71d79da66a2829b827bf5080bb5d080dfab108e31cf218b
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libogg-1.3.4-6.el9.i686.rpm,9e4ff6fa0251c5357ae8f648b3e396d0043d5b3f2fb28d23325f5bd592c67aee
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libogg-1.3.4-6.el9.x86_64.rpm,83b4b333e335654674032d1cda4d7deb328b5a409f95e3952c3dc482b684fd8f
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libpng-1.6.37-12.el9.i686.rpm,66bf967e84f0d8e7a0059f2b7dda33482ff5e4fe088d0e3bc86dc54e6c7c97be
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libpng-1.6.37-12.el9.x86_64.rpm,ebb3e927dfafa0b199e00e2bef4c10c85fc82a70c359faf9aeb599eda70bfa5e
-https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libbrotli-1.0.9-7.el9_5.i686.rpm,d18c20fccbb9497222059d475161a55c0c6279344f214fe551b8b0f87d3c054a
-https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libbrotli-1.0.9-7.el9_5.x86_64.rpm,77906ae44bcd42a9f6646d814874768e8befaabf413133d44f71a95ac6c6d68c
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libsigc%2B%2B20-2.10.7-2.el9.i686.rpm,7c33f4c18cbd51dc0a7c9ae0190b1a27d0540ce2fd92ced4776dde66162d1a88
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libsigc%2B%2B20-2.10.7-2.el9.x86_64.rpm,8600132b9e4efadfe23d3125e90287f5a7114165fd9ecb064d9930fcca446ef2
-https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/sqlite-libs-3.34.1-7.el9_3.i686.rpm,dc6946a8344b8f4f476fef9479d1786c86fdcd045e988ab5d85fef7780e1fae4
-https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/sqlite-libs-3.34.1-7.el9_3.x86_64.rpm,e7f87444f24a03b37caa02942082b6d4283067ecbbd3f7798f882d22b55713cf
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libSM-1.2.3-10.el9.i686.rpm,ec68b3def828ba442248f3cff495f42c4af3dd58f38c8daad07dfddc109d999a
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libSM-1.2.3-10.el9.x86_64.rpm,d00318843a50138829b470a97b8db1a00723b10bca23c16a8386d9ab670e4c64
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libstdc%2B%2B-11.5.0-5.el9_5.alma.1.i686.rpm,05fd29569c312a661374aa69e28ed5cad20812822070a3138265c92a446e2c80
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libstdc%2B%2B-11.5.0-5.el9_5.alma.1.x86_64.rpm,7efb1ded0ec2763589dd3bc6a9d52fa9f898cc1f3db6e8761e1d223ce4506424
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libtasn1-4.16.0-8.el9_1.i686.rpm,9cbd11277e89bd0d4a80900bee01ca71b0c582c9cb5744f5035135b2ed907c85
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libtasn1-4.16.0-8.el9_1.x86_64.rpm,2dd3a1ad2785df642cb03dfed6dfbeec929ff8b14e52e61272ca7e89f86ba3cd
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libtheora-1.1.1-31.el9.i686.rpm,2155c688b516ab359d0c47be6d73e51d3c65f199ed5591f7bb7ce6d5d9799977
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libtheora-1.1.1-31.el9.x86_64.rpm,25ab4a8ad997b450b4a34a777f5a0678eea72ca1665944a7a461ac63de4b25bf
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libunistring-0.9.10-15.el9.i686.rpm,792600a879fbd94ce4bf249713b0cb3a166c147cfad397e8a15e6b4f01c75997
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libunistring-0.9.10-15.el9.x86_64.rpm,d2f86fbee729a4900a433a6c52a3cb95d9b52b1d79c9e719ee3ef509813eb6d9
-https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/Packages/l/libunwind-1.4.0-5.fc34.i686.rpm,eb518e9d073c36fd29862c7afd00a8a7cb186074a0e162983f18fb6c9dc71d2c
-https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/34/Everything/x86_64/os/Packages/l/libunwind-1.4.0-5.fc34.x86_64.rpm,0f44e37e4eb472508e0dba8505ebbb04c2c1390c6a43970a6af80aad886037e3
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libvorbis-1.3.7-5.el9.i686.rpm,e38c5185fea611330ea253db020315dd564507bf95c48a81dbe7db186ce4214b
-https://vault.almalinux.org/9.5/AppStream/x86_64/os/Packages/libvorbis-1.3.7-5.el9.x86_64.rpm,3c340337a073975636d198a282503f32a54bf85fb5345522a2c22e530b8d6c9e
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libzstd-1.5.1-2.el9.i686.rpm,e98f253d6f5f9acf2ded628cd98f50a54a031e354bf7bb2efc3fe39f9899fe49
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/libzstd-1.5.1-2.el9.x86_64.rpm,2e5215e225cec2db43d92c3b3380812a6f8684e881ed415670299e1e0fe7d1ce
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/lz4-libs-1.9.3-5.el9.i686.rpm,c308ba7380a3b5c5337c919150f0234342b64c1ea696d6207c2b790b82ba4669
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/lz4-libs-1.9.3-5.el9.x86_64.rpm,439e701491af6a957ac4d7dc69cccee1a945333f19d8bfcbd896b5119af01aab
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/ncurses-libs-6.2-10.20210508.el9.i686.rpm,285db6dc6f610f75ef6863dcb0a383eae394c2b33bff283189cb49ac7fae4c58
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/ncurses-libs-6.2-10.20210508.el9.x86_64.rpm,d06b0e491481a345faf21a69666cbdc302d19b54fb29ae1aa78fa6b205f9e604
-https://repo.almalinux.org/almalinux/8.10/BaseOS/x86_64/os/Packages/nettle-3.4.1-7.el8.i686.rpm,13bc8758355c3ec885f414e0e86efad29a7fe82c0999cdb3754d666949c06cc5
-https://repo.almalinux.org/almalinux/8.10/BaseOS/x86_64/os/Packages/nettle-3.4.1-7.el8.x86_64.rpm,fb4aaa22b2e2f2fc0c451b87ac464e8746d240397d64e79f6bfd38f4e9128a5a
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/nettle-3.9.1-1.el9.i686.rpm,e5610fe3b25cfca1616440e1a8a7489fd37b0852f182fdda87ab8e196d981970
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/nettle-3.9.1-1.el9.x86_64.rpm,9786b6610d17aa495fb640ba6d046bf73704915b82d12e6d8339090ff4891de5
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/p11-kit-0.25.3-3.el9_5.i686.rpm,abe4ab924b405c236eaf3fa067fed50ac66d15d0ef42c782a745788c1a9c5b91
@@ -72,5 +72,5 @@ https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/pam-1.5.1-22.el9_5.i68
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/pam-1.5.1-22.el9_5.x86_64.rpm,15bfe177d3c10982c75e81d7b274883a9fb53322011c8d829667c983ee419b18
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/pciutils-libs-3.7.0-5.el9.i686.rpm,2cf468da5ecf307cc325c9a5da0a288aafd25dec0951af2b4d0954a77bdf900d
 https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/pciutils-libs-3.7.0-5.el9.x86_64.rpm,308bd897d8f9a36020d70edc79089a3595b22b149200d67c37e2d4e6147a9f75
-https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/40/Everything/x86_64/Packages/s/SDL3-3.2.12-1.fc40.i686.rpm,4a3bce6e6358ddd05ed2941e7b8fcc4c8cc02df20741d3f0f9295facbc687769
-https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/40/Everything/x86_64/Packages/s/SDL3-3.2.12-1.fc40.x86_64.rpm,9524803ef42d80dc1b15190d5bb5925200995d5a6152eca04471383ff891af17
+https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/sqlite-libs-3.34.1-7.el9_3.i686.rpm,dc6946a8344b8f4f476fef9479d1786c86fdcd045e988ab5d85fef7780e1fae4
+https://vault.almalinux.org/9.5/BaseOS/x86_64/os/Packages/sqlite-libs-3.34.1-7.el9_3.x86_64.rpm,e7f87444f24a03b37caa02942082b6d4283067ecbbd3f7798f882d22b55713cf
diff --git a/box64-bundle-x86-libs.sh b/box64-bundle-x86-libs.sh
index 8c6f0eaf..c979cade 100644
--- a/box64-bundle-x86-libs.sh
+++ b/box64-bundle-x86-libs.sh
@@ -1,121 +1,128 @@
-#!/bin/bash
+#!/bin/sh
 
-set -x
+set -ex
 
-extract_pkg_auto() {
-    # Example x86_64 package name: libcurl3-gnutls_7.74.0-1.3+deb11u7~bpo11+1_amd64.deb
-    # Example x86 package name: libcurl3-gnutls_7.74.0-1.3+deb11u7~bpo11+1_i386.deb
-    if echo "${1}" | grep -q -P ".deb$"; then
-        echo "DEB (Debian) package detected."
-        ar x "$(basename "${1}")"
-        tar --extract --file data.tar*
-    # Example x86_64 package name: curl-gnutls-8.1.2-44-1-x86_64.eopkg
-    # Example x86 package name: curl-gnutls-32bit-8.1.2-44-1-x86_64.eopkg
-    elif echo "${1}" | grep -q -P ".eopkg$"; then
-        echo "EOPKG (Solus Linux) package detected."
-        unzip -o "$(basename "${1}")"
-        tar --extract --file install.tar.xz
-    # Example x86_64 package name: bluez-libs-5.63-1.el8.x86_64.rpm
-    # Example x86 package name: bluez-libs-5.63-1.el8.i686.rpm
-    elif echo "${1}" | grep -q -P ".rpm$"; then
-        echo "RPM (Fedora) detected."
-        rpm2cpio "$(basename "${1}")" | cpio -idmv
-    # Example x86_64 package name: libjpeg-turbo-3.0.1_1.x86_64.xbps
-    # Example x86 package name: libjpeg-turbo-32bit-3.0.1_1.x86_64.xbps
-    elif echo "${1}" | grep -q -P ".xbps$"; then
-        echo "XBPS (Void Linux) package detected."
-        tar --extract --file "$(basename "${1}")"
-    else
-        echo "Unsupported package type detected."
-        exit 1
-    fi
+trap cleanup_exit INT TERM EXIT
+
+cleanup_exit()
+{
+    echo "Running cleanup_exit..."
+    rm -rf /tmp/box64-bundle.*
 }
 
-box64_dir=$(pwd)
-dir_tmp_local="$(mktemp --directory)"
-cd "${dir_tmp_local}"
+# we must have few tools
+awk=$(which awk) || { echo "E: You must have awk" && exit 1; }
+cpio=$(which cpio) || { echo "E: You must have cpio" && exit 1; }
+curl=$(which curl) || { echo "E: You must have curl" && exit 1; }
+curl_cmd="${curl} --connect-timeout 5 --retry 5 --retry-delay 1 --create-dirs -fsSLo"
+rpm2cpio=$(which rpm2cpio) || { echo "E: You must have rpm2cpio" && exit 1; }
+sha256sum=$(which sha256sum) || { echo "E: You must have sha256sum" && exit 1; }
+unzip=$(which unzip) || { echo "E: You must have unzip" && exit 1; }
 
-for line in $(cat "${box64_dir}/box64-bundle-x86-libs.csv");
-    do pkg_url="$(echo "${line}" | cut -d, -f1)"
-    pkg_checksum_expected="$(echo "${line}" | cut -d, -f2)"
-    pkg_name="$(basename "${pkg_url}")"
-    if ! curl --silent --fail --location --remote-name "${pkg_url}"
-        then echo "Failed to download ${pkg_url}"
-        exit 1
-    fi
-    pkg_checksum_actual="$(sha256sum ${pkg_name} | awk '{print $1}')"
-    if [[ "${pkg_checksum_expected}" -ne "${pkg_checksum_actual}" ]];
-        then echo "Invalid checksum for ${pkg_name}"
-        echo "Expected: ${pkg_checksum_expected}"
-        echo "Actual: ${pkg_checksum_actual}"
+current_dir=$(pwd)
+dir_tmp="$(mktemp -d /tmp/box64-bundle.XXXXXX)"
+
+# download the packages
+while IFS= read -r line; do
+    # shellcheck disable=SC2016
+    pkg_url=$(echo "${line}" | ${awk} -F',' '{print$(NF-1)}')
+    # shellcheck disable=SC2016
+    pkg_checksum=$(echo "${line}" | ${awk} -F',' '{print$(NF)}')
+    # shellcheck disable=SC2016
+    pkg_name=$(echo "${pkg_url}" | ${awk} -F'/' '{print$(NF)}')
+    ${curl_cmd} "${dir_tmp}/bundle-pkgs/${pkg_name}" "${pkg_url}"
+    checksum="$(${sha256sum} "${dir_tmp}/bundle-pkgs/${pkg_name}" | awk '{print $1}')"
+    if [ "${pkg_checksum}" != "${checksum}" ]; then
+        echo "E: Invalid checksum for ${pkg_name}"
+        echo "Expected: ${pkg_checksum}"
+        echo "Computed: ${checksum}"
         exit 1
     fi
-    extract_pkg_auto "${pkg_name}"
-done
-
-# Start preperation of bundles.
-mkdir -p \
-  "${dir_tmp_local}/bundle-libs/usr/lib/box64-i386-linux-gnu" \
-  "${dir_tmp_local}/bundle-libs/usr/lib/box64-x86_64-linux-gnu" \
-  "${dir_tmp_local}/bundle-pkgs" \
+done < box64-bundle-x86-libs.csv
 
-# Copy Debian family libraries.
-cp --archive "${dir_tmp_local}"/usr/lib/i386-linux-gnu/*.so* "${dir_tmp_local}/bundle-libs/usr/lib/box64-i386-linux-gnu"
-cp --archive "${dir_tmp_local}"/usr/lib/x86_64-linux-gnu/*.so* "${dir_tmp_local}/bundle-libs/usr/lib/box64-x86_64-linux-gnu"
-# Copy Fedora family libraries.
-cp --archive "${dir_tmp_local}"/usr/lib/*.so* "${dir_tmp_local}/bundle-libs/usr/lib/box64-i386-linux-gnu"
-cp --archive "${dir_tmp_local}"/usr/lib64/*.so* "${dir_tmp_local}/bundle-libs/usr/lib/box64-x86_64-linux-gnu"
-## This location is used by a few special packages such as "glibc".
-cp --archive "${dir_tmp_local}"/lib/*.so* "${dir_tmp_local}/bundle-libs/usr/lib/box64-i386-linux-gnu"
-cp --archive "${dir_tmp_local}"/lib64/*.so* "${dir_tmp_local}/bundle-libs/usr/lib/box64-x86_64-linux-gnu"
-# Copy Solus and Void Linux family libraries.
-cp --archive "${dir_tmp_local}"/usr/lib32/*.so* "${dir_tmp_local}/bundle-libs/usr/lib/box64-i386-linux-gnu"
+# generate the bundle packages archive
+tar -C "${dir_tmp}"/bundle-pkgs -czvf "${current_dir}"/box64-bundle-x86-pkgs.tar.gz .
 
-# Create "<LIBRARY_FILE>.so" symlinks.
-for dir_lib in \
-  "${dir_tmp_local}/bundle-libs/usr/lib/box64-i386-linux-gnu" \
-  "${dir_tmp_local}/bundle-libs/usr/lib/box64-x86_64-linux-gnu"
-    # If two or more libraries of the same name exist, this will symlink the oldest version.
-    # Pipe this into a reverse sort `| sort -r` to symlink the newest version.
-    do for lib in $(ls -1 "${dir_lib}")
-        # Example output: libbluetooth.so
-        do lib_base="$(echo "${lib}" | cut -d. -f1,2)"
-        if ! ls "${dir_lib}/${lib_base}" 2> /dev/null
-            then ln -s "${lib}" "${dir_lib}/${lib_base}"
-        fi
-    done
+# extract the packages
+cd "${dir_tmp}"/bundle-pkgs
+for file in *.deb *.eopkg *.rpm *.xbps; do
+    # handle the case of no files, e.g. xbps
+    [ -e "${dir_tmp}"/bundle-pkgs/"${file}" ] || break
+    # shellcheck disable=SC2016
+    extension=$(echo "${file}" | ${awk} -F'.' '{print$(NF)}')
+    mkdir -p "${dir_tmp}"/bundle-libs
+    cd "${dir_tmp}"/bundle-libs
+    case "${extension}" in
+        deb)
+            echo "I: DEB (Debian) package detected (${file})"
+            ar x "${dir_tmp}"/bundle-pkgs/"${file}"
+            tar -xf data.tar*
+            ;;
+        eopkg)
+            echo "I: EOPKG (Solus Linux) package detected (${file})"
+            ${unzip} -o "${dir_tmp}"/bundle-pkgs/"${file}"
+            tar -xf install.tar.xz
+            ;;
+        rpm)
+            echo "I: RPM (Fedora) detected (${file})"
+            ${rpm2cpio} "${dir_tmp}"/bundle-pkgs/"${file}" | ${cpio} -idmv
+            ;;
+        xbps)
+            echo "I: XBPS (Void Linux) package detected (${file})"
+            tar -xf "${dir_tmp}"/bundle-pkgs/"${file}"
+            ;;
+    esac
 done
 
-# Remove libraries that cannot be emulated.
+# reorganize the files
+cd "${dir_tmp}"/bundle-libs
+mkdir -p "${dir_tmp}"/bundle-libs/box64-i386-linux-gnu
+mv lib/*.so* usr/lib/*.so* usr/lib/i386-linux-gnu/*.so* usr/lib32/*.so* \
+    "${dir_tmp}"/bundle-libs/box64-i386-linux-gnu
+mkdir -p "${dir_tmp}"/bundle-libs/box64-x86_64-linux-gnu
+mv lib64/*.so* usr/lib/x86_64-linux-gnu/*.so* usr/lib64/*.so* \
+    "${dir_tmp}"/bundle-libs/box64-x86_64-linux-gnu
+rm -f ./*.tar.* debian-binary files.xml metadata.xml
+rm -rf ./lib* etc run sbin usr var
+mkdir -p usr/lib
+mv box64-*-linux-gnu usr/lib
+
+# remove libraries that cannot be emulated
 # https://github.com/ptitSeb/box64/blob/v0.3.6/src/librarian/library.c#L433
-for lib in libc.so libpthread.so librt.so libGL.so libGL.so libX11.so \
-  libasound.so libdl.so libm.so libbsd.so libutil.so libresolv.so \
-  libXxf86vm.so libXinerama.so libXrandr.so libXext.so libXfixes.so libXcursor.so \
-  libXrender.so  libXft.so libXi.so libXss.so libXpm.so libXau.so libXdmcp.so \
-  libX11-xcb.so libxcb.so libxcb-xfixes.so libxcb-shape.so libxcb-shm.so libxcb-randr.so \
-  libxcb-image.so libxcb-keysyms.so libxcb-xtest.so libxcb-glx.so libxcb-dri2.so libxcb-dri3.so \
-  libXtst.so libXt.so libXcomposite.so libXdamage.so libXmu.so libxkbcommon.so \
-  libxkbcommon-x11.so libpulse-simple.so libpulse.so libvulkan.so libvulkan.so \
-  ld-linux-x86-64.so crashhandler.so libtcmalloc_minimal.so libtcmalloc_minimal.so libanl.so \
-  ld-linux.so ld-linux.so libthread_db.so
-    do find "${dir_tmp_local}" -name "${lib}"* -delete
+set -- libc libpthread librt libGL libX11 libasound libdl libm libbsd libutil \
+  libresolv libXxf86vm libXinerama libXrandr libXext libXfixes libXcursor \
+  libXrender libXft libXi libXss libXpm libXau libXdmcp libX11-xcb libxcb \
+  libxcb-xfixes libxcb-shape libxcb-shm libxcb-randr libxcb-image \
+  libxcb-keysyms libxcb-xtest libxcb-glx libxcb-dri2 libxcb-dri3 libXtst libXt \
+  libXcomposite libXdamage libXmu libxkbcommon libxkbcommon-x11 \
+  libpulse-simple libpulse libvulkan ld-linux-x86-64 crashhandler \
+  libtcmalloc_minimal libanl ld-linux libthread_db
+for file in "$@"; do
+    rm -f "${dir_tmp}"/bundle-libs/usr/lib/box64-*-linux-gnu/"${file}".so*
 done
 
-if find "${dir_tmp_local}"/bundle-libs/ -type l ! -exec test -e {} \; -print | grep bundle-libs
-    then echo "Broken symlinks found."
-    cd -
-    echo rm -r -f "${dir_tmp_local}"
+# check broken symlinks
+if find "${dir_tmp}"/bundle-libs -type l ! -exec test -e {} \; -print | grep bundle-libs; then
+    echo "E: Broken symlinks found"
     exit 1
 fi
 
-mv "${dir_tmp_local}"/*.deb "${dir_tmp_local}/bundle-pkgs/"
-mv "${dir_tmp_local}"/*.eopkg "${dir_tmp_local}/bundle-pkgs/"
-mv "${dir_tmp_local}"/*.rpm "${dir_tmp_local}/bundle-pkgs/"
-mv "${dir_tmp_local}"/*.xbps "${dir_tmp_local}/bundle-pkgs/"
-
-tar --directory "${dir_tmp_local}/bundle-libs" --create --file "${box64_dir}/box64-bundle-x86-libs.tar.gz" .
-tar --directory "${dir_tmp_local}/bundle-pkgs" --create --file "${box64_dir}/box64-bundle-x86-pkgs.tar.gz" .
+# create shared libraries (.so) symlinks
+# if multiple libraries of the same name exist, it will symlink the oldest version
+# e.g. libcurl-gnutls soname with versioned symbols (CURL_GNUTLS_3, CURL_GNUTLS_4)
+# libcurl-gnutls.so -> libcurl-gnutls.so.3
+# libcurl-gnutls.so.3 -> libcurl-gnutls.so.4
+# libcurl-gnutls.so.4 -> libcurl-gnutls.so.4.7.0
+# libcurl-gnutls.so.4.7.0
+for dir_lib in "${dir_tmp}"/bundle-libs/usr/lib/box64-*-linux-gnu; do
+    cd "${dir_lib}"
+    for lib in lib*.so*; do
+        lib_base="$(echo "${lib}" | awk -F'.' '{print $1"."$2}')"
+        if ! ls "${dir_lib}/${lib_base}" 2> /dev/null; then
+            ln -s "${lib}" "${lib_base}"
+        fi
+    done
+done
 
-# Clean up.
-cd -
-rm -r -f "${dir_tmp_local}"
+# generate the bundle libraries archive
+tar -C "${dir_tmp}"/bundle-libs -czvf "${current_dir}"/box64-bundle-x86-libs.tar.gz .