Where does libcurl3 dependancy come from?


#1

Hi all, we build Waveform on an Ubuntu 16.04 machine and it seems that in doing this it builds in a dependancy to libcurl3.

Ubuntu 18.04, the new LTS only has libcurl4 which means Waveform no longer works on these or Debian 9 based systems.

Do any of the JUCE team know where this gets pulled in from? In the makefile all I can see is libcurl which I would have thought would just use whatever is installed on the system.
Is it perhaps from the webkit2gtk-4.0 gtk+-x11-3.0 dependancies?

If I remove them (we don’t use the web browser on Linux), will the app be happy to use libcurl4? Or is this simply coming from the fact that it’s being built on 16.04?

There was some discussion on KVR here, I’m just trying to ascertain where the problem is arising from before spending a lot of time fixing it and preparing new builds.

Thanks for any help.


#2

I think it’s coming from the fact that it is being built on 16.04 and has nothing to do with webkit2gtk-4.0 or gtk+-x11-3.0 as you are linking these in as shared libraries - the dependencies of these libraries don’t really bother you.

More specifically, it depends on which libcurl-dev package you install.

As you probably know there are always two types of packages for (most) shared libraries. A runtime package and a devel package.

The runtime package only contains the shared library which will include the api version suffix: i.e. libcurl4 etc.

The devel package contains all the headers you need, usually a static library variant, a pkg-config config file, and then a symlink (libcurl -> libcurl4) which will allow you to just link against library name without the version (-lcurl) - this is what JUCE does.

I think for libcurl you have the choice of different versions of libcurl-dev packages (libcurl3-dev, libcurl4-dev etc.), but I’m not sure if libcurl4-dev is already available in Ubuntu 16.04 - and if it is, if the runtime package will be installed by default in Ubuntu 16.04. If it isn’t your users will need to install it themselves (or you will need to add a dependency to your debian package).