[Tarantool-patches] [PATCH v2 1/1] luarock: change a way to create manifest
Yaroslav Dynnikov
yaroslav.dynnikov at tarantool.org
Thu Jul 9 19:50:21 MSK 2020
Perfect, LGTM.
Best regards
Yaroslav Dynnikov
On Thu, 9 Jul 2020 at 19:45, <imeevma at tarantool.org> wrote:
> Whenever a rock is installed it's being added to the repository
> manifest. And if a manifest doesn't exist yet, luarocks creates
> one by scanning the directory.
>
> It causes a problem when *.all.rock with dependencies is installed
> into an empty directory. Luarocks unpacks the all.rock before
> installing dependencies, and it's modules are captured during
> manifest creation. After the installation finishes, luarocks adds
> the all.rock to the manifest once again (now intentionally),
> detects collision of module names and renames them uniquely, like
> "cartridge_1_2_0_1". As a result, "require()" function doesn't
> work.
>
> This patch changes the way of manifest creation: instead of
> scanning repo luarocks creates an empty one.
>
> Closes tarantool/tarantool#4704
> ---
> https://github.com/tarantool/tarantool/issues/4704
> https://github.com/tarantool/luarocks/tree/imeevma/gh-4704-fix-rock-name
>
> @ChangeLog:
> * Don't ruin rock name when freshly installing *.all.rock with
> dependencies.
>
> src/luarocks/manif.lua | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/src/luarocks/manif.lua b/src/luarocks/manif.lua
> index 34ae02d..79a4278 100644
> --- a/src/luarocks/manif.lua
> +++ b/src/luarocks/manif.lua
> @@ -444,11 +444,10 @@ function manif.add_to_manifest(name, version, repo,
> deps_mode)
>
> local manifest, err = manif_core.load_local_manifest(rocks_dir)
> if not manifest then
> - util.printerr("No existing manifest. Attempting to rebuild...")
> - -- Manifest built by `manif.make_manifest` should already
> - -- include information about given name and version,
> - -- no need to update it.
> - return manif.make_manifest(rocks_dir, deps_mode)
> + util.printerr("No existing manifest. Creating an empty one...")
> + -- Create an empty manifest.
> + manifest, err = { repository = {}, modules = {}, commands = {} },
> nil
> + manif_core.cache_manifest(rocks_dir, nil, manifest)
> end
>
> local results = {[name] = {[version] = {{arch = "installed", repo =
> rocks_dir}}}}
> --
> 2.25.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20200709/a4228472/attachment.html>
More information about the Tarantool-patches
mailing list