@@ -319,14 +319,14 @@ function reset_all_compat!(proj::Project)
319319 return nothing
320320end
321321
322- function collect_project (pkg:: Union{PackageSpec, Nothing} , path:: String )
322+ function collect_project (pkg:: Union{PackageSpec, Nothing} , path:: String , julia_version )
323323 deps = PackageSpec[]
324324 weakdeps = Set {UUID} ()
325325 project_file = projectfile_path (path; strict= true )
326326 project = project_file === nothing ? Project () : read_project (project_file)
327327 julia_compat = get_compat (project, " julia" )
328- if ! isnothing (julia_compat) && ! ( VERSION in julia_compat)
329- pkgerror (" julia version requirement from Project.toml's compat section not satisfied for package at ` $path ` " )
328+ if ! isnothing (julia_compat) && ! isnothing (julia_version) && ! (julia_version in julia_compat)
329+ pkgerror (" julia version requirement for package at ` $path ` not satisfied: compat entry \" julia = $( get_compat_str (project, " julia " )) \" does not include Julia version $julia_version " )
330330 end
331331 for (name, uuid) in project. deps
332332 path, repo = get_path_repo (project, name)
@@ -385,20 +385,20 @@ function collect_developed(env::EnvCache, pkgs::Vector{PackageSpec})
385385 return developed
386386end
387387
388- function collect_fixed! (env:: EnvCache , pkgs:: Vector{PackageSpec} , names:: Dict{UUID, String} )
388+ function collect_fixed! (env:: EnvCache , pkgs:: Vector{PackageSpec} , names:: Dict{UUID, String} , julia_version )
389389 deps_map = Dict {UUID,Vector{PackageSpec}} ()
390390 weak_map = Dict {UUID,Set{UUID}} ()
391391
392392 uuid = Types. project_uuid (env)
393- deps, weakdeps = collect_project (env. pkg, dirname (env. project_file))
393+ deps, weakdeps = collect_project (env. pkg, dirname (env. project_file), julia_version )
394394 deps_map[uuid] = deps
395395 weak_map[uuid] = weakdeps
396396 names[uuid] = env. pkg === nothing ? " project" : env. pkg. name
397397
398398 for (path, project) in env. workspace
399399 uuid = Types. project_uuid (project, path)
400400 pkg = project. name === nothing ? nothing : PackageSpec (name= project. name, uuid= uuid)
401- deps, weakdeps = collect_project (pkg, path)
401+ deps, weakdeps = collect_project (pkg, path, julia_version )
402402 deps_map[Types. project_uuid (env)] = deps
403403 weak_map[Types. project_uuid (env)] = weakdeps
404404 names[uuid] = project. name === nothing ? " project" : project. name
@@ -418,7 +418,7 @@ function collect_fixed!(env::EnvCache, pkgs::Vector{PackageSpec}, names::Dict{UU
418418 if ! isdir (path)
419419 pkgerror (" expected package $(err_rep (pkg)) to exist at path `$path `" )
420420 end
421- deps, weakdeps = collect_project (pkg, path)
421+ deps, weakdeps = collect_project (pkg, path, julia_version )
422422 deps_map[pkg. uuid] = deps
423423 weak_map[pkg. uuid] = weakdeps
424424 end
@@ -469,7 +469,7 @@ function resolve_versions!(env::EnvCache, registries::Vector{Registry.RegistryIn
469469 # compatibility
470470 if julia_version != = nothing
471471 # only set the manifest julia_version if ctx.julia_version is not nothing
472- env. manifest. julia_version = dropbuild (VERSION )
472+ env. manifest. julia_version = dropbuild (julia_version )
473473 v = intersect (julia_version, get_compat_workspace (env, " julia" ))
474474 if isempty (v)
475475 @warn " julia version requirement for project not satisfied" _module= nothing _file= nothing
@@ -493,7 +493,7 @@ function resolve_versions!(env::EnvCache, registries::Vector{Registry.RegistryIn
493493 end
494494 end
495495 # this also sets pkg.version for fixed packages
496- fixed = collect_fixed! (env, filter (! is_tracking_registry, pkgs), names)
496+ fixed = collect_fixed! (env, filter (! is_tracking_registry, pkgs), names, julia_version )
497497 # non fixed packages are `add`ed by version: their version is either restricted or free
498498 # fixed packages are `dev`ed or `add`ed by repo
499499 # at this point, fixed packages have a version and `deps`
0 commit comments