Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Builtin modules overloading #7774

Closed
igormunkin opened this issue Oct 4, 2022 · 1 comment · Fixed by #8300
Closed

Builtin modules overloading #7774

igormunkin opened this issue Oct 4, 2022 · 1 comment · Fixed by #8300
Assignees
Labels
2.11 Target is 2.11 and all newer release/master branches app feature A new functionality lua tmp

Comments

@igormunkin
Copy link
Collaborator

igormunkin commented Oct 4, 2022

@Totktonada: The idea is to offer something similar to Perl's dual-file modules. We should elaborate package loader rules to allow convenient writing of built-in libraries replacements.

@igormunkin igormunkin added feature A new functionality lua in design Requires design document app 2.11 Target is 2.11 and all newer release/master branches labels Oct 4, 2022
DifferentialOrange added a commit to tarantool/checks that referenced this issue Jan 16, 2023
After embedding checks to the core binary, plain require('checks') will
return embedded module. So it won't be possible to run repository module
tests (in reusable_testing or with repository CI) with repository code
until it overloads build-in code. Until [1] is resolved there are no
any other way to deal with it. (And even after [1] would be resolved,
it may worth to leave it like this to support older versions with
built-in checks.)

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7726
@NeraverinTarantool NeraverinTarantool removed the 2.11 Target is 2.11 and all newer release/master branches label Jan 16, 2023
DifferentialOrange added a commit to tarantool/checks that referenced this issue Jan 16, 2023
After embedding checks to the core binary, plain require('checks') will
return embedded module. So it won't be possible to run repository module
tests (in reusable_testing or with repository CI) with repository code
until it overloads built-in code. Until [1] is resolved there are no
any other way to deal with it. (And even after [1] would be resolved,
it may worth to leave it like this to support older versions with
built-in checks.)

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/checks that referenced this issue Jan 16, 2023
After embedding checks to the core binary, plain require('checks') will
return embedded module. So it won't be possible to run repository module
tests (in reusable_testing or with repository CI) with repository code
until it overloads build-in code. Until [1] is resolved there are no
any other way to deal with it. (And even after [1] would be resolved,
it may worth to leave it like this to support older versions with
built-in checks.)

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/checks that referenced this issue Jan 16, 2023
After embedding checks to the core binary, plain require('checks') will
return embedded module. So it won't be possible to run repository module
tests (in reusable_testing or with repository CI) with repository code
until it overloads build-in code. Until [1] is resolved there are no
any other way to deal with it. (And even after [1] would be resolved,
it may worth to leave it like this to support older versions with
built-in checks.)

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/checks that referenced this issue Jan 16, 2023
After embedding checks to the core binary, plain require('checks') will
return embedded module. So it won't be possible to run repository module
tests (in reusable_testing or with repository CI) with repository code
until it overloads build-in code. Until [1] is resolved there are no
any other way to deal with it. (And even after [1] would be resolved,
it may worth to leave it like this to support older versions with
built-in checks.)

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7726
@Totktonada Totktonada removed the in design Requires design document label Jan 18, 2023
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
This commit starts a series, which refactors built-in module
registration mechanisms. The series aims several goals:

* Offer a standard tarantool specific way to register a built-in module.
  It allows to change the registration process for all built-in modules
  at once.
* Make the API of such functions simple and clean.
* Eliminate known problems of the existing approach to register built-in
  modules.

This particular commit offers two new functions:

* luaT_setfuncs()
* luaT_newmodule()

The former replaces `luaL_register(L, NULL, funcs)`. The latter replaces
`luaL_register()` and `luaL_register_module()` to some extent.

Let's look on examples below.

## How it works now

First of all, consider the [documentation][1] about the
`luaL_register()` function. Then look on the examples.

```c
luaL_register(L, "foo.bar", funcs);
```

Creates a table `package.loaded['foo.bar']` and `_G.foo.bar` (if neither
of them exists), fill it with the functions and pushes it to the stack.

What is not ok:

* Pollutes `_G`.
* `package.loaded` is written flat, but `_G` is written deeply.
* No control over (un)intended module rewritting.

It also worth to note that we can't change this function, because it is
part of the Lua API. So we need another function for our registration
process.

Another usage of the function makes it even more confusing:

```c
luaL_register(L, NULL, funcs);
```

Does it creates a table, fills it with the functions and pushes it to
the stack? No.

Unlike other usages, it fills a table on the top of the stack with the
functions and leaves it on the stack. And it actually has no relation to
module registration.

There is tarantool specific function `luaL_register_module()`, which
looks as an attempt to solve some of the problems.

```c
luaL_register_module(L, "foo.bar", funcs);
```

