@@ -148,7 +148,7 @@ function load_project_deps(
148148
149149 for (name:: String , uuid:: UUID ) in project. deps
150150 findfirst (pkg -> pkg. uuid == uuid, pkgs) === nothing || continue # do not duplicate packages
151- path, repo = get_path_repo (project, name)
151+ path, repo = get_path_repo (project, project_file, manifest_file, name)
152152 entry = manifest_info (manifest, uuid)
153153 push! (
154154 pkgs_direct, entry === nothing ?
@@ -197,7 +197,7 @@ function load_all_deps(
197197 pkgs = load_manifest_deps (env. manifest, pkgs; preserve = preserve)
198198 # Sources takes presedence over the manifest...
199199 for pkg in pkgs
200- path, repo = get_path_repo (env. project, pkg. name)
200+ path, repo = get_path_repo (env. project, env . project_file, env . manifest_file, pkg. name)
201201 if path != = nothing
202202 pkg. path = path
203203 end
@@ -363,7 +363,7 @@ function reset_all_compat!(proj::Project)
363363 return nothing
364364end
365365
366- function collect_project (pkg:: Union{PackageSpec, Nothing} , path:: String , julia_version)
366+ function collect_project (pkg:: Union{PackageSpec, Nothing} , path:: String , manifest_file :: String , julia_version)
367367 deps = PackageSpec[]
368368 weakdeps = Set {UUID} ()
369369 project_file = projectfile_path (path; strict = true )
@@ -373,9 +373,9 @@ function collect_project(pkg::Union{PackageSpec, Nothing}, path::String, julia_v
373373 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 " )
374374 end
375375 for (name, uuid) in project. deps
376- path , repo = get_path_repo (project, name)
376+ dep_path , repo = get_path_repo (project, project_file, manifest_file , name)
377377 vspec = get_compat (project, name)
378- push! (deps, PackageSpec (name = name, uuid = uuid, version = vspec, path = path , repo = repo))
378+ push! (deps, PackageSpec (name = name, uuid = uuid, version = vspec, path = dep_path , repo = repo))
379379 end
380380 for (name, uuid) in project. weakdeps
381381 vspec = get_compat (project, name)
@@ -439,15 +439,15 @@ function collect_fixed!(env::EnvCache, pkgs::Vector{PackageSpec}, names::Dict{UU
439439 weak_map = Dict {UUID, Set{UUID}} ()
440440
441441 uuid = Types. project_uuid (env)
442- deps, weakdeps = collect_project (env. pkg, dirname (env. project_file), julia_version)
442+ deps, weakdeps = collect_project (env. pkg, dirname (env. project_file), env . manifest_file, julia_version)
443443 deps_map[uuid] = deps
444444 weak_map[uuid] = weakdeps
445445 names[uuid] = env. pkg === nothing ? " project" : env. pkg. name
446446
447447 for (path, project) in env. workspace
448448 uuid = Types. project_uuid (project, path)
449449 pkg = project. name === nothing ? nothing : PackageSpec (name = project. name, uuid = uuid)
450- deps, weakdeps = collect_project (pkg, path, julia_version)
450+ deps, weakdeps = collect_project (pkg, path, env . manifest_file, julia_version)
451451 deps_map[Types. project_uuid (env)] = deps
452452 weak_map[Types. project_uuid (env)] = weakdeps
453453 names[uuid] = project. name === nothing ? " project" : project. name
@@ -485,7 +485,7 @@ function collect_fixed!(env::EnvCache, pkgs::Vector{PackageSpec}, names::Dict{UU
485485 end
486486 pkgerror (error_msg)
487487 end
488- deps, weakdeps = collect_project (pkg, path, julia_version)
488+ deps, weakdeps = collect_project (pkg, path, env . manifest_file, julia_version)
489489 deps_map[pkg. uuid] = deps
490490 weak_map[pkg. uuid] = weakdeps
491491 end
@@ -2081,7 +2081,7 @@ function up(
20812081 # TODO check all pkg.version == VersionSpec()
20822082 # set version constraints according to `level`
20832083 for pkg in pkgs
2084- source_path, source_repo = get_path_repo (ctx. env. project, pkg. name)
2084+ source_path, source_repo = get_path_repo (ctx. env. project, ctx . env . project_file, ctx . env . manifest_file, pkg. name)
20852085 entry = manifest_info (ctx. env. manifest, pkg. uuid)
20862086 new = up_load_versions! (ctx, pkg, entry, source_path, source_repo, level)
20872087 new && push! (new_git, pkg. uuid) # TODO put download + push! in utility function
@@ -2333,7 +2333,8 @@ end
23332333function abspath! (env:: EnvCache , project:: Project )
23342334 for (key, entry) in project. sources
23352335 if haskey (entry, " path" )
2336- entry[" path" ] = project_rel_path (env, entry[" path" ])
2336+ # Paths in project sources are project-relative, so join with project_file dir, not manifest_file dir
2337+ entry[" path" ] = normpath (joinpath (dirname (env. project_file), entry[" path" ]))
23372338 end
23382339 end
23392340 return project
0 commit comments