diff options
| author | Fathi Boudra <fathi.boudra@linaro.org> | 2025-07-30 20:20:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-30 20:20:41 +0200 |
| commit | ec0e1077c93a13e96ea4e7556102dacd5b1cb6f1 (patch) | |
| tree | 5ef0b4220c276e7c13ee45c1a7a78a9838f182c9 | |
| parent | 127d72da17a076beb564d0f21f14bbad5b27d755 (diff) | |
| download | box64-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.csv | 62 | ||||
| -rw-r--r-- | box64-bundle-x86-libs.sh | 213 |
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 . |