I am trying to use Travis in an Open Source project I started. I have some (very limited) experience with CI, but using C++.
My build.jl file is this: https://github.com/korowjev/ArgData.jl/blob/master/deps/build.jl
I do include HTTP in my requirements, but every time Travis tries to build I get:
ERROR: LoadError: ArgumentError: Package ArgData does not have HTTP in its dependencies
The more I googled, the more confused I got since most questions I found on Stack Overflow, for example, seem to be from people with more experience than me. So, here I ask if someone can point me to documentations/comments/anything that can help me understand and fix this (I assume) very simple mistake.
Thank you very much in advance.
This isn’t really a Travis CI problem, but more an issue with what you’re trying to do in your
build.jl file. The
build.jl file is intended to compile non-Julia dependencies for your project. If your package just depends on other Julia packages (as is the case here), then you should not have a
build.jl file at all.
Instead, you need to be use the
Project.toml file, which is what
Pkg uses to figure out what dependencies your project has. You can learn more about
Pkg here: https://julialang.github.io/Pkg.jl/v1/ . You list the Julia dependencies of your package in
Project.toml, and then users will automatically get those dependencies installed when they install your code.
While it is possible to edit
Project.toml files manually, I find that it’s much easier to let
Pkg do it for you. For example, let’s create a new
Project.toml and add some dependencies to it:
julia> using Pkg
# Create a new project in a new folder called ArgData
Generating project ArgData:
# Tell Pkg that we want to use that new project (and its associated Project.toml)
# Add a dependency to that project (this will update Project.toml)
# Add another dependency:
The result will be a file which looks like this:
$ cat Downloads/ArgData/Project.toml
name = "ArgData"
uuid = "0e2afcf6-a34f-11e9-3f29-13cfdb572c71"
authors = ["Robin Deits <firstname.lastname@example.org>"]
version = "0.1.0"
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
Project.toml should go in the top level of your project’s git repository, and then Travis CI (and anyone who installs your package) will automatically get the right set of dependencies.
Wow! Thank you very much for your detailed reply. I will look into Pkg documentation, yet this information is very clear and explanatory on its own. Thanks again!