<div dir="ltr"><div>Perfect, LGTM.<br></div><div><br></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><span><div><div dir="ltr">Best regards</div><div>Yaroslav Dynnikov<br></div></div></span></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 9 Jul 2020 at 19:45, <<a href="mailto:imeevma@tarantool.org">imeevma@tarantool.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Whenever a rock is installed it's being added to the repository<br>
manifest. And if a manifest doesn't exist yet, luarocks creates<br>
one by scanning the directory.<br>
<br>
It causes a problem when *.all.rock with dependencies is installed<br>
into an empty directory. Luarocks unpacks the all.rock before<br>
installing dependencies, and it's modules are captured during<br>
manifest creation. After the installation finishes, luarocks adds<br>
the all.rock to the manifest once again (now intentionally),<br>
detects collision of module names and renames them uniquely, like<br>
"cartridge_1_2_0_1". As a result, "require()" function doesn't<br>
work.<br>
<br>
This patch changes the way of manifest creation: instead of<br>
scanning repo luarocks creates an empty one.<br>
<br>
Closes tarantool/tarantool#4704<br>
---<br>
<a href="https://github.com/tarantool/tarantool/issues/4704" rel="noreferrer" target="_blank">https://github.com/tarantool/tarantool/issues/4704</a><br>
<a href="https://github.com/tarantool/luarocks/tree/imeevma/gh-4704-fix-rock-name" rel="noreferrer" target="_blank">https://github.com/tarantool/luarocks/tree/imeevma/gh-4704-fix-rock-name</a><br>
<br>
@ChangeLog:<br>
 * Don't ruin rock name when freshly installing *.all.rock with<br>
   dependencies.<br>
<br>
 src/luarocks/manif.lua | 9 ++++-----<br>
 1 file changed, 4 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/src/luarocks/manif.lua b/src/luarocks/manif.lua<br>
index 34ae02d..79a4278 100644<br>
--- a/src/luarocks/manif.lua<br>
+++ b/src/luarocks/manif.lua<br>
@@ -444,11 +444,10 @@ function manif.add_to_manifest(name, version, repo, deps_mode)<br>
<br>
    local manifest, err = manif_core.load_local_manifest(rocks_dir)<br>
    if not manifest then<br>
-      util.printerr("No existing manifest. Attempting to rebuild...")<br>
-      -- Manifest built by `manif.make_manifest` should already<br>
-      -- include information about given name and version,<br>
-      -- no need to update it.<br>
-      return manif.make_manifest(rocks_dir, deps_mode)<br>
+      util.printerr("No existing manifest. Creating an empty one...")<br>
+      -- Create an empty manifest.<br>
+      manifest, err = { repository = {}, modules = {}, commands = {} }, nil<br>
+      manif_core.cache_manifest(rocks_dir, nil, manifest)<br>
    end<br>
<br>
    local results = {[name] = {[version] = {{arch = "installed", repo = rocks_dir}}}}<br>
-- <br>
2.25.1<br>
<br>
</blockquote></div>