<p dir="auto">I just accepted a pull required for the <code class="notranslate">Hwloc</code> package to make it compatible with Julia 0.6. I now want to tag a new minor release, so that people can depend on this change. Unfortunately, I see error messages when trying to publish this tag. I tried this both from a 0.6 and 0.5 Julia release.</p>
<p dir="auto">I did this:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Pkg.update()
using PkgDev
PkgDev.tag(&quot;Hwloc&quot;, :minor)
PkgDev.publish()"><pre class="notranslate"><code class="notranslate">Pkg.update()
using PkgDev
PkgDev.tag("Hwloc", :minor)
PkgDev.publish()
</code></pre></div>
<p dir="auto">The last step -- <code class="notranslate">Pkg.publish()</code> -- fails (see below). The first step -- <code class="notranslate">Pkg.update()</code> -- probably reported some warning or errors at some point. It often does this, since I have some experimental packages. When I run <code class="notranslate">Pkg.update()</code> or <code class="notranslate">Pkg.status()</code> now, there are no errors or warnings reported.</p>
<p dir="auto">This is the error I see (with Julia 0.5):</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; PkgDev.publish()
INFO: Validating METADATA
ERROR: packages with unsatisfiable requirements found:
    EEG v0.0.3 – no valid versions exist for package ImageFiltering

 in check_metadata(::Set{String}) at /Users/eschnett/.julia/v0.5/PkgDev/src/entry.jl:301
 in (::PkgDev.Entry.##4#9{String,Dict{String,Array{String,1}},String})(::Base.LibGit2.GitRepo) at /Users/eschnett/.julia/v0.5/PkgDev/src/entry.jl:93
 in with(::PkgDev.Entry.##4#9{String,Dict{String,Array{String,1}},String}, ::Base.LibGit2.GitRepo) at ./libgit2/types.jl:701
 in publish(::String, ::String) at /Users/eschnett/.julia/v0.5/PkgDev/src/entry.jl:64
 in publish() at /Users/eschnett/.julia/v0.5/PkgDev/src/PkgDev.jl:70"><pre class="notranslate"><code class="notranslate">julia&gt; PkgDev.publish()
INFO: Validating METADATA
ERROR: packages with unsatisfiable requirements found:
    EEG v0.0.3 – no valid versions exist for package ImageFiltering

 in check_metadata(::Set{String}) at /Users/eschnett/.julia/v0.5/PkgDev/src/entry.jl:301
 in (::PkgDev.Entry.##4#9{String,Dict{String,Array{String,1}},String})(::Base.LibGit2.GitRepo) at /Users/eschnett/.julia/v0.5/PkgDev/src/entry.jl:93
 in with(::PkgDev.Entry.##4#9{String,Dict{String,Array{String,1}},String}, ::Base.LibGit2.GitRepo) at ./libgit2/types.jl:701
 in publish(::String, ::String) at /Users/eschnett/.julia/v0.5/PkgDev/src/entry.jl:64
 in publish() at /Users/eschnett/.julia/v0.5/PkgDev/src/PkgDev.jl:70
</code></pre></div>
<p dir="auto">I have several suggestions here.</p>
<ol dir="auto">
<li>
<p dir="auto">I just want to publish a new tag. This should not require me to debug my full package layout. It's easy to get stuck in the woods with packages, in particular if you develop packages yourself or look at the head of other packages. It's at the same time very difficult to work around this since Julia packages are installed globally, i.e. I can't simply install a new, separate version of Julia where I would only check out, tag, and publish <code class="notranslate">Hwloc</code>. (These guys <a href="http://haskellstack.org" rel="nofollow">http://haskellstack.org</a> solved the same problem for Haskell.)</p>
</li>
<li>
<p dir="auto">The error message is a mouthful. The package manager should be mature enough to give a clear error message and not dump a full stack trace from <code class="notranslate">libgit2</code> onto me; I don't care how <code class="notranslate">PkgDev</code> communicates with git servers.</p>
</li>
<li>
<p dir="auto">Both <code class="notranslate">Pkg.status()</code> or <code class="notranslate">Pkg.update()</code> should complain as well. Since they don't it's difficult to debug this.</p>
</li>
<li>
<p dir="auto">When I re-tried a few days later, <code class="notranslate">Pkg.update()</code> got stuck even worse since there were other upstream changes to <code class="notranslate">METADATA</code> in the mean time, and Julia told me to "resolve things manually". I did (<code class="notranslate">git checkout -- .</code> to overwrite all local uncommitted changes that shouldn't have been there in the first place, and then a <code class="notranslate">git pull --rebase</code>). Unfortunately, this just brought me back to the original problem.</p>
</li>
<li>
<p dir="auto">There are no instructions for working around this. I would be happy to issue some manual git commands if Julia is getting too confused -- a pointer to instructions would be much appreciated. This page <a href="https://docs.julialang.org/en/stable/manual/packages/#package-development" rel="nofollow">https://docs.julialang.org/en/stable/manual/packages/#package-development</a> is already quite details; I think it should also list the errors people can receive, and how to resolve or work around them. In this case, pointing to instructions for manually cloning, pushing, and creating a pull request would be good. I think these instructions would be similar to those for package development proper, including creating a branch after the fact.</p>
</li>
</ol>
<p dir="auto">Ref <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="221519066" data-permission-text="Title is private" data-url="https://github.com/JuliaLang/METADATA.jl/issues/8838" data-hovercard-type="pull_request" data-hovercard-url="/JuliaLang/METADATA.jl/pull/8838/hovercard" href="https://github.com/JuliaLang/METADATA.jl/pull/8838">JuliaLang/METADATA.jl#8838</a></p>