I'm in the process of wrapping part of an important tool for Radio
Astronomers: CasaCore (relevant branch:
https://github.com/mweastwood/CasaCore.jl/tree/maketraviswork).
Unfortunately CasaCore is a C++ library, so I have first written a C
interface that needs to be compiled.
I am using BinDeps to download and compile CasaCore (if it is not already
present on the system), and then build the C wrapper. On my own machine,
this works perfectly (although I am cheating somewhat because CasaCore is
already built on my machine):
julia> Pkg.build("CasaCore")
INFO: Building CasaCore
INFO: Attempting to Create directory
/home/mweastwood/.julia/CasaCore/deps/downloads
INFO: Downloading file
ftp://ftp.atnf.csiro.au/pub/software/casacore/casacore-1.7.0.tar.bz2
% Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left
Speed
100 6019k 100 6019k 0 0 414k 0 0:00:14 0:00:14 --:--:--
925k
INFO: Done downloading file
ftp://ftp.atnf.csiro.au/pub/software/casacore/casacore-1.7.0.tar.bz2
INFO: Attempting to Create directory
/home/mweastwood/.julia/CasaCore/deps/src
INFO: Directory /home/mweastwood/.julia/CasaCore/deps/src already created
INFO: Attempting to Create directory /home/mweastwood/.julia/CasaCore/deps
INFO: Directory /home/mweastwood/.julia/CasaCore/deps already created
INFO: Attempting to Create directory
/home/mweastwood/.julia/CasaCore/deps/src/casacore-1.7.0
INFO: Attempting to Create directory
/home/mweastwood/.julia/CasaCore/deps/builds/casacorewrapper
INFO: Directory
/home/mweastwood/.julia/CasaCore/deps/builds/casacorewrapper already created
INFO: Changing Directory to
/home/mweastwood/.julia/CasaCore/deps/builds/casacorewrapper
g++ -c -Wall -Werror -fpic ../../src/casacorewrapper/containers.cpp
-I../../src/casacore-1.7.0
g++ -c -Wall -Werror -fpic ../../src/casacorewrapper/tableswrapper.cpp
-I../../src/casacore-1.7.0
g++ -c -Wall -Werror -fpic ../../src/casacorewrapper/measureswrapper.cpp
-I../../src/casacore-1.7.0
g++ -shared -o libcasacorewrapper.so containers.o tableswrapper.o
measureswrapper.o -L../../usr/lib -lcasa_tables -lcasa_measures
mkdir -p ../../usr/lib
cp libcasacorewrapper.so ../../usr/lib
julia> Pkg.test("CasaCore")
INFO: Testing CasaCore
INFO: CasaCore tests passed
INFO: No packages to install, update or remove
However, on Travis, I'm at my wits end trying to figure out why this
doesn't work. See the build log here (note, scroll right to the bottom,
CasaCore is a huge dependency that takes a while to compile):
https://travis-ci.org/mweastwood/CasaCore.jl/builds/43496822
Confusingly, both CasaCore and my C wrapper seem to build successfully.
Indeed, checking the deps/usr/lib directory on Travis indicates that all
the appropriate shared libraries exist, but BinDeps fails with
Provider BinDeps.BuildProcess failed to satisfy dependency
libcasacorewrapper
while loading /home/travis/.julia/v0.4/CasaCore/deps/build.jl, in
expression starting on line 61
I would really appreciate any guidance on how to solve this problem.
-- Michael