kiwix / kiwix-build

Kiwix & openZIM build engine
GNU General Public License v3.0
90 stars 43 forks source link

Build libzim on bionic #597

Closed mgautierfr closed 1 year ago

mgautierfr commented 1 year ago

Fix #595

mgautierfr commented 1 year ago

@rgaudin, is https://tmp.kiwix.org/ci/libzim_bionic/libzim_linux-x86_64-bionic-2023-04-19.tar.gz ok for you ?

rgaudin commented 1 year ago

@mgautierfr perfect 👍

rgaudin commented 1 year ago

For some reason there is no aarch64-bionic. Or the name hasn't been fixed

kelson42 commented 1 year ago

@mgautierfr @rgaudin All good here? Ready to merge?

rgaudin commented 1 year ago

Testing the aarch64-bionic from yesterday now

rgaudin commented 1 year ago

Unfortunately, this is not working. It looks like it's due to the gcc version used in the cross-compilation toolchain (10.3.0).

ldd -r -v libzim_linux-aarch64-bionic-2023-04-25/lib/aarch64-linux-gnu/libzim.so.8.1.0
libzim_linux-aarch64-bionic-2023-04-25/lib/aarch64-linux-gnu/libzim.so.8.1.0: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by libzim_linux-aarch64-bionic-2023-04-25/lib/aarch64-linux-gnu/libzim.so.8.1.0)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000005502b19000)
    librt.so.1 => /lib64/librt.so.1 (0x0000005502b4e000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x0000005502b6f000)
    libm.so.6 => /lib64/libm.so.6 (0x0000005502d13000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000005502dd4000)
    libc.so.6 => /lib64/libc.so.6 (0x0000005502e05000)
    /lib/ld-linux-aarch64.so.1 (0x0000005500000000)
undefined symbol: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.26   (libzim_linux-aarch64-bionic-2023-04-25/lib/aarch64-linux-gnu/libzim.so.8.1.0)
undefined symbol: _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.26  (libzim_linux-aarch64-bionic-2023-04-25/lib/aarch64-linux-gnu/libzim.so.8.1.0)

    Version information:
    libzim_linux-aarch64-bionic-2023-04-25/lib/aarch64-linux-gnu/libzim.so.8.1.0:
        libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
        librt.so.1 (GLIBC_2.17) => /lib64/librt.so.1
        libpthread.so.0 (GLIBC_2.17) => /lib64/libpthread.so.0
        libm.so.6 (GLIBC_2.17) => /lib64/libm.so.6
        libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
        libstdc++.so.6 (GLIBCXX_3.4.20) => /lib64/libstdc++.so.6
        libstdc++.so.6 (CXXABI_1.3.8) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.18) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.9) => /lib64/libstdc++.so.6
        libstdc++.so.6 (CXXABI_1.3.9) => /lib64/libstdc++.so.6
        libstdc++.so.6 (CXXABI_1.3.11) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.26) => not found
        libstdc++.so.6 (CXXABI_1.3) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.11) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.14) => /lib64/libstdc++.so.6
        libstdc++.so.6 (CXXABI_1.3.5) => /lib64/libstdc++.so.6
        libstdc++.so.6 (CXXABI_1.3.3) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.22) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.15) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.19) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4.21) => /lib64/libstdc++.so.6
        libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
    /lib64/libpthread.so.0:
        ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
        ld-linux-aarch64.so.1 (GLIBC_PRIVATE) => /lib/ld-linux-aarch64.so.1
        libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
        libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
    /lib64/librt.so.1:
        ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
        ld-linux-aarch64.so.1 (GLIBC_PRIVATE) => /lib/ld-linux-aarch64.so.1
        libpthread.so.0 (GLIBC_PRIVATE) => /lib64/libpthread.so.0
        libpthread.so.0 (GLIBC_2.17) => /lib64/libpthread.so.0
        libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
        libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
    /lib64/libstdc++.so.6:
        libm.so.6 (GLIBC_2.17) => /lib64/libm.so.6
        ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
        libgcc_s.so.1 (GCC_4.2.0) => /lib64/libgcc_s.so.1
        libgcc_s.so.1 (GCC_3.3) => /lib64/libgcc_s.so.1
        libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
        libc.so.6 (GLIBC_2.18) => /lib64/libc.so.6
        libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
    /lib64/libm.so.6:
        ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
        libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
        libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
    /lib64/libgcc_s.so.1:
        libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
    /lib64/libc.so.6:
        ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
        ld-linux-aarch64.so.1 (GLIBC_PRIVATE) => /lib/ld-linux-aarch64.so.1
# strings /usr/lib64/libstdc++.so.6.0.25 |grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH
GA+GLIBCXX_ASSERTIONS

@mgautierfr could an earlier version of gcc work? I see a few other options but I don't know what kiwix-build needs and looking at this table it seems like we'd need to go back as far as GCC 8.1.0 to match GLIBCXX_3.4.25.

That would require us to use 6.3.0. Is that usable/realistic?

mgautierfr commented 1 year ago

That would require us to use 6.3.0. Is that usable/realistic?

Should be good. I will test.

mgautierfr commented 1 year ago

@rgaudin can you try the new aarch64-bionic ?

rgaudin commented 1 year ago

@rgaudin can you try the new aarch64-bionic ?

Works fine 👍

kelson42 commented 1 year ago

@rgaudin So you approve and we can merge?

rgaudin commented 1 year ago

The Draft to non-draft didn't trigger a notification 🤷‍♂️