[cmake-developers] Unexpected bad status for file DOWNLOAD for http://*.xz URLs

Alan W. Irwin irwin at beluga.phys.uvic.ca
Thu Jul 11 20:47:55 EDT 2013


On 2013-07-11 16:30-0700 Alan W. Irwin wrote:

> These commands
>
> file(DOWNLOAD
> "http://download.gnome.org/sources/glib/2.32/glib-2.32.1.tar.xz"
> "/home/software/plplot_svn/HEAD/plplot_allura/cmake/build_projects/cmake_downloaded_glib-2.32.1.tar.xz"
> SHOW_PROGRESS STATUS status)
> message(STATUS "Download status = ${status}")
>
> instantly give me the following results:
>
> -- [download 0% complete]
> -- Download status = 1;"unsupported protocol"

I looked through the CMake source code for "unsupported protocol" and
it appears in Utilities/cmcurl/strerror.c as a result of error having
the value CURLE_UNSUPPORTED_PROTOCOL (i.e., 1).  But then I looked
further in the code for CURLE_UNSUPPORTED_PROTOCOL, and the places
where it is set (e.g., http protocol not supported) do not seem
relevant.  So I suspect something is getting clobbered so that
an error of 1 is being returned somewhere when that should not
be happening.  I did not find anything relevant to "tar.xz" within
the CMake source code.

I also did another experiment using the file protocol rather than the
http protocol.

software at raven> pwd
/home/software/plplot_svn/HEAD/plplot_allura/cmake/build_projects

software at raven> cat test.cmake
file(DOWNLOAD
"file:///home/software/plplot_svn/HEAD/plplot_allura/cmake/build_projects/glib-2.32.1.tar.xz"
"/home/software/plplot_svn/HEAD/plplot_allura/cmake/build_projects/cmake_downloaded_glib-2.32.1.tar.xz"
SHOW_PROGRESS STATUS status)
message(STATUS "Download status = ${status}")

software at raven> cmake -P test.cmake
-- [download 0% complete]
-- [download 100% complete]
-- Download status = 0;"no error"

software at raven> diff glib-2.32.1.tar.xz cmake_downloaded_glib-2.32.1.tar.xz

with no response indicating the two files are identical.  Thus, the
file protocol works fine for curl with *.tar.xz files, but not the
http protocol.

One further obvious experiment is to try curl (version 7.26.0-1+wheezy3) rather
than an indirect version of curl via cmake.

software at raven> curl -o curl-glib-2.32.1.tar.xz -L http://download.gnome.org/sources/glib/2.32/glib-2.32.1.tar.xz
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
   0   332    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
   0   360    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 5994k  100 5994k    0     0   536k      0  0:00:11  0:00:11 --:--:--  941k

curl (if you use the -L option) deals fine with the http redirects
that wget also dealt with, and the resulting download was identical to
what I had downloaded via wget before.  So whatever the problem is, it
appears to be in the curl part of CMake but not in standalone
curl-7.26.0-1+wheezy3.

So I hope someone else will also try experiments to see if they can
discover _any_ http://*.tar.xz URL that can be downloaded by file(DOWNLOAD...).

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________



More information about the cmake-developers mailing list