fix some bugs when automatic build on Linux.

pull/32/merge
ApexLiu 2017-03-07 01:46:05 +08:00
parent a2fdd126e8
commit 33a0c33663
3 changed files with 54 additions and 8 deletions

View File

@ -18,6 +18,10 @@ OPENSSL_VER = utils.cfg.ver.openssl
LIBUV_VER = utils.cfg.ver.libuv
MBEDTLS_VER = utils.cfg.ver.mbedtls
SQLITE_VER = utils.cfg.ver.sqlite
LIBSSH_VER = utils.cfg.ver.libssh
JSONCPP_VER = utils.cfg.ver.jsoncpp
MONGOOSE_VER = utils.cfg.ver.mongoose
class BuilderBase:
@ -31,6 +35,24 @@ class BuilderBase:
def _init_path(self):
cc.e("this is a pure-virtual function.")
def build_jsoncpp(self):
file_name = 'jsoncpp-{}.zip'.format(JSONCPP_VER)
if not self._download_file('jsoncpp source tarball', 'https://github.com/open-source-parsers/jsoncpp/archive/{}.zip'.format(JSONCPP_VER), file_name):
return
self._build_jsoncpp(file_name)
def _build_jsoncpp(self, file_name):
cc.e("this is a pure-virtual function.")
def build_mongoose(self):
file_name = 'mongoose-{}.zip'.format(MONGOOSE_VER)
if not self._download_file('mongoose source tarball', 'https://github.com/cesanta/mongoose/archive/{}.zip'.format(MONGOOSE_VER), file_name):
return
self._build_mongoose(file_name)
def _build_mongoose(self, file_name):
cc.e("this is a pure-virtual function.")
def build_openssl(self):
file_name = 'openssl-{}.tar.gz'.format(OPENSSL_VER)
if not self._download_file('openssl source tarball', 'https://www.openssl.org/source/{}'.format(file_name), file_name):
@ -59,8 +81,8 @@ class BuilderBase:
cc.e("this is a pure-virtual function.")
def build_libssh(self):
file_name = 'libssh-master.zip'
if not self._download_file('mbedtls source tarball', 'https://git.libssh.org/projects/libssh.git/snapshot/master.zip', file_name):
file_name = 'libssh-{}.zip'.format(LIBSSH_VER)
if not self._download_file('libssh source tarball', 'https://git.libssh.org/projects/libssh.git/snapshot/libssh-{}.zip'.format(LIBSSH_VER), file_name):
return
self._build_libssh(file_name)
@ -69,7 +91,7 @@ class BuilderBase:
def build_sqlite(self):
file_name = 'sqlite-autoconf-{}.tar.gz'.format(SQLITE_VER)
if not self._download_file('mbedtls source tarball', 'http://sqlite.org/2016/{}'.format(file_name), file_name):
if not self._download_file('sqlite source tarball', 'http://sqlite.org/2016/{}'.format(file_name), file_name):
return
self._build_sqlite(file_name)
@ -93,6 +115,7 @@ class BuilderBase:
def fix_output(self):
pass
class BuilderWin(BuilderBase):
def __init__(self):
super().__init__()
@ -117,12 +140,31 @@ class BuilderLinux(BuilderBase):
self.OPENSSL_PATH_SRC = os.path.join(self.PATH_TMP, 'openssl-{}'.format(OPENSSL_VER))
self.LIBUV_PATH_SRC = os.path.join(self.PATH_TMP, 'libuv-{}'.format(LIBUV_VER))
self.MBEDTLS_PATH_SRC = os.path.join(self.PATH_TMP, 'mbedtls-mbedtls-{}'.format(MBEDTLS_VER))
self.LIBSSH_PATH_SRC = os.path.join(self.PATH_TMP, 'libssh-master')
self.LIBSSH_PATH_SRC = os.path.join(self.PATH_TMP, 'libssh-{}'.format(LIBSSH_VER))
self.SQLITE_PATH_SRC = os.path.join(self.PATH_TMP, 'sqlite-autoconf-{}'.format(SQLITE_VER))
self.JSONCPP_PATH_SRC = os.path.join(PATH_EXTERNAL, 'jsoncpp')
self.MONGOOSE_PATH_SRC = os.path.join(PATH_EXTERNAL, 'mongoose')
if not os.path.exists(self.PATH_TMP):
utils.makedirs(self.PATH_TMP)
def _build_jsoncpp(self, file_name):
cc.n('prepare jsoncpp source code...')
if not os.path.exists(self.JSONCPP_PATH_SRC):
os.system('unzip "{}/{}" -d "{}"'.format(PATH_DOWNLOAD, file_name, PATH_EXTERNAL))
os.rename(os.path.join(PATH_EXTERNAL, 'jsoncpp-{}'.format(JSONCPP_VER)), self.JSONCPP_PATH_SRC)
else:
cc.w('already exists, skip.')
def _build_mongoose(self, file_name):
cc.n('prepare mongoose source code...')
if not os.path.exists(self.MONGOOSE_PATH_SRC):
os.system('unzip "{}/{}" -d "{}"'.format(PATH_DOWNLOAD, file_name, PATH_EXTERNAL))
os.rename(os.path.join(PATH_EXTERNAL, 'mongoose-{}'.format(MONGOOSE_VER)), self.MONGOOSE_PATH_SRC)
else:
cc.w('already exists, skip.')
def _build_openssl(self, file_name):
if not os.path.exists(self.OPENSSL_PATH_SRC):
os.system('tar -zxvf "{}/{}" -C "{}"'.format(PATH_DOWNLOAD, file_name, self.PATH_TMP))
@ -246,7 +288,7 @@ class BuilderLinux(BuilderBase):
if not os.path.exists(self.LIBSSH_PATH_SRC):
# os.system('tar -zxvf "{}/{}" -C "{}"'.format(PATH_DOWNLOAD, file_name, PATH_TMP))
os.system('unzip "{}/{}" -d "{}"'.format(PATH_DOWNLOAD, file_name, self.PATH_TMP))
os.rename(os.path.join(self.PATH_TMP, 'master'), os.path.join(self.PATH_TMP, 'libssh-master'))
# os.rename(os.path.join(self.PATH_TMP, 'master'), os.path.join(self.PATH_TMP, 'libssh-{}'.format(LIBSSH_VER)))
cc.n('build libssh...')
if os.path.exists(os.path.join(self.PATH_RELEASE, 'lib', 'libssh.a')):
@ -285,8 +327,6 @@ class BuilderLinux(BuilderBase):
# # os.system('make install')
# os.chdir(old_p)
# TODO: need modify the `config.h.cmake` and comment out HAVE_OPENSSL_CRYPTO_CTR128_ENCRYPT.
cmake_define = ' -DCMAKE_INSTALL_PREFIX={}' \
' -D_OPENSSL_VERSION={}' \
' -DOPENSSL_INCLUDE_DIR={}/include' \
@ -370,6 +410,9 @@ def main():
if builder is None:
builder = gen_builder(ctx.host_os)
builder.build_jsoncpp()
builder.build_mongoose()
# builder.build_openssl()
####builder.build_libuv()
builder.build_mbedtls()

View File

@ -23,4 +23,7 @@ openssl = 1.0.2h
libuv = 1.9.1
mbedtls = 2.3.0
sqlite = 3160200
libssh = 0.7.4
jsoncpp = 0.10.6
mongoose = 6.6

View File

@ -295,7 +295,7 @@ void TsHttpRpc::_rpc_func_get_config(const Json::Value& json_param, ex_astr& buf
if (it->first.length() > 9 && 0 == wcsncmp(it->first.c_str(), L"protocol-", 9))
{
ex_wstr name;
name.assign(it->first, 9);
name.assign(it->first, 9, it->first.length() - 9);
ex_astr _name;
ex_wstr2astr(name, _name);