Samsung / netcoredbg

NetCoreDbg is a managed code debugger with MI interface for CoreCLR.
MIT License
743 stars 98 forks source link

Make download binaries work on a broader set of Linux distros #144

Open tmds opened 8 months ago

tmds commented 8 months ago

The distro that is used to build the release binaries limits on what distros these binaries can be used. Using an older distro enables the binaries to work across a broader set of distros.

To make their .NET linux-x64 binaries work across a large of distros, Microsoft pick an 'old' distro for each release. Up until .NET 6, CentOS 7 was used, .NET 8 uses Ubuntu 16.04, and .NET 9 will use Ubuntu 18.04.

It would be nice if netcoredbg release binaries work on a large set of the Microsoft supported distros.

To try some old distro builds, I compiled netcoredbg with the Ubuntu versions Microsoft is using. The build failed with a c++ error on Ubuntu 16.04. On Ubuntu 18.04, it passed without errors. The Ubuntu 18.04 works across more distros than the currently provided release downloads, including Ubuntu 18.04, RHEL 8, and Debian Buster.

gbalykov commented 8 months ago

The build failed with a c++ error on Ubuntu 16.04

Can you share build error and build command?

It would be nice if netcoredbg release binaries work on a large set of the Microsoft supported distros.

Thanks for feedback, we'll consider switch to older ubuntu. For now you can use build from source on ubuntu 18.04.

tmds commented 8 months ago

Can you share build error and build command?

In the ubuntu:16.04 container image I ran these commands:

apt-get update
apt-get install git curl cmake clang
cd
git clone https://github.com/Samsung/netcoredbg
cd netcoredbg/
mkdir build
cd build
CC=clang CXX=clang++ cmake ..
make

The compilation fails with:

[ 35%] Building CXX object src/CMakeFiles/netcoredbg.dir/debugger/callbacksqueue.cpp.o
In file included from /root/netcoredbg/src/debugger/callbacksqueue.cpp:9:
In file included from /root/netcoredbg/src/debugger/callbacksqueue.h:7:
In file included from /root/netcoredbg/src/debugger/manageddebugger.h:17:
/root/netcoredbg/src/utils/ioredirect.h:80:29: error: no matching constructor for initialization of 'IOSystem::StdIOSwap'
        IOSystem::StdIOSwap file_descriptors({
                            ^                ~
/root/netcoredbg/src/utils/iosystem.h:213:9: note: candidate constructor not viable: cannot convert initializer list argument to 'const StdFiles' (aka 'const
      tuple<const netcoredbg::IOSystemImpl<netcoredbg::IOSystemTraits<netcoredbg::UnixPlatformTag> >::FileHandle &, const
      netcoredbg::IOSystemImpl<netcoredbg::IOSystemTraits<netcoredbg::UnixPlatformTag> >::FileHandle &, const
      netcoredbg::IOSystemImpl<netcoredbg::IOSystemTraits<netcoredbg::UnixPlatformTag> >::FileHandle &>')
        StdIOSwap(const StdFiles &files) : ioswap(files) {}
        ^
/root/netcoredbg/src/utils/iosystem.h:215:9: note: candidate constructor not viable: cannot convert initializer list argument to 'const
      netcoredbg::IOSystemImpl<netcoredbg::IOSystemTraits<netcoredbg::UnixPlatformTag> >::StdIOSwap'
        StdIOSwap(const StdIOSwap&) = delete;
        ^
1 error generated.
src/CMakeFiles/netcoredbg.dir/build.make:270: recipe for target 'src/CMakeFiles/netcoredbg.dir/debugger/callbacksqueue.cpp.o' failed
make[2]: *** [src/CMakeFiles/netcoredbg.dir/debugger/callbacksqueue.cpp.o] Error 1
CMakeFiles/Makefile2:186: recipe for target 'src/CMakeFiles/netcoredbg.dir/all' failed
make[1]: *** [src/CMakeFiles/netcoredbg.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2