Help registering a package with external/unregistered dependencies

I wanted to register GitHub - iuliancioarca/GenericInstruments.jl: Bundles similar functionalities of instruments under a single generic object: power supplies, arbitrary waveform generators, etc. and I encountered a few problems:

  1. My package relies on the unregistered GitHub - BBN-Q/Instruments.jl: Instrument control in Julia. I managed to fix this somehow by explicitly installing it with: Pkg.add(PackageSpec(url="https://github.com/BBN-Q/Instruments.jl.git")) (although I’m sure this is not the way to go since there is no way to enforce version compatibility).
  2. The Instruments.jl package needs NIVISA libraries installed, which, as far as I know, can only be installed via the NI installer. On a local session, the user can, of course, install these libraries before installing Instruments.jl and everything works fine, but on Travis or Appveyor I cannot do this, so my build fails with the following error:
    Error: Error building Instruments:
ERROR: LoadError: None of the selected providers can install dependency visa.
Use BinDeps.debug(package_name) to see available providers

I could use my own fork of the repo, bypassing the BinDeps altogether and finding a way to expose the path to those those libraries, but it’s a hacky solution and I also don’t think it would be fair for the developers of Instruments.jl.

Any suggestion is welcome.

1 Like

Have you thought about the option not to register?
Building something on an unregistered and only install-able with external resources (and afaics only on Windows) is not recommended.
You could consult the BBN-Q group, if they are willing to use BinaryProvider and repack the library.

Use your own registry. LocalRegistry.jl makes maintenance reasonably easy, and users easily can add it using ] registry add . I think you even can register that Instruments package there.