asumagic / kag-staging

Issue tracker for the KAG staging build
6 stars 0 forks source link

Handle the dependency hell on Linux #88

Closed asumagic closed 4 years ago

asumagic commented 4 years ago

Related to #85

We have a lot of dynamic dependencies:

        linux-vdso.so.1 (0x00007ffc10366000)
        libsteam_api.so => lib/libsteam_api.so (0x00007f881f7af000)
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007f881f6c8000)
        libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f881f6c2000)
        libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f881f5e4000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f881f510000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f881f3cf000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f881f3b8000)
        libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x00007f881f3b1000)
        libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f881f32b000)
        libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007f881f1c5000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f881efe8000)
        libm.so.6 => /usr/lib/libm.so.6 (0x00007f881eea3000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f881ee87000)
        libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f881ee65000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007f881ec9e000)
        /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f8820ac9000)
        libnghttp2.so.14 => /usr/lib/libnghttp2.so.14 (0x00007f881ec72000)
        libidn2.so.0 => /usr/lib/libidn2.so.0 (0x00007f881ec51000)
        libssh2.so.1 => /usr/lib/libssh2.so.1 (0x00007f881ec11000)
        libpsl.so.5 => /usr/lib/libpsl.so.5 (0x00007f881ebfc000)
        libssl.so.1.1 => /usr/lib/libssl.so.1.1 (0x00007f881eb6c000)
        libcrypto.so.1.1 => /usr/lib/libcrypto.so.1.1 (0x00007f881e88f000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007f881e83a000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007f881e754000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007f881e723000)
        libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007f881e71b000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00007f881e701000)
        librt.so.1 => /usr/lib/librt.so.1 (0x00007f881e6f6000)
        libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007f881e6e3000)
        libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f881e6a9000)
        libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f881e5da000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f881e5ae000)
        libGLdispatch.so.0 => /usr/lib/libGLdispatch.so.0 (0x00007f881e4f7000)
        libGLX.so.0 => /usr/lib/libGLX.so.0 (0x00007f881e4c4000)
        libunistring.so.2 => /usr/lib/libunistring.so.2 (0x00007f881e342000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007f881e333000)
        libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007f881e32a000)
        libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f881e310000)
        libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007f881e2eb000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f881e1c2000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f881e1bd000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f881e1b3000)
        libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f881e141000)

Cutting down irrelevant stuff that gives:

        libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007f881f6c8000) - dependency of KAG for downloads and auth (over HTTPS)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f881f510000) - dependency of CGUITTFont and the freetype integration for dear imgui
        libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007f881f1c5000) - dependency of KAG for windowing
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f881efe8000) - should this be shipped..??
        libnghttp2.so.14 => /usr/lib/libnghttp2.so.14 (0x00007f881ec72000) - dependency of ubuntu 18.04 libcurl
        libidn2.so.0 => /usr/lib/libidn2.so.0 (0x00007f881ec51000) - dependency of ubuntu 18.04 libcurl
        libssh2.so.1 => /usr/lib/libssh2.so.1 (0x00007f881ec11000) - dependency of ubuntu 18.04 libcurl
        libpsl.so.5 => /usr/lib/libpsl.so.5 (0x00007f881ebfc000) - dependency of ubuntu 18.04 libcurl
        libssl.so.1.1 => /usr/lib/libssl.so.1.1 (0x00007f881eb6c000) - dependency of ubuntu 18.04 libcurl
        libcrypto.so.1.1 => /usr/lib/libcrypto.so.1.1 (0x00007f881e88f000) - dependency of ubuntu 18.04 libcurl
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007f881e83a000) - dependency of ubuntu 18.04 libcurl
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007f881e754000) - dependency of ubuntu 18.04 libcurl
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007f881e723000) - dependency of ubuntu 18.04 libcurl
        libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007f881e71b000) - dependency of ubuntu 18.04 libcurl
        libz.so.1 => /usr/lib/libz.so.1 (0x00007f881e701000) - dependency of ubuntu 18.04 libcurl
        libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007f881e6e3000) - dependency of ubuntu 18.04 libcurl(?)
        libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f881e6a9000) - dependency of Irrlicht
        libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f881e5da000) - dependency of freetype(?)
        libunistring.so.2 => /usr/lib/libunistring.so.2 (0x00007f881e342000) - dependency of something?
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007f881e333000) - dependency of ubuntu 18.04 libcurl(?)
        libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007f881e32a000) - dependency of ubuntu 18.04 libcurl(?)
        libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f881e310000) - dependency of ubuntu 18.04 libcurl(?)
        libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007f881e2eb000) - dependency of freetype(?)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f881e1c2000)) - does this need to be shipped?
        libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f881e141000) - does this need to be shipped? what are regular expressions used for in kag?

Compiling against the system libcurl and shipping it seemed like a good idea at the time, but it seems like having to ship all the dependencies would be problematic to say the least.

asumagic commented 4 years ago

well, it works over centOS 8, ubuntu 18.04, and arch, which should be representative enough.