Under Review
over 1 year ago

Upgrade SDK deps so modern Linux distros work.

I can't use the simulator and thus connectiq on Fedora 30.  I assume all modern distros are affected because libwebkitgtk-1.0.so.0 is way too old to be included or even available on current generation distributions.

Please update your deps or better yet compile the simulator statically so it doesn't require ancient libraries.

  • This work for me in Uubuntu 24.04 LTS

    Change the file sudo vim /etc/apt/sources.list.d/ubuntu.sources
    Add the follow line:
    `Types: deb
    URIs: http://br.archive.ubuntu.com/ubuntu/
    Suites: jammy noble-updates noble-backports
    Components: main restricted universe multiverse
    Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

    Types: deb
    URIs: http://security.ubuntu.com/ubuntu/
    Suites: jammy-security
    Components: main restricted universe multiverse
    Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg`

    then update the repositories with apt update and go to synaptic to search and install the correct version of libwebkit2gtk

  • This never got fixed, but symlinking another version of the library did work for me: unix.stackexchange.com/.../753924

  • Just use Docker, it's made for this.

  • I figured it out (I think).

    It appears that Garmin uses Ubuntu LTS releases to develop their SDK/SDK manager on. The problem seems to be libjpeg.so.8 which is found in the libjpeg-turbo8 package. On a Debian sid installation it seems that this is the only dependency I cannot resolve without the OS package manager:

    $ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Debian
    Description:	Debian GNU/Linux bookworm/sid
    Release:	unstable
    Codename:	sid
    
    $ for i in $(ldd $(file ~/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.1.3-2022-05-10-b3aaee541/bin/* | grep ELF | awk '{print $1}' | sed -e 's/:$//') | grep 'not found' | awk '{print $1}')
    
    do
    echo $i
    done
    libjpeg.so.8
    libjpeg.so.8

    https://github.com/waterkip/connectiq-sdk-docker/blob/master/Dockerfile

    If you have Ubuntu LTS running, you should, with the packages listed in the Dockerfile, get a working developer environment and should be good to go.

    On Debian Sid I'm facing issues with the SDK manager because it cannot find some shared objects, eventho everything seems to be installed.

    	libwebkitgtk-1.0.so.0 => not found
    	libsoup-2.4.so.1 => /usr/lib/x86_64-linux-gnu/libsoup-2.4.so.1 (0x00007fc73ed6c000)
    	libjavascriptcoregtk-1.0.so.0 => not found
    	libjpeg.so.8 => not found
    	
    	

    Even when the webkit and javascriptcore packages are installed:

    ii  libwebkit2gtk-4.0-37:amd64 2.36.3-1     amd64        Web content engine library for GTK
    ii  libwebkit2gtk-4.1-0:amd64  2.36.3-1     amd64        Web content engine library for GTK
    
    ii  libjavascriptcoregtk-4.0-18:amd64 2.36.3-1     amd64        JavaScript engine library from WebKitGTK
    ii  libjavascriptcoregtk-4.1-0:amd64  2.36.3-1     amd64        JavaScript engine library from WebKitGTK

    Compared to the Ubuntu docker image:

    ii  libwebkit2gtk-4.0-37:amd64 2.36.3-0ubuntu0.22.04.1 amd64        Web content engine library for GTK
    
    ii  libjavascriptcoregtk-4.0-18:amd64 2.36.3-0ubuntu0.22.04.1 amd64        JavaScript engine library from WebKitGTK

  • FWIW, I managed to find all the dependencies needed to get things running on Manjaro Linux (presumably would work for Arch and other Arch-derivatives too). I had to install the gtk2 and libpng12 packages, available from the main Arch repos, as well as the webkitgtk2 package from the Arch User Repository (AUR). That last one is what provided the elusive libwebkitgtk-1.0.so.0 library. Be warned though, webkitgtk2 took about 2.5 hours to build on my laptop (Core i7, about 4/5 years old).

    Of course, this doesn't change the main issue raised by this thread - the SDK manager needs to be updated so that it doesn't depend on this old and hard-to-find library!