Problem with Julia1.12 sources section in Project.toml

I’m trying to make use of the new sources section of Project.toml provided in Julia 1.12.

This is in my project https://github.com/MarkNahabedian/PanelCutting.jl.

The only mention of WebScrapingTools is in

[sources]
NahaXMLUtils = {url = "https://github.com/MarkNahabedian/NahaXMLUtils.jl"}
WebScrapingTools = {url = "https://github.com/MarkNahabedian/WebScrapingTools.jl"}

When I start JUlia and use PanelCutting II get an error:

julia
# Long Julia startup banner elided, except for
# Version 1.12.1 (2025-10-17)

┌ Warning: Terminal not fully functional
└ @ Base client.jl:463
julia> using Pkg
using Pkg

julia> Pkg.add(url="https://github.com/MarkNahabedian/PanelCutting.jl")
Pkg.add(url="https://github.com/MarkNahabedian/PanelCutting.jl")
    Updating git-repo `https://github.com/MarkNahabedian/PanelCutting.jl`
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package WebScrapingTools [8afffa6a]:
 WebScrapingTools [8afffa6a] log:
 ├─WebScrapingTools [8afffa6a] has no known versions!
 └─restricted to versions 1 by PanelCutting [c1372bff] — no versions left
   └─PanelCutting [c1372bff] log:
     ├─possible versions are: 0.1.0 or uninstalled
     └─PanelCutting [c1372bff] is fixed to version 0.1.0
Stacktrace:
  [1] check_constraints(graph::Pkg.Resolve.Graph)
    @ Pkg.Resolve ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Resolve/graphtype.jl:1046
  [2] Pkg.Resolve.Graph(compat::Dict{…}, compat_weak::Dict{…}, uuid_to_name::Dict{…}, reqs::Dict{…}, fixed::Dict{…}, verbose::Bool, julia_version::VersionNumber)
    @ Pkg.Resolve ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Resolve/graphtype.jl:350
  [3] deps_graph(env::Pkg.Types.EnvCache, registries::Vector{…}, uuid_to_name::Dict{…}, reqs::Dict{…}, fixed::Dict{…}, julia_version::VersionNumber, installed_only::Bool)
    @ Pkg.Operations ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:705
  [4] resolve_versions!(env::Pkg.Types.EnvCache, registries::Vector{…}, pkgs::Vector{…}, julia_version::VersionNumber, installed_only::Bool)
    @ Pkg.Operations ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:525
  [5] targeted_resolve
    @ ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1669 [inlined]
  [6] tiered_resolve(env::Pkg.Types.EnvCache, registries::Vector{…}, pkgs::Vector{…}, julia_version::VersionNumber, try_all_installed::Bool)
    @ Pkg.Operations ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1658
  [7] _resolve(io::IOContext{…}, env::Pkg.Types.EnvCache, registries::Vector{…}, pkgs::Vector{…}, preserve::PreserveLevel, julia_version::VersionNumber)
    @ Pkg.Operations ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1679
  [8] add(ctx::Pkg.Types.Context, pkgs::Vector{…}, new_git::Set{…}; allow_autoprecomp::Bool, preserve::PreserveLevel, platform::Base.BinaryPlatforms.Platform, target::Symbol)
    @ Pkg.Operations ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1712
  [9] add
    @ ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1685 [inlined]
 [10] add(ctx::Pkg.Types.Context, pkgs::Vector{…}; preserve::PreserveLevel, platform::Base.BinaryPlatforms.Platform, target::Symbol, allow_autoprecomp::Bool, kwargs::@Kwargs{…})
    @ Pkg.API ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/API.jl:313
 [11] add(pkgs::Vector{PackageSpec}; io::IOContext{IO}, kwargs::@Kwargs{})
    @ Pkg.API ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/API.jl:164
 [12] add(pkgs::Vector{PackageSpec})
    @ Pkg.API ~/.julia/juliaup/julia-1.12.1+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Pkg/src/API.jl:153
 [13] add(; name::Nothing, uuid::Nothing, version::Nothing, url::String, rev::Nothing, path::Nothing, mode::PackageMode, subdir::Nothing, kwargs::@Kwargs{})
    @ Pkg.API ./array.jl:0
 [14] top-level scope
    @ none:1
Some type information was truncated. Use `show(err)` to see complete types.

I don’t understand why I’m getting this error. WebScrapingTools is not used by PanelCutting.jl. It is only used by a supackage in src/supplier_fetch/. Why is its version compatibility being checked here?

How do I work around this?

Thanks.

I just ran into this problem too. Here is the last paragraph of the v1.12.0 Pkg documentation,

Note that this information is only used when this environment is active, i.e. it is not used if this project is a package that is being used as a dependency

I think this means don’t use a Julia project as a dependency if the packages listed under its [sources] section are unregistered in any of the registered the user’s Julia installation can see. Julia ships with the General registry, but you can add custom ones.

I had a lot of success with LocalRegistry.jl to create, add to my Julia installation, and manage multiple custom registries that host my packages that I don’t want to host on General. These packages can be private or public.

I think the [sources] feature is good for Julia projects that are intended to be user-facing applications, and other applications are not expected to use the project as a dependency.