SPY HILL Research
Spy-Hill.net

Poughkeepsie, New York [DIR] [UP]

cURL for BOINC

Topics
Linux
MacOS X
Windows

BOINC uses the cURL library for communication over the network between the client (on your computer) and the server (on the project web site). You need to have a recent version of the cURL library if you are going to build the BOINC client software from source code. You do not need cURL to build the server or to build BOINC applications.

Last modified: 3 October 2009
cURL is a tool for transfering files between computers using URL syntax. It supports most if not all of the protocols of web browsers (including HTTP, HTTPS, FTP, TELNET, LDAP, SSL) but without requiring the graphical interface of a browser. Instead, cURL can be used as a command line tool, or other programs may use the cURL functionality via a library (libcurl.a).

BOINC uses the cURL library for communication between the server and clients. So you need a new-enough version of this library to build the BOINC client. You do not need cURL to build the server software (the Apache web server takes care of that end of the interaction.) You do not need cURL to build BOINC applications.

The version of cURL required by BOINC sometimes changes, as new features are introduced into cURL, or at least as BOINC makes use of newer features in cURL. As of mid November 2006, BOINC requires cURL version 7.15.5 or better.

In general there are two ways to get cURL. You can install it via a package manager (such as yum, apt-get, rpm, or fink), assuming that the version which you obtain is recent enough, or you can build the library from source code.

The main page for cURL is at http://curl.haxx.se, with a link there for downloading from one of many mirror sites. Instructions for obtaining the source code via CVS may be found here, or from a link on the download page.

The notes below apply to particular platforms. Again, keep in mind that you really only need cURL if you are building the BOINC client software, and most people don't need to build the BOINC client software.

cURL on Linux

The easiest way to get curl is to have it installed as part of your Linux distribution, or to install it with a package manager. How this is done depends on your linux distribution. Red Hat and Fedora Linux users can use yum, and Debian users can use apt-get.

The following table lists the versions known to be a part of various Linux distributions, and whether or not they are sufficient to build BOINC.

Distribution curl version Works?
Fedora Core 3 7.12.13 NO
Fedora Core 4 7.13.1 NO
Fedora Core 5 7.15.5 YES
(Last updated 15 November 2006. Please send me new
or updated information for this table if you have it.)

If your Linux distribution does not have a version of curl which is recent enough then you will have to build it from source code. You can download the code as a tar-archive ("tarball") or you can obtain the code via CVS. Links for both and fairly complete instructions can be found a the main cURL site: http://curl.haxx.se/

Troubleshooting

Some things to watch out for or keep in mind:
OpenSSL
I once got stuck with what at first appeard to be a cURL problem which was tricky to figure out. The version of cURL included with Fedora Core 3 was not new enough for BOINC, so I downloaded and installed the latest version from source. The BOINC configure script detected the newer version, but complained that it was not usable. The problem turned out to be that it did not work with the installed version of OpenSSL (0.9.7e). Installing a newer version of OpenSSL (in this case 0.9.7i) solved that problem. It was not actually a direct problem with cURL, but the configure script did not give me the reason it failed.

Version Confusion
It's possible to get confused if you switch between installing cURL via a package manager and building from source. Say you had a valid version installed with your Linux distribution, but then the required version number was raised so that this version was not acceptable. So you get the latest source code and build and install, and things are fine. Then, later on, an even newer version is installed via your package manager. Then, some time after that, you find that you can't build BOINC even though the version installed via the package manager is acceptable. The problem is that the configuration script is finding the older (and now out of date) version which you built from source. (I've done this.) To get past this you can either remove the locally built version, or update it too.

cURL on MacOS X

MacOS X is Unix under the hood, so you can in principle obtain and build cURL from the source package from the command line, as described in the Linux section above. Curl does not come with MacOS X by default, even with the XCode developers package. As far as I know, you cannot get it via Fink (but I need to check that)

Note: Using CVS, I was not able to build cURL on Tiger (MacOS X 10.4) even though I had built and installed the latest versions of GNU autoconf and automake. The buildconf script failed with

buildconf: running autoconf
configure.ac:110: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
      If this token and others are legitimate, please use
      m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:113: error: possibly undefined macro: AC_PROG_LIBTOOL
The autoconf command failed
I'll try their recommendation and see if that fixes the problem, but I've not done so yet.

cURL on Windows

It appears that the BOINC team include the necessary parts of cURL in the source code distribution of BOINC for the Windows client. I don't have further details. Anything I learn further will be recorded here, but I don't often build the client on Windows, and in any case you don't need curl to build BOINC applications.
  Copyright © 2009 by Spy Hill Research http://www.Spy-Hill.net/myers/help/boinc/curl.html (served by Islay.spy-hill.com) Last modified: 03 October 2009