It doesn't touch `_G` and, surprisingly, changes how a module is written
to `package.loaded`.

The call creates a table (or finds it) in `package.loaded.foo.bar`,
fills it with the functions and pushes to the stack. *This* function
writes `package.loaded` deeply.

It leaves us with `luaL_register()` for assigning `_G.foo.bar` (with
pollution of `package.loaded`). It leaves us with `lua_register()` for
setting functions into a table on the stack (with confusing name in this
context and confusing contract). And we has no a function to just assign
`package.loaded[modname]` without the deep tables creation and with
appropriate checks.

## How it will work

```c
luaT_newmodule(L, "foo.bar", funcs);
```

Create a table, set it to `package.loaded['foo.bar']` and push into the
stack. Assert that the table doesn't exist.

```c
luaT_setfuncs(L, funcs);
```

Add functions into a table on top of the stack.

```c
luaL_findtable(L, LUA_GLOBALSINDEX, "foo.bar", 0);
luaT_setfuncs(L, funcs);
```

Find/create a table `_G.foo.bar` and add functions to it.

[1]: https://www.lua.org/manual/5.1/manual.html#luaL_register

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
See the previous commit regarding the idea behind this refactoring.

The src/box/lua part is updated in a next commit, only `src/lua` is
updated here. It is split to ease reading.

The patch is mostly straightforward, I'll highlight several interesting
places.

* `compat`

  `_G.internal.compat` was created by `luaL_register()`. Removing of
  this call drops `_G.internal`: it is not created anymore.

* `fiber.channel` and `fiber.cond`

  The initialization code add fields into fiber module. So we call
  `require('fiber')` here.

  The alternative is to access `package.loaded.fiber` directly, however
  I plan to eliminate such accesses in further patches. (Built-in
  modules registration process will use its own table instead of
  `package.loaded`.)

* `http.client`

  Here we also eliminate a direct access to `package.loaded`, which is
  important for implementing tarantool#7774.

* `utf8`

  This module is also set to `_G.utf8` for compatibility with Lua 5.3.
  It remains unchanged.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
The idea of the refactoring is described in a previous commit.

The change is straighforward:

* Use `luaL_findtable()` to find/create a nested table in `_G`.
* Use `luaT_setfuncs()` to assign functions to a table.
* Use `luaT_newmodule()` to register a module for `require()`.

`require('box.internal.<...>')` calls are replaced with
`box.internal.<...>`, because `box` submodules are not registered as
modules anymore (IOW, are not placed into `package.loaded`).

However `_G.box == require('box')`, it remains unchanged.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
There are modules that are implemented as two parts: a Lua/C module for
internal use and a public module written on Lua. There is a practice to
name both parts the same: just capture the internal part within the
public part and rewrite `package.loaded` then.

This name overlap is confusing at reading the sources and complicates
debugging. And it conflicts with a built-in module loading logic that
will be implemented for tarantool#7774.

Let's use `foo.lib` for the internal part and `foo` for the public one.
This approach is already used in some built-in modules.

src/box/lua/upgrade.lua requires src/box/lua/xlog.lua, so changed the
loading order.

Eliminated extra `internal` field in `uri.lib`, becase the whole module
is internal.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
The module can't be pulled as `require('compat')`, because it is
tarantool specific tuning mechanism, not a general compatibility module.
The API is exposed as `require('tarantool').compat`.

Before this patch the module was loaded as `package.loaded.compat`,
captured and then removed from `package.loaded`. However it would be
easier to follow if we'll just assign an internal name for the module.

The module is renamed to `internal.compat`. The Lua/C part of the module
is renamed to `internal.compat.lib`.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
It is planned to allow to overload a built-in module by an external one.
The implementation assumes storing of the built-in modules in a table
that is different from `package.loaded`. It means that accessing a
module as `package.loaded[<module_name>]` may fail.

However we still have a guarantee that a registered module is accessible
using `require()`. Use it for accessing built-in modules from our code.

Notes on different modules:

* `console`

  Reorder the print/log callbacks to place the print callback first. If
  something is going very wrong (say, someone removes the internal.print
  module), things will be consistent: both callback will not be set.

* `session`

  `box` is accessible as `require('box')` and as `_G.box`. Use the
  latter.

src/lua/serializer.c and src/lua/digest.c also access `package.loaded`
directly. I left them out of scope here, it requires a bit more in-depth
look.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
This commit starts a series, which refactors built-in module
registration mechanisms. The series aims several goals:

* Offer a standard tarantool specific way to register a built-in module.
  It allows to change the registration process for all built-in modules
  at once.
* Make the API of such functions simple and clean.
* Eliminate known problems of the existing approach to register built-in
  modules.

This particular commit offers two new functions:

* luaT_setfuncs()
* luaT_newmodule()

The former replaces `luaL_register(L, NULL, funcs)`. The latter replaces
`luaL_register()` and `luaL_register_module()` to some extent.

Let's look on examples below.

## How it works now

First of all, consider the [documentation][1] about the
`luaL_register()` function. Then look on the examples.

```c
luaL_register(L, "foo.bar", funcs);
```

Creates a table `package.loaded['foo.bar']` and `_G.foo.bar` (if neither
of them exists), fill it with the functions and pushes it to the stack.

What is not ok:

* Pollutes `_G`.
* `package.loaded` is written flat, but `_G` is written deeply.
* No control over (un)intended module rewritting.

It also worth to note that we can't change this function, because it is
part of the Lua API. So we need another function for our registration
process.

Another usage of the function makes it even more confusing:

```c
luaL_register(L, NULL, funcs);
```

Does it creates a table, fills it with the functions and pushes it to
the stack? No.

Unlike other usages, it fills a table on the top of the stack with the
functions and leaves it on the stack. And it actually has no relation to
module registration.

There is tarantool specific function `luaL_register_module()`, which
looks as an attempt to solve some of the problems.

```c
luaL_register_module(L, "foo.bar", funcs);
```

It doesn't touch `_G` and, surprisingly, changes how a module is written
to `package.loaded`.

The call creates a table (or finds it) in `package.loaded.foo.bar`,
fills it with the functions and pushes to the stack. *This* function
writes `package.loaded` deeply.

It leaves us with `luaL_register()` for assigning `_G.foo.bar` (with
pollution of `package.loaded`). It leaves us with `lua_register()` for
setting functions into a table on the stack (with confusing name in this
context and confusing contract). And we has no a function to just assign
`package.loaded[modname]` without the deep tables creation and with
appropriate checks.

## How it will work

```c
luaT_newmodule(L, "foo.bar", funcs);
```

Create a table, set it to `package.loaded['foo.bar']` and push into the
stack. Assert that the table doesn't exist.

```c
luaT_setfuncs(L, funcs);
```

Add functions into a table on top of the stack.

```c
luaL_findtable(L, LUA_GLOBALSINDEX, "foo.bar", 0);
luaT_setfuncs(L, funcs);
```

Find/create a table `_G.foo.bar` and add functions to it.

[1]: https://www.lua.org/manual/5.1/manual.html#luaL_register

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
See the previous commit regarding the idea behind this refactoring.

The src/box/lua part is updated in a next commit, only `src/lua` is
updated here. It is split to ease reading.

The patch is mostly straightforward, I'll highlight several interesting
places.

* `compat`

  `_G.internal.compat` was created by `luaL_register()`. Removing of
  this call drops `_G.internal`: it is not created anymore.

* `fiber.channel` and `fiber.cond`

  The initialization code add fields into fiber module. So we call
  `require('fiber')` here.

  The alternative is to access `package.loaded.fiber` directly, however
  I plan to eliminate such accesses in further patches. (Built-in
  modules registration process will use its own table instead of
  `package.loaded`.)

* `http.client`

  Here we also eliminate a direct access to `package.loaded`, which is
  important for implementing tarantool#7774.

* `utf8`

  This module is also set to `_G.utf8` for compatibility with Lua 5.3.
  It remains unchanged.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
The idea of the refactoring is described in a previous commit.

The change is straightforward:

* Use `luaL_findtable()` to find/create a nested table in `_G`.
* Use `luaT_setfuncs()` to assign functions to a table.
* Use `luaT_newmodule()` to register a module for `require()`.

`require('box.internal.<...>')` calls are replaced with
`box.internal.<...>`, because `box` submodules are not registered as
modules anymore (IOW, are not placed into `package.loaded`).

However `_G.box == require('box')`, it remains unchanged.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
There are modules that are implemented as two parts: a Lua/C module for
internal use and a public module written on Lua. There is a practice to
name both parts the same: just capture the internal part within the
public part and rewrite `package.loaded` then.

This name overlap is confusing at reading the sources and complicates
debugging. And it conflicts with a built-in module loading logic that
will be implemented for tarantool#7774.

Let's use `foo.lib` for the internal part and `foo` for the public one.
This approach is already used in some built-in modules.

src/box/lua/upgrade.lua requires src/box/lua/xlog.lua, so changed the
loading order.

Eliminated extra `internal` field in `uri.lib`, because the whole module
is internal.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
The module can't be pulled as `require('compat')`, because it is
tarantool specific tuning mechanism, not a general compatibility module.
The API is exposed as `require('tarantool').compat`.

