Skip to content
Snippets Groups Projects
Commit b62dcce6 authored by alexey.stratulat's avatar alexey.stratulat
Browse files

[*] Added the ability to build and install python-cellframe using scikit-build.

parent cb7df56c
No related branches found
No related tags found
1 merge request!1Features 2466
......@@ -18,21 +18,51 @@ file(GLOB PYTHON_CELLFRAME_HEADERS include/*.h)
set(Python_ADDITIONAL_VERSIONS 3.7)
find_package (PythonLibs REQUIRED)
#find_package(PkgConfig)
#pkg_check_modules(PC_JSON-C REQUIRED json-c)
include_directories(${PYTHON_INCLUDE_DIR} include/)
add_library(${PROJECT_NAME} SHARED ${PYTHON_CELLFRAME_SRCS} ${PYTHON_CELLFRAME_HEADERS})
if (SKBUILD)
message(STATUS "The project is built using scikit-build")
find_package(PythonExtensions REQUIRED)
add_library(${PROJECT_NAME} MODULE ${PYTHON_CELLFRAME_SRCS} ${PYTHON_CELLFRAME_HEADERS})
python_extension_module(${PROJECT_NAME})
python_extension_module(${PROJECT_NAME} LINKED_MODULES_VAR dap_python_module)
python_extension_module(${PROJECT_NAME} LINKED_MODULES_VAR dap_crypto_python_module)
python_extension_module(${PROJECT_NAME} LINKED_MODULES_VAR DapServerCore)
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION CellFrame)
install(FILES src/__init__.py DESTINATION CellFrame)
# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdap-python/libdap_python_module.so DESTINATION CellFrame/lib)
# install(TARGETS dap_python_module LIBRARY DESTINATION CellFrame)
# install(TARGETS dap_crypto_python_module LIBRARY DESTINATION CellFrame)
# install(TARGETS DapServerCore LIBRARY DESTINATION CellFrame)
else()
add_library(${PROJECT_NAME} SHARED ${PYTHON_CELLFRAME_SRCS} ${PYTHON_CELLFRAME_HEADERS})
endif()
target_link_libraries(${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME} ${PYTHON_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${PYTHON_LIBRARIES})
#target_compile_options(
# dap_core PRIVATE
# "-fpic"
#)
#target_compile_options(
# dap_python_module PRIVATE
# "-fpic"
#)
#target_compile_options(
# dap_crypto_python_module PRIVATE
# "-fpic"
#)
#target_compile_options(
# DapServerCore PRIVATE
# "-fpic"
#)
target_link_libraries(${PROJECT_NAME} dap_python_module
dap_crypto_python_module
DapServerCore
......@@ -54,4 +84,3 @@ target_include_directories(${PROJECT_NAME} INTERFACE include/)
# enable_testing()
#add_subdirectory(test)
#endif()
......@@ -48,15 +48,14 @@ static PyMethodDef CellFramePythonMethods[] = {
static struct PyModuleDef CellFramePythonModule = {
PyModuleDef_HEAD_INIT,
"libCellFrame", /* name of module */
"CellFrame", /* name of module */
NULL, /* module documentation, may be NULL */
-1, /* size of per-interpreter state of the module,
or -1 if the module keeps state in global variables. */
CellFramePythonMethods
};
PyMODINIT_FUNC PyInit_libCellFrame(void);
PyMODINIT_FUNC PyInit_CellFrame(void);
#ifdef __cplusplus
}
......
setup.py 0 → 100644
import sys
from skbuild import setup
# Require pytest-runner only when running tests
#pytest_runner = (['pytest-runner>=2.0,<3dev']
# if any(arg in sys.argv for arg in ('pytest', 'test'))
# else [])
#setup_requires = pytest_runner
setup(
name="CellFrame",
version="0.5.0",
description="SDK CellFrame network",
author='DEMLABS Inc. (2017-2019)',
license="GNU GPL",
packages=['CellFrame'],
# tests_require=['pytest'],
# setup_requires=setup_requires
)
from .CellFrame import *
#include "python-cellframe.h"
PyMODINIT_FUNC PyInit_libCellFrame(void){
if (PyType_Ready(&DapObject_DapObjectType) < 0 || PyType_Ready(&dapCrypto_dapCryptoType) < 0 ||
PyType_Ready(&ServerCore_ServerCoreType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0 ||
PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0 ||
PyType_Ready(&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType) < 0 ||
PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0)
return NULL;
PyObject *module = PyModule_Create(&CellFramePythonModule);
CellFrame_error = PyErr_NewException("libCellFrame.error", NULL, NULL);
PyModule_AddObject(module, "error", CellFrame_error);
PyModule_AddObject(module, "DEBUG", PyLong_FromLong(L_DEBUG));
PyModule_AddObject(module, "INFO", PyLong_FromLong(L_INFO));
PyModule_AddObject(module, "NOTICE", PyLong_FromLong(L_NOTICE));
PyModule_AddObject(module, "MESSAGE", PyLong_FromLong(L_MSG));
PyModule_AddObject(module, "DAP", PyLong_FromLong(L_DAP));
PyModule_AddObject(module, "WARNING", PyLong_FromLong(L_WARNING));
PyModule_AddObject(module, "ATT", PyLong_FromLong(L_ATT));
PyModule_AddObject(module, "ERROR", PyLong_FromLong(L_ERROR));
PyModule_AddObject(module, "CRITICAL", PyLong_FromLong(L_CRITICAL));
PyModule_AddObject(module, "Crypto", (PyObject*)&dapCrypto_dapCryptoType);
PyModule_AddObject(module, "ServerCore", (PyObject*)&ServerCore_ServerCoreType);
PyModule_AddObject(module, "Events", (PyObject*)&dapEvents_dapEventsType);
PyModule_AddObject(module, "EventsSocket", (PyObject*)&dapEventsSocket_dapEventsSocketType);
PyModule_AddObject(module, "CryptoKeyType", (PyObject*)&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType);
PyModule_AddObject(module, "CryptoDataType", (PyObject*)&CryptoDataTypeObjecy_CryptoDataTypeObjecyType);
//PyModule_AddObject(module, "Dap", (PyObject*)&DapObject_DapObjectType);
return module;
}
static PyObject *python_cellframe_init(PyObject *self, PyObject *args){
const char *app_name;
const char *file_name_log;
......@@ -136,6 +99,43 @@ static PyObject *python_cellframe_init(PyObject *self, PyObject *args){
return PyLong_FromLong(0);
}
PyMODINIT_FUNC PyInit_CellFrame(void){
if (PyType_Ready(&DapObject_DapObjectType) < 0 || PyType_Ready(&dapCrypto_dapCryptoType) < 0 ||
PyType_Ready(&ServerCore_ServerCoreType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0 ||
PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0 ||
PyType_Ready(&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType) < 0 ||
PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0)
return NULL;
PyObject *module = PyModule_Create(&CellFramePythonModule);
CellFrame_error = PyErr_NewException("libCellFrame.error", NULL, NULL);
PyModule_AddObject(module, "error", CellFrame_error);
PyModule_AddObject(module, "DEBUG", PyLong_FromLong(L_DEBUG));
PyModule_AddObject(module, "INFO", PyLong_FromLong(L_INFO));
PyModule_AddObject(module, "NOTICE", PyLong_FromLong(L_NOTICE));
PyModule_AddObject(module, "MESSAGE", PyLong_FromLong(L_MSG));
PyModule_AddObject(module, "DAP", PyLong_FromLong(L_DAP));
PyModule_AddObject(module, "WARNING", PyLong_FromLong(L_WARNING));
PyModule_AddObject(module, "ATT", PyLong_FromLong(L_ATT));
PyModule_AddObject(module, "ERROR", PyLong_FromLong(L_ERROR));
PyModule_AddObject(module, "CRITICAL", PyLong_FromLong(L_CRITICAL));
PyModule_AddObject(module, "Crypto", (PyObject*)&dapCrypto_dapCryptoType);
PyModule_AddObject(module, "ServerCore", (PyObject*)&ServerCore_ServerCoreType);
PyModule_AddObject(module, "Events", (PyObject*)&dapEvents_dapEventsType);
PyModule_AddObject(module, "EventsSocket", (PyObject*)&dapEventsSocket_dapEventsSocketType);
PyModule_AddObject(module, "CryptoKeyType", (PyObject*)&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType);
PyModule_AddObject(module, "CryptoDataType", (PyObject*)&CryptoDataTypeObjecy_CryptoDataTypeObjecyType);
//PyModule_AddObject(module, "Dap", (PyObject*)&DapObject_DapObjectType);
return module;
}
static PyObject *python_cellframe_deinit(PyObject *self, PyObject *args){
dap_config_close(g_config);
dap_config_deinit();
......@@ -153,7 +153,7 @@ int main(int argc, char **argv) {
}
/* Add a built-in module, before Py_Initialize */
PyImport_AppendInittab("libCellFrame", PyInit_libCellFrame);
PyImport_AppendInittab("CellFrame", PyInit_CellFrame);
/* Pass argv[0] to the Python interpreter */
Py_SetProgramName(program);
......@@ -164,7 +164,7 @@ int main(int argc, char **argv) {
/* Optionally import the module; alternatively,
import can be deferred until the embedded script
imports it. */
PyImport_ImportModule("libCellFrame");
PyImport_ImportModule("CellFrame");
PyMem_RawFree(program);
return 0;
......
from libCellFrame import *
from CellFrame import *
import pickle
import os
import sys
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment