# \`\]add\`ing a package depending on an unregistered package

**URL:** <https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432>\
**Category:** General Usage\
**Tags:** pkg\
**Created:** [July 17, 2018, 11:48am UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432 "2018-07-17T11:48:39Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [July 17, 2018, 11:48am UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432/1 "2018-07-17T11:48:39Z")

</div>

I have a registered package [Preconditioners.jl](https://github.com/mohamed82008/Preconditioners.jl) which depends on an unregistered one [IncompleteSelectedInversion.jl](https://github.com/ettersi/IncompleteSelectedInversion.jl). And I want to have this dependency in a v0.7 compatible way.

Previously when I asked the same question a bit over one year ago [How to add unregistered packages to REQUIRE?](https://discourse.julialang.org/t/how-to-add-unregistered-packages-to-require/4737) I got the answer to either wait for `Pkg3` or put the installation instruction of the unregistered package into the `build.jl` file of the registered one. This works in v0.6 but not in v0.7. It downloaded the unregistered package in the `dev` folder since I used `Pkg.clone` in the build.jl file, but running `using Preconditioners` gives the following error, which shows that `Pkg3` doesn’t approve of this workaround, so what’s the alternative?

```julia
ERROR: LoadError: ArgumentError: Package Preconditioners does not have IncompleteSelectedInversion in its dependencies:
 - If you have Preconditioners checked out for development and have
   added IncompleteSelectedInversion 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 Preconditioners.

Stacktrace:
 [1] require(::Module, ::Symbol) at .\loading.jl:821
 [2] include at .\boot.jl:317 [inlined]
 [3] include_relative(::Module, ::String) at .\loading.jl:1034
 [4] macro expansion at .\logging.jl:312 [inlined]
 [5] _require(::Base.PkgId) at .\loading.jl:929
 [6] require(::Base.PkgId) at .\loading.jl:838
 [7] require(::Module, ::Symbol) at .\loading.jl:833
in expression starting at C:\Users\user\.julia\dev\Preconditioners\src\Preconditioners.jl:3

```

And of course `Pkg.resolve()` doesn’t help.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [July 17, 2018, 12:12pm UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432/2 "2018-07-17T12:12:36Z")

</div>

What if you add `IncompleteSelectedInversion` to your REQUIRE file?

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [July 17, 2018, 12:16pm UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432/3 "2018-07-17T12:16:24Z")

</div>

> [@kristoffer.carlsson](#):
>
> `IncompleteSelectedInversion`

It is not registered though so it wouldn’t know what to download?

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [July 17, 2018, 12:26pm UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432/4 "2018-07-17T12:26:17Z")

</div>

If you make it available by e.g. `dev` or `add url` then it doesn’t have to download it.

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [July 17, 2018, 12:27pm UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432/5 "2018-07-17T12:27:11Z")

</div>

Sure but I mean for others who want to add Preconditioners, how can they get IncompleteSelectedInversion without a fuss? Oh you mean I keep the `Pkg.clone` and add it to REQUIRE?

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [July 17, 2018, 1:04pm UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432/6 "2018-07-17T13:04:39Z")

</div>

There should not be a registered package that depends on un unregistered one as far as I understand. Why don’t you register the other package too?

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [July 17, 2018, 1:06pm UTC](https://discourse.julialang.org/t/add-ing-a-package-depending-on-an-unregistered-package/12432/7 "2018-07-17T13:06:34Z")

</div>

Apparently the other one is unmaintained and MIT licensed so I am absorbing it into my package for ease of maintenance. The author didn’t want to register it.
