BinDeps for an executable

I need to include an executable in my package (in my case it’s exiftool). I managed to get BinDeps.jl to download it and extract it to a src folder in my deps folder. But it’s riddled with problems (doesn’t work in Windows, works in unix only if I wrap stuff in try blocks). Here is my attempt. Could some good soul please take a look and show me how to accomplish this?
Ultimately, I’d like for users of my package to be able to call on exiftool. I assume it’s just easier to download and extract the executable instead of installing it on their system.

Thanks in advance!

BinDeps is mostly designed for handling libraries. There have been some attempts and work in progress pull requests on adding functionality to depend on executables, but not finished.

If you compile exiftool, does it happen to create any shared libraries along the way that you could at least get BinDeps to look at to tell whether or not it succeeded in compiling something?

Another option would be to use the low-level build steps (which automate things like downloading and unzipping files) from BinDeps without actually using the full dependency handling tools (which, as @tkelman says, are only designed for libraries).

I ran into the same problem when trying to require the cmake executable, and I ended up creating a simple package https://github.com/rdeits/CMakeWrapper.jl that handles the cmake download and compilation on all platforms using the low-level BinDeps tools: https://github.com/rdeits/CMakeWrapper.jl/blob/master/deps/build.jl#L64

I see. I have no idea how to programatically install something on windows (I only know apt-get in linux)…
I’ll look into your package, thanks!!!

Wah! that function you pointed to solved all my problems! Awesome. Thanks a bunch!

Hooray!

1 Like