mirror of https://github.com/tp4a/teleport
1. try to fix crash on Linux by use libssh multi-thread initialization function.
2. update libssh to v0.7.5. 3. update build script to match libssh threads library.pull/32/head
parent
79451a95ff
commit
13250ec081
|
@ -422,7 +422,7 @@ class BuilderLinux(BuilderBase):
|
||||||
# os.rename(os.path.join(self.PATH_TMP, 'master'), os.path.join(self.PATH_TMP, 'libssh-{}'.format(LIBSSH_VER)))
|
# os.rename(os.path.join(self.PATH_TMP, 'master'), os.path.join(self.PATH_TMP, 'libssh-{}'.format(LIBSSH_VER)))
|
||||||
|
|
||||||
cc.n('build libssh...', end='')
|
cc.n('build libssh...', end='')
|
||||||
if os.path.exists(os.path.join(self.PATH_RELEASE, 'lib', 'libssh.a')):
|
if os.path.exists(os.path.join(self.PATH_RELEASE, 'lib', 'libssh.a')) and os.path.exists(os.path.join(self.PATH_RELEASE, 'lib', 'libssh_threads.a')):
|
||||||
cc.w('already exists, skip.')
|
cc.w('already exists, skip.')
|
||||||
return
|
return
|
||||||
cc.v('')
|
cc.v('')
|
||||||
|
@ -482,7 +482,9 @@ class BuilderLinux(BuilderBase):
|
||||||
# because make install will fail because we can not disable ssh_shared target,
|
# because make install will fail because we can not disable ssh_shared target,
|
||||||
# so we copy necessary files ourselves.
|
# so we copy necessary files ourselves.
|
||||||
utils.ensure_file_exists(os.path.join(self.LIBSSH_PATH_SRC, 'build', 'src', 'libssh.a'))
|
utils.ensure_file_exists(os.path.join(self.LIBSSH_PATH_SRC, 'build', 'src', 'libssh.a'))
|
||||||
|
utils.ensure_file_exists(os.path.join(self.LIBSSH_PATH_SRC, 'build', 'src', 'threads', 'libssh_threads.a'))
|
||||||
utils.copy_file(os.path.join(self.LIBSSH_PATH_SRC, 'build', 'src'), os.path.join(self.PATH_RELEASE, 'lib'), 'libssh.a')
|
utils.copy_file(os.path.join(self.LIBSSH_PATH_SRC, 'build', 'src'), os.path.join(self.PATH_RELEASE, 'lib'), 'libssh.a')
|
||||||
|
utils.copy_file(os.path.join(self.LIBSSH_PATH_SRC, 'build', 'src', 'threads'), os.path.join(self.PATH_RELEASE, 'lib'), 'libssh_threads.a')
|
||||||
utils.copy_ex(os.path.join(self.LIBSSH_PATH_SRC, 'include'), os.path.join(self.PATH_RELEASE, 'include'), 'libssh')
|
utils.copy_ex(os.path.join(self.LIBSSH_PATH_SRC, 'include'), os.path.join(self.PATH_RELEASE, 'include'), 'libssh')
|
||||||
|
|
||||||
def _build_sqlite(self, file_name):
|
def _build_sqlite(self, file_name):
|
||||||
|
@ -504,7 +506,8 @@ class BuilderLinux(BuilderBase):
|
||||||
|
|
||||||
def fix_output(self):
|
def fix_output(self):
|
||||||
# remove .so files, otherwise will link to .so but not .a in default.
|
# remove .so files, otherwise will link to .so but not .a in default.
|
||||||
rm = ['libsqlite3.la', 'libsqlite3.so.0', 'libsqlite3.so', 'libsqlite3.so.0.8.6', 'libuv.la', 'libuv.so.1', 'libuv.so', 'libuv.so.1.0.0']
|
# rm = ['libsqlite3.la', 'libsqlite3.so.0', 'libsqlite3.so', 'libsqlite3.so.0.8.6', 'libuv.la', 'libuv.so.1', 'libuv.so', 'libuv.so.1.0.0']
|
||||||
|
rm = ['libuv.la', 'libuv.so.1', 'libuv.so', 'libuv.so.1.0.0']
|
||||||
for i in rm:
|
for i in rm:
|
||||||
_path = os.path.join(self.PATH_RELEASE, 'lib', i)
|
_path = os.path.join(self.PATH_RELEASE, 'lib', i)
|
||||||
if os.path.exists(_path):
|
if os.path.exists(_path):
|
||||||
|
@ -550,7 +553,9 @@ def main():
|
||||||
builder.build_libuv()
|
builder.build_libuv()
|
||||||
builder.build_mbedtls()
|
builder.build_mbedtls()
|
||||||
builder.build_libssh()
|
builder.build_libssh()
|
||||||
builder.build_sqlite()
|
|
||||||
|
# do not need sqlite any more.
|
||||||
|
# builder.build_sqlite()
|
||||||
|
|
||||||
builder.fix_output()
|
builder.fix_output()
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ openssl = 1.0.2h,1000208f
|
||||||
libuv = 1.11.0
|
libuv = 1.11.0
|
||||||
mbedtls = 2.3.0
|
mbedtls = 2.3.0
|
||||||
sqlite = 3170000
|
sqlite = 3170000
|
||||||
libssh = 0.7.4
|
libssh = 0.7.5
|
||||||
jsoncpp = 0.10.6
|
jsoncpp = 0.10.6
|
||||||
mongoose = 6.6
|
mongoose = 6.6
|
||||||
|
|
||||||
|
|
|
@ -35,4 +35,5 @@ include_directories(
|
||||||
link_directories(../../../external/linux/release/lib)
|
link_directories(../../../external/linux/release/lib)
|
||||||
|
|
||||||
add_executable(tp_core ${DIR_SRCS})
|
add_executable(tp_core ${DIR_SRCS})
|
||||||
target_link_libraries(tp_core ssl crypto mbedx509 mbedtls mbedcrypto sqlite3 dl pthread rt util)
|
#target_link_libraries(tp_core ssl crypto mbedx509 mbedtls mbedcrypto sqlite3 dl pthread rt util)
|
||||||
|
target_link_libraries(tp_core ssl crypto mbedx509 mbedtls mbedcrypto dl pthread rt util)
|
||||||
|
|
|
@ -153,7 +153,7 @@ bool TppManager::load_tpp(const ex_wstr& libname)
|
||||||
lib->dylib = ex_dlopen(libfile.c_str());
|
lib->dylib = ex_dlopen(libfile.c_str());
|
||||||
if (NULL == lib->dylib)
|
if (NULL == lib->dylib)
|
||||||
{
|
{
|
||||||
EXLOGE(L"[core] load dylib `%ls` failed, maybe it not exists.\n", libfile.c_str());
|
EXLOGE(L"[core] load dylib `%ls` failed.\n", libfile.c_str());
|
||||||
delete lib;
|
delete lib;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,4 +22,4 @@ include_directories(
|
||||||
link_directories(../../../../external/linux/release/lib)
|
link_directories(../../../../external/linux/release/lib)
|
||||||
|
|
||||||
add_library(tpssh SHARED ${DIR_SSH_SRCS})
|
add_library(tpssh SHARED ${DIR_SSH_SRCS})
|
||||||
target_link_libraries(tpssh ssh ssl crypto mbedx509 mbedtls mbedcrypto dl pthread rt util)
|
target_link_libraries(tpssh ssh ssh_threads ssl crypto mbedx509 mbedtls mbedcrypto dl pthread rt util)
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
|
|
||||||
TPP_API ex_rv tpp_init(TPP_INIT_ARGS* init_args)
|
TPP_API ex_rv tpp_init(TPP_INIT_ARGS* init_args)
|
||||||
{
|
{
|
||||||
|
#ifdef EX_OS_UNIX
|
||||||
|
ssh_threads_set_callbacks(ssh_threads_get_pthread());
|
||||||
|
ssh_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!g_ssh_env.init(init_args))
|
if (!g_ssh_env.init(init_args))
|
||||||
return TSR_FAILED;
|
return TSR_FAILED;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue