Skip to content

Commit

Permalink
Merge branch 'master' into TT-4354-feature/plugins-support-multiple-t…
Browse files Browse the repository at this point in the history
…yk-versions
  • Loading branch information
sredxny committed Feb 11, 2022
2 parents 0fd50e6 + cc9fcd4 commit 5ae87c8
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 25 deletions.
26 changes: 9 additions & 17 deletions dlpython/binding.go
Expand Up @@ -97,14 +97,10 @@ void Py_IncRef(PyObject* object) { return Py_IncRef_ptr(object); };
typedef void (*Py_DecRef_f)(PyObject*);
Py_DecRef_f Py_DecRef_ptr;
void Py_DecRef(PyObject* object) { return Py_DecRef_ptr(object); };
typedef int (*PyTuple_ClearFreeList_f)();
PyTuple_ClearFreeList_f PyTuple_ClearFreeList_ptr;
int PyTuple_ClearFreeList() { return PyTuple_ClearFreeList_ptr(); };
*/
import "C"
import (
"errors"
"fmt"
"unsafe"
)

Expand Down Expand Up @@ -199,14 +195,14 @@ func Py_DecRef(object *C.PyObject) {
C.Py_DecRef(object)
}

func PyTuple_ClearFreeList() C.int {
return C.PyTuple_ClearFreeList()
}

func mapCalls() error {
C.python_lib = C.dlopen(libPath, C.RTLD_NOW|C.RTLD_GLOBAL)

C.dlerror()
dlErr := C.dlerror()
if dlErr != nil {
dlErrStr := C.GoString(dlErr)
return fmt.Errorf("dlerror: %s", dlErrStr)
}

s_PyObject_GetAttr := C.CString("PyObject_GetAttr")
defer C.free(unsafe.Pointer(s_PyObject_GetAttr))
Expand Down Expand Up @@ -296,14 +292,10 @@ func mapCalls() error {
defer C.free(unsafe.Pointer(s_Py_DecRef))
C.Py_DecRef_ptr = C.Py_DecRef_f(C.dlsym(C.python_lib, s_Py_DecRef))

s_PyTuple_ClearFreeList := C.CString("PyTuple_ClearFreeList")
defer C.free(unsafe.Pointer(s_PyTuple_ClearFreeList))
C.PyTuple_ClearFreeList_ptr = C.PyTuple_ClearFreeList_f(C.dlsym(C.python_lib, s_PyTuple_ClearFreeList))

dlErr := C.dlerror()
dlErr = C.dlerror()
if dlErr != nil {
// TODO: create a proper Go error from dlerror output
return errors.New("dl error")
dlErrStr := C.GoString(dlErr)
return fmt.Errorf("dlerror: %s", dlErrStr)
}
return nil
}
Expand Down
7 changes: 1 addition & 6 deletions dlpython/helpers.go
Expand Up @@ -171,9 +171,4 @@ func PyIncRef(o unsafe.Pointer) {

func PyDecRef(o unsafe.Pointer) {
Py_DecRef(ToPyObject(o))
}

func PyTupleClearFreeList() int {
sz := PyTuple_ClearFreeList()
return int(sz)
}
}
12 changes: 11 additions & 1 deletion dlpython/main.go
Expand Up @@ -128,8 +128,18 @@ func FindPythonConfig(customVersion string) (selectedVersion string, err error)
return selectedVersion, nil
}

func execPythonConfig() ([]byte, error) {
// Try to include the "embed" flag first
// introduced in Python 3.8: https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build
out, err := exec.Command(pythonConfigPath, "--ldflags", "--embed").Output()
if err != nil {
return exec.Command(pythonConfigPath, "--ldflags").Output()
}
return out, err
}

func getLibraryPathFromCfg() error {
out, err := exec.Command(pythonConfigPath, "--ldflags").Output()
out, err := execPythonConfig()
if err != nil {
logger.Errorf("Error while executing command for python config path: %s", pythonConfigPath)
return err
Expand Down
3 changes: 2 additions & 1 deletion gateway/coprocess_python.go
Expand Up @@ -188,7 +188,8 @@ func PythonInit(pythonVersion string) error {
if err != nil {
log.WithFields(logrus.Fields{
"prefix": "coprocess",
}).Fatal("Couldn't initialize Python")
}).Fatalf("Couldn't initialize Python - %s", err.Error())
return err
}
log.WithFields(logrus.Fields{
"prefix": "coprocess",
Expand Down

0 comments on commit 5ae87c8

Please sign in to comment.