Before this patch the module was loaded as `package.loaded.compat`,
captured and then removed from `package.loaded`. However it would be
easier to follow if we'll just assign an internal name for the module.

The module is renamed to `internal.compat`. The Lua/C part of the module
is renamed to `internal.compat.lib`.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
Totktonada added a commit to Totktonada/tarantool that referenced this issue Jan 18, 2023
It is planned to allow to overload a built-in module by an external one.
The implementation assumes storing of the built-in modules in a table
that is different from `package.loaded`. It means that accessing a
module as `package.loaded[<module_name>]` may fail.

However we still have a guarantee that a registered module is accessible
using `require()`. Use it for accessing built-in modules from our code.

Notes on different modules:

* `console`

  Reorder the print/log callbacks to place the print callback first. If
  something is going very wrong (say, someone removes the internal.print
  module), things will be consistent: both callback will not be set.

* `session`

  `box` is accessible as `require('box')` and as `_G.box`. Use the
  latter.

src/lua/serializer.c and src/lua/digest.c also access `package.loaded`
directly. I left them out of scope here, it requires a bit more in-depth
look.

Part of tarantool#7774

NO_DOC=user visible behavior is unchanged, pure refactoring change
NO_TEST=see NO_DOC
NO_CHANGELOG=see NO_DOC
DifferentialOrange added a commit to tarantool/checks that referenced this issue Jan 18, 2023
After embedding checks to the core binary, plain require('checks') will
return embedded module. So it won't be possible to run repository module
tests (in reusable_testing or with repository CI) with repository code
until it overloads build-in code. Until [1] is resolved there are no
any other way to deal with it. (And even after [1] would be resolved,
it may worth to leave it like this to support older versions with
built-in checks.)

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 16, 2023
The ability to override built-in modules was introduced with [1].
After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 17, 2023
The ability to override built-in modules was introduced with [1].
After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 17, 2023
The ability to override built-in modules was introduced with [1].
After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/checks that referenced this issue Mar 17, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/checks that referenced this issue Mar 17, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/checks that referenced this issue Mar 17, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/checks that referenced this issue Mar 17, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 20, 2023
The ability to override built-in modules was introduced with [1].
After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 22, 2023
The ability to override built-in modules was introduced with [1].
After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 23, 2023
The ability to override built-in modules was introduced with [1]. To use
it, you must install the package files using the override.package path
for each file included.

Using soft links inside the rock seems like a bad idea -- luarocks try
to resolve them on files deploy and fails to do so. The only stable
approach is seems to be to duplicate the files to the override
folder.

builtin rockspec doesn't allow to specify a single file twice, so we
need to store the soft link in the repo to workaround it. To build
override package with builtin rockspec, we'll also need to manually
maintain two lists of package files.

cmake approach allows to automatize it. On the other hand, to work with
cmake-built rock, you'll need to `make` the rock while working locally.
Since `make .rocks` is a dependency of `make test`, it shouldn't be
a big issue.

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 23, 2023
The ability to override built-in modules was introduced with [1].
After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics. cartridge role, which was embedded to
tarantool/cartridge in [3], is also would be override.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725
3. tarantool/cartridge#2047

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 23, 2023
The ability to override built-in modules was introduced with [1]. To use
it, you must install the package files using the override.package path
for each file included.

Using soft links inside the rock seems like a bad idea -- luarocks try
to resolve them on files deploy and fails to do so. The only stable
approach is seems to be to duplicate the files to the override
folder.

builtin rockspec doesn't allow to specify a single file twice, so we
need to store the soft link in the repo to workaround it. To build
override package with builtin rockspec, we'll also need to manually
maintain two lists of package files. On the other hand, soft link in
repo allows to work with files locally ever without package rebuild.

After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics. cartridge role, which was embedded to
tarantool/cartridge in [3], is also would be override.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725
3. tarantool/cartridge#2047

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 23, 2023
The ability to override built-in modules was introduced with [1]. To use
it, you must install the package files using the override.package path
for each file included.

Using soft links inside the rock seems like a bad idea -- luarocks try
to resolve them on files deploy and fails to do so. The only stable
approach is seems to be to duplicate the files to the override
folder.

builtin rockspec doesn't allow to specify a single file twice, so we
need to store the soft link in the repo to workaround it. To build
override package with builtin rockspec, we'll also need to manually
maintain two lists of package files.

cmake approach allows to automatize it. On the other hand, to work with
cmake-built rock, you'll need to `make` the rock while working locally.
Since `make .rocks` is a dependency of `make test`, it shouldn't be
a big issue.

