From 3b7bf479568790a8b04772a36c1b3e712fed4579 Mon Sep 17 00:00:00 2001 From: Renato Maia Date: Sun, 27 Apr 2025 17:03:33 -0300 Subject: feat: add build vars. for rockspecs with the dir. of its deps. Rockspecs can access the directory of its dependencies using variables in the format 'foo_ROCKDIR' where 'foo' is the name of a dependency. This is used to be able to access files of the rock like 'conf', 'docs' and more. --- src/luarocks/deps.lua | 9 ++++++--- src/luarocks/deps.tl | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua index 19cf6936..5802601e 100644 --- a/src/luarocks/deps.lua +++ b/src/luarocks/deps.lua @@ -329,9 +329,12 @@ function deps.fulfill_dependencies(rockspec, depskey, deps_mode, verify, deplock util.printout(("%s %s depends on %s (%s)"):format( name, version, tostring(depq), (rock_status(depq, get_versions)))) - local okfulfill, found_or_err, _ = deps.fulfill_dependency(depq, deps_mode, rocks_provided, verify, depskey) + local okfulfill, version_or_err, tree = deps.fulfill_dependency(depq, deps_mode, rocks_provided, verify, depskey) if okfulfill then - deplocks.add(depskey, depq.name, found_or_err) + deplocks.add(depskey, depq.name, version_or_err) + if tree and rockspec:format_is_at_least("3.1") then + rockspec.variables[depq.name:upper() .. "_ROCKDIR"] = path.install_dir(depq.name, version_or_err, tree) + end else if depq.constraints and depq.constraints[1] and depq.constraints[1].no_upgrade then util.printerr("This version of " .. name .. " is designed for use with") @@ -341,7 +344,7 @@ function deps.fulfill_dependencies(rockspec, depskey, deps_mode, verify, deplock util.printerr("or look for a suitable version of " .. name .. " with") util.printerr(" luarocks search " .. name) end - return nil, found_or_err + return nil, version_or_err end end diff --git a/src/luarocks/deps.tl b/src/luarocks/deps.tl index f6a6642f..d127288e 100644 --- a/src/luarocks/deps.tl +++ b/src/luarocks/deps.tl @@ -329,9 +329,12 @@ function deps.fulfill_dependencies(rockspec: Rockspec, depskey: DepsKey, deps_mo util.printout(("%s %s depends on %s (%s)"):format( name, version, tostring(depq), (rock_status(depq, get_versions)))) - local okfulfill, found_or_err, _ = deps.fulfill_dependency(depq, deps_mode, rocks_provided, verify, depskey) + local okfulfill, version_or_err, tree = deps.fulfill_dependency(depq, deps_mode, rocks_provided, verify, depskey) if okfulfill then - deplocks.add(depskey, depq.name, found_or_err) + deplocks.add(depskey, depq.name, version_or_err) + if tree and rockspec:format_is_at_least("3.1") then + rockspec.variables[depq.name:upper() .. "_ROCKDIR"] = path.install_dir(depq.name, version_or_err, tree) + end else if depq.constraints and depq.constraints[1] and depq.constraints[1].no_upgrade then util.printerr("This version of "..name.." is designed for use with") @@ -341,7 +344,7 @@ function deps.fulfill_dependencies(rockspec: Rockspec, depskey: DepsKey, deps_mo util.printerr("or look for a suitable version of "..name.." with") util.printerr(" luarocks search "..name) end - return nil, found_or_err + return nil, version_or_err end end -- cgit v1.2.3-55-g6feb