From 20dba7e9a2e68ce73ac6f8ba718b58456f46c3a5 Mon Sep 17 00:00:00 2001
From: Roman Tsisyk <roman@tsisyk.com>
Date: Wed, 26 Aug 2015 14:15:43 +0300
Subject: [PATCH] Move net.box back to src/box/lua

Reason: net.box depends on src/box/lua/tuple.h, src/box/lua/schema.lua,
src/box/lua/call.cc and these dependencies impossible to fix.

box.cfg{} is not required for net.box.
---
 src/CMakeLists.txt            | 2 --
 src/box/CMakeLists.txt        | 2 ++
 src/box/lua/call.cc           | 7 ++++++-
 src/{ => box}/lua/net_box.cc  | 5 ++---
 src/{ => box}/lua/net_box.h   | 0
 src/{ => box}/lua/net_box.lua | 2 +-
 src/lua/init.cc               | 5 -----
 test/box/net.box.result       | 3 ++-
 8 files changed, 13 insertions(+), 13 deletions(-)
 rename src/{ => box}/lua/net_box.cc (99%)
 rename src/{ => box}/lua/net_box.h (100%)
 rename src/{ => box}/lua/net_box.lua (99%)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4e6a4c6a8b..d7533069dc 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -24,7 +24,6 @@ lua_source(lua_sources lua/console.lua)
 lua_source(lua_sources lua/bsdsocket.lua)
 lua_source(lua_sources lua/errno.lua)
 lua_source(lua_sources lua/log.lua)
-lua_source(lua_sources lua/net_box.lua)
 lua_source(lua_sources lua/help.lua)
 lua_source(lua_sources lua/help_en_US.lua)
 lua_source(lua_sources lua/tap.lua)
