Comments (6)
Makes sense, we already have an exemption for Android and we can add the same for AIX.
from pyo3.
Can you describe what you're doing and what the problem is here in some more detail?
from pyo3.
i tried to built a wheel of rpds-py with maturin for testing purposes, but the linker crashes with unresolved symbols.
root@nimvie: /tmp/rpds_py-0.18.0 # maturin build
📦 Including license file "/tmp/rpds_py-0.18.0/LICENSE"
🔗 Found pyo3 bindings
🐍 Found CPython 3.9 at /usr/bin/python3
📡 Using build options features from pyproject.toml
Compiling target-lexicon v0.12.9
Compiling autocfg v1.1.0
Compiling once_cell v1.18.0
Compiling proc-macro2 v1.0.66
Compiling libc v0.2.147
Compiling unicode-ident v1.0.11
Compiling parking_lot_core v0.9.8
Compiling cfg-if v1.0.0
Compiling heck v0.4.1
Compiling smallvec v1.11.0
Compiling scopeguard v1.1.0
Compiling triomphe v0.1.9
Compiling static_assertions v1.1.0
Compiling indoc v2.0.4
Compiling unindent v0.2.3
Compiling archery v1.1.0
Compiling rpds v1.1.0
Compiling lock_api v0.4.10
Compiling memoffset v0.9.0
Compiling pyo3-build-config v0.20.2
Compiling quote v1.0.31
Compiling parking_lot v0.12.1
Compiling syn v2.0.32
Compiling pyo3-ffi v0.20.2
Compiling pyo3 v0.20.2
Compiling pyo3-macros-backend v0.20.2
Compiling pyo3-macros v0.20.2
Compiling rpds-py v0.18.0 (/tmp/rpds_py-0.18.0)
error: linking with `ld` failed: exit status: 8
|
= note: LC_ALL="C" PATH="/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/bin:/usr/local/rustsdk/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java8_64/jre/bin:/opt/freeware/bin:/opt/freeware/sbin:.:/usr/lib/instl:/usr/local/ibm:/opt/csm/bin:/opt/IBM/dscli:/root/bin:/aix_lundb/etc::/srv/www/cargo_cache/bin" VSLANG="1033" "ld" "-bE:/tmp/rustcB4dmml/list.exp" "-b64" "-bpT:0x100000000" "-bpD:0x110000000" "-bcdtors:all:0:s" "/tmp/rustcB4dmml/symbols.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.10artsdnsz4hnrop.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.10fej8ynf0dw0t5e.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.10uaf7zijdocey4k.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.11mj1u8azlxphmh2.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.13m16ldvlkx2eyk1.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.14i18zh8vg0k4yre.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.17zrc2q4bhe4vipx.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.184xx9gij49w91so.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.187okrvifbmmxax2.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.18zivnd4lyfo25h.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1a8x3f9lm0w4b7j7.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1g6mq3idqrvspbyd.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1ggvrcy1bpnycnoi.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1hcpoucjop2r4goj.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1i52kmjtz1avuglg.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1ivloxnva5gu6e0.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1iwtjww1d240slde.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1jxzzaackols61lk.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1mfxf41xs6eawy88.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1mnx94ua63erz35z.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1rd4gp96weudbgod.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1vva818veey8chno.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1vyiwyg7j4mxidz0.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1x40bxc5dfxk4wly.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1xk8avuruyutgbai.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1yn201ib0jce6rjn.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.1zl8iugn58py7r51.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.21w7str8irk4vxdc.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2574uhjc9nl863ma.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.25j8yxjyxo5us6i0.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.26iuasny4z4t7q7l.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.27qj11qet1p0f9lc.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2bd6weog1mqkx240.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2d06g0daew5j4ziy.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2fpsax81nmedp6ny.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2grkc2wu2wmc342p.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2h1v38s18nyhin6c.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2ij5e4o3d9kvxo4h.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2l1bit8yfytsqypi.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2lxvpyb3obz27j9p.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2mq4csa5w4ur2odl.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2os5n4w147siq1e3.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2ouylct9hmg5j8wf.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2q6fg70tv1so5wsy.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2rx4g4y0kazkjnhl.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2s9usbn7l2tn107s.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2tahkqiuu3px2gf9.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2tszgfsiv6zymocy.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2ufd8iyu7hnl4bd.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2w7vxj57wze0j9f0.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2wy28tbg07ajq4ad.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2x62r40cbkzk8cgb.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2y2j60zeyncvjoy5.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.2yzyo5958p40r2n0.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.320fbw88qur6l119.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3343waius2b8cenw.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.339mqx8sxlsjc42i.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.34vu3ig7h7ap2rxt.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.356lf7v96z59wvda.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.35td9k389bkuvbhw.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.36jxao52ofztwbr3.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.36rzbp3xk8gauxhi.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.371sil09bbw4dmgr.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.37j5r3uzczvmu90m.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.37mwdypzcsriczee.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.37uftd6qytj5hzor.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.38jgyfjhs6uvr6ii.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3asdfxdpacuppvmj.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3b7kpslgmni15rwb.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3iiqze6hfktb4nrx.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3jg68j7hr42vloo7.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3k4w2jtqoy06wfs0.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3nmo449x6mzqx54g.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3p120xlba15m9i7k.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3q5ymhcuz8zhomig.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3rtcjcjdaxjgmbx6.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3trzddwbupgljsgd.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3u0jg1lwwcihln77.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3u9j1dfwo0z36fd7.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3xi6bxo8n3thziqi.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3zhx4ew377hkd5lj.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.3zi77hvant99hpyl.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.40jlj5il59gpqkjq.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.41qkdz9pf056k9ge.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4820pqvrnvsznb1q.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4dnatrrl7w5xz4qq.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4e2eh0lo87818x86.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4gcebp2ikh4uojlf.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4i0l8rokcvb3h0qb.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4ljipq75qe6vrpaj.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4m8mdduo28eaf6z3.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4p5v4hc8avk0kl22.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4pe9k8nqrgnqv8um.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4rn99fm6e8d9a6k2.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4tyb39h0jn9jbezf.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4y911zex880cfzf4.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4zowzwl2gznkc626.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.4zvjyb56eq9atlpp.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.544ujd3zswvfqw24.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.54fxc9tuyhw7zm5b.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.57k0hmmb5cdihn9a.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.5a2z36r2655j2q4y.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.5bsbhj13c47rlp7b.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.5duadtpvo40petjm.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.5fk55xy96rxk67aj.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.6d8qvk9w3wwowv1.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.6pfhgrxmt776v48.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.8ejpo18axilsqqm.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.arau6ex9y8d5cap.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.d10jko9ooezejdj.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.egcgcnffrvnaz67.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.fbad61cgpmspdw4.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.fbk38jwzu0rjn97.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.httm8m00cb8zjfp.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.kubn0kfz93ckr6i.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.nf8nuxw4ijc10m9.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.puhnc5jdidspghw.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.q5m6psv7nt7fdbh.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.t2x65rs6ulibdgy.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.tundb8bq8t8zd3w.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.ubcyru3fa7sxhv6.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.wzcq14lt0loyraa.rcgu.o" "/tmp/rpds_py-0.18.0/target/debug/deps/rpds.33dz6cj8hugpwx7l.rcgu.o" "-L" "/tmp/rpds_py-0.18.0/target/debug/deps" "-L" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib" "-bstatic" "/tmp/rpds_py-0.18.0/target/debug/deps/librpds-7e28e82b49f4d014.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libarchery-f8ca9bdf0a3f385e.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libtriomphe-32b80b5dbc87b295.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libpyo3-6b720b23b6c332e8.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libmemoffset-2875d14dbe83923c.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libparking_lot-658d4578d632b790.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libparking_lot_core-77ddea496e8fa917.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libcfg_if-b90bc16ab991b6d0.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libsmallvec-6338a9be35da252d.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/liblock_api-b70b0b554923a13b.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libscopeguard-c80dd66237f3a908.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libpyo3_ffi-1974c81a34171a95.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/liblibc-7a12b83b60965906.rlib" "/tmp/rpds_py-0.18.0/target/debug/deps/libunindent-bc5e9f2bd06e281f.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libstd-fb622041e58c42ed.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libpanic_unwind-8ca73df972b17c09.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libobject-d40c943868788cc1.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libmemchr-7ae6bb5dd78cbcf7.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libaddr2line-f19012dd7920f968.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libgimli-9a54fdb4773fe5d5.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/librustc_demangle-febfcff4ed80d48d.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libstd_detect-415fe66cab7dbf57.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libhashbrown-d651c6b0c8f11efa.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/librustc_std_workspace_alloc-f9e082c267a65863.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libminiz_oxide-87157a26102d6d4e.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libadler-73bedb928b43f2fb.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libunwind-1c3cb0c5e2a94cd0.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libcfg_if-1ebaf4606b9e83a7.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/liblibc-aa4c7d84ef226caa.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/liballoc-3067606266921285.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/librustc_std_workspace_core-f96731a1c387017c.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libcore-0b10263a5906cea1.rlib" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib/libcompiler_builtins-fa924631c096f2ac.rlib" "-bdynamic" "-lthread" "-lpthread" "-liconv" "-lunwind" "-lc" "-lm" "-lrt" "-lpthread" "-lthread" "-lpthread" "-liconv" "-L" "/usr/local/rustsdk/opt/IBM/sdk_rust/0.0.6/lib/rustlib/powerpc64-ibm-aix/lib" "-o" "/tmp/rpds_py-0.18.0/target/debug/deps/librpds.a" "-bgc" "-bM:SRE" "-bnoentry" "-bexpfull" "-bbigtoc"
= note: ld: 0711-317 ERROR: Undefined symbol: .PyErr_Print
ld: 0711-317 ERROR: Undefined symbol: ._Py_Dealloc
ld: 0711-317 ERROR: Undefined symbol: PyExc_RuntimeError
ld: 0711-317 ERROR: Undefined symbol: .PyUnicode_FromStringAndSize
ld: 0711-317 ERROR: Undefined symbol: PyExc_TypeError
ld: 0711-317 ERROR: Undefined symbol: .PyUnicode_InternInPlace
ld: 0711-317 ERROR: Undefined symbol: .PyObject_GetAttr
ld: 0711-317 ERROR: Undefined symbol: .PyErr_Fetch
ld: 0711-317 ERROR: Undefined symbol: PyExc_BaseException
ld: 0711-317 ERROR: Undefined symbol: .PyErr_NewExceptionWithDoc
ld: 0711-317 ERROR: Undefined symbol: .Py_IsInitialized
ld: 0711-317 ERROR: Undefined symbol: .PyGILState_Ensure
ld: 0711-317 ERROR: Undefined symbol: .Py_InitializeEx
ld: 0711-317 ERROR: Undefined symbol: .PyEval_SaveThread
ld: 0711-317 ERROR: Undefined symbol: .PyErr_SetString
ld: 0711-317 ERROR: Undefined symbol: .PyErr_SetObject
ld: 0711-317 ERROR: Undefined symbol: .PyErr_NormalizeException
ld: 0711-317 ERROR: Undefined symbol: .PyObject_Repr
ld: 0711-317 ERROR: Undefined symbol: .PyUnicode_AsUTF8AndSize
ld: 0711-317 ERROR: Undefined symbol: .PyUnicode_AsEncodedString
ld: 0711-317 ERROR: Undefined symbol: .PyBytes_AsString
ld: 0711-317 ERROR: Undefined symbol: .PyBytes_Size
ld: 0711-317 ERROR: Undefined symbol: .PyGILState_Release
ld: 0711-317 ERROR: Undefined symbol: .PyObject_Str
ld: 0711-317 ERROR: Undefined symbol: .PyErr_Restore
ld: 0711-317 ERROR: Undefined symbol: .PyErr_PrintEx
ld: 0711-317 ERROR: Undefined symbol: .PyTuple_New
ld: 0711-317 ERROR: Undefined symbol: .PyList_New
ld: 0711-317 ERROR: Undefined symbol: PyLong_Type
ld: 0711-317 ERROR: Undefined symbol: PyBool_Type
ld: 0711-317 ERROR: Undefined symbol: .PyErr_WriteUnraisable
ld: 0711-317 ERROR: Undefined symbol: .PyException_GetCause
ld: 0711-317 ERROR: Undefined symbol: .PyException_GetTraceback
ld: 0711-317 ERROR: Undefined symbol: _Py_NoneStruct
ld: 0711-317 ERROR: Undefined symbol: .PyException_SetTraceback
ld: 0711-317 ERROR: Undefined symbol: .PyException_SetCause
ld: 0711-317 ERROR: Undefined symbol: .PyImport_Import
ld: 0711-317 ERROR: Undefined symbol: .PyObject_IsInstance
ld: 0711-317 ERROR: Undefined symbol: .PyMapping_Items
ld: 0711-317 ERROR: Undefined symbol: .PyObject_GetIter
ld: 0711-317 ERROR: Undefined symbol: .PyIter_Next
ld: 0711-317 ERROR: Undefined symbol: .PyObject_Hash
ld: 0711-317 ERROR: Undefined symbol: PyExc_ValueError
ld: 0711-317 ERROR: Undefined symbol: .PyObject_Call
ld: 0711-317 ERROR: Undefined symbol: _Py_TrueStruct
ld: 0711-317 ERROR: Undefined symbol: PyBaseObject_Type
ld: 0711-317 ERROR: Undefined symbol: PyType_GenericAlloc
ld: 0711-317 ERROR: Undefined symbol: .PyType_IsSubtype
ld: 0711-317 ERROR: Undefined symbol: PyExc_KeyError
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Next
ld: 0711-317 ERROR: Undefined symbol: PyExc_StopIteration
ld: 0711-317 ERROR: Undefined symbol: .PyObject_GC_Track
ld: 0711-317 ERROR: Undefined symbol: .PyObject_GC_UnTrack
ld: 0711-317 ERROR: Undefined symbol: .PyObject_Free
ld: 0711-317 ERROR: Undefined symbol: .PyMem_Malloc
ld: 0711-317 ERROR: Undefined symbol: PyObject_GenericGetDict
ld: 0711-317 ERROR: Undefined symbol: PyObject_GenericSetDict
ld: 0711-317 ERROR: Undefined symbol: .PyLong_FromSsize_t
ld: 0711-317 ERROR: Undefined symbol: .PyObject_GetItem
ld: 0711-317 ERROR: Undefined symbol: .PyObject_SetItem
ld: 0711-317 ERROR: Undefined symbol: .PyObject_DelItem
ld: 0711-317 ERROR: Undefined symbol: .PyType_FromSpec
ld: 0711-317 ERROR: Undefined symbol: .PyObject_SetAttrString
ld: 0711-317 ERROR: Undefined symbol: PyExc_OverflowError
ld: 0711-317 ERROR: Undefined symbol: .PyObject_VectorcallMethod
ld: 0711-317 ERROR: Undefined symbol: _Py_NotImplementedStruct
ld: 0711-317 ERROR: Undefined symbol: .PyObject_Size
ld: 0711-317 ERROR: Undefined symbol: .PySequence_Contains
ld: 0711-317 ERROR: Undefined symbol: _Py_FalseStruct
ld: 0711-317 ERROR: Undefined symbol: .PyObject_RichCompare
ld: 0711-317 ERROR: Undefined symbol: .PyObject_IsTrue
ld: 0711-317 ERROR: Undefined symbol: .PyLong_FromLong
ld: 0711-317 ERROR: Undefined symbol: .PyDict_New
ld: 0711-317 ERROR: Undefined symbol: .PyDict_SetItem
ld: 0711-317 ERROR: Undefined symbol: PyExc_IndexError
ld: 0711-317 ERROR: Undefined symbol: .PyTuple_GetSlice
ld: 0711-317 ERROR: Undefined symbol: .PyTuple_GetItem
ld: 0711-317 ERROR: Undefined symbol: .PyNumber_Index
ld: 0711-317 ERROR: Undefined symbol: .PyLong_AsLong
ld: 0711-317 ERROR: Undefined symbol: PyExc_AttributeError
ld: 0711-317 ERROR: Undefined symbol: .PyErr_GivenExceptionMatches
ld: 0711-317 ERROR: Undefined symbol: .PyObject_SetAttr
ld: 0711-317 ERROR: Undefined symbol: .PyList_Append
ld: 0711-317 ERROR: Undefined symbol: .PyInterpreterState_Get
ld: 0711-317 ERROR: Undefined symbol: .PyInterpreterState_GetID
ld: 0711-317 ERROR: Undefined symbol: .PyModule_Create2
ld: 0711-317 ERROR: Undefined symbol: PyExc_ImportError
ld: 0711-317 ERROR: Undefined symbol: PyExc_NotADirectoryError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ReferenceError
ld: 0711-317 ERROR: Undefined symbol: PyExc_Warning
ld: 0711-317 ERROR: Undefined symbol: PyExc_SyntaxError
ld: 0711-317 ERROR: Undefined symbol: PyExc_NameError
ld: 0711-317 ERROR: Undefined symbol: PyExc_PermissionError
ld: 0711-317 ERROR: Undefined symbol: PyExc_BlockingIOError
ld: 0711-317 ERROR: Undefined symbol: PyExc_LookupError
ld: 0711-317 ERROR: Undefined symbol: PyExc_SystemError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ModuleNotFoundError
ld: 0711-317 ERROR: Undefined symbol: PyExc_InterruptedError
ld: 0711-317 ERROR: Undefined symbol: PyExc_PendingDeprecationWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_ConnectionRefusedError
ld: 0711-317 ERROR: Undefined symbol: PyExc_UnboundLocalError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ImportWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_DeprecationWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_BytesWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_FutureWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_SystemExit
ld: 0711-317 ERROR: Undefined symbol: PyExc_SyntaxWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_BufferError
ld: 0711-317 ERROR: Undefined symbol: PyExc_RuntimeWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_TimeoutError
ld: 0711-317 ERROR: Undefined symbol: PyExc_UnicodeWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_FileExistsError
ld: 0711-317 ERROR: Undefined symbol: PyExc_EnvironmentError
ld: 0711-317 ERROR: Undefined symbol: PyExc_FloatingPointError
ld: 0711-317 ERROR: Undefined symbol: PyExc_FileNotFoundError
ld: 0711-317 ERROR: Undefined symbol: PyExc_MemoryError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ChildProcessError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ConnectionResetError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ResourceWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_ConnectionError
ld: 0711-317 ERROR: Undefined symbol: PyExc_IsADirectoryError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ZeroDivisionError
ld: 0711-317 ERROR: Undefined symbol: PyExc_UserWarning
ld: 0711-317 ERROR: Undefined symbol: PyExc_StopAsyncIteration
ld: 0711-317 ERROR: Undefined symbol: PyExc_BrokenPipeError
ld: 0711-317 ERROR: Undefined symbol: PyExc_UnicodeError
ld: 0711-317 ERROR: Undefined symbol: PyExc_GeneratorExit
ld: 0711-317 ERROR: Undefined symbol: PyExc_OSError
ld: 0711-317 ERROR: Undefined symbol: PyExc_NotImplementedError
ld: 0711-317 ERROR: Undefined symbol: PyExc_EOFError
ld: 0711-317 ERROR: Undefined symbol: PyExc_AssertionError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ProcessLookupError
ld: 0711-317 ERROR: Undefined symbol: PyExc_KeyboardInterrupt
ld: 0711-317 ERROR: Undefined symbol: PyExc_UnicodeDecodeError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ConnectionAbortedError
ld: 0711-317 ERROR: Undefined symbol: PyExc_UnicodeEncodeError
ld: 0711-317 ERROR: Undefined symbol: PyExc_ArithmeticError
ld: 0711-317 ERROR: Undefined symbol: PyExc_RecursionError
ld: 0711-317 ERROR: Undefined symbol: PyExc_Exception
ld: 0711-317 ERROR: Undefined symbol: PyExc_IOError
ld: 0711-317 ERROR: Undefined symbol: PyExc_UnicodeTranslateError
ld: 0711-317 ERROR: Undefined symbol: .PyUnicodeDecodeError_Create
ld: 0711-317 ERROR: Undefined symbol: .PyObject_CallNoArgs
ld: 0711-317 ERROR: Undefined symbol: .PyTraceBack_Print
ld: 0711-317 ERROR: Undefined symbol: .PySequence_Size
ld: 0711-317 ERROR: Undefined symbol: _Py_EllipsisObject
ld: 0711-317 ERROR: Undefined symbol: PySlice_Type
ld: 0711-317 ERROR: Undefined symbol: PyFloat_Type
ld: 0711-317 ERROR: Undefined symbol: .PySequence_Check
ld: 0711-317 ERROR: Undefined symbol: .PySequence_GetItem
ld: 0711-317 ERROR: Undefined symbol: ._PyLong_FromByteArray
ld: 0711-317 ERROR: Undefined symbol: PyByteArray_Type
ld: 0711-317 ERROR: Undefined symbol: .PyByteArray_AsString
ld: 0711-317 ERROR: Undefined symbol: .PyByteArray_Size
ld: 0711-317 ERROR: Undefined symbol: .PyBytes_FromStringAndSize
ld: 0711-317 ERROR: Undefined symbol: ._PyLong_AsByteArray
ld: 0711-317 ERROR: Undefined symbol: .PyLong_FromUnsignedLongLong
ld: 0711-317 ERROR: Undefined symbol: .PyLong_AsUnsignedLongLong
ld: 0711-317 ERROR: Undefined symbol: .Py_CompileStringExFlags
ld: 0711-317 ERROR: Undefined symbol: PyCapsule_Type
ld: 0711-317 ERROR: Undefined symbol: PyDictValues_Type
ld: 0711-317 ERROR: Undefined symbol: PyDictKeys_Type
ld: 0711-317 ERROR: Undefined symbol: .PyCapsule_Import
ld: 0711-317 ERROR: Undefined symbol: PyDictItems_Type
ld: 0711-317 ERROR: Undefined symbol: PySet_Type
ld: 0711-317 ERROR: Undefined symbol: .PyEval_RestoreThread
ld: 0711-317 ERROR: Undefined symbol: .PyFloat_FromDouble
ld: 0711-317 ERROR: Undefined symbol: .PyDict_MergeFromSeq2
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Copy
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Clear
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Contains
ld: 0711-317 ERROR: Undefined symbol: .PyDict_GetItemWithError
ld: 0711-317 ERROR: Undefined symbol: .PyDict_DelItem
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Keys
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Values
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Items
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Update
ld: 0711-317 ERROR: Undefined symbol: .PyDict_Merge
ld: 0711-317 ERROR: Undefined symbol: .PySet_New
ld: 0711-317 ERROR: Undefined symbol: .PySet_Size
ld: 0711-317 ERROR: Undefined symbol: .PySet_Contains
ld: 0711-317 ERROR: Undefined symbol: .PySet_Discard
ld: 0711-317 ERROR: Undefined symbol: .PySet_Add
ld: 0711-317 ERROR: Undefined symbol: .PySet_Pop
ld: 0711-317 ERROR: Undefined symbol: PyComplex_Type
ld: 0711-317 ERROR: Undefined symbol: PyModule_Type
ld: 0711-317 ERROR: Undefined symbol: ._PyUnicode_Ready
ld: 0711-317 ERROR: Undefined symbol: .PyErr_Display
ld: 0711-317 ERROR: Undefined symbol: .PyErr_WarnEx
ld: 0711-317 ERROR: Undefined symbol: .PyErr_WarnExplicit
ld: 0711-317 ERROR: Undefined symbol: .PyCapsule_SetContext
ld: 0711-317 ERROR: Undefined symbol: .PyCapsule_GetContext
ld: 0711-317 ERROR: Undefined symbol: .PyCapsule_GetName
ld: 0711-317 ERROR: Undefined symbol: .PyErr_Clear
ld: 0711-317 ERROR: Undefined symbol: .PyCapsule_GetPointer
ld: 0711-317 ERROR: Undefined symbol: .PyCapsule_IsValid
ld: 0711-317 ERROR: Undefined symbol: .PyComplex_FromDoubles
ld: 0711-317 ERROR: Undefined symbol: .PyComplex_RealAsDouble
ld: 0711-317 ERROR: Undefined symbol: .PyComplex_ImagAsDouble
ld: 0711-317 ERROR: Undefined symbol: ._Py_c_abs
ld: 0711-317 ERROR: Undefined symbol: _Py_c_pow
ld: 0711-317 ERROR: Undefined symbol: ._Py_c_pow
ld: 0711-317 ERROR: Undefined symbol: .PyComplex_FromCComplex
ld: 0711-317 ERROR: Undefined symbol: _Py_c_sum
ld: 0711-317 ERROR: Undefined symbol: ._Py_c_sum
ld: 0711-317 ERROR: Undefined symbol: _Py_c_diff
ld: 0711-317 ERROR: Undefined symbol: ._Py_c_diff
ld: 0711-317 ERROR: Undefined symbol: _Py_c_prod
ld: 0711-317 ERROR: Undefined symbol: ._Py_c_prod
ld: 0711-317 ERROR: Undefined symbol: _Py_c_quot
ld: 0711-317 ERROR: Undefined symbol: ._Py_c_quot
ld: 0711-317 ERROR: Undefined symbol: ._Py_c_neg
ld: 0711-317 ERROR: Undefined symbol: .PySequence_SetItem
ld: 0711-317 ERROR: Undefined symbol: .PySequence_Count
ld: 0711-317 ERROR: Undefined symbol: .PySequence_Index
ld: 0711-317 ERROR: Undefined symbol: .PySequence_List
ld: 0711-317 ERROR: Undefined symbol: .PySequence_GetSlice
ld: 0711-317 ERROR: Undefined symbol: PyFrozenSet_Type
ld: 0711-317 ERROR: Undefined symbol: PyTraceBack_Type
ld: 0711-317 ERROR: Undefined symbol: PySuper_Type
ld: 0711-317 ERROR: Undefined symbol: .PyList_GetItem
ld: 0711-317 ERROR: Undefined symbol: .PyList_GetSlice
ld: 0711-317 ERROR: Undefined symbol: .PyList_SetItem
ld: 0711-317 ERROR: Undefined symbol: .PyList_Insert
ld: 0711-317 ERROR: Undefined symbol: .PyList_Sort
ld: 0711-317 ERROR: Undefined symbol: .PyList_Reverse
ld: 0711-317 ERROR: Undefined symbol: .PyList_AsTuple
ld: 0711-317 ERROR: Undefined symbol: PyCFunction_Type
ld: 0711-317 ERROR: Undefined symbol: .PyCMethod_New
ld: 0711-317 ERROR: Undefined symbol: PyFunction_Type
ld: 0711-317 ERROR: Undefined symbol: PyFrame_Type
ld: 0711-317 ERROR: Undefined symbol: .PyUnicode_DecodeFSDefaultAndSize
ld: 0711-317 ERROR: Undefined symbol: .PyUnicode_EncodeFSDefault
ld: 0711-317 ERROR: Undefined symbol: .PyOS_FSPath
ld: 0711-317 ERROR: Undefined symbol: .PyImport_AddModule
ld: 0711-317 ERROR: Undefined symbol: .PyModule_GetDict
ld: 0711-317 ERROR: Undefined symbol: .PyEval_GetBuiltins
ld: 0711-317 ERROR: Undefined symbol: .PyEval_EvalCode
ld: 0711-317 ERROR: Undefined symbol: .Py_GetVersion
ld: 0711-317 ERROR: Undefined symbol: .PyErr_CheckSignals
ld: 0711-317 ERROR: Undefined symbol: .PyByteArray_FromStringAndSize
ld: 0711-317 ERROR: Undefined symbol: .PyByteArray_FromObject
ld: 0711-317 ERROR: Undefined symbol: .PyByteArray_Resize
ld: 0711-317 ERROR: Undefined symbol: .PyFloat_AsDouble
ld: 0711-317 ERROR: Undefined symbol: .PyObject_LengthHint
ld: 0711-317 ERROR: Undefined symbol: .PyIter_Check
ld: 0711-317 ERROR: Undefined symbol: .PyModule_New
ld: 0711-317 ERROR: Undefined symbol: .PyImport_ExecCodeModuleEx
ld: 0711-317 ERROR: Undefined symbol: .PyModule_GetName
ld: 0711-317 ERROR: Undefined symbol: .PyModule_GetFilenameObject
ld: 0711-317 ERROR: Undefined symbol: .PyUnicode_FromEncodedObject
ld: 0711-317 ERROR: Undefined symbol: PyCode_Type
ld: 0711-317 ERROR: Undefined symbol: .PyCallable_Check
ld: 0711-317 ERROR: Undefined symbol: .PyObject_Dir
ld: 0711-317 ERROR: Undefined symbol: .PyFrozenSet_New
ld: 0711-317 ERROR: Undefined symbol: .PySlice_New
ld: 0711-317 ERROR: Undefined symbol: .PyObject_IsSubclass
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
error: could not compile `rpds-py` (lib) due to 1 previous error
💥 maturin failed
Caused by: Failed to build a native library through cargo
Caused by: Cargo build finished with "exit status: 101": `env -u CARGO PYO3_ENVIRONMENT_SIGNATURE="cpython-3.9-64bit" PYO3_PYTHON="/usr/bin/python3" PYTHON_SYS_EXECUTABLE="/usr/bin/python3" "cargo" "rustc" "--features" "pyo3/extension-module" "--message-format" "json-render-diagnostics" "--manifest-path" "/tmp/rpds_py-0.18.0/Cargo.toml" "--lib"`
after adding the python libs manually to $RUSTFLAGS the linker runs ok. i might be completely wrong, but i expexted this to happen automatically.
root@nimvie: /tmp/rpds_py-0.18.0 # python3.9-config --ldflags
-L/usr/opt/python3/lib -lpython3.9 -lintl -ldl -lm -lm
root@nimvie: /tmp/rpds_py-0.18.0 # echo $RUSTFLAGS
-C link-arg=-bbigtoc
root@nimvie: /tmp/rpds_py-0.18.0 # export RUSTFLAGS="-C link-arg=-bbigtoc -L/usr/opt/python3/lib -lpython3.9 -lintl -ldl -lm -lm"
root@nimvie: /tmp/rpds_py-0.18.0 # echo $RUSTFLAGS
-C link-arg=-bbigtoc -L/usr/opt/python3/lib -lpython3.9 -lintl -ldl -lm -lm
from pyo3.
Python extension modules should not link libpython
on Unix: python/cpython#12946
I don't know anything about AIX, does its linker require all symbols resolved when building a shared library?
from pyo3.
Python extension modules should not link
libpython
on Unix: python/cpython#12946I don't know anything about AIX, does its linker require all symbols resolved when building a shared library?
hmm...definitly not...run time linking is no problem...but this is a good point...will check back with the ibm guys
from pyo3.
In AIX, Python extension modules still links to libpython. The reason behind this is python is not built using runtime linking (-brtl) in AIX as it introduces slowness in symbol resolution. So the extension modules requires libpython linking, otherwise the modules will not be useable when python is embedded.
from pyo3.
Related Issues (20)
- pyo3-0.20.2 fails to build on systems without AtomicI64 HOT 2
- `Drop` trait never called on exit HOT 3
- `PyObject_CallOneArg()` usage triggers assert HOT 1
- non-local `impl` definition, they should be avoided as they go against expectation HOT 2
- segmentation fault second run of rust function in python pyo3 0.21.2 HOT 24
- Default values in enum struct-variants HOT 4
- Set custom path with `run_code` HOT 1
- `#[pyo3(from_py_with)]` is ignored in dunder methods (`__eq__`, etc.) HOT 1
- Incorrect configuration exclusions for Windows Py>3.10??
- IPython ignores Control + C after loading Rust module built with PyO3/Maturin HOT 3
- cargo test --workspace fails with linker errors HOT 2
- Tuple from iterable
- Add trait for cloning while the GIL is held HOT 2
- pyo3 fails to build on systems without AtomicI64 HOT 7
- libpython not loaded under Anaconda HOT 2
- Replace &'a Ident with Cow in FnArg Enum
- Optional argument is detected in `linux`/`windows` but not in `macos` HOT 3
- Segmentation fault and misaligned pointer dereference with Rayon HOT 1
- intern macro name is not very descriptive HOT 1
- Missing `__init_subclass__` and `__set_name__` magic methods in the user guide HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pyo3.