1. tarantool/tarantool#7774

Part of tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/metrics that referenced this issue Mar 23, 2023
The ability to override built-in modules was introduced with [1].
After [2], metrics will be embedded to core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new metrics. cartridge role, which was embedded to
tarantool/cartridge in [3], is also would be override.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7725
3. tarantool/cartridge#2047

Closes tarantool/tarantool#7727
DifferentialOrange added a commit to tarantool/checks that referenced this issue Apr 10, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks.

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
DifferentialOrange added a commit to tarantool/checks that referenced this issue Apr 10, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks. Core Tarantool tests for master should be
fine after this patch, see [3].

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
3. tarantool/tarantool#8475
DifferentialOrange added a commit to tarantool/checks that referenced this issue Apr 14, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks. Core Tarantool tests for master should be
fine after this patch, see [3].

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
3. tarantool/tarantool#8475
DifferentialOrange added a commit to tarantool/checks that referenced this issue Apr 19, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks. Core Tarantool tests for master should be
fine after this patch, see [3].

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
3. tarantool/tarantool#8475
DifferentialOrange added a commit to tarantool/checks that referenced this issue Apr 19, 2023
The ability to override built-in modules was introduced with [1].
After [1], checks is embedded to the core Tarantool. The ability to
override them with installed rock will make it possible to use old
Tarantool with new checks. Core Tarantool tests for master should be
fine after this patch, see [3].

1. tarantool/tarantool#7774
2. tarantool/tarantool#7726
3. tarantool/tarantool#8475
nshy added a commit to nshy/tarantool that referenced this issue Jul 17, 2023
We already reset readline configuration in interactive_tarantool.lua.
In particular this fixes gh_8613_new_cli_behaviour_test run with my custom
.inputrc.

Follows up ground works done for tarantool#7774

NO_DOC=test harness
NO_TEST=test harness
NO_CHANGELOG=test harness
nshy added a commit to nshy/tarantool that referenced this issue Jul 19, 2023
This fixes gh_8613_new_cli_behaviour_test run with my custom .inputrc
(I use vi-cmd-mode-string/vi-ins-mode-string).

We already reset readline configuration in interactive_tarantool.lua.

Follows up ground works done for tarantool#7774

NO_DOC=test harness
NO_TEST=test harness
NO_CHANGELOG=test harness
locker pushed a commit that referenced this issue Jul 19, 2023
This fixes gh_8613_new_cli_behaviour_test run with my custom .inputrc
(I use vi-cmd-mode-string/vi-ins-mode-string).

We already reset readline configuration in interactive_tarantool.lua.

Follows up ground works done for #7774

NO_DOC=test harness
NO_TEST=test harness
NO_CHANGELOG=test harness
Totktonada pushed a commit to Totktonada/tarantool that referenced this issue Dec 29, 2023
This fixes gh_8613_new_cli_behaviour_test run with my custom .inputrc
(I use vi-cmd-mode-string/vi-ins-mode-string).

We already reset readline configuration in interactive_tarantool.lua.

Follows up ground works done for tarantool#7774

NO_DOC=test harness
NO_TEST=test harness
NO_CHANGELOG=test harness

(cherry picked from commit 028c65e)
Totktonada pushed a commit to Totktonada/tarantool that referenced this issue Dec 29, 2023
This fixes gh_8613_new_cli_behaviour_test run with my custom .inputrc
(I use vi-cmd-mode-string/vi-ins-mode-string).

We already reset readline configuration in interactive_tarantool.lua.

Follows up ground works done for tarantool#7774

NO_DOC=test harness
NO_TEST=test harness
NO_CHANGELOG=test harness

(cherry picked from commit 028c65e)
Totktonada pushed a commit that referenced this issue Jan 9, 2024
This fixes gh_8613_new_cli_behaviour_test run with my custom .inputrc
(I use vi-cmd-mode-string/vi-ins-mode-string).

We already reset readline configuration in interactive_tarantool.lua.

Follows up ground works done for #7774

NO_DOC=test harness
NO_TEST=test harness
NO_CHANGELOG=test harness

(cherry picked from commit 028c65e)
Totktonada pushed a commit that referenced this issue Jan 9, 2024
This fixes gh_8613_new_cli_behaviour_test run with my custom .inputrc
(I use vi-cmd-mode-string/vi-ins-mode-string).

We already reset readline configuration in interactive_tarantool.lua.

Follows up ground works done for #7774

NO_DOC=test harness
NO_TEST=test harness
NO_CHANGELOG=test harness

(cherry picked from commit 028c65e)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.11 Target is 2.11 and all newer release/master branches app feature A new functionality lua tmp
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants