Pkg: adding private packages with private dependencies

I have several packages hosted on an internal Gitlab server. I have kept public dependencies in REQUIRE files for these packages, but I have relied on doing Pkg.clone(...) manually to add the internal dependencies (for v0.6 and back).

In v0.7, I can do ]add <internal package url>, which seems to install the dependencies listed in REQUIRE. Then when I try to test the package, I get errors about the internal dependencies (Package Arc does not have UKF in its dependencies ...).

I have tried ]add <internal dependency url>, but I get the same error message.

I have tried ]dev <internal package url>, then ]activate <path to internal package>, then ]add <internal dependency url>, which generates a Manifest.toml and a Project.toml, but Project.toml is apparently malformed, as I get

ERROR: expected a name entry in project file at C:\Users\cbinz\.julia\dev\Arc\Project.toml

What is the correct way to install an internal package, with dependencies, in v0.7?

Install the private dependencies first, then the private package that depends on them.

I tried this, but I still get

ERROR: LoadError: ArgumentError: Package Arc does not have UKF in its dependencies:
- If you have Arc checked out for development and have
  added UKF as a dependency but haven't updated your primary
  environment's manifest file, try Pkg.resolve().
- Otherwise you may need to report an issue with Arc

Does Arc have UFK in its dependencies (REQUIRE file)?

It does not, because I’m not even sure how that would work – at least, in the past, REQUIRE relied on METADATA, and obviously my internally-developed package would not be there. And as far as I know, there is (was) not a way to add some custom URL to a REQUIRE entry.

In 0.7, 1.0 every dependency needs to be listed in REQUIRE / Project.toml. So add it there and try again.

Hmm, ok, I suppose that shouldn’t be surprising to me. Thanks.

Separately: when I tried deving the package and adding a dependency, the initial Project.toml contained only the [deps] section (no [name]), so an error gets thrown. Is this expected behavior?

A new problem: now when I try to update, I get ERROR: Git repository not found at 'UKF', because repo-url for UKF is just "UKF" in my Manifest.

How did you add UKF?

I did ]add git@<url...>/UKF.jl.git, however I may have also just tried ]add UKF in the Arc project when I was trying to figure this out.

Edit: I tried editing my Manifest directly and adding the URL, but I ran into this issue (I think).

I need this a well and even after reading through this thread I do not get it.
I have two Packages A.jl and B.jl. B.jl depends on A.jl. Both projects do not have a Manifest.toml but just a REQUIRE.

What exactly do I now need to do to make this work?

Adding things to REQUIRE seems to not work since REQUIRE requires the package to be registered. Should I add them to Manifest.toml? If yes how?

Just put A in B’s REQUIRE, and make sure you install B before A?

That seems to work but I needed a Pkg.resolve.

Is there a way that Package B can clone Package A? Can I specify the url in the REQUIRE file or somewhere else?

No, but you can maybe follow Store some location info for deps in Project.toml · Issue #492 · JuliaLang/Pkg.jl · GitHub

I used

if !isdir(Pkg.dir("A"))
  println("Installing A...")
  Pkg.clone("https://github.com/.../A")
end

In Julia 0.6 but this does not work anymore.