@@ -106,7 +105,6 @@ set (server_sources
      lua/trigger.cc
      lua/ipc.cc
      lua/msgpack.cc
-     lua/net_box.cc
      lua/utils.cc
      lua/errno.c
      lua/bsdsocket.cc
diff --git a/src/box/CMakeLists.txt b/src/box/CMakeLists.txt
index b46f631a7d..732a5102cd 100644
--- a/src/box/CMakeLists.txt
+++ b/src/box/CMakeLists.txt
@@ -8,6 +8,7 @@ lua_source(lua_sources lua/schema.lua)
 lua_source(lua_sources lua/tuple.lua)
 lua_source(lua_sources lua/session.lua)
 lua_source(lua_sources lua/snapshot_daemon.lua)
+lua_source(lua_sources lua/net_box.lua)
 set(bin_sources)
 bin_source(bin_sources bootstrap.snap bootstrap.h)
 
@@ -67,6 +68,7 @@ add_library(box
     lua/stat.cc
     lua/error.cc
     lua/session.cc
+    lua/net_box.cc
     ${bin_sources})
 
 target_link_libraries(box ${sophia_lib})
diff --git a/src/box/lua/call.cc b/src/box/lua/call.cc
index 5c56e67ddd..816cfc0577 100644
--- a/src/box/lua/call.cc
+++ b/src/box/lua/call.cc
@@ -38,6 +38,7 @@
 #include "box/lua/stat.h"
 #include "box/lua/info.h"
 #include "box/lua/session.h"
+#include "box/lua/net_box.h"
 #include "box/tuple.h"
 
 #include "lua/utils.h"
@@ -62,13 +63,15 @@
 extern char session_lua[],
 	schema_lua[],
 	load_cfg_lua[],
-	snapshot_daemon_lua[];
+	snapshot_daemon_lua[],
+	net_box_lua[];
 
 static const char *lua_sources[] = {
 	session_lua,
 	schema_lua,
 	snapshot_daemon_lua,
 	load_cfg_lua,
+	net_box_lua,
 	NULL
 };
 
@@ -746,6 +749,8 @@ box_lua_init(struct lua_State *L)
 	lua_pop(L, 1);
 	luaL_register(L, "box.internal", boxlib_internal);
 	lua_pop(L, 1);
+	luaopen_net_box(L);
+	lua_pop(L, 1);
 
 #if 0
 	/* Get CTypeID for `struct port *' */
diff --git a/src/lua/net_box.cc b/src/box/lua/net_box.cc
similarity index 99%
rename from src/lua/net_box.cc
rename to src/box/lua/net_box.cc
index 0a1303106f..db0ef3e376 100644
--- a/src/lua/net_box.cc
+++ b/src/box/lua/net_box.cc
@@ -29,16 +29,15 @@
  * SUCH DAMAGE.
  */
 
-#include "lua/net_box.h"
-#include "lua/msgpack.h"
+#include "net_box.h"
 
 #include <lib/small/ibuf.h>
 #include "scramble.h"
 
-/* TODO: net.box depends on src/box/ */
 #include "box/iproto_constants.h"
 #include "box/lua/tuple.h" /* luamp_convert_tuple() / luamp_convert_key() */
 
+#include "lua/msgpack.h"
 #include <msgpuck/msgpuck.h> /* mp_store_u32() */
 #include "third_party/base64.h"
 
diff --git a/src/lua/net_box.h b/src/box/lua/net_box.h
similarity index 100%
rename from src/lua/net_box.h
rename to src/box/lua/net_box.h
diff --git a/src/lua/net_box.lua b/src/box/lua/net_box.lua
similarity index 99%
rename from src/lua/net_box.lua
rename to src/box/lua/net_box.lua
index f6b09505c1..ca38ec3316 100644
--- a/src/lua/net_box.lua
+++ b/src/box/lua/net_box.lua
@@ -1076,4 +1076,4 @@ setmetatable(remote.self, {
     end
 })
 
-return remote
+package.loaded['net.box'] = remote
diff --git a/src/lua/init.cc b/src/lua/init.cc
index 31c7f3a6c1..666667555e 100644
--- a/src/lua/init.cc
+++ b/src/lua/init.cc
@@ -56,7 +56,6 @@ extern "C" {
 #include "third_party/lua-cjson/lua_cjson.h"
 #include "third_party/lua-yaml/lyaml.h"
 #include "lua/msgpack.h"
-#include "lua/net_box.h"
 #include "lua/pickle.h"
 #include "lua/fio.h"
 
@@ -86,7 +85,6 @@ extern char strict_lua[],
 	uri_lua[],
 	bsdsocket_lua[],
 	console_lua[],
-	net_box_lua[],
 	help_lua[],
 	help_en_US_lua[],
 	tap_lua[],
@@ -120,7 +118,6 @@ static const char *lua_modules[] = {
 	"fio", fio_lua,
 	"csv", csv_lua,
 	"socket", bsdsocket_lua,
-	"net.box", net_box_lua,
 	"console", console_lua,
 	"tap", tap_lua,
 	"help.en_US", help_en_US_lua,
@@ -371,8 +368,6 @@ tarantool_lua_init(const char *tarantool_bin, int argc, char **argv)
 	lua_pop(L, 1);
 	luaopen_msgpack(L);
 	lua_pop(L, 1);
-	luaopen_net_box(L);
-	lua_pop(L, 1);
 
 #if defined(HAVE_GNU_READLINE)
 	/*
diff --git a/test/box/net.box.result b/test/box/net.box.result
index 94ed39a94b..7f0da9fe20 100644
--- a/test/box/net.box.result
+++ b/test/box/net.box.result
@@ -288,7 +288,8 @@ cn.space.net_box_test_space:insert{234, 1,2,3}
 ...
 cn.space.net_box_test_space.insert{234, 1,2,3}
 ---
-- error: 'builtin/net.box.lua:133: Use space:method(...) instead space.method(...)'
+- error: '[string "-- net_box.lua (internal file)..."]:133: Use space:method(...)
+    instead space.method(...)'
 ...
 cn.space.net_box_test_space:replace{354, 1,2,3}
 ---
-- 
GitLab