sccn / liblsl

C++ lsl library for multi-modal time-synched data transmission over the local network
Other
119 stars 70 forks source link

Ubuntu 24.04 LTS noble build #223

Open mscheltienne opened 2 months ago

mscheltienne commented 2 months ago

It would be nice to also get 24.04 LTS build :) The runner ubuntu-24.04 is in beta.

larsoner commented 3 weeks ago

Is there a reason there are different .deb files for different versions of Linux? In theory I think you could use something like cibuildwheel to compile against sufficiently old dependencies that you end up compatible with all non-EOL Linux distributions. This approach is being used in https://github.com/mne-tools/mne-lsl/pull/351 to bundle liblsl with MNE-LSL and could probably be adapted here without too much work. (I've previously repurposed cibuildwheel to make application binaries for openmeeg and it wasn't too bad!)

I think this approach would work for all the variants you currently release for, plus other stuff like ppc64le and macOS arm64 without much work hopefully.

tstenner commented 2 weeks ago

Some older ubuntu versions didn't have a recent pugixml version, so these were built against a vendored pugixml. Some newer compiler versions have a mature C++ stdlib so we don't have to fall back to Boost.

mscheltienne commented 1 week ago

Comparing the build on the manylinux image and the version on the release page:

Release page

mscheltienne@D-1027100163:~/git/mscheltienne/mne-lsl/src/mne_lsl/lsl/lib$ ldd /lib/liblsl.so
        linux-vdso.so.1 (0x00007ffd7c372000)
        libpugixml.so.1 => /lib/x86_64-linux-gnu/libpugixml.so.1 (0x00007f9da756d000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9da7200000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9da7484000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9da71d2000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9da6e00000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f9da76a8000)

Build on manylinux

mscheltienne@D-1027100163:~/git/mscheltienne/mne-lsl/src/mne_lsl/lsl/lib$ ldd liblsl.so.1.16.2 
        linux-vdso.so.1 (0x00007fff14fa9000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x0000784f06e00000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000784f07088000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x0000784f06dd2000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000784f06a00000)
        /lib64/ld-linux-x86-64.so.2 (0x0000784f07290000)

libpugixml.so.1 => /lib/x86_64-linux-gnu/libpugixml.so.1 (0x00007f9da756d000) is entirely missing; and it works without binutils libpugixml-dev which seems to differ from:

mscheltienne@D-1027100163:~/Downloads$ dpkg --info liblsl-1.16.2-jammy_amd64.deb | grep Depends
 Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libpugixml1v5 (>= 1.6), libstdc++6 (>